MySQL 5.7 を使ったポイント間の距離計算

MySQL 5.7 を使ったポイント間の距離計算

岩佐 孝浩
岩佐 孝浩
3 min read
GIS MySQL

はじめに

MySQL 5.7 には、地理的ポイント間の 大円距離 を簡単に計算できる強力な ST_Distance_Sphere 関数が実装されています。

実例: ポイント間の距離計算

短距離の例

ここでは、大阪市内の 2 点間の距離を計算します。

SQL

SELECT
  ST_Distance_Sphere(
    GeomFromText('POINT(135.507260 34.693946)'),
    GeomFromText('POINT(135.526201 34.687316)')
  ) AS distance_meter
FROM
  dual;

結果

rowdistance_meter
11882.1360099034516

Google Map 比較

長距離の例

次に、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;

結果

rowdistance_meter
1403048.2752256764

Google Map 比較

極地付近の例

極地付近での精度を示すために、高緯度地域である 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;

結果

rowdistance_meter
11110.8932928975748

Google Map 比較

MySQL 空間関数のメリット

MySQL の 空間分析関数 を使用することで、地理データ処理機能を効率的に実装できます。これらの関数はパフォーマンスと精度が最適化されているため、地理計算を必要とするアプリケーションに非常に有用です。

まとめ

MySQL 5.7 の ST_Distance_Sphere 関数を使用すると、地理的ポイント間の距離を正確に計算できます。これにより、長距離や極地付近でも正確な空間データ処理が可能になります。この機能を活用することで、アプリケーションの地理データ処理を効率化し、大幅に簡素化できます。

Happy Coding! 🚀

岩佐 孝浩

岩佐 孝浩

Software Developer at KAKEHASHI Inc.
AWS を活用したクラウドネイティブ・アプリケーションの要件定義・設計・開発に従事。 株式会社カケハシで、処方箋データ収集の新たな基盤の構築に携わっています。 Japan AWS Top Engineers 2020-2023