日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

不同地图坐标系的坐标转换

發(fā)布時間:2025/4/16 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不同地图坐标系的坐标转换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目前主要有哪些坐標(biāo)系:

大地坐標(biāo)系統(tǒng)(WGS-84):用來表述地球上點(diǎn)的位置的一種地區(qū)坐標(biāo)系統(tǒng),主要用于國外地圖。

火星坐標(biāo)系(GCJ-02):對真實(shí)坐標(biāo)系統(tǒng)進(jìn)行人為的加偏處理,如大多數(shù)國內(nèi)地圖:高德地圖、騰訊地圖。

百度坐標(biāo)系(BD-09):對火星坐標(biāo)系再次進(jìn)行加密,如:百度地圖。

?

坐標(biāo)轉(zhuǎn)換

一、WGS-84轉(zhuǎn)GCJ-02

// WGS-84轉(zhuǎn)GCJ-02 transformlat: function (lng, lat) {let PI = 3.1415926535897932384626;let ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;return ret},transformlng: function (lng, lat) {let PI = 3.1415926535897932384626;let ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;return ret},wgsToGcj: function (lng, lat) {let PI = 3.1415926535897932384626;let a = 6378245.0;let ee = 0.00669342162296594323;let dlat = this.transformlat(lng - 105.0, lat - 35.0);let dlng = this.transformlng(lng - 105.0, lat - 35.0);let radlat = lat / 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 = lat + dlat;let mglng = lng + dlng;return {longitude: mglng,latitude: mglat}},

二、GCJ-02轉(zhuǎn)WGS-84

// GCJ-02轉(zhuǎn)WGS-84 transformlat: function (lng, lat) {let PI = 3.1415926535897932384626;let ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;return ret},transformlng: function (lng, lat) {let PI = 3.1415926535897932384626;let ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;return ret},gcjToWgs: function (lng, lat) {let PI = 3.1415926535897932384626;let a = 6378245.0;let ee = 0.00669342162296594323;let dlat = transformlat(lng - 105.0, lat - 35.0);let dlng = transformlng(lng - 105.0, lat - 35.0);let radlat = lat / 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 = lat + dlat;let mglng = lng + dlng;return {longitude: lng * 2 - mglng,latitude: lat * 2 - mglat}},

三、GCJ-02轉(zhuǎn)BD-09

//火星轉(zhuǎn)百度坐標(biāo) function bd_encrypt(lng, lat) {var X_PI = Math.PI * 3000.0 / 180.0;var x = lng, y = lat;var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI);var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * X_PI);var bd_lon = z * Math.cos(theta) + 0.0065;var bd_lat = z * Math.sin(theta) + 0.006;return {longitude: bd_lon,latitude: bd_lat }; }

四、BD-09轉(zhuǎn)GCJ-02

//百度轉(zhuǎn)火星坐標(biāo) function bd_decrypt(lng, lat) {var X_PI = Math.PI * 3000.0 / 180.0;var x = lng- 0.0065;var y = lat- 0.006;var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);var gg_lon = z * Math.cos(theta);var gg_lat = z * Math.sin(theta);return {longitude: gg_lon,latitude: gg_lat} }

在國外則不做偏移處理

// 判斷是否在國內(nèi),在國外則不做偏移 function out_of_china(lng, lat) {return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false); }

完!

?

總結(jié)

以上是生活随笔為你收集整理的不同地图坐标系的坐标转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。