2010-08-02 4 views

ответ

1

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

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

+0

Кстати, вы можете найти более экспертные ответы на вопросы, связанные с ГИС, на выделенном сайте http://gis.stackexchange.com/ – amercader

0

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

2

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

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

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

+0

Почему PostGIS не разрешает эти операции по типам географии и возвращать ошибки, если формы не имеет смысла на картезианском плане? –

+0

Географии не имеют смысла на картезианском плане, это вопрос градусов (ха-ха). Линия между двумя точками в сферической геометрии - большой круг, а линия между двумя точками в декартовой геометрии - прямая. По мере того, как точки становятся все ближе и ближе, прямая линия становится лучшим и лучшим приближением дуги, но она никогда не бывает точным. –