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

Откуда:
Сообщений: 6
Имеются объекты с заданными координатами в WGS84 построчно для каждой точки как широта и долгота типа float.

idObjectNumberLatLonPointNumber
1152.7145363627.069016511
2252.019064627.360081
3352.682726927.028857581
4352.6827915727.032292432
5352.6829636627.040154723
6452.6500419527.117165681
7452.6518699227.115088382
8452.6538273727.114510073
9452.6542681927.114024814
10452.6592090527.115058625

Для каждого объекта известен его вид (точка, линия, полигон).

Необходимо перевести все координаты в формат geography, по одной строке для каждого объекта.

С этим типом данных раньше работать не доводилось, в связи с этим прошу помощи.
Использовать метод STGeomFromText()?

в голову пришло только создать хранимые процедуры (видимо, для каждого вида объекта), создающие из нескольких строк координат одну строку, с конвертированием в текст, которая будет подаваться строкой в метод STGeomFromText().
Но можно, наверное, как-то проще?

Заранее спасибо за помощь
4 июн 13, 05:47    [14386909]     Ответить | Цитировать Сообщить модератору
 Re: Перевод координат из типа float в geography  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
Oril, вот вам простейший пример, преобразовав его, вы получите нужный результат:
DECLARE @Shape geometry;
SET @Shape = geometry::STGeomFromText('POLYGON ((10 10, 25 15, 35 15, 40 10, 10 10))',0);
SELECT @Shape;
GO
4 июн 13, 09:30    [14387205]     Ответить | Цитировать Сообщить модератору
 Re: Перевод координат из типа float в geography  [new]
Oril
Member

Откуда:
Сообщений: 6
Александр52, так это и есть то, о чём я писала.
Просто получается, что для полигона из 20 точек, имеющего 20 строк, описывающих координаты, нужно сначала все эти 20 строк сконвертировать в текст, собрать в одну, привести к нужному виду и подать в STGeomFromText(). И так отдельно для каждого вида объекта.
Вопрос был в том, может можно как-то по-другому, попроще?
4 июн 13, 13:45    [14388838]     Ответить | Цитировать Сообщить модератору
 Re: Перевод координат из типа float в geography  [new]
Glory
Member

Откуда:
Сообщений: 104760
https://www.sql.ru/faq/faq_topic.aspx?fid=130
4 июн 13, 13:53    [14388892]     Ответить | Цитировать Сообщить модератору
 Re: Перевод координат из типа float в geography  [new]
Oril
Member

Откуда:
Сообщений: 6
Glory, да, эту тему я видела, именно так и собиралась делать.
Просто интересовалась, можно ли как-то проще и не так громоздко...

На данный момент написала 3 запроса, конвертирующих координаты в зависимости от типа объекта.
Для линейных и полигональных воспользовалась вариантом 1 из приведённого по ссылке выше примера (Для SQL2005), т.к. в первом кол-во рекурсий надо очень большое ставить.


Подскажите, пожалуйста, а как контролировать, что координатные пары в строку запишутся в строго определённом порядке, согласно PointNumber?

А то что-то у меня не то получается, судя по Spatial results в SSMS.
5 июн 13, 04:18    [14392051]     Ответить | Цитировать Сообщить модератору
 Re: Перевод координат из типа float в geography  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Oril,

где запрос-то?
Про какую рекурсию вообще речь?
5 июн 13, 08:19    [14392207]     Ответить | Цитировать Сообщить модератору
 Re: Перевод координат из типа float в geography  [new]
Glory
Member

Откуда:
Сообщений: 104760
Oril
Просто интересовалась, можно ли как-то проще и не так громоздко...

1 запрос с for xml - это для вас громоздко ?
5 июн 13, 10:03    [14392638]     Ответить | Цитировать Сообщить модератору
 Re: Перевод координат из типа float в geography  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Oril
Подскажите, пожалуйста, а как контролировать, что координатные пары в строку запишутся в строго определённом порядке, согласно PointNumber?

Используя ORDER BY. Другого способа нет.
5 июн 13, 11:54    [14393378]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить