Import in Versioned Mode¶
Primary page: /parcels/upload/
Supported Files¶
- ZIP Shapefile (
.zipcontaining matching.shp/.shx/.dbf/.prj) - GeoPackage (
.gpkg)
GeoJSON and KML are download/export formats only. They are not accepted as parcel geometry imports.
CRS Requirements¶
- The source layer must declare a projected CRS with known linear units.
- The CRS does not need to match
PARCEL_STORAGE_SRID; GDAL/PROJ must provide a valid transformation to it. - The server records the declared source CRS and resulting storage CRS, then transforms geometry directly to the storage CRS before authoritative validation, workflow use, or persistence.
- Missing, ambiguous, geographic/angular, unknown-unit, and non-transformable CRS input is rejected. The application never guesses a CRS.
- WGS84 remains limited to browser-map display and GeoJSON/KML export.
Import Flow¶
- Upload file.
- System analyzes features and shows preview.
- Review matched and new records.
- Choose decision:
keep_existing: keep matched active parcels unchanged, insert only new parcel IDs.replace_matched: create new active versions for matched editable parcels.cancel: mark upload as cancelled.- Set
Effective Attimestamp (optional, defaults to now). - Apply and review upload status summary.
How Versioning Works During Import¶
Matching is done on active rows by dataset + parcel_id.
When you apply replace_matched:
- current active row is superseded (
record_status = superseded,valid_to = effective_at) - new row is inserted as the active version (
record_status = active,valid_from = effective_at) - parcel logical identity (
parcel_uid) is preserved across versions
When no active match exists for an incoming parcel_id, a new active parcel row is created.
Important Notes¶
replace_matchedonly updates rows you are allowed to edit. Non-editable matches are kept.parcel_idis required in source data; records missing it are invalid.- Geometry is normalized to valid polygons during analysis.
- Import status/audit metadata records source and storage CRS identifiers.
- Skipped/invalid rows are counted in upload status.
Related Guide¶
- Building a fake historical dataset with splits/merges: Versioned Demo Dataset Playbook