[Dutch] Union van twee features geeft slivers

Paul Meems p.meems op topx-group.nl
Wo Jan 25 05:52:25 PST 2017


Bedankt allen voor het meedenken.

ST_Snap had ik nog niet eerder gebruikt, die ga ik zeker onthouden.
Ik heb het nu werkend samen met ST_Buffer en ST_Union.


Met vriendelijke groet,

Paul



[image: TopX Geo-ICT] <http://www.topx-geo-ict.nl>

Paul Meems
Senior GIS consultant
06-53989481

Wij bieden ondersteuning voor MapWindow GIS <http://www.mapwindow.org/>

Download the latest MapWinGIS mapping engine.
<https://github.com/MapWindow/MapWinGIS/releases>

Download the latest MapWindow 5 open source desktop application.
<https://github.com/MapWindow/MapWindow5/releases>



Op 24 januari 2017 om 20:14 schreef Rob van Loon <rob.v.loon op gmail.com>:

> Hallo,
>
> Voortbordurend op de suggestie van Raymond heb ik een voorbeeld-scriptje
> gemaakt (zie onder). De ST_SnapToGrid is volgens mij een hele mooie
> oplossing. Let er wel op dat deze coordinaten in graden zijn uitgedrukt en
> niet in meters. De ST_SnapToGrid kun je aanroepen op resultaat van de
> union, of vooraf op de input-geometry. Als je complete data-processing-lijn
> aan het opzetten bent, dan kun je dit opnemen in een pre-processing-stap.
>
> Succes!
>
> Groeten,
>
> Rob,
>
> create table myinput (id serial, geom geometry);
>
> insert into myinput (geom) values(st_setsrid(st_geomfromtext('POLYGON
> ((6.70283302429327 53.4467145756907,6.70412357411507 53.4513517103932,6.70412669569593
> 53.4513514723055,6.70429851132755 53.4513385411578,6.7044422330687
> 53.4513274445802,6.70461864736033 53.4513123060751,6.70475579172119
> 53.4513027187978,6.70476389859094 53.4513020011143,6.70476289090104
> 53.4512985975009,6.70477294579793 53.4512975889328,6.70474537106525
> 53.4512035387728,6.70455723295698 53.4504884330555,6.7043824777217
> 53.4498462358267,6.70512536745689 53.4497742094107,6.70428982930307
> 53.446703357341,6.7043321605017 53.4466987452127,6.70433703248029
> 53.4466992007631,6.70432438136483 53.4466458505585,6.70433730796039
> 53.4466358808802,6.70432238314636 53.4466281870423,6.70432596765171
> 53.4466425454975,6.70428238531335 53.4466413315959,6.70427217766495
> 53.4466426001478,6.70427193191188 53.4466416424673,6.7042538801134
> 53.4466370773315,6.7040655917783 53.446652513779,6.7039683797411
> 53.4466572551553,6.70394919628077 53.4466585487938,6.7037460705535
> 53.4466688385238,6.70364650941673 53.4466709724489,6.70349871347846
> 53.4466802526576,6.7033660799956 53.4466877405564,6.70334054582875
> 53.446689380932,6.70317058220084 53.4466979897682,6.70283302429327
> 53.4467145756907))'),4326));
> insert into myinput (geom) values (st_setsrid(st_geomfromtext('POLYGON
> ((6.70216668831253 53.4500028961737,6.70237193062649 53.4507641096395,6.70268318691148
> 53.4518899639785,6.70268945925671 53.4519200060297,6.70285955962013
> 53.4519046223288,6.70303222228794 53.451889284531,6.70318159368258
> 53.4518787567758,6.70334811795126 53.4518650131825,6.70351871454753
> 53.4518525098384,6.70369451629033 53.4518389159895,6.70385344490489
> 53.4518258837185,6.70403192084473 53.4518116311342,6.70422180022585
> 53.4517971457774,6.70439291223837 53.4517842851066,6.70454711566634
> 53.4517723010181,6.70471605488684 53.4517578102464,6.7048472212114
> 53.4517486117546,6.70497795208799 53.4517379801422,6.70514265524894
> 53.4517257546231,6.70530756648328 53.4517144251894,6.70545113023473
> 53.4517001122022,6.70564892759997 53.4516864455109,6.70564342535346
> 53.4516687372755,6.70564546642434 53.4516685958728,6.70564599978697
> 53.4516685619542,6.70548788364455 53.4511299657172,6.70530075453925
> 53.450418758931,6.7051253659275 53.4497742113231,6.70438247619231
> 53.4498462377391,6.70455723142757 53.4504884349678,6.70474536953579
> 53.4512035406851,6.70477294426847 53.4512975908451,6.70476288937158
> 53.4512985994132,6.70476389706148 53.4513020030265,6.70475579019173
> 53.4513027207101,6.70461864583087 53.4513123079874,6.70444223153925
> 53.4513274464925,6.70429850979809 53.4513385430701,6.70412669416649
> 53.4513514742178,6.70393415835727 53.4513661592132,6.70375260781757
> 53.4513807238371,6.70359253518885 53.4513937055923,6.70359253794383
> 53.451393795421,6.70342659078827 53.4514066614349,6.70342658803364
> 53.4514065716061,6.7033143905099 53.4514148064969,6.70311426497734
> 53.4506909337095,6.70290959489771 53.4499315259912,6.70216668831253
> 53.4500028961737))'),4326));
>
> create table mybuffer as (select st_buffer(st_snaptogrid(st_union(geom),1E-6),0)
> as geom from myinput);
> create table mybuffer_alt as (select  st_union(geom) as geom from (select
> st_snaptogrid(geom,1E-6) as geom from myinput) as foo);
>
>
> Op 24 jan. 2017, om 17:29 heeft Raymond Nijssen <r.nijssen op terglobo.nl>
> het volgende geschreven:
>
> Hoi Paul,
>
> Misschien helpt het om je coordinaten af te ronden, bijvoorbeeld op de mm?
> Als ze heel dicht bij elkaar liggen, maar net niet op elkaar, dan kan dat
> helpen.
>
> http://postgis.net/docs/manual-2.0/ST_SnapToGrid.html
>
> Een andere (lelijke maar snelle) oplossing is een buffer van bijvoorbeeld
> 1 mm. Eventueel gevolgd door een buffer van -1 mm.
>
> Succes,
> Raymond
>
>
>
> On 24-01-17 14:46, Paul Meems wrote:
>
> Ik zit weer te prutsen met het samenvoegen van twee polygons.
> Ik probeer het te doen in PostGIS.
> Dit is mijn input:
> Inline afbeelding 1
>
> En dit is mijn output:
> Inline afbeelding 2
>
> Het probleem zit in de extra lijnen.
> Ik heb al van alles geprobeerd: buffers, boundaries, convex hull, maar
> ik krijg die lijntjes er niet uit. Ik gebruik ST_Union() om de twee
> polygonen samen te voegen.
>
> Heeft iemand van jullie nog een idee?
> Uiteindelijk moet de workflow zo generiek zijn dat ik er een functie van
> kan maken en dat die praktisch altijd goed werkt.
>
> Hier de WKT van de polygonen:
> POLYGON ((6.70283302429327 53.4467145756907,6.70412357411507
> 53.4513517103932,6.70412669569593 53.4513514723055,6.70429851132755
> 53.4513385411578,6.7044422330687 53.4513274445802,6.70461864736033
> 53.4513123060751,6.70475579172119 53.4513027187978,6.70476389859094
> 53.4513020011143,6.70476289090104 53.4512985975009,6.70477294579793
> 53.4512975889328,6.70474537106525 53.4512035387728,6.70455723295698
> 53.4504884330555,6.7043824777217 53.4498462358267,6.70512536745689
> 53.4497742094107,6.70428982930307 53.446703357341,6.7043321605017
> 53.4466987452127,6.70433703248029 53.4466992007631,6.70432438136483
> 53.4466458505585,6.70433730796039 53.4466358808802,6.70432238314636
> 53.4466281870423,6.70432596765171 53.4466425454975,6.70428238531335
> 53.4466413315959,6.70427217766495 53.4466426001478,6.70427193191188
> 53.4466416424673,6.7042538801134 53.4466370773315,6.7040655917783
> 53.446652513779,6.7039683797411 53.4466572551553,6.70394919628077
> 53.4466585487938,6.7037460705535 53.4466688385238,6.70364650941673
> 53.4466709724489,6.70349871347846 53.4466802526576,6.7033660799956
> 53.4466877405564,6.70334054582875 53.446689380932,6.70317058220084
> 53.4466979897682,6.70283302429327 53.4467145756907))
>
> POLYGON ((6.70216668831253 53.4500028961737,6.70237193062649
> 53.4507641096395,6.70268318691148 53.4518899639785,6.70268945925671
> 53.4519200060297,6.70285955962013 53.4519046223288,6.70303222228794
> 53.451889284531,6.70318159368258 53.4518787567758,6.70334811795126
> 53.4518650131825,6.70351871454753 53.4518525098384,6.70369451629033
> 53.4518389159895,6.70385344490489 53.4518258837185,6.70403192084473
> 53.4518116311342,6.70422180022585 53.4517971457774,6.70439291223837
> 53.4517842851066,6.70454711566634 53.4517723010181,6.70471605488684
> 53.4517578102464,6.7048472212114 53.4517486117546,6.70497795208799
> 53.4517379801422,6.70514265524894 53.4517257546231,6.70530756648328
> 53.4517144251894,6.70545113023473 53.4517001122022,6.70564892759997
> 53.4516864455109,6.70564342535346 53.4516687372755,6.70564546642434
> 53.4516685958728,6.70564599978697 53.4516685619542,6.70548788364455
> 53.4511299657172,6.70530075453925 53.450418758931,6.7051253659275
> 53.4497742113231,6.70438247619231 53.4498462377391,6.70455723142757
> 53.4504884349678,6.70474536953579 53.4512035406851,6.70477294426847
> 53.4512975908451,6.70476288937158 53.4512985994132,6.70476389706148
> 53.4513020030265,6.70475579019173 53.4513027207101,6.70461864583087
> 53.4513123079874,6.70444223153925 53.4513274464925,6.70429850979809
> 53.4513385430701,6.70412669416649 53.4513514742178,6.70393415835727
> 53.4513661592132,6.70375260781757 53.4513807238371,6.70359253518885
> 53.4513937055923,6.70359253794383 53.451393795421,6.70342659078827
> 53.4514066614349,6.70342658803364 53.4514065716061,6.7033143905099
> 53.4514148064969,6.70311426497734 53.4506909337095,6.70290959489771
> 53.4499315259912,6.70216668831253 53.4500028961737))
>
>
>
>
> Met vriendelijke groet,
>
> Paul
>
> *
> *
>
>
> TopX Geo-ICT <http://www.topx-geo-ict.nl>
>
>
>
> Paul Meems
> Senior GIS consultant
> 06-53989481
>
> Wij bieden ondersteuning voor MapWindow GIS <http://www.mapwindow.org/>
>
> Download the latest MapWinGIS mapping engine.
> <https://github.com/MapWindow/MapWinGIS/releases>
>
> Download the latest MapWindow 5 open source desktop application.
> <https://github.com/MapWindow/MapWindow5/releases>
>
>
>
>
> _______________________________________________
> Dutch mailing list
> Dutch op lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/dutch
>
>
> _______________________________________________
> Dutch mailing list
> Dutch op lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/dutch
>
>
>
> _______________________________________________
> Dutch mailing list
> Dutch op lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/dutch
>
------------- volgend deel ------------
Een HTML-bijlage is gescrubt...
URL: <http://lists.osgeo.org/pipermail/dutch/attachments/20170125/36ae2748/attachment-0001.html>


Meer informatie over de Dutch maillijst