Nano Hash - криптовалюты, майнинг, программирование

Выбор данных на основе рассчитанного расстояния между координатами

База данных хранит 4 точки с координатами вида:

Имя | лат | Длинная

Пункт 1 | 11.111 | 22.222

Пункт 2 | 22.222 | 33.333

Пункт 3 | 44.444 | 55,555

Пункт 4 | 66,666 | 77,777


Технологии:

MS SQL-сервер


Веб-приложение получает текущую широту и долготу пользователя через HTML5, затем оно должно вычислить, какие точки из этих 4 находятся ближе, чем 0,5 км. Как?

Он должен отображать точку 1 и точку 2 на основе этой иллюстрации:

введите здесь описание изображения


  • Что значит ближе 0,5 км? Это расстояние между двумя точками ближе 0,5 км? 27.02.2014
  • @magnusw Да, точно 27.02.2014

Ответы:


1

Использование SQL-сервера:

Вы можете найти расстояние между двумя координатами в километрах, используя приведенную ниже функцию.

CREATE FUNCTION dbo.fnCalcDistanceKM(@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
    RETURNS FLOAT 
    AS
    BEGIN

        RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
    END

Пример использования:

select [dbo].[fnCalcDistanceKM](13.077085,80.262675,13.065701,80.258916)

Справочник

Использование Entity Framework (точка сети):

Entity framework 5.0 позволяет вам писать выражение LINQ, подобное этому

private Facility GetNearestFacilityToJobsite(DbGeography jobsite)
{   
    var q1 = from f in context.Facilities            
             let distance = f.Geocode.Distance(jobsite)
             where distance < 500 * 1609.344     
             orderby distance 
             select f;   
    return q1.FirstOrDefault();
}

Справочник

Я надеюсь, что этого достаточно, чтобы вы начали.

20.03.2014

2

Вам нужно преобразовать вашу точку в тип данных geography. Затем вы можете сделать WHERE @here.STDistance(testPoint) ‹ 500.

Основы использования географической точки для расчета расстояния можно найти в этом вопросе.

27.02.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..