I don't see any pdf posted, but that's ok, I get the idea.

Isn't that interesting. To me, this looks like a robustness issue with ST_Simplify. Here, the starting point of the polygon's exterior ring is not on the corner.

select
  st_astext(
    st_simplify(
      'POLYGON ((
        25 300,
        275 300,
        300 300,
        300 275,
        300 25,
        300 0,
        275 0,
        25 0,
        0 0,
        0 25,
        0 275,
        0 300,
        25 300
       ))', 1
    )
  );
                    st_astext
--------------------------------------------------
 POLYGON((25 300,300 300,300 0,0 0,0 300,25 300))
(1 row)

I don't know why, but I too was expecting to see something like:
POLYGON (( 0 300, 300 300, 300 0, 0 0, 0 300 ))

You almost could use a function that shifts the ordinates in the exterior linear ring ... you could probably put something together fairly quickly in plpgsql (extract the exterior ring, use ST_GetPointN and ST_SetPointN, and rebuild the polygon). Once shifted, the starting ordinance would be on the corner and the (25 300) vertex would disappear with a rerun of ST_Simplify.

JTS has the same issue.

-- Kevin


On 10/22/2010 2:33 AM, lplateandy wrote:
Hi Kevin,

Hopefully the attached (hopefully) PDF will help to show what i mean.

In producing the PDF i think i can see why the issue happens. It seems that
the start and end point of the polygon geometery are the node i was hoping
might be removed during the simplify process.

Not sure if there is a way around this?

I do realise there are ways for a simple rectangle etc to fix this but the
example is mainly for illustration as the issue is a problem in more complex
geometries.

Thanks

Andy


Kevin Neufeld wrote:
Hi Andy,

Can you post a small example?
-- Kevin


On 10/21/2010 10:02 AM, lplateandy wrote:
Hi,

I have, in the simplest example, a square polygon of 1 by 1 kilometer
size
with nodes every 25 meters.

I can use ST_Simplify (the_geom,5) to remove most of the points.

However, for some reason i end up with the four corner nodes and a fifth
node 25m clockwise from the top left corner.

In itself, this would be fine - 5 nodes is better than 160.

However, on some of the polygons, there are more complex boundaries which
i
wish to smooth out using simplify. I would do this with  ST_Simplify
(the_geom,26) example - going over the minimum 25 metres between  any
nodes.

In the example of the square with 5 nodes, the problem i find then is
that
the top left node is removed and the one 25m clockwise remains. The
result
is that i no longer have a 1km square but sloping Western boundary
correctly
going 1km North South but incorrectly veering across 25m to the East.

Is there a way to remove the stray node so i am more likely to maintain
my
overall polygon shape. I did try st_simplifiypreservetopology but saw no
noticeable difference.

Hope that makes sense, any help much appreciated

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


http://old.nabble.com/file/p30027046/ST_simplify_issue.pdf
ST_simplify_issue.pdf
_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to