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

Откуда:
Сообщений: 40
Добрый день!

Может быть кто-то сталкивался, не пойму в чем причина. Выходит ошибка при отрисовке линии

select geography::STGeomFromText('LINESTRING(30.390025 60.005107,30.390045 60.005127,30.390037 60.005118,30.390045 60.005127)', 4326)

причем если брать по отдельности попарно крайние точки справа, слева или из середины то все ок

select geography::STGeomFromText('LINESTRING(30.390025 60.005107,30.390045 60.005127)', 4326)
select geography::STGeomFromText('LINESTRING(30.390037 60.005118,30.390045 60.005127)', 4326)
select geography::STGeomFromText('LINESTRING(30.390045 60.005127,30.390037 60.005118)', 4326)
5 апр 16, 15:13    [19019369]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
Glory
Member

Откуда:
Сообщений: 104751
semI-PACK
Выходит ошибка при отрисовке линии

В
Microsoft SQL Server 2014 - 12.0.4100.1 (X64)
Apr 20 2015 17:29:27
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

не "выходит ошибка"
5 апр 16, 15:15    [19019382]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
semI-PACK
Member

Откуда:
Сообщений: 40
А в

Microsoft SQL Server 2008 R2 (SP1) - 10.50.2550.0 (X64) Jun 11 2012 16:41:53 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

пишет

Msg 6522, Level 16, State 1, Line 1
A .NET Framework error occurred during execution of user-defined routine or aggregate "geography":
System.ArgumentException: 24200: заданное значение не является допустимым экземпляром географического объекта.
System.ArgumentException:
в Microsoft.SqlServer.Types.SqlGeography.ConstructGeographyFromUserInput(GeoData g, Int32 srid)
в Microsoft.SqlServer.Types.SqlGeography.GeographyFromText(OpenGisType type, SqlChars taggedText, Int32 srid)
.
5 апр 16, 15:18    [19019397]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
semI-PACK
Добрый день!

Может быть кто-то сталкивался, не пойму в чем причина. Выходит ошибка при отрисовке линии

select geography::STGeomFromText('LINESTRING(30.390025 60.005107,30.390045 60.005127,30.390037 60.005118,30.390045 60.005127)', 4326)

с линией что то не так :) ну и судя по всему 2014 игнорирует
5 апр 16, 15:21    [19019417]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
semI-PACK
Member

Откуда:
Сообщений: 40
TaPaK
с линией что то не так :)


Может одинаковых координат не должно быть? Вроде нигде не видел такого ограничения.
5 апр 16, 15:24    [19019434]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
semI-PACK,

Экземпляр LineString не может перекрывать сам себя на протяжении интервала.
5 апр 16, 16:02    [19019643]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
Glory
Member

Откуда:
Сообщений: 104751
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(30.390025 60.005107,30.390045 60.005127,30.390037 60.005118,30.390045 60.005127)', 0);
SELECT @g.ToString(), @g.STIsValid();

SET @g = @g.MakeValid();
SELECT @g.ToString(), @g.STIsValid();
5 апр 16, 16:03    [19019646]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
LineString MSSQL 2012
LineString MSSQL 2014
Принимаемые экземпляры
Принятые экземпляры LineString могут быть введены в переменную геометрии, но они могут быть недействительными экземплярами LineString. Для принятия экземпляра LineString должны соблюдаться следующие критерии. Экземпляр должен быть сформирован по меньшей мере двумя точками или же должен быть пустым. Следующие экземпляры LineString допустимы.
Допустимые экземпляры
Чтобы экземпляр LineString был действителен, он должен соответствовать следующим критериям.

1. Экземпляр LineString должен быть принят.
2. Если экземпляр LineString не является пустым, он должен содержать по меньшей мере две различные точки.
3. Экземпляр LineString не может перекрывать сам себя на интервале из двух или более последовательных точек.
5 апр 16, 16:04    [19019650]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
semI-PACK
Member

Откуда:
Сообщений: 40
iap,

Спасибо, видимо пропустил.
5 апр 16, 16:06    [19019658]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
semI-PACK
Member

Откуда:
Сообщений: 40
Glory,

Спасибо за подсказку с .MakeValid(). Буду использовать
5 апр 16, 16:08    [19019663]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
semI-PACK
Member

Откуда:
Сообщений: 40
semI-PACK
Спасибо за подсказку с .MakeValid(). Буду использовать


А нет, не выйдет.

автор
Применимо для следующих объектов: SQL Server (SQL Server 2012 по текущую версию)
5 апр 16, 16:11    [19019683]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по geography  [new]
Glory
Member

Откуда:
Сообщений: 104751
https://msdn.microsoft.com/en-us/library/bb933835(v=sql.105).aspx
5 апр 16, 16:14    [19019697]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить