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

Я работаю с географической точкой, используя широту/долготу, и мне нужно найти другие точки в нашей базе данных в радиусе 5 миль от этой точки. Однако я не могу понять, что такое «единицы» для STBuffer, похоже, они не соответствуют футам, милям, метрам, километрам и т. д. В документации они упоминаются только как «единицы», любые предложения ? Спасибо

[...] из geography::STGeomFromText('POINT(xy)', 4326).STBuffer(z).STIntersects(geography::STGeomFromText('POINT(' + CAST(v.Longitude as varchar(max)) + ' ' + CAST(v.Latitude as varchar(max)) + ')', 4326)) = 1


person Community    schedule 04.06.2010    source источник


Ответы (3)


STBuffer в метрах. Дополнительная информация здесь.

Чтобы перевести мили в метры, разделите количество миль на 0,0006213712.

(т.е. 5 миль / 0,0006213712 = 8046,72 метра)

person Mark Bowytz    schedule 04.06.2010
comment
Странно, что термин метр появляется только в примере, а не в описании параметра distance. - person Crescent Fresh; 04.06.2010
comment
Расстояние по всему миру рассчитывается в метрах/километрах/и т.д. Я думаю, что только в США до сих пор используется имперская система (дюймы/футы/мили). - person Nordes; 25.10.2010

Единица измерения зависит от используемой системы пространственной отсчета. Подробнее см. в этом системном представлении:

SELECT * FROM sys.spatial_reference_systems;

person Chris    schedule 17.01.2011
comment
Несмотря на то, что в исходном вопросе указывалась география, я пришел сюда в поисках единицы измерения STBuffer (геометрия или география). Чтобы избавить кого-то от дальнейших поисков, для геометрии единицей измерения является система координат геометрии. Таким образом, если вы используете широту/долготу, геометрия.STBuffer(1) будет равна 1 целому градусу, а не 1 метру. 1 градус по сравнению с этим огромен - около 69 миль. - person David Storfer; 17.10.2013
comment
Что просто показывает вам, что если вы пытаетесь представить точки на земном шаре, география является правильным типом данных для использования (не геометрия)! - person Ben Thul; 01.06.2015

Для тех, кто посещает эту страницу и смущен тем, почему их буферные расстояния могут не отображаться в метрах, это может быть связано с тем, что вы используете тип данных геометрии, а не тип данных географии. В моем случае было понятно, что география оперирует метрами, а геометрия — нет (градусы получается?), даже если система пространственной отсчета для геометрии настроена правильно.

Чтобы преобразовать широту и долготу в географическую точку:

geography::Point(latitude, longitude, 4326) -- 4326 is WGS-84 EPSG Projection
person Colonel_Old    schedule 09.10.2020