我在径向地理空间搜索中遇到了一个错误,如果用户定义了一个半径超过任意一个极点的圆圈,我会遇到PostGIS错误:" BOOM!无法生成外部点"通过调用ST_Intersects引发的。我知道为什么会发生这种情况,但有没有办法让我修剪我要查询的缓冲地理/几何,以免它导致ST_Intersects遇到任何外部点?
可以使用以下查询复制我的问题:
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
);
答案 0 :(得分:1)
再次查看文档后,我注意到他们建议不要使用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
);