[postgis-users] ST_Polygonize bug?

Darafei "Komяpa" Praliaskouski me at komzpa.net
Mon Jun 4 00:32:43 PDT 2018


Hello,

You may be willing to use ST_MakePolygon - it accepts holes and puts them
into right place.

https://postgis.net/docs/ST_MakePolygon.html

ST_Polygonize isn't a logical reverse of ST_Boundary. You can pass
reconstructed polygons via ST_SymDifference to cut them out.


пн, 4 июн. 2018 г. в 9:44, Marcin Mionskowski <mionskowskimarcin at gmail.com>:

> Hi,
> I don't know if it is a bug.
> Polygonizing a multilinestring (boundary of polygon with holes) results in
> GeometryCollection of:
> 1. Big polygon with holes (original);
> 2. Polygons of holes.
>
> Probably it's becouse ST_Polygonize can't "know" if a multilinestring
> represents a polygon with holes or a set of polygons.
>
> If you compare original polygon with ST_GeometryN(geom,1) result of
> ST_Polygonize it will return TRUE.
>
> Try:
> SELECT ST_Equals(a.geom,p.geom)
>  FROM areas a
>         JOIN (SELECT id,ST_GeometryN(ST_Polygonize(ST_Boundary(geom)),1)
> geom FROM areas GROUP BY id) p USING(id)
>
>
> Regards,
> Marcin
>
> On Sun, 03 Jun 2018 23:36:40 +0200, Paulo Pires <paulopires16 at gmail.com>
> wrote:
>
> > Hello,
> >
> >
> > Please, see this 2 polygons example.
> >
> > I Convert them to linestrings (ST_Boundary) and then to polygons again
> > (ST_Polygonize) and I can't reach to same polygons...
> >
> > This is a bug from ST_Polygonize function?
> >
> > DROP TABLE IF EXISTS areas;
> > CREATE TABLE areas (
> > id integer,
> > geom GEOMETRY
> > );
> >
> > INSERT INTO areas (id, geom) VALUES
> > (1, ST_GeometryFromText('POLYGON (( 152475.78309656942
> > 348633.83643648896 100.0 , 152819.11124438787 348634.30014856393 100.0
> > , 152813.0950157867 348346.43594807677 100.0 , 151948.4678701025
> > 348359.31090193643 100.0 , 151945.74402745243 348463.90645969921 100.0
> > , 152474.91289439827 348458.49244305107 100.0 , 152475.78309656942
> > 348633.83643648896 100.0 ), ( 152527.33647845959 348558.83199005033
> > 100.0 , 152529.2307245445 348407.29230325681 100.0 ,
> > 152709.18410261182 348403.50381108694 100.0 , 152709.18410261182
> > 348558.83199005033 100.0 , 152527.33647845959 348558.83199005033 100.0
> > ), ( 152006.95163549151 348435.14978348627 100.0 , 152006.95163549151
> > 348385.89938685647 100.0 , 152092.19270658147 348384.00514083228 100.0
> > , 152091.24558356937 348434.20266047411 100.0 , 152006.95163549151
> > 348435.14978348627 100.0 ))')),
> > (2, ST_GeometryFromText('POLYGON (( 152527.33647845959
> > 348558.83199005033 100.0 , 152709.18410261182 348558.83199005033 100.0
> > , 152709.18410261182 348403.50381108694 100.0 , 152529.22480595027
> > 348407.76579079556 100.0 , 152527.33647845959 348558.83199005033 100.0
> > ))'))
> > ;
> >
> > DROP TABLE IF EXISTS poly2line;
> > create table poly2line as
> > SELECT ST_Boundary((ST_Dump(geom)).geom) AS geom
> > FROM areas;
> >
> > DROP TABLE IF EXISTS polygonize;
> > CREATE TABLE polygonize AS
> > select (st_dump(ST_Polygonize(geom))).geom as geom
> > from poly2line;
> >
> >
> >
> > Paulo Pires
> >
> > ------------------------------
> > phone  964592113
> > e-mail  paulopires16 at gmail.com
> > crypt   myPGP public key for encryption emails
> > <
> http://kerckhoffs.surfnet.nl/pks/lookup?op=get&search=0x878711213981EEF6>
> > links    facebook <http://facebook.com/paulopires16> · twitter
> > <http://twitter.com/#!/paulopires16> · linkedin
> > <http://www.linkedin.com/pub/paulo-pires/36/4a7/607> · netlog
> > <http://netlog.com/paulopires16> · javase
> > <http://download.oracle.com/javase/6/docs/api/> · oracle
> > <http://www.oracle.com/us/syndication/feeds/index.html>
> > ------------------------------
> >
> > Aviso Legal:
> > Esta mensagem de Paulo Pires é destinada exclusivamente ao destinatário.
> > Pode conter informação confidencial ou legalmente protegida. A incorrecta
> > transmissão desta mensagem não significa a perda de confidencialidade. Se
> > esta mensagem for recebida por engano, por favor envie-a de volta para o
> > remetente e apague-a do seu sistema de imediato. É proibido a qualquer
> > pessoa que não o destinatário de usar, revelar ou distribuir qualquer
> parte
> > desta mensagem.
> >
> > Disclaimer:
> > This message from Paulo Pires is destined exclusively to the intended
> > receiver. It may contain confidential or legally protected information.
> The
> > incorrect transmission of this message does not mean the loss of its
> > confidentiality. If this message is received by mistake, please send it
> > back to the sender and delete it from your system immediately. It is
> > forbidden to any person who is not the intended receiver to use,
> distribute
> > or copy any part of this message.
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/postgis-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20180604/bc9de46e/attachment.html>


More information about the postgis-users mailing list