Ich verwende das Arcpy-Site-Paket von ESRI für praktisch alle meine Python-Geoverarbeitungsvorgänge. Es ist ESRI zu verdanken, dass dies eine unglaubliche Sammlung von Tools ist, die dabei helfen können, viel zu erreichen. Ich möchte jedoch auch Geoverarbeitungsskripte außerhalb der ESRI Arcpy-Domäne erstellen. Wenn ich beispielsweise ein Raster in ein Polygon schneiden möchte, beginne ich mit dem folgenden Skript von ESRI :
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster = "elevation"
inMaskData = "mask.shp"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData)
# Save the output
outExtractByMask.save("C:/sapyexamples/output/extractmask")
Ich bin nicht sicher, wie ich die gleiche Aufgabe ohne Arcpy programmgesteuert ausführen würde. Meine Fragen an die ernsthaften Programmierer: Welche Sammlung von Python-Tools verwenden Sie, um Aufgaben auszuführen, die ESRI-Benutzer mit dem Arcpy-Site-Paket ausführen würden? Wo soll ich anfangen?
python
geoprocessing
Aaron
quelle
quelle
Antworten:
GDAL ist das zu verwendende Tool. Tatsächlich ist der gesamte Aufruf eine Zeile für gdal_rasterize:
wenn du den no data wert des dem kennst
Für einige Python-Steuerung:
wo Ihre Variablen in Python gesetzt werden könnten
Für volle Python:
Ich habe gerade einen kurzen Blick auf die Syntax für die C-API geworfen, daher ist meine Syntax für Python wahrscheinlich ein wenig veraltet. Siehe gdal_alg.h: http://gdal.org/gdal__alg_8h.html
quelle
Auf dieser Website finden Sie eine Reihe ähnlicher Fragen, die dieselbe grundlegende Frage stellen und über sehr gute Referenzen verfügen. Die ähnlichsten (und detailliertesten) sind:
Andere sind:
quelle
Ein guter Ausgangspunkt wäre die Geospatial Data Abstraction Library . Es besteht eigentlich aus zwei Bibliotheken - GDAL zum Manipulieren von Geodaten-Rasterdaten und OGR zum Manipulieren von Geodaten-Vektordaten, aber die Leute nennen es normalerweise einfach GDAL.
Es gibt eine Geoverarbeitung mit Python unter Verwendung eines Open-Source-GIS- Kurses an der Utah State University. Vielleicht möchten Sie es auch ausprobieren.
quelle
In vielen meiner akademischen Forschungen arbeite ich mit LiDAR-Daten und analysiere Oberflächen für die Geomorphologie. Ich stellte schnell fest, dass die Ausführung vieler Operationen mit Arcpy sehr langsam war, insbesondere bei großen Datenmengen. Als Ergebnis begann ich mit:
Ich würde das Buch " Quantitative Modellierung von Erdoberflächenprozessen" auch jedem empfehlen, der mehr über die Analyse von Rasteroberflächen erfahren möchte. Das Buch enthält hervorragende Codebeispiele in C ++, die wesentlich effizienter sind als die ArcGIS-Tools. Diese Algorithmen können auch nach Python portiert werden, ohne dass etwas Komplexeres als Numpy erforderlich ist, obwohl sie in C ++ viel schneller ausgeführt werden.
quelle
Für Leute, die ESRI verwenden, ist GRASS meiner Meinung nach eine sehr ähnliche Umgebung mit einer GUI-Python-Umgebung, die in separaten "Toolkits" für verschiedene Aufgaben (Raster, Vektor, Solar-Toolkits usw.) organisiert ist. Das Scripting hat neben Python noch andere Optionen, aber so benutze ich es.
Schauen Sie sich auf jeden Fall diesen tollen Link an, der aktuell ist (glaube ich): http://grass.osgeo.org/wiki/GRASS_and_Python
BEARBEITEN: Ein weiterer Link für Personen mit Hintergrundinformationen in ESRI: http://grass.osgeo.org/wiki/GRASS_migration_hints
Ich unterstütze auch den Antrag von GDAL. Es ist von unschätzbarem Wert und ich würde ohne es verloren gehen.
quelle
Ich denke, die bisher gegebenen Antworten decken grundsätzlich alle erwähnenswerten Pakete ab (insbesondere GDAL, OGR, pyshp, NumPy).
Es gibt aber auch das GIS- und Python-Softwarelabor , das eine Reihe interessanter Module beherbergt. Sie sind:
Persönlich habe ich in letzter Zeit angefangen, mit GDAL / OGR herumzuspielen und fand sie sehr beeindruckend in Bezug auf Geschwindigkeit und Abdeckung der Analysewerkzeuge.
Hier einige Beispiele zur Verwendung der Methoden (entnommen aus dieser hervorragenden Quelle, die ein sehr guter Ausgangspunkt ist):
Das Schöne an diesen Tools ist, dass Sie bei der Implementierung sehr flexibel sind. Ich habe zum Beispiel meine eigene Klasse geschrieben
CreateGeometry()
, um Vektordateien einfach von Grund auf neu zu erstellen. Wenn Ihr Interesse besteht, kann ich es auch hier posten, obwohl ich denke, dass es den Rahmen der Frage sprengt.quelle
Ich weiß, dass Ihre Frage Python-zentriert ist, aber R verfügt über eine Fülle wertstatistischer Analysemethoden, von denen einige für die räumliche Analyse verwendet werden können.
@Whuber
Hier finden Sie eine gute Antwort , um zu veranschaulichen, wie ein Raster in zwei Zeilen auf eine Box geschnitten wird.quelle
Meine Lösung, die schnelle Lösung, besteht darin, GDAL mit Python zu verwenden.
Du musst
(Aus der Antwort hier: Raster mit Vektorebene mit GDAL beschneiden )
Natürlich sollten Sie in der Lage sein, dies mit reinem Python zu erreichen, aber ich musste es nicht tun. Und ich habe fast immer GDAL in der Nähe! Die Flexibilität von GDAL ist fantastisch, insbesondere in einer Linux-Umgebung. Es verarbeitet riesige Raster, kann mit Python- oder Shell-Skripten verknüpft werden und es gibt Funktionen für viele Dinge. Siehe auch OGR für vektorbasierte Werkzeuge.
quelle
Wenn es Ihnen nichts ausmacht, PostGIS auszuführen, kann es die meisten räumlichen Daten für Sie verarbeiten.
PDF-Spickzettel:
http://www.postgis.us/downloads/postgis20_cheatsheet.pdf
Es integriert sich in Python:
https://publicwiki.deltares.nl/display/OET/Accessing+PostgreSQL+PostGIS+with+Python
Mit unterstützenden Tools wie SPIT in Quantum GIS oder pgAdmin sind Sie gut gerüstet, um PostGIS einzurichten. Anschließend können Sie mit Python die PostGIS-Vorgänge für Ihre Geodaten steuern.
quelle
Ich habe an einer Open-Source- Geoverarbeitungsbibliothek namens WhiteboxTools gearbeitet , die in vielen Anwendungen anstelle von ArcPy verwendet werden kann. Derzeit stehen fast 300 Tools für die Verarbeitung von Raster-, Vektor- und LiDAR-Daten (LAS) zur Verfügung. Es ist jedoch geplant, alle über 400 in Whitebox GAT verfügbaren Tools zu portieren . Obwohl die Tools mit der Programmiersprache Rust (aus Effizienzgründen) entwickelt wurden, kann jedes Tool von Python aus aufgerufen werden, wie im folgenden Beispiel dargestellt:
Weitere Informationen finden Sie im WhiteboxTools-Benutzerhandbuch . Die Bibliothek ist eigenständig und weist keine weiteren Abhängigkeiten auf. Sie müssen lediglich die kleine Datei (<5 MB) herunterladen, die sich hier befindet . Die Download-Datei enthält die WhiteboxTools-Exe, das Skript whitebox_tools.py , das die Python-API für die Bibliothek (die in der obersten Zeile des obigen Skripts importiert wird) sowie das Benutzerhandbuch. Es gibt auch eine sehr einfache tkinter-GUI (wb_runner.py) für die Anbindung an die Bibliothek.
Die zulässige MIT-Lizenz soll die Integration von WhiteboxTools als Back-End in andere Open-Source-GIS ermöglichen. Alexander Bruy hat ein QGIS-Plugin für das WhiteboxTools- Backend entwickelt . Sie können bei Bedarf auch Tools von WhiteboxTools und ArcPy in einem einzigen Skript mischen und abgleichen. Die Bibliothek ist noch ein wenig experimentell und wurde von der Geomorphometrie- und Hydrogeomatik-Forschungsgruppe der Universität Guelph entwickelt. Derzeit liegt eine Version vor Version 1.0 vor, die bei der Verwendung berücksichtigt werden sollte.
quelle
Verwenden von Python zum Ausschneiden eines Rasters in ein Shapefile ohne ArcPy: http://geospatialpython.com/2011/02/clip-raster-using-shapefile.html
quelle