Ma question est assez liée au chevauchement de Split sans réponse entre les polygones en ensembles disjoints, sauf que je n'utilise pas shapely
, j'utilise PostGIS 2.4 sur PostgreSQL 10.
J'ai une table contenant des multipolygones pour les unités administratives. Les géométries ne couvrent que la superficie du terrain. Mon objectif est de les prolonger d'une distance donnée dans l'eau.
Pour étendre les polygones actuels dans l'eau, je fais un tampon suivi de soustraire toutes les autres géométries du tableau. Cela coupe le tampon où la géométrie a des voisins et conserve le tampon où la couche n'a actuellement rien. Donc, quelque chose comme:
SELECT c1.name
, ST_Difference( ST_Buffer( ST_Union(c1.geom), 250 )
, (SELECT ST_Union(c2.geom)
FROM foo.county AS c2
WHERE c2.name <> c1.name)
)
FROM foo.county AS c1
GROUP BY c1.name;
Cependant, cela me donne bien sûr des tampons qui se chevauchent où deux polygones se rencontrent au bord de l'eau, ainsi qu'à travers des détroits étroits:
(Notez que le petit ruban violet sur la gauche doit être complètement affecté au polygone rouge, car aucun point dans cette géométrie n'est plus proche du bleu que du rouge en raison de la péninsule en forme d'appendice.)
C'est là que je suis coincé. Je veux couper les chevauchements (parties violettes) en deux polygones disjoints le long d'une ligne équidistante des polygones non tamponnés, puis soustraire ces éclats des comtés tamponnés.
Je ne pense pas avoir un cas de trois tampons ou plus qui se chevauchent. Je traverserai ce pont si et quand j'y arriverai.
Cela me sent comme quelque chose de similaire, mais pas tout à fait identique à l'utilisation, ST_VoronoiPolygons
mais autour de polygones au lieu de points.
Est-ce que cela existe - idéalement - en tant que fonctions PostGIS, en tant que fonctionnalité de géotraitement QGIS ou peut-être dans certaines bibliothèques python?
ExteriorRing
et Intersects
mais je n'ai pas eu le temps d'y travailler pendant les vacances.