Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Опять сложная задача на мою неопытную голову и опять географические точки!сложная зараза  [new]
Сергей_gt
Member [заблокирован]

Откуда:
Сообщений: 84
declare @x table(dbLon float,  dbLat float)
insert @x values(106.620165, 10.746475)
insert @x values(153.095160, -27.377213)
insert @x values(0.000000, 0.000000)
insert @x values(22.952630, 40.599135)
insert @x values(114.079980, 22.547512)
insert @x values(114.080272, 22.547073)
insert @x values(114.037833, 22.543650)
insert @x values(-115.405117, 32.622633)
insert @x values(114.079867, 22.548733)
insert @x values(106.536433, 21.013733)
insert @x values(100.572567, 13.728350)
insert @x values(400.039067, 3.539083 )

declare @g table(id int,dbLon float,  dbLat float,name varchar(10), radius int)
insert @g  values(1,104.620165, 10.746475,'A',50)
insert @g  values(2,156.095160, -27.377213,'B',100)
insert @g  values(3,0.200000, 0.000000,'C',60)
insert @g  values(4,22.952630, 40.599135,'D',100)
insert @g  values(5,112.079980, 22.547512,'F',70)
insert @g  values(6,113.080272, 22.547073,'G',100)
insert @g  values(7,114.037833, 22.543650,'H',300)
insert @g  values(8,-116.405117, 32.622633,'K',500)
insert @g  values(9,117.079867, 22.548733,'U',700)
insert @g  values(10,108.536433, 21.013733,'O',800)
insert @g  values(11,109.572567, 13.728350,'P',600)
insert @g  values(12,406.039067, 3.539083,'Z,',400)

-- временная таблица для результата 
declare @result table(dbLon float,  dbLat float, point_x varchar(50),
                      point_g varchar(50),Rasstoanie float, id int,name varchar(10),radius int);
-- курсор для таблицы "g"  
declare cur_g cursor for 
  select * from @g;
-- переменные   
declare @geo geography;
declare @idTmp int;
declare @nameTmp varchar(10);
declare @radiusTmp  int; 
declare @dbLonTmp float; 
declare @dbLatTmp float; 
-- открываем курсор
open cur_g; 
fetch next from cur_g into @idTmp, @dbLonTmp, @dbLatTmp, @nameTmp,@radiusTmp;
-- запускаем цикл
while (@@FETCH_STATUS = 0)
  begin 
     -- получаем географическую точку 
	set @geo = geography :: STPointFromText('POINT('+STR(@dbLonTmp,20,10)+' '+ STR(@dbLatTmp,20,10)+')', 4326);  
    insert @result select dbLon, dbLat, point_x,poin_y,rasst,@idTmp,@nameTmp,@radiusTmp 
                     from
                       (                  
                         select dbLon, dbLat, x.ToString() as point_x,@geo.ToString() as poin_y,x.STDistance(@geo)/1000 as rasst                       
                           from 
                           (
                             select dbLon, dbLat,geography::STPointFromText('POINT('+STR(dbLon,20,10)+' '+ STR(dblat,20,10)+')' , 4326) as x
                               from @x
                           ) as a
                       ) as b
                           where rasst <= @radiusTmp; -- с помощью расстояния определяем вхождение данных таблицы "x" в радиус таблицы "g"                          
    fetch next from cur_g into @idTmp, @dbLonTmp, @dbLatTmp, @nameTmp,@radiusTmp;              
  end;
-- показываем результат
select * from @result;  
-- закрываем курсор
close cur_g; 
deallocate cur_g;  
 





данный запрос выводит попадает ли в данные таблицы g в поле(радиус)данные таблицы x
проще говоря х это данные человека
g данные зданий например магазинов
имеющий радиус r
выводит точки которые попали в радиус(т.е. находится человек в здании или нет)
все работает и все бы ничего НО
теперь задача усложнилась надо + ко всему вывести
промежуток времени нахождения в этом радиусе
я даже не представляю как все это сделать
16 окт 12, 12:14    [13325587]     Ответить | Цитировать Сообщить модератору
 Re: Опять сложная задача на мою неопытную голову и опять географические точки!сложная зараза  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
В форум Работа.
16 окт 12, 13:06    [13326002]     Ответить | Цитировать Сообщить модератору
 Re: Опять сложная задача на мою неопытную голову и опять географические точки!сложная зараза  [new]
Сергей_gt
Member [заблокирован]

Откуда:
Сообщений: 84
Mnior
В форум Работа.


вы такой подстрикатель
16 окт 12, 13:13    [13326040]     Ответить | Цитировать Сообщить модератору
 Re: Опять сложная задача на мою неопытную голову и опять географические точки!сложная зараза  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Сергей_gt, кто бы говорил.

Вы хотите научится писать самому?
Если нет то либо в Работа или бан.
16 окт 12, 13:23    [13326114]     Ответить | Цитировать Сообщить модератору
 Re: Опять сложная задача на мою неопытную голову и опять географические точки!сложная зараза  [new]
Сергей_gt
Member [заблокирован]

Откуда:
Сообщений: 84
Mnior
Сергей_gt, кто бы говорил.

Вы хотите научится писать самому?
Если нет то либо в Работа или бан.

хочу и научусь а пока очень надо.....не надо в баню не хочу..больше не буду
16 окт 12, 13:29    [13326160]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить