簡體   English   中英

使用經度-緯度計算距離b / w兩點時結果的巨大差異

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM