2010-01-10 100 views
6

这可能是一个非常愚蠢的问题,但...SQL Server单元问题

Geography.STLength返回什么单位?该official MSDN page没有说关于任何单位回来,this blog entry这里说STLength() returns a float indicating the length of the instance in units。是的,没错,它说它返回单位

任何人都可以揭示什么单位STLength回报一些轻?脚?米?寸?帮帮我!

回答

8

单位是完全依赖于地理/几何数据的空间参考ID(SRID)被使用。按照惯例,如果所有数据都在同一个单位系统中,通常对于几何类型使用“0”的SRID。

但是,地理类型通常使用SRID 4326,它是纬度/经度椭球体地球坐标系WGS 84的参考ID。当您在此系统中指定点坐标时,它的角度的纬度和经度,而不是距离原点一定距离。在这参考系统点长度和面积的计算将返回从几何计算完全不同的结果上完全相同的点位置(为一个很好的例子see Differences between Geography and Geometry here,并作为why this happens, see here)。

所以,如果您的数据列,用“0”的SRID创建的,那么系统被定义为无单位,你需要对数据模型的一些元数据来找出单位。如果他们有一个真正的SRID定义的,那么你可以使用此查询:

SELECT spatial_reference_id 
    , well_known_text 
    , unit_of_measure 
    , unit_conversion_factor 
FROM sys.spatial_reference_systems 

检查SRID代表什么单位。大部分以米为单位,但少数以英尺为单位。