Parece que uso el paquete de sitio Arcpy de ESRI para prácticamente todo mi geoprocesamiento en python. Para crédito de ESRI, estas son un conjunto increíble de herramientas que pueden ayudar a lograr mucho. Sin embargo, también me gustaría crear scripts de geoprocesamiento fuera del dominio ESRI Arcpy. Por ejemplo, si quiero recortar un ráster a un polígono, comenzaría con el siguiente script de 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")
No estoy seguro de cómo realizaría la misma tarea mediante programación sin Arcpy. Mis preguntas para los programadores serios: ¿Qué colección de herramientas de Python utilizas para realizar las tareas que los usuarios de ESRI realizarían con el paquete del sitio Arcpy? ¿Dónde empiezo?
python
geoprocessing
Aaron
fuente
fuente
Respuestas:
GDAL es la herramienta a utilizar. De hecho, toda la llamada es una línea para gdal_rasterize:
si supieras el valor sin datos de la dem
Para algún control de Python:
donde sus variables podrían establecerse en python
Para python completo:
Acabo de echar un vistazo rápido a la sintaxis de la API de C, por lo que mi sintaxis para python probablemente esté un poco apagada. Ver gdal_alg.h: http://gdal.org/gdal__alg_8h.html
fuente
Encontrará otras preguntas similares en este sitio que hacen la misma pregunta básica y tienen muy buenas referencias. El más similar (y detallado) es:
Otros incluyen:
fuente
Un buen punto de partida sería la Biblioteca de abstracción de datos geoespaciales . En realidad, está compuesto por dos bibliotecas: GDAL para manipular datos ráster geoespaciales y OGR para manipular datos de vectores geoespaciales, pero la gente generalmente lo llama GDAL.
Hay un geoprocesamiento con Python usando un curso de SIG de código abierto en la Universidad Estatal de Utah. Es posible que desee comprobarlo también.
fuente
En gran parte de mi investigación académica trabajo con datos LiDAR haciendo análisis de superficie para geomorfología. Rápidamente descubrí que realizar muchas operaciones usando arcpy era muy lento, especialmente en grandes conjuntos de datos. Como resultado comencé a usar:
También recomendaría el libro, Modelado cuantitativo de los procesos de la superficie de la tierra a cualquiera que quiera aprender más sobre el análisis de las superficies ráster. El libro viene con excelentes ejemplos de código en C ++, que son mucho más eficientes que las herramientas ArcGIS. Estos algoritmos también se pueden portar a Python sin necesitar nada más complejo que numpy, aunque se ejecutan mucho más rápido en C ++.
fuente
Para las personas que usan ESRI, creo que GRASS sería un entorno muy similar con un entorno de Python GUI y organizado en 'kits de herramientas' separados para diferentes tareas (ráster, vector, kits de herramientas solares, etc.). El script tiene otras opciones además de Python, pero así es como lo uso.
Definitivamente revise este gran enlace que está actualizado (creo): http://grass.osgeo.org/wiki/GRASS_and_Python
EDITAR: otro enlace para aquellos con experiencia en ESRI: http://grass.osgeo.org/wiki/GRASS_migration_hints
También secundo la moción de GDAL. Es invaluable y estaría perdido sin él.
fuente
Creo que las respuestas dadas hasta ahora cubren básicamente todos los paquetes que vale la pena mencionar (especialmente GDAL, OGR, pyshp, NumPy)
Pero también está el Laboratorio de Software SIG y Python , que alberga un par de módulos interesantes. Son:
Personalmente, comencé a jugar con GDAL / OGR últimamente y los encontré muy impresionantes con respecto a la velocidad y la cobertura de las herramientas de análisis.
Aquí algunos ejemplos de cómo usar los métodos (tomados de esta excelente fuente, que es un muy buen punto de partida):
Lo bueno de estas herramientas es que eres muy flexible en cómo implementarlas. Escribí, por ejemplo, mi propia clase
CreateGeometry()
para crear fácilmente archivos vectoriales desde cero. Si está interesado, también puedo publicarlo aquí, aunque creo que está más allá del alcance de la pregunta.fuente
Sé que su pregunta está centrada en Python, pero R tiene una gran cantidad de métodos de análisis estadísticos de valor, algunos de los cuales pueden usarse para el análisis espacial.
@Whuber
tiene una buena respuesta aquí que ilustra cómo recortar un ráster a un cuadro en dos líneas.fuente
Mi solución, la solución rápida, es usar GDAL con Python.
Necesitas
(De la respuesta aquí: Recorte de trama con capa vectorial usando GDAL )
Por supuesto, deberías poder lograr esto usando Python puro, pero no he necesitado hacerlo. ¡Y casi siempre tengo GDAL alrededor! La flexibilidad de GDAL es fantástica, especialmente en un entorno Linux. Maneja grandes rásteres, se puede vincular con scripts Python o Shell y hay funciones para muchas cosas. Ver también OGR para herramientas basadas en vectores.
fuente
Si no le importa ejecutar PostGIS, puede hacer la mayoría del procesamiento de datos espaciales por usted.
Hoja de trucos PDF:
http://www.postgis.us/downloads/postgis20_cheatsheet.pdf
Se integra con python:
https://publicwiki.deltares.nl/display/OET/Accessing+PostgreSQL+PostGIS+with+Python
Con herramientas de soporte como SPIT dentro de Quantum GIS o pgAdmin, está bien equipado para configurar PostGIS. Luego puede usar Python para controlar las operaciones de PostGIS en sus datos espaciales.
fuente
He estado trabajando en una biblioteca de geoprocesamiento de código abierto llamada WhiteboxTools que se puede usar en lugar de ArcPy en muchas aplicaciones. Actualmente hay cerca de 300 herramientas disponibles para procesar datos ráster, vectoriales y LiDAR (LAS), aunque el plan es eventualmente transferir todas las más de 400 herramientas disponibles en Whitebox GAT . Aunque las herramientas se desarrollan utilizando el lenguaje de programación Rust (por eficiencia), cada herramienta se puede llamar desde Python, como en el siguiente ejemplo:
Se puede encontrar información más detallada en el manual del usuario de WhiteboxTools . La biblioteca es independiente y no tiene ninguna otra dependencia. Simplemente necesita descargar el archivo pequeño (<5Mb) ubicado aquí . El archivo de descarga contiene el archivo WhiteboxTools exe, el script whitebox_tools.py , que proporciona la API de Python para la biblioteca (importada en la línea superior del script anterior) y el manual del usuario. También hay una GUI tkinter muy básica (wb_runner.py) para interactuar con la biblioteca.
La licencia permisiva de MIT está diseñada para permitir que WhiteboxTools se integre como un back-end con otros SIG de código abierto; Alexander Bruy ha desarrollado un complemento QGIS para el back-end de WhiteboxTools. También puede mezclar y combinar herramientas de WhiteboxTools y ArcPy en un solo script según sea necesario. La biblioteca aún es algo experimental, desarrollada por el Grupo de Investigación en Geomorfometría e Hidrogeomática de la Universidad de Guelph , y actualmente es una versión anterior a la 1.0, que debe tenerse en cuenta en el uso.
fuente
Usando Python para recortar un ráster a un shapefile sin ArcPy: http://geospatialpython.com/2011/02/clip-raster-using-shapefile.html
fuente