我正在尝试使用SRID(32148)计算两个位置之间的距离 这是我的两点
Point-1:
Lat:46.489767 Long:-119.043221
Point-2:
Lat:47.610902 Long:-122.336422
This网站上指出,这两个点的距离(以英里为单位)是173.388,但是从下面得到的代码中,我得到的结果是0.002161632093865483
这是我正在使用的代码
employeeloc = modelEmployee.objects.filter(user__first_name="adam")[0].location
employerloc = modelEmployer.objects.filter(user__first_name="adam")[0].location
meters = employerloc.distance(employeeloc)
#Caluclate in miles
dobj = Distance(m=meters)
mi = dobj.mi
这是附加了调试结果的更多细节 关于我的结果为何如此不同的任何建议?
更新:
我尝试使用SRID 4326使用以下代码转换位置。但是结果仍然不正确
答案 0 :(得分:2)
您似乎已将lon / lat坐标用作SRID(32148)坐标;您需要对其进行转换。
此不正确查询给出的结果为347万,因为坐标与SRID不匹配:
select
st_distance(
st_setsrid(st_point(-122.336422,47.610902),32148),
st_setsrid(st_point(-119.043221,46.489767),32148))
-- 3.47880964046985
此查询为您提供了您期望的173.71英里结果:
select
st_distance(
st_transform(st_setsrid(st_point(-122.336422,47.610902),4326),32148),
st_transform(st_setsrid(st_point(-119.043221,46.489767),4326),32148))
--279558.106935732m (=173.71mi)
这与该查询的结果类似:
select
st_distance(
st_setsrid(st_point(-122.336422,47.610902),4326)::geography,
st_setsrid(st_point(-119.043221,46.489767),4326)::geography)
--279522.55326056 m (= 173.69 mi)