[postgis-users] ST_Buffer returning multipolygons

Stephen Woodbridge woodbri at swoodbridge.com
Fri Jan 18 12:27:07 PST 2013


Hugues,

Sorry for the mix up and thank you for your confirmation of this 
problem. Marco said he will write up a bug for this.

-Steve

On 1/18/2013 3:02 PM, Francois Hugues wrote:
> This time, I'm not the one who have a problem ! (and you can call me Hugues ;))
>
> This artifact is very strange and I reproduced it at home with exactly the same result.
>
> Hugues.
>
>
>
>
> -----Message d'origine-----
> De : postgis-users-bounces at lists.osgeo.org [mailto:postgis-users-bounces at lists.osgeo.org] De la part de Stephen Woodbridge
> Envoyé : vendredi 18 janvier 2013 19:45
> À : postgis-users at lists.osgeo.org
> Objet : Re: [postgis-users] ST_Buffer returning multipolygons
>
> Francois,
>
> I can not see anything obviously wrong here. It is possible with large offsets to generate loops in the offset curve that would show up as slivers like you are getting.
>
> 1. file a bug report http://trac.osgeo.org/postgis/
>      include you linesting and the command generating the problem
>      include select postgis_full_version() output
>
> 2. "fix" these you can explode the multipolygon with st_dump and filter out any little slivers using st_area() > tolerance
>
> HTH,
>     -Steve
>
> On 1/18/2013 12:40 PM, marquz74 wrote:
>> Stephen Woodbridge wrote
>>> On 1/18/2013 11:10 AM, marquz74 wrote:
>>>> Francois Hugues wrote
>>>>> We don't know what are your original geometries or what kind of
>>>>> buffer you apply (since you work with linestrings we can assume it
>>>>> is a positive buffer). Maybe some of your linestrings are
>>>>> multilinestrings with disjoint components.
>>>>
>>>> the query:
>>>>
>>>> SELECT GeometryType(the_geom)
>>>> FROM streams
>>>> WHERE GeometryType(the_geom)  <> 'LINESTRING';
>>>>
>>>> returns 0 records.
>>>
>>> If you have a linestring that follows a stream or rivier then you
>>> likely will have an ox bow like geometry, think of the letter Omega.
>>> If you add enough buffer to this you will end up intersecting your
>>> buffer with another part of the buffer. This creates polygon or multipolygon.
>>>
>>> You could post you command and geometry so others can look at it.
>>>
>>> select gid, astext(the_geom) from streams where
>>> GeometryType(st_buffer(the_geom, <distance>
>>> )) = 'MULTIPOLYGON';
>>
>> Ok. I have a totale of 8554 streams (LINESTRINGs).
>> With the query
>>
>> SELECT gid, AsText(the_geom) FROM streams WHERE
>> GeometryType(st_buffer(the_geom, 100)) = 'MULTIPOLYGON';
>>
>> I get 11 records as MULTIPOLYGONs
>>
>> The first record is:
>>
>>    674 | LINESTRING(640770.332537465 216785.425146015,640770.356311913
>> 216785.560172686,640770.475488952 216786.226162019,640770.647396495
>> 216787.800152365,640770.658978918 216789.268376902,640770.447752096
>> 216792.399898366,640769.98018796 216795.624688816,640769.110287021
>> 216798.527305023,640767.648768098 216801.891389348,640766.02448565
>> 216804.805892778,640764.74005588 216807.134569434,640763.337363474
>> 216809.560477487,640761.650901703 216812.246990061,640759.955600712
>> 216815.327305019,640758.482499366 216817.868732504,640757.383693167
>> 216819.548488661,640756.238862077 216821.226720821,640754.01503683
>> 216824.434442434,640751.366929134 216828.435255234,640749.204368809
>> 216832.450088865,640747.25516891 216836.227787618,640746.014020829
>> 216838.801219168,640745.393751588 216840.360274284,640744.315976633
>> 216842.854457673,640743.400050801 216844.65704848,640742.582575565
>> 216846.277673322,640741.52491745 216848.478638524,640740.503835408
>> 216850.705816576,640739.787553975 216852.270967708,640739.053289307
>> 216853.851968469,640738.173025147 216855.546355058,640737.55488951
>> 216856.568961104,640736.817272035 216857.822910812,640735.910795021
>> 216859.35697228,640734.77510795 216861.236982439,640733.832969266
>> 216862.938074642,640732.814325629 216865.039674844,640731.225095251
>> 216869.012141189,640729.979984761 216871.879095724,640729.445974092
>> 216873.02148841,640729.002794006 216873.679857725,640728.952197105
>> 216873.745389857,640728.676962154 216874.089814544)
>>
>> I isolated the stream and the related buffer, you can see large and
>> small zoom at this links:
>> https://docs.google.com/file/d/0B0MkYF-Ljs34MlNkTkJwc0dEbG8/edit
>> https://docs.google.com/file/d/0B0MkYF-Ljs34c1owdkc1U0Q4OFk/edit
>>
>> Thank you for your patience :-)
>>
>> Marco
>>
>>
>>
>> --
>> View this message in context:
>> http://postgis.17.n6.nabble.com/ST-Buffer-returning-multipolygons-tp50
>> 02333p5002345.html Sent from the PostGIS - User mailing list archive
>> at Nabble.com.
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at lists.osgeo.org
>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>



More information about the postgis-users mailing list