PostgreSQL:如何解决 ST_Intersects 中的 "Could not generate outside point" 错误
PostgreSQL: How to resolve "Could not generate outside point" error in ST_Intersects
我在径向地理空间搜索中遇到了一个错误,如果用户定义了一个半径超过任一极点的圆,我会遇到 PostGIS 错误:"BOOM! Could not generate outside point" 调用 ST_Intersects.我知道为什么会这样,但是有没有办法让我 trim 我正在查询的缓冲 geography/geometry 不会导致 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
);
再次查看文档后,我注意到他们建议不要使用 ST_Buffer 进行径向搜索。相反,使用 ST_DWithin(geography, geography, meters) 将避免此问题。
以下查询将满足我的问题:
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
);
我在径向地理空间搜索中遇到了一个错误,如果用户定义了一个半径超过任一极点的圆,我会遇到 PostGIS 错误:"BOOM! Could not generate outside point" 调用 ST_Intersects.我知道为什么会这样,但是有没有办法让我 trim 我正在查询的缓冲 geography/geometry 不会导致 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
);
再次查看文档后,我注意到他们建议不要使用 ST_Buffer 进行径向搜索。相反,使用 ST_DWithin(geography, geography, meters) 将避免此问题。
以下查询将满足我的问题:
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
);