高斯克吕格投影,将经纬度转换为投影坐标
1. 预先定义椭球参数
1 /************************************************************************/ 2 /* 84椭球 */ 3 double a = 6378137.0; 4 double b = 6356752.3142; 5 double f = 1 / 298.257223563; 6 double c = a / (1 - f); 7 double e2 = 2 * f - f * f; 8 double ep2 = 1 / ((1 - f) * (1 - f)) - 1; 9 double dpi = 0.0174532925199432957692; 10 double m0 = a * (1 - e2); 11 double m2 = 1.5 * e2 * m0; 12 double m4 = 1.25 * e2 * m2; 13 double m6 = 7 * e2 * m4 / 6; 14 double m8 = 9 * e2 * m6 / 8; 15 double a0 = m0 + m2 / 2 + 3 * m4 / 8 + 5 * m6 / 16 + 35 * m8 / 128; 16 double a2 = m2 / 2 + m4 / 2 + 15 * m6 / 32 + 7 * m8 / 16; 17 double a4 = m4 / 8 + 3 * m6 / 16 + 7 * m8 / 32; 18 double a6 = m6 / 32 + m8 / 16; 19 double ml = 114; // 中央经线 根据需要进行设置 20 21 double _iproj[12] = { a, b, f, c, e2, ep2, dpi, a0, a2, a4, a6, ml };
2. 编写转换函数
1 int latlon2xy(double &x, double &y) 2 { 3 double lat = x * _iproj[6]; 4 double dL = (y - _iproj[11]) * _iproj[6]; 5 6 double X = _iproj[7] * lat - _iproj[8] * sin(2 * lat) / 2 + _iproj[9] * sin(4 * lat) / 4 - _iproj[10] * sin(6 * lat) / 6; 7 double tn = tan(lat); 8 double tn2 = tn * tn; 9 double tn4 = tn2 * tn2; 10 11 double j2 = (1 / pow(1 - _iproj[2], 2) - 1) * pow(cos(lat), 2); 12 double n = _iproj[0] / sqrt(1.0 - _iproj[4] * sin(lat) * sin(lat)); 13 14 double temp[6] = { 0 }; 15 temp[0] = n * sin(lat) * cos(lat) * dL * dL / 2; 16 temp[1] = n * sin(lat) * pow(cos(lat), 3) * (5 - tn2 + 9 * j2 + 4 * j2 * j2) * pow(dL, 4) / 24; 17 temp[2] = n * sin(lat) * pow(cos(lat), 5) * (61 - 58 * tn2 + tn4) * pow(dL, 6) / 720; 18 temp[3] = n * cos(lat) * dL; 19 temp[4] = n * pow(cos(lat), 3) * (1 - tn2 + j2) * pow(dL, 3) / 6; 20 temp[5] = n * pow(cos(lat), 5) * (5 - 18 * tn2 + tn4 + 14 * j2 - 58 * tn2 * j2) * pow(dL, 5) / 120; 21 22 y = X + temp[0] + temp[1] + temp[2]; 23 x = temp[3] + temp[4] + temp[5]; 24 }
转载于:https://www.cnblogs.com/xingzhensun/p/9900058.html
高斯克吕格投影,将经纬度转换为投影坐标相关推荐
- 经纬度转换为UTM坐标
概念 : UTM(通用横向墨卡托投影): 是一种以米为单位的坐标系统,用于地图和GPS导航.将地球划分为60个纵向的区域.每个区域宽6度,从赤道开始往南北两级方向划分.每个区域都有一个特定的字母. 转 ...
- 高斯-克吕格投影与UTM投影
高斯-克吕格投影与UTM投影 高斯-克吕格(Gauss-Kruger)投影与UTM投影(Universal Transverse Mercator,通用横轴墨卡托投影)都是横轴墨卡托投影的变种,目前一 ...
- 墨卡托投影、高斯-克吕格投影、UTM投影、兰伯特等角圆锥投影
1.墨卡托(Mercator)投影 1.1 墨卡托投影简介 墨卡托(Mercator)投影,是一种"等角正切圆柱投影",荷兰地图学家墨卡托(GerhardusMercator151 ...
- java 弧度 转经纬度_GPS 经纬度转换为 经过旋转后的平面坐标详解
/** * 地图工具 * * @author dxm * */ public class MapUtil { // 参考点 private double[] d34 = null; private d ...
- 高斯-克吕格(Gauss-Kruger)投影与UTM投影的区别
高斯-克吕格(Gauss-Kruger)投影与UTM投影(Universal Transverse Mercator,通用横轴墨卡托投影)都是横轴墨卡托投影的变种,目前一些国外的软件或国外进口仪器的配 ...
- 北京1954-3度分带-高斯克吕格投影
北京1954年3度分带高斯克吕格投影是一种投影方式,用于将地球表面投影到平面图上.这种投影方式经常用于地图制作,在保留经纬度信息的同时减小了对形状和大小的失真.这种投影方式是在北京基准椭球上进行的,因 ...
- 【PythonGIS】无人机影像的像素坐标计算图片某点的地理/投影坐标
又是掉头发的一天,今天的任务是通过图片中心点的地理坐标以及图片中某点的像素坐标(即这个点位于图片中的x,y坐标)计算该点的地理/投影坐标.经过一整天的搜索,发现网上并没有这方面的教程. ...
- python 地理坐标与投影坐标的转换
1. 地理坐标(WGS84)与投影坐标(UTM)的相互转换 from pyproj import Proj# 首先定义要转换的投影坐标系 proj1 = Proj("epsg:32601&q ...
- 北京54和西安80投影坐标系,高斯-克吕格投影
1.首先理解地理坐标系(Geographic coordinate system),Geographic coordinate system直译为 地理坐标系统,是以经纬度为地图的存储单位的.很明显, ...
- 经纬度坐标转换为工程坐标
1. 绪论 在施工和工程测量时,经常需要将GPS坐标转换为工程中所使用的坐标.在Bing上检索到的类似问题,基本描述为两个坐标系的转换,但实际上并非如此. 本文将详细解释转换过程和转换方法. 1.1 ...
最新文章
- 2021年大数据Kafka(九):kafka消息存储及查询机制原理
- ubuntu 10.04 安装eclipse及其中文语言包
- 面试官:为什么MySQL的索引要使用B+树,而不是其它树?比如B树?
- android图片压缩总结
- C 类INI文本,可以添加注释(初步实现,可以添加更加复杂的通用化设计)
- 停止linux下正在执行的ping命令
- 05_通过sql操作表中的数据_插入修改删除查询
- 2019.7.23整理记录以及四道题
- edm邮件直投_EDM邮件直投专家
- 超有意思的代码注释_程序员搞笑的代码注释:谁的代码注释我都不服,就服你的...
- CPU,内存, 硬盘,指令之间的关系
- CCF NOI1009 分配任务
- python3.7安装步骤-Windows下Python 3.7.0的安装步骤,Python370
- 线性方程组解的分析:唯一解,无穷多解以及无解
- java——MP3转wav
- windows7内部版本7601此副本不是正版 桌面背景黑屏
- mysql下载不是运作宝教程_魔力宝贝私服架设教程
- 【第三课】UAV倾斜摄影测量三维建模软件
- 如何将多个文件夹重命名
- 计算机f8键的功能,f8键有什么作用(图文)