Minha pergunta está bastante relacionada à sobreposição dividida não respondida entre polígonos em conjuntos separados, exceto que eu não estou usando shapely
, estou usando o PostGIS 2.4 no PostgreSQL 10.
Eu tenho uma tabela contendo multipolígonos para unidades administrativas. As geometrias cobrem apenas a área terrestre. Meu objetivo é estendê-los a uma determinada distância na água.
Para estender os polígonos atuais para a água, faço um buffer seguido subtraindo todas as outras geometrias da tabela. Isso corta o buffer em que a geometria tem vizinhos e retém o buffer em que a camada atualmente não possui nada. Então, algo como:
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;
No entanto, é claro que isso me dá amortecedores sobrepostos, onde dois polígonos se encontram na beira da água, bem como em estreitos estreitos:
(Observe que a pequena tira roxa à esquerda deve ser completamente atribuída ao polígono vermelho, pois nenhum ponto nessa geometria está mais perto do azul do que do vermelho devido à península do tipo apêndice.)
É aqui que estou preso. Quero cortar as sobreposições (partes roxas) em dois polígonos disjuntos ao longo de uma linha equidistante aos polígonos sem buffer e depois subtrair essas lascas dos condados armazenados em buffer.
Acho que não tenho um caso de três ou mais buffers sobrepostos. Atravessarei a ponte se e quando chegar a ela.
Cheira a mim algo semelhante, mas não muito idêntico ao uso, ST_VoronoiPolygons
mas em torno de polígonos, em vez de pontos.
Isso existe - idealmente - como funções PostGIS, como funcionalidade de geoprocessamento QGIS ou talvez em algumas bibliotecas python?
ExteriorRing
e Intersects
mas não tiveram tempo para trabalhar nele durante as férias.