[postgis-users] PostGIS Geometry Clean function
Kevin Neufeld
kneufeld at refractions.net
Thu Apr 24 20:59:00 PDT 2008
Hi Horst,
Unfortunately, your script does not work with the invalid geometry
Stefan posted today
(http://postgis.refractions.net/pipermail/postgis-users/2008-April/019397.html).
It quietly drops a good portion of the linework when rebuilding the
multipolygon.
I think the problem lies in your approach for dealing with the resultset
from polygonize (when trying to figure out which polygons are outer
rings and which are holes). I think you may find that ST_BuildArea is
much better at this type of thing than ST_Polygonize.
I modified your script slightly, by removing the entire section from
"tmpPolygon = polygonize(tmpLinestring);" to the end of the LOOP,
replacing it all with "outGeom = buildarea(tmpLinestring);". This
approach deals nicely with Stefan's error geometry. I haven't tested it
with other invalid cases, nor have I tested the linear portion of the
script, but it looks promising.
Good work.
Cheers,
Kevin
Düster Horst wrote:
> In the last few days I developed a plpgsql function to clean not valid
> polygon and linestring geometries. This function cleans all ring-self-
> and self-intersections in PostGIS layers.
>
> The input is a valid or non valid geometry with one or more
> self-intersections. The result is a clean Multi geometry where all
> intersections are correct noded and divided into multiparts. I tested
> it with polygon layers with more than 800000 objects and it works fine
> for me. You can use the function with PostGIS >= 1.3.2. If you want to
> use it with PostGIS 1.1.6 you have to modify the source and remove all
> ST_ from the specific funktion names.
>
> I hope the function could be helpful for you, for me it is.
>
> Looking forward for your comments.
>
> Best regards
>
> Horst
>
> ------------------------------------------------
>
> Dr. Horst Düster
> GIS-Koordinator, Stv. Amtschef
>
> Kanton Solothurn
> Bau- und Justizdepartement
> Amt für Geoinformation
> SO!GIS Koordination
> Rötistrasse 4
> CH-4501 Solothurn
>
> Telefon ++41(0)32 627 25 32
> Telefax ++41(0)32 627 22 14
>
> mailto:horst.duester at bd.so.ch
> http://www.agi.so.ch
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> 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