關(guān)于坐標(biāo)系
我們通常用經(jīng)緯度來表示一個(gè)地理位置喷兼,但是由于一些原因以舒,我們從不同渠道得到的經(jīng)緯度信息可能并不是在同一個(gè)坐標(biāo)系下。
? 高德地圖溃槐、騰訊地圖以及谷歌中國區(qū)地圖使用的是GCJ-02坐標(biāo)系
? 百度地圖使用的是BD-09坐標(biāo)系
? 底層接口(HTML5 Geolocation或ios帅矗、安卓API)通過GPS設(shè)備獲取的坐標(biāo)使用的是WGS-84坐標(biāo)系
不同的坐標(biāo)系之間可能有幾十到幾百米的偏移偎肃,所以在開發(fā)基于地圖的產(chǎn)品,或者做地理數(shù)據(jù)可視化時(shí)浑此,我們需要修正不同坐標(biāo)系之間的偏差累颂。
?WGS-84 - 世界大地測量坐標(biāo)系
WGS-84(World Geodetic System, WGS)是使用最廣泛的坐標(biāo)系,也是世界通用的坐標(biāo)系凛俱,GPS設(shè)備得到的經(jīng)緯度就是在WGS84坐標(biāo)系下的經(jīng)緯度紊馏。通常通過底層接口得到的定位信息都是WGS84坐標(biāo)系。如天地圖蒲犬,osm底圖等朱监。
GCJ-02 - 國測局坐標(biāo)系
GCJ-02(G-Guojia國家,C-Cehui測繪原叮,J-Ju局)赫编,又被稱為火星坐標(biāo)系窃这,是一種基于WGS-84制定的大地測量系統(tǒng)忧风,由中國國測局制定劲藐。此坐標(biāo)系所采用的混淆算法會在經(jīng)緯度中加入隨機(jī)的偏移蓝厌。如谷歌地圖(中國區(qū))驰徊,高德地圖睁冬,騰訊地圖等镐确。
?BD-09 - 百度坐標(biāo)系系
BD-09(Baidu, BD)是百度地圖使用的地理坐標(biāo)系祥诽,其在GCJ-02基礎(chǔ)上又增加了一次偏移黍聂,用來保護(hù)用戶隱私躺苦。從百度產(chǎn)品中得到的坐標(biāo)都是BD-09坐標(biāo)系。
如何安裝
PostgreSQL安裝PostGIS擴(kuò)展
復(fù)制geoc-pg-coordtansform.sql中代碼产还,在數(shù)據(jù)庫執(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。**
?注
**本文如對您有幫助媒佣,請?jiān)?github 上 star 一下**