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(软件定…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
