完全に色々勘違いしてやらかしたので、メモしておく
Point(経度,緯度)で入力する
つまり
Point(longitude,latitude)
の順番
完全に勘違いしていて、POINT(35.383937 137.937163) みたいな感じで入れていたが、POINT(X,Y)なのだから、逆であることが判明する。
というか、上記のサンプルって、範囲外なのにも関わらず、MySQLで入力ができてしまっている。
これがそもそも問題なんじゃないの?
あとGoogle Mapのurlを見ると上記サンプルみたいな感じになってたから、完全に勘違いしていたっぽい
insert してみる
ST_GeomFromText('POINT(139.767165 35.681300)') みたいな感じで入れれるらしい
insert into table_name(location) values(ST_GeomFromText('POINT(139.767165 35.681300)'))
geometryの中身を表示してみる
そのままだと見えないが、以下で表示される
※POINT(139.767165 35.681300) をlocationカラムに入れたと想定
X軸を表示
X(location) //139.767165
Y軸を表示 //35.681300
テキストでまるごと表示
ST_AsText(location) ///POINT(139.767165 35.681300)
距離を測ってみる
ST_Distance_Sphereにlocationを2つ入れればいいらしい。
先程、locationにinsertしてるので、そのデータと比較してみる。
SELECT
ST_Distance_Sphere(ST_GeomFromText('POINT(139.454727 35.652336)'), location)
from table_name
##結果
28407.83316913485 ///単位はメートルらしい
Googleで直線距離を測ったらだいたいこんな感じだったしあってるっぽい。
また何か使うことがあったら、追記していこうと思う。
難しいね。これ
経度と緯度の順番を間違えたので、入れ替える
こんな感じで入れ替えを実施。うまくいったっぽい
update
table_name
set
location = ST_GeomFromText(concat('POINT(',Y(location),' ',X(location),')'))