我遇到了一种奇怪的情况,我试图找到(部分)多边形的任何地理空间物体。当我使用 WGS84 SRID 在两个几何图形上应用ST_Intersect
函数时,多边形和多边形的交点清楚地在多边形的北边按预期返回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 椭圆上投影。
有人可以证实或揭穿我的怀疑吗?
我使用PostGis 2.4.4运行postgresql 9.6
答案 0 :(得分:2)
geography
数据类型的操作已完成over a sphere。 geometry
数据类型的操作是通过飞机完成的。
连接平面上两点的最短线是一条直线。
连接球体上两点的最短线是弧。这个弧称为great circle arc,通过将球体与穿过2个点和地球中心的平面相交来构建。
因此,电弧通过-12; 50.7N和+12; 50.7N,并通过0附近的点; 51.3N。这适用于线条,也适用于多边形边界。
这个doc有一些有趣的图形来理解geography
类型