Я столкнулся с особой ситуацией, когда пытаюсь найти любые геопространственные объекты, которые (частично) лежат в многоугольнике.Когда я применяю функцию ST_Intersect
к двум геометриям, используя WGS84 SRID , пересечение многоугольника и точки к северу от многоугольника возвращает FALSE
, как и ожидалось:
SELECT ST_Intersects(
ST_GeomFromText('POLYGON((-12 0,12 0,12 50.7,-12 50.7,-12 0))', 4326),
ST_GeomFromText('POINT(6.0 50.9)', 4326)
);
Теперь, когда я запускаю этот же запрос, но с двумя географиями вместо геометрий, запрос возвращает TRUE
:
SELECT ST_Intersects(
ST_GeogFromText('POLYGON((-12 0,12 0,12 50.7,-12 50.7,-12 0))'),
ST_GeogFromText('POINT(6 50.9)')
);
Я ожидаю, что версия географии использует кратчайшее расстояние большого круга для создания многоугольника, в то время как версия геометрии создает многоугольник на плоской плоскости и только затем проецирует его на WGS84 эллипс.
Может ли кто-нибудь проверить или опровергнуть мои подозрения?
Я использую Postgresql 9.6 с PostGis 2.4.4
.