Suchen Sie nach Python-Tools / Modulen / Add-Ins für GIS?

31

Mit ArcGIS 10 wurde Python zur De-facto-Skriptsprache für ESRI. PostGIS ist führend in Open-Source-Software wie QGIS, GeoServer und unterstützt Python. Daher wurde es wichtig, Python sowohl für GIS-Entwickler als auch für Benutzer zu kennen / zu lernen.

Kann jemand eine Liste solcher Tools / Module / Add-Ins in Python erstellen, die für GIS von entscheidender Bedeutung sind?

letzten Strahls
quelle
10
Ich denke, diese Frage ist zu weit gefasst und sollte auf Python-Pakete beschränkt sein, die in jedem GIS mit Python-Unterstützung verwendet werden können.
Underdunkel
4
Ist ArcPy ein echtes Python-Modul?
Mapperz
2
@Mapperz es ist eigentlich ein Site-Paket. Der Vorgänger arcgisscriptingist ein Modul. Siehe help.arcgis.com/de/arcgisdesktop/10.0/help/index.html#//…
blah238
3
@underdark - Ich denke, eine schöne, breite Frage kann nützlich sein. In diesem Fall gibt es eine zentrale Ressource, die Suchmaschinen finden, wenn jemand anfängt zu googeln, welches Python-Toolset verwendet werden soll.
GIS-Jonathan
2
+1 für zu breit. Die relevantesten Antworten auf die Frage werden am Ende einer [tag:python] + [tag:my-software]Suche gefunden und über die Registerkarten " Stimmen" und " FAQ" sortiert . Die Antworten hier können niemals darauf hoffen, dass sie mit ihnen übereinstimmen.
Matt Wilkie

Antworten:

38
  • NumPy : NumPy ist das grundlegende Paket für das wissenschaftliche Rechnen mit Python. Es enthält unter anderem:

    • ein leistungsfähiges N-dimensionales Array-Objekt
    • anspruchsvolle (Rundfunk-) Funktionen
    • Tools zur Integration von C / C ++ und Fortran-Code
    • nützliche Funktionen für lineare Algebra, Fourier-Transformation und Zufallszahlen

    Neben seiner offensichtlichen wissenschaftlichen Verwendung kann NumPy auch als effizienter multidimensionaler Container für generische Daten verwendet werden. Beliebige Datentypen können definiert werden. Dadurch kann NumPy nahtlos und schnell in eine Vielzahl von Datenbanken integriert werden.

  • SciPy : SciPy (ausgesprochen "Sigh Pie") ist eine Open-Source-Software für Mathematik, Naturwissenschaften und Ingenieurwissenschaften. Es ist auch der Name einer sehr beliebten Konferenz über wissenschaftliches Programmieren mit Python. Die SciPy-Bibliothek hängt von NumPy abDies ermöglicht eine bequeme und schnelle Manipulation von N-dimensionalen Arrays. Die SciPy-Bibliothek ist für die Verwendung mit NumPy-Arrays konzipiert und bietet viele benutzerfreundliche und effiziente numerische Routinen, z. B. Routinen für die numerische Integration und Optimierung. Zusammen laufen sie auf allen gängigen Betriebssystemen, sind schnell zu installieren und kostenlos. NumPy und SciPy sind einfach zu bedienen, aber leistungsstark genug, um von einigen der weltweit führenden Wissenschaftlern und Ingenieuren abhängig zu sein. Wenn Sie Zahlen auf einem Computer manipulieren und die Ergebnisse anzeigen oder veröffentlichen müssen, probieren Sie SciPy aus!

  • Shapely : Shapely ist ein BSD-lizenziertes Python-Paket zur Manipulation und Analyse planarer geometrischer Objekte. Es basiert auf den weit verbreiteten Bibliotheken GEOS (die Engine von PostGIS) und JTS (aus denen GEOS portiert wird). Diese C-Abhängigkeit wird gegen die Fähigkeit eingetauscht, mit rasender Geschwindigkeit ausgeführt zu werden. Shapely befasst sich nicht mit Datenformaten oder Koordinatensystemen, sondern kann problemlos in Pakete integriert werden, die

  • GDAL-Python-Bindungen : Dieses Python-Paket und seine Erweiterungen sind eine Reihe von Tools zum Programmieren und Bearbeiten der GDAL Geospatial Data Abstraction Library.

  • GeoDjango: GeoDjango soll ein erstklassiges geografisches Webframework sein. Ziel ist es, die Erstellung von GIS-Webanwendungen so einfach wie möglich zu gestalten und die Möglichkeiten räumlich aktivierter Daten zu nutzen.
  • PyProj
  • SpatialPython : Schön dokumentiertes Github-Repository.
