![](/img/trans.png)
[英]Calculating distance between two points using latitude longitude and altitude (elevation)
[英]Huge Difference in result when calculating distance b/w two points using longitude-latitude
我正在嘗試使用SRID(32148)計算兩個位置之間的距離,這是我的兩點
Point-1:
Lat:46.489767 Long:-119.043221
Point-2:
Lat:47.610902 Long:-122.336422
該網站指出,這兩個點的距離(以英里為單位)是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使用以下代碼來轉換位置。但是結果仍然不正確
您似乎已將lon / lat坐標用作SRID(32148)坐標; 您需要對其進行轉換。
這個錯誤的查詢給您的結果是3.47m,因為坐標與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 mi結果:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.