GPS经纬度的表示方法及换算

想要认识GPS中的经纬度,就必须先了解GPS,知道经纬度的来源:

  1. GPS系统组成

  GPS是 Gloabal Positioning System 的简称,意为全球定位系统,主要由地面的控制站、天上飞的卫星、咱们手里拿的接收机三大块组成,我们所使用的GPS包括手持机和车载导航机本质上都是GPS接受机。

  2. GPS接收机

  接收机大大小小,千姿百态,有袖珍式、背负式、车载、船载、机载什么的。一般常见的手持机接收L1信号,还有双频的接收机,做精密定位用的。

  3. 坐标系

  地形图坐标系:我国的地形图采用高斯-克吕格平面直角坐标系。在该坐标系中,横轴:赤道,用Y表示;纵轴:中央经线,用X表示;坐标原点:中央经线与赤道的交点,用O表示。赤道以南为负,以北为正;中央经线以东为正,以西为负。我国位于北半球,故纵坐标均为正值,但为避免中央经度线以西为负值的情况,将坐标纵轴西移500公里。

  北京54坐标系:1954年我国在北京设立了大地坐标原点,采用克拉索夫斯基椭球体,依此计算出来的各大地控制点的坐标,称为北京54坐标系。

  GS84坐标系:即世界通用的经纬度坐标系。

  6度带、3度带、中央经线。

  我国采用6度分带和3度分带:

  1∶2.5万及1∶5万的地形图采用6度分带投影,即经差为6度,从零度子午线开始,自西向东每个经差6度为一投影带,全球共分60个带,用1,2,3,4,5,……表示。

  1∶1万的地形图采用3度分带,从东经1.5度的经线开始,每隔3度为一带,用1,2,3,……表示,全球共划分120个投影带

  4. 经纬度的来源

  为了精确地表明各地在地球上的位置,人们给地球表面假设了一个坐标系,这就是经纬度线。那么,最初的经纬度线是怎么产生又是如何测定的呢公元344年,亚历山大渡海南侵,继而东征,随军地理学家尼尔库斯沿途搜索资料,准备绘一幅“世界地图”。他发现沿着亚历山大东征的路线,由西向东,无论季节变换与日照长短都很相仿。于是做出了一个重要贡献——第一次在地球上划出了一条纬线,这条线从直布罗陀海峡起,沿着托鲁斯和喜马拉雅山脉一直到太平洋。

  亚历山大帝国昙花一现,不久就瓦解了。但以亚历山大为名的那座埃及城里,出现了一个著名图书馆,多年担任馆长的埃拉托斯特尼博学多才,精通数学、天文、地理。他计算出地球的圆周是46 250千米,画了一张有7条经线和6条纬线的世界地图。

  5. 经纬度的表示

  1884年国际经度会议规定,以通过英国伦敦格林威治天文台子午仪中心的经线为0°经线。从0°经线往东叫东经,往西叫西经,东、西各分180°。习惯上以西经20°和东经160°为分界把地球分为东西两个半球。假如从地轴的正中间将地球切成南北两半,上边的一半叫北半球,下边的一半叫南半球。被切的这个平面,叫赤道面。赤道面与地球表面相交的线叫赤道。纬线从赤道往两极越来越短,到了两极就缩小成一个点了。科学家们把赤道定为0°纬线,从赤道向两极各分为90°,赤道以南叫南纬,赤道以北叫北纬。在计算机或GPS上经纬度经常用度、分、秒和度.度、分.分、秒.秒的混合方式进行表示,度、分、秒间的进制是60进制,度.度、分.分、秒.秒的进制是100进制,换算时一定要注意。可以近似地认为每个纬度之间的距离是不变的111KM,每分间1.85KM,每秒间31.8M。经度间的距离随纬度增高逐渐减小,可按一下公式计算:

  经度1°长度=111.413cosφ一0.094cos3φ公里(纬度φ处)。

  一般从GPS得到的数据是经纬度。经纬度有多种表示方法。

  1.) ddd.ddddd, 度 . 度的十进制小数部分(5位)例如:31.12035º

  2.) ddd.mm.mmm,度 . 分 . 分的十进制小数部分(3位)例如 31º10.335‘

  3.)ddd.mm.ss, 度 . 分 . 秒 例如 31º12‘42"

  地球上任何一个固定的点都可以用确定的经纬度表示出来。

  关于经纬度坐标转换的方法

  一、十进制转换成经纬度

  把经纬度转换成十进制的方法很简单

  如下就可以了

   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=结果自己算!

  如把经纬度 (longitude,latitude) (205.395583333332,57.9323888888888)

  转换据成坐标(Degrees,minutes,seconds)(205°23‘44.1",57°55‘56.6")。

  步骤如下:

  1, 直接读取"度":205

 2,(205.395583333332-205)*60=23.734999999920 得到"分":23

  3,(23.734999999920-23)*60=44.099999995200 得到"秒":44.1

  采用同样的方法可以得到纬度坐标:57°55‘56.6"

  如果需要转换的经纬度数据很多,可以借助Sql查询分析器或Excel来进行转换。这里介绍用Sql实现。

  假如我的数据库里的表tableName有以下数据

  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

  表中的数据

  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

  在sql 查询分析器里直接调用以下查询语句

  --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-‘[email protected]+‘)*60,2)‘

  Set @LoaSec=‘left((((longitude-‘[email protected]+‘)*60-‘[email protected]+‘)*60),4)‘

  Set @LatDeg=‘left(longitude,3)‘

  Set @LatMin=‘left((longitude-‘[email protected]+‘)*60,2)‘

  Set @LatSec=‘left((((longitude-‘[email protected]+‘)*60-‘[email protected]+‘)*60),4)‘

  --Execute The Command

  exec(‘select ID,address,longitude,

  ‘[email protected]+‘ as LoaDegree,

  ‘[email protected]+‘ as LoaMinute,

  ‘[email protected]+‘ as LoaSecond,

  ‘[email protected]+‘ as LatDegree,

  ‘[email protected]+‘ as LatMinute,

  ‘[email protected]+‘ as LatSecond

   from TableName‘)

  即可得到:

  ID address longitude LoaDegree LoaMinute LoaSecond latitude LatDegree LatMinute LatSecond

  1 add1 205.3955833 205 23 44 57.93238889 205 23 44

  2 add2 205.3911111 205 23 28 57.95194444 205 23 28

  3 add3 205.3791667 205 22 45 57.98916667 205 22 45

  4 add4 205.3713889 205 22 17 57.95611111 205 22 17

