Feature Description
Errors inevitably occur during the collection and editing of spatial data. For example, the same node or the same line may be digitized twice, adjacent region objects may exhibit gaps, intersections, or lack of closure during collection. These errors often lead to topology errors such as pseudo nodes, redundant nodes, dangling lines, and duplicate lines, resulting in a mismatch between the topology of the collected spatial data and the actual topology of the features. This can affect subsequent data processing and analysis, and impact the quality and usability of the data. This tool can be used to check a dataset for topology errors, outputting objects from point, line, and region datasets themselves, or between different types of datasets, that violate the topology rules.
Parameter Description
| Parameter Name | Parameter Interpretation | Parameter Type |
|---|---|---|
| Source Dataset | The dataset to be checked for topology. | DatasetVector |
| Topology Rules | The check rules used during topology checking. For details, refer to the Topology Rules table below. | TopologyRule |
| Tolerance | Specifies the tolerance value required for calculations. The unit is the same as the source dataset's unit. The valid range is greater than or equal to 0; values less than 0 will throw an exception. Note: For the No Sharp Angles in Line and No Acute Angle in Region rules, this value represents an angle, measured in degrees. | Double |
| Repair Topology Error | If checked, errors detected by certain topology rules can be automatically repaired. See the table of rules that support automatic repair below for details. | Boolean |
| Area to Check (Optional) |
If the area to check is not specified, the system will default to performing the topology check on the entire dataset. Otherwise, the check is performed only on geometries within the source dataset that intersect with this region. | GeoRegion |
| Reference Dataset (Optional) |
Specifies the reference dataset used for checking. Depending on the topology rules, some rules use two datasets for checking (e.g., "Point Must On Line"), requiring a line dataset as the reference dataset. Other rules perform checks only within a single dataset (e.g., "No Overlap in Line"), in which case selecting a reference dataset is not required. | DatasetVector |
| Datasource of Result Dataset | Specifies the datasource where the result dataset will be stored. | Datasource |
| Resulting Dataset Name | Specifies the name of the resulting dataset. | String |
Topology Rules
| Check Rule | Rule Interpretation | Rule Code |
|---|---|---|
| No Overlap in Region | Checks whether any two (or more) region objects in a region dataset partially or completely overlap. This rule is often used for situations where an area cannot belong to two (or more) region objects simultaneously, such as administrative division regions, where one area cannot be governed by two administrative regions. The overlapping parts will be generated as topology errors in the result dataset. | 0 |
| No Gaps in Region | Checks for gaps between adjacent region objects in a region dataset, meaning the boundaries of adjacent region objects must coincide, and there must be no hollowed-out areas (donut polygons) within region objects. This rule is often used to check for undefined land use patches in datasets like land use map patch data. The gap areas will be generated as topology errors in the result dataset. | 1 |
| Region Inside Not Overlap Region | Checks whether any region objects in a region dataset overlap (partially or completely) with region objects in a reference region dataset, meaning there should be no intersections between region objects within the region dataset. This rule can be used for data like water bodies and dry land that cannot share the same area. | 2 |
| Region Covered by Regions | Checks whether any region objects in a region dataset are not completely covered by region objects in a reference region dataset, meaning one or more regions in the dataset to be checked must be entirely covered by region objects in the reference region dataset. This rule is often used for nested region data following a certain rule, such as ensuring a provincial boundary in a regional map is completely covered by all its county boundaries. | 3 |
| Region Covered by Region | Checks whether any region objects in a region dataset are not contained within a region object in a reference region dataset, meaning a region in the dataset to be checked must be a subset of a region object in the reference dataset. This rule can be used for region data with containment relationships, such as ensuring animal activity areas are within the entire study area. | 4 |
| Region Boundary Covered by Lines | Checks whether any region boundaries in a region dataset are not covered by lines in a reference line dataset. Region data might not store attributes for some boundary lines, requiring specialized boundary line data to store different attributes for region boundaries. This rule enforces complete coincidence between boundary lines and region boundaries. | 5 |
| Region Boundary Covered by Line | Checks whether any region boundaries in a region dataset are not covered by the boundary of one or more region objects in a reference region dataset. This rule is often used for data where region objects in one dataset are composed of one or more region objects from another dataset, such as a provincial boundary being formed by all its county boundaries, sharing the same borders. | 6 |
| Region Contains Point | Checks whether any region objects in a region dataset do not contain points from a reference point dataset, meaning points in the reference dataset must be located inside the region, not outside or on the boundary. One region object can contain one or more points. | 7 |
| No Intersect in Line | Checks whether any two (or more) line objects in a line dataset intersect and share an intersection point but are not split at that point. Cases where endpoints touch the interior of a line or endpoints touch endpoints are considered correct topology. Additionally, line objects that intersect but do not share an intersection point are also considered correct topology. For example, in road data, when multiple lanes intersect at a regular intersection (crossroads, T-junction, etc.), it's considered intersecting and sharing a point, and should be split. When multiple lanes intersect via an overpass or tunnel, it's considered intersecting without sharing a point, and splitting is not required. | 8 |
| No Overlap in Line | Checks whether any two (or more) line objects in a line dataset have overlapping parts that share nodes. For example, in city streets, single or multiple streets can intersect but cannot have identical routes. | 9 |
| No Dangles in Line | Checks whether any line objects in a line dataset are defined as dangling lines, meaning the endpoints of a line are not connected to the interior or endpoints of other lines, including both long and short dangles. This rule can be used to check lines that must be closed, such as region boundaries. | 10 |
| No Pseudo Nodes in Line | Checks whether any line objects in a line dataset contain pseudo nodes (nodes connecting only two arcs), meaning a line object must connect to two (or more) other line objects. | 11 |
| Line Not Overlap Line | Checks whether any line objects in a line dataset overlap with lines in a reference line dataset, with overlapping parts sharing nodes, meaning lines between two line datasets cannot have coincident parts. For example, in transportation route data, highways and railways cannot overlap. | 12 |
| No Intersects/Touches in Line | Checks whether any two (or more) line objects in a line dataset intersect at nodes or along their interiors, meaning line objects can only intersect with other lines at endpoints, all intersection points must be line endpoints, and all intersecting arcs must be split. This rule does not check for self-intersection of line objects. | 13 |
| No Self Overlap in Line | Checks whether any line objects in a line dataset overlap with themselves, meaning a line object itself cannot have overlapping parts. For example, in traffic data, a road cannot have duplicate segments. | 14 |
| No Self Intersect in Line | Checks whether any line objects in a line dataset intersect or overlap with themselves, meaning a line object cannot have overlapping (identical coordinate) nodes. This rule is often used to check lines like contour lines that must not intersect themselves. | 15 |
| Line Covered by Lines Fully | Checks whether any line objects in a line dataset are not fully covered by one or more lines in a reference line dataset. For example, a line must coincide with a road, i.e., be completely covered by the road data. | 16 |
| Line Covered by Region Boundary | Checks whether any line objects in a line dataset are not covered by the boundary of one or more region objects in a reference region dataset. For example, line data representing a specific region boundary (e.g., a city district boundary) must be covered by the boundary of that region (the city district). | 17 |
| Line Endpoint Covered by Point | Checks whether any line endpoints in a line dataset are not covered by points from a reference point dataset. Endpoints not covered will be generated as topology errors in the result dataset. | 18 |
| Point Must On Line | Checks whether any point objects in a point dataset are not covered by lines in a reference line dataset, meaning points must lie on the line objects of the reference line dataset, including on the line interior, nodes, and endpoints, but not outside the line. For example, toll stations on highways must be located on the highway. | 19 |
| Point On Region Boundary | Checks whether any point objects in a point dataset are not on the boundary of region objects in a reference region dataset, meaning point objects cannot be inside or outside the reference region data's area. For example, boundary markers must be placed on national and administrative boundaries. | 20 |
| Point Contained by Region | Checks whether any point objects in a point dataset are not inside region objects in a reference region dataset, meaning point objects cannot be outside or on the boundary of region objects in the reference region dataset. For example, points representing provincial capitals must be located within the provincial boundaries. | 21 |
| Point Covered by Line Endpoint | Checks whether any point objects in a point dataset are not covered by line endpoints in a reference line dataset, meaning points can only be at the endpoints of line objects in the reference line dataset, not on line nodes, elsewhere on the line interior, or outside the line. | 22 |
| No Complex Object | Checks whether a line or region dataset itself contains complex objects (objects containing one or more sub-objects, such as parallel lines). | 23 |
| No Identical Points | Checks whether a point dataset contains duplicate point objects. For example, public facilities like fire stations and schools are often represented as point datasets on maps, and only one should exist at the same location. | 24 |
| Point Not Within Region | Checks whether any point objects in a point dataset are contained by region objects in a reference region dataset. Points on the region boundary or outside the region are considered correct topology. | 25 |
| No Intersection Between Line and Polygon | Checks whether any line objects in a line dataset intersect with or are contained by region objects in a reference region dataset, meaning the line dataset and the reference region dataset should have no intersection. | 26 |
| Region Boundary Not Overlap | Checks whether any region boundaries in a region dataset have overlapping parts with the boundaries of region objects in a reference region dataset. This rule does not check for overlapping interior boundaries within a region. | 27 |
| No Self Intersect in Region | Region objects must not self-intersect internally. | 28 |
| Line Not Intersect with Line | Checks whether any line objects in a line dataset intersect with lines in a reference line dataset, meaning all line objects between the two line datasets must be separate from each other. | 29 |
| Vertex Distance > Tolerance | Checks whether the distance between vertices of objects within a point, line, or region dataset itself, or between two datasets, is less than or equal to the set tolerance value. | 30 |
| Vertex Exists at Line Intersect | Checks whether a vertex exists at the crossing intersection of lines within a line or region dataset itself, or between two datasets, and whether this vertex exists on at least one of the two intersecting line segments. The connection of two line object endpoints is considered correct topology. Note: The case where two line segment endpoints meet does not violate this rule. | 31 |
| Vertices Must Match | Checks whether, within the current vertex tolerance, for lines/regions within a dataset or between two datasets, and between point and line datasets or point and region datasets, there exists a line object (or region boundary) with a corresponding vertex matching a point. For unmatched points, the system calculates the position of the matching point by projecting a perpendicular onto the line. This matching point will be stored as a topology error in the result dataset. |
32 |
| L/R Has No Redundant Vertex | Checks whether line objects or region boundaries in a line or region dataset have redundant vertices, meaning no other collinear vertices should exist between two vertices, as these collinear vertices are redundant. | 33 |
| No Sharp Angles in Line | Checks whether any line objects in a line dataset have four consecutive vertices forming two adjacent angles that are both smaller than the given angle value (in degrees). If both angles are smaller than the threshold, the line is considered to have a kink at the middle two vertices. | 34 |
| No Short Dangles in Line | If the endpoint of an arc is not connected to the endpoint of any other arc, this endpoint is called a dangle point, and an arc containing a dangle point becomes a dangling line. This rule checks a line dataset for line objects with relatively short dangling parts. | 35 |
| No Long Dangles in Line | Checks a line dataset for line objects with relatively long dangling parts. | 36 |
| No Acute Angle in Region | Checks whether any region objects in a region dataset have acute angles smaller than a given angle. If the angle formed by three consecutive points is less than the given angle, it is judged as an acute angle. | 37 |
| Point Not Covered by Region | Checks for point objects in a point dataset (or point recordset) that are covered by (located on the boundary or inside) an object in a region dataset (or region recordset). For example, checking building footprints against water surface elevation points, where elevation points must not be inside or on the boundary of building footprints. | 38 |
| No Sharp Angles in the Line | Checks whether any line objects in a line dataset have angles smaller than a given angle. If the angle formed by three consecutive points is less than the given angle, it is judged as a sharp angle. | 39 |
Rules that Support Automatic Topology Error Repair
| Topology Rules | Repair Method |
|---|---|
| No Pseudo Nodes in Line | Converts pseudo nodes into regular nodes, i.e., merges the two lines connected by the pseudo node into a single line. |
| L/R Has No Redundant Vertex | Deletes redundant vertices on lines or region boundaries. |
| Line Not Overlap Line | If a line object in the dataset to be checked overlaps with a line object in the reference dataset, the overlapping part of that line object in the dataset to be checked is deleted. |
| No Self Overlap in Line | Deletes the self-overlapping part of the line object. |
| No Overlap in Line | Deletes the overlapping part from one of the line objects. |
| Vertex Distance > Tolerance | Snaps all nodes within the tolerance range together, i.e., merges them into a single node. |
| Vertices Must Match | Adds matching vertices onto the line object. |
| Vertex Exists at Line Intersect | Adds intersection points at the crossing points of the two line segments respectively. |
| No Overlap in Region | Deletes the overlapping part from one of the region objects. |
| No Identical Points | For points with identical spatial locations, one is randomly retained. |
Output Result
| Parameter Name | Parameter Interpretation | Parameter Type |
|---|---|---|
| Source (Repaired) Dataset | If topology error repair was performed, outputs the repaired source dataset. If not repaired, outputs the original source dataset. | DatasetVector |
| Check Result Dataset | The dataset containing the detected topology errors. | DatasetVector |
Notes
- Function Change: Starting from SuperMap 2025, the result dataset will include a new field named `TopoRuleCode` to record the topology check rule code.