-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
By default, validity check should treat ring self intersections as in…
…valid We use the OGC definition of validity to ensure consistent results with PostGIS, GDAL, etc Fixes #16418, fixes #21336 (cherry picked from commit 4e04d02)
- Loading branch information
1 parent
82f8eb0
commit 25a42a9
Showing
14 changed files
with
213 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file modified
BIN
+0 Bytes
(100%)
python/plugins/processing/tests/testdata/custom/circular_strings.gpkg
Binary file not shown.
19 changes: 19 additions & 0 deletions
19
python/plugins/processing/tests/testdata/custom/poly_ring_self_intersection.gml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,19 @@ | |||
<?xml version="1.0" encoding="utf-8" ?> | |||
<ogr:FeatureCollection | |||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
xsi:schemaLocation="http://ogr.maptools.org/ poly_ring_self_intersection.xsd" | |||
xmlns:ogr="http://ogr.maptools.org/" | |||
xmlns:gml="http://www.opengis.net/gml"> | |||
<gml:boundedBy> | |||
<gml:Box> | |||
<gml:coord><gml:X>200</gml:X><gml:Y>200</gml:Y></gml:coord> | |||
<gml:coord><gml:X>400</gml:X><gml:Y>400</gml:Y></gml:coord> | |||
</gml:Box> | |||
</gml:boundedBy> | |||
|
|||
<gml:featureMember> | |||
<ogr:poly_ring_self_intersection fid="poly_ring_self_intersection.0"> | |||
<ogr:geometryProperty><gml:Polygon srsName="EPSG:28356"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>200,400 400,400 400,200 300,200 350,250 250,250 300,200 200,200 200,400</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty> | |||
</ogr:poly_ring_self_intersection> | |||
</gml:featureMember> | |||
</ogr:FeatureCollection> |
23 changes: 23 additions & 0 deletions
23
python/plugins/processing/tests/testdata/custom/poly_ring_self_intersection.xsd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,23 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<xs:schema targetNamespace="http://ogr.maptools.org/" xmlns:ogr="http://ogr.maptools.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" version="1.0"> | |||
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/2.1.2/feature.xsd"/> | |||
<xs:element name="FeatureCollection" type="ogr:FeatureCollectionType" substitutionGroup="gml:_FeatureCollection"/> | |||
<xs:complexType name="FeatureCollectionType"> | |||
<xs:complexContent> | |||
<xs:extension base="gml:AbstractFeatureCollectionType"> | |||
<xs:attribute name="lockId" type="xs:string" use="optional"/> | |||
<xs:attribute name="scope" type="xs:string" use="optional"/> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
<xs:element name="poly_ring_self_intersection" type="ogr:poly_ring_self_intersection_Type" substitutionGroup="gml:_Feature"/> | |||
<xs:complexType name="poly_ring_self_intersection_Type"> | |||
<xs:complexContent> | |||
<xs:extension base="gml:AbstractFeatureType"> | |||
<xs:sequence> | |||
<xs:element name="geometryProperty" type="gml:PolygonPropertyType" nillable="true" minOccurs="0" maxOccurs="1"/> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:schema> |
20 changes: 20 additions & 0 deletions
20
python/plugins/processing/tests/testdata/expected/poly_ring_self_intersection_error.gml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,20 @@ | |||
<?xml version="1.0" encoding="utf-8" ?> | |||
<ogr:FeatureCollection | |||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
xsi:schemaLocation="http://ogr.maptools.org/ poly_ring_self_intersection_error.xsd" | |||
xmlns:ogr="http://ogr.maptools.org/" | |||
xmlns:gml="http://www.opengis.net/gml"> | |||
<gml:boundedBy> | |||
<gml:Box> | |||
<gml:coord><gml:X>300</gml:X><gml:Y>200</gml:Y></gml:coord> | |||
<gml:coord><gml:X>300</gml:X><gml:Y>200</gml:Y></gml:coord> | |||
</gml:Box> | |||
</gml:boundedBy> | |||
|
|||
<gml:featureMember> | |||
<ogr:poly_ring_self_intersection_error fid="poly_ring_self_intersection_error.0"> | |||
<ogr:geometryProperty><gml:Point srsName="EPSG:28356"><gml:coordinates>300,200</gml:coordinates></gml:Point></ogr:geometryProperty> | |||
<ogr:message>Ring self-intersection</ogr:message> | |||
</ogr:poly_ring_self_intersection_error> | |||
</gml:featureMember> | |||
</ogr:FeatureCollection> |
30 changes: 30 additions & 0 deletions
30
python/plugins/processing/tests/testdata/expected/poly_ring_self_intersection_error.xsd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,30 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<xs:schema targetNamespace="http://ogr.maptools.org/" xmlns:ogr="http://ogr.maptools.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" version="1.0"> | |||
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/2.1.2/feature.xsd"/> | |||
<xs:element name="FeatureCollection" type="ogr:FeatureCollectionType" substitutionGroup="gml:_FeatureCollection"/> | |||
<xs:complexType name="FeatureCollectionType"> | |||
<xs:complexContent> | |||
<xs:extension base="gml:AbstractFeatureCollectionType"> | |||
<xs:attribute name="lockId" type="xs:string" use="optional"/> | |||
<xs:attribute name="scope" type="xs:string" use="optional"/> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
<xs:element name="poly_ring_self_intersection_error" type="ogr:poly_ring_self_intersection_error_Type" substitutionGroup="gml:_Feature"/> | |||
<xs:complexType name="poly_ring_self_intersection_error_Type"> | |||
<xs:complexContent> | |||
<xs:extension base="gml:AbstractFeatureType"> | |||
<xs:sequence> | |||
<xs:element name="geometryProperty" type="gml:PointPropertyType" nillable="true" minOccurs="0" maxOccurs="1"/> | |||
<xs:element name="message" nillable="true" minOccurs="0" maxOccurs="1"> | |||
<xs:simpleType> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="255"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:schema> |
20 changes: 20 additions & 0 deletions
20
python/plugins/processing/tests/testdata/expected/poly_ring_self_intersection_invalid.gml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,20 @@ | |||
<?xml version="1.0" encoding="utf-8" ?> | |||
<ogr:FeatureCollection | |||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
xsi:schemaLocation="http://ogr.maptools.org/ poly_ring_self_intersection_invalid.xsd" | |||
xmlns:ogr="http://ogr.maptools.org/" | |||
xmlns:gml="http://www.opengis.net/gml"> | |||
<gml:boundedBy> | |||
<gml:Box> | |||
<gml:coord><gml:X>200</gml:X><gml:Y>200</gml:Y></gml:coord> | |||
<gml:coord><gml:X>400</gml:X><gml:Y>400</gml:Y></gml:coord> | |||
</gml:Box> | |||
</gml:boundedBy> | |||
|
|||
<gml:featureMember> | |||
<ogr:poly_ring_self_intersection_invalid fid="poly_ring_self_intersection.0"> | |||
<ogr:geometryProperty><gml:Polygon srsName="EPSG:28356"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>200,400 400,400 400,200 300,200 350,250 250,250 300,200 200,200 200,400</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty> | |||
<ogr:_errors>Ring self-intersection</ogr:_errors> | |||
</ogr:poly_ring_self_intersection_invalid> | |||
</gml:featureMember> | |||
</ogr:FeatureCollection> |
30 changes: 30 additions & 0 deletions
30
python/plugins/processing/tests/testdata/expected/poly_ring_self_intersection_invalid.xsd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,30 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<xs:schema targetNamespace="http://ogr.maptools.org/" xmlns:ogr="http://ogr.maptools.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" version="1.0"> | |||
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/2.1.2/feature.xsd"/> | |||
<xs:element name="FeatureCollection" type="ogr:FeatureCollectionType" substitutionGroup="gml:_FeatureCollection"/> | |||
<xs:complexType name="FeatureCollectionType"> | |||
<xs:complexContent> | |||
<xs:extension base="gml:AbstractFeatureCollectionType"> | |||
<xs:attribute name="lockId" type="xs:string" use="optional"/> | |||
<xs:attribute name="scope" type="xs:string" use="optional"/> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
<xs:element name="poly_ring_self_intersection_invalid" type="ogr:poly_ring_self_intersection_invalid_Type" substitutionGroup="gml:_Feature"/> | |||
<xs:complexType name="poly_ring_self_intersection_invalid_Type"> | |||
<xs:complexContent> | |||
<xs:extension base="gml:AbstractFeatureType"> | |||
<xs:sequence> | |||
<xs:element name="geometryProperty" type="gml:PolygonPropertyType" nillable="true" minOccurs="0" maxOccurs="1"/> | |||
<xs:element name="_errors" nillable="true" minOccurs="0" maxOccurs="1"> | |||
<xs:simpleType> | |||
<xs:restriction base="xs:string"> | |||
<xs:maxLength value="255"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:schema> |
9 changes: 9 additions & 0 deletions
9
python/plugins/processing/tests/testdata/expected/poly_ring_self_intersection_valid.gml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,9 @@ | |||
<?xml version="1.0" encoding="utf-8" ?> | |||
<ogr:FeatureCollection | |||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
xsi:schemaLocation="http://ogr.maptools.org/ poly_ring_self_intersection_valid.xsd" | |||
xmlns:ogr="http://ogr.maptools.org/" | |||
xmlns:gml="http://www.opengis.net/gml"> | |||
<gml:boundedBy><gml:null>missing</gml:null></gml:boundedBy> | |||
|
|||
</ogr:FeatureCollection> |
23 changes: 23 additions & 0 deletions
23
python/plugins/processing/tests/testdata/expected/poly_ring_self_intersection_valid.xsd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,23 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<xs:schema targetNamespace="http://ogr.maptools.org/" xmlns:ogr="http://ogr.maptools.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" version="1.0"> | |||
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/2.1.2/feature.xsd"/> | |||
<xs:element name="FeatureCollection" type="ogr:FeatureCollectionType" substitutionGroup="gml:_FeatureCollection"/> | |||
<xs:complexType name="FeatureCollectionType"> | |||
<xs:complexContent> | |||
<xs:extension base="gml:AbstractFeatureCollectionType"> | |||
<xs:attribute name="lockId" type="xs:string" use="optional"/> | |||
<xs:attribute name="scope" type="xs:string" use="optional"/> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
<xs:element name="poly_ring_self_intersection_valid" type="ogr:poly_ring_self_intersection_valid_Type" substitutionGroup="gml:_Feature"/> | |||
<xs:complexType name="poly_ring_self_intersection_valid_Type"> | |||
<xs:complexContent> | |||
<xs:extension base="gml:AbstractFeatureType"> | |||
<xs:sequence> | |||
<xs:element name="geometryProperty" type="gml:PolygonPropertyType" nillable="true" minOccurs="0" maxOccurs="1"/> | |||
</xs:sequence> | |||
</xs:extension> | |||
</xs:complexContent> | |||
</xs:complexType> | |||
</xs:schema> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters