Visual Studio C# 编写加密火星坐标转换
Visual Studio C# 编写加密火星坐标转换
- 1、WGS84坐标转GCJ02火星坐标
- 2、GCJ02火星坐标转WGS84坐标(回归计算)
- 3、GCJ02火星坐标转BD09百度坐标
- 4、BD09百度坐标转GCJ02火星坐标(回归计算)
- 5、坐标公共转换类
- 6、地图显示
- 7、程序简单界面
- 8、完整源代码工程
1、WGS84坐标转GCJ02火星坐标
/// <summary>WGS84坐标转GCJ02火星坐标</summary>/// <param name="Position">坐标结构体</param>/// <returns>返回GCJ02火星坐标</returns>public coord WGS84ToGCJ02(coord Position){Double lon = Position.lon;Double lat = Position.lat;if (!isInChina(lon, lat)) return Position;coord Pos = offset(lon, lat);Pos.lon = lon + Pos.lon;Pos.lat = lat + Pos.lat;return Pos;}
2、GCJ02火星坐标转WGS84坐标(回归计算)
/// <summary>GCJ02火星坐标转WGS84坐标</summary>/// <param name="Position">坐标结构体</param>/// <returns>返回WGS84火星坐标</returns>public coord GCJ02ToWGS84(coord Position){Double lon = Position.lon;Double lat = Position.lat;if (!isInChina(lon, lat)) return Position;coord Pos = Position;coord tempPoint = WGS84ToGCJ02(Pos);Double dx = tempPoint.lon - lon;Double dy = tempPoint.lat - lat;while (Math.Abs(dx) > 1e-14 || Math.Abs(dy) > 1e-14)//回归{Pos.lon -= dx;Pos.lat -= dy;tempPoint = WGS84ToGCJ02(Pos);dx = tempPoint.lon - lon;dy = tempPoint.lat - lat;}return Pos;}
3、GCJ02火星坐标转BD09百度坐标
/// <summary>GCJ02火星坐标转BD09百度坐标</summary>/// <param name="Position">坐标结构体</param>/// <returns>返回BD09百度坐标</returns>public coord GCJ02ToBD09(coord Position){Double lon = Position.lon;Double lat = Position.lat;Double x = lon;Double y = lat;Double z = Math.Sqrt(x * x + y * y) + 0.00002 * Math.Sin(y * baiduFactor);Double theta = Math.Atan2(y, x) + 0.000003 * Math.Cos(x * baiduFactor);coord outPos;outPos.lon = z * Math.Cos(theta) + 0.0065;outPos.lat = z * Math.Sin(theta) + 0.006;return outPos;}
4、BD09百度坐标转GCJ02火星坐标(回归计算)
/// <summary>BD09百度坐标转GCJ02火星坐标</summary>/// <param name="Position">坐标结构体</param>/// <returns>返回GCJ02火星坐标</returns>public coord BD09ToGCJ02(coord Position){Double lon = Position.lon;Double lat = Position.lat;Double x = lon - 0.0065;Double y = lat - 0.006;coord Pos;Pos.lon = x;Pos.lat = y;coord tempPoint = GCJ02ToBD09(Pos);Double dx = tempPoint.lon - lon;Double dy = tempPoint.lat - lat;while (Math.Abs(dx) > 1e-14 || Math.Abs(dy) > 1e-14)//回归{Pos.lon -= dx;Pos.lat -= dy;tempPoint = GCJ02ToBD09(Pos);dx = tempPoint.lon - lon;dy = tempPoint.lat - lat;}return Pos;}
5、坐标公共转换类
/// <summary>长半轴</summary>public const Double a = 6378245.0;/// <summary>第一偏心率</summary>public const Double ee = 0.00669342162296594322796213968775;/// <summary>百度坐标转换因子</summary>public const Double baiduFactor = (Math.PI * 3000.0) / 180.0;// 定义坐标结构体public struct coord{public Double lon;public Double lat;};/// <summary>是否中国坐标</summary>/// <param name="lon">经度</param>/// <param name="lat">纬度</param>/// <returns>返回布尔值</returns>public Boolean isInChina(Double lon, Double lat){return lon >= 72.004 && lon <= 137.8347 && lat >= 0.8293 && lat <= 55.8271;}/// <summary>偏移量</summary>/// <param name="lon">经度</param>/// <param name="lat">纬度</param>/// <returns></returns>public coord offset(Double lon, Double lat){Double dLon = transformLon(lon - 105.0, lat - 35.0);Double dLat = transformLat(lon - 105.0, lat - 35.0);Double radLat = (lat / 180.0) * Math.PI;Double magic = Math.Sin(radLat);magic = 1 - ee * magic * magic;Double sqrtMagic = Math.Sqrt(magic);coord outPos;outPos.lon = (dLon * 180.0) / (a / sqrtMagic * Math.Cos(radLat) * Math.PI);outPos.lat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * Math.PI);return outPos;}/// <summary>纬度偏移量</summary>/// <param name="lon">经度</param>/// <param name="lat">纬度</param>/// <returns>返回纬度</returns>public Double transformLat(Double lon, Double lat){Double ret = -100.0 + 2.0 * lon + 3.0 * lat + 0.2 * lat * lat + 0.1 * lon * lat + 0.2 * Math.Sqrt(Math.Abs(lon));ret += ((20.0 * Math.Sin(6.0 * lon * Math.PI) + 20.0 * Math.Sin(2.0 * lon * Math.PI)) * 2.0) / 3.0;ret += ((20.0 * Math.Sin(lat * Math.PI) + 40.0 * Math.Sin((lat / 3.0) * Math.PI)) * 2.0) / 3.0;ret += ((160.0 * Math.Sin((lat / 12.0) * Math.PI) + 320.0 * Math.Sin((lat * Math.PI) / 30.0)) * 2.0) / 3.0;return ret;}/// <summary>经度偏移量</summary>/// <param name="lon">经度</param>/// <param name="lat">纬度</param>/// <returns>返回经度</returns>public Double transformLon(Double lon, Double lat){Double ret = 300.0 + lon + 2.0 * lat + 0.1 * lon * lon + 0.1 * lon * lat + 0.1 * Math.Sqrt(Math.Abs(lon));ret += ((20.0 * Math.Sin(6.0 * lon * Math.PI) + 20.0 * Math.Sin(2.0 * lon * Math.PI)) * 2.0) / 3.0;ret += ((20.0 * Math.Sin(lon * Math.PI) + 40.0 * Math.Sin((lon / 3.0) * Math.PI)) * 2.0) / 3.0;ret += ((150.0 * Math.Sin((lon / 12.0) * Math.PI) + 300.0 * Math.Sin((lon / 30.0) * Math.PI)) * 2.0) / 3.0;return ret;}
6、地图显示
/// <summary>坐标值改变,地图改变</summary>private void ChangeVal(){Double longitude = 0;Double latitude = 0;switch (comboBox1.SelectedIndex){case 0://高德if (string.IsNullOrEmpty(textBox3.Text) || string.IsNullOrEmpty(textBox4.Text)){longitude = 112.960235035495;latitude = 28.1661659723607;}else{longitude = Convert.ToDouble(textBox4.Text);latitude = Convert.ToDouble(textBox3.Text);}//string amapUrl = "http://ditu.amap.com/?longitude=" + longitude + "&latitude=" + latitude;string amapUrl = "http://ditu.amap.com";// "http://map.gaode.com/";webBrowser1.Navigate(amapUrl);break;case 1://百度if (string.IsNullOrEmpty(textBox5.Text) || string.IsNullOrEmpty(textBox6.Text)){longitude = 112.966759165825;latitude = 28.1719881916543;}else{longitude = Convert.ToDouble(textBox6.Text);latitude = Convert.ToDouble(textBox5.Text);}//string url = "http://map.baidu.com/";string url = "http://api.map.baidu.com/marker?location=" + latitude + "," + longitude + "&title=&content=我在这里&output=html";webBrowser1.Navigate(url);break;case 2://腾讯if (string.IsNullOrEmpty(textBox3.Text) || string.IsNullOrEmpty(textBox4.Text)){longitude = 112.960235035495;latitude = 28.1661659723607;}else{longitude = Convert.ToDouble(textBox4.Text);latitude = Convert.ToDouble(textBox3.Text);}// string qqMapUrl= "http://map.qq.com/?referer=ts.qq.com&type=ms&lat=" + latitude + "&lng=" +longitude;string qqMapUrl = "http://map.qq.com/";webBrowser1.Navigate(qqMapUrl);break;}}
7、程序简单界面

