Isso é estranho, como se as pessoas de repente descobrissem o poder do Python (sem o ArcPy, que é apenas um módulo do Python entre outros), veja, por exemplo, a pergunta Visualize o shapefile no Python :
- O processamento geoespacial no Python tem uma história muito longa, muito mais antiga que o Arcpy (ou arcgisscripting) -> não "imita" os recursos do ArcPy aqui, como Paul diz, a maioria já estava lá antes do ArcPy.
- a referência para os módulos Python é o Python Package Index ( Pypi ) e há uma seção dedicada: Topic :: Scientific / Engineering :: GIS
- você pode fazer qualquer coisa com esses módulos e, geralmente, é mais fácil e rápido que o ArcPy, porque é Python puro (sem cursores ...).
- Shapely é um desses módulos para o processamento de geometrias geoespaciais -> calcular áreas de um polígono e converter polígonos em pontos.
- se você deseja processar camadas vetoriais, existem osgeo / ogr , Fiona ou Pyshp (e outros, menos usados) -> consulta um shapefile por atributos, cria nova camada a partir da seleção, calcula áreas de um polígono, converte polígonos em pontos
- para processar rasters, o padrão é osgeo / gdal
- para análise espacial, existe o Pysal
- para 3D, você pode usar outros módulos científicos, como numpy ou scipy (algoritmos 3D, grades, mas também estatísticas, geoestatística, 2D ou 3D)
- E eu não falo sobre mapnik , matplotlib / basemap , Geodjango e ...
Você pode combinar tudo (Pysal com bem torneado, ...) e misturá-los com os outros módulos científicos.
Assim, para exemplos de scripts Python, procure Pyshp Fiona, ogr, gdal ou shapely em gis.stackexchange ou na internet (muitos exemplos, não apenas em inglês).)
Um deles em francês (os scripts e as figuras são universais!):
- Python: usando camadas de vetor e raster em uma perspectiva geológica, sem o software GIS
em inglês:
- GIS com Python, Shapely e Fiona
e em espanhol
- Determinação de áreas de polígonos irregulares usando as coordenadas dos vértices
em gis.stackexchange
- Perfil de elevação 10 km de cada lado de uma linha
- Atualizando atributos usando o Pyshp
- Como criar um arquivo de forma 3D a partir de uma varredura?
- Script Python para obter diferença de altitude entre dois pontos
- etc
O script apresentado por Aaron pode ser escrito de maneira mais simples com Fiona, que usa apenas dicionários 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')
e se você usar bem torneado além disso:
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')
Existem também dois livros:
Desenvolvimento Geoespacial em Python de Eric Westra.
Aprendendo a Análise Geoespacial com Python de Joel Lawhead
O Python também é usado como uma linguagem de script em outros aplicativos GIS como QGIS (Quantum GIS), GRASS GIS, gvSIG ou OpenJump ou modeladores 3D como Paraview (e Blender também!). E você pode usar a maioria dos módulos geoespaciais em todos esses aplicativos (consulte Visualizando dados do QGIS com o Blender )