關(guān)于坐標(biāo)系
我們通常用經(jīng)緯度來(lái)表示一個(gè)地理位置,但是由于一些原因,我們從不同渠道得到的經(jīng)緯度信息可能并不是在同一個(gè)坐標(biāo)系下。
? 高德地圖、騰訊地圖以及谷歌中國(guó)區(qū)地圖使用的是GCJ-02坐標(biāo)系
? 百度地圖使用的是BD-09坐標(biāo)系
? 底層接口(HTML5 Geolocation或ios、安卓API)通過(guò)GPS設(shè)備獲取的坐標(biāo)使用的是WGS-84坐標(biāo)系
不同的坐標(biāo)系之間可能有幾十到幾百米的偏移,所以在開(kāi)發(fā)基于地圖的產(chǎn)品,或者做地理數(shù)據(jù)可視化時(shí),我們需要修正不同坐標(biāo)系之間的偏差。
?WGS-84 - 世界大地測(cè)量坐標(biāo)系
WGS-84(World Geodetic System, WGS)是使用最廣泛的坐標(biāo)系,也是世界通用的坐標(biāo)系,GPS設(shè)備得到的經(jīng)緯度就是在WGS84坐標(biāo)系下的經(jīng)緯度。通常通過(guò)底層接口得到的定位信息都是WGS84坐標(biāo)系。如天地圖,osm底圖等。
GCJ-02 - 國(guó)測(cè)局坐標(biāo)系
GCJ-02(G-Guojia國(guó)家,C-Cehui測(cè)繪,J-Ju局),又被稱為火星坐標(biāo)系,是一種基于WGS-84制定的大地測(cè)量系統(tǒng),由中國(guó)國(guó)測(cè)局制定。此坐標(biāo)系所采用的混淆算法會(huì)在經(jīng)緯度中加入隨機(jī)的偏移。如谷歌地圖(中國(guó)區(qū)),高德地圖,騰訊地圖等。
?BD-09 - 百度坐標(biāo)系系
BD-09(Baidu, BD)是百度地圖使用的地理坐標(biāo)系,其在GCJ-02基礎(chǔ)上又增加了一次偏移,用來(lái)保護(hù)用戶隱私。從百度產(chǎn)品中得到的坐標(biāo)都是BD-09坐標(biāo)系。
如何安裝
PostgreSQL安裝PostGIS擴(kuò)展
復(fù)制geoc-pg-coordtansform.sql中代碼,在數(shù)據(jù)庫(kù)執(zhí)行
github地址:https://github.com/geocompass/pg-coordtransform
示例
GCJ02轉(zhuǎn)WGS84
select geoc_gcj02towgs84(geom) from test_table
WGS84轉(zhuǎn)GCJ02
select geoc_wgs84togcj02(geom) from test_table
WGS84轉(zhuǎn)BD09
select geoc_wgs84tobd09(geom) from test_table
BD09轉(zhuǎn)WGS84
select geoc_bd09towgs84(geom) from test_table
GCJ02轉(zhuǎn)BD09
select geoc_gcj02tobd09(geom) from test_table
BD09轉(zhuǎn)GCJ02
select geoc_bd09togcj02(geom) from test_table
轉(zhuǎn)換方法
基于 PG+PostGIS 進(jìn)行三種坐標(biāo)系之間的轉(zhuǎn)換,支持點(diǎn)、線、面、多點(diǎn)、多線、多面等各種需求進(jìn)行互轉(zhuǎn)
**geoc_gcj02towgs84:火星坐標(biāo)系轉(zhuǎn)WGS84坐標(biāo)系**
**geoc_wgs84togcj02:WGS84坐標(biāo)系轉(zhuǎn)火星坐標(biāo)系**
**geoc_wgs84tobd09:WGS84坐標(biāo)系轉(zhuǎn)百度坐標(biāo)系**
**geoc_bd09towgs84:百度坐標(biāo)系轉(zhuǎn)WGS84坐標(biāo)系**
**geoc_gcj02tobd09:火星坐標(biāo)系轉(zhuǎn)百度坐標(biāo)系**
**geoc_bd09togcj02:百度坐標(biāo)系轉(zhuǎn)火星坐標(biāo)系**
注意事項(xiàng)
**傳入的geometry參數(shù)的 SRID 必須是 4326 或 4490 ,否則返回null。**
?注
**本文如對(duì)您有幫助,請(qǐng)?jiān)?github 上 star 一下**