Chapter 19: Learning Labs and Capstone Projects¶
Learning geospatial software engineering requires building. Labs should move from small local exercises to realistic end-to-end systems that include data, analysis, APIs, maps, tests, and deployment.
Learning Goals¶
- Set up a practical geospatial development environment.
- Complete labs that cover databases, web maps, imagery, routing, realtime tracking, GeoAI, and GeoRAG.
- Build a capstone geospatial product with production-style architecture.
- Practice documentation, testing, and reproducibility.
Theory¶
Labs should teach spatial thinking through implementation. Each lab should include a question, dataset, expected output, correctness checks, and reflection. The goal is not just to make a map; it is to understand why the result is valid.
Math¶
Each lab should include the math it uses: projections, distance, area, overlay, graph search, raster algebra, spatial indexing, aggregation, similarity search, or model evaluation.
Each lab should also include at least one written equation or computation pattern. For example:
known-answer test:
abs(actual - expected) <= epsilon
geometry tolerance:
area(symmetric_difference(actual, expected)) <= epsilon
space-time aggregation:
cube[cell_id, time_bin] = count(events in cell_id during time_bin)
camera projection for 3D field capture:
u = K * (R * X + t)
See also: Math and Algorithms Reference
Tools of the Trade¶
- Docker and Docker Compose.
- PostGIS, QGIS, GDAL, Python notebooks.
- MapLibre or Leaflet.
- STAC, COG, GeoParquet.
- Routing tools and vector tile servers.
- Testing and CI/CD tools.
- Reality capture tools for advanced labs: COLMAP, OpenDroneMap, Gaussian Splatting viewers, sample multi-view image sets, and field metadata templates.
Lab Sequence¶
- Set up a geospatial development environment.
- Load public data into PostGIS.
- Build spatial SQL queries and indexes.
- Publish a web map with vector tiles.
- Build a geocoding and place-search workflow.
- Build routing and isochrone examples.
- Process remote sensing imagery.
- Build realtime moving-object tracking.
- Train a basic GeoAI model.
- Build a GeoRAG assistant over spatial documents and datasets.
- Build a Gaussian Splatting field inspection workflow.
- Deploy a production-style geospatial API.
- Complete a capstone end-to-end product.
Working Practice Examples¶
- Create a
docker-compose.ymlwith PostGIS and a tile server. - Write a lab README with setup, commands, expected outputs, and troubleshooting.
- Add tests for known spatial answers.
- Create a capstone architecture diagram and delivery checklist.
- Create an inspection lab plan where readers capture or use a sample image set, review camera poses, produce a Gaussian Splat or documented substitute, annotate defects, and connect observations to asset records.
Common Failure Modes¶
- Labs that rely on hidden manual steps.
- No fixed data version.
- No expected output.
- No test for spatial correctness.
- Examples that work locally but cannot be reproduced.
- 3D capture labs that skip safety, permissions, metadata, calibration, expected outputs, or fallback datasets.
Works Cited¶
"Docker Documentation." Docker, https://docs.docker.com/. Accessed 9 May 2026.
"GDAL Documentation." GDAL, https://gdal.org/. Accessed 9 May 2026.
"PostGIS Manual." PostGIS, https://postgis.net/docs/. Accessed 9 May 2026.
"QGIS Documentation." QGIS, https://docs.qgis.org/. Accessed 9 May 2026.
Kerbl, Bernhard, et al. "3D Gaussian Splatting for Real-Time Radiance Field Rendering." ACM Transactions on Graphics, vol. 42, no. 4, 2023, article 139. https://doi.org/10.1145/3592433.
