ST_DumpPoints из полигонов с углами
Добавлено: 22 июл 2019, 21:08
Понадобилось сделать представление в виде точечного слоя из слоя с полигонами, путем изучения интернетов получилось вот это.
Как ни странно - оно работает, но не хватает одного столбца, а именно угла, образуемого между тремя соседними точками. В ST_Angle я понимаю как указать P2, но откуда взять геометрию P1 и P3 не понимаю. lag/lead не вкурил...
Вопрос, собственно, в том как мне добавить к этой таблице углы?
Квалификация моя околонулевая, поэтому буду благодарен за конкретный рецепт.
Код: Выделить всё
SELECT
((t1.part || (((t1.dp).path[2] - 1)::text)) || lpad((t1.dp).path[3]::text, 3, '0'::text))::integer AS id,
ST_x((t1.dp).geom) as x,
ST_y((t1.dp).geom) as y
FROM(
SELECT DISTINCT ON (zones_pgn.id, ((st_dumppoints(zones_pgn.geom)).geom)) zones_pgn.id AS edge_id,
zones_pgn.part,
ST_DumpPoints(zones_pgn.geom) AS dp
FROM konakovskiy.zones_pgn
ORDER BY zones_pgn.id, ((ST_DumpPoints(zones_pgn.geom)).geom), ((ST_DumpPoints(zones_pgn.geom)).path[3])) t1
ORDER BY id;
Вопрос, собственно, в том как мне добавить к этой таблице углы?
Квалификация моя околонулевая, поэтому буду благодарен за конкретный рецепт.