MySQL 5.7 を使ったポイント間の距離計算
岩佐 孝浩
3 min read
GIS MySQL
この記事は、公開後3年以上が経過しています。
はじめに
URL Copied!
MySQL 5.7 には、地理的ポイント間の 大円距離 を簡単に計算できる強力な ST_Distance_Sphere
関数が実装されています。
ST_Distance_Sphere
関数の引数は 経度が先、緯度が後 の順で指定する必要があります。
実例: ポイント間の距離計算
URL Copied!
短距離の例
URL Copied!
ここでは、大阪市内の 2 点間の距離を計算します。
SQL
SELECT
ST_Distance_Sphere(
GeomFromText('POINT(135.507260 34.693946)'),
GeomFromText('POINT(135.526201 34.687316)')
) AS distance_meter
FROM
dual;
結果
row | distance_meter |
---|---|
1 | 1882.1360099034516 |
Google Map 比較
長距離の例
URL Copied!
次に、JR 大阪駅 と JR 東京駅 の間の距離を計算してみます。
SQL
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;
結果
row | distance_meter |
---|---|
1 | 403048.2752256764 |
Google Map 比較
極地付近の例
URL Copied!
極地付近での精度を示すために、高緯度地域である Svalbard で距離を測定します。
SQL
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;
結果
row | distance_meter |
---|---|
1 | 1110.8932928975748 |
Google Map 比較
MySQL 空間関数のメリット
URL Copied!
MySQL の 空間分析関数 を使用することで、地理データ処理機能を効率的に実装できます。これらの関数はパフォーマンスと精度が最適化されているため、地理計算を必要とするアプリケーションに非常に有用です。
まとめ
URL Copied!
MySQL 5.7 の ST_Distance_Sphere
関数を使用すると、地理的ポイント間の距離を正確に計算できます。これにより、長距離や極地付近でも正確な空間データ処理が可能になります。この機能を活用することで、アプリケーションの地理データ処理を効率化し、大幅に簡素化できます。
Happy Coding! 🚀