Yes that was basically my algorithm: combinations of buffer, intersection, then 
difference. 

I was using st_makevalid too, it didn't help, everything was considered valid, 
yet I was getting errors. 

I was unaware of st_snap as a separate function than st_snaptogrid. Maybe that 
was the missing piece. Thanks. 

Nonetheless, the triangulation algorithm from Martijn seems so much cleaner and 
more powerful than any of this. http://tudelft-gist.github.io/pprepair/ .  I 
don't even see a reason to try st_snap. 

--
John Abraham

Sent from my iPhone, please excuse any typos. 

> On Oct 4, 2014, at 6:18 AM, Mark Wynter <[email protected]> wrote:
> 
> Don't have the benefit of seeing your image...
> For those that intersect, what about ST_difference to rid overlaps and 
> ST_Snap to fill voids... 
> 
> Or ST_Buffer both, take the intersection, union it to one of the polys and 
> difference it with the first original 
> 
> I recall a project 6 months back where client handed me a bunch of polys that 
> lacked common edges because they were created almost freehand ... 
> 
> I can't pull up my code because I'm on annual leave, but I recall I wrote a 
> stored procedure that looped through each poly at a time, found the nearest, 
> and used a combination of functions to produce a valid edge between each pair.
> 
> HTH
> 
> Sent from my iPhone
> 
>> On 4 Oct 2014, at 4:30 am, [email protected] wrote:
>> 
>> Send postgis-users mailing list submissions to
>>  [email protected]
>> 
>> To subscribe or unsubscribe via the World Wide Web, visit
>>  http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>> or, via email, send a message with subject or body 'help' to
>>  [email protected]
>> 
>> You can reach the person managing the list at
>>  [email protected]
>> 
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of postgis-users digest..."
>> 
>> 
>> Today's Topics:
>> 
>> 1. A little tired of non-noded intersections between    polygons --
>>    node them all (John Abraham)
>> 
>> 
>> ----------------------------------------------------------------------
>> 
>> Message: 1
>> Date: Fri, 3 Oct 2014 12:29:30 -0600
>> From: John Abraham <[email protected]>
>> To: [email protected]
>> Subject: [postgis-users] A little tired of non-noded intersections
>>  between    polygons -- node them all
>> Message-ID: <[email protected]>
>> Content-Type: text/plain; charset="windows-1252"
>> 
>> I?m trying to clean up a geometry layer, a division of a province into 
>> smaller areas.  Once it?s cleaned up I?d like to start using a topology, so 
>> that no-one else ever has to deal with these problems? but? meanwhile...
>> 
>> I keep getting non-noded intersections or other topology exceptions when I?m 
>> searching for (or removing) overlapping polygons or searching for (or adding 
>> in) missing bits between polygons.
>> 
>> I?ve used all kinds of combinations of st_buffer(0), st_cleangeometry(), 
>> custom versions of st_cleangeometry(), and st_snaptogrid to try to fix 
>> things.
>> 
>> I?ve noticed a pattern with the types of problems I?m currently dealing 
>> with.  Basically, they are non-noded intersections between polygon edges.  
>> Eg, there is a polygon that has a not-quite-exactly-north-south boundary on 
>> its west side that it shares with its western neighbor.  But the neighbor's 
>> boundary is longer, extending north past the corner of the original, and 
>> it?s defined by a different pair of points.  If the image comes through, you 
>> can see it below.  The Greenish polygon obviously has node at its north-west 
>> corner, but the brownish polygon, to the west of it, does not have a node at 
>> that location, its boundary is longer so is defined by more distant end 
>> points.
>> 
>> I?m wondering if I could use something like st_node to add a node in the 
>> western polygon, so the corner between them is defined identically on both 
>> sides? Then, presumably, I wouldn?t be getting these 
>> ERROR: GEOSUnaryUnion: TopologyException: found non-noded intersection 
>> between LINESTRING (144297 5.66546e+006, 144201 5.67011e+006) and LINESTRING 
>> (144203 5.67002e+006, 144204 5.67002e+006) at 144203.19006961776 
>> 5670017.7300232062
>> type of errors.  But ST_Node only works on lines, not polygons.
>> 
>> 
>> 
>> 
>> 
>> 
>> PS I was watching Paul Ramsey?s presentation on the web from Foss4G and I 
>> agree that PostGIS is fantastic and gaining so much momentum, and perhaps 
>> even ?asymptotically approaching perfection?.  But these types of topology 
>> errors always seem to trip me up.  Isn?t there something that can be done in 
>> the underlying GEOS functions to make these less common?  Or is everything 
>> an edge case that needs a special algorithm?  I?m frankly rather surprised 
>> that these errors don?t seem common for more people (based on my limited 
>> google search hits): are others not using ST_Union or ST_Intersects very 
>> much?  Or does everyone else have boundaries that are defined in topologies, 
>> or with every point specified?  Or is there just some trick, that no-one?s 
>> ever told me about, to add in the necessary points on edges so that 
>> identical line segments are defined by the same pairs of points?
>> 
>> Feeling frustrated,
>> 
>> --
>> John Abraham
>> [email protected]
>> 403-232-1060
>> 
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL: 
>> <http://lists.osgeo.org/pipermail/postgis-users/attachments/20141003/81ea8a07/attachment-0001.html>
>> -------------- next part --------------
>> A non-text attachment was scrubbed...
>> Name: Screen Shot 2014-10-03 at 12.08.00 PM.png
>> Type: image/png
>> Size: 7887 bytes
>> Desc: not available
>> URL: 
>> <http://lists.osgeo.org/pipermail/postgis-users/attachments/20141003/81ea8a07/attachment-0001.png>
>> 
>> ------------------------------
>> 
>> _______________________________________________
>> postgis-users mailing list
>> [email protected]
>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>> 
>> End of postgis-users Digest, Vol 152, Issue 3
>> *********************************************
> _______________________________________________
> postgis-users mailing list
> [email protected]
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
_______________________________________________
postgis-users mailing list
[email protected]
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

Reply via email to