Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Geography и расстояние в км  [new]
Newbie123
Guest
Добрый день, коллеги.
Столкнулся с такой задачей: имеется точка X на карте с заданными GPS координатами. И имеется еще несколько точек с рандомными GPS координатами. Как узнать, какие из этих точек входят в окружность c радиусом в N-км и центром в точке X с изначально заданными координатами?

Хотя бы ткните носом в статейку какую-нибудь..

Спасибо!
15 июл 15, 11:04    [17894021]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Поиск
15 июл 15, 11:06    [17894026]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
Glory
Member

Откуда:
Сообщений: 104760
https://msdn.microsoft.com/en-us/library/bb933968.aspx
15 июл 15, 11:06    [17894029]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4279
Newbie123
Добрый день, коллеги.
Столкнулся с такой задачей: имеется точка X на карте с заданными GPS координатами. И имеется еще несколько точек с рандомными GPS координатами. Как узнать, какие из этих точек входят в окружность c радиусом в N-км и центром в точке X с изначально заданными координатами?

Хотя бы ткните носом в статейку какую-нибудь..

Зачем вам статья?
1. Рассчитайте расстояния по X и по Y от точки до центра окружности. Простым вычитанием соответственно.
2. Если корень квадратный из суммы квадратов расстояний меньше R-радиуса, то точка внутри круга.
15 июл 15, 11:21    [17894114]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
o-o
Guest
SQL2008,

простым вычитанием???
приведите пример.
мы же не на плоской бумажке обитаем, а на шаре,
там будет офигительная формула с углами.
пойди пойми, на что ее искать.
может, вот такое:
Haversine formula
15 июл 15, 11:33    [17894180]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4279
o-o
SQL2008,

простым вычитанием???
приведите пример.
мы же не на плоской бумажке обитаем, а на шаре,
там будет офигительная формула с углами.
пойди пойми, на что ее искать.
может, вот такое:
Haversine formula

Думаете в правильном направлении, но вот вопрос - вам нужно расстояние, которое "идти" по поверхности,
или "прорыть туннель"?
15 июл 15, 11:50    [17894287]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
o-o
Guest
SQL2008,
я про вот это
дуга короче прямой
и про то, что плоская геометрия -- это не то, что в реальности.
не годятся школьные формулы при вычислении расстояний на земле по данным координатам
15 июл 15, 12:13    [17894369]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
dvim
Member

Откуда: Санкт Петербург
Сообщений: 680
Newbie123,

c# GeoCoordinate.GetDistanceTo - есть уже методы, считающие по "земле"

У вас расстояния какие ?
Просто , при решение задачи внутриобластных доставок кривизной земли можно пренебречь.
15 июл 15, 13:11    [17894706]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
o-o
а на шаре
GEOGRAPHY предусматривает модель Земли в виде эллипсоида вращения.
15 июл 15, 14:34    [17895222]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
Okmor
Member

Откуда:
Сообщений: 132
declare	@Latitude1 [float] = 48.915019
declare	@Longitude1 [float] = 24.714181
declare	@Latitude2 [float] = 48.917019
declare	@Longitude2 [float] = 24.713181

 select GEOGRAPHY::Point(@Latitude1, @Longitude1, 4326).STDistance(GEOGRAPHY::Point(@Latitude2, @Longitude2+1, 4326)) [Расстояние в метрах] 
15 июл 15, 14:37    [17895242]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
o-o
Guest
iap
o-o
а на шаре
GEOGRAPHY предусматривает модель Земли в виде эллипсоида вращения.

мой ответ был не ТС и совсем не про GEOGRAPHY, не про STDistance, а тому, кто предложил
SQL2008
Зачем вам статья?
1. Рассчитайте расстояния по X и по Y от точки до центра окружности. Простым вычитанием соответственно.
2. Если корень квадратный из суммы квадратов расстояний меньше R-радиуса, то точка внутри круга.
15 июл 15, 14:51    [17895329]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
Newbie123
Guest
Okmor,

А что такое 4326?
15 июл 15, 15:54    [17895693]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Newbie123, это SRID.

https://msdn.microsoft.com/en-us/library/bb933811.aspx

https://en.wikipedia.org/wiki/SRID
15 июл 15, 16:04    [17895765]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4279
o-o
кто предложил Простым вычитанием соответственно.

Любую идею можно извратить, доведя её до крайности!
Для нужно ТС достаточно того, что я предложил.
Или полагаете, что он хочет убедиться, что взрыв атомной бомбы на Южном Полюсе не заденет его в Карелии?
15 июл 15, 16:39    [17896008]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
o-o
Guest
SQL2008,

кроме того, что расстояние НЕ считается по предложенной вами формуле,
надо еще и разобраться с форматом координат, это градусы, как я вижу.
вас ведь не затруднит привести окончательную формулу, правда?
при входных данных центра окружности 41.8346, 12.50077
ответьте, плиз, попадает ли в радиус 70 км точка 41.59052, 13.05992?
мне ответ известен и кстати, он не совпадает с тем расстоянием, что выдается через STDistance,
т.е. я не в курсе дел, в каких единицах измерения отдается результат при 4326,
но на метры это не похоже
15 июл 15, 17:57    [17896420]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
o-o
Guest
о, да там в формуле засада:
Okmor
declare	@Latitude1 [float] = 48.915019
declare	@Longitude1 [float] = 24.714181
declare	@Latitude2 [float] = 48.917019
declare	@Longitude2 [float] = 24.713181

 select GEOGRAPHY::Point(@Latitude1, @Longitude1, 4326).STDistance(GEOGRAPHY::Point(@Latitude2, @Longitude2+1, 4326)) [Расстояние в метрах] 

