Import in Versioned Mode

Primary page: /parcels/upload/

Supported Files

  • ZIP Shapefile (.zip containing matching .shp/.shx/.dbf/.prj)
  • GeoPackage (.gpkg)

An ordinary GeoPackage should contain exactly one polygon layer. Current LMSTool parcel GeoPackage exports satisfy this requirement and can be uploaded again without selecting a layer. Older LMSTool exports may declare that single layer as generic Geometry; they are accepted only after every actual non-null feature has been verified as polygonal.

GeoJSON and KML are download/export formats only. They are not accepted as parcel geometry imports.

This page describes ordinary parcel import, which may create drafts in the established versioned workflow. To update the geometry of specific existing drafts, use the separate draft editing exchange. The two kinds of GeoPackage are intentionally not interchangeable.

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

  1. Upload file.
  2. System analyzes features and shows preview.
  3. Review matched and new records.
  4. Choose decision:
  5. keep_existing: keep matched active parcels unchanged, insert only new parcel IDs.
  6. replace_matched: create new active versions for matched editable parcels.
  7. cancel: mark upload as cancelled.
  8. Set Effective At timestamp (optional, defaults to now).
  9. 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_matched only updates rows you are allowed to edit. Non-editable matches are kept.
  • parcel_id is required in source data; records missing it are invalid.
  • Geometry is normalized to valid polygons during analysis.
  • Generic geometry layers containing point, line, or mixed geometry remain rejected.
  • Import status/audit metadata records source and storage CRS identifiers.
  • Skipped/invalid rows are counted in upload status.