//注意这是从WGS84坐标系到高斯投影的转化,百度地图用的经纬度坐标并非是高斯WGS84,但是WGS84是世界通用的坐标系,一般国外都是用这个表示的,经过测试,其精确度还是可以的。
#include "iostream"
#include "math.h"
using namespace std;
struct PingMian
{double x;double y;double z;
};struct WGS84
{double longitude;//经度double latitude;//纬度double height;//高度
};
void GeodeticToCartesian(PingMian& pingmian, const WGS84& wgs84)
{double b;//纬度度数double L;//经度度数double L0;//中央经线度数double L1;//L - L0double t;//tanBdouble m;//ltanBdouble N;//卯酉圈曲率半径double q2;double X;// 高斯平面纵坐标double Y;// 高斯平面横坐标double s;// 赤道至纬度B的经线弧长double f; // 参考椭球体扁率double e2;// 椭球第一偏心率double a; // 参考椭球体长半轴//double a1;double a2;double a3;double a4;double     b1;double   b2;double   b3;double   b4;double  c0;double   c1;double   c2;double   c3;//int Datum, prjno, zonewide;double IPI;//Datum = 84;// 投影基准面类型:北京54基准面为54,西安80基准面为80,WGS84基准面为84prjno = 0;// 投影带号zonewide = 3;IPI = 0.0174532925199433333333; // 3.1415926535898/180.0b = wgs84.latitude; //纬度L = wgs84.longitude;//经度if (zonewide == 6){prjno = trunc(L / zonewide) + 1;L0 = prjno * zonewide - 3;}else{prjno = trunc((L - 1.5) / 3) + 1;L0 = prjno * 3;}if (Datum == 54){a = 6378245;f = 1 / 298.3;}else if (Datum == 84){a = 6378137;f = 1 / 298.257223563;}//L0 = L0 * IPI;L = L * IPI;b = b * IPI;e2 = 2 * f - f * f; // (a*a-b*b)/(a*a);L1 = L - L0;t = tan(b);m = L1 * cos(b);N = a / sqrt(1 - e2 * sin(b) * sin(b));q2 = e2 / (1 - e2) * cos(b) * cos(b);a1 = 1 + 3 / 4 * e2 + 45 / 64 * e2 * e2 + 175 / 256 * e2 * e2 * e2 + 11025 /16384 * e2 * e2 * e2 * e2 + 43659 / 65536 * e2 * e2 * e2 * e2 * e2;a2 = 3 / 4 * e2 + 15 / 16 * e2 * e2 + 525 / 512 * e2 * e2 * e2 + 2205 /2048 * e2 * e2 * e2 * e2 + 72765 / 65536 * e2 * e2 * e2 * e2 * e2;a3 = 15 / 64 * e2 * e2 + 105 / 256 * e2 * e2 * e2 + 2205 / 4096 * e2 * e2 *e2 * e2 + 10359 / 16384 * e2 * e2 * e2 * e2 * e2;a4 = 35 / 512 * e2 * e2 * e2 + 315 / 2048 * e2 * e2 * e2 * e2 + 31185 /13072 * e2 * e2 * e2 * e2 * e2;b1 = a1 * a * (1 - e2);b2 = -1 / 2 * a2 * a * (1 - e2);b3 = 1 / 4 * a3 * a * (1 - e2);b4 = -1 / 6 * a4 * a * (1 - e2);c0 = b1;c1 = 2 * b2 + 4 * b3 + 6 * b4;c2 = -(8 * b3 + 32 * b4);c3 = 32 * b4;s = c0 * b + cos(b) * (c1 * sin(b) + c2 * sin(b) * sin(b) * sin(b) + c3 * sin(b) * sin(b) * sin(b) * sin(b) * sin(b));X = s + 1 / 2 * N * t * m * m + 1 / 24 * (5 - t * t + 9 * q2 + 4 * q2 * q2)* N * t * m * m * m * m + 1 / 720 * (61 - 58 * t * t + t * t * t * t)* N * t * m * m * m * m * m * m;Y = N * m + 1 / 6 * (1 - t * t + q2) * N * m * m * m + 1 / 120 *(5 - 18 * t * t + t * t * t * t - 14 * q2 - 58 * q2 * t * t)* N * m * m * m * m * m;Y = Y + 1000000 * prjno + 500000;pingmian.x = X;pingmian.y = Y;pingmian.z = 0;
}
int main(void)
{PingMian pingmian, pingmian2;WGS84 wgs84, wgs84t;wgs84.latitude = 39.924135;//纬度wgs84.longitude = 116.40337;//经度GeodeticToCartesian(pingmian, wgs84);wgs84t.latitude = 40.000341;//纬度wgs84t.longitude = 116.52899;//经度GeodeticToCartesian(pingmian2, wgs84t);printf("故宫博物院X = %f ; Y = %f;\r\n", pingmian.x, pingmian.y);printf("北京工人体育场X = %f; Y = %f;\r\n", pingmian2.x, pingmian2.y);system("pause");return 0;
}

