勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

MySQLで経度緯度から半径○Kmのデータを抽出

   

経度と緯度をtext型として格納しているMySQLのテーブルがあり、指定した経度緯度から半径○kmのデータ一覧を抽出したかった。以下に方法をメモ。

 

■ソース

 

■その他

最初は経度と緯度から0.001ずつぐらい引いたり足したりして抽出したけどかなり位置情報が偏った。今回の方法はきっちりと指定した経度緯度を中心に抽出できた。

・参考サイト

https://www.firstlogic.co.jp/blog/lab/raku/71

 

SQL文内のlongを`(アクサングラーブ)で囲んでいるのは予約語に当たるため。

・予約語

https://dev.mysql.com/doc/refman/5.6/ja/reserved-words.html

 

尚、経度緯度をMySQLで扱う場合はfloatやtextではなくgeometryを使うのが良いっぽい。

・参考サイト

http://blog.asial.co.jp/473

 - MySQL

  関連記事

MySQLでJOINの高速化

JOINで無茶苦茶悩んだのでメモ。やりたかった事は、MySQLで テーブルAには ...

コマンドでMySQLに郵便番号データを入れる

練習としてコマンドから郵便番号データを入れた際のメモ。 --------- 1: ...

MySQLで開始から終了日付内を調べたいとき

等号不等号でもできるけど、BETWEENというのがよさそう。 ■参考サイト ht ...

エラー管理まとめ

■エラーログをとる。 error_reporting(E_ALL ^ E_NOT ...

MySQLでデータがあれば上書き、無ければ挿入する

既存のソースを編集時に「REPLACE INTO~~」 という見たことの無いSQ ...

MySQLでdatetime型にもインデックスを使用

ログ関連のデータを格納するテーブルがあり、集計を行う際に非常に時間がかかった。レ ...

MySQLで加算しつつNULL値は0にする

いくつかのコードに対して投票を行い、 その合計値をスコアとして出したい。 ただ、 ...

MySQLでカラム内容によって条件分岐させたい

MySQLでカラムの内容によって条件を分岐させたかった。またPHPで処理するので ...

MySQLでWhere句を使ってカラム指定でデータコピー

MySQLで大量のデータを保存しているテーブルがあり、そのデータを絞った上で尚且 ...

MySQLのエラーメール送付

MySQLエラーを取得してエラーメール送付。 <? error_repor ...