Parcel Split and Merge

Split and merge operations are managed as grouped topology requests. Proposed outputs do not become official parcels until the complete request receives final approval.

Requirements

  • You must be logged in.
  • An active parcel dataset must be selected in your profile.
  • Creating and editing requests requires the dataset Editor role.
  • Review requires the Reviewer role.
  • Final approval requires the Approver role.
  • Sources must be current, active parcel version rows without an active ordinary draft or another active topology request.

Open the topology page

Use:

/parcels/topology/

For local development:

http://127.0.0.1:8000/parcels/topology/

Selected parcel version UUIDs can be supplied in the URL:

/parcels/topology/?selected_ids=<parcel-version-uuid>

For a merge, separate multiple UUIDs with commas:

/parcels/topology/?selected_ids=<first-uuid>,<second-uuid>

The page also reads the existing sticky selection from supported parcel map and list pages when the URL contains no selection. Selection data is only a navigation aid. The server always rechecks dataset access and current parcel state.

Split one parcel

1. Select the source

A split requires exactly one current parcel version.

  1. Select the parcel on a supported map or list page, or place its version UUID in selected_ids.
  2. Open /parcels/topology/.
  3. Choose Split one parcel.
  4. Confirm the source UUID and optionally add notes.
  5. Select Create grouped request.

The request starts in DRAFT with two child proposal records. Their geometry is empty until the server accepts a split line. The system suggests conflict-safe identifiers derived from the source identifier and copies eligible business attributes from the source.

2. Draw the split line

The request page contains one map showing the source, the saved split line, and the proposed outputs.

  1. Select Draw split line.
  2. Start the line outside the parcel, cross the parcel once, and finish outside the opposite boundary.
  3. Finish the line. The browser sends the line to the server.
  4. Wait for the map and projected area summaries to refresh from the server response.

The browser map uses WGS84 only as an invisible display transport. The database, spatial calculation, area measurement, and workflow geometry remain in the configured projected parcel storage CRS. Users do not edit coordinate text.

PostGIS transforms the submitted display line to the storage CRS and runs the authoritative split. A successful line must produce exactly two valid polygons. The accepted line and both output polygons are saved atomically. If a replacement line fails, the previously saved line and outputs remain unchanged.

Lines are rejected when they are outside, tangent to the parcel, coincide with a boundary, stop inside the parcel, self-intersect, or cross the parcel enough times to produce other than two polygons.

3. Edit output details

Edit the parcel identifier, name, and eligible business attributes in the output detail fields. Geometry cannot be changed through these fields. Each output needs a unique parcel_id of no more than 50 characters, a name, and a valid parcel_type.

4. Validate the split

Select Save output details, then validate. PostGIS checks that:

  • a line split has exactly two outputs;
  • every output is one valid polygon;
  • output identifiers are present, unique, within length limits, and do not conflict with active parcel identifiers;
  • outputs do not materially overlap;
  • outputs form one polygon union; and
  • the output union reproduces the source within the configured area tolerance.

A gap, overlap, invalid ring, multipart union, or identifier conflict prevents submission.

Advanced output import

Use Advanced output geometry import only when proposed geometry was prepared in GIS software. Accepted files are:

  • one GeoPackage (.gpkg); or
  • one zipped Shapefile (.zip) containing matching .shp, .shx, .dbf, and .prj files.

The source layer must declare a projected CRS with known linear units and a valid transformation to the parcel storage CRS. A projected CRS using feet or another known linear unit is acceptable because the server reprojects it. Geographic, missing, unknown-unit, and non-transformable CRS inputs are rejected. If a GeoPackage has multiple polygon layers, provide the intended layer name.

GeoJSON and KML are export formats only. They cannot be imported into parcel or topology geometry workflows. A successful advanced import clears any saved split line and atomically replaces output geometry. A failed import preserves the prior line and outputs.

Merge parcels

1. Select the sources

