PostGIS ST_Intersection 与地理类型的 ST_Intersects 冲突

问题描述 投票:0回答:1

将 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 函数对于地理类型的行为不正确?

postgis
1个回答
0
投票

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)

    

© www.soinside.com 2019 - 2024. All rights reserved.