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

Takahiro Iwasa
(岩佐 孝浩)

Takahiro Iwasa (岩佐 孝浩)

Software Developer at KAKEHASHI Inc.
処方箋データ収集基盤の設計・開発・運用に携わっています。