[postgis-users] [postgis-devel] Problem in st_StriaghtSkeleton - Hangs!

Stephen Woodbridge woodbri at swoodbridge.com
Thu Jan 18 06:43:50 PST 2018


On 1/18/2018 3:54 AM, Martijn Meijers wrote:
> Hi,
> 
> I think the problem with this input is that there is *a lot* of parallel 
> lines, meaning that in the algorithm of skeleton construction many 
> things happen at exactly the same time (if you see it as a wavefront 
> propagation). I also tried with my Python implementation [1], but this 
> also crashes (-:
> 
> One option I'd try is to slightly perturb/add some randomness to your 
> input coordinates (to take away the lines being exactly parallel) and 
> see if that goes through...

This data is generated from a scan of a building floor plan by passing 
it through st_dumpaspolygons(rast, 1, true) so it will always have lots 
of parallel lines. This is just one of ten similar drawings but its the 
only one that fails. I'll be running a larger set today and may have 
some additional failures.

I tried Regina's suggestion of using ST_ApproximateMedialAxis and 
ST_SubDivide but that also seems to hang in my work flow. I'll take 
another look through my queries to make sure I incorporated it correctly.

How would you go about perturbing the input coordinates?

Thanks,
   -Steve

> Martijn
> 
> 
> [1] https://bitbucket.org/bmmeijers/grassfire/
> 
> On 18-01-18 02:21, Stephen Woodbridge wrote:
>> Hi Regina,
>>
>> Thanks, this is a great idea. I rework my queries to work in 
>> ST_ApproximateMedialAxis and ST_SubDivide and see how that does.
>>
>> -Steve
>>
>> On 1/17/2018 8:13 PM, Regina Obe wrote:
>>> Steve,
>>>
>>> One more thought.  Can you try this and see if it works.  I think 
>>> ST_StraightSkeleton and ST_ApproximateMedialAxis are having issues, 
>>> because in this case your holes are so big that it almost cuts into 
>>> another.
>>>
>>> So to work around the issue, you can subdivide the polygon and then 
>>> do the analyze like this:
>>>
>>> SELECT  ST_ApproximateMedialAxis(ST_SubDivide('POLYGON((256 760,518 
>>> 760,518 630,674 630,674
>>> 239,673 239,127 239,127 240,126 240,126 513,127 513,127 514,126 514,126
>>> 630,255 630,256 630,256 760),(128 629,128 423,270 423,270 422,271
>>> 422,271 240,672 240,672 629,128 629),(258 759,258 631,516 631,516
>>> 759,258 759),(128 421,128 240,269 240,269 421,128 421))'::geometry, 
>>> 12));
>>>
>>> You might need to tweak with the subdivide param.
>>>
>>> http://postgis.net/docs/manual-dev/ST_Subdivide.html
>>>
>>> The subdivide cuts right into the holes turning them not into holes 
>>> so you end up with simple polygons that approximate medial axis can 
>>> handle.
>>>
>>> Once you are done you can run ST_Union on your set of Linestrings.
>>>
>>>
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: postgis-devel [mailto:postgis-devel-bounces at lists.osgeo.org] On 
>>> Behalf Of Stephen Woodbridge
>>> Sent: Wednesday, January 17, 2018 2:47 PM
>>> To: PostGIS Development Discussion <postgis-devel at lists.osgeo.org>
>>> Subject: [postgis-devel] Problem in st_StriaghtSkeleton - Hangs!
>>>
>>> Hi all,
>>>
>>> I have run into a problem using st_StraightSkelton() where it appears 
>>> to hang at 100 cpu. Maybe an endless loop?
>>>
>>> select st_straightskeleton('POLYGON((256 760,518 760,518 630,674 630,674
>>> 239,673 239,127 239,127 240,126 240,126 513,127 513,127 514,126 514,126
>>> 630,255 630,256 630,256 760),(128 629,128 423,270 423,270 422,271
>>> 422,271 240,672 240,672 629,128 629),(258 759,258 631,516 631,516
>>> 759,258 759),(128 421,128 240,269 240,269 421,128 421))'::geometry);
>>>
>>> POSTGIS="2.3.3 r15473" GEOS="3.5.1-CAPI-1.9.1 r4246" SFCGAL="1.2.2"
>>> PROJ="Rel. 4.9.2, 08 September 2015" GDAL="GDAL 1.11.3, released 
>>> 2015/09/16" LIBXML="2.9.3" LIBJSON="0.11.99" RASTER
>>>
>>> Can anyone reproduce this?
>>> Any idea how to work around it?
>>>
>>> Is there a non-CGAL version of skeleton?
>>>
>>> Thanks,
>>>     -Steve
>>>
>>> ---
>>> This email has been checked for viruses by Avast antivirus software.
>>> https://www.avast.com/antivirus
>>>
>>> _______________________________________________
>>> postgis-devel mailing list
>>> postgis-devel at lists.osgeo.org
>>> https://lists.osgeo.org/mailman/listinfo/postgis-devel
>>>
>>> _______________________________________________
>>> postgis-users mailing list
>>> postgis-users at lists.osgeo.org
>>> https://lists.osgeo.org/mailman/listinfo/postgis-users
>>>
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at lists.osgeo.org
>> https://lists.osgeo.org/mailman/listinfo/postgis-users
> 
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/postgis-users



More information about the postgis-users mailing list