[postgis-users] Simplify() and direction dependency

Paul Scott paul at in2one.co.za
Thu Jan 13 10:29:06 PST 2005


Andreas,

If you would like to implement anything in PHP that may be related to
PostGIS, check out http://avoir.uwc.ac.za/projects/postgis If you are
interested, contact me off list and I will set up a developer account
for you.

--Paul

On Thu, 2005-01-13 at 18:23, strk at refractions.net wrote:
> Someone is working on PHP postgis classes, you might join
> them and make that a PHP extension..
> 
> Of course if someone comes out with a C implementation that'll
> be fine too, as another way of simplifying geoms.
> 
> --strk;
> 
> On Thu, Jan 13, 2005 at 05:08:38PM +0100, Andreas Neumann wrote:
> > Hello!
> > 
> > I successfully use Simplify() in my Postgis/SVG projects and found it to 
> > be very useful.
> > 
> > It works fine for MULTILINESTRINGs/LINESTRINGs and POLYGONs that aren't 
> > part of a polygon mosaic. However, for polygon mosaics, I can't use the 
> > current Simplify() function because it is not direction independent. 
> > That means that for polygons that run in opposite directions we will get 
> > different results, resulting in sliver polygons.
> > 
> > A colleague of mine explained me a direction independent generalization 
> > algorithm that would partially solve that problem. It would be slower 
> > though, than the Douglas-Poiker algorithm.
> > 
> > That algorithm would not start with the start and endpoint of the line 
> > (as in the Douglas-Poiker algorithm), but would always look at three 
> > points at the time, move forward one vertex to the next three points and 
> > after looking through all coordinate-triples would first eliminate only 
> > the point in the triple with the lowest distance. In another iteration 
> > it would remove again the one with the lowest distance and so on, until 
> > all distances are longer than the tolerance. To speed up things one 
> > could store the distances in the first iteration in an array and only 
> > re-calculate the distances where the vertices in the neighbourhood change.
> > 
> > I could further explain the algorithm and make an illustration if that 
> > is of interest.
> > 
> > One problem that remains, is that in polygon mosaics one has to detect 
> > and flag the nodes where 2 or more polygons meet and remove those nodes 
> > from the list of removable points. Is there any way in current postgis 
> > to detect those nodes where polygon edges meet? I guess this would 
> > require a node/edge topology.
> > 
> > I am personally not a C programmer but could make a prototype 
> > implementation in perl, if that would help. If another person that is 
> > able to make C contributions to Postgis could transfer this later, I 
> > would be willing to make such a prototype in Perl or PHP.
> > 
> > What do you think? Is someone else working on something similar?
> > 
> > Thanks for your ideas,
> > Andreas
> > 
> > -- 
> > --
> > ---------------------------------------------- 
> > Andreas Neumann - Department of Cartography 
> > Swiss Federal Institute of Technology (ETH) 
> > ETH Hoenggerberg, CH-8093  Zurich, Switzerland 
> > Phone: ++41-1-633 3031, Fax: ++41-1-633 1153 
> > e-mail: neumann at karto.baug.ethz.ch 
> > www: http://www.karto.ethz.ch/neumann/
> > SVG.Open: http://www.svgopen.org/
> > Carto.net: http://www.carto.net/
> > 
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > http://postgis.refractions.net/mailman/listinfo/postgis-users
-- 
Linux User #348957




More information about the postgis-users mailing list