2017-03-15 2 views
1

私は放射状の地理空間検索のバグに遭遇しました。ユーザが半径がいずれかの極を超える円を定義すると、PostGISエラーが発生します。 ST_Intersectsの呼び出しによってスローされた外部ポイントを生成できませんでした。私はなぜこれが起こっているのか知っていますが、ST_Intersectsが外部の点に遭遇することはありませんので、バッファリングされた地理/ジオメトリをトリミングする方法があります。PostgreSQL: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 
); 

答えて

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 
); 

次のクエリでは、私の質問を満足させます

関連する問題