MariaDB:计算2点之间的距离(以公里为单位)

yar*_*rek 3 mysql sql relational-database mariadb

我尝试获得 mariaDB 中两点之间的近似距离。

我使用该 SQL:

SELECT st_distance(POINT(50.6333,3.0667),p) from p
Run Code Online (Sandbox Code Playgroud)

它输出的结果例如:

0
1.9128040446888426
8.103248262271125
Run Code Online (Sandbox Code Playgroud)

mariaDB 似乎不处理 SRID。有没有办法将这些值转换为 km ?(看起来乘以110是相当正确的)

我的目标是避免处理诸如 sin、cos、atan 之类的数学,近似结果对我来说就可以了。

Geo*_*ter 7

st_distance 返回的结果不是公里而是分钟。对于赤道周长 d = 40.075 公里,两分钟之间的距离为 d / 360 = 111,319公里。

虽然纬度之间的距离恒定,但从赤道到极帽的经度之间的距离不断减小。根据您的示例,一个位置的点必须位于法国的某个地方,经度之间的距离约为 70 公里。

由于您不想使用半正矢公式,您还可以使用毕达哥拉斯定理来获得更准确的结果:

# Distance between Eiffel tower and Lille

SELECT ST_DISTANCE(GeomFromText("Point(50.6333 3.0669)"), GeomFromText("Point(48.853. 2.348)")) * 111.38;
-> 213.84627307672486

select sqrt(pow((50.63333 - 48.853) * 111.38,2) + pow((3.0669 - 2.348) * 70, 2));
->204.57903071304386
Run Code Online (Sandbox Code Playgroud)

更新:在回答这个问题大约 3.5 年后实施,将为您提供更准确的ST_DISTANCE_SPHERE()结果