0

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 では解決策を見つけることができません...

ありがとう!

4

1 に答える 1

0

geographyタイプではなくタイプの使用を検討してくださいgeometry

于 2014-05-20T05:29:21.397 に答える