(редактировать 2019) ST_VoronoiPolygons доступны с PostGIS v2.3 !
С PostGIS 2.1+ мы можем использовать ST_DelaunayTriangles () для генерации триангуляции Делоне , которая является двойственным графом ее диаграммы Вороного , и, теоретически, они имеют точное и обратимое преобразование.
Существует ли какой-либо безопасный сценарий SQL-стандарта с оптимизированным алгоритмом для этого преобразования PostGIS2 Делоне-в Вороной ?
postgis
sql
voronoi-thiessen
Питер Краусс
источник
источник
ST_DelaunayTriangles
в Linux Debian Stable .Ответы:
Следующий запрос, по-видимому, делает разумный набор полигонов вороной, начиная с треугольников Делоне.
Я не большой пользователь Postgres, так что, возможно, его можно немного улучшить.
Это создает следующий набор полигонов для точек выборки, включенных в запрос
Объяснение запроса
Шаг 1
Создайте треугольники Делоне из входных геометрий
Шаг 2
Разложить узлы треугольника и сделать ребра можно. Я думаю, что должен быть лучший способ получить края, но я не нашел один.
Шаг 3
Постройте описанные круги для каждого треугольника и найдите центроид
Edges
КТР выводит каждое ребро и идентификатор (путь) треугольника он принадлежит.Шаг 4
«Внешнее» Соедините таблицу «Края» с собой, где имеются равные ребра для разных треугольников (внутренних ребер).
Там, где есть общий край, проведите линию между соответствующими центроидами.
Там, где край не соединен (снаружи), проведите линию от центра тяжести через центр края. Делайте это только в том случае, если центр тяжести круга находится внутри набора треугольников.
Шаг 5
Получите выпуклый корпус для нарисованных линий в виде линии. Объедините и объедините все линии. Узел линии установлен так, чтобы у нас был топологический набор, который можно полигонизировать.
источник
ST_ConvexHull
иST_Centroid
вместо этого "перпендикулярные биссектрисы", как в прямом алгоритме, предложенном моим ref1 / Kenneth Sloa ... Почему не прямое решение?ST_DelaunayTriangles
в Linux Debian Stable .