Szukasz narzędzi / modułów / dodatków Python dla GIS?

31

Dzięki ArcGIS 10 Python stał się de facto językiem skryptowym dla ESRI. Podczas gdy wiodące oprogramowanie typu open source, takie jak QGIS, GeoServer, PostGIS, wszystkie obsługuje Python. Dlatego stało się ważne, aby znać / uczyć się języka Python dla programistów GIS oraz użytkowników.

Czy ktoś może zrobić listę takich narzędzi / modułów / dodatków w Pythonie, które są kluczowe w GIS?

therayray
źródło
10
Myślę, że to pytanie jest zbyt ogólne i powinno być ograniczone do pakietów Pythona, które mogą być używane w dowolnym systemie GIS z obsługą języka Python.
podmrok
4
Czy ArcPy to prawdziwy moduł Pythona?
Mapperz
2
@Mapperz to właściwie pakiet strony. Poprzednik arcgisscriptingjest modułem. Zobacz help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
blah238
3
@underdark - Myślę, że przydatne może być miłe ogólne pytanie. W tym przypadku daje centralny zasób, który wyszukiwarki znajdą, gdy ktoś zacznie googlować, dla którego zestawu narzędzi Python ma użyć.
GIS-Jonathan
2
+1 za zbyt szeroki. Najtrafniejsze odpowiedzi na pytanie będzie można znaleźć na końcu [tag:python] + [tag:my-software]poszukiwania i sortowane za pomocą głosów i faq zakładkach. Odpowiedzi tutaj nigdy nie mogą liczyć na to, że będą do tego pasować.
matt wilkie

Odpowiedzi:

38
  • NumPy : NumPy to podstawowy pakiet do naukowego przetwarzania danych w języku Python. Zawiera między innymi:

    • potężny obiekt tablicy N-wymiarowej
    • wyrafinowane funkcje (nadawcze)
    • narzędzia do integracji C / C ++ i kodu Fortran
    • przydatne funkcje algebry liniowej, transformaty Fouriera i liczb losowych

    Oprócz oczywistych zastosowań naukowych NumPy może być również wykorzystywany jako wydajny wielowymiarowy pojemnik danych ogólnych. Można zdefiniować arbitralne typy danych. Pozwala to NumPy na płynną i szybką integrację z szeroką gamą baz danych.

  • SciPy : SciPy (wymawiane „Sigh Pie”) to oprogramowanie typu open source dla matematyki, nauki i inżynierii. Jest to także nazwa bardzo popularnej konferencji poświęconej programowaniu naukowemu w języku Python. Biblioteka SciPy zależy od NumPy, który zapewnia wygodną i szybką manipulację macierzą N-wymiarową. Biblioteka SciPy została zbudowana do pracy z tablicami NumPy i zapewnia wiele przyjaznych dla użytkownika i wydajnych procedur numerycznych, takich jak procedury integracji numerycznej i optymalizacji. Razem działają na wszystkich popularnych systemach operacyjnych, są szybkie w instalacji i są bezpłatne. NumPy i SciPy są łatwe w użyciu, ale wystarczająco mocne, aby mogły na nich polegać niektórzy z wiodących naukowców i inżynierów na świecie. Jeśli chcesz manipulować liczbami na komputerze i wyświetlać lub publikować wyniki, wypróbuj SciPy!

  • Shapely : Shapely to licencjonowany przez BSD pakiet Pythona do manipulacji i analizy płaskich obiektów geometrycznych. Opiera się on na szeroko rozpowszechnionych bibliotekach GEOS (silnik PostGIS) i JTS (z których port jest GEOS). Ta zależność C jest wymieniana za zdolność wykonywania z niesamowitą prędkością. Shapely nie zajmuje się formatami danych ani układami współrzędnych, ale może być łatwo zintegrowany z takimi pakietami.

  • Powiązania GDAL Python : Ten pakiet i rozszerzenia Pythona są szeregiem narzędzi do programowania i manipulowania biblioteką GDAL Geospatial Data Abstraction Library.

  • GeoDjango: GeoDjango zamierza być światowej klasy geograficznym środowiskiem internetowym. Jego celem jest jak najłatwiejsze tworzenie aplikacji internetowych GIS i wykorzystanie mocy danych przestrzennie włączonych.
  • PyProj
  • SpatialPython : Ładnie udokumentowane repozytorium github.
blah238
źródło
Dodałbym aktywnie rozwijaną bibliotekę geopandas.org dla każdego, kto szuka tej starszej odpowiedzi!
clifgray,
11

Aby odpowiedzieć na moje pytanie, właśnie znalazłem ten moduł Python. Chociaż jeszcze go nie użyłem, wygląda ekscytująco.

NetworkX to pakiet oprogramowania w języku Python do tworzenia, manipulowania i badania struktury, dynamiki i funkcji złożonych sieci.

I

rtree - indeks przestrzenny dla Python GIS

thelastray
źródło
10

przejdź do tematu :: Nauka / Inżynieria :: GIS i masz wszystkie moduły Pythona dla GIS (do pracy z plikami kształtów, rastrami, geokodowaniem KML, GML, GPX itp.)

Najważniejsze zostały już cytowane, ale polecam również FionęFiona zapewnia minimalny, nieskomplikowany interfejs Python do najbardziej zaufanej biblioteki dostępu do geodanych GIS społeczności open source i łatwo integruje się z innymi pakietami GIS Python, takimi jak pyproj, Rtree i Shapely ”.