A merge requires at least two current parcel versions from the same dataset.

  1. Select the parcels on a supported map or list page, or provide their UUIDs in selected_ids.
  2. Open /parcels/topology/.
  3. Choose Merge contiguous parcels.
  4. Confirm the Primary source for merge attributes. The first selected source is used by default.
  5. Select Create grouped request.

Creation is rejected unless the sources form one connected graph through positive-length shared boundaries. Parcels that meet only at a corner are not contiguous for this workflow.

2. Review the merged proposal

The request starts with one result proposal. Its geometry is the authoritative PostGIS union of the sources, and its initial attributes come from the primary source. The identifier and business attributes remain editable while the request is in DRAFT.

Select Save output details, then validate. Validation rejects:

  • fewer than two sources;
  • sources from different datasets;
  • a primary donor that is not one of the sources;
  • corner-only contact or disconnected source groups;
  • gaps or material source overlap;
  • invalid source geometry;
  • a multipart or invalid union; or
  • an edited output that differs from the accepted source union beyond tolerance.

Submit, review, and approve

Split and merge requests use one workflow state for the complete operation. Individual outputs cannot be submitted or approved separately.

  1. Editor: save outputs, validate, and select submit (DRAFT to SUBMITTED).
  2. Reviewer: select review-accept (SUBMITTED to REVIEWED) or reject with a reason.
  3. Approver: select final-approve (REVIEWED to APPROVED) or reject with a reason.

Eligible users can cancel an uncommitted request. Validation and action controls lock while a request is running to prevent duplicate submissions.

Final approval rechecks source state, conflicts, geometry, identifiers, and tolerance. It then performs one database transaction with one effective time:

  • all source versions become superseded;
  • every output becomes an official active parcel in a new identity chain;
  • one topology transaction is recorded; and
  • every source/result relationship receives a lineage edge.

If any validation or database write fails, the complete approval rolls back. No source is retired and no partial result or lineage record remains.

Find requests and history

The workflow queue is available at:

/parcels/workflow-tasks/

It presents ordinary parcel drafts and grouped topology requests together while keeping their underlying workflows separate.

Parcel detail pages distinguish:

  • History: versions in the same parcel identity chain;
  • Workflow History: topology actions, states, actors, and times; and
  • Topology / Lineage: links between retired sources and resulting parcels.

Historical map requests use half-open validity intervals. Sources are visible immediately before the approval effective time. Results replace them exactly at that time and remain visible afterward.

Common problems

Selection contains stale or unavailable parcels

The selected UUID is invalid, inaccessible, superseded, void, or outside the active dataset. Return to the parcel map/list, refresh the selection, and retry.

Source has an active ordinary parcel draft

Complete, reject, or cancel the ordinary draft before starting topology work.

Source has an active topology request

Open the existing request from the workflow queue and complete or cancel it.

Split outputs do not cover the source

Redraw one line that begins outside, crosses the parcel once, and finishes outside the opposite boundary. The previous accepted split remains saved after a failure.

Import reports a CRS or sidecar error

Confirm that the dataset declares a projected CRS with known linear units. For a Shapefile, include matching .shp, .shx, .dbf, and .prj files in one ZIP. For a multi-layer GeoPackage, enter the polygon layer name and retry.

Deferred split controls

Positioning a split by target area or percentage is not part of this increment. The supported split interaction is one user-drawn crossing line. Target-area and percentage positioning can be added later without changing the authoritative PostGIS split and validation rules.

Merge sources are not connected

Confirm that every source belongs to one connected group and that connections use a shared boundary segment, not only a corner point.

Proposed identifier already exists

Choose a unique identifier that does not belong to another active parcel in the same dataset.

Administrator settings

Administrators can inspect requests, events, and lineage through Django admin. The singleton Parcel Topology Settings record controls absolute and relative area tolerances. Approved requests retain the effective tolerance metadata used for final validation.