关于分秒表示的实际距离,可以如下推算:
      地球子午线长是39940.67公里,纬度改变一度合110.94公里,一分合1.849公里,一秒合30.8米,赤道圈是40075.36公里,北京地区纬在北纬40度左右,纬度圈长为40075*sin(90-40),此地经度一度合276公里,一分合1.42公里一秒合23.69米

时间: 2024-08-04 19:12:30

GPS经纬度的表示方法及换算的相关文章

使用GPS经纬度定位附近地点(某一点范围内查询)

需要手机查找附近N米以内的商户,致想法是已知一个中心点,一个半径,求圆包含于圆抛物线里所有的点,经纬度是一个点,半径是一个距离,不能直接加减,下面提供C#的解决方法 数据库中记录了商家在百度标注的经纬度(如:116.412007, 39.947545) 最初想法,以圆心点为中心点,对半径做循环,半径每增加一个像素(暂定1米)再对周长做循环,到数据库中查询对应点的商家(真是一个长时间的循环工作),上网百度类似的文章有了点眉目 大致想法是已知一个中心点,一个半径,求圆包含于圆抛物线里所有的点,这样的

关于解决GPS定位设备:GPS静态漂移的方法

关于解决GPS定位设备:GPS静态漂移的方法 GPS的误差: 有很多种因素会影响到GPS的准确率,以下是一个GPS误差引入简表: l         卫星时钟误差:0-1.5米 l         卫星轨道误差:1-5米 l         电离层引入的误差:0-30米 l         大气层引入的误差:0-30米 l         接收机本身的噪音:0-10米 l         多路反射:0-1米 l         总定位误差:大约28米 上述的简表,并不表示一定会存在这么大的误差,

