将计算出的经纬度距离转换为metres/km
Convert calculated latitude and longitude distance to metres/km
我正在使用 PostGIS 在 SQL 查询中为我计算经纬度距离。它 returns 两个纬度和经度位置之间的距离,但它的单位 returns 是乌鸦飞行时纬度和经度的距离:
"SELECT ST_Distance(ST_MakePoint(\"Users\".\"longitude\",\"Users\".\"latitude\"), ST_MakePoint(,)) FROM \"Users\" WHERE \"Users\".\"username\"="
示例输入:
纬度和经度 1 -> -0.186768 51.450584
纬度和经度 2 -> -0.572662 51.245584
给出:0.436965878800621
所以我的问题是如何将 0.436965878800621
变成例如1000m
我不确定 Calculate distance between 2 GPS coordinates 是否对我有帮助?或者这是否在计算中的某个点开始得太早/太晚。
谢谢
var R = 6371000; // metres
var φ1 = lat1.toRadians();
var φ2 = lat2.toRadians();
var Δφ = (lat2-lat1).toRadians();
var Δλ = (lon2-lon1).toRadians();
var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
Math.cos(φ1) * Math.cos(φ2) *
Math.sin(Δλ/2) * Math.sin(Δλ/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
这是在 javascript。只是给你一个想法 - 你可以改变它。
您可以将 ST_MakePoint()
生成的 geometry
转换为 geography
类型,并且 ST_Distance()
将生成以米为单位的输出:
SELECT ST_Distance(geography(ST_MakePoint("Users"."longitude", "Users"."latitude")),
geography(ST_MakePoint(, )))
FROM "Users"
WHERE "Users"."username" =
我正在使用 PostGIS 在 SQL 查询中为我计算经纬度距离。它 returns 两个纬度和经度位置之间的距离,但它的单位 returns 是乌鸦飞行时纬度和经度的距离:
"SELECT ST_Distance(ST_MakePoint(\"Users\".\"longitude\",\"Users\".\"latitude\"), ST_MakePoint(,)) FROM \"Users\" WHERE \"Users\".\"username\"="
示例输入:
纬度和经度 1 -> -0.186768 51.450584
纬度和经度 2 -> -0.572662 51.245584
给出:0.436965878800621
所以我的问题是如何将 0.436965878800621
变成例如1000m
我不确定 Calculate distance between 2 GPS coordinates 是否对我有帮助?或者这是否在计算中的某个点开始得太早/太晚。
谢谢
var R = 6371000; // metres
var φ1 = lat1.toRadians();
var φ2 = lat2.toRadians();
var Δφ = (lat2-lat1).toRadians();
var Δλ = (lon2-lon1).toRadians();
var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
Math.cos(φ1) * Math.cos(φ2) *
Math.sin(Δλ/2) * Math.sin(Δλ/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
这是在 javascript。只是给你一个想法 - 你可以改变它。
您可以将 ST_MakePoint()
生成的 geometry
转换为 geography
类型,并且 ST_Distance()
将生成以米为单位的输出:
SELECT ST_Distance(geography(ST_MakePoint("Users"."longitude", "Users"."latitude")),
geography(ST_MakePoint(, )))
FROM "Users"
WHERE "Users"."username" =