[postgis-tickets] [SCM] PostGIS branch master updated. 3.2.0-450-g733ee39e8

git at osgeo.org git at osgeo.org
Tue Feb 1 11:56:07 PST 2022


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".

The branch, master has been updated
       via  733ee39e8528c70c6a59e70d52667b4ef222d8b4 (commit)
      from  e99891ab407b42c480589a7d336f1f9c342c7db3 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 733ee39e8528c70c6a59e70d52667b4ef222d8b4
Author: Martin Davis <mtnclimb at gmail.com>
Date:   Tue Feb 1 11:56:03 2022 -0800

    Improve doc Geometry Validation section

diff --git a/doc/html/image_src/st_issimple02.wkt b/doc/html/image_src/st_issimple02.wkt
index 5351ffb61..78a496445 100644
--- a/doc/html/image_src/st_issimple02.wkt
+++ b/doc/html/image_src/st_issimple02.wkt
@@ -1 +1 @@
-ArgA;GEOMETRYCOLLECTION ( LINESTRING ( 10 190, 130 40, 170 160, 10 10 ), POINT(10 190), POINT(10 10) )
+ArgB;GEOMETRYCOLLECTION ( LINESTRING ( 10 190, 130 40, 170 160, 10 10 ), POINT(10 190), POINT(10 10) )
diff --git a/doc/html/image_src/st_issimple04.wkt b/doc/html/image_src/st_issimple04.wkt
index 4fffa073f..26d5a8998 100644
--- a/doc/html/image_src/st_issimple04.wkt
+++ b/doc/html/image_src/st_issimple04.wkt
@@ -1 +1 @@
-ArgA;GEOMETRYCOLLECTION ( LINESTRING ( 90 190, 120 190, 50 60, 130 10, 190 50, 160 90, 10 150, 90 190 ), POINT(90 190) )
+ArgB;GEOMETRYCOLLECTION ( LINESTRING ( 90 190, 120 190, 50 60, 130 10, 190 50, 160 90, 10 150, 90 190 ), POINT(90 190) )
diff --git a/doc/html/image_src/st_issimple07.wkt b/doc/html/image_src/st_issimple07.wkt
index d8c553d51..ea5ae8e44 100644
--- a/doc/html/image_src/st_issimple07.wkt
+++ b/doc/html/image_src/st_issimple07.wkt
@@ -1 +1 @@
-ArgA;GEOMETRYCOLLECTION ( LINESTRING ( 30 190, 60 60, 170 10 ), LINESTRING (100 190, 180 150, 80 10), MULTIPOINT( 30 190, 170 10, 100 190, 80 10 ) )
+ArgB;GEOMETRYCOLLECTION ( LINESTRING ( 30 190, 60 60, 170 10 ), LINESTRING (100 190, 180 150, 80 10), MULTIPOINT( 30 190, 170 10, 100 190, 80 10 ) )
diff --git a/doc/html/image_src/st_isvalid03.wkt b/doc/html/image_src/st_isvalid03.wkt
index e50a81d7a..a3a0e6f06 100644
--- a/doc/html/image_src/st_isvalid03.wkt
+++ b/doc/html/image_src/st_isvalid03.wkt
@@ -1 +1 @@
-ArgA;POLYGON ((10 140, 90 190, 130 170, 190 60, 160 10, 50 20, 10 140), (130 170, 10 140, 50 120, 110 110, 130 170))
+Result;POLYGON ((10 140, 90 190, 130 170, 190 60, 160 10, 50 20, 10 140), (130 170, 10 140, 50 120, 110 110, 130 170))
diff --git a/doc/html/image_src/st_isvalid04.wkt b/doc/html/image_src/st_isvalid04.wkt
index dfcafe9cb..c1a33914c 100644
--- a/doc/html/image_src/st_isvalid04.wkt
+++ b/doc/html/image_src/st_isvalid04.wkt
@@ -1 +1 @@
-ArgA;POLYGON ((10 140, 90 190, 130 170, 190 60, 160 10, 50 20, 10 140), (90 189, 10 139, 80 110, 110 130, 90 189))
+Result;POLYGON ((10 140, 90 190, 130 170, 190 60, 160 10, 50 20, 10 140), (90 189, 10 139, 80 110, 110 130, 90 189))
diff --git a/doc/html/image_src/st_isvalid05.wkt b/doc/html/image_src/st_isvalid05.wkt
index 4c34a2655..1c9e87a6a 100644
--- a/doc/html/image_src/st_isvalid05.wkt
+++ b/doc/html/image_src/st_isvalid05.wkt
@@ -1 +1 @@
-ArgA;POLYGON (( 10 100, 60 140, 60 190, 61 190, 61 157, 130 170, 190 60, 160 10, 50 20, 10 100 ))
+Result;POLYGON (( 10 100, 60 140, 60 190, 61 190, 61 157, 130 170, 190 60, 160 10, 50 20, 10 100 ))
diff --git a/doc/html/image_src/st_isvalid06.wkt b/doc/html/image_src/st_isvalid06.wkt
index c8729c684..2d838b676 100644
--- a/doc/html/image_src/st_isvalid06.wkt
+++ b/doc/html/image_src/st_isvalid06.wkt
@@ -1 +1 @@
-ArgA;GEOMETRYCOLLECTION (POLYGON (( 10 40, 10 100, 130 130, 190 80, 140 20, 50 10, 10 40 )), LINESTRING ( 81 143, 103 143, 112 162, 107 175, 89 183, 71 169, 81 143 ))
+Result;GEOMETRYCOLLECTION (POLYGON (( 10 40, 10 100, 130 130, 190 80, 140 20, 50 10, 10 40 )), LINESTRING ( 81 143, 103 143, 112 162, 107 175, 89 183, 71 169, 81 143 ))
diff --git a/doc/html/image_src/st_isvalid07.wkt b/doc/html/image_src/st_isvalid07.wkt
index 37a7756f9..c2de9dfd8 100644
--- a/doc/html/image_src/st_isvalid07.wkt
+++ b/doc/html/image_src/st_isvalid07.wkt
@@ -1 +1 @@
-ArgA;GEOMETRYCOLLECTION (POLYGON (( 10 40, 29 118, 120 118, 180 88, 140 30, 70 10, 10 40 )), POLYGON (( 50 170, 100 190, 160 180, 180 140, 180 90, 120 120, 30 120, 50 170 )))
+Result;GEOMETRYCOLLECTION (POLYGON (( 10 40, 29 118, 120 118, 180 88, 140 30, 70 10, 10 40 )), POLYGON (( 50 170, 100 190, 160 180, 180 140, 180 90, 120 120, 30 120, 50 170 )))
diff --git a/doc/html/image_src/st_isvalid08.wkt b/doc/html/image_src/st_isvalid08.wkt
index 2bdd47998..a74ae5835 100644
--- a/doc/html/image_src/st_isvalid08.wkt
+++ b/doc/html/image_src/st_isvalid08.wkt
@@ -1 +1 @@
-ArgA;GEOMETRYCOLLECTION (POLYGON (( 10 40, 42 93, 113 105, 180 86, 140 30, 70 10, 10 40 )), POLYGON (( 50 170, 100 190, 138 182, 149 156, 146 137, 113 129, 58 140, 50 170 )), LINESTRING ( 113 105, 113 129 ))
+Result;MULTIPOLYGON (((10 40, 42 93, 130 150, 180 86, 140 30, 70 10, 10 40)), ((50 170, 100 190, 138 182, 149 156, 146 137, 100 100, 58 140, 50 170)))
diff --git a/doc/html/image_src/st_isvalid09.wkt b/doc/html/image_src/st_isvalid09.wkt
index 1f090a1ea..95875e2e0 100644
--- a/doc/html/image_src/st_isvalid09.wkt
+++ b/doc/html/image_src/st_isvalid09.wkt
@@ -1 +1 @@
-ArgA;GEOMETRYCOLLECTION ( POLYGON (( 10 40, 29 118, 100 75, 180 88, 140 30, 70 10, 10 40 )), POLYGON (( 50 170, 100 190, 160 180, 180 140, 180 90, 120 120, 30 120, 50 170 )))
+ArgA;MULTIPOLYGON (((10 40, 29 118, 100 75, 180 88, 140 30, 70 10, 10 40)), ((50 170, 100 190, 160 180, 180 140, 180 90, 120 120, 30 120, 50 170)))
diff --git a/doc/using_postgis_dataman.xml b/doc/using_postgis_dataman.xml
index b25a5a67a..805589c53 100644
--- a/doc/using_postgis_dataman.xml
+++ b/doc/using_postgis_dataman.xml
@@ -1356,11 +1356,23 @@ VALUES ( 990000,
 	  coordinate values).</para>
 
 	  <para>A <varname>LINESTRING</varname> is <emphasis>simple</emphasis> if
