Различия при конвертации между экземплярами Geometry и Geography - PullRequest
1 голос
/ 07 октября 2009

Использование SQL Server 2008: при условии, что у меня есть действительный объект географии geog1 , преобразование его в экземпляр геометрии geom1 (с использованием того же SRID) и преобразование его обратно в географию объекта geog2 не показывает разницы между geog1 и geog2 .

Однако из-за уже обсуждаемой проблемы здесь Я не могу создать географический объект, содержащий строку линий, из моих исходных данных. Работает с геометрическими объектами. Однако, если я выполню MakeValid() с результирующей геометрией, я могу снова создать географический объект. Проблема в том, что я не знаю, будет ли эта география сильно отличаться от оригинальной строки, которая не была принята geography::STGeomFromText() ранее. Особенно интересует длина объекта (STLength()).

Кто-нибудь знает, является ли преобразование между типами географии и геометрии без потерь, и если MakeValid() вызов геометрии изменяет данные (особенно когда дело касается длины)?

Спасибо

1 Ответ

1 голос
/ 16 января 2010

MakeValid () по необходимости изменяет базовые данные экземпляра геометрии. (Если бы он не вносил изменений, то полученная геометрия все равно была бы такой же недействительной, как и оригинал).

Во многих случаях единственное изменение относится к типу результирующей геометрии (т. Е. Недопустимая самопересекающаяся строка может стать допустимой многоканальной строкой), но также возможно изменение значений координат , Однако они только сдвигаются на абсолютно дробные величины, необходимые для проверки геометрии, и не будут существенно влиять на длину.

...