Wydaje mi się, że używam pakietu witryny Arcpy ESRI do praktycznie wszystkich procesów geoprzetwarzania Pythona. Trzeba przyznać, że jest to niesamowity zestaw narzędzi, które mogą pomóc w osiągnięciu znacznej kwoty. Chciałbym jednak również tworzyć skrypty geoprzetwarzania poza domeną Arcpy ESRI. Na przykład, jeśli chcę przyciąć raster do wielokąta, zacznę od następującego skryptu z 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")
Nie jestem pewien, jak miałbym programowo wykonać to samo zadanie bez Arcpy. Moje pytania do poważnych programistów: Jakiej kolekcji narzędzi Python używasz do wykonywania zadań, które użytkownicy ESRI wykonaliby za pomocą pakietu witryny Arcpy? Gdzie mam zacząć?
python
geoprocessing
Aaron
źródło
źródło
Odpowiedzi:
GDAL to narzędzie do użycia. W rzeczywistości całe połączenie jest jedną linią dla gdal_rasterize:
jeśli znasz wartość danych dem
Dla niektórych kontroli Pythona:
gdzie twoje zmienne mogą być ustawione w pythonie
Pełny python:
Właśnie rzuciłem okiem na składnię dla C API, więc moja składnia dla Pythona jest prawdopodobnie trochę zła. Zobacz gdal_alg.h: http://gdal.org/gdal__alg_8h.html
źródło
Na tej stronie znajdziesz wiele innych podobnych pytań, które zadają to samo podstawowe pytanie i mają bardzo dobre referencje. Najbardziej podobny (i szczegółowy) to:
Inne obejmują:
źródło
Dobrym punktem wyjścia będzie Biblioteka Abstrakcji Danych Geospatial . W rzeczywistości składa się z dwóch bibliotek - GDAL do manipulacji geoprzestrzennymi danymi rastrowymi i OGR do manipulowania geoprzestrzennymi danymi wektorowymi, ale ludzie zwykle nazywają to GDAL.
W Pythonie odbywa się geoprzetwarzanie z wykorzystaniem kursu GIS typu open source na Uniwersytecie Stanowym w Utah. Możesz też to sprawdzić.
źródło
W wielu moich badaniach akademickich pracuję z danymi LiDAR, wykonując analizy powierzchni dla geomorfologii. Szybko przekonałem się, że wykonywanie wielu operacji przy użyciu arcpy było bardzo wolne, szczególnie w przypadku dużych zestawów danych. W rezultacie zacząłem używać:
Poleciłbym również książkę Ilościowe modelowanie procesów powierzchniowych Ziemi każdemu, kto chce dowiedzieć się więcej o analizie powierzchni rastrowych. Książka zawiera wspaniałe przykłady kodu w C ++, które są znacznie wydajniejsze niż narzędzia ArcGIS. Algorytmy te mogą być również przeniesione do Pythona bez potrzeby użycia bardziej złożonego niż numpy, chociaż działają znacznie szybciej w C ++.
źródło
Dla osób używających ESRI myślę, że GRASS byłoby bardzo podobnym środowiskiem ze środowiskiem Python z graficznym interfejsem użytkownika i zorganizowanym w oddzielnych „zestawach narzędzi” do różnych zadań (zestawy rastrowe, wektorowe, słoneczne itp.). Skrypty mają inne opcje oprócz Pythona, ale właśnie z tego korzystam.
Zdecydowanie sprawdź ten świetny link, który jest aktualny (wierzę): http://grass.osgeo.org/wiki/GRASS_and_Python
EDYCJA: kolejny link dla osób posiadających doświadczenie w ESRI: http://grass.osgeo.org/wiki/GRASS_migration_hints
Popieram także wniosek GDAL. Jest nieoceniony i bez niego zgubiłbym się.
źródło
Myślę, że dotychczasowe odpowiedzi obejmują w zasadzie wszystkie pakiety, o których warto wspomnieć (szczególnie GDAL, OGR, pyshp, NumPy)
Ale jest też GIS i Python Software Laboratory , w którym znajduje się kilka interesujących modułów. Oni są:
Osobiście zacząłem ostatnio bawić się GDAL / OGR i przekonałem się, że są imponujące pod względem szybkości i zasięgu narzędzi analitycznych.
Oto kilka przykładów użycia metod (wziętych z tego doskonałego źródła, które jest bardzo dobrym punktem wyjścia):
Zaletą tych narzędzi jest to, że jesteś bardzo elastyczny w ich wdrażaniu. Napisałem na przykład własną klasę,
CreateGeometry()
aby łatwo tworzyć pliki wektorowe od podstaw. Jeśli jesteś zainteresowany, mogę również zamieścić go tutaj, mimo że uważam, że wykracza to poza zakres pytania.źródło
Wiem, że twoje pytanie jest zorientowane na Python, ale R ma bogactwo cennych metod analizy statystycznej, z których niektóre można wykorzystać do analizy przestrzennej.
@Whuber
ma tutaj dobrą odpowiedź ilustrującą, jak przypiąć raster do pudełka w dwóch wierszach.źródło
Moje rozwiązanie, szybkie rozwiązanie, polega na użyciu GDAL z Pythonem.
Musisz
(Od odpowiedzi tutaj: Obcinanie rastra warstwą wektorową za pomocą GDAL )
Oczywiście powinieneś być w stanie to osiągnąć za pomocą czystego Pythona, ale nie musiałem tego robić. I prawie zawsze mam GDAL! Elastyczność GDAL jest fantastyczna, szczególnie w środowisku Linux. Obsługuje ogromne rastry, można go łączyć ze skryptami Python lub Shell, a do wielu rzeczy należą funkcje. Zobacz także OGR dla narzędzi opartych na wektorze.
źródło
Jeśli nie przeszkadza ci uruchomienie PostGIS, może on wykonać większość przetwarzania danych przestrzennych.
Ściągawka PDF:
http://www.postgis.us/downloads/postgis20_cheatsheet.pdf
Integruje się z Pythonem:
https://publicwiki.deltares.nl/display/OET/Accessing+PostgreSQL+PostGIS+with+Python
Dzięki narzędziom wspierającym, takim jak SPIT w Quantum GIS lub pgAdmin, jesteś dobrze przygotowany do skonfigurowania PostGIS. Następnie można użyć Pythona do sterowania operacjami PostGIS na danych przestrzennych.
źródło
Pracowałem nad biblioteką geoprzetwarzania open source o nazwie WhiteboxTools, która może być używana zamiast ArcPy w wielu aplikacjach. Obecnie dostępnych jest prawie 300 narzędzi do przetwarzania danych rastrowych, wektorowych i LiDAR (LAS), choć planowane jest przeniesienie wszystkich ponad 400 narzędzi dostępnych w Whitebox GAT . Chociaż narzędzia zostały opracowane przy użyciu języka programowania Rust (w celu zwiększenia wydajności), każde narzędzie można wywołać z poziomu Pythona, jak w poniższym przykładzie:
Więcej szczegółowych informacji można znaleźć podane w instrukcji WhiteboxTools użytkownika . Biblioteka jest samodzielna i nie ma żadnych innych zależności. Wystarczy pobrać mały (<5 Mb) plik znajdujący się tutaj . Pobierany plik zawiera exe WhiteboxTools Z whitebox_tools.py skrypt, który dostarcza API Pythona dla biblioteki (importowanego w górnym wierszu powyższego scenariusza) oraz instrukcję. Istnieje również bardzo podstawowy GUI tkinter (wb_runner.py) do łączenia się z biblioteką.
Zezwolona licencja MIT ma na celu umożliwienie integracji WhiteboxTools jako zaplecza z innymi GIS typu open source; Alexander Bruy opracował wtyczkę QGIS dla zaplecza WhiteboxTools. W razie potrzeby możesz także mieszać i dopasowywać narzędzia WhiteboxTools i ArcPy w jednym skrypcie. Biblioteka jest wciąż nieco eksperymentalna, opracowana na podstawie badań Geomorfometrii i Hydrogeomatics University of Guelpha , i jest obecnie w wersji wcześniejszej niż 1.0, którą należy wziąć pod uwagę podczas użytkowania.
źródło
Używanie Pythona do przycinania rastra do pliku kształtu bez ArcPy: http://geospatialpython.com/2011/02/clip-raster-using-shapefile.html
źródło