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(软件定…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...

2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】
1、获取景点详情的请求【my_api.js】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http(/login/getWXSessionKey, {code,avatar}); };//…...
matlab模糊控制实现路径规划
路径规划是机器人和自动驾驶系统中的重要问题之一,它涉及确定如何在给定环境中找到最优路径以达到特定目标。模糊控制是一种有效的控制方法,可以应用于路径规划问题。 路径规划算法的目标是在避免障碍物的情况下,找到机器人或车辆从起点到终…...

【笔记】解决MSYS2安装后cargo-install-update.exe-System Error
#工作记录 cargo-install-update.exe-System Error The code execution cannot proceed because libgit2-1.9.dll wasnot found. Reinstalling the program may fix this problem. …...
MySQL(56)什么是复合索引?
复合索引(Composite Index),也称为多列索引,是在数据库表的多列上创建的索引。它可以提高涉及多个列的查询性能,通过组合多个列的值来索引数据。复合索引特别适用于需要同时过滤多列的查询。 复合索引的优点 提高多列…...