将 Geography /Geometry 转换为 deg/min/sec - 相同的计算?
Convert Geography /Geometry to deg/min/sec - same calculation?
我看到了这个相关问题:How to convert Geometry type column to degree Minutes Second in SQL Server 2008 R2
但我在追求别的东西:
如何将地理类型列转换为度分秒?
几何的建议解决方案是:
DECLARE @geom geometry;
SET @geom = geometry::STGeomFromText('POINT(-83.255 32.567477)', 4326);
SELECT CASE WHEN @geom.STX < 0 then '-' ELSE '' END +
CAST(FLOOR(ABS(@geom.STX)) as varchar) + ' ' +
CAST(CAST(FLOOR(ABS(@geom.STX) * 60) AS INT) % 60 as varchar) + ''' ' +
CAST(CAST(FLOOR(ABS(@geom.STX) * 3600) AS INT) % 60 AS VARCHAR) + '"',
CASE WHEN @geom.STY < 0 then '-' ELSE '' END +
CAST(FLOOR(ABS(@geom.STY)) as varchar) + ' ' +
CAST(CAST(FLOOR(ABS(@geom.STY) * 60) AS INT) % 60 as varchar) + ''' ' +
CAST(CAST(FLOOR(ABS(@geom.STY) * 3600) AS INT) % 60 AS VARCHAR) + '"'
NB 我问这个是因为我知道几何更多 forgiving
比地理
问题
如何将 geography
转换为 deg/min/sec? ,
对于地理,将小数点更改为 => deg/min/sec 是否有效,就像对于几何一样? (会不会是一样的计算?)
简短的回答:是的。两者只是同一事物的不同表现形式。一个代表十进制的尾数,一个代表六十进制。
我看到了这个相关问题:How to convert Geometry type column to degree Minutes Second in SQL Server 2008 R2
但我在追求别的东西:
如何将地理类型列转换为度分秒?
几何的建议解决方案是:
DECLARE @geom geometry;
SET @geom = geometry::STGeomFromText('POINT(-83.255 32.567477)', 4326);
SELECT CASE WHEN @geom.STX < 0 then '-' ELSE '' END +
CAST(FLOOR(ABS(@geom.STX)) as varchar) + ' ' +
CAST(CAST(FLOOR(ABS(@geom.STX) * 60) AS INT) % 60 as varchar) + ''' ' +
CAST(CAST(FLOOR(ABS(@geom.STX) * 3600) AS INT) % 60 AS VARCHAR) + '"',
CASE WHEN @geom.STY < 0 then '-' ELSE '' END +
CAST(FLOOR(ABS(@geom.STY)) as varchar) + ' ' +
CAST(CAST(FLOOR(ABS(@geom.STY) * 60) AS INT) % 60 as varchar) + ''' ' +
CAST(CAST(FLOOR(ABS(@geom.STY) * 3600) AS INT) % 60 AS VARCHAR) + '"'
NB 我问这个是因为我知道几何更多 forgiving 比地理
问题
如何将 geography
转换为 deg/min/sec? ,
对于地理,将小数点更改为 => deg/min/sec 是否有效,就像对于几何一样? (会不会是一样的计算?)
简短的回答:是的。两者只是同一事物的不同表现形式。一个代表十进制的尾数,一个代表六十进制。