Объединения полигонов (ST_UNION для типа Geography)

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

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

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


person Joey    schedule 02.08.2010    source источник


Ответы (3)


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

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
       ))

Наслаждаться!

person Paul Ramsey    schedule 24.08.2010
comment
Почему бы PostGIS не разрешить эти операции с географическими типами и не вернуть ошибки, если формы не имеют смысла на декартовой плоскости? - person Dave Lowther; 01.09.2010
comment
Никакая география не имеет смысла на декартовой плоскости, это вопрос градусов (ха-ха). Линия между двумя точками в сферической геометрии — это большой круг, а линия между двумя точками в декартовой геометрии — прямая линия. По мере того, как точки становятся все ближе и ближе, прямая линия все лучше и лучше приближается к дуге, но она никогда не бывает точной. - person Paul Ramsey; 19.10.2010

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

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

person amercader    schedule 02.08.2010
comment
Кстати, вы можете найти ответы экспертов на вопросы, связанные с ГИС, на специальном сайте gis.stackexchange.com. - person amercader; 02.08.2010

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

person Dave Lowther    schedule 20.08.2010