Parcel Fabric Topology Compliance
Purpose
Parcel Fabric Topology Compliance validates cadastral parcel and administrative boundary topology, detects overlaps and gaps, and enforces compliance with land fabric standards enabling authoritative reference data maintenance.
Typical Questions This Tool Helps Answer
- Which parcels violate topology rules (overlaps, gaps, slivers) and where are they located?
- Will our parcel fabric pass jurisdiction-specific quality thresholds before publication?
- What can be safely auto-fixed now versus what requires manual cadastral review?
Background
Network planning workflows use graph-theoretic representations of roads, routes, or linear assets, where node-edge topology and impedance attribution directly control results. Missing restrictions, incorrect turn logic, or stale demand assumptions can dominate outcome quality.
These tools are best interpreted as constrained optimization and diagnostics frameworks. Decisions should be based on trade-offs across service, resilience, and cost objectives rather than any single metric.
Land-fabric topology compliance checks enforce geometric and adjacency integrity so downstream governance and analytics are legally and operationally defensible. Error classes should be triaged by business impact.
Methodological Considerations
- Topology validation should precede optimization or scenario simulation.
- Explicitly represent operational constraints (time windows, restrictions, capacities, closures) before comparing objective outcomes.
- Test outcomes under stress scenarios so selected plans remain stable under realistic disruptions.
Practical Interpretation Pitfalls
Single-metric improvements can hide degraded resilience or equity; compare candidate plans across multiple KPIs and scenario conditions.
Inputs
| Argument | Type | Required | Geometry / Type Constraints | Description |
|---|---|---|---|---|
| parcels | Vector | Yes | Must contain polygon or multipolygon geometry. If CRS metadata is present, it must be projected. | Parcel layer to audit and optionally auto-fix. |
For sliver detection, the workflow first measures parcel area from geometry. If that is unavailable, it falls back to an existing area field named gis_area, shape_area, shape_starea__, st_area, or area.
Parameters
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| min_sliver_area | Float | No | 1.0 for generic, 2.0 for ontario_mpac when omitted | Parcels smaller than this area are counted as slivers. |
| auto_fix | Boolean | No | false | Enables auto-fix output. If set to true, corrected_parcels becomes required. |
| jurisdiction_template | String | No | generic | Supported values: generic, ontario_mpac. Sets the default sliver threshold profile. |
| topology_violations | Vector output path | Yes | None | Output path for the point violations layer. |
| issues_csv | CSV output path | Yes | None | Output path for the feature-level topology issue report. |
| compliance_report | JSON output path | Yes | None | Output path for the workflow compliance summary JSON. |
| corrected_parcels | Vector output path | Conditional | None | Required only when auto_fix=true. |
| remediation_queue_csv | CSV output path | No | None | Optional prioritized remediation queue. |
| html_report | HTML output path | No | None | Optional HTML dashboard version of the report. |
Outputs
Output artifact keys below are runtime outputs, not input parameters.
| Artifact | Runtime Output Key | Type | What It Contains |
|---|---|---|---|
| Topology violations layer | topology_violations | Point vector | One feature per rule violation, with fields RULE_ID, RULE_TYPE, SEVERITY, CONFIDENCE, FEATURE_FID, RELATED_FID, and DETAIL. |
| Feature issues report | issues_csv | CSV | Header is exactly feature_fid,geometry_type,issue_type,detail. This is the feature-level geometry/topology issue list. |
| Compliance contract | compliance_report | JSON | Keys include workflow, jurisdiction_template, parcel counts, rule counts, sliver counts, sliver_examples, sliver_calibration_profile, auto_fix_enabled, autofix_changes_applied, pass_fail, and outputs. |
| Summary alias | summary | JSON | Alias key to the same JSON file as compliance_report. |
| Corrected parcels layer | corrected_parcels | Vector | Optional corrected parcel layer written only when auto-fix is enabled. |
| Remediation queue | remediation_queue_csv | CSV | Header is exactly priority,issue_type,rule_or_code,count,recommended_action. Used for operational follow-up. |
| Optional report | html_report | HTML | Optional dashboard rendering of the compliance report. |
Important JSON report fields
| Key | Meaning |
|---|---|
pass_fail | true only when there are no topology violations and no sliver parcels in the pre-fix analysis. |
sliver_examples | Up to 20 example parcels, each with fid and area. |
sliver_calibration_profile | Threshold summary array with threshold_area, count, and share_pct. |
outputs | Paths to topology_violations, issues_csv, corrected_parcels, and remediation_queue_csv. |
Returned payload keys
The workflow returns these output keys:
topology_violationsissues_csvcompliance_reportsummary(same file ascompliance_report)corrected_parcelswhen auto-fix is enabledremediation_queue_csvwhen requestedhtml_reportwhen requested
Example
import whitebox_workflows as wbw
env = wbw.WbEnvironment()
env.parcel_and_land_fabric_topology_compliance_workflow(
parcels="county_parcels.gpkg",
jurisdiction_template="ontario_mpac",
min_sliver_area=2.0,
auto_fix=True,
topology_violations="/tmp/parcel_violations.gpkg",
issues_csv="/tmp/parcel_issues.csv",
compliance_report="/tmp/parcel_compliance.json",
corrected_parcels="/tmp/parcel_corrected.gpkg",
remediation_queue_csv="/tmp/parcel_remediation_queue.csv",
html_report="/tmp/parcel_compliance_report.html",
)
References
- NSDI cadastral data standards
- Ontario MPAC parcel-fabric operating practices reflected by the
ontario_mpactemplate
Parameter Interaction Notes
- If you omit
min_sliver_area, the workflow uses the default attached tojurisdiction_template. - If you supply
min_sliver_area, that explicit value overrides the template default. pass_failand rule counts are based on the pre-fix audit stage, even whenauto_fix=true.sliver_calibration_profileis useful for deciding whether your current sliver threshold is too aggressive or too permissive.
QA and Acceptance Criteria
- Confirm the parcel layer is polygon or multipolygon geometry in a projected CRS.
- Confirm the example arguments match the runtime names exactly.
- Verify
issues_csvuses the headerfeature_fid,geometry_type,issue_type,detail. - Verify
topology_violationscontains the documented fields. - Verify
compliance_reportincludes the documented keys, includingpass_failandsliver_calibration_profile. - If auto-fix is enabled, verify
corrected_parcelsexists andauto_fix_enabled=truein the JSON report. - If
remediation_queue_csvis requested, verify its header ispriority,issue_type,rule_or_code,count,recommended_action.
The workflow fails if the parcel layer is unreadable, not polygonal, not projected when CRS metadata is known, missing required output arguments, missing corrected_parcels while auto_fix=true, or uses an unsupported jurisdiction_template.
Advanced Operational Guidance
- Review
issues_csvandtopology_violationstogether. The CSV is better for spreadsheet triage; the point layer is better for map review. - Be cautious when increasing
min_sliver_area. Small valid parcels can be reclassified as remediation items if the threshold is too high. - Use auto-fix only inside a controlled review workflow. It helps with cleanup, but it does not replace parcel governance.
- If you intend to standardize thresholds across jurisdictions, compare calibration profiles first rather than copying one template blindly.
Implementation Patterns
- Baseline audit: run without auto-fix to produce the compliance package.
- Review triage: add
remediation_queue_csvto split overlap, gap, and sliver work. - Controlled cleanup: enable auto-fix, review
autofix_changes_applied, then rerun the workflow if you need a refreshed compliance status. - Threshold calibration: compare multiple
min_sliver_areasettings before locking a program standard.
Related Tools
topology_validation_reporttopology_rule_validatetopology_rule_autofixcrs_harmonization
When To Use This Workflow
Use this workflow when parcel-fabric maintenance needs a complete QA package rather than a one-off geometry repair. It is especially useful when you need to separate geometry QA, rule-based violations, sliver threshold review, and remediation planning into one repeatable deliverable.
What this workflow helps you do:
- Measure parcel-fabric compliance in a repeatable way.
- Prioritize cleanup work by issue type.
- Document pre-fix condition separately from remediation activity.
Results Delivery Checklist
- Deliver
issues_csv,topology_violations, andcompliance_reporttogether. - State clearly whether
genericorontario_mpacdefaults were used. - If auto-fix was enabled, call out that compliance metrics describe the pre-fix state.
- Review
sliver_calibration_profilebefore finalizing any policy recommendation around sliver thresholds. - Include
remediation_queue_csvwhen the next step is operational cleanup assignment.
Common Questions
Q: Why can pass_fail still be false even when corrected_parcels was written successfully?
A: Because pass_fail reflects the pre-fix audit result. Auto-fix activity is reported separately through auto_fix_enabled and autofix_changes_applied.
Q: What does share_pct in sliver_calibration_profile mean?
A: It is the share of parcels smaller than each threshold in the calibration table. It helps you choose a threshold; it is not a legal compliance label by itself.
Q: Which setting most strongly affects sliver findings?
A: min_sliver_area. Even small changes can noticeably increase or decrease sliver_count, especially in dense urban fabrics.
Q: How should operations use remediation_queue_csv?
A: Use it to assign overlap, gap, and sliver work by priority. It is a work-planning output, not a substitute for the feature-level details in issues_csv.