-	  it does not pass through the same <varname>POINT</varname> twice (except
-	  for the endpoints, in which case it is referred to as a linear ring and
-	  additionally considered closed).</para>
+	  it does not pass through the same point twice (except
+	  for the endpoints, in which case it is referred to as a Linear Ring and
+	  additionally considered <emphasis>closed</emphasis>).</para>
 
 	  <informaltable border="0" frame="none">
+		<tgroup cols="1">
+		  <tbody>
+			<row>
+				<entry><para>In these examples
+                <emphasis role="bold">(a)</emphasis> and
+				<emphasis role="bold">(c)</emphasis> are simple	<varname>LINESTRING</varname>s.
+                <emphasis role="bold">(b)</emphasis> and <emphasis role="bold">(d)</emphasis> are not simple.
+                <emphasis role="bold">(c)</emphasis> and <emphasis role="bold">(d)</emphasis> are closed Linear Rings.
+                </para></entry>
+			</row>
+		  </tbody>
+		</tgroup>
 		<tgroup cols="2" align="center">
 		  <tbody>
 			<row>
@@ -1409,24 +1421,25 @@ VALUES ( 990000,
 		  </tbody>
 		</tgroup>
 
-		<tgroup cols="1">
-		  <tbody>
-			<row>
-				<entry><para><emphasis role="bold">(a)</emphasis> and
-				<emphasis role="bold">(c)</emphasis> are simple
-				<varname>LINESTRING</varname>s, <emphasis role="bold">(b)</emphasis>
-				and <emphasis role="bold">(d)</emphasis> are not.</para></entry>
-			</row>
-		  </tbody>
-		</tgroup>
 	  </informaltable>
 
 	  <para>A <varname>MULTILINESTRING</varname> is <emphasis>simple</emphasis>
 	  only if all of its elements are simple and the only intersection between
-	  any two elements occurs at <varname>POINT</varname>s that are on the
+	  any two elements occurs at points that are on the
 	  boundaries of both elements.  </para>
 
 	  <informaltable border="0" frame="none">
+		<tgroup cols="1">
+		  <tbody>
+			<row>
+				<entry><para>In these examples
+                <emphasis role="bold">(e)</emphasis> and
+				<emphasis role="bold">(f)</emphasis> are simple
+				<varname>MULTILINESTRING</varname>s, <emphasis role="bold">(g)</emphasis>
+				is not.</para></entry>
+			</row>
+		  </tbody>
+		</tgroup>
 		<tgroup cols="3" align="center">
 		  <tbody>
 			<row>
@@ -1463,27 +1476,50 @@ VALUES ( 990000,
 		  </tbody>
 		</tgroup>
 
+	  </informaltable>
+
+      <para>A <varname>POLYGON</varname> is <emphasis>valid</emphasis> if:
+      </para>
+
+        <orderedlist>
+	    <listitem><para>
+        the polygon boundary rings (the exterior shell ring and interior hole rings)
+        are <emphasis>simple</emphasis> (do not cross or self-touch).
+        Because of this a polygon cannnot have cut lines or spikes.
+        </para></listitem>
+	    <listitem><para>
+        boundary rings do not cross
+        </para></listitem>
+	    <listitem><para>
+        boundary rings may touch at points but only as a tangent (i.e. not in a line)
+        </para></listitem>
+	    <listitem><para>
+        the interior rings are contained in the exterior ring
+        </para></listitem>
+	    <listitem><para>
+        the polygon interior is simply connected
+        (i.e. the interior rings must not split the polygon into more than one part)
+        </para></listitem>
+        </orderedlist>
+
+	  <para>These rules imply that valid <varname>POLYGON</varname>s are
+	  <emphasis>simple</emphasis> as well.
+       </para>
+
+	  <informaltable border="0" frame="none">
 		<tgroup cols="1">
 		  <tbody>
 			<row>
-				<entry><para><emphasis role="bold">(e)</emphasis> and
-				<emphasis role="bold">(f)</emphasis> are simple
-				<varname>MULTILINESTRING</varname>s, <emphasis role="bold">(g)</emphasis>
-				is not.</para></entry>
+				<entry><para>In these examples
+                <emphasis role="bold">(h)</emphasis> and
+				<emphasis role="bold">(i)</emphasis> are valid <varname>POLYGON</varname>s.
+                <emphasis role="bold">(j-m)</emphasis> are invalid
+				(but <emphasis role="bold">(j)</emphasis>
+				could be represented as a valid <varname>MULTIPOLYGON</varname>).
+				</para></entry>
 			</row>
 		  </tbody>
 		</tgroup>
-	  </informaltable>
-
-	  <para>By definition, a <varname>POLYGON</varname> is always
-	  <emphasis>simple</emphasis>. It is <emphasis>valid</emphasis> if no two
-	  rings in the boundary (made up of an exterior ring and interior rings)
-	  cross.  The boundary of a <varname>POLYGON</varname> may intersect at a
-	  <varname>POINT</varname> but only as a tangent (i.e. not on a line).
-	  A <varname>POLYGON</varname> may not have cut lines or spikes and the
-	  interior rings must be contained entirely within the exterior ring.</para>
-
-	  <informaltable border="0" frame="none">
 		<tgroup cols="3" align="center">
 		  <tbody>
 			<row>
@@ -1551,34 +1587,41 @@ VALUES ( 990000,
 			</row>
 		  </tbody>
 		</tgroup>
+	  </informaltable>
+
+	  <para>A <varname>MULTIPOLYGON</varname> is <emphasis>valid</emphasis> if:
+	  </para>
+
+        <orderedlist>
+        <listitem><para>
+        its element <varname>POLYGON</varname>s are valid
+        </para></listitem>
+        <listitem><para>
+        elements do not overlap (have intersecting interiors)
+        </para></listitem>
+        <listitem><para>
+        elements touch only at points (i.e. not along a line)
+        </para></listitem>
+        </orderedlist>
+
+	  <informaltable border="0" frame="none">
 		<tgroup cols="1">
 		  <tbody>
 			<row>
-				<entry><para><emphasis role="bold">(h)</emphasis> and
-				<emphasis role="bold">(i)</emphasis> are valid
-				<varname>POLYGON</varname>s, <emphasis role="bold">(j-m)</emphasis>
-				cannot be represented as single <varname>POLYGON</varname>s, but
-				<emphasis role="bold">(j)</emphasis> and <emphasis role="bold">(m)</emphasis>
-				could be represented as a valid <varname>MULTIPOLYGON</varname>.
-				</para></entry>
+				<entry><para>In these examples
+                <emphasis role="bold">(n)</emphasis> is a valid <varname>MULTIPOLYGON</varname>.
+				<emphasis role="bold">(o)</emphasis> and <emphasis role="bold">(p)</emphasis> are not valid.
+                </para></entry>
 			</row>
 		  </tbody>
 		</tgroup>
-	  </informaltable>
-
-	  <para>A <varname>MULTIPOLYGON</varname> is <emphasis>valid</emphasis>
-	  if and only if all of its elements are valid and the interiors of no two
-	  elements intersect. The boundaries of any two elements may touch, but
-	  only at a finite number of <varname>POINT</varname>s.</para>
-
-	  <informaltable border="0" frame="none">
-		<tgroup cols="2" align="center">
+		<tgroup cols="3" align="center">
 		  <tbody>
 			<row>
 			  <entry><para><informalfigure>
 				  <mediaobject>
 					<imageobject>
-					  <imagedata fileref="images/st_isvalid07.png" />
+					  <imagedata fileref="images/st_isvalid09.png" />
 					</imageobject>
 
 					<caption><para><emphasis role="bold">(n)</emphasis></para></caption>
@@ -1588,7 +1631,7 @@ VALUES ( 990000,
 			  <entry><para><informalfigure>
 				  <mediaobject>
 					<imageobject>
-					  <imagedata fileref="images/st_isvalid08.png" />
+					  <imagedata fileref="images/st_isvalid07.png" />
 					</imageobject>
 
 					<caption><para><emphasis role="bold">(o)</emphasis></para></caption>
@@ -1598,7 +1641,7 @@ VALUES ( 990000,
 			  <entry><para><informalfigure>
 				  <mediaobject>
 					<imageobject>
-					  <imagedata fileref="images/st_isvalid09.png" />
+					  <imagedata fileref="images/st_isvalid08.png" />
 					</imageobject>
 
 					<caption><para><emphasis role="bold">(p)</emphasis></para></caption>
@@ -1607,20 +1650,10 @@ VALUES ( 990000,
 			</row>
 		  </tbody>
 		</tgroup>
-		<tgroup cols="1">
-		  <tbody>
-			<row>
-				<entry><para><emphasis role="bold">(n)</emphasis> and
-				<emphasis role="bold">(o)</emphasis> are not valid
-				<varname>MULTIPOLYGON</varname>s.
-				<emphasis role="bold">(p)</emphasis>, however, is valid.</para></entry>
-			</row>
-		  </tbody>
-		</tgroup>
 	  </informaltable>
 
 	  <para>Most of the functions implemented by the GEOS library rely on the
-	  assumption that your geometries are valid as specified by the OpenGIS
+	  assumption that input geometries are valid as specified by the OpenGIS
 	  Simple Feature Specification. To check simplicity or validity of
 	  geometries you can use the <link linkend="ST_IsSimple">ST_IsSimple()</link> and
 	  <link linkend="ST_IsValid">ST_IsValid()</link></para>

-----------------------------------------------------------------------

Summary of changes:
 doc/html/image_src/st_issimple02.wkt |   2 +-
 doc/html/image_src/st_issimple04.wkt |   2 +-
 doc/html/image_src/st_issimple07.wkt |   2 +-
 doc/html/image_src/st_isvalid03.wkt  |   2 +-
 doc/html/image_src/st_isvalid04.wkt  |   2 +-
 doc/html/image_src/st_isvalid05.wkt  |   2 +-
 doc/html/image_src/st_isvalid06.wkt  |   2 +-
 doc/html/image_src/st_isvalid07.wkt  |   2 +-
 doc/html/image_src/st_isvalid08.wkt  |   2 +-
 doc/html/image_src/st_isvalid09.wkt  |   2 +-
 doc/using_postgis_dataman.xml        | 151 +++++++++++++++++++++--------------
 11 files changed, 102 insertions(+), 69 deletions(-)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list