C'est étrange, comme si les gens découvraient soudain le pouvoir de Python (sans ArcPy, qui n'est qu'un module parmi d'autres), voir par exemple la question Visualiser le fichier de formes en Python :
- le traitement géospatial en Python a une très longue histoire, beaucoup plus ancienne qu'Arcpy (ou arcgisscripting) -> pas de "imiter" les capacités d'ArcPy ici, comme le dit Paul, la plupart étaient déjà présentes avant ArcPy.
- la référence pour les modules Python est l' indice de package Python ( Pypi ) et une section est dédiée: Sujet :: Scientifique / Ingénierie :: SIG
- vous pouvez faire n'importe quoi avec ces modules et c'est souvent plus facile et plus rapide que ArcPy car c'est du pur Python (pas de curseurs ...).
- Shapely est l’un de ces modules permettant de traiter les géométries géospatiales -> calculer les superficies d’un polygone et convertir des polygones en points ..
- si vous voulez traiter des couches vectorielles, il y a osgeo / ogr , Fiona ou Pyshp (et autres, moins utilisés) -> interroger un fichier de formes par attributs, créer un nouveau calque à partir de la sélection, calculer les zones d'un polygone, convertir des polygones en points
- pour le traitement des rasters, la norme est osgeo / gdal
- pour l'analyse spatiale, il y a Pysal
- pour la 3D, vous pouvez utiliser d'autres modules scientifiques tels que numpy ou scipy (algorithmes 3D, grilles, mais aussi statistiques, géostatistique, 2D ou 3D)
- Et je ne parle pas de mapnik , matplotlib / basemap , GeoDjango et ...
Vous pouvez combiner tous (Pysal avec galbe, ...) et les mélanger avec les autres modules scientifiques.
Ainsi, pour des exemples de scripts Python, recherchez Pyshp Fiona, ogr, gdal ou galbé dans gis.stackexchange ou sur Internet (nombreux exemples, et pas seulement en anglais).)
L'un d'eux en français (les scripts et les figures sont universels!):
- Python: utilisation de couches vectorielles et matricielles dans une perspective géologique, sans logiciel SIG,
autre en anglais:
- SIG avec Python, Shapely et Fiona
et en espagnol
- Détermination des superficies de polygones irréguliers à l'aide des coordonnées des sommets
de gis.stackexchange
- Profil d'altitude de 10 km de chaque côté d'une ligne
- Mise à jour des attributs avec Pyshp
- Comment créer un fichier de formes 3D à partir d'un raster?
- Script Python pour obtenir la différence d'altitude entre deux points
- etc
Le script présenté par Aaron s’écrit plus simplement avec Fiona qui n’utilise que les dictionnaires 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')
et si vous utilisez galbé en plus:
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')
Il y a aussi deux livres:
Développement géospatial en python d’Eric Westra.
Apprendre l'analyse géospatiale avec Python de Joel Lawhead
Python est également utilisé comme langage de script dans d'autres applications SIG telles que QGIS (Quantum GIS), GRASS GIS, gvSIG ou OpenJump ou des modélisateurs 3D comme Paraview (et Blender également!). Et vous pouvez utiliser la majorité des modules géospatiaux dans toutes ces applications (voir Visualisation des données QGIS avec Blender ).