Travailler avec des données géospatiales en Python
Joris Van den Bossche
Open source software developer and teacher, GeoPandas maintainer

Source de l'image : documentation de QGIS



import rasterio
import rasterio
src = rasterio.open("DEM_world.tif")
Métadonnées :
src.count
1
src.width, src.height
(4320, 2160)
array = src.read()
Tableau numpy standard :
array
array([[[-4290, -4290, -4290, ..., -4290, -4290, -4290],
[-4278, -4278, -4278, ..., -4278, -4278, -4278],
[-4269, -4269, -4269, ..., -4269, -4269, -4269],
...,
[ 2804, 2804, 2804, ..., 2804, 2804, 2804],
[ 2804, 2804, 2804, ..., 2804, 2804, 2804],
[ 2804, 2804, 2804, ..., 2804, 2804, 2804]]], dtype=int16)
Avec la méthode rasterio.plot.show() :
import rasterio.plot
rasterio.plot.show(src, cmap='terrain')


rasterstats : statistiques sommaires de jeux de données raster géospatiaux selon des géométries vectorielles (https://github.com/perrygeo/python-rasterstats)
Pour les vecteurs de points :
rasterstats.point_query(geometries, "path/to/raster",
interpolation='nearest'|'bilinear')
Pour les vecteurs de polygones :
rasterstats.zonal_stats(geometries, "path/to/raster",
stats=['min', 'mean', 'max'])
result = rasterstats.zonal_stats(countries.geometry, "DEM_gworld.tif", stats=['mean'])countries['mean_elevation'] = pd.DataFrame(result)countries.sort_values('mean_elevation', ascending=False).head()
name continent geometry mean_elevation
157 Tajikistan Asia POLYGON ((74.98 37.41, ... 3103.231105
85 Kyrgyzstan Asia POLYGON ((80.25 42.34, ... 2867.717142
24 Bhutan Asia POLYGON ((91.69 27.77, ... 2573.559846
119 Nepal Asia POLYGON ((81.11 30.18, ... 2408.907816
6 Antarctica Antarctica (POLYGON ((-59.57 -80.04... 2374.075028
.. ... ... ... ...
Travailler avec des données géospatiales en Python