(editar 2019) ST_VoronoiPolygons disponíveis desde o PostGIS v2.3 !
Com o PostGIS 2.1+, podemos usar ST_DelaunayTriangles () para gerar uma triangulação de Delaunay , que é um gráfico duplo do diagrama de Voronoi e, em teoria, eles têm uma conversão exata e reversível.
Existe algum script padrão do SQL seguro com um algoritmo otimizado para esta conversão PostGIS2 Delaunay em Voronoi ?
postgis
sql
voronoi-thiessen
Peter Krauss
fonte
fonte
ST_DelaunayTriangles
no Linux Debian Stable .Respostas:
A consulta a seguir parece fazer um conjunto razoável de polígonos de voronoi a partir dos triângulos de Delaunay.
Como não sou um grande usuário do Postgres, é provável que possa ser melhorado bastante.
Isso produz o seguinte conjunto de polígonos para os pontos de amostra incluídos na consulta
Explicação da consulta
Passo 1
Crie os triângulos de Delaunay a partir das geometrias de entrada
Passo 2
Decomponha os nós do triângulo e faça arestas. Acho que deveria haver uma maneira melhor de obter as bordas, mas não encontrei uma.
etapa 3
Construa os círculos circunscritos para cada triângulo e encontre o centróide
O
Edges
CTE gera cada aresta e o id (caminho) do triângulo ao qual pertence.Passo 4
'Junção externa' a tabela 'Bordas', onde existem arestas iguais para triângulos diferentes (arestas internas).
Onde existe uma aresta comum, desenhe uma linha entre os respectivos centróides
Onde a aresta não estiver unida (exterior), desenhe uma linha do centróide através do centro da aresta. Faça isso apenas se o centróide do círculo estiver dentro do conjunto de triângulos.
Etapa 5
Obtenha o casco convexo para as linhas desenhadas como uma linha. Unir e mesclar todas as linhas. Nó o conjunto de linhas para que tenhamos um conjunto topológico que possa ser poligonalizado.
fonte
ST_ConvexHull
e, emST_Centroid
vez disso, "bissetores perpendiculares", como no algoritmo direto sugerido pelo meu ref1 / Kenneth Sloa ... Por que não a solução direta?ST_DelaunayTriangles
no Linux Debian Stable .