首页 > 其他分享 >高德坐标转gps坐标

高德坐标转gps坐标

时间:2024-07-02 16:58:23浏览次数:1  
标签:wglat sin wglng let 坐标 pi 高德 Math gps

vue3实现高德坐标和gps坐标互转:

/**  * 高德地图坐标转GPS坐标算法  */ const pi = 3.1415926535897932384626; const a = 6378245.0; //长半轴 const ee = 0.00669342162296594323; //扁率
//地球坐标系(WGS-84)转火星坐标系(GCJ) export function WgsToGcj02(wglng, wglat){     if (outOfChina(wglng, wglat)) {         var wglnglat={lng:wglng,lat:wglat};         return wglnglat;     }     let dlat = transformLat(wglng - 105.0, wglat - 35.0);     let dlng = transformLng(wglng - 105.0, wglat - 35.0);     let radlat = wglat / 180.0 * pi;     let magic = Math.sin(radlat);     magic = 1 - ee * magic * magic;     let sqrtmagic = Math.sqrt(magic);     dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi);     dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * pi);
    var lng = wglng + dlng;     var lat = wglat + dlat;     var mars_point={lng:lng,lat:lat};     return mars_point; } //火星坐标系(GCJ)转地球坐标系(WGS-84) export function Gcj02ToWgs(wglng, wglat){     if (outOfChina(wglng, wglat)) {         var wglnglat={lng:wglng,lat:wglat};         return wglnglat;     }     let dlat = transformLat(wglng - 105.0, wglat - 35.0);     let dlng = transformLng(wglng - 105.0, wglat - 35.0);     let radlat = wglat / 180.0 * pi;     let magic = Math.sin(radlat);     magic = 1 - ee * magic * magic;     let sqrtmagic = Math.sqrt(magic);     dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi);     dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * pi);     let mglat = wglat + dlat;     let mglng = wglng + dlng;
    var lng = wglng * 2 - mglng;     var lat = wglat * 2 - mglat;     var mars_point={lng:lng,lat:lat};     return mars_point; } //判断是否在国内 export function outOfChina(wglng, wglat){     if ((wglng < 73.66|| wglng > 135.05) && (wglat < 3.86  || wglat > 53.55)) {         return true;     }     else {         return false;     } } //纬度转换 export function transformLat(x,y){     let ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));     ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;     ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;     ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;     return ret; } //经度转换 export function transformLng(x,y){     let ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));     ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;     ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;     ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;     return ret; }  

标签:wglat,sin,wglng,let,坐标,pi,高德,Math,gps
From: https://www.cnblogs.com/fenxiangboke/p/18280181

相关文章

  • 百度坐标转gps坐标
    vue3页面实现:利用百度api的jsapi中的 BMap.Convertor()此方法通过计算取巧算出gps坐标误差非常小;假设百度坐标:lng1:113.94620475687566 lat1:22.56028856475092把这个坐标当成GPS坐标,通过接口获得他的百度坐标:lng2=113.95764483473,lat2=22.562997980443通过计算就可以得到......
  • 火星坐标转换
     出处:火星坐标、百度坐标、WGS84坐标转换代码(JS版)/***CreatedbyWandergison2015/7/8.*提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换*///定义一些常量varx_PI=3.14159265358979324*3000.0/180.0;varPI=3.1415926535897932......
  • STM32实战项目:从零打造GPS蓝牙自行车码表,掌握传感器、蓝牙、Flash存储等核心技术
    一、引言骑行,作为一项绿色健康的运动方式,越来越受到人们的喜爱。而记录骑行数据,分析速度、里程等信息,则成为了许多骑行爱好者的追求。本篇文章将带你使用STM32单片机,DIY一款功能完备的自行车码表,记录你的每一次骑行轨迹!二、功能概述本项目将实现以下功能:实时速度显示: 利......
  • 利用高德API获取整个城市的公交路线并可视化(一)
    如果说我比别人看得更远些,那是因为我站在了巨人的肩上。——牛顿参考:Python:利用高德API获取公交路线并可视化_python爬取高德路网数据-CSDN博客【大数据】城市公交网络分析与可视化(四):绘制城市公交(地铁)线路图_python爬取公交网络数据并生成文件-CSDN博客记录于2024年6月,因为......
  • RAS坐标与IJK世界坐标转换
    RAS坐标与IJK世界坐标转换RAS是解剖坐标系,单位mmIJk是像素/体素坐标系,单位像素pixel/体素Voxel需要了解的另外两个概念是origin和spacingorigin原点表示第一个体素Voxel(0,0,0)在解剖坐标系中的位置间距spacing表示沿指定轴上两个体素之间的距离使用origi......
  • MySQL计算两个地理坐标点之间的球面距离
    st_distance_sphere函数是mysql5.7提供的,可以直接查询两个经纬度之间相距多少米,它接受两个参数,每个参数是一个点的经度和纬度表结构:CREATETABLE`video_alarm`(`alarm_id`char(50)NOTNULL,`alarm_type`varchar(20)DEFAULTNULLCOMMENT'预警类型',`alarm_t......
  • 13-Matplotlib坐标轴格式
    Matplotlib坐标轴格式在一个函数图像中,有时自变量x与因变量y是指数对应关系,这时需要将坐标轴刻度设置为对数刻度。Matplotlib通过axes对象的xscale或yscale属性来实现对坐标轴的格式设置。示例:右侧的子图显示对数刻度,左侧子图则显示标量刻度。importmatplotlib.p......
  • cesium 点击事件转经纬度坐标
    lethandler=newCesium.ScreenSpaceEventHandler(viewer.scene.canvas); handler.setInputAction(function(e){ console.log('cli',e);//letpickId=viewer.scene.pick(e.position); //点击监听三维数据服务的实体 varcartesian=viewer.camera.......
  • 【YOLOv10改进[注意力]】在YOLOv10中添加坐标注意力CoordAtt + 含全部代码和详细修改
    本文将进行在YOLOv10中添加坐标注意力CoordAtt的实践,助力YOLOv10目标检测效果的实践,文中含全部代码、详细修改方式以及手撕结构图。助您轻松理解改进的方法。改进前和改进后的参数对比: 目录一CoordAtt二在YOLOv10中添加注意力CoordAtt的实践1整体修改......
  • (slam工具)3 GNSS-ECEF-ENU 坐标系下转换
      https://github.com/Dongvdong/v1_1_slam_tool '''gnss和enu坐标系相互转化'''importnumpyasnpfrompyprojimportProj,TransformerimportpyprojimportmathfromAPI_1GetGpsFromIMGimport*use_cgcs2000Towgs84=0#......