Google地图百度地图GPS经纬度偏移转换(JAVA)

不多说,直接代码,Java版 主要就是Google地图,百度地图,GPS经纬度偏移转换 GCJ-02转换BD-09,Google地图经纬度转百度地图经纬度 BD-09转换GCJ-02,百度转google WGS-84 到 GCJ-02 的转换(即 GPS 加偏) /** * 用于构造地图中的坐标点 * @author lw * **/ public class Point { private double lat;// 纬度 private double lng;// 经度 public Poi

微信中得到的GPS经纬度放在百度,腾迅地图中不准的原因及处理

微信中可以得到两种GPS坐标信息  默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02' 一种是全球的正常GPS坐标信息 wgs84 . GPS,WGS-84,原始坐标体系.一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标.很可惜,在中国,任何一个地图产品都不允许使用GPS坐标,据说是为了保密.GPS坐标是 度分秒形式的经纬度:119度23分32.45秒    换算成我们常见的 可以经过以下计算  119+23/60+32.45/3

计算两个GPS经纬度坐标之间的距离 PHP

不多说了,自己代码就行,你可以直接拿来用. /** * 计算两个坐标之间的距离(米) * @param float $fP1Lat 起点(纬度) * @param float $fP1Lon 起点(经度) * @param float $fP2Lat 终点(纬度) * @param float $fP2Lon 终点(经度) * @return int */ function distanceBetween($fP1Lat, $fP1Lon, $fP2Lat, $fP2Lon){ $fEARTH_

车载gps模拟器的使用方法

GPS模拟器能够模拟出GPS卫星信号运动轨迹,可以模拟GPS卫星导航系统的导航信号,同时也可以仿真任意时间地点和任意姿态的导航终端运动状态,也可以在静态.低动态.高动态等环境下进行导航终端测试.GPS信号模拟器可以模拟真实GPS卫星信号,给卫星导航用户设备提供批量自动化检测与测试.SYN5203GPS信号模拟器通过接收机器接收卫星信号并定位,然后SYN5203GPS信号模拟器进行轨迹录制,录制完后进行文件保存,卫星导航设备再接GPS信号模拟器发出的信号,此时卫星导航设备根据GPS信号模拟器的录制

根据GPS经纬度判断当前所属的市区

这个事情分两步走 1. 拿到行政区划的地理围栏数据 2. 根据GPS定位判断一个点是否落在地理围栏的多边形区域里. 1. 获取行政区划的地理围栏数据可以利用百度API.打开以前我的一个例子在chrome console里输入 var bdary = new BMap.Boundary(); bdary.get("北京市延庆区", function(res){ //获取行政区域 //这里是用户自己的函数. var count = res.boundaries.length; consol

GPS 经纬度转换为 经过旋转后的平面坐标

/** * 地图工具 * * @author dxm * */ public class MapUtil { // 参考点 private double[] d34 = null; private double[] d33 = null; private double[] gs34 = null; private double[] gs33 = null; // 参考点位置 private double x34, y34; // 计算参数 private double a, b, c, bl;

【转】GPS经纬度数据转换到以米单位的平面坐标系

以前在网上找的,现在不知道出处是哪里了,呵呵... 转载出来. 1 //笛卡尔坐标系 2 typedef struct tagCRDCARTESIAN{ 3 double x; 4 double y; 5 double z; 6 }CRDCARTESIAN,*PCRDCARTESIAN; 7 //typedef CRDCARTESIAN *PCRDCARTESIAN; 8 //大地坐标系 9 typedef struct tagCRDGEODETIC{ 10 double longitude;