自定義坐標系的轉換方式


最近在做有關地圖的項目,然鵝,客戶提供的位置坐標經過他們自己公司進行自定義轉換,而不是傳統意義上的CJCS2000(又叫WGS84/EPSG:3857/墨卡托坐標系/真實坐標系)或GCJ02(國測局標准),對於這種坐標系,無法從leaflet中的crs進行轉換(leaflet能做到什么地步,請看https://leafletjs.com/reference-1.5.0.html#crs),用戶又需要對坐標進行轉換,轉換成他們的坐標系,所以,網上有一個js插件“proj4.js”。

在它的官網上講的是:“用於將坐標從一個坐標系轉換為另一個坐標系的JavaScript庫,包括基准轉換

意思就是,任何定義或自定義的坐標系,我都能轉換,只要你有“proj參數”,這里強調的proj參數就是轉換的依據。

這里展示一個EPSG:4326轉換為EPSG:3857,EPSG:3857的proj如下

let proj_object = {
    "name": "EPSG:3857",
    "name_ref": "WGS_1984_Web_Mercator_Auxiliary_Sphere",
    "name_ref_cn": "WGS84_墨卡托",
    "proj": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs",
    "code": "EPSG3857"
}

//注冊EPSG3857坐標系,用於轉換
proj4.defs([ [proj_object.name, proj_object.proj] ])

//將EPSG:4326坐標轉換為EPSG:3857
proj4("EPSG:4326",proj_object.name, [x,y])
//xy分別是經度緯度,返回結果為一個坐標數組

 

如果有兩種不同的proj參數,name就可以進行坐標之間的相互轉換

var secondProjection = "+proj=longlat +datum=WGS84 +no_defs";

var firstProjection = '+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs';

var coordinates = proj4( firstProjection, secondProjection,[x,y])
//此時的coordinates就是轉換后的坐標

 

引入方式

  1. 外部直接引用proj4.js本地文件
  2. 引入cdn外部鏈接
  3. 控制台,npm install proj4 引入

具體關於proj4的詳細用法請轉移http://proj4js.org/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM