Ищите инструменты / модули / надстройки Python для ГИС?

31

С ArcGIS 10 Python стал де-факто скриптовым языком для ESRI. Хотя ведущие программы с открытым исходным кодом, такие как QGIS, GeoServer, PostGIS все поддерживают Python. Таким образом, стало важно знать / изучать Python как для разработчиков ГИС, так и для пользователей.

Кто-нибудь может составить список таких инструментов / модулей / надстроек в Python, которые имеют решающее значение в ГИС?

thelastray
источник
10
Я думаю, что этот вопрос слишком широкий и должен быть ограничен пакетами Python, которые можно использовать в любой ГИС с поддержкой Python.
Подземье
4
Является ли ArcPy настоящим модулем Python?
Mapperz
2
@Mapperz это на самом деле пакет сайта. Предшественник arcgisscripting- это модуль. См. Help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
blah238
3
@underdark - я думаю, что хороший общий вопрос может быть полезным. В этом случае он предоставляет центральный ресурс, который поисковые системы найдут, когда кто-то начнет поиск в Google, какой набор инструментов Python использовать.
ГИС-Джонатан
2
+1 за слишком широкий. Наиболее релевантные ответы на этот вопрос будут найдены в конце [tag:python] + [tag:my-software]поиска и отсортированы по закладкам голосования и часто задаваемых вопросов. Ответы здесь никогда не могут соответствовать этому.
Мэтт Вилки

Ответы:

38
  • NumPy : NumPy является фундаментальным пакетом для научных вычислений с Python. Он содержит среди прочего:

    • мощный N-мерный массив объектов
    • сложные (вещательные) функции
    • инструменты для интеграции кода C / C ++ и Fortran
    • полезная линейная алгебра, преобразование Фурье и возможности случайных чисел

    Помимо очевидного научного использования, NumPy также может использоваться как эффективный многомерный контейнер общих данных. Произвольные типы данных могут быть определены. Это позволяет NumPy легко и быстро интегрироваться с широким спектром баз данных.

  • SciPy : SciPy (произносится «Вздох») - это программное обеспечение с открытым исходным кодом для математики, науки и техники. Это также название очень популярной конференции по научному программированию на Python. Библиотека SciPy зависит от NumPy, что обеспечивает удобную и быструю манипуляцию с N-мерным массивом. Библиотека SciPy создана для работы с массивами NumPy и предоставляет множество удобных и эффективных числовых подпрограмм, таких как подпрограммы для численной интеграции и оптимизации. Вместе они работают на всех популярных операционных системах, быстро устанавливаются и бесплатны. NumPy и SciPy просты в использовании, но достаточно мощны, чтобы зависеть от ведущих мировых ученых и инженеров. Если вам нужно манипулировать числами на компьютере и отображать или публиковать результаты, попробуйте SciPy!

  • Shapely : Shapely - лицензированный BSD пакет Python для манипулирования и анализа плоских геометрических объектов. Он основан на широко распространенных библиотеках GEOS (движок PostGIS) и JTS (из которых переносится GEOS). Эта зависимость от C обменивается на способность выполнять с невероятной скоростью. Shapely не имеет отношения к форматам данных или системам координат, но может быть легко интегрирован с пакетами, которые есть.

  • Привязки GDAL Python : этот пакет и расширения Python представляют собой ряд инструментов для программирования и управления библиотекой абстракций геопространственных данных GDAL .

  • GeoDjango: GeoDjango намеревается стать глобальной веб-средой мирового класса. Его цель - максимально упростить создание веб-приложений ГИС и использовать возможности пространственно разрешенных данных.
  • PyProj
  • SpatialPython : хорошо документированный репозиторий github.
blah238
источник
Я бы добавил активно разработанную библиотеку геопандаса для всех, кто смотрит на этот старый ответ!
Клифгрей
11

Чтобы ответить на мой собственный вопрос, я только что нашел этот модуль Pythons. Хотя я еще не использовал это, это выглядит захватывающим.

NetworkX - это программный пакет на языке Python для создания, управления и изучения структуры, динамики и функций сложных сетей.

А также

rtree - пространственный индекс для Python GIS

thelastray
источник
10

перейти к теме :: Научно-технические разработки :: ГИС и все модули Python для ГИС (для работы с шейп-файлами, растрами, KML, GML, геокодированием GPX и т. д.)

Наиболее важные из них уже упоминались, но я также рекомендую Fiona: « Fiona предоставляет минимальный несложный интерфейс Python для самой надежной библиотеки доступа к геоданным с открытым исходным кодом GIS-сообщества и легко интегрируется с другими пакетами Python GIS, такими как pyproj, Rtree и Shapely ».

и для работы в сети с шейп-файлами или классом объектов Esri с модулем Networkx Геообработка геометрической сети : « Насколько я могу судить, ESRI не выпустила никаких инструментов геообработки для своей геометрической сети » или Альтернативы pgRouting или Python: как преобразовать шейп-файл (или класс объектов ESRI) в топологической сети (граф) (на французском)

import networkx as nx
G = nx.read_shp('pointshapefile.shp')
print(G.nodes())
# result [(1.0, 2.0), (3.0, 2.0), (0.0, 0.0), (3.0, 1.0), (4.0, 4.0), (2.0, 1.0), (2.0, 4.0), (1.0, 3.0), (2.0, 3.0), (1.0, 4.0), (4.0, 3.0), (4.0, 2.0), (3.0, 4.0), (1.0, 1.0)]
print(G.edges())
# result [((1.0, 2.0), (1.0, 1.0)), ((3.0, 2.0), (2.0, 1.0)), ((3.0, 1.0), (2.0, 1.0)), ((4.0, 4.0), (3.0, 4.0)), ((2.0, 1.0), (1.0, 1.0)), ((2.0, 4.0), (2.0, 3.0)), ((1.0, 3.0), (1.0, 2.0)), ((2.0, 3.0), (1.0, 2.0)), ((1.0, 4.0), (1.0, 3.0)), ((4.0, 3.0), (4.0, 2.0)), ((4.0, 2.0), (3.0, 2.0)), ((3.0, 4.0), (2.0, 3.0)), ((1.0, 1.0), (0.0, 0.0))]

