Trabalhando com Dados Geoespaciais em Python
Joris Van den Bossche
Open source software developer and teacher, GeoPandas maintainer

Fonte da imagem: documentação do QGIS



import rasterio
import rasterio
src = rasterio.open("DEM_world.tif")
Metadados:
src.count
1
src.width, src.height
(4320, 2160)
array = src.read()
numpy array padrão:
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)
Usando o método rasterio.plot.show():
import rasterio.plot
rasterio.plot.show(src, cmap='terrain')


rasterstats: Estatísticas de resumo de conjuntos raster geoespaciais com base em geometrias vetoriais (https://github.com/perrygeo/python-rasterstats)
Para vetores de pontos:
rasterstats.point_query(geometries, "path/to/raster",
interpolation='nearest'|'bilinear')
Para vetores de polígonos:
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
.. ... ... ... ...
Trabalhando com Dados Geoespaciais em Python