Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
есть 2 таблицы точек (широта, долгота)
1 таблица положение(широта долгота)человека
2 таблица положение(широта долгота)точки А, В, С нужно узнать расстояние относительно точки ближе к которой он находиться(либо А, В, С)

думаю использовать GEOGRPHY но проблема ни раз не сталкивался. Можно, еcли иначе никак, вместо настоящего расстояния использовать самодельную метрику какую-нибудь.

На рисунке представил примерно. Строго не судить не художник

К сообщению приложен файл. Размер - 12Kb
9 окт 12, 10:25    [13288541]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
Andrey Sribnyak
Member

Откуда: Киев
Сообщений: 599
sigor_i,

Есть пример прямо в msdn

http://msdn.microsoft.com/ru-ru/library/ff929109.aspx
9 окт 12, 11:26    [13289004]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
geography пойдёт.
поиском посмотрите была недавно тема (человек вычислял расстояние для самолётов) там есть особенность с представлением данных.
9 окт 12, 11:26    [13289014]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
Дедушка
geography пойдёт.
поиском посмотрите была недавно тема (человек вычислял расстояние для самолётов) там есть особенность с представлением данных.

В проекции , по эллипсоиду, какому ? Надеемся автор в теме, хотя вряд ли, судя по
автор
самодельную метрику какую-нибудь
.
9 окт 12, 11:44    [13289175]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
нашел как находятся расстояния между географическими координатами

DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::STPointFromText('POINT(30.315784 59.939037)', 4326);
SET @h = geography::STPointFromText('POINT(37.617634 55.755787)', 4326);
SELECT @h.STDistance(@g)/1000 as ddd

 


и как найхи соседа.....т.е.близ лежащую точку


USE AdventureWorks2008R2
GO
DECLARE @g geography = 'POINT(-121.626 47.8315)';
SELECT TOP(7) SpatialLocation.ToString(), City FROM Person.Address
WHERE SpatialLocation.STDistance(@g) IS NOT NULL
ORDER BY SpatialLocation.STDistance(@g);


теперь буду все обрабатывать..
т.е. найти первую близ лежащую точку и потом проводить вычисления
9 окт 12, 12:22    [13289537]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
Дедушка
geography пойдёт.
поиском посмотрите была недавно тема (человек вычислял расстояние для самолётов) там есть особенность с представлением данных.


хоть убейте не нашел...про самолеты тишина)))дайте ссылочку если не тяжело
9 окт 12, 12:23    [13289548]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
icprog
Member

Откуда:
Сообщений: 166
sigor_i,
Возможно имелась в виду какая-то из этих ссылок :
[url=]https://www.sql.ru/forum/actualthread.aspx?tid=942701[/url]
[url=]https://www.sql.ru/forum/actualthread.aspx?tid=943167[/url]
9 окт 12, 12:50    [13289721]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
USE AdventureWorks2008R2	
GO
DECLARE @h geography
DECLARE @g geography = 'POINT(-121.626 47.8315)';
SELECT TOP(1) SpatialLocation.ToString(), City FROM Person.Address
WHERE SpatialLocation.STDistance(@g) IS NOT NULL
ORDER BY SpatialLocation.STDistance(@g);
SELECT @h.STDistance(@g)/1000 as ddd


вот сделал что то типа этого...т.е.нашел близ лежащую точку и исходя из ее положения зная положения другой вычисляю расстояние только пока не работает
что то вроде этого...или я что то не то делаю?
9 окт 12, 12:58    [13289782]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
USE AdventureWorks2008R2	
GO
DECLARE @h geography
DECLARE @g geography = 'POINT(-121.626 47.8315)';
SELECT TOP(3)  SpatialLocation.ToString(), City FROM Person.Address
WHERE SpatialLocation.STDistance(@g) IS NOT NULL
ORDER BY SpatialLocation.STDistance(@g);
SELECT @h.STDistance(@g)/1000 as ddd


сорри поправил из 3 х записей надо взять самый ближайший...и от него уже вычислять.....
9 окт 12, 13:07    [13289857]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
USE AdventureWorks2008R2	
GO
DECLARE @h geography
DECLARE @g geography = 'POINT(-121.626 47.8315)';
SELECT TOP(3)SpatialLocation.ToString() as Blijnie_to4ki, City,SpatialLocation.STDistance(@g)/1000 as Rasstoanie FROM Person.Address
WHERE SpatialLocation.STDistance(@g) IS NOT NULL
ORDER BY SpatialLocation.STDistance(@g);

осталось во временную таблицу перегнать

К сообщению приложен файл. Размер - 26Kb
9 окт 12, 14:01    [13290323]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
sigor_i
USE AdventureWorks2008R2	
GO
DECLARE @h geography
DECLARE @g geography = 'POINT(-121.626 47.8315)';
SELECT TOP(3)SpatialLocation.ToString() as Blijnie_to4ki, City,SpatialLocation.STDistance(@g)/1000 as Rasstoanie FROM Person.Address
WHERE SpatialLocation.STDistance(@g) IS NOT NULL
ORDER BY SpatialLocation.STDistance(@g);

