Шукаєте інструменти / модулі / доповнення Python для ГІС?


31

З ArcGIS 10 Python став фактичною мовою сценаріїв для ESRI. Хоча ведуче програмне забезпечення з відкритим кодом, як QGIS, GeoServer, PostGIS, все підтримує Python. Таким чином, стало важливо добре знати / вивчати Python для розробників ГІС, а також користувачів.

Чи може хто-небудь скласти список таких інструментів / модулів / надбудов у Python, які мають вирішальне значення у ГІС?


10
Я думаю, що це питання занадто широке і його слід обмежувати пакетами python, які можна використовувати в будь-якому ГІС із підтримкою Python.
андарм

4
Чи справді ArcPy справжній модуль Python?
Mapperz

2
@Mapperz - це насправді пакет сайту. Попередник arcgisscripting- модуль. Дивіться help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
blah238

3
@underdark - Я думаю, що приємне широке запитання може бути корисним. У цьому випадку він дає центральний ресурс, який пошукові системи знайдуть, коли хтось почне гуглінг, для якого набір інструментів python використовувати.
ГІС-Джонатан

2
+1 для занадто широкого розміру Найбільш релевантні відповіді на це запитання знайдуться в кінці [tag:python] + [tag:my-software]пошуку та будуть відсортовані за допомогою вкладок голосів та фактів . Відповіді тут ніколи не можуть сподіватися на це.
matt wilkie

Відповіді:


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 має намір стати географічною веб-базою світового класу. Його мета полягає в тому, щоб якомога простіше створити веб-додатки GIS та використати потужність просторово включених даних.
  • PyProj
  • SpatialPython : Чудово задокументоване сховище github.

Я хотів би додати активно розроблену бібліотеку geopandas.org для тих, хто дивиться на цю старішу відповідь!
clifgray

11

Щоб відповісти на моє власне запитання, я щойно знайшов цей модуль Пітонів. Хоча я ще цього не використовував, це виглядає захоплююче.

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

І

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


10

перейти до теми: Науково-технічний: GIS і у вас є всі модулі Python для ГІС (для роботи з форм-файлами, растрами, KML, GML, геокодування GPX тощо)

Найважливіші вже були цитовані, але я рекомендую також Fiona " Fiona забезпечує мінімальний, нехитрий інтерфейс Python до найбільш надійної бібліотеки доступу геодезистичної спільноти з відкритим кодом та легко інтегрується з іншими пакетами GIS Python, такими як pyproj, Rtree та Shapely. "

а також для створення мереж з shapefiles або Esri Feature Class з модулем Networkx Геометрична мережа Geoprocessing : " Наскільки я можу сказати, ESRI не випустив жодних інструментів для геообробки для їх Геометричної мережі " або альтернатив pgRouting або Python: як трансформувати shapefile (або клас особливості 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 - читач формату python та автор у чистому python

доступний за посиланням: http://code.google.com/p/pyshp/

Редагувати:

Хтось показав мені цей модуль сьогодні, може бути якийсь цікавий для людей. Зразок GIS-векторних та растрових даних для використання python:

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


5

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

У ArcGIS 10.0 це безцінне для написання звітів у форматі PDF з класів функцій та таблиць, хоча частина цієї функціональності може бути не настільки необхідною в 10.1, коли доступ до PDF-звітів від автора звітів ArcGIS стає доступним для ArcPy.


Ви використовуєте pdfgenпакет або platypus? Мені потрібно генерувати звіти з jpegs та текстом, нічого надто фантазійного.
Чад Купер

Я використовую качка - і мав лише вимоги до виведення таблиць з текстом у їх клітинках (без зображень).
PolyGeo


2

Є ще більше:

GRASS - Ви можете зателефонувати GRASS за допомогою Python.

FMEObjects - Якщо у вас є ліцензія FME, у них також є модуль python, який дозволяє вам зателефонувати до їхніх крутих трансформаторів.


Дійсно? Наскільки мені відомо, FMEObjects не має прив'язки Python для виклику трансформаторів. Я дуже хочу, щоб це було. Якщо ви знаєте, що це так і знаєте, як отримати доступ до цього API, будь ласка, повідомте нас про це. Це полегшило б моє життя набагато простішим в даний час.
celticflute

1

У розповсюдженні пакетів Enthought є безліч перерахованих вище пакетів, що входять у згуртовану платформу. Вони навіть переконалися, що його можна легко налаштувати для роботи з підказки 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-пакети *

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

* zzArcGIS.pth - місце в папці \ Python27 \ epd32 \ lib \ site-пакети *

# 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

1

Не характерний для GIS, але для налагодження python - IPDBце дивовижно. https://pypi.python.org/pypi/ipdb

Щоб скористатися ним, просто помістіть у своєму коді наступні рядки:

import ipdb
ipdb.set_trace()

Тоді у вашій оболонці Python ви можете потрапити в будь-який фрагмент коду та взаємодіяти зі всіма змінними у цьому поточному стані.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.