完全に色々勘違いしてやらかしたので、メモしておく

Point(経度,緯度)で入力する

つまり

Point(longitude,latitude)

の順番

完全に勘違いしていて、POINT(35.383937 137.937163) みたいな感じで入れていたが、POINT(X,Y)なのだから、逆であることが判明する。

というか、上記のサンプルって、範囲外なのにも関わらず、MySQLで入力ができてしまっている。

これがそもそも問題なんじゃないの?

あとGoogle Mapのurlを見ると上記サンプルみたいな感じになってたから、完全に勘違いしていたっぽい

1番目と2番目、本来1番目が正しいらしい。
X軸は経度ですから、東西180度存在する。

ところが、Y軸は南北90度なので、
2行目以降は限界を突破してることになる。

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),')'))

コメント