ST_Intersect在球面几何和地理位置之间有什么区别?

时间:2018-05-25 16:21:55

标签: geospatial postgis

我遇到了一种奇怪的情况,我试图找到(部分)多边形的任何地理空间物体。当我使用 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

1 个答案:

答案 0 :(得分:2)

geography数据类型的操作已完成over a spheregeometry数据类型的操作是通过飞机完成的。

连接平面上两点的最短线是一条直线。

连接球体上两点的最短线是弧。这个弧称为great circle arc,通过将球体与穿过2个点和地球中心的平面相交来构建。

因此,电弧通过-12; 50.7N和+12; 50.7N,并通过0附近的点; 51.3N。这适用于线条,也适用于多边形边界。

这个doc有一些有趣的图形来理解geography类型

背后的概念