将 ST_Intersection 与地理类型一起使用时,我看到令人困惑的结果。例如这个查询
select
st_astext(
st_intersection(
ST_GeographyFromText('LINESTRING(-40 40, 40 40)'),
ST_GeographyFromText('LINESTRING(0 30, 0 50)')
))
返回
POINT(0 40)
。这是“几何”对象的交集所期望的结果。因为线串应该被解释为沿着 geography 类型中的大圆,所以我预计交点大约为 POINT(0 47.6)
。比较混乱的是查询
select
st_intersects(
ST_GeographyFromText('LINESTRING(-40 40, 40 40)'),
ST_GeographyFromText('LINESTRING(0 39, 0 41)')
)
实际上返回 false。我是否遗漏了什么,或者 ST_INTERSECTION 函数对于地理类型的行为不正确?
select
st_astext(
st_intersection(
ST_Segmentize(ST_GeographyFromText('LINESTRING(-40 40, 40 40)'), 1000),
ST_Segmentize(ST_GeographyFromText('LINESTRING(0 30, 0 50)'), 1000)
))
这将按预期返回
POINT(0 47.60591395513534)
。