鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

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