GIS · Pilot track · Python + Leaflet
Most data has a where. GIS is the toolkit for reasoning about that dimension: measuring distances on a sphere, understanding how flat maps distort the globe, reading vector features in GeoJSON, and treating continuous fields as numeric grids.
This lab pairs short Python in the browser with interactive Leaflet maps so concepts click visually before you compute them. No prior mapping experience needed.
What you will learn
From coordinates on the globe through projections, vector data, rasters, and terrain.
This lab is still growing. More lessons and phases are on the way.
Latitude and longitude as a shared address system; great-circle distance with Haversine.
Mercator-style scale versus latitude; GeoJSON vectors as nested data you can parse by hand.
Raster grids as NumPy arrays: summaries, visualization, and the one-value-per-cell mental model.
Grid buffers via dilation, Boolean overlays, and nearest-centroid assignment as a toy spatial join.
Polygon area via the Shoelace formula, rectangle intersection, Boolean point clipping, and polyline buffering via point-to-segment projection — the geometry GeoPandas and Shapely abstract away.
Cost surfaces as weighted rasters; Dijkstra on an 8-connected grid finds the least-cost path through any barrier.
Equal-interval and quantile classification turn continuous values into color classes — and the choice reshapes what the map says.
Zonal statistics summarize a raster inside polygon zones — the vector–raster glue step behind many choropleths and reporting tables.
np.gradient turns a DEM into slope and aspect rasters; a dot product with a sun vector produces hillshade — then a bilinear transect samples elevation along any cross-section line.
Zonal statistics on a cloud-masked NDVI raster — closing the loop between the GIS vector model and the EO data pipeline.