9

我正在使用纬度/经度处理一个地理点,并且需要在我们的数据库中找到该点半径 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

4

3 回答 3

9

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

SELECT * FROM sys.spatial_reference_systems;

于 2011-01-17T01:48:13.880 回答
6

STBuffer 以米为单位。更多信息在这里。

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

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

于 2010-06-04T04:04:33.383 回答
1

对于访问此页面的任何人,如果他们的缓冲区距离可能没有以米为单位出现而感到困惑,这可能是因为您使用的是几何数据类型而不是地理数据类型。在我的例子中,很明显地理学是用米来操作的,而几何学却不是(它出现的度数?)即使空间参考系统为几何学设置了正确的。

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

geography::Point(latitude, longitude, 4326) -- 4326 is WGS-84 EPSG Projection
于 2020-10-09T16:43:29.583 回答