MySQL 5.7 を使用した2地点間の距離取得

MySQL 5.7 を使用した2地点間の距離取得

Takahiro Iwasa
Takahiro Iwasa
2 min read
GIS MySQL

MySQL 5.7 では、 ST_Distance_Sphere 関数を使用して、2地点間の正確な距離を取得できます。

例 1

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 結果

例 2

2地点が互いに近いから、正確な結果が得られたと思うかもしれません。 もっと長い距離を計測してみましょう。

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 結果

例 3

2地点が北極または南極に近くないから、正確な結果が得られたと思うかもしれません。 スヴァールバル諸島 で計測してみましょう。

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 の空間分析関数を使用すると、エンジニアは地理データを扱うアプリケーションを簡単に開発できます。

この投稿が、お役に立てば幸いです。

Takahiro Iwasa

Takahiro Iwasa

Software Developer at KAKEHASHI Inc.
Involved in the requirements definition, design, and development of cloud-native applications using AWS. Now, building a new prescription data collection platform at KAKEHASHI Inc. Japan AWS Top Engineers 2020-2023.