【问题标题】:SQL Server units questionSQL Server 单位问题
【发布时间】:2010-01-10 14:55:37
【问题描述】:
这可能是一个非常愚蠢的问题,但是......
Geography.STLength 返回什么单位? official MSDN page 没有说明返回的单位,this blog entry 在这里说 STLength() returns a float indicating the length of the instance in units。是的,没错,它说它以units返回它。
谁能解释一下 STLength 返回什么单位?脚?米?英寸?救命!
【问题讨论】:
标签:
sql
sql-server
tsql
gis
units-of-measurement
【解决方案1】:
单位完全取决于所使用的地理/几何数据的空间参考 ID (SRID)。按照惯例,如果所有数据都在同一个单位系统中,您通常会为几何类型使用“0”的 SRID。
但是,通常地理类型使用 4326 的 SRID,这是称为 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 代表什么单位。大多数以米为单位,但少数以英尺为单位。