GISデータをMySQLで扱う方法を調べてみた
ポリラインをMySQLに格納して使う。
Webコンテンツ開発に関するメモなど MySQL5.6で地図データを使ってみる。
ST_distance()
ポリラインをgというカラムに格納したテーブルの距離を調べるクエリを試してみる。 ID1との距離を算出
SELECT name,id,st_distance((SELECT g FROM crec.Route WHERE id=1), g) FROM crec.route;
結果
'test', '1', '0'
'test', '2', '0.0007700718007337501'
'test', '3', '1.0106265655027926'
3が三島市、1,2は東京の竹橋のあたり なんか、1が100kmとなっているのかな?
LINESTRINGって形式だけど汎用性気になるなぁ。
でもって、MySQLに入れたデータの確認をしてみる。
select astext(g) from crec.Route;
'LINESTRING(35.690702954872506 139.75269198417664,35.69073 139.75275000000002,35.69008 139.75327000000001)'
まぁ、こんな感じでとれる。前述のブログではpostgreはGeoJSONという形式 でもとれるとあった。
私のアプリではLINESTRING()を、javascriptでGooglemapsのPolylineから整形して、 クライアントからサーバに送っている。この辺どうなんだろうと、気にかけていたのだが、 GeoJSONの方が汎用性ありそうな気もする。
と思って調べていたら、 GeoJSONtoGoogleMapsというライブラリがあったりする。 importing data