PostGIS: ST_Intersects () между двумя географическими регионами, иногда возвращает ложный результат

У меня проблема с пересечением двух географических регионов в PostGIS: у меня есть таблица1 с географическим столбцом, заполненная несколькими полигонами в wgs84 (по одному на строку). Вторая таблица2 также имеет столбец географии, заполненный мульти-полигонами в wgs84 (по одному в каждой строке). Затем я делаю пересечение (выбираю (..), где ST_Intersects ()) между ними обоими.

В некоторых (очень редких) случаях мне кажется, что это не работает правильно, потому что пересечение возвращает false, где ожидается истина: у меня есть перепроецированный tif, представляющий географию из одной строки в table1, он охватывает большую область в Танзания. У меня также есть перепроецированный tif для одной строки в table2, он покрывает только небольшую площадь в несколько км². В ArcMap оба пересекаются, маленькая область находится на краю большой, но PostGIS возвращает false для ST_Intsersects (geog1, geog2).

Когда я экспортирую table1 как шейп-файл через дампер, угловые точки географии соединяются прямыми линиями, а не частями больших кругов. Тогда я получаю тот же результат: область из таблицы 2 теперь находится за пределами области из таблицы 1. Итак, я думаю, PostGis также выполняет вычисления с этим упрощенным многоугольником, но, насколько я понял, география предназначена для расчета с частями больших кругов, а не с прямыми линиями?

Я уже перепробовал все, чтобы убедиться, что обе таблицы действительно заполнены географией, а не геометрией, но даже явное приведение к географии не изменило результатов.

Случалось ли что-то подобное раньше или вы знаете, что я сделал не так? Может быть проблема, что table2 также имеет геометрию и растровый столбец (= 3 пространственных столбца вместе)?


person David Leimbach    schedule 21.02.2013    source источник
comment
как насчет SRID? Вы их проверяли, одинаковы ли они для обоих.   -  person azzaxp    schedule 22.02.2013
comment
Да, srids для geography-cols одинаковые в обеих таблицах, 4326 для WGS84.   -  person David Leimbach    schedule 06.03.2013


Ответы (1)


Не видя вашей реальной геометрии, я не могу сказать наверняка, но почти наверняка вы неверно истолковываете, как линии большого круга будут ограничивать вашу область, и PostGIS понимает это правильно, особенно если вы имеете дело с отношениями вблизи границ. Использование строк линий Google Планета Земля (не многоугольников, они не отображаются с использованием больших кругов) для визуализации примеров иногда может быть полезным для пояснения того, как все работает визуально.

person Paul Ramsey    schedule 22.02.2013
comment
Трудно представить себе все эти формы, но, по крайней мере, одна программа должна быть неправильной: PostGIS или инструмент командной строки от НАСА, который перепроецировал файлы в GeoTif, поскольку оба создают разные границы для одного и того же файла (а затем разные результаты для пересекаются со второй фигурой). Проблема в том, что я не вижу, что на самом деле делает PostGIS, я могу использовать дампер только для получения шейп-файла, но, конечно, это не обязательно должны быть те же формы, с которыми PostGIS работает внутренне при использовании географии. - person David Leimbach; 06.03.2013
comment
Если я интерпретирую то, что вы говорите, сами формы - просто квадраты. Точнее, это объекты, обозначенные четырьмя углами. Программное обеспечение различается тем, как оно интерпретирует линии, соединяющие эти углы. - person Paul Ramsey; 07.03.2013
comment
Да, у меня есть 4 точки поворота. И насколько я понял, геометрия должна соединять их прямыми линиями, как на плоскости, а география должна соединять их с частями больших кругов вокруг земного шара. Дампер дает мне шейп-файл, в котором точки соединены прямыми линиями, в то время как перепроецированные файлы показывают границы, которые являются частью больших кругов. Чего я не знаю, так это того, что PostGIS делает внутри при пересечении с двумя географическими точками. - person David Leimbach; 08.03.2013
comment
Линии между точками интерпретируются программным обеспечением, они не присущи формату файла. Дампер в шейп-файл дает вам четыре (ну, пять) баллов. Какое бы программное обеспечение вы ни просматривали, этот файл интерпретирует связи между этими точками как угодно. - person Paul Ramsey; 08.03.2013
comment
Назовите угловые координаты двух квадратов, которые, по вашему мнению, неверно истолковывает география PostGIS. - person Paul Ramsey; 08.03.2013
comment
Я не могу воспроизвести их прямо сейчас, но, возможно, я нашел объяснение: ST_Intersection - (T) Возвращает геометрию, которая представляет общую часть geomA и geomB. Реализация географии преобразует геометрию для пересечения, а затем преобразует обратно в WGS84. (postgis.refractions.net/docs/ST_Intersection.html) Если ST_Intersects () также делает преобразование в геометрию, это все объяснит. - person David Leimbach; 27.03.2013
comment
Это не. ST_Intersects (geom, geom) работает в сферическом пространстве. Никакого преобразования. - person Paul Ramsey; 28.03.2013