Геометрия SQL Server.STBuffer() единицы измерения расстояния
Этот вопрос исследует география::STBuffer. Расширяя комментарий Дэвида Сторфера, геометрические поля обрабатываются по-разному и имеют совершенно другой набор документации. Тем не менее, эта документация не рассматривает проблему единиц в деталях. Наша информация содержит данные SHAPE, хранящиеся в виде геометрического поля, поэтому мне нужно знать, какие единицы измерения использует геометрия:: STBuffer?
1 ответ
В этом обсуждении говорится, что "системы координат в sys.spatial_reference_systems предназначены для типа географии", поэтому, несмотря на подробное рассмотрение, оказалось, что эта информация не относится к этому вопросу. После некоторых дальнейших исследований я прибег к использованию STDistance и ручному исследованию карты, чтобы подтвердить, что, по крайней мере, для нашей информации geometry:: STBuffer (и geometry:: STDistance) соответствующие значения соответствуют метрам, используемым в качестве расстояния измерения. Этот вопрос SO предполагает, что возвращаемое значение из STDistance дано в градусах, но это не было тем поведением, которое я наблюдал. По ссылке GIS SO, предоставленной на этой странице, и в последующем сообщении MSDN, где еще раз было указано, что "идентификаторы SRID, перечисленные в sys.spatial_reference_systems, относятся только к типу географии" и что "для типа геометрии возвращены линейные единицы измерения с помощью таких методов, как расстояние, длина и площадь, всегда в единичных координатах точек ", я пришел к выводу, что ответ на этот вопрос на самом деле зависит от того, какая единица измерения использовалась для создания набора данных.
PS Конечно, теперь я хотел знать, как определить единицу моей информации. В этом посте SO рассматриваются единицы измерения в целом, и принятый ответ проходит в соответствии с тем, что если столбцы данных были созданы с SRID, равным 0, то система определена как единица измерения, и вам потребуются некоторые метаданные о модели данных для расчета из подразделений. Если они были определены с реальным SRID, то вы можете запросить sys.spatial_reference_systems. Так что, похоже, мне пришлось вернуться туда, где я начал, глядя на sys.spatial_reference_systems. Похоже, что другой пост MSDN поддерживает идею, что пространственные_референционные_системы актуальны при обсуждении геометрических полей.
В этом посте GIS SO объясняется, как определить, какой SRID на самом деле используется вашими данными - (выберите отдельный SP_GEOMETRY.STSrid из dbo.MYTABLE). Затем это может быть сопоставлено с информацией в sys.spatial_reference_systems, хотя для определения того, какая запись в sys.spatial_reference_systems является совпадением, требуется немного больше работы, например, когда при использовании наших данных выбирается отличный SP_GEOMETRY.STSrid из dbo.MYTABLE, возвращается 28355, но это значение не отображается в sys.spatial_reference_systems - согласно http://spatialreference.org/ref/epsg/gda94-mga-zone-55/html/ это значение фактически является идентификатором для проекции. Просматривая содержимое, возвращаемое пространственным пространством.org, детали полномочий (AUTHORITY["EPSG","4283"]) выглядят так, как будто они предоставляют соответствующий SRID для соответствия записи в sys.spatial_reference_systems. В нашем случае unit_of_measure указан как метр.
PPS Интересно выслушать мысли, прежде чем принимать решение о публикации комментариев в некоторых ссылках выше.