[Dutch] Union van twee features geeft slivers

Rob van Loon rob.v.loon op gmail.com
Di Jan 24 11:14:37 PST 2017


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 <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 <http://www.topx-geo-ict.nl/>>
>> 
>> 	
>> 
>> Paul Meems
>> Senior GIS consultant
>> 06-53989481
>> 
>> Wij bieden ondersteuning voor MapWindow GIS <http://www.mapwindow.org/ <http://www.mapwindow.org/>>
>> 
>> Download the latest MapWinGIS mapping engine.
>> <https://github.com/MapWindow/MapWinGIS/releases <https://github.com/MapWindow/MapWinGIS/releases>>
>> 
>> Download the latest MapWindow 5 open source desktop application.
>> <https://github.com/MapWindow/MapWindow5/releases <https://github.com/MapWindow/MapWindow5/releases>>
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Dutch mailing list
>> Dutch op lists.osgeo.org <mailto:Dutch op lists.osgeo.org>
>> https://lists.osgeo.org/mailman/listinfo/dutch <https://lists.osgeo.org/mailman/listinfo/dutch>
>> 
> 
> _______________________________________________
> Dutch mailing list
> Dutch op lists.osgeo.org <mailto:Dutch op lists.osgeo.org>
> https://lists.osgeo.org/mailman/listinfo/dutch <https://lists.osgeo.org/mailman/listinfo/dutch>
------------- volgend deel ------------
Een HTML-bijlage is gescrubt...
URL: <http://lists.osgeo.org/pipermail/dutch/attachments/20170124/75acab11/attachment-0001.html>


Meer informatie over de Dutch maillijst