sql 2008 年 BufferWithTolerance 距离的度量单位是什么

What is the unit of measure for the distance of BufferWithTolerance in sql 2008

我找到了这个 link Create a SqlGeography polygon-circle from a center and radius

说是米。这也在我的系统上显示了仪表。

SELECT * FROM sys.spatial_reference_systems where spatial_reference_id = 4326;

但是,当我使用此代码创建一个圆时,当我使用 google 地图 api 绘制它并手动测量距离时,生成的圆的半径约为 27 英里,所以肯定是关了。它应该是 1/2 米,实际上是 27 英里。

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT(-88.0 44.5)', 4326);
select @g.BufferWithTolerance(.5,.01,1)

-兰迪

单位将与坐标系的单位相同,如果您使用地理坐标,则为度,如果您使用 UTM,则为米,如果您使用某些美国投影,则为英尺。

如果您查看 sys.spatial_reference_systems 中的 well_known_text 列,您会发现 4326 的单位是度。这是用于描述平面系统中点等位置和距离的单位。 unit_of_measure 列是使用椭圆体类型时点和面积之间距离的单位。

因此,您正在使用使用 WKT 单位的 Geometry(SQL 平面类型)。如果您要使用 Geography(SQL 椭圆体类型),则 unit_of_measure 用于距离等

您可以在这些示例中看到这一点:

几何

DECLARE @g geometry;
DECLARE @g2 geometry;
SET @g = geometry::STGeomFromText('POINT(-88.0 44.5)', 4326);
SET @g2 = geometry::STGeomFromText('POINT(-88.0 44.0)', 4326);
SELECT @g.STDistance(@g2)

0.5

(以度为单位的距离)

地理

DECLARE @g geography;
DECLARE @g2 geography;
SET @g = geography::STGeomFromText('POINT(-88.0 44.5)', 4326);
SET @g2 = geography::STGeomFromText('POINT(-88.0 44.0)', 4326);
SELECT @g.STDistance(@g2)

55558.5621458782

(以米为单位的距离)

https://msdn.microsoft.com/en-us/library/bb964711.aspx#differences