70 zonal stats
Calculating zonal statistics - summarizing geospatial raster datasets based on vector geometries
Uncomment the following line to install leafmap if needed.
In [ ]:
Copied!
# %pip install -U leafmap
# %pip install -U leafmap
In [ ]:
Copied!
# %pip install -U rasterstats geopandas
# %pip install -U rasterstats geopandas
In [ ]:
Copied!
import leafmap
import geopandas as gpd
import leafmap
import geopandas as gpd
In [ ]:
Copied!
dsm = "https://opengeos.org/data/elevation/dsm.tif"
hag = "https://opengeos.org/data/elevation/hag.tif"
buildings = "https://raw.githubusercontent.com/opengeos/data/refs/heads/main/elevation/buildings.geojson"
dsm = "https://opengeos.org/data/elevation/dsm.tif"
hag = "https://opengeos.org/data/elevation/hag.tif"
buildings = "https://raw.githubusercontent.com/opengeos/data/refs/heads/main/elevation/buildings.geojson"
In [ ]:
Copied!
m = leafmap.Map()
m.add_cog_layer(dsm, name="DSM", palette="terrain")
m.add_cog_layer(hag, name="Height Above Ground", palette="magma")
m.add_geojson(buildings, layer_name="Buildings")
m
m = leafmap.Map()
m.add_cog_layer(dsm, name="DSM", palette="terrain")
m.add_cog_layer(hag, name="Height Above Ground", palette="magma")
m.add_geojson(buildings, layer_name="Buildings")
m
In [ ]:
Copied!
gdf = gpd.read_file(buildings)
len(gdf)
gdf = gpd.read_file(buildings)
len(gdf)
In [ ]:
Copied!
gdf.head()
gdf.head()
The leafmap.zonal_stats() function wraps the rasterstats.zonal_stats() function and performs reprojection if necessary.
By default, the zonal_stats function will return the following statistics:
min
max
mean
count
Optionally, these statistics are also available.
sum
std
median
majority
minority
unique
range
nodata
In [ ]:
Copied!
stats = leafmap.zonal_stats(gdf, hag, stats=["min", "max", "mean", "count"])
len(stats)
stats = leafmap.zonal_stats(gdf, hag, stats=["min", "max", "mean", "count"])
len(stats)
In [ ]:
Copied!
stats[:5]
stats[:5]
In [ ]:
Copied!
stats_geojson = leafmap.zonal_stats(gdf, hag, stats=["mean", "count"], geojson_out=True)
len(stats_geojson)
stats_geojson = leafmap.zonal_stats(gdf, hag, stats=["mean", "count"], geojson_out=True)
len(stats_geojson)
In [ ]:
Copied!
stats_geojson[0]
stats_geojson[0]
In [ ]:
Copied!
stats_gdf = leafmap.zonal_stats(gdf, hag, stats=["mean", "count"], gdf_out=True)
len(stats_gdf)
stats_gdf = leafmap.zonal_stats(gdf, hag, stats=["mean", "count"], gdf_out=True)
len(stats_gdf)
In [ ]:
Copied!
stats_gdf.head()
stats_gdf.head()
In [ ]:
Copied!
m = leafmap.Map()
m.add_gdf(stats_gdf, layer_name="Zonal Stats")
m
m = leafmap.Map()
m.add_gdf(stats_gdf, layer_name="Zonal Stats")
m