我在我的径向地理空间搜索中遇到了一个错误,如果用户定义了一个半径超过任意一个极点的圆,我会遇到PostGIS错误:“BOOM!无法生成ST U Intersects调用引发的“外部点”。我知道为什么会发生这种情况,但有没有办法修剪我正在查询的缓冲地理/几何图形,以使它不会导致ST U相交遇到任何外部点?
可以使用以下查询复制我的问题:

SELECT ST_intersects(
    ST_BUFFER(
        ST_geomFromGeoJSON('{"type":"Point","coordinates":[-110.390625,42.293564192170095]}')::geography,
        17712927.122199997
    ),
    ST_geomFromGeoJSON('{"type":"Point","coordinates":[-28.828124999999996,84.7060489350415]}')::geography
);

最佳答案

在再次查看文档之后,我注意到他们建议不要使用ST_Buffer进行径向搜索。相反,使用ST_DWithin(地理、地理、米)可以避免这个问题。
以下查询将满足我的问题:

SELECT ST_DWithin(
    ST_geomFromGeoJSON('{"type":"Point","coordinates":[-110.390625,42.293564192170095]}')::geography,
    ST_geomFromGeoJSON('{"type":"Point","coordinates":[-28.828124999999996,84.7060489350415]}')::geography,
    17712927.122199997
);

关于postgresql - PostgreSQL:如何解决ST_Intersects中的“无法生成外部点”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42812663/

10-11 01:55