Огромная разница в результате при расчете расстояния ч / б двух точек с использованием долготы-широты - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь рассчитать расстояние между двумя позициями, используя 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

Это немного больше деталей с прикрепленными результатами отладки. enter image description here Любые предложения о том, почему мой результат так отличается?

Обновление:

Я попытался преобразовать позицию, используя следующий код, используя SRID 4326. Однако результаты по-прежнему неверны

enter image description here

1 Ответ

0 голосов
/ 01 ноября 2018

Вы, кажется, использовали координаты lon / lat как SRID (32148); вам нужно преобразовать их.

Этот неправильный запрос дает ваш результат 3,47 м, поскольку координаты не соответствуют 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)
...