Course · ← 0010 Where Geometry Lives · 0012 COGO → · engine layer
Lesson 0011 · ~15 minutes
Two parcels sharing a boundary is one line, not two — or it is two, and they disagree by four centimetres, forever. Topology is the machinery that decides which world you live in, and cluster tolerance is the dial that quietly rewrites your data.
Topology is the explicit encoding of spatial relationships — adjacency, connectivity, containment — as opposed to independent geometries that merely happen to look adjacent. PostGIS states the model plainly: it manages topological objects such as faces, edges and nodes, representing geographic data as interconnected primitives rather than independent geometries, so shared boundaries between polygons are represented once rather than duplicated.1
Two ways to get there. PostGIS Topology stores true primitives — nodes, edges, faces, with TopoGeometry objects referencing them, grouped into layers, with a snapping tolerance.1 Geodatabase topology keeps simple features and layers a validated rule set over them.
Geodatabase topology is a named set of rules over feature classes, validated on demand. The polygon rules include Must Not Overlap, Must Not Have Gaps, Must Not Overlap With, Must Be Covered By, Must Cover Each Other, Boundary Must Be Covered By, Must Be Covered By Feature Class Of, Contains Point, and Area Boundary Must Be Covered By Boundary Of.2
The five that matter for a cadastre:
| Rule | Enforces | Cadastral meaning |
|---|---|---|
| Must Not Overlap | No polygon covers part of another in the same class2 | Two parcels claiming the same ground — a dispute, not a drafting error |
| Must Not Have Gaps | No void between adjoining polygons | Unclaimed slivers between neighbours; often where a boundary conflict hides |
| Must Be Covered By | Features must fall inside features of another class | Parcels within their administrative block or adjudication area |
| Boundary Must Be Covered By | Polygon edges must coincide with lines in another class | Parcel boundaries agreeing with the surveyed boundary-line layer |
| Contains Point | Each polygon holds a point from another class | Every parcel has exactly one label/centroid point for the register |
Cluster tolerance is the minimum distance between vertices; vertices falling within it are treated as coincident.2 Validation then does something with real consequences: where a gap between features is larger than the cluster tolerance it is flagged as an error, but where it is smaller, the gap is auto-adjusted — the two boundaries cracked and clustered so they become coincident.3
Validation moves your coordinates. Anything under the tolerance is silently snapped together — no error, no review, no record. Set the tolerance too large and you have quietly redrawn boundaries that a surveyor measured and a family agreed to. Set it to the smallest value your data genuinely needs, decide it deliberately, and write it down in the project documentation.
Here is where the engine layer meets the doctrine from lesson 0002, and where a purely technical instinct goes wrong.
Under general boundaries, two neighbours' lines traced from imagery will disagree by a metre or two. That disagreement is honest — it reflects genuine uncertainty about where the hedge runs. A hard Must Not Have Gaps rule with a generous cluster tolerance will "fix" it by snapping, converting recorded uncertainty into false precision that now looks authoritative.
The defensible position is a split:
PostGIS Topology chapter — the clearest free statement of the primitive model (nodes, edges, faces, TopoGeometry, layers, tolerance), and it is SQL-MM standards-based rather than vendor-specific:
postgis.net/docs/Topology.html
For the rule catalogue, Esri's list is the practical reference even if you never run ArcGIS: polygon rules and polyline rules.