Объединения полигонов (ST_UNION для типа География) - PullRequest
0 голосов
/ 02 августа 2010

Я ищу функцию, которая будет возвращать пересечение 2 или более полигонов (тип географии).

Мне известно о ST_UNION, ST_COLLECT, но это работает только для типа геометрии.

Любой совет будет действительно оценен

Ответы [ 3 ]

2 голосов
/ 24 августа 2010

Вы можете привести к геометрии и выполнить там операцию.Вам просто нужно быть осторожным, чтобы ваши фигуры имели смысл при оценке на декартовой плоскости.Обтягивают ли они линию даты или полюсы?

select geography(st_union(a::geometry, b::geometry))

Если фигуры имеют очень длинные ребра, тогда разница в интерполяции ребер между интерполяцией больших кругов, которую вы хотите на сфере, и линейной интерполяцией, которую вы получаете на плоскостивступает в игру, и вам нужно научиться сохранять формы краев как можно лучше, работая в соответствующей картографической проекции (автоматически выбирается с помощью функции bestsrid).

select geography(
         st_transform(
           st_union(
             st_transform(a::geometry, _st_bestsrid(a,b)),
             st_transform(b::geometry, _st_bestsrid(a,b))
           ),
           4326
       ))

Наслаждайтесь!

1 голос
/ 02 августа 2010

Тип Geography поддерживает только небольшое подмножество функций PostGIS. Здесь вы можете проверить их все и посмотреть, подходит ли вам какой-либо из них:

http://postgis.refractions.net/docs/ch08.html#PostGIS_GeographyFunctions

0 голосов
/ 20 августа 2010

Рассматривали ли вы ST_Transform в геометрический тип, вложенный в ST_Union или ST_Collect?Документы PostGIS (по ссылке amercader) говорят, что они используют эту функцию для некоторых географических операций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...