【问题标题】:convert latitude and longitude values from dms to dd in sql server在sql server中将纬度和经度值从dms转换为dd
【发布时间】:2014-08-11 21:13:35
【问题描述】:
我在DegreesMinutesSeconds(DMS) 中有latitude 和longitude 值
喜欢17264496N,78223862E。
我需要转换为DecimalDegrees(DD),例如17.8688,078.12547。
有没有办法从dms转换为dd。
在 Google 搜索中,我发现只有 degrees、Minutes、Seconds(例如 17 度、26 分钟)具有单独列的值的 dms 转换, 44 秒。
【问题讨论】:
标签:
sql-server
sql-server-2008
type-conversion
【解决方案1】:
我得到了答案,我们必须先将 dms 值按以下方式拆分为度、分和秒。
你所要做的就是
Step1:创建以dms纬度值为参数的函数。
Step2:现在函数返回十进制度值
ALTER FUNCTION [dbo].[GetLatitudeConversionFromDMSToDD]
(
@LatitudeInDMS NVARCHAR(100)
)
Returns FLOAT
As
Begin
Declare @FirstTwoCharForStartLat nvarchar(100),@CharElimForStartLat
nvarchar(100), @RemCharForStartLat nvarchar(100),
@CharElimcountForStartLat float, @DegreetodecimalcalcForStartLat float
select @FirstTwoCharForStartLat= LEFT(@LatitudeInDMS,2)
select @CharElimForStartLat=LEFT(@LatitudeInDMS,LEN(@LatitudeInDMS)-1)
select @RemCharForStartLat=RIGHT(@CharElimForStartLat,6)
select @CharElimcountForStartLat=((CAST(@RemCharForStartLat as
float))/600000)
select @DegreetodecimalcalcForStartLat=(cast(@FirstTwoCharForStartLat as
float))+@CharElimcountForStartLat
Return @DegreetodecimalcalcForStartLat
END
--select dbo.GetLatitudeConversionFromDMSToDD('17264496N')
--The output is:17.4408266666667