# shortest path
print(nx.astar_path(H,(1.0, 4.0),(4.0, 2.0),dist))
# result [(1.0, 4.0), (1.0, 3.0), (1.0, 2.0), (2.0, 3.0), (3.0, 2.0), (4.0, 2.0)]

# and so with all the algorithms of Networkx module
# you can also export the results in shapefile format

Я использую Shapely, Fiona, GDAL / OGR, Pyshp, Networkx и другие в QGIS и GRASS GIS без проблем (и с matplotlib или descartes для интерактивного построения графиков). У них часто есть алгоритмы, которые легче использовать для лечения.

Некоторые из этих модулей также могут использоваться в ArcPy с проблемами, поскольку ArcPy использует устаревшую версию 1.3 Numpy (теперь версия 1.6.1 ...), и вы не можете обновить ее, не сломав модуль ArcPy.

гена
источник
7

Добавление в список:

PySAL - «кроссплатформенная библиотека функций пространственного анализа с открытым исходным кодом»

доступно по адресу : http://code.google.com/p/pysal/

pyshp - программа чтения и записи шейп-файлов на чистом питоне

доступно по адресу : http://code.google.com/p/pyshp/

Редактировать:

Кто-то показал мне этот модуль сегодня, может быть интересен людям. Пример векторных и растровых данных ГИС для использования на питоне:

gisdata - http://pypi.python.org/pypi/gisdata/0.3.3

оборота Zero Qualms
источник
5

Я использую и рекомендую ReportLab Toolkit , библиотеку PDF с открытым исходным кодом для программного создания документов в формате PDF. Как рекламируется на его страницах, это надежное, гибкое, проверенное временем и мощное решение. Это бесплатное программное обеспечение с открытым исходным кодом, написанное на Python, но его синтаксис не самый простой, с которым я когда-либо сталкивался :-)

В ArcGIS 10.0 он неоценим для написания отчетов в формате PDF из классов пространственных объектов и таблиц, хотя некоторые из этих функций могут не понадобиться в версии 10.1, когда доступ к отчетам PDF из средства записи отчетов ArcGIS становится доступным для ArcPy.

оборота PolyGeo
источник
Вы используете pdfgenпакет или platypus? Мне нужно генерировать отчеты с JPEG и текстом, ничего особенного.
Чед Купер
Я использую утконоса - и у меня были только требования к выводу таблиц с текстом в их ячейках (без изображений).
PolyGeo
4

В мире Джанго:

  • векторные форматы (для размещения нашего геойсона, поскольку геоджанго не поддерживает его изначально);
  • Джеральдо (для отчетности использует ReportLab);
Джордж Сильва
источник
2

Есть еще больше:

GRASS - Вы можете вызвать GRASS с помощью Python.

FMEObjects - если у вас есть лицензия FME, у них также есть модуль python, который позволяет вам вызывать некоторые из их классных преобразователей.

ГИС-Jonathan
источник
В самом деле? FMEObjects, насколько мне известно, не имеет привязки Python для вызова преобразователей. Я действительно хотел бы, чтобы это произошло. Если вы знаете, что он работает, и знаете, как получить доступ к этому API, сообщите нам об этом. Это сделало бы мою жизнь намного проще в настоящее время.
celticflute
1

Enthought Package Distribution содержит множество пакетов, перечисленных выше, связанных в единую платформу. Они даже убедились, что его можно легко настроить для работы из Python-приглашения ArcGIS и arcpyиспользовать его из Python-приглашения. Мы используем это в наших офисах. Из нашей внутренней вики:

Лучший способ соединить ArcGIS и EPD - это установить и связать их, используя файлы .pth, чтобы Python sys.path включал в себя модули другой системы. Файл "zzEPD.pth" позволяет ArcGIS Python получать доступ к модулям EPD, а "zzArcGIS.pth" позволяет EPD Python получать доступ к arcpy. (Префикс «zz» используется для того, чтобы гарантировать, что «чужие» пакеты являются последними в sys.path, чтобы избежать потенциальных конфликтов для модулей, которые существуют в обеих установках Python.) Если вы столкнетесь с конфликтами ArcGIS, просто переименуйте файл в. txt ("zzEPD.pth.txt") и перезапустите ArcGIS, и ArcGIS больше не будет "видеть" модули EPD (их не будет в sys.path).

* zzEPD.pth - поместить в папку \ Python27 \ Desktop10.1 \ lib \ site-packages *

# zzEPD.pth 
# Path to Enthought modules
C:\Python27\epd32\lib\site-packages

* zzArcGIS.pth - поместить в папку \ Python27 \ epd32 \ lib \ site-packages *

# zzArcGIS.pth 
# copy of \Python27\Desktop10.1\lib\site-packages\ArcGIS.pth
C:\ArcGIS\Desktop10.1\bin
C:\ArcGIS\Desktop10.1\arcpy
C:\ArcGIS\Desktop10.1\ArcToolbox\Scripts
Roland
источник
1

Не только для ГИС, но и для отладки python, IPDBэто просто удивительно. https://pypi.python.org/pypi/ipdb

Чтобы использовать его, просто поместите следующие строки в свой код:

import ipdb
ipdb.set_trace()

Затем в вашей оболочке Python вы можете перейти в любой фрагмент кода и взаимодействовать со всеми переменными в текущем состоянии.

оборота djq
источник