blah238
quelle
Ich würde die aktiv entwickelte geopandas.org- Bibliothek für jeden hinzufügen, der diese ältere Antwort betrachtet!
Clifgray
11

Um meine eigene Frage zu beantworten, habe ich gerade dieses Pythons-Modul gefunden. Obwohl ich es noch nicht benutzt habe, sieht es aufregend aus.

NetworkX ist ein Python-Softwarepaket zur Erstellung, Bearbeitung und Untersuchung der Struktur, Dynamik und Funktionen komplexer Netzwerke.

Und

rtree - räumlicher Index für Python GIS

der letzte Strahl
quelle
10

gehe zu Thema :: Wissenschaft / Technik :: GIS und du hast alle Python-Module für GIS (für die Arbeit mit Shapefiles, Rastern, KML, GML, GPX, Geocoding, etc.)

Die wichtigsten wurden bereits erwähnt, aber ich empfehle auch Fiona " Fiona bietet eine minimale, unkomplizierte Python-Oberfläche für die vertrauenswürdigste Geodaten-Zugriffsbibliothek der Open-Source-GIS-Community und lässt sich problemlos in andere Python-GIS-Pakete wie pyproj, Rtree und Shapely integrieren. "

und für die Vernetzung mit Shape - Dateien oder Esri - Feature - Class mit NetworkX Modul geometrischem Netzwerk Geoprocessing : „ Soweit ich das beurteilen kann, ESRI hat noch keine Geoverarbeitungswerkzeuge für ihr geometrisches Netzwerk freigegeben oder“ Alternativen zu pgRouting oder Python: wie eine Shape - Datei zu transformieren (oder Feature Class ESRI) in einem topologischen Netzwerk (Grafik) (auf Französisch)

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

Ich verwende Shapely, Fiona, GDAL / OGR, Pyshp, Networkx und andere in QGIS und GRASS GIS ohne Probleme (und mit matplotlib oder descartes für interaktive Grafiken). Sie haben oft Algorithmen, die für die Behandlung einfacher zu verwenden sind.

Einige dieser Module können auch in ArcPy mit Problemen verwendet werden, da ArcPy Version 1.3 von Numpy verwendet, die veraltet ist (jetzt Version 1.6.1 ...), und Sie können es nicht aktualisieren, ohne das ArcPy-Modul zu beschädigen.

7 Umdrehungen
quelle
7

Hinzufügen zur Liste:

PySAL - "plattformübergreifende Open Source-Bibliothek für räumliche Analysefunktionen"

verfügbar unter: http://code.google.com/p/pysal/

pyshp - ein Python-Shapefile-Reader und -Schreiber in reinem Python

verfügbar unter: http://code.google.com/p/pyshp/

Bearbeiten:

Jemand hat mir dieses Modul heute gezeigt, kann für Leute von Interesse sein. Beispiel-GIS-Vektor- und -Raster-Daten für die Python-Verwendung:

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

Zero Qualms
quelle
5

Ich verwende und empfehle ReportLab Toolkit , die Open Source PDF-Bibliothek zum programmgesteuerten Erstellen von Dokumenten im PDF-Format. Wie auf seinen Seiten angekündigt, handelt es sich um eine robuste, flexible, bewährte und branchenstarke Lösung. Es ist eine kostenlose Open-Source-Software, die in Python geschrieben wurde, aber die Syntax ist nicht die einfachste, mit der ich mich jemals befasst habe :-)

