Почему вычисление расстояния между двумя координатами с использованием широты и долготы занимает больше времени?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему вычисление расстояния между двумя координатами с использованием широты и долготы занимает больше времени?

Сообщение Anonymous »


Я работаю над одним требованием, согласно которому мне нужно показывать только те записи, которые попадают в радиус круга.
Для этого я использую ядро ​​.net в качестве внутреннего API, используя ядро ​​сущности Framework. Сначала я извлекаю все записи, а после этого вычисляю расстояние на основе записей из базы данных и моей широты и долготы во время выполнения.

Я использовал ссылку ниже и реализовал код для расчета расстояния.
find- расстояние-между-2-координатами-в-сетевом-ядре
Все работает хорошо на локальном хосте, но когда я развертываю эти изменения на сервере, происходит сбой.
Это занимает больше времени, так как существует более 50 записей, которые нужно обработать и вычислить расстояние одну за другой.
Кроме того, во время отладки я обнаружил, что CalculateDistance занимает почти 3-4 секунды на запись для расчета расстояния и представления их в «км»
Кто-нибудь может пролить свет на этот вопрос, поскольку я застрял в этом вопросе более двух дней.

Код: Выделить всё

private static double DistanceTo(double lat1, double lon1, double? lat2, double? lon2, char unit = 'K')
{
double rlat1 = Math.PI * lat1 / 180;
double rlat2 = (double)(Math.PI * lat2 / 180);
double theta = (double)(lon1 - lon2);
double rtheta = Math.PI * theta / 180;
double dist =
Math.Sin(rlat1) * Math.Sin(rlat2) + Math.Cos(rlat1) *
Math.Cos(rlat2) * Math.Cos(rtheta);
dist = Math.Acos(dist);
dist = dist * 180 / Math.PI;
dist = dist * 60 * 1.1515;

switch (unit)
{
case 'K': //Kilometers -> default
return dist * 1.609344;
case 'N': //Nautical Miles
return dist * 0.8684;
case 'M': //Miles
return dist;
}

return dist;
}


Источник: https://stackoverflow.com/questions/781 ... ngitude-ta
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»