postgis 9.1 と rgeo を使用して地図アプリケーションを開発しています。
機能の 1 つは、現在のポイントから XXX km 離れたすべてのポイントを見つけ、そのポイントの右側にもあることを意味します。
次のクエリで試しました:
Environment.where{ st_dwithin(location, factory.point(170.0, 0), 300000 ) }.where('ST_X(location::geometry) > 170')
クエリに対応する SQL: [編集済み]
SELECT "environments".* FROM "environments" WHERE (st_dwithin("environments"."location", ST_PointFromText('POINT(170 0)', 4326), 300000)) AND (ST_X(location::geometry) > 170 );
ここでは、経度 170 度になるようにポイントをハードコードしました。
これの問題は、[-170,-180] 経度のポイントを一致させることができないことです。
postgis関数のみを使用してこれを解決する方法はありますか?
[編集] これは postgis に関する世界中の問題です。このアプリケーションでは、右側の特定の範囲内のポイントのみを見つけることができます.純粋な SQL では解決策を見つけることができません...
ありがとう!