SQL Server 2008 Geography .STBuffer()距离测量单位

时间:2010-06-04 03:20:38

标签: sql distance geography measurement units-of-measurement

我正在使用lat / long处理地理点,并且需要在该点的5英里范围内找到我们数据库中的其他点。但是,我似乎无法找出STBuffer的“单位”,它似乎不符合英尺,英里,米,公里等。文档仅将它们称为“单位”,任何建议?感谢

[...] from 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

3 个答案:

答案 0 :(得分:9)

测量单位取决于使用的空间参照系。有关详细信息,请参阅此系统视图:

SELECT * FROM sys.spatial_reference_systems;

答案 1 :(得分:5)

STBuffer以米为单位。 More info here.

要将英里数转换为米数,请将里程数除以0.0006213712

(即5英里/0.0006213712 = 8,046.72米)

答案 2 :(得分:0)

对于访问此页面的任何人来说,为什么缓冲距离可能不会以米为单位感到困惑,这可能是因为您使用的是几何数据类型还是地理数据类型。就我而言,很明显,地理是用米来操作的,即使几何的空间参照系设置正确,几何也不会(显示度数)。

要将纬度和经度转换为地理点:

geography::Point(latitude, longitude, 4326) -- 4326 is WGS-84 EPSG Projection