Вопрос о блоках SQL Server - PullRequest
6 голосов
/ 10 января 2010

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

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

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

1 Ответ

8 голосов
/ 10 января 2010

Единицы полностью зависят от идентификатора пространственной привязки (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. Большинство в метрах, но некоторые в футах.

...