これはやり過ぎかもしれませんが、postgres を使用している場合 postgis をインストールできます 空間データを管理するための拡張。次に、 irb あなたはこのようなことをすることができます:
result = ActiveRecord::Base.connection.execute('SELECT
ST_Contains(ST_SetSRID(ST_MakeBox2D(ST_Point(-0.489, 51.28), ST_Point(0.236, 51.686)), 4326),
ST_SetSRID(ST_Point(-0.1265, 51.483), 4326))')
クエリは、 ST_contains関数 を使用して、ポイントが指定されたbbox内にあるかどうかをチェックしています。
これは戻ります:
=> #<PG::Result:0x007fa517fcbe08 @connection=#<PG::Connection:0x007fa5167f8970 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>>
次に、次のことができます。
result.first
これは戻ります:
{"st_contains"=>"t"}
この時点で-0.7265、44.483 (bboxの外側のポイント)結果は次のようになります:
{"st_contains"=>"f"}
raw sqlを使用したくない場合は、gemを使用して空間データを管理できます。非常に良いものは次のとおりです: rgeo
。作成者の
rgeo を使用する ポイントやポリゴンなどの「ジオメトリ」を使用してモデルの属性を定義してから、含む?
要点 を残しておきます postgisをインストールするための非常に基本的な手順 Ubuntuで。