Omdena — Urban Tree Observatory
GIS web app seeding 1M+ records from CSV to PostGIS, built with a distributed volunteer team.
The Urban Tree Observatory is a civic GIS project mapping the urban tree canopy of Ibagué, Colombia. The data challenge was bulk-loading over one million tree records — each with species, coordinates, and condition attributes — from flat CSV files into a PostGIS database efficiently and repeatably.
I wrote the Django management command that reads the source CSVs, validates and transforms each row, and bulk-inserts records using `bulk_create` in configurable batch sizes. On a standard dev machine the full 1M-row load completes in minutes rather than hours.
The backend is Django + GeoDjango + DRF, exposing a spatial API that powers the map visualisation. The project was built with a distributed volunteer engineering team through Omdena's collaborative AI programme. I was recognised as Lead ML Engineer for my contributions.
Outcome
Management command seeding 1M+ biodiversity records from flat CSV files into PostGIS in a single run. Django/GeoDjango/DRF API serving spatial queries to a map frontend. Recognised as Lead ML Engineer by Omdena for contributions to the project.