In ArcGIS 10.0 ist es für das Schreiben von Berichten im PDF-Format aus Feature-Classes und Tabellen von unschätzbarem Wert, obwohl einige dieser Funktionen in 10.1 möglicherweise nicht erforderlich sind, wenn ArcPy Zugriff auf PDF-Berichte mit ArcGIS Report Writer erhält.

PolyGeo
quelle
Verwenden Sie das pdfgenPaket oder platypus? Ich muss Berichte mit JPEGs und Text erstellen, nichts Besonderes.
Chad Cooper
Ich benutze Schnabeltier - und musste nur Tabellen mit Text in den Zellen ausgeben (keine Bilder).
PolyGeo
4

In der Django-Welt:

  • Vektorformate (für die Unterteilung unseres Geojson als Geodjango wird es nicht nativ unterstützt);
  • Geraldo (verwendet ReportLab für die Berichterstellung);
George Silva
quelle
2

Es gibt noch mehr:

GRASS - Sie können GRASS mit Python aufrufen.

FMEObjects - Wenn Sie eine FME-Lizenz haben, haben sie auch ein Python-Modul, mit dem Sie einige ihrer coolen Transformatoren aufrufen können.

GIS-Jonathan
quelle
"Ja wirklich?" Meines Wissens nach verfügt FMEObjects nicht über Python-Bindungen zum Aufrufen von Transformern. Ich wünschte wirklich, es wäre so. Wenn Sie dies wissen und wissen, wie Sie auf diese API zugreifen können, teilen Sie uns dies bitte mit. Es würde mein Leben zur Zeit sehr viel einfacher machen.
Celticflute
1

In der Enthought-Paketverteilung sind viele der oben aufgeführten Pakete zu einer zusammenhängenden Plattform zusammengefasst. Sie haben sogar sichergestellt, dass es problemlos über die Python-Eingabeaufforderung von ArcGIS konfiguriert und über die Python-Eingabeaufforderung arcpyverwendet werden kann. Wir nutzen dies in unseren Büros. Aus unserem internen Wiki:

Die beste Möglichkeit, ArcGIS und EPD zu verbinden, besteht darin, beide zu installieren und mithilfe von .pth-Dateien zu verknüpfen, sodass der Python-sys.path die Module des anderen Systems enthält. Die Datei "zzEPD.pth" ermöglicht ArcGIS Python den Zugriff auf EPD-Module, und "zzArcGIS.pth" ermöglicht EPD Python den Zugriff auf arcpy. (Mit dem Präfix "zz" wird sichergestellt, dass die "fremden" Pakete zuletzt im sys.path enthalten sind, um mögliche Konflikte bei Modulen zu vermeiden, die in beiden Python-Installationen vorhanden sind.) Wenn Sie auf ArcGIS-Konflikte stoßen, benennen Sie die Datei einfach in um. txt ("zzEPD.pth.txt") und Neustart von ArcGIS. ArcGIS "sieht" EPD-Module nicht mehr (sie befinden sich nicht im sys.path).

* zzEPD.pth - im Ordner \ Python27 \ Desktop10.1 \ lib \ site-packages ablegen *

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

* zzArcGIS.pth - im Ordner \ Python27 \ epd32 \ lib \ site-packages ablegen *

# 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
quelle
1

Nicht spezifisch für GIS, aber zum Debuggen von Python, IPDBist erstaunlich. https://pypi.python.org/pypi/ipdb

Fügen Sie dazu einfach die folgenden Zeilen in Ihren Code ein:

import ipdb
ipdb.set_trace()

Anschließend können Sie in Ihrer Python-Shell einen beliebigen Code einfügen und mit allen Variablen in diesem aktuellen Status interagieren.

djq
quelle