Eso es extraño, como si la gente descubriera de repente el poder de Python (sin ArcPy, que es solo un módulo de Python entre otros), vea por ejemplo la pregunta Visualizar shapefile en Python :
- El procesamiento geoespacial en Python tiene una historia muy larga, mucho más antigua que Arcpy (o arcgisscripting) -> no "imita" las capacidades de ArcPy aquí, como dice Paul, la mayoría ya estaban allí antes de ArcPy.
- la referencia para los módulos de Python es el Índice de paquetes de Python ( Pypi ) y hay una sección dedicada: Tema :: Científico / Ingeniería :: SIG
- puede hacer cualquier cosa con estos módulos y, a menudo, es más fácil y rápido que ArcPy porque es Python puro (sin cursores ...).
- Shapely es uno de estos módulos para procesar geometrías geoespaciales -> calcular áreas de un polígono y convertir polígonos en puntos.
- si desea procesar capas de vectores, hay osgeo / ogr , Fiona o Pyshp (y otros, menos utilizados) -> consultar un archivo de forma por atributos, crear una nueva capa a partir de la selección, calcular áreas de un polígono, convertir polígonos en puntos
- para procesar rásteres, el estándar es osgeo / gdal
- para el análisis espacial, hay Pysal
- para 3D, puede usar otros módulos científicos como numpy o scipy (algoritmos 3D, cuadrículas, pero también estadísticas, geoestadística, 2D o 3D)
- Y no hablo de mapnik , matplotlib / basemap , Geodjango y ...
Puede combinar todo (Pysal con bien proporcionado, ...) y mezclarlos con los otros módulos científicos.
Por lo tanto, para ejemplos de Python Script, busque Pyshp Fiona, ogr, gdal o shapely en gis.stackexchange o Internet (muchos ejemplos, no solo en inglés).)
Uno de ellos en francés (¡los scripts y las figuras son universales!):
- Python: uso de capas vectoriales y ráster en una perspectiva geológica, sin software SIG y
otro en inglés:
- SIG con Python, Shapely y Fiona
y en español
- Determinación de áreas de polígonos irregulares utilizando las coordenadas de los vértices
en gis.stackexchange
- Perfil de elevación 10 km a cada lado de una línea
- Actualización de atributos usando Pyshp
- ¿Cómo crear un archivo de forma 3D a partir de un ráster?
- Python Script para obtener la diferencia de elevación entre dos puntos
, etc.
El guión presentado por Aaron se puede escribir de manera más simple con Fiona que usa solo diccionarios Python:
import fiona
with fiona.open('sites.shp', 'r') as input:
with open('hw1a.txt', 'w') as output:
for pt in input:
id = pt['properties']['id']
cover = pt['properties']['cover']
x = str(point['geometry']['coordinates'][0])
y = str(point['geometry']['coordinates'][21])
output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')
y si usas bien además:
from shapely.geometry import shape
with fiona.open('sites.shp', 'r') as input:
with open('hw1a.txt', 'w') as output:
for pt in input:
id = pt['properties']['id']
cover = pt['properties']['cover']
x = str(shape(pt['geometry']).x)
y = str(shape(pt['geometry']).y)
output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')
También hay dos libros:
Desarrollo Geoespacial de Python de Eric Westra.
Aprendizaje del análisis geoespacial con Python de Joel Lawhead
Python también se usa como lenguaje de script en otras aplicaciones SIG como QGIS (Quantum GIS), GRASS GIS, gvSIG u OpenJump o modeladores 3D como Paraview (¡y Blender también!). Y puede usar la mayoría de los módulos geoespaciales en todas estas aplicaciones (vea Visualizar datos QGIS con Blender )