測試**
# -*- coding: utf-8 -*-
# /**
# * 各地圖api座標系統比較與轉換;
# * wgs84座標系:即地球座標系,國際上通用的座標系。裝置一般包含gps晶元或者北斗晶元獲取的經緯度為wgs84地理座標系,
# * 谷歌地圖採用的是wgs84地理座標系(中國範圍除外);
# * gcj02座標系:即火星座標系,是由中國國家測繪局制訂的地理資訊系統的座標系統。由wgs84座標係經加密後的座標系。谷歌中國地圖和搜搜中國地圖採用的是gcj02地理座標系;
# */
import math
from decimal import *
class transfer:
def __init__(self,key=none):
self.a=6378245.0
self.ee=decimal(0.00669342162296594323)
def transformlng(self,x,y):
ret=decimal()
ret = 300.0+x+2.0*y+0.1*x*x+0.1*x*y+0.1*math.sqrt(math.fabs(x))
ret += (20.0 * math.sin(6.0 * x * math.pi) + 20.0 * math.sin(2.0 * x * math.pi)) * 2.0 / 3.0
ret += (20.0 * math.sin(x * math.pi) + 40.0 * math.sin(x / 3.0 * math.pi)) * 2.0 / 3.0
ret += (150.0 * math.sin(x / 12.0 * math.pi) + 300.0 * math.sin(x / 30.0* math.pi)) * 2.0 / 3.0
return ret
def transformlat(self,x,y):
ret = decimal()
ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y+ 0.2 * math.sqrt(math.fabs(x))
ret += (20.0 * math.sin(6.0 * x * math.pi) + 20.0 * math.sin(2.0 * x * math.pi)) * 2.0 / 3.0
ret += (20.0 * math.sin(y * math.pi) + 40.0 * math.sin(y / 3.0 * math.pi)) * 2.0 / 3.0
ret += (160.0 * math.sin(y / 12.0 * math.pi) + 320 * math.sin(y * math.pi / 30.0)) * 2.0 / 3.0
return ret
def transfrom(self,lng,lat):
dlat = self.transformlat(lng - 105.0, lat - 35.0)
dlng = self.transformlng(lng - 105.0, lat - 35.0)
radlat = lat / 180.0 * math.pi
magic = math.sin(radlat)
magic = 1 - self.ee * decimal(magic) * decimal(magic)
sqrtmagic = math.sqrt(magic)
dlat = decimal((dlat * 180.0)) / ((decimal(self.a) * (1 - self.ee)) / (decimal(magic) * decimal(sqrtmagic)) * decimal(math.pi))
dlng = (dlng * 180.0) / (self.a / sqrtmagic * math.cos(radlat) * math.pi)
mglat = lat + float(dlat)
mglng = lng + dlng
return mglng,mglat
#gps座標轉換為gcj02座標系
def wg84_to_gcj02(self,wg84_lng,wg84_lat):
dlat=self.transformlat(wg84_lng-105.0,wg84_lat-35.0)
dlng=self.transformlng(wg84_lng-105.0,wg84_lat-35.0)
radlat = wg84_lat / 180.0 * math.pi
magic = math.sin(radlat)
magic = 1 - self.ee * decimal(magic) * decimal(magic)
sqrtmagic = math.sqrt(magic)
dlat = decimal((dlat * 180.0)) / ((decimal(self.a) * (1 - self.ee)) / (decimal(magic) * decimal(sqrtmagic)) * decimal(math.pi))
dlng = (dlng * 180.0) / (self.a / sqrtmagic * math.cos(radlat) * math.pi)
gcj02lat = wg84_lat + float(dlat)
gcj02lng = wg84_lng + dlng
return gcj02lng,gcj02lat
def gcj02_to_bd09(self,gcj02_lng,gcj02_lat):
x = gcj02_lng
y = gcj02_lat
z = math.sqrt(x * x + y * y) + 0.00002 * math.sin(y * math.pi)
theta = math.atan2(y, x) + 0.000003 * math.cos(x * math.pi)
bd09_lng = z * math.cos(theta) + 0.0065
bd09_lat = z * math.sin(theta) + 0.006
return bd09_lng,bd09_lat
def wg84_to_bd09(self,wg84_lng,wg84_lat):
gcj02lng,gcj02lat=self.wg84_to_gcj02(wg84_lng,wg84_lat)
return self.gcj02_to_bd09(gcj02lng,gcj02lat)
def bd09_to_gcj02(self,bd09_lng,bd09_lat):
x = bd09_lng - 0.0065
y = bd09_lat - 0.006
z = math.sqrt(x * x + y * y) - 0.00002 * math.sin(y * math.pi)
theta = math.atan2(y, x) - 0.000003 * math.cos(x * math.pi)
gcj02_lng = z * math.cos(theta)
gcj02_lat = z * math.sin(theta)
return gcj02_lng,gcj02_lat
#gcj座標轉wg84座標
def gcj02_to_wg84(self,gcj02_lng,gcj02_lat):
mlng,mlat=self.transfrom(gcj02_lng,gcj02_lat)
wg84_lng=gcj02_lng*2-mlng
wg84_lat=gcj02_lat*2-mlat
return wg84_lng,wg84_lat
def bd09_to_wg84(self,bd09_lng,bd09_lat):
gcj02_lng, gcj02_lat=self.bd09_to_gcj02(bd09_lng,bd09_lat)
return self.gcj02_to_wg84(gcj02_lng,gcj02_lat)
tr=transfer()
#測試
print(tr.bd09_to_gcj02(113.30764968,23.1200491)) #轉換正確
print(tr.bd09_to_wg84(113.30764968,23.1200491)) #轉換正確
print(tr.wg84_to_bd09(113.30764968,23.1200491)) #轉換正確
arcgis 經緯度轉大地座標 大地經緯度轉UTM
在日常gnss應用中,常需要應用到utm座標,而python提供了較為完備座標轉換工具,無需再去用arcgis了。首先貼出幾個帖子,值得一讀,其次,說一下要用到的工具,pyproj,其源於proj4庫 安裝 pip install pyproj 呼叫 import pyproj 再者,庫函式使用,先...
經緯度座標系轉東北天 經緯度座標系轉換
網際網路地圖的座標系現狀 地球座標 wgs84 國際標準,從 gps 裝置中取出的資料的座標系 國際地圖提供商使用的座標系 火星座標 gcj 02 也叫國測局座標系 中國標準,從國行移動裝置中定位獲取的座標資料使用這個座標系 國家規定 國內出版的各種地圖系統 包括電子形式 必須至少採用gcj 02對...
python 編寫的經緯度座標轉換類
coding utf 8 各地圖api座標系統比較與轉換 wgs84座標系 即地球座標系,國際上通用的座標系。裝置一般包含gps晶元或者北斗晶元獲取的經緯度為wgs84地理座標系,谷歌地圖採用的是wgs84地理座標系 中國範圍除外 gcj02座標系 即火星座標系,是由中國國家測繪局制訂的地理資訊系統...