8、完整源代码工程
CSDN 资源下载地址:
https://download.csdn.net/download/zyyujq/89823267
相关文章:
Visual Studio C# 编写加密火星坐标转换
Visual Studio C# 编写加密火星坐标转换 1、WGS84坐标转GCJ02火星坐标2、GCJ02火星坐标转WGS84坐标(回归计算)3、GCJ02火星坐标转BD09百度坐标4、BD09百度坐标转GCJ02火星坐标(回归计算)5、坐标公共转换类6、地图显示7、程序简单界…...
微服务-流量染色
1. 功能目的 通过设置请求头的方式将http请求优先打到指定的服务上,为微服务开发调试工作提供便利 请求报文难模拟:可以直接在测试环境页面上操作,流量直接打到本地IDEA进行debug请求链路较长:本地开发无需启动所有服务…...
C语言实现 操作系统 经典的进程同步问题(2)
哲学家进餐问题 哲学家进餐问题是一个经典的同步问题,涉及多个哲学家试图同时用餐,但每个哲学家左右两边只有一把叉子。为了避免死锁和饥饿,可以使用记录型信号量(也称为计数信号量)来管理叉子的使用。 1、利用记录型…...
有效的字母异位词【字符串哈希】
题目 题解: 1.排序: #include<algorithm>class Solution{public:bool isAnagram(string s,string t){sort(s.begin(),s.end());sort(t.begin(),t.end());return st;} } 时间复杂度O(nlogn) 2.哈希表 #include<algorithm>int hash1[100]; …...
如何选择与运用工具提升工作效率的秘密指南
一、引言 ---- 在当今这个信息爆炸的时代,编程工具的选择对于开发者的工作效率至关重要。从智能的代码编辑器到强大的版本控制工具,再到那些能让我们事半功倍的自动化脚本,每一款工具都有其独特的优势和价值。那么,哪款编程工具…...
Spring系列 AOP实现过程
文章目录 实现原理EnableAspectJAutoProxyAnnotationAwareAspectJAutoProxyCreator 代理创建过程wrapIfNecessarygetAdvicesAndAdvisorsForBeanfindCandidateAdvisorsfindAdvisorsThatCanApply createProxy AspectJ注解处理代理调用过程 实现原理 本文源码基于spring-aop-5.3.…...
C语言 getchar 函数完全解析:掌握字符输入的关键
前言 在C语言中,getchar 是一个非常实用的函数,用于从标准输入流(通常是键盘)读取单个字符。这对于处理文本输入非常有用,尤其是在需要逐个字符处理的情况下。本文将深入探讨 getchar 函数的用法和特点,并…...
Docker安装mysql8并配置主从复制
1. 安装mysql8 1.1 新增挂载文件 # 新增mysql挂载文件夹 mkdir -p /root/docker/mysql/m01/log mkdir -p /root/docker/mysql/m01/data mkdir -p /root/docker/mysql/m01/conf1.2 新增mysql配置文件 # 新增mysql配置文件 cd /root/docker/mysql/m01/conf vim my.cnf # 下面是…...
快手:数据库升级实践,实现PB级数据的高效管理|OceanBase案例
本文作者:胡玉龙,快手技术专家 快手在较初期采用了OceanBase 3.1版本成功替换了多个核心业务、数百套的MySQL集群。至2023年,快手的数据量已突破800TB大关,其中最大集群的数据量更是达到了数百TB级别。为此,快手将数据…...
基于Node.js+Express+MySQL+VUE实现的计算机毕业设计共享单车管理网站
单车信息选择骑行 骑行状态留言公告/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序 目录 功能图 界面展示 开发目标 开发背景意义 开发意义 开发目的 项目概述 技术选型与理由 系统设计与功能实现 项目可执行性分析 系统架构需求 性能需…...
人工智能辅助的神经康复
人工智能辅助的神经康复是通过应用人工智能(AI)技术来改善神经系统损伤患者的康复过程。此领域结合了深度学习、数据分析和机器人技术,旨在提升康复效果、个性化治疗方案和监测进展。以下是该领域的关键组成部分和应用: 1. 康复评…...
KKT实际运用 -MATLAB
FMINCON函数可以很方便的求出:fun:目标函数,即需要最小化的函数,输入参数为向量x,输出为标量f(x)。x0:初始点,即求解过程的起始点,可以是标量、向量或矩阵。A和b:线性不等…...
php在线相册
1、将静态页面效果完成 解压到www里 整个数据 暂时是错误的 建立连接密码为root 运行sql文件 右键根目录刷新 刷新后成功 开始 测试 如果需要上传照片,点击创建相册,选择上传文件,选择文件后退出 导入alumbenew2 2.提交表单方式 3.利用ph…...
Xcode手动安装SDK模拟器
1.下载SDK模拟器&Xcode SDK和Xcode官方下载地址 2.下载好后使用命令将SDK导入到Xcode中如下命令 注:我是在/Applications 目录下执行的命令,模拟其地址直接拖拽过来 sudo xcode-select -s Xcode.app xcodebuild -runFirstLaunch xcodebuild -imp…...
Docker安装consul + go使用consul + consul知识
1. 什么是服务注册和发现 假如这个产品已经在线上运行,有一天运营想搞一场促销活动,那么我们相对应的【用户服务】可能就要新开启三个微服务实例来支撑这场促销活动。而与此同时,作为苦逼程序员的你就只有手动去 API gateway 中添加新增的这…...
JWT 漏洞 - 学习手册
0x01:JWT 前导知识 0x0101:JWT 详解 0x02:JWT 漏洞介绍 0x0201:JWT 漏洞介绍 0x03:JWT 挖掘思路 JWT 漏洞挖掘思路 - JWT Payload 敏感信息泄露 备注:通过泄露的 JWT Payload 获取用户的敏感信息&#…...
HTML【知识改变命运】03font 字体标签
题目:在页面上显示"北京"两个字,字体为微软雅黑,颜色为红色,大小为40xp; font标签可以修饰字体的大小,颜色,和字体 属性:color颜色,face字体,size大…...
集师专属知识付费小程序搭建 心理咨询小程序搭建
一、产品简介 集师SaaS知识付费软件,为知识创业者或商家提供一站式内容交付解决方案,助力商家搭建集品牌传播、商业变现和用户运营于一体的线上知识服务系统,覆盖全渠道经营场景,占据每个流量入口,使流量变现快速高效…...
https://www.aitoolpath.com/ 一个工具数据库,目前储存了有2000+各种工具。每日更新
AI 工具爆炸?别怕,这个网站帮你整理好了! 哇塞,兄弟们!AI 时代真的来了!现在各种 AI 工具跟雨后春笋似的,噌噌噌地往外冒。AI 写作、AI 绘画、AI 代码生成……简直是要逆天啊! 可是…...
科技的成就(六十三)
583、八小时工作制 最先提出这种理念的人竟然也是一名企业家,而且还是一名空想社会主义者。这名叫做罗伯特欧文的英国人,也凭借先进的人本管理理念成为了现代人事管理之父。 584、SDN(软件定义网络) "SDN(软件定…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
