To be run in a GRASS GIS session, North Carolina sample dataset.
Requires d.explanation.plot (GRASS GIS addon), pngquant, optipng and ImageMagic mogrify.
import os
from IPython.display import Image
import grass.script as gs
import grass.jupyter as gj
gs.set_raise_on_error(True)
gs.set_capture_stderr(True)
os.environ["GRASS_OVERWRITE"] = "1"
# zoom to spatial subset of "zipcodes" map (5 x 5 pixels)
!g.region n=225430 s=225380 w=640250 e=640300 res=10 -p
# average elevation in zipcode areas
!r.stats.zonal base=zipcodes cover=elevation method=average output=zipcodes_elev_avg
!r.colors zipcodes_elev_avg color=elevation -g
plot = gj.Map(use_region=True, width=1100, height=1100)
plot.d_background(color="white")
plot.run(
"d.explanation.plot",
a="zipcodes",
b="elevation",
c="zipcodes_elev_avg",
label_a="zipcode areas",
label_b="elevation",
label_c="Avg elev. / area",
operator_font="FreeMono:Regular",
)
plot.show()
filename = "r_stats.zonal.png"
plot.save(filename)
!mogrify -trim {filename}
!pngquant --ext ".png" -f {filename}
!optipng -o7 {filename}
Image(filename)