導入および共通(符号付き)座標変換

オリジナル住所:http://www.mapboxx.cn/article/geography/

基本概念##のシステム座標
:地理座標に座標と投影座標系、以下ではこれらの二つの座標系を説明する

*地理座標部門:球座標。基準面は、ユニット座標楕円:緯度と経度は、

座標平面:*座標系に投影しました。水平基準面とすることが、ユニット座標等、キロメーター

:geotransform突起は、(不規則な表面は、アース面に変換された投影)投影のプロセスとして理解されるべき座標

##種類の共通座標系と説明の

* WGS84地理的システムは、Google EarthとGoogleマップを加えて、中国の外で使用する座標を、本質的に、すべての位置決め装置の空間的位置は、携帯電話のGPSシステムとしてこのシステムを、座標使用

* GCJ-02:投影座標系、すなわち、私たちは通常、火星座標系を言う、Googleマップ中国、ドイツ、テンセントが高いの使用は、これはWGS84の基礎を暗号化することで、中国自身があるようです、目的は明らかです。

* BD09:セカンダリ暗号化GCJ-02基準で行った百度マップを用いて、投影座標系。

国内API座標系は比較

API | |座標|
| ---- | ---- |
| Baiduの地図API | Baiduは座標|
|テンセント曹操地図API |火星は座標|
|捜狐Sogouの地図API | Sogouの座標|
アリクラウドマップAPIは|火星は座標|
|それが座標マップ| MapBarマップのAPIそれを図|
| MapABC高い道徳マップAPI | |火星座標
| Lingtu 51dituマップAPIを|火星座標|


WGS84 UTM投影が6度、43から53までの数値を持つ全国UTM突起11を、ゾーニング、一般的に使用座標

番号を| |セントラル経度|経度範囲|
| ---- | ---- | ---- |
| 43れる| 75E | 72E-78E |
| 44れる| 81E | 78E-84E |
| 45 | 87E | 84E-90E |
| 46れます| 93E | 90E-96E |
| 47 | 99E | 96E-102E |
| 48 | 105E | 102E-108E |
| 49 | 111E | 108E-114E |
| 50 | 117E | 114E-120E |
| 51です| 123E | 120E- 126E |
| 52 | 129E | 126E-132E |
| 53 | 135E | 132E-138E |

##補正座標

系の座標火星へ、百度補正座標と呼ばれる座標にシステムWGS1984座標

座標をオフセットするために:火星座標系、百度座標系;

火星座標系、百度は、相対セクタWGS1984オフセット、生成された暗号化は、国家安全保障を調整することです