a без этого да, правильное расстояние.
короче, STDistance -- GOOD, а от SQL2008 ответ ждем-с
15 июл 15, 18:05    [17896437]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
Okmor
Member

Откуда:
Сообщений: 132
o-o,

+1 нужно убрать. - копировал из одного своего отчёта.
15 июл 15, 21:22    [17897070]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4279
o-o
... а от SQL2008 ответ ждем-с

Ох вы и язва, коллега!
Да я просто мимо проходил
Если хотите, то можете в графе "слился" поставить галочку

Будет время - дам разъяснение своей позиции.
16 июл 15, 11:11    [17898564]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
o-o
Guest
SQL2008
Да я просто мимо проходил

да я тоже.
и geography впервые вижу (ну в смысле вот взять и применить).
зато теперь знаю, как расстояния по координатам халявно получать без написания формул

кстати, почему в вашем решении 2 пункта?
какая сумма квадратов расстояний?
всего же 1 расстояние надо...
если есть координаты центра окружности, то расстояние от центра
до исследуемой точки это уже и есть ответ.
меньше радиуса -> попала точка, больше -> не попала
16 июл 15, 11:43    [17898705]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
o-o
SQL2008
Да я просто мимо проходил

да я тоже.
и geography впервые вижу (ну в смысле вот взять и применить).
зато теперь знаю, как расстояния по координатам халявно получать без написания формул

кстати, почему в вашем решении 2 пункта?
какая сумма квадратов расстояний?
всего же 1 расстояние надо...
если есть координаты центра окружности, то расстояние от центра
до исследуемой точки это уже и есть ответ.
меньше радиуса -> попала точка, больше -> не попала
Окружность - это географический объект
Точка - тоже.
Есть же функция, возвращающая 1, если один объект пересекается с другим,
и 0, если нет. И не надо ничего считать - знай себе функцию вызывай!
16 июл 15, 11:48    [17898725]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
o-o
Guest
iap,

я же пишу, впервые вижу эту всю географию.
ну раз есть ф-ция и вы не признаетесь какая, то сейчас откопаю и проверю
16 июл 15, 12:00    [17898790]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
o-o
Guest
iap
Окружность - это географический объект
Точка - тоже.
Есть же функция, возвращающая 1, если один объект пересекается с другим,
и 0, если нет. И не надо ничего считать - знай себе функцию вызывай!

фигнища какая-то с окружностью или я не в состоянии найти Circle для своего 2008 R2.
есть некий BufferWithTolerance,
ну и? не проще ли посчитать точное расстояние?
а то мое расстояние в 53854,48 метров по мнению BufferWithTolerance входит в радиус 53863m, но не входит в 53862m.
гимор какой, нечитабельно и ответ с промашкой.
declare	@Latitude1 [float] = 41.8346
declare	@Longitude1 [float] = 12.50077
declare	@Latitude2 [float] = 41.59052
declare	@Longitude2 [float] = 13.05992

 select GEOGRAPHY::Point(@Latitude1, @Longitude1, 4326).STDistance(GEOGRAPHY::Point(@Latitude2, @Longitude2, 4326)) [Расстояние в метрах],
        GEOGRAPHY::Point(@Latitude1, @Longitude1, 4326).STIntersects(GEOGRAPHY::Point(@Latitude2, @Longitude2, 4326).BufferWithTolerance(53863, 0.000000000000001, 1)) as  within_53863,
        GEOGRAPHY::Point(@Latitude1, @Longitude1, 4326).STIntersects(GEOGRAPHY::Point(@Latitude2, @Longitude2, 4326).BufferWithTolerance(53862, 0.000000000000001, 1)) as  within_53862
---
Расстояние в метрах	within_53863	within_53862
53854,4806391985	   1	            0
16 июл 15, 12:24    [17898905]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
o-o
фигнища какая-то с окружностью или я не в состоянии найти Circle для своего 2008 R2.
Да. Нет окружности. Есть CircularString, но лучше её тут забыть.

Значит, надо сравнивать STDistance

Я тоже в работе-то geography ещё не использовал... :(
16 июл 15, 12:57    [17899072]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Геометрия Римана (Эллиптическая геометрия) — одна из трёх «великих геометрий» (Евклида, Лобачевского и Римана).
Если геометрия Евклида реализуется на поверхностях с постоянной нулевой гауссовой кривизной, Лобачевского — с постоянной отрицательной, то геометрия Римана реализуется на поверхностях с постоянной положительной гауссовой кривизной, т. е. на сферах. Исторически геометрия Римана появилась позже двух других геометрий (в 1854 г.).
16 июл 15, 13:19    [17899212]     Ответить | Цитировать Сообщить модератору
 Re: Geography и расстояние в км  [new]
o-o
Guest
для полноты картины этой исторической справке не хватает предсказания,
с какой версии SQL Server-а реализуют нормальную география круга.
чтобы его вменяемо задавать центром и радиусом
16 июл 15, 13:36    [17899350]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить