GeoJSON Storage

Purpose

This note defines how GeoJSON exports are stored during the PostgreSQL migration.

Current approach

Use PostgreSQL JSONB as the canonical database storage for exported GeoJSON objects.

Table: - job_geojson_exports

Fields: - job reference - export kind (final or correction) - raw GeoJSON payload as JSONB

Why JSONB first

This preserves the full exported object: - geometry - properties - scrubbed form data - image metadata

It is enough for: - map serving - export retrieval - analysis in Python - future migration to PostGIS if spatial indexing/querying becomes necessary

PostGIS direction

PostGIS is still a reasonable future step, but not required for the initial migration.

If spatial querying becomes necessary later, add derived geometry columns while keeping the original GeoJSON payload intact.

Current tooling

Import: - tools/import_legacy_jobs.py

Read-only query: - tools/query_imported_jobs.py geojson-exports

Test: - tests/test_geojson_export_storage.py