oraz do tworzenia sieci z plikami kształtów lub Esri Feature Class z modułem Networkx Geoinformacja sieciowa geoprzetwarzanie : „ O ile mogę stwierdzić, ESRI nie wydało żadnych narzędzi geoprzetwarzania dla swojej sieci geometrycznej ” lub Alternatywy dla pgRouting lub Python: jak przekształcić plik kształtu (lub klasa obiektów ESRI) w sieci topologicznej (wykres) (w języku francuskim)

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

Używam Shapely, Fiona, GDAL / OGR, Pyshp, Networkx i innych w QGIS i GRASS GIS bez problemu (oraz z matplotlib lub desartartes do interaktywnego tworzenia wykresów). Często mają algorytmy łatwiejsze w leczeniu.

Niektóre z tych modułów mogą być również używane w ArcPy z problemami, ponieważ ArcPy używa wersji 1.3 Numpy, przestarzałej (teraz wersja 1.6.1 ...) i nie można jej zaktualizować bez zerwania modułu ArcPy.

7 obrotów
źródło
7

Dodawanie do listy:

PySAL - „wieloplatformowa biblioteka open source funkcji analizy przestrzennej”

dostępny na: http://code.google.com/p/pysal/

pyshp - czytnik plików shapefile w Pythonie i program do pisania w czystym pythonie

dostępny na: http://code.google.com/p/pyshp/

Edytować:

Ktoś pokazał mi ten moduł dzisiaj, może zainteresować ludzi. Przykładowe dane wektorowe i rastrowe GIS do użycia w Pythonie:

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

Zero Qualms
źródło
5

Używam i polecam ReportLab Toolkit , bibliotekę Open Source PDF do programowego tworzenia dokumentów w formacie PDF. Jak reklamowano na jego stronach, jest to solidne, elastyczne, sprawdzone i sprawdzone w branży rozwiązanie. To darmowe oprogramowanie typu open source napisane w języku Python, ale jego składnia nie jest najłatwiejsza, z jaką kiedykolwiek miałem do czynienia :-)

W ArcGIS 10.0 jest on nieoceniony przy pisaniu raportów w formacie PDF z klas elementów i tabel, chociaż niektóre z tych funkcji mogą nie być tak konieczne o 10.1, kiedy dostęp do raportów PDF z programu do zapisywania raportów ArcGIS stanie się dostępny dla ArcPy.

PolyGeo
źródło
Czy korzystasz z pdfgenpakietu czy platypus? Muszę generować raporty z plikami JPEG i tekstem, nic nadzwyczajnego.
Chad Cooper
Używam dziobaka - i miałem tylko wymagania, aby wypisywać tabele z tekstem w komórkach (bez obrazów).
PolyGeo
4

W świecie Django:

  • vectorformats (dla sppiting naszą GeoJSON jak geodjango nie obsługuje tego natywnie);
  • Geraldo (do raportowania używa ReportLab);
George Silva
źródło
2

Jest jeszcze więcej:

GRASS - możesz wywoływać GRASS za pomocą Pythona.

FMEObjects - Jeśli masz licencję FME, mają one również moduł python, który pozwala na wywołanie niektórych z ich fajnych transformatorów.

GIS-Jonathan
źródło
Naprawdę? Według mojej wiedzy FMEObjects nie ma powiązań Pythona do wywoływania transformatorów. Naprawdę chciałbym. Jeśli wiesz, że tak jest i wiesz, jak uzyskać dostęp do tego interfejsu API, daj nam znać. W tej chwili moje życie byłoby o wiele łatwiejsze.
celticflute
1

W pakiecie Enthought Package Distribution znajduje się wiele pakietów wymienionych powyżej, tworzących spójną platformę. Zapewnili nawet, że można go łatwo skonfigurować do pracy z poziomu python ArcGIS i że arcpymożna go używać z poziomu python python. Używamy tego w naszych biurach. Z naszej wewnętrznej wiki:

Najlepszym sposobem połączenia ArcGIS i EPD jest zainstalowanie obu i połączenie ich przy użyciu plików .pth, aby sys.path w Pythonie zawiera moduły drugiego systemu. Plik „zzEPD.pth” umożliwia ArcGIS Pythonowi dostęp do modułów EPD, a „zzArcGIS.pth” umożliwia dostęp do Arcpy Pythona EPD. (Prefiks „zz” ma na celu zapewnienie, że „obce” pakiety są ostatnie w sys.path, aby uniknąć potencjalnych konfliktów dla modułów istniejących w obu instalacjach Pythona.) Jeśli napotkasz konflikty ArcGIS, po prostu zmień nazwę pliku na. txt („zzEPD.pth.txt”) i ponownie uruchom ArcGIS, a ArcGIS nie będzie już „widzieć” modułów EPD (nie będzie ich w sys.path).

* zzEPD.pth - miejsce w folderze \ Python27 \ Desktop10.1 \ lib \ site-packages *

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

* zzArcGIS.pth - miejsce w folderze \ 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
źródło
1

Niespecyficzne dla GIS, ale do debugowania Pythona IPDBjest niesamowite. https://pypi.python.org/pypi/ipdb

Aby go użyć, po prostu umieść następujące wiersze w kodzie:

import ipdb
ipdb.set_trace()

Następnie w powłoce Pythona możesz upuścić dowolny fragment kodu i wchodzić w interakcje ze wszystkimi zmiennymi w tym bieżącym stanie.

djq
źródło