осталось во временную таблицу перегнать


вопрос работает ли все это в 2005 версии?
9 окт 12, 14:15    [13290449]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
sigor_i
вопрос работает ли все это в 2005 версии?
вопрос в другом... может сначала стоило подумать?
9 окт 12, 14:25    [13290540]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
Дедушка
sigor_i
вопрос работает ли все это в 2005 версии?
вопрос в другом... может сначала стоило подумать?


да просто оказывается на сервере 2005 версия ( и это опа.значит не работает?

теперь эту реализацию для 2005 года?если там подобные ф-ции?для подобной реализации?
9 окт 12, 14:34    [13290624]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
иногда просто делаю не задумываясь..сорри за опережения требований)))просто интересная задачка очень понравилась...блииин теперь все это для 2005?нету возможности проверить..так будет работать ли данная программка?или нет?
9 окт 12, 14:38    [13290665]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
типы геоданных появились только в 2008.
для 2005 ставить на сервер сбоку 2008 express и использовать его как сервис расчёта
9 окт 12, 14:46    [13290727]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
а в 2005 это проблемно реализовать я правильно понимаю?
9 окт 12, 14:56    [13290823]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
нет не проблемно
9 окт 12, 15:11    [13290935]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
Дедушка
нет не проблемно

может есть у кого нить предложения?
9 окт 12, 15:38    [13291196]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Поставить инстанс SQL Server 2008 Express, там реализовать всю логику с geography и через Linked Servers обращаться к нему.
9 окт 12, 16:04    [13291421]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
Тригонометрия
Guest
Законы сферической тригонометрии позволяют рассчитывать расстояния между точками, расположенными на сфере.
Кратчайшее расстояние между двумя точками на земной поверхности (если принять ее за сферу) определяется зависимостью:

cos(d) = sin(φА)·sin(φB) + cos(φА)·cos(φB)·cos(λА − λB),
где φА и φB — широты, λА, λB — долготы данных пунктов, d — расстояние между пунктами, измеряемое в радианах длиной дуги большого круга земного шара.
Расстояние между пунктами, измеряемое в километрах, определяется по формуле:
L = d·R,
где R = 6371 км — средний радиус земного шара.
9 окт 12, 17:24    [13292022]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
wikipedia
Guest
подробно ...
9 окт 12, 17:28    [13292045]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
Sergei.Agalakov
Member

Откуда:
Сообщений: 575
Вот только Земля немного не сферична, из-за чего и приходится использовать аппроксимацию эллипсоидами, причем в разных регионах разными.
Если надо делать по-серьезному с учетом кривизны Земля, то делать в MS SQL Server 2008, если для себя - то можно Землю и шаром представить.
9 окт 12, 18:42    [13292374]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
Sergei.Agalakov
Вот только Земля немного не сферична, из-за чего и приходится использовать аппроксимацию эллипсоидами, причем в разных регионах разными.
Если надо делать по-серьезному с учетом кривизны Земля, то делать в MS SQL Server 2008, если для себя - то можно Землю и шаром представить.


интересный взгляд.......сложноват для меня.....но очень интересно увидеть все это как есть?в реале с учетом кривизны и т.д......вот только как это все будет выглядеть для 2005 sql.......неужели писать кучу математических расчетов...не хочется видеть огромный кодиЩЕ........
9 окт 12, 19:38    [13292512]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
sigor_i
Member

Откуда:
Сообщений: 40
sigor_i
USE AdventureWorks2008R2	
GO
DECLARE @h geography
DECLARE @g geography = 'POINT(-121.626 47.8315)';
SELECT TOP(3)SpatialLocation.ToString() as Blijnie_to4ki, City,SpatialLocation.STDistance(@g)/1000 as Rasstoanie FROM Person.Address
WHERE SpatialLocation.STDistance(@g) IS NOT NULL
ORDER BY SpatialLocation.STDistance(@g);

осталось во временную таблицу перегнать


сравнить этот код и громосткие рассчеты?
неужели нетдруих путей в 2005 скуэле?
9 окт 12, 19:42    [13292521]     Ответить | Цитировать Сообщить модератору
 Re: долгота широта в SQL! Вычисления расстояния!  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
sigor_i
Sergei.Agalakov
Вот только Земля немного не сферична, из-за чего и приходится использовать аппроксимацию эллипсоидами, причем в разных регионах разными.
Если надо делать по-серьезному с учетом кривизны Земля, то делать в MS SQL Server 2008, если для себя - то можно Землю и шаром представить.


интересный взгляд.......сложноват для меня.....но очень интересно увидеть все это как есть?в реале с учетом кривизны и т.д......вот только как это все будет выглядеть для 2005 sql.......неужели писать кучу математических расчетов...не хочется видеть огромный кодиЩЕ........
Наберите в Google: "прямая и обратная геодезическая задача"
9 окт 12, 20:36    [13292630]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить