Столбец геометрии: STGeomFromText и SRID (что такое SRID?)

Я играю с новым столбцом географии в SQL Server 2008 и функцией STGeomFromText. Вот мой код (работает с AdventureWorks2008)

DECLARE @region geography;
set @region = geography::STGeomFromText('POLYGON((
        -80.0 50.0, -90.0 50.0,
        -90.0 25.0, -80.0 25.0,
        -80.0 50.0))', 4326);

SELECT @region;

У меня вопрос о 4326 в коде. Предполагается, что это пространственный идентификатор ссылки. Когда я захожу в MSDN, там не так много информации. Если я изменю значение на 56, я получаю сообщение об ошибке, сообщающее мне, что значение должно быть в таблице sys.spatial_reference_systems.

Вы можете посмотреть эту таблицу, выполнив:

select * from sys.spatial_reference_systems 

В этой таблице есть столбец well_known_text, но он мне мало что говорит. Значение 4326:

GEOGCS["WGS 84", DATUM["World Geodetic System 1984", ELLIPSOID["WGS 84", 6378137, 298.257223563]], PRIMEM["Greenwich", 0], UNIT["Degree", 0.0174532925199433]]

Может ли кто-нибудь объяснить мне эту загадку? Что такое SRID?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
28
0
33 158
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

SRID = Идентификатор пространственной привязки

Для сравнения координаты должны использовать один и тот же SRID. в противном случае вам пришлось бы сравнивать километры и мили. или что-то подобное.

Ответ принят как подходящий

Итак, вчера я разговаривал с бывшим военным, который был специалистом по радиолокации / картографии. По сути, он точно знал, что это за число (4326), откуда оно взялось и почему оно там есть.

Это отраслевой стандарт для вычисления географии. Проблема в том, что Земля не является идеальной сферой (она выпирает посередине), и SRID 4326 объясняет это.

Как я уже сказал, таблица sys.spatial_reference_systems перечисляет весь код и то, что они из себя представляют. Но краткая версия заключается в том, что вы действительно собираетесь использовать только 4326, если у вас нет очень конкретной причины использовать что-то другое.

Я не согласен с вашим утверждением: «Вы действительно собираетесь использовать только 4326, если у вас нет очень конкретной причины». Каждый раз, когда вы имеете дело с данными в небольшой области (представьте себе штат или округ, а не весь мир), вы будете использовать локальную спроецированную систему координат. Эти системы предназначены для лучшего представления земной поверхности на двухмерной плоскости, а не на трехмерном глобусе. Чаще всего вы получаете данные в проекции, отличной от WGS84, и вам нужно будет преобразовать. Если вы имеете дело только с точками GPS, то вы правы, предполагая, что данные находятся в 4326 99% случаев.

Roy 15.01.2014 05:55

Существует множество систем для картографирования Земли. Например, вы хотите нанести на карту какой-нибудь штат в США. Вы можете установить самую юго-восточную точку как 0,0 и сопоставить все остальные пространственные координаты в соответствии с этой точкой. С другой стороны, вы можете захотеть нанести на карту некоторые пространственные данные, которые охватывают всю карту. В любом случае вы должны выбрать точку 0,0. Кроме того, вы должны выбрать какую-то единицу измерения: мили / километры / градусы / другую магическую единицу, которая вам больше подходит. За прошедшие годы разработано множество таких систем. У каждого есть своя нулевая точка, свои координаты, свои правила относительно того, плоская Земля или нет. SRID или SRS - это идентификатор такой системы. Используя этот идентификатор, вы можете сопоставить точку, выраженную в одной системе, с другой системой, хотя иногда это требует довольно сложной математики.

И про 4326 SRID. Его также называли "WGS 84". (http://en.wikipedia.org/wiki/World_Geodetic_System) система. Это наиболее распространенная система для представления точки на сферической (а не плоской) Земле. Он использует градусы, минуты и секунды, а его координаты x и y обычно называются широтой и долготой.

Наиболее часто используемая несферическая проекция Земли называется UTM. Об этом можно прочитать здесь: http://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system

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

Эта последняя строчка меня действительно беспокоит, продвигая незнание, потому что это, вероятно, не имеет значения?

user247702 16.04.2014 10:50

Я нашел этот веб-сайт: http://spatialreference.org/ref/epsg/4326/ весьма полезен для понимания того, какой SRID вы собираетесь использовать. Он предоставляет удобную карту, некоторую информацию о границах и другие ссылки.

Для других SRID просто измените цифры в конце URL-адреса на то, что вам нужно.

Возвращаемое расстояние зависит от «Идентификатор пространственной привязки (SRID)», которое вы определяете для своих географических типов.

В приведенном ниже примере используется значение SRID по умолчанию, равное 4336, см. Второй аргумент STGeomFromText. Это означает, что возвращаемое расстояние выражается в метрах, это можно найти, запросив представление каталога пространственная_ссылка_системы, то есть select srs.unit_of_measure from sys.spatial_reference_systems as srs where srs.spatial_reference_id = 4326.

В качестве альтернативы STGeomFromText вы можете использовать разбирать, который предполагает SRID, равный 4326, и вам не нужно указывать его явно.

При вычислении расстояния между двумя точками вы должны использовать один и тот же SRID для обоих типов географии, иначе вы получите ошибку. Пример:

DECLARE @address1 GEOGRAPHY
DECLARE @address2 GEOGRAPHY
DECLARE @distance float
SET @address1 = GEOGRAPHY::STGeomFromText ('point(53.046908 -2.991673)',4326)
SET @address2 = GEOGRAPHY::STGeomFromText ('point(51.500152 -0.126236)',4326)
SET @distance = @address1.STDistance(@address2)
SELECT @distance --this is the distance in meters

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