GPS经纬度换算
在地理信息系统(GIS)和全球定位系统(GPS)中,经纬度是非常重要的概念。它是描述地球上某一点的坐标系,通常用经度和纬度两个坐标来表示。经度是指某一点距本初子午线的距离,通常以东经或西经表示;纬度是指某一点距赤道的距离,通常以北纬或南纬表示。
在实际应用中,经纬度数据需要进行换算和转换,以满足不同的需求。例如,在GPS系统中,经纬度数据通常是十进制小数形式的,而在电子地图中,经纬度数据需要转换为度分秒形式的。
本文将详细介绍经纬度换算的方法,包括十进制转换成经纬度、经纬度转换成十进制,以及使用SQL查询分析器实现经纬度数据的批量转换。
一、十进制转换成经纬度
十进制转换成经纬度是将十进制的小数形式转换为度分秒形式的。该方法非常简单,使用以下公式:
Decimal Degrees = Degrees + minutes/60 + seconds/3600
例如,57°55'56.6" = 57 + 55/60 + 56.6/3600 = 57.9323888888888
114°65'24.6" = 114 + 65/60 + 24.6/3600 = 结果自己算!
二、经纬度转换成十进制
经纬度转换成十进制是将度分秒形式转换为十进制的小数形式。该方法也非常简单,使用以下步骤:
1. 直接读取"度":205
2. (205.395583333332-205)*60=23.734999999920 得到"分":23
3. (23.734999999920-23)*60=44.099999995200 得到"秒":44.1
采用同样的方法可以得到纬度坐标:57°55'56.6"
三、使用SQL查询分析器实现批量转换
如果需要转换的经纬度数据很多,可以借助SQL查询分析器或Excel来进行转换。下面是使用SQL查询分析器实现批量转换的示例:
CREATE TABLE [dbo].[tableName](
[ID] [int] IDENTITY(1,1) NOT NULL,
[address] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[longitude] [float] NULL,
[latitude] [float] NULL
) ON [PRIMARY]
GO
假设表tableName中的数据如下:
ID address longitude latitude
0 add1 205.3955833 57.93238889
1 add2 205.3911111 57.95194444
2 add3 205.3791667 57.98916667
3 add4 205.3713889 57.95611111
可以使用以下查询语句来实现批量转换:
--Declare The longitude,latitude
declare @LoaDeg varchar(50)
declare @LoaMin varchar(100)
declare @LoaSec varchar(100)
declare @LatDeg varchar(50)
declare @LatMin varchar(100)
declare @LatSec varchar(100)
--Set The Variable
Set @LoaDeg='left(longitude,3)'
Set @LoaMin='left((longitude-'+@LoaDeg+')*60,2)'
Set @LoaSec='left((((longitude-'+@LoaDeg+')*60-'+@LoaMin+')*60),4)'
Set @LatDeg='left(longitude,3)'
Set @LatMin='left((longitude-'+@LatDeg+')*60,2)'
Set @LatSec='left((((longitude-'+@LatDeg+')*60-'+@LatMin+')*60),4)'
--Execute The Command
exec('select ID,address,longitude,
'+@LoaDeg+' as LoaDegree,
'+@LoaMin+' as LoaMinute,
'+@LoaSec+' as LoaSecond
,
'+@LatDeg+' as LatDegree,
'+@LatMin+' as LatMinute,
'+@LatSec+' as LatSecond
)