home > GIS > GIS Science >

GIS坐標系:WGS84,GCJ02,BD09,火星坐標,大地坐標等解析說與轉換

Author:[email protected] Date:

各個坐標系的來龍去脈背景詮釋,使用注意事項,各個坐標系轉換方法。WGS84轉GCJ02、GCJ02轉BD009、BD09轉GCJ02。坐標批量轉換庫,https: www npmjs com package coordinates_convert?

在我朝,地理坐標轉換有:WGS84轉GCJ02、GCJ02轉BD009、BD09轉GCJ02。

WGS84大地坐標系

GPS全球定位系統使用的坐標系統,GPS設備直接返回的坐標即為WGS84。隨GPS通用,能正確套到現在大部分基于這套坐標建立的衛星地圖上。全球初神州外,幾乎所有地圖商都是使用這個坐標系,比如Google地圖使用的就是WGS84坐標。

GCJ02火星坐標系

由中國國家測繪局制定的地理信息系統的坐標,國內出版的各種地圖坐標系統(包括電子地圖),必須至少采用GCJ02對WGS84進行首次加密。

為什么叫火星坐標

據說說是為了國家安全保密需要,要求全部國內地圖測繪單位必須使用這套坐標系統,對GPS的坐標系統進行調整,所以會導致使用國內測繪的地理地圖數據對不上使用GPS坐標測繪的地圖數據,甚至是衛星地圖,也就是國際版G.map的衛星圖和地圖對不上的原因。所以戲稱火星坐標。知友的回答:https://www.zhihu.com/question/29806566/answer/136724509

被強制使用的火星坐標

比較雞賊的是:GCJ-02轉WGS84的算法,居然是**收費項目。對于民用:地球坐標->火星坐標是不可逆的。

所有的電子地圖所有的導航設備,都需要加入國家保密插件。《導航電子地圖安全處理技術基本要求》。這是一個國家標準,標準號為GB 20263—2006。該標準的第4節第4.1款規定:4.1 導航電子地圖在公開出版、銷售、傳播、展示和使用前,必須進行空間位置技術處理。

國內測繪公司都需要將坐標加密為火星坐標

地圖公司測繪地圖,測繪完成后,送到國家測繪局,將真實坐標的電子地圖,加密成“火星坐標”,這樣的地圖才是可以出版和發布的,然后才可以讓GPS公司處理。

所用GPS相關公司都需要用火星坐標工作

所有的GPS公司,只要需要汽車導航的,需要用到導航電子地圖的,統統需要在軟件中加入國家保密算法,將COM口讀出來的真實的坐標信號,加密轉換成國家要求的保密的坐標,這樣,GPS導航儀和導航電子地圖就可以完全匹配啦,GPS也就可以正常工作啦。"

國內地圖坐標使用注意事項

火星坐標與地球通用坐標系WGS84,偏差一般為 300~500 米。也就是說,你手機GPS獲取的坐標,直接疊加到這個“火星坐標系”的地圖上,會有 300~500 米的偏差。偏移的絕對值可以參見下圖(最紅處接近 700 m,最藍處大約 20 米):

具體參考:

如何看待「地形圖非線性保密處理技術」? https://www.zhihu.com/question/29806566/answer/46099380


GCJ02百度坐標系

百度在火星坐標系GCJ02的基礎上進行的二次加密格式。個人稱為冥王星坐標系,簡稱冥王坐標系。

百度坐標轉換官方文檔:http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition

追求準確度還是以這個方法為準。

三大坐標系轉換

坐標系轉換庫:https://www.npmjs.com/package/coordinate-convert

var coord = CoordinateConvert.wgc2gcj(116.3997, 39.9158)

經緯度轉坐標geographic-coordinate-converter 

 https://www.npmjs.com/package/geographic-coordinate-converter

import { CoordinateConverter } from "coordinate-converter";
CoordinateConverter.fromDecimal([-36.01011, -2.34856])
.toDegreeMinutes() //"36o 00.607' S 002o 20.914' W"

CoordinateConverter.fromDegreeMinutes("36o 00.607' S 002o 20.914' W")
.toDegreeMinutesSeconds() //"36o 00' 36.4'' S 002o 20' 54.8'' W"

CoordinateConverter.fromDegreeMinutesSeconds("36o 00' 36.4'' S 002o 20' 54.8'' W")
.toDecimal() //"-36.01011 -2.34856"

CoordinateConverter.fromDegreeMinutes("36o 00.607' S 002o 20.914' W")
.toDecimalArray() //[-36.01012, -2.34857]

經緯度轉坐標輕量庫:https://www.npmjs.com/package/coordinates-converter

const coordWithSymbols = new Coordinate('19°25\'57.3"N 99°07\'59.5"W')
const coordWithSpaces = new Coordinate('19 25 57.3 N 99 07 59.5 W')
coordWithSpaces.toGeoJson() // [-99.133194, 19.432583]

百度高德地圖地圖數據轉GeoJSON

高德地圖數據坐標點一般格式為{P,Q,lng,lat}對象。需要手工吧lng lat轉為GeoJSON數組,geojson庫提供了方法

// 樣例代碼 https://lbs.amap.com/api/javascript-api/example/line/obj3d-thinline
var opts = {
  subdistrict: 1,
  extensions: 'all',
  level: 'province'
}
var district = new AMap.DistrictSearch(opts)
district.search('廣東省', function (status, result) {
  console.log(JSON.stringify(result))
  var boundaries = result.districtList[0].boundaries
  console.log(JSON.stringify(boundaries))
})
// [[{"P":39.032683,"Q":118.61805600000002,"lng":118.618056,"lat":39.032683},{"P":39.032682,"Q":118.61749199999997,"lng":118.617492,"lat":39.032682},

https://www.npmjs.com/package/geojson 方法

var GeoJSON = require('geojson')
var data = [{name: 'Location A', category: 'Store', street: 'Market', lat: 39.984, lng: -75.343}]
var data2 = { name: 'Location A', category: 'Store', street: 'Market', lat: 39.984, lng: -75.343 }

GeoJSON.parse(data, {Point: ['lat', 'lng']})
GeoJSON.parse(data2, {Point: ['lat', 'lng'], include: ['name']})
var data3 = [
  {
    x: 0.5,
    y: 102.0,
    prop0: 'value0'
  },
  {
    line: [[102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]],
    prop0: 'value0',
    prop1: 0.0
  },
  {
    polygon: [
      [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ]
    ],
    prop0: 'value0',
    prop1: {"this": "that"}
  }
]
GeoJSON.parse(data3, {'Point': ['x', 'y'], 'LineString': 'line', 'Polygon': 'polygon'});

免了手工寫循環

個人的批量坐標轉換庫:https://www.npmjs.com/package/coordinates_convert



轉載本站文章《GIS坐標系:WGS84,GCJ02,BD09,火星坐標,大地坐標等解析說與轉換》,
請注明出處:http://www.qsexmk.tw/html/GIS/GIS-Science/2702.html