Кажется, я использую пакет сайта Arcpy от ESRI практически для всей моей геообработки на python. К чести ESRI, это невероятный набор инструментов, которые могут помочь достичь многого. Однако я также хотел бы создать сценарии геообработки вне домена ESRI Arcpy. Например, если я хочу обрезать растр в многоугольник, я бы начал со следующего скрипта из ESRI :
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster = "elevation"
inMaskData = "mask.shp"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData)
# Save the output
outExtractByMask.save("C:/sapyexamples/output/extractmask")
Я не уверен, как бы я выполнил ту же задачу программно без Arcpy. Мои вопросы к серьезным программистам: какую коллекцию инструментов python вы используете для выполнения задач, которые пользователи ESRI будут выполнять с помощью пакета сайта Arcpy? С чего мне начать?
python
geoprocessing
Аарон
источник
источник
Ответы:
GDAL это инструмент для использования. Фактически весь вызов - это одна строка для gdal_rasterize:
если бы вы знали, нет значения данных дем
Для некоторого контроля над питоном:
где ваши переменные могут быть установлены в Python
Для полного питона:
Я просто быстро взглянул на синтаксис C API, поэтому мой синтаксис для python, вероятно, немного не в порядке. См. Gdal_alg.h: http://gdal.org/gdal__alg_8h.html.
источник
На этом сайте вы найдете ряд других похожих вопросов, которые задают тот же самый базовый вопрос и имеют очень хорошие ссылки. Наиболее похожим (и подробным) является:
Другие включают в себя:
источник
Хорошей отправной точкой была бы Библиотека абстракций геопространственных данных . На самом деле он состоит из двух библиотек - GDAL для манипулирования геопространственными растровыми данными и OGR для манипулирования геопространственными векторными данными, но люди обычно просто называют его GDAL.
Существует геообработка с Python с использованием курса ГИС с открытым исходным кодом в Университете штата Юта. Возможно, вы захотите проверить это тоже.
источник
Во многих своих научных исследованиях я работаю с данными LiDAR, выполняя анализ поверхностей для геоморфологии. Я быстро обнаружил, что выполнение большого количества операций с использованием arcpy было очень медленным, особенно на больших наборах данных. В результате я начал использовать:
Я также рекомендовал бы книгу « Количественное моделирование процессов земной поверхности» всем, кто хочет больше узнать об анализе растровых поверхностей. Книга поставляется с отличными примерами кода на C ++, которые гораздо более эффективны, чем инструменты ArcGIS. Эти алгоритмы также могут быть перенесены в Python, не требуя ничего более сложного, чем numpy, хотя они работают намного быстрее в C ++.
источник
Для людей, использующих ESRI, я думаю, что GRASS была бы очень похожей средой с Python-средой GUI и была бы организована в отдельные «наборы инструментов» для различных задач (растровые, векторные, солнечные наборы инструментов и т. Д.). У сценариев есть и другие опции, кроме Python, но я так и использую.
Обязательно посмотрите эту замечательную ссылку, которая актуальна (я считаю): http://grass.osgeo.org/wiki/GRASS_and_Python
РЕДАКТИРОВАТЬ: еще одна ссылка для тех, кто имеет опыт работы в ESRI: http://grass.osgeo.org/wiki/GRASS_migration_hints
Я также поддерживаю движение GDAL. Это бесценно, и я был бы потерян без этого.
источник
Я думаю, что ответы, представленные до сих пор, охватывают в основном весь пакет, который стоит упомянуть (особенно GDAL, OGR, pyshp, NumPy)
Но есть также ГИС и Лаборатория программного обеспечения Python , в которой размещена пара интересных модулей. Они есть:
Лично я недавно начал играть с GDAL / OGR и нашел их очень впечатляющими в отношении скорости и охвата инструментов анализа.
Вот несколько примеров того, как использовать методы (взятые из этого превосходного источника, который является очень хорошей отправной точкой):
Хорошая особенность этих инструментов в том, что вы очень гибки в их реализации. Например, я написал свой собственный класс,
CreateGeometry()
чтобы легко создавать векторные файлы с нуля. Если вам интересно, я также могу опубликовать это здесь, хотя я думаю, что это выходит за рамки вопроса.источник
Я знаю, что ваш вопрос ориентирован на Python, но R обладает множеством методов статистического анализа стоимости, некоторые из которых можно использовать для пространственного анализа.
@Whuber
здесь есть хороший ответ, иллюстрирующий, как обрезать растр в прямоугольнике в две строки.источник
Мое решение, быстрое решение, это использовать GDAL с Python.
Тебе следует
(Из ответа здесь: обрезка растра с векторным слоем с использованием GDAL )
Конечно, вы должны быть в состоянии достичь этого, используя чистый Python, но мне не нужно было это делать. И у меня почти всегда есть GDAL вокруг! Гибкость GDAL является фантастической, особенно в среде Linux. Он обрабатывает огромные растры, его можно связать вместе со скриптами Python или Shell, и есть функции для многих вещей. Смотрите также OGR для векторных инструментов.
источник
Если вы не возражаете против запуска PostGIS, он может выполнить большую часть обработки пространственных данных за вас.
PDF-таблица:
http://www.postgis.us/downloads/postgis20_cheatsheet.pdf
Он интегрируется с Python:
https://publicwiki.deltares.nl/display/OET/Accessing+PostgreSQL+PostGIS+with+Python
Благодаря вспомогательным инструментам, таким как SPIT, в Quantum GIS или pgAdmin вы можете настроить PostGIS. Затем вы можете использовать python для управления операциями PostGIS на ваших пространственных данных.
источник
Я работал над библиотекой геообработки с открытым исходным кодом под названием WhiteboxTools, которую можно использовать вместо ArcPy во многих приложениях. В настоящее время доступно около 300 инструментов для обработки растровых, векторных и LiDAR (LAS) данных, хотя в конечном итоге планируется портировать все 400+ инструментов, доступных в Whitebox GAT . Хотя инструменты разработаны с использованием языка программирования Rust (для повышения эффективности), каждый инструмент можно вызвать из Python, как в следующем примере:
Более подробную информацию можно найти в руководстве пользователя WhiteboxTools . Библиотека является автономной и не имеет никаких других зависимостей. Вам просто нужно скачать небольшой (<5Mb) файл, расположенный здесь . Файл загрузки содержит исполняемый файл WhiteboxTools, сценарий whitebox_tools.py , который предоставляет API-интерфейс Python для библиотеки (импортированный в верхней строке приведенного выше сценария), а также руководство пользователя. Существует также очень простой графический интерфейс tkinter (wb_runner.py) для взаимодействия с библиотекой.
Разрешительная лицензия MIT предназначена для интеграции WhiteboxTools в качестве бэк-энда с другими ГИС с открытым исходным кодом; Александр Бруй разработал плагин QGIS для серверной части WhiteboxTools. Вы также можете смешивать и сочетать инструменты из WhiteboxTools и ArcPy в одном скрипте по мере необходимости. Библиотека все еще несколько экспериментальная, разработанная исследовательской группой по геоморфометрии и гидрогеоматике Университета Гвельфа , и в настоящее время она выпущена до версии 1.0, что следует учитывать при использовании.
источник
Использование Python для обрезки растра в шейп-файл без ArcPy: http://geospatialpython.com/2011/02/clip-raster-using-shapefile.html
источник