Я задавался вопросом, можно ли посмотреть содержимое шейп-файла с использованием Python без лицензии ArcMap. Ситуация такова, что вы можете создавать шейп-файлы из множества различных приложений, а не только из программного обеспечения ESRI. Я хотел бы создать скрипт Python, который проверяет пространственную привязку, тип объекта, имена и определения атрибутов, а также содержимое полей в шейп-файле и сравнивает их с набором допустимых значений. Мне бы хотелось, чтобы этот сценарий работал, даже если у организации нет лицензий ESRI. Чтобы сделать что-то вроде этого, вам нужно использовать ArcPy или вы можете копать шейп-файл без использования ArcPy?
40
Ответы:
Я бы порекомендовал ознакомиться с Python GDAL / OGR API для работы как с векторными, так и с растровыми данными. Самый простой способ начать использовать GDAL / OGR - через дистрибутив python, такой как python (x, y) , Anaconda или OSGeo4W .
Более подробная информация об использовании GDAL для ваших конкретных задач:
Кроме того, я бы порекомендовал вам следующее руководство от USU.
Исходя из приведенных выше примеров, следующий скрипт использует инструменты FOSS для выполнения следующих действий:
источник
inFeature = None
. Кулинарная книга GDAL / OGR не является частью или написана основной командой GDAL / OGR.Существует много модулей для чтения шейп-файлов в Python, более старых, чем ArcPy, посмотрите индекс пакетов Python (PyPi): шейп-файлы . Есть также много примеров в GIS SE (например, поиск [Python] Fiona )
Все могут прочитать геометрию, поля и проекции.
Но другие модули, такие как PySAL: библиотека пространственного анализа Python , Cartopy (которая использует pyshp ) или Matplotlib Basemap , помимо прочего, также могут читать шейп-файлы.
Самым простым в использовании является Fiona , но если вы знаете только ArcPy, используйте pyshp , потому что osgeo и Fiona требуют, чтобы была установлена библиотека GDAL C / C ++, для GeoPandas требуется модуль Pandas, а PySAL слишком большой (многие, многие другие процедуры)
Если вы хотите , чтобы прочитать содержание шейпа, вам не нужны сложные вещи, просто использовать гео интерфейс протокол (GeoJSON) также реализован в ArcPy ( ArcPy: AsShape )
С Фионой (как словари Python):
С pyshp (как словари Python)
С osgeo / ogr (как словари Python)
С GeoPandas (в качестве кадра данных Pandas)
* примечание к геопандам. Вы должны использовать более старые версии Fiona и GDAL с ним, иначе он не будет установлен. GDAL: 1.11.2 Фиона: 1.6.0 Геопанды: 0.1.0.dev-
В Интернете есть много учебных пособий и даже книг ( разработка геопространственного анализа Python , изучение геопространственного анализа с использованием Python и геообработка с использованием Python , в печати)
В более общем плане, если вы хотите использовать Python без ArcPy, посмотрите на Простое тематическое отображение шейп-файла с использованием Python?
источник
The kinds of data in GIS are roughly divided into rasters representing continuous scalar fields (land surface temperature or elevation, for example) and vectors representing discrete entities like roads and administrative boundaries. Fiona is concerned exclusively with the latter
Помимо ArcPy, есть геопространственные библиотеки Python, которые дадут вам эти возможности. Вот два примера:
Библиотека шейп-файлов Python (pyshp)
GeoPandas
Если вы интересуетесь другими библиотеками, этот пост о важных библиотеках Python Geospatial будет хорошим местом для поиска.
источник