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
Editorrole. - Review requires the
Reviewerrole. - Final approval requires the
Approverrole. - 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.
- Select the parcel on a supported map or list page, or place its version UUID
in
selected_ids. - Open
/parcels/topology/. - Choose Split one parcel.
- Confirm the source UUID and optionally add notes.
- 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.
- Select Draw split line.
- Start the line outside the parcel, cross the parcel once, and finish outside the opposite boundary.
- Finish the line. The browser sends the line to the server.
- 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.prjfiles.
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.
- Select the parcels on a supported map or list page, or provide their UUIDs in
selected_ids. - Open
/parcels/topology/. - Choose Merge contiguous parcels.
- Confirm the Primary source for merge attributes. The first selected source is used by default.
- 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.
- Editor: save outputs, validate, and select submit (
DRAFTtoSUBMITTED). - Reviewer: select review-accept (
SUBMITTEDtoREVIEWED) or reject with a reason. - Approver: select final-approve (
REVIEWEDtoAPPROVED) 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.