DbGeography.Distance вернула неверный результат - PullRequest
0 голосов
/ 30 октября 2019

Вот мой упрощенный код:

var P1 = Common.Geography.CreatePoint((decimal)-73.980000, (decimal)40.7155773);
var P2 = Common.Geography.CreatePoint((decimal)-73.984434, (decimal)40.7155773);
var Distance = P1.Distance(P2);

Вот функция «CreatePoint»:

public static DbGeography CreatePoint(decimal Longitude, decimal Latitude)
{
    return DbGeography.FromText(String.Format(CultureInfo.InvariantCulture, "POINT({0} {1})", Longitude, Latitude));
}

Я видел в нескольких источниках, что результаты должны быть в метрах, поэтому я ожидалсм. 493 :

http://boulter.com/gps/distance/?from=-73.98%2C40.7155773&to=-73.984434%2C40.7155773&units=k

Показатель Google Maps показывает тот же результат (но не позволяет поделиться ссылкой).

ОднакоРезультат, который я получил от функции «Расстояние», равен 374.65 . Я проверил CoordinateSystemId для обоих объектов, и он имеет значение по умолчанию 4326.

Так что я делаю не так? Или в каких единицах этот результат?

1 Ответ

0 голосов
/ 31 октября 2019

Проверьте, не изменился ли где-нибудь порядок широты / долготы.

Я получу 0.37k, если поменяю порядок в ссылке на ваш валун: http://boulter.com/gps/distance/?from=40.7155773%2C-73.98&to=40.7155773%2C-73.984434&units=k, что, вероятно, то, что вы получаете в коде C #.

Обратите внимание, что для карт boulter и google порядок должен быть latitude, longitude;WKT использует противоположный порядок longitude, latitude.

...