So you're saying that any geometry which contains consecutive duplicate points is invalid?

This is a pretty major change to validity semantics. (As a side note, I wouldn't say that validity doesn't apply to linear features - just that there are few constraints on what constitutes a valid linear feature.)

Another thing to consider - if you change the semantics of isSimple to report false for linestrings containing duplicate points, then you have no way of telling the difference between linestrings which contain true, topological self-intersections and ones which just happen to contain a topologically irrelevant duplicate point. So there should probably be a function which detects *just* duplicate points, to allow users to differentiate these two cases. And in that case, why not just leave the semantics of isSimple the way it is, and users can use either or both functions as needed?

Kevin Neufeld wrote:
On 3/30/2010 11:46 PM, Andrea Peri wrote:
You can use the ST_IsSimple to know if a geometry is simple-feature.

If true it is simple-feature.

After, if you geometry is ST_IsSimpe = true,
you can test with ST_IsValid , to detect eventually invalidity for geometry.

So you can detect if it is a simple-feature valid geometry.


This is often something that is easily misunderstood. So, to be clear, according to the OGC specs, simplicity really *only* applies to point and linear features ([multi]point, [multi]linestrings). Validity on the other hand *only* applies to areal features ([multi]polygons). I put together some thoughts [1] a while back on this.

The OGC specs aren't totally clear regarding duplicate points in linestrings, just that "has no anomalous geometric points, such as self intersection or self tangency" and "is simple if it does not pass through the same point twice". The developers at the time decided that this does not include duplicate points. I suppose one could argue either way, but to me this really does include duplicate points.

PostGIS also somewhat subscribes to the SQL/MM specifications. In there I read "is not simple if any interior point has the same location as another interior point or a point on the boundary". To me, this is more clear and, Rykov, I think you're right, ST_IsSimple really should not allow duplicate points. I'll put in a ticket.

So, simplicity is for lines and points.
A *polygon* is *valid* iff all the underlying linear features are *simple* (like no figure 8's in the boundary) and also follows several other rules (like the inner rings being contained within the exterior ring, etc).

Rykov, this is why your polygon passes validity - currently PostGIS does not include duplicate points in linestrings (the boundary of your polygon) as non-simple.

Cheers,
Kevin

[1] http://postgis.refractions.net/docs/ch04.html#OGC_Validity
_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users


--
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022

_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to