mroongaを使ってchikamap.
筆者は趣味でプログラムなどをしています。元々はWindowsをメインで使っていましたが,
今回は,
chikamap.comとは
chikamap.
サイトとしてはデータを表示するだけなので構築は比較的簡単な部類だと思いますが,
地図への地価履歴表示
検索の方法はデータベースに登録してある地価の位置情報を,
その周辺の公共施設,交通機関を表示
この地図に表示された地価のポイントをクリックすることで,
データベース自体には上のような四角いエリア内のデータを検索するような機能は元々あったりしますが,
しかし位置情報からのデータベース検索方法を色々探している内に,
groonga導入にあたってですがgroongaにはgroongaを直接使う以外に,
- rroonga
groongaをRubyから使えるようにしたもので,
MySQLなどのデータベースを使わずに検索ができる。 - mroonga
groongaをMySQLから使えるようにしたもので,
MySQLから直接検索ができる。
groongaを直接コマンドから実行しても良いのですがchikamap.
データベースへの位置情報データ登録について
地価の情報,point
というspatialデータタイプを使うことになります。しかし素のRailsではmigrationでエラーが出るためactiverecord-mysql2spatial-adapter gemを使っています。これを使うとt.
のようにmigrationが書けます。
# db/migrate/xxxxxxx.rb
create_table :model_names, options: "ENGINE=mroonga" do |t|
# point データタイプ
t.point :location, null: false
end
データはRuby On Railsでいつもやるようにモデルを経由してsave
していけば良いので,
四角いエリアのデータ検索
データを入れた後,
north_west = "#{north_west_longitude} #{north_west_latitude}"
south_east = "#{south_east_longitude} #{south_east_latitude}"
ModelName.where("MBRContains(GeomFromText('LineString(#{north_west}, #{south_east})'), location)")
難しいことは抜きにして,
Google マップAPIのgetBounds()
から表示中の南西と北東の緯度経度