WGS84到高斯投影的转化相关推荐

  1. 在vue中wgs84和gcj02互相转化,地球坐标系转火星坐标系

    在开始转化前先理清几个名词的定义,以及为什么要转化? WGS-84坐标系:也叫 地球坐标系,他是国际上通用的坐标系,谷歌地图用的就是WGS-84(谷歌中国除外),使用GPS芯片或者    北斗芯片的设 ...

  2. proj4,七参数与坐标转换原理

    一.wgs84,地心坐标系(地心坐标系,是在大地体内建立的O-XYZ坐标系.原点O设在大地的质心,通常分为地心空间直角坐标系(以x,y,z为其坐标元素)和地心大地坐标系(以B,L,H为其坐标元素)), ...

  3. 简析项目中常用的七参数转换法和四参数转换法以及涉及到的基本测量学知识...

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在了解这两种转换方法时,我们有必要先了解一些与此相关的基本知 ...

  4. (三)地理信息中对地球的描述-参心坐标系、地心坐标系

    目录 1. 概述 1.1. 关于本文 1.2. 坐标系类型 2.地心坐标系 3.参心坐标系 1. 概述 1.1. 关于本文 作为一个GIS软件工程师,必要的基础理论知识还是要掌握的,而我没系统学习过地 ...

  5. 超级好用的坐标转换软件

    原文地址:http://bbs.tdzl.org/thread-7306319-1-1.html 坐标转换问题 坐标转换问题的详细了解对于测量很重要,那么请和我一起来讨论这个问题.        首先 ...

  6. 分享的山 换个地图打开成了海

    分享的山 换个地图打开成了海 Android开发中,偶然发现,用百度地图分享出来的经纬度信息,再次用高德地图.腾讯地图打开,会出现几百米甚至几公里的偏移.借用网络相关评论 分享出来的明明是山,换个地图 ...

  7. 应用ggplot2绘制病例分级统计地图

    会用到的包 library(magrittr) #管道函数 library(stringr) #字符处理 library(ggplot2) #绘图 library(rgdal) #读取shp文件 li ...

  8. uni-app获取位置信息(经纬度转换地址信息)

    uniapp获取位置信息,获取到的信息为经纬度,再通过转换成地址信息 1.使用uni.getLocation()获取位置信息 2.下载qqmap-wx-jssdk.js插件插件下载地址 3.使用腾讯位 ...

  9. WGS84经纬度坐标转北京54高斯投影地方坐标流程

    坐标系统之间的坐标转换既包括不同的参心坐标之间的转换,或者不同的地心坐标系之间的转换,也包括参心坐标系与地心坐标系之间的转换以及相同坐标系的直角坐标与大地坐标之间的坐标转换,还有大地坐标与高斯平面坐标 ...

最新文章

  1. AI综述专栏 | 神经科学启发的人工智能
  2. 工厂模式一之简单工厂
  3. Exchange 2007 被 SMTP中继***一例
  4. linux设置组配置额步骤,linux 中磁盘配额设置
  5. Maple 教程(一)---初认识
  6. MySQL数据库默认的端口号是_数据库的默认端口号
  7. ps一点通精品知识库
  8. LDA模型:建立词典+文本数量+建立文档TF-IDF+LDA模型拟合
  9. 2017-2018-1 《程序设计与数据结构》课程总结
  10. 数学模型转化为计算机语言,程序设计语言类课程教学选题方法探讨
  11. Java 2.16(几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  12. 华为云服务器最新信息,云服务器拉新
  13. MYSQL压力测试工具
  14. [理财]:如何稳步的实现财务自由?
  15. Linux临时解决命令行cat命令中文乱码
  16. 金丝楠PhoebeSheareri
  17. Windows System32目录下所有文件详解
  18. 软件命名规范:什么是alpha、beta、RC、Release版
  19. 天线发射功率计算公式_如何计算5G NR基站的总发射功率|小区最大发射功率|参考信号功率...
  20. 学习经验总结(2)xjview学习汇总,一个看脑激活结果的好工具。

热门文章

  1. 线性回归:损失函数和假设函数
  2. Javascript制作游戏之一:进度条的制作
  3. 2022年6月电子学会Python等级考试试卷(二级)答案解析
  4. 小程序 · 复制粘贴
  5. LabVIEW弹窗实现
  6. Unity3D学习——射箭游戏(工厂模式)
  7. 学好此文,国家赠送金手铐和职业套装,数年管吃管住-HTTP请求夹带(HTTP request smuggling)
  8. 微信平台 和服务器什么区别,微信公众平台是选择服务号还是订阅号?两者有什么区别?...
  9. 惠普预装linux的笔记本,紧随戴尔 惠普PC也要预装Linux
  10. 敏捷开发方法之Scrum