Геометрия SQL Server .STBuffer() единицы измерения расстояния

В этом вопросе рассматривается geography::STBuffer. Расширяя комментарий Дэвида Сторфера, поля геометрии обрабатываются по-разному и имеют совершенно другой набор документация. Однако в этой документации вопрос о единицах измерения не рассматривается подробно. Наша информация содержит данные SHAPE, хранящиеся в виде поля геометрии, поэтому мне нужно знать, какие единицы измерения использует геометрия::STBuffer?


person B5A7    schedule 23.02.2018    source источник
comment
Я всегда думал, что тип геометрии более абстрактен — это всего лишь двухмерная система координат. Если у нас есть две точки в позициях (1,4) и (5,2), вы можете спросить, каково расстояние между ними, и получить число. Но спрашивать о том, в каких единицах находится результат, бессмысленно, поскольку это полностью зависит от того, о каких единицах вы думали, когда сказали, что точка находится в (1,4), а не насыщение это было в (1000, 4000)   -  person Damien_The_Unbeliever    schedule 23.02.2018
comment
Я читал Microsoft документация относительно типов пространственных данных, поэтому я понимаю, что вы говорите о результате, но в документации говорится, что измерения расстояний и площадей даны в тех же единицах измерения, что и координаты, и поэтому существует единица измерение. Когда пользователь спрашивает меня, насколько близко что-то должно быть, прежде чем вы меня предупредите, я не могу ответить 500 единиц, поэтому вы видите мою дилемму - я должен знать, какие единицы используются.   -  person B5A7    schedule 26.02.2018
comment
Единицы измерения иногда используются для преобразования в одну и ту же единицу (продвинутая алгебра, насколько я помню). В полях геометрии единицы измерения не имеют значения, поскольку предполагается, что все значения являются одними и теми же единицами измерения, поэтому преобразование не требуется. Похоже, ответ на мой вопрос заключается в том, что мне просто нужно посмотреть на единицы исходных наборов данных и определить, что это, скорее всего, будет зависеть от типа имеющихся наборов пространственных данных.   -  person B5A7    schedule 26.02.2018


Ответы (1)


Это обсуждение утверждает, что «системы координат в sys.spatial_reference_systems предназначены для типа geography», поэтому, несмотря на подробное рассмотрение, оказалось, что эта информация не имеет отношения к этому вопросу. После некоторого дальнейшего исследования я прибегнул к использованию STDistance и вручную изучил карту, чтобы подтвердить, что, по крайней мере, для нашей информации, геометрия::STBuffer (и геометрия::STDistance) используемые значения соответствуют метрам, используемым в качестве меры расстояния. Этот SO вопрос предполагает, что возвращаемое значение из STDistance находится в градусов, но это было не то поведение, которое я наблюдал. Следуя ссылке SO ГИС, указанной на этой странице, и последующему сообщение MSDN, где еще раз было указано, что «SRID, перечисленные в sys.spatial_reference_systems, относятся только к типу geography» и что «для типа геометрии линейные единицы, возвращаемые такими методами, как расстояние, длина и площадь всегда в единицах координат точек», я пришел к выводу, что ответ на этот вопрос на самом деле зависит от того, какая единица измерения использовалась для создания набора данных.

P.S. Конечно, теперь я хотел знать, как определить единицу моей информации. В этом сообщении SO рассматриваются единицы в целом, и принятый ответ шел по строкам if ваши столбцы данных были созданы с SRID, равным 0, тогда система определяется как не имеющая единиц измерения, и вам потребуются некоторые метаданные о модели данных, чтобы определить единицы измерения. Если они были определены с помощью реального SRID, вы можете запросить sys.spatial_reference_systems. Так что, похоже, мне пришлось вернуться к тому, с чего я начал, глядя на sys.spatial_reference_systems. Другой сообщение MSDN, по-видимому, поддерживает идею о том, что пространственные_референциальные_системы важны при обсуждении полей геометрии.

В этом сообщении ГИС 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/ это значение фактически является идентификатором проекции. Просматривая содержимое, возвращенное spacereference.org, детали полномочий (AUTHORITY["EPSG","4283"]) выглядят так, как будто они предоставляют соответствующий SRID для соответствия записи в sys.spatial_reference_systems. В нашем случае unit_of_measure указан как метр.

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

person B5A7    schedule 23.02.2018