Ik heb een postgis tabel met aansluitende polygonen (BGT vlakken). Deze wil ik geometrisch versimpelen waarbij de polygonen in het uiteindelijke resultaat ook netjes aansluiten en er dus geen gaten ontstaan of polygonen overlappen. Daar heb ik m.i. een window-achtige functie voor nodig lijkt mij. Weet iemand hoe dit probleem op te lossen is?
Hetzelfde probleem speelt bij genereren tabellen voor bijv BGT Vector Tiles.
Je wilt geometrie simplificeren met behoud van topologie.
@tomvantilburg heeft dat ooit in een heel helder artikel beschreven. Uit mijn hoofd liep dit via TopoJSON, maar mogelijk is PostGIS alweer veel verder.
Zie dit artikel, sectie
.
zoek je deze PostGIS-functie:
https://postgis.net/docs/ST_CoverageSimplify.html
Dank. Ik had deze al gevonden maar zag toch nog gaten tussen de vlakken. Ik had de 3e parameter ( simplifyBoundary
) niet gebruikt en toen zag ik toch nog gaten. Ik heb deze net op false gezet en dan lijken de gaten verdwenen. Ik zie dan wel weer ander vreemde versimpelingen maar wellicht is dat nog wat tweaken met de parameters. Dat ga ik maar eens proberen.
Ik voel een mooie presentatie aankomen op de OSGeo/OSM nieuwjaarsborrel binnenkort in Utrecht
(wanneer ook alweer, ik zie nog geen aankondiging bij de evens op dit forum?)
Dat is mooi, ben benieuwd. ST_CoverageSimplify is m.i.v. PostGIS 3.4.0 (GEOS 3.12.0) beschikbaar, dus vrij recent (2023). Maakt hopelijk de “TopoJSON route” overbodig.
Dat valt nog te bezien. Ik zag op het OSM forum wel een aankondiging.
Hoi Peter, kun je een voorbeeldje laten zien / beschrijven van die “andere vreemde versimpelingen”? Wellicht kan ik daar dan iets zinnigs over vinden
Als het buiten PostGIS om kan/mag biedt Simplify op mapshaper.org wellicht uitkomst.
Sorry voor de late reactie maar ik doelde op de plaatjes die ik had meegestuurd. Bij het onderste plaatje zie je dat linker helft van de boog in het rode vlak duidelijk hoeken vertoond en het rechter deel niet. Dit te terwijl de “niet-versimpelde” curve mooi vloeiend loopt. Ik weet ff niet meer de waarde van de float in de functie maar inmiddels heb ik een waarde die best goed lijkt te werken. (0.075)
OK, dat dus. Helder. Helaas kan ik zelf ff niet testen, aangezien ik de functie ST_CoverageSimplify niet werkend krijg in mijn PostGIS versie.
Zie boven, je moet PostGIS 3.4.0 minimaal hebben volgens mij.