ここのツールは、変換、アドレスの3種類の座標系オンライン座標変換し、対応するExcelファイルをBD09をサポートするために変換することができ、アップロード、GCJ20、WGS84です:[http://www.mapboxx.cn/tool/coord_view /](http://www.mapboxx.cn/tool/coord_view/)

コードが必要な場合はもちろん、あなたがダウンして見ることができます。

##座標補正、座標系の総合的な理解

[RUNOOBアイコン](http://www.mapboxx.cn/static/blog/img/article/coodirate.png)!


##添付
ウェブサイト:HTTP:// WWW。 mapboxx.cn座標変換、多くのオンラインツールやトラフィックデータ、クロールPOIデータをクロール人を含む地図関連の知識共有ツール、および地図データの可視化があり、オンラインで、訪問を歓迎しました。

##共通マップ座標系変換コード(Pythonのバージョン)が
BD09座標系をサポートし、GCJ20座標、WGS84は、システムの座標変換。
`` `
#!は/ usr / binに/ ENVはのpython3へ
# - * -コーディング:UTF-8 - * -

__author = "Brady_Hu"

インポート数学

x_pi = 3.14159265358979324 * 3000.0 / 180.0
PI =π・3.1415926535897932384626#
A#= 6,378,245.0半軸
EE = 0.00669342162296594323#フラットレート


DEF gcj02_to_bd09(LNG、LAT):
    "" "
    火星座標系(GCJ-02)百度を回すシステム(BD-09)座標
    グーグル、高ドイツ語- >百度
    :PARAMのLNG:火星は、経度座標
    : PARAM LAT:火星の場所緯度
    :リターン:
    "" "
    Z = Math.sqrt(LNGをLNG * + * LAT LAT)+ 0.00002 * Math.sin(LAT * x_pi)
    シータ= Math.atan2(LAT、LNG)+ 0.000003 * Math.cos(LNG * x_pi)
    bd_lng Math.cos = Z *(シータ)+ 0.0065
    Math.sin = Z *(シータ)+ 0.006 bd_lat
    リターン[bd_lng、bd_lat]


:DEF bd09_to_gcj02(bd_lon、bd_lat)
    "" "
    百度座標系(BD-09)火星座標系オン(GCJ-02)
    百度- >グーグル、高いドイツ語
    :PARAM bd_lat:百度の緯度座標
    :bd_lonのPARAM:百度経度座標
    :リターン:変換後座標リストの形で
    "" "
    X = bd_lon - 0.0065
    Y = bd_lat - 0.006
    Z = Math.sqrt(Y * X * X + Y) - Math.sin 0.00002 *(Y *のx_pi)
    シータ=数学.atan2(Y、X) - 0.000003 * Math.cos(X * x_pi)
    gg_lng Math.cos = Z *(シータ)
    gg_lat Math.sin = Z *(シータ)
    リターン[gg_lng、gg_lat]


DEF wgs​​84_to_gcj02(LNG、LAT ):
    "" "
    GCJ02(火星座標)オンWGS84
    :PARAM LNG:WGS84座標経度
    :PARAM LAT:緯度WGS84座標系
    :リターン:
    " ""
    がiF out_of_china(LNG、LATを):#は自宅かどうかを決定します
        LNG戻り、LAT
    DLAT = _transformlat(LNG - 105.0、LAT - 35.0)
    dlng = _transformlng(LNG - 105.0、年 - 35.0)
    LAT = radlat / 180.0 * PI
    マジック= Math.sin(radlat)
    マジック= 1 - EE *トランストリップ
    sqrtmagic = Math.sqrt(マジック)
    DLAT =(DLAT * 180.0)/((A *(1 - EE)) /(マジックsqrtmagic *)* PI)
    dlng =(dlng * 180.0)/(A / sqrtmagic * Math.cos(radlat)* PI)
    mglat = LAT + DLAT
    mglng = + dlng LNGの
    リターン[mglng、mglat]


DEF gcj02_to_wgs84( LNG、LAT):
    "" "
    GCJ02(火星座標系)ターンGPS84
    :PARAM LNG:経度火星座標
    :PARAM LAT:火星の緯度座標
    :リターン:
    " ""
    out_of_china IF(LNG、LAT):
        LNGを返しますLAT
    DLAT = _transformlat(LNG - 105.0、LAT - 35.0)
    dlng = _transformlng(LNG - 105.0、緯度- 35.0)
    radlat =緯度/ 180.0 * PIの
    マジック= math.sin(radlat)
    マジック= 1 - EE *マジック*魔法
    sqrtmagic = math.sqrt(マジック)
    DLAT =(DLAT * 180.0 )/((*(1 - EE))/(マジック* sqrtmagic)* PI)
    dlng =(dlng * 180.0)/(A / sqrtmagic * math.cos(radlat)* PI)
    mglat = LAT + DLAT
    mglng = LNG + dlng
    リターン[LNG * 2 - mglng、LAT * 2 - mglat]


DEF bd09_to_wgs84(bd_lon、bd_lat):
    経度、緯度= bd09_to_gcj02(bd_lon、bd_lat)
    リターンgcj02_to_wgs84(経度、緯度)


DEF wgs​​84_to_bd09(経度、緯度)。
    経度、緯度= wgs​​84_to_gcj02(経度、緯度)
    リターンgcj02_to_bd09(経度、緯度)


DEF _transformlat(LNG、LAT):
    RET = -100.0 + 2.0 + 3.0 * U * + 0.2 * LAT、LAT、LAT + * \
          0.1 * U *はLAT + 0.2 * Math.sqrt(math.fabs(LNG))
    RET + = (iはPIを* 20.0 * Math.sin(6.0)+ 20.0 *
            Math.sin(2.0 * i *がPI))* 2.0 / 3.0
    RET + =(20.0 * Math.sin(LAT * PI)+ 40.0 *
            数学。 SIN(LAT / 3.0 * PI))* 2.0 / 3.0
    RET + =(160.0 * Math.sin(緯度/ 12.0 * PI)+ 320 *
            Math.sin(LAT * PI / 30.0))* 2.0 / 3.0
    リターンRETの


DEF _transformlng(LNG、LAT):
    RET = 300.0 + U + 2.0 + 0.1 * LAT * LNG * LNG + \
          0.1 * U *はLAT + 0.1 * Math.sqrt(math.fabs(LNG))
    RET + =(20.0 *数学.Who(6.0 *私はパイ*)+ 20.0 *
            math.sin(2.0 *のLNG *をPI))* 2.0 / 3.0
    RET + =(20.0 * math.sin(LNGの*をPI)+ 40.0 *
            math.sin(LNG / 3.0 * PI))* 2.0 / 3.0
    RET + = (150.0 * math.sin(LNG / 12.0 * PI)+ 300.0 *
            math.sin(LNG / 30.0 * PI))* 2.0 / 3.0
    リターンRETの


DEF
    out_of_china(LNG、LAT):""」
    判断是否在国内、不在国内不做偏移
    :のparam LNG:
    :PARAM緯度:
    :リターン
    :""」
    戻らない(LNG> 73.66とLNG <135.05と> 3.86とLAT <53.55緯度)

の場合__name__ == '__main__':
    LNG = 128.543
    緯度= 37.065
    結果1 = gcj02_to_bd09(LNG、LAT)
    結果2 = bd09_to_gcj02(LNG、年)
    result3 = wgs​​84_to_gcj02(LNG、LAT)
    result4 = gcj02_to_wgs84(LNG、LAT)
    result5 = bd09_to_wgs84(LNG、LAT)
    result6 = wgs​​84_to_bd09(LNG、LAT)

    プリント(結果1、結果2、result3、result4、result5、result6)
`` `


















 

おすすめ

転載: www.cnblogs.com/liujiao/p/11442845.html