[postgis-users] Topology: Simplifying Coastlines with Islands

Michiel J. van Heek michielvanheek at nine-e.org
Fri May 25 14:15:09 PDT 2012


Hello Sandro,

Thank you for your reply.

These are the warnings for edge 11652, the coastline of Norway (on the  
screenshot in my previous post):

WARNING:  Simplification of edge 11652 with tolerance 0.5 failed:  
SQL/MM Spatial exception - geometry crosses an edge
WARNING:  Simplification of edge 11652 with tolerance 0.25 failed:  
SQL/MM Spatial exception - curve not simple
WARNING:  Simplification of edge 11652 with tolerance 0.125 failed:  
SQL/MM Spatial exception - curve not simple
WARNING:  Simplification of edge 11652 with tolerance 0.0625 failed:  
SQL/MM Spatial exception - curve not simple
WARNING:  Simplification of edge 11652 with tolerance 0.03125 failed:  
SQL/MM Spatial exception - curve not simple
WARNING:  Simplification of edge 11652 with tolerance 0.015625 failed:  
SQL/MM Spatial exception - curve not simple
WARNING:  Simplification of edge 11652 with tolerance 0.0078125  
failed: SQL/MM Spatial exception - curve not simple

The "curve not simple" makes we want to try your suggestion to use  
ST_SimplifyPreserveTopology instead of ST_Simplify. I will try that  
tomorrow (it is late in my timezone) and let you know the outcome.

The ticket you mentioned seems to be about creating topology from  
geometry. That part - SELECT CreateTopology('countries_topology',  
4326) - ran flawless in my case. (Long, but without errors.) The  
ticket is not about simplifying topology, or is it?

Best,
Michiel.

Quoting Sandro Santilli <strk at keybit.net>:

> On Fri, May 25, 2012 at 06:36:39PM +0200, Michiel J. van Heek wrote:
>> Dear list,
>>
>> I am trying to simplify a dataset of country boundaries by using
>> topology functions, as described in Strk's Blog:  
>> http://strk.keybit.net/blog/2012/04/13/simplifying-a-map-layer-using-postgis-topology/
>>
>> This has worked quite well, except for coastlines with islands
>> nearby. The simplified coastline would probably intersect the
>> island, or pass the island at the wrong side, leading to invalid
>> topology. Does that mean that countries with coastal islands such as
>> Canada and Norway (see attached image) cannot be simplified this
>> way?
>
> I think you should figure out more about why the simplification
> fails. The function in the post raises a WARNING on each failure,
> what does that warning say ? I'm asking because there's also the
> case of self-topology breakage, which could be prevented by using
> ST_SimplifyPreserveTopology rather than ST_Simplify.
>
> If your assumption about why simplification fails is correct you
> could make things better by splitting the complex edge near the
> islands (see ST_ModEdgeSplit).
>
>> Ideally, islands in the way of a to-be-simplified coastline should
>> be merged with the mainland. (I have already removed the smaller
>> islands, but I think I should not remove the bigger islands too.)
>
> The function in the post is still only considering each edge in
> turn and has no knowledge of which faces are defined by those
> edges, let alone which faces define your feature (mainland, island).
> You'll need something more sofisticated for that, and I'm not sure
> there's an easy general handling for such cases. I mean, there could
> still be the case in which simplifying an edge would intersect an
> island which doesn't belong to the same feature...
>
> Let me know what you found when looking closer at the failure messages.
> There's a ticket to make those messages more useful to understand
> the problem [1], if you hit that please add to that ticket, and maybe
> provide also a patch :)
>
> [1] http://trac.osgeo.org/postgis/ticket/1817
>
> Finally: make sure to run the latest and greatest postgis & GEOS.
> There have been a few fixes and improvements lately.
>
> --strk;
>
>   ,------o-.
>   |   __/  |    Delivering high quality PostGIS 2.0 !
>   |  / 2.0 |    http://strk.keybit.net - http://vizzuality.com
>   `-o------'
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>




More information about the postgis-users mailing list