Вопрос о блоках SQL Server

Это может быть очень глупый вопрос, но...

Какие единицы возвращает Geography.STLength? Официальная страница MSDN ничего не говорит о возвращенных единицах, и эта запись в блоге здесь говорит STLength() returns a float indicating the length of the instance in units, Да, верно, он говорит, что возвращает его в единицах.

Кто-нибудь может пролить свет на то, какие юниты STLength возвращает? Ножки? Метры? Дюймов? Помогите!

1 ответ

Решение

Единицы измерения полностью зависят от идентификатора пространственной привязки (SRID) используемых географических / геометрических данных. По соглашению вы обычно используете SRID "0" для типов геометрии, если все данные находятся в одной системе единиц.

Однако обычно тип географии использует SRID 4326, который является эталонным идентификатором эллипсоидальной системы координат Земли широта / долгота, известной как WGS 84. Когда вы задаете координаты точки в этой системе, она указывается в градусах угла широты и долготы., а не на некотором расстоянии от происхождения. Расчеты длины и площади в точках в этой эталонной системе будут возвращать совершенно разные результаты геометрических вычислений в тех же точечных положениях (отличный пример см. В разделе Различия между географией и геометрией, а также о том, почему это происходит, см. Здесь).

Таким образом, если ваши столбцы данных были созданы с SRID, равным "0", то система определена как единичная, и вам потребуются некоторые метаданные о модели данных, чтобы определить единицы измерения. Если они были определены с реальным SRID, то вы можете использовать этот запрос:

SELECT spatial_reference_id
   , well_known_text
   , unit_of_measure
   , unit_conversion_factor
FROM sys.spatial_reference_systems

чтобы проверить, какие единицы представляет SRID. Большинство в метрах, но некоторые в футах.

Другие вопросы по тегам