расщепление полигонов с использованием точек - PullRequest
1 голос
/ 23 декабря 2011

Я хотел бы извлечь части многоугольника, используя точки, чтобы разрезать его.Я видел ST_Dump и ST_Split, но, похоже, они не работают.Должен ли я создать больше точек, чтобы создать отрезок и использовать st_split, чтобы отрезать их?Я думаю, что это слишком много, но я бы сделал это, если это необходимо

1 Ответ

0 голосов
/ 28 декабря 2011

Итак, вы хотите линейную линию с каждого края многоугольника?Я думаю, что у меня есть ответ, если это правда.

Во-первых: я бы создал представление, в котором все ваши многоугольники имеют линейные линии.Как вы указали, вы можете использовать ST_Boundary.(Так что второй запрос легко писать и читать)

CREATE VEIW my_linestrings as 
    SELECT id,..., ST_BOUNDARY(the_geom) 
    FROM <yourtable>

Второй: поскольку это линейная строка, вы можете использовать ST_POINTN для получения n-й точки и ST_MAKELINE для создания двухсегментной линии.

SELECT id,..., ST_MakeLine(ST_PointN(the_geom,x),ST_PointN(the_geom,x+1))
FROM my_linestrings

ST_MakeLine даст вам ваш сегмент линейных линий.Вы можете сделать цикл в Python, чтобы повторить все точки.Если это то, что вам нужно сделать, вероятно, было бы лучше создать новую таблицу с этими сегментами.

Кроме того, присоединяйтесь к нам на gis.stackexchange.com;) Этот вопрос аналогичен вашему и использует SQL для создания серии для цикла по всем геометриям (вместо python).

...