MySQL 5.7 を使用した2地点間の距離取得
岩佐 孝浩
2 min read
GIS MySQL
この記事は、公開後3年以上が経過しています。
MySQL 5.7 では、 ST_Distance_Sphere
関数を使用して、2地点間の正確な距離を取得できます。
以下の SQL の POINT 引数は、経度, 緯度の順で指定する必要があります。
例 1
URL Copied!
SQL
URL Copied!
SELECT
ST_Distance_Sphere(
GeomFromText('POINT(135.507260 34.693946)'),
GeomFromText('POINT(135.526201 34.687316)')
) AS distance_meter
FROM
dual;
結果
URL Copied!
row | distance_meter |
---|---|
1 | 1882.1360099034516 |
Google Map 結果
URL Copied!
例 2
URL Copied!
2地点が互いに近いから、正確な結果が得られたと思うかもしれません。 もっと長い距離を計測してみましょう。
SQL
URL Copied!
SELECT
ST_Distance_Sphere(
GeomFromText('POINT(135.495951 34.702488)'), -- JR Osaka station
GeomFromText('POINT(139.767052 35.681168)') -- JR Tokyo station
) AS distance_meter
FROM
dual;
結果
URL Copied!
row | distance_meter |
---|---|
1 | 403048.2752256764 |
Google Map 結果
URL Copied!
例 3
URL Copied!
2地点が北極または南極に近くないから、正確な結果が得られたと思うかもしれません。 スヴァールバル諸島 で計測してみましょう。
SQL
URL Copied!
SELECT
ST_Distance_Sphere(
GeomFromText('POINT(16.379258 78.655621)'), -- Pyramiden Container Hostel
GeomFromText('POINT(16.328528 78.655143)') -- Hotel Tulpan
) AS distance_meter
FROM
dual;
結果
URL Copied!
row | distance_meter |
---|---|
1 | 1110.8932928975748 |
Google Map 結果
URL Copied!
まとめ
URL Copied!
MySQL の空間分析関数を使用すると、エンジニアは地理データを扱うアプリケーションを簡単に開発できます。
この投稿が、お役に立てば幸いです。