Skip to content

Commit f8693b2

Browse files
committed
Add optional ENDPOINTS_ONLY setting for validate network algorithm
If checked, topology checks (node-to-node and node-to-segment) will only be evaluated for nodes that are topological dead-ends (connected to only one other distinct node).
1 parent 04deae5 commit f8693b2

File tree

8 files changed

+403
-2
lines changed

8 files changed

+403
-2
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<ogr:FeatureCollection
3+
gml:id="aFeatureCollection"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://ogr.maptools.org/ network_validation2.xsd"
6+
xmlns:ogr="http://ogr.maptools.org/"
7+
xmlns:gml="http://www.opengis.net/gml/3.2">
8+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746156.5866746 -2572857.92671934</gml:lowerCorner><gml:upperCorner>16746341.1556779 -2572689.95064064</gml:upperCorner></gml:Envelope></gml:boundedBy>
9+
10+
<ogr:featureMember>
11+
<ogr:network_validation2 gml:id="network_validation2.0">
12+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746156.5866746 -2572804.47752473</gml:lowerCorner><gml:upperCorner>16746183.0159555 -2572726.16854416</gml:upperCorner></gml:Envelope></gml:boundedBy>
13+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.0"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.0.0"><gml:posList>16746158.5443991 -2572804.47752473 16746156.5866746 -2572759.64563335 16746183.0159555 -2572726.16854416</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
14+
</ogr:network_validation2>
15+
</ogr:featureMember>
16+
<ogr:featureMember>
17+
<ogr:network_validation2 gml:id="network_validation2.1">
18+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746183.3681298 -2572725.78515921</gml:lowerCorner><gml:upperCorner>16746267.9811994 -2572689.95064064</gml:upperCorner></gml:Envelope></gml:boundedBy>
19+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.1"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.1.0"><gml:posList>16746183.3681298 -2572725.78515921 16746205.1382425 -2572701.30544283 16746233.9167929 -2572689.95064064 16746267.9811994 -2572690.34218555</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
20+
</ogr:network_validation2>
21+
</ogr:featureMember>
22+
<ogr:featureMember>
23+
<ogr:network_validation2 gml:id="network_validation2.2">
24+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746242.3489343 -2572821.47118862</gml:lowerCorner><gml:upperCorner>16746341.1556779 -2572751.29823598</gml:upperCorner></gml:Envelope></gml:boundedBy>
25+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.2"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.2.0"><gml:posList>16746242.3489343 -2572751.29823598 16746253.0361943 -2572783.96495531 16746263.7234543 -2572804.5328897 16746293.163831 -2572816.22838181 16746341.1556779 -2572821.47118862</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
26+
</ogr:network_validation2>
27+
</ogr:featureMember>
28+
<ogr:featureMember>
29+
<ogr:network_validation2 gml:id="network_validation2.3">
30+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746249.7587206 -2572822.59602976</gml:lowerCorner><gml:upperCorner>16746263.4539286 -2572805.11278546</gml:upperCorner></gml:Envelope></gml:boundedBy>
31+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.3"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.3.0"><gml:posList>16746263.4539286 -2572805.11278546 16746257.5614277 -2572808.25329416 16746252.1869489 -2572813.33638556 16746249.7587206 -2572822.59602976</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
32+
</ogr:network_validation2>
33+
</ogr:featureMember>
34+
<ogr:featureMember>
35+
<ogr:network_validation2 gml:id="network_validation2.4">
36+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746281.4821817 -2572769.13266311</gml:lowerCorner><gml:upperCorner>16746326.8322812 -2572753.46129882</gml:upperCorner></gml:Envelope></gml:boundedBy>
37+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.4"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.4.0"><gml:posList>16746281.4821817 -2572753.46129882 16746282.8635185 -2572757.83553188 16746288.0051608 -2572764.97243846 16746288.3306063 -2572765.23815194 16746288.7725701 -2572765.47922315 16746289.1475698 -2572765.59975875 16746289.7234621 -2572765.66672298 16746305.1638011 -2572769.13266311 16746326.8322812 -2572766.30633962</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
38+
</ogr:network_validation2>
39+
</ogr:featureMember>
40+
<ogr:featureMember>
41+
<ogr:network_validation2 gml:id="network_validation2.5">
42+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746175.8736316 -2572855.0859512</gml:lowerCorner><gml:upperCorner>16746189.4322811 -2572823.8199957</gml:upperCorner></gml:Envelope></gml:boundedBy>
43+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.5"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.5.0"><gml:posList>16746178.0138018 -2572855.0859512 16746175.8736316 -2572838.25978572 16746182.8845339 -2572827.04234206</gml:posList></gml:LineString></gml:curveMember><gml:curveMember><gml:LineString gml:id="network_validation2.geom.5.1"><gml:posList>16746183.0361021 -2572826.82042197 16746184.8201394 -2572825.31007226 16746184.9823246 -2572825.25938938 16746185.1343732 -2572825.23911623 16746189.4322811 -2572823.8199957</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
44+
</ogr:network_validation2>
45+
</ogr:featureMember>
46+
<ogr:featureMember>
47+
<ogr:network_validation2 gml:id="network_validation2.6">
48+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746291.3981343 -2572746.07051004</gml:lowerCorner><gml:upperCorner>16746309.5346981 -2572737.78071173</gml:upperCorner></gml:Envelope></gml:boundedBy>
49+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.6"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.6.0"><gml:posList>16746291.3981343 -2572739.63224029 16746301.707782 -2572737.78071173 16746305.9999618 -2572739.00103737 16746309.5346981 -2572746.07051004</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
50+
</ogr:network_validation2>
51+
</ogr:featureMember>
52+
<ogr:featureMember>
53+
<ogr:network_validation2 gml:id="network_validation2.7">
54+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746299.0988099 -2572737.44407017</gml:lowerCorner><gml:upperCorner>16746310.5025426 -2572732.7310884</gml:upperCorner></gml:Envelope></gml:boundedBy>
55+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.7"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.7.0"><gml:posList>16746299.0988099 -2572732.7310884 16746299.5196118 -2572735.0034189 16746301.7498622 -2572737.44407017 16746303.9380323 -2572737.35990978 16746310.5025426 -2572734.49845656</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
56+
</ogr:network_validation2>
57+
</ogr:featureMember>
58+
<ogr:featureMember>
59+
<ogr:network_validation2 gml:id="network_validation2.8">
60+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746232.8050663 -2572856.88385642</gml:lowerCorner><gml:upperCorner>16746249.7159666 -2572848.19988364</gml:upperCorner></gml:Envelope></gml:boundedBy>
61+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.8"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.8.0"><gml:posList>16746232.8050663 -2572856.88385642 16746242.6849224 -2572855.83929014 16746247.341947 -2572853.01025645 16746249.7159666 -2572848.19988364</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
62+
</ogr:network_validation2>
63+
</ogr:featureMember>
64+
<ogr:featureMember>
65+
<ogr:network_validation2 gml:id="network_validation2.9">
66+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746241.6215465 -2572849.80881976</gml:lowerCorner><gml:upperCorner>16746262.9257901 -2572839.99656082</gml:upperCorner></gml:Envelope></gml:boundedBy>
67+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.9"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.9.0"><gml:posList>16746241.6215465 -2572839.99656082 16746242.9187604 -2572844.28734524 16746246.5941998 -2572846.93166587 16746252.4482933 -2572849.30989134 16746258.202601 -2572849.80881976 16746262.9257901 -2572849.52609366</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
68+
</ogr:network_validation2>
69+
</ogr:featureMember>
70+
<ogr:featureMember>
71+
<ogr:network_validation2 gml:id="network_validation2.10">
72+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746283.5980866 -2572857.92671934</gml:lowerCorner><gml:upperCorner>16746306.7329207 -2572841.97176287</gml:upperCorner></gml:Envelope></gml:boundedBy>
73+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.10"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.10.0"><gml:posList>16746283.5980866 -2572857.92671934 16746293.4779427 -2572856.88215306 16746298.1349673 -2572854.05311938 16746300.5089869 -2572849.24274657 16746302.3720763 -2572845.82700215 16746306.7329207 -2572841.97176287</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
74+
</ogr:network_validation2>
75+
</ogr:featureMember>
76+
<ogr:featureMember>
77+
<ogr:network_validation2 gml:id="network_validation2.11">
78+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746292.4145668 -2572850.85168269</gml:lowerCorner><gml:upperCorner>16746313.7188104 -2572841.03942375</gml:upperCorner></gml:Envelope></gml:boundedBy>
79+
<ogr:geometryProperty><gml:MultiCurve srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation2.geom.11"><gml:curveMember><gml:LineString gml:id="network_validation2.geom.11.0"><gml:posList>16746292.4145668 -2572841.03942375 16746293.7117807 -2572845.33020816 16746297.3872201 -2572847.9745288 16746303.2413135 -2572850.35275427 16746308.9956213 -2572850.85168269 16746313.7188104 -2572850.56895658</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></ogr:geometryProperty>
80+
</ogr:network_validation2>
81+
</ogr:featureMember>
82+
</ogr:FeatureCollection>
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<xs:schema
3+
targetNamespace="http://ogr.maptools.org/"
4+
xmlns:ogr="http://ogr.maptools.org/"
5+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
6+
xmlns:gml="http://www.opengis.net/gml/3.2"
7+
xmlns:gmlsf="http://www.opengis.net/gmlsf/2.0"
8+
elementFormDefault="qualified"
9+
version="1.0">
10+
<xs:annotation>
11+
<xs:appinfo source="http://schemas.opengis.net/gmlsfProfile/2.0/gmlsfLevels.xsd">
12+
<gmlsf:ComplianceLevel>0</gmlsf:ComplianceLevel>
13+
</xs:appinfo>
14+
</xs:annotation>
15+
<xs:import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/>
16+
<xs:import namespace="http://www.opengis.net/gmlsf/2.0" schemaLocation="http://schemas.opengis.net/gmlsfProfile/2.0/gmlsfLevels.xsd"/>
17+
<xs:element name="FeatureCollection" type="ogr:FeatureCollectionType" substitutionGroup="gml:AbstractFeature"/>
18+
<xs:complexType name="FeatureCollectionType">
19+
<xs:complexContent>
20+
<xs:extension base="gml:AbstractFeatureType">
21+
<xs:sequence minOccurs="0" maxOccurs="unbounded">
22+
<xs:element name="featureMember">
23+
<xs:complexType>
24+
<xs:complexContent>
25+
<xs:extension base="gml:AbstractFeatureMemberType">
26+
<xs:sequence>
27+
<xs:element ref="gml:AbstractFeature"/>
28+
</xs:sequence>
29+
</xs:extension>
30+
</xs:complexContent>
31+
</xs:complexType>
32+
</xs:element>
33+
</xs:sequence>
34+
</xs:extension>
35+
</xs:complexContent>
36+
</xs:complexType>
37+
<xs:element name="network_validation2" type="ogr:network_validation2_Type" substitutionGroup="gml:AbstractFeature"/>
38+
<xs:complexType name="network_validation2_Type">
39+
<xs:complexContent>
40+
<xs:extension base="gml:AbstractFeatureType">
41+
<xs:sequence>
42+
<xs:element name="geometryProperty" type="gml:MultiCurvePropertyType" nillable="true" minOccurs="0" maxOccurs="1"/> <!-- restricted to MultiLineString --><!-- srsName="urn:ogc:def:crs:EPSG::3857" -->
43+
</xs:sequence>
44+
</xs:extension>
45+
</xs:complexContent>
46+
</xs:complexType>
47+
</xs:schema>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<ogr:FeatureCollection
3+
gml:id="aFeatureCollection"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://ogr.maptools.org/ network_validation_all_nodes.xsd"
6+
xmlns:ogr="http://ogr.maptools.org/"
7+
xmlns:gml="http://www.opengis.net/gml/3.2">
8+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746182.8845339 -2572849.24274657</gml:lowerCorner><gml:upperCorner>16746301.7498622 -2572725.78515921</gml:upperCorner></gml:Envelope></gml:boundedBy>
9+
10+
<ogr:featureMember>
11+
<ogr:network_validation_all_nodes gml:id="network_validation_all_nodes.0">
12+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746183.0159555 -2572726.16854416</gml:lowerCorner><gml:upperCorner>16746183.3681298 -2572725.78515921</gml:upperCorner></gml:Envelope></gml:boundedBy>
13+
<ogr:geometryProperty><gml:LineString srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation_all_nodes.geom.0"><gml:posList>16746183.0159555 -2572726.16854416 16746183.3681298 -2572725.78515921</gml:posList></gml:LineString></ogr:geometryProperty>
14+
<ogr:error>Node too close to adjacent node (0.520587 &lt; 1)</ogr:error>
15+
</ogr:network_validation_all_nodes>
16+
</ogr:featureMember>
17+
<ogr:featureMember>
18+
<ogr:network_validation_all_nodes gml:id="network_validation_all_nodes.1">
19+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746263.4539286 -2572805.11278546</gml:lowerCorner><gml:upperCorner>16746263.7234543 -2572804.5328897</gml:upperCorner></gml:Envelope></gml:boundedBy>
20+
<ogr:geometryProperty><gml:LineString srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation_all_nodes.geom.1"><gml:posList>16746263.7234543 -2572804.5328897 16746263.4539286 -2572805.11278546</gml:posList></gml:LineString></ogr:geometryProperty>
21+
<ogr:error>Node too close to adjacent node (0.639471 &lt; 1)</ogr:error>
22+
</ogr:network_validation_all_nodes>
23+
</ogr:featureMember>
24+
<ogr:featureMember>
25+
<ogr:network_validation_all_nodes gml:id="network_validation_all_nodes.2">
26+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746182.8845339 -2572827.04234206</gml:lowerCorner><gml:upperCorner>16746183.0361021 -2572826.82042197</gml:upperCorner></gml:Envelope></gml:boundedBy>
27+
<ogr:geometryProperty><gml:LineString srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation_all_nodes.geom.2"><gml:posList>16746182.8845339 -2572827.04234206 16746183.0361021 -2572826.82042197</gml:posList></gml:LineString></ogr:geometryProperty>
28+
<ogr:error>Node too close to adjacent node (0.26874 &lt; 1)</ogr:error>
29+
</ogr:network_validation_all_nodes>
30+
</ogr:featureMember>
31+
<ogr:featureMember>
32+
<ogr:network_validation_all_nodes gml:id="network_validation_all_nodes.3">
33+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746301.707782 -2572737.78071173</gml:lowerCorner><gml:upperCorner>16746301.7498622 -2572737.44407017</gml:upperCorner></gml:Envelope></gml:boundedBy>
34+
<ogr:geometryProperty><gml:LineString srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation_all_nodes.geom.3"><gml:posList>16746301.707782 -2572737.78071173 16746301.7498622 -2572737.44407017</gml:posList></gml:LineString></ogr:geometryProperty>
35+
<ogr:error>Node too close to adjacent node (0.339261 &lt; 1)</ogr:error>
36+
</ogr:network_validation_all_nodes>
37+
</ogr:featureMember>
38+
<ogr:featureMember>
39+
<ogr:network_validation_all_nodes gml:id="network_validation_all_nodes.4">
40+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746249.7159666 -2572848.19988364</gml:lowerCorner><gml:upperCorner>16746249.7159666 -2572848.19988364</gml:upperCorner></gml:Envelope></gml:boundedBy>
41+
<ogr:geometryProperty><gml:LineString srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation_all_nodes.geom.4"><gml:posList>16746249.7159666 -2572848.19988364 16746249.7159666 -2572848.19988364</gml:posList></gml:LineString></ogr:geometryProperty>
42+
<ogr:error>Node too close to non-noded segment (0 &lt; 1)</ogr:error>
43+
</ogr:network_validation_all_nodes>
44+
</ogr:featureMember>
45+
<ogr:featureMember>
46+
<ogr:network_validation_all_nodes gml:id="network_validation_all_nodes.5">
47+
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::3857"><gml:lowerCorner>16746300.5089869 -2572849.24274657</gml:lowerCorner><gml:upperCorner>16746300.5089869 -2572849.24274657</gml:upperCorner></gml:Envelope></gml:boundedBy>
48+
<ogr:geometryProperty><gml:LineString srsName="urn:ogc:def:crs:EPSG::3857" gml:id="network_validation_all_nodes.geom.5"><gml:posList>16746300.5089869 -2572849.24274657 16746300.5089869 -2572849.24274657</gml:posList></gml:LineString></ogr:geometryProperty>
49+
<ogr:error>Node too close to non-noded segment (0 &lt; 1)</ogr:error>
50+
</ogr:network_validation_all_nodes>
51+
</ogr:featureMember>
52+
</ogr:FeatureCollection>

0 commit comments

Comments
 (0)