中国における地理的データの制限

本項では、中華人民共和国における安全保障上の理由による地理情報データの利用の制限について記述する。

中華人民共和国国内における地理情報データの利用は、安全保障上の理由により、国務院の下位機関である国家測量製図地理情報局から特別な許可を得た者のみに制限されている 。
その結果、多くの地図アプリケーションにおいて、中国国内の道路地図における道路と衛星地図情報が一致せず、オープンストリートマップなどのクラウドソーシングを利用した地図作成に関する活動が、非合法状態となっている。

 法律 
2002年以降、中華人民共和国測量法 第7、26、40、42条により、中国本土における個人の測量・地図作成が非合法化された。この法律が禁止しているのは次の通りで有る。

罰金は最低1万人民元、最高50万人民元。測量を中国国外の個人や組織が行う場合、中国内の資本と外国の資本による中外合弁事業の形態を取らなければならない。

2006年から2011年の間に当局は約40の測量・地図作成に関する非合法な事例を追跡した。マスメディアが報道したそれ以外の非合法な事例について以下に記述する。
 2005年 - ツアー旅行を抜け出し新疆ウイグル自治区の空港と水道施設、高速道路の位置情報を集めたとして、日本人の学者2人が8万人民元の罰金に処せられた。軍事利用に十分な20 cm以内の精度をもつ地図を作成していた。
 2007年 - 威海市にある合弁会社が政府の認可なしに外国人である韓国人の測量人材を雇用したとして、3万人民元の罰金に処せられた。
 2008年3月25日 - 国家測量製図地理情報局が中国大陸内の地図を提供する1万のWebサイトの一部を大半が認可がないとして取り締った。
 2009年1月6日 - イギリス人学生が当局により「非合法な地図作成活動」を行ったとして2万人民元の罰金に処せられた。
 2010年 - 中国当局が未登録・非合法な42000のオンライン地図事業者に対し、誤った情報と安全保障上の機密情報の流出により処分した。新基準においては全てのオンライン地図事業者は地図情報を中国国内に保存することを求められた。
 2014年3月14日 - コカ・コーラ社が非合法な地図作成で告発された。

これらの結果として、Panasonic、ライカ、富士フイルム、ニコン、サムスン電子といった大手デジタルカメラメーカーは中国国内における位置情報を制限した。

クラウドソーシングで全世界の地図を作成するプロジェクトであるOpenStreetMapは「中国国内において個人的な測量および地図作成活動は非合法である」との勧告を出している。

 座標系 

中国の規制においては、当局から認可された地図サービスはGCJ-02座標系を用いるよう指定している。百度地図はBD-09座標系を用いているが 、これもGCJ-02を元とした座標系である。

 GCJ-02 
GCJ-02 (別名 火星座標系)は国家測量製図地理情報局により計算された測地系で、WGS84に基いている。 安全保障上の理由と思われる、ランダムなずれを経度と緯度の両方に付加するための難読化されたアルゴリズムが明らかに用いられている。
GCJ-02座標系におけるマーカーはGCJ-02座標系の地図上では正確な位置に表示される。しかし、GPSなどで測位したWGS-84座標系によるマーカーをGCJ-02座標系の地図上に置くと、100〜700 mの誤差がその「ランダムなずれ」のために発生し、逆もまた然りである。Google.comの道路地図では現実と50〜500 mのずれが発生するが、Google.cnの地図ではそのずれは発生しない。 MapQuestもOpenStreetMapのデータを衛星画像に完全に重ね合わせている。

GCJ-02は難読化されているにも関わらず、GCJ-02座標系とWGS-84座標系の換算機能を提供するオープンソースプロジェクトが C#、C、Go、Java、JavaScript、PHP、Python、R、Rubyといったプログラミング言語で提供されている。それらのプロジェクトは流出したWGS84をGCJ-02座標系に変換するコードを元にしていると思われる。その他の換算方法として、Google Chinaの地図と衛星画像を元に回帰分析に基づいて補間するというものもある。 Wu Yongzhengによる高速フーリエ変換を用いた解析は流出したコードによる結果に非常に近かった。

流出したコードによればGCJ-02座標系はWGS-84座標系による入力に「ずれ」を付加する際にSK-42参照系を用いているように思われる。

 BD-09 
BD-09座標系は百度地図に用いられている測地系で、すでに暗号化されているGCJ-02座標系に「ユーザのプライバシーをより保護するために」更に暗号化が付加されている。百度はGoogleMapやGPSで用いられているWGS-84座標からBD-09座標に変換するためのAPIを提供している。GCJ-02座標系と同様に、他の座標系に変換するためのAPIは存在しないが、Rなど様々な言語の実装がオープンソースで公開されている。

 逆変換 

GCJ-02座標系にはの形で表される複数の高周波のノイズが用いられており、効果的に超越関数を作り、解析的解法を排除することが出来る。しかし、オープンソースで公開されている逆変換ではGCJ-02座標系の特性である局所的な線形性と単調性を活用しており、変換した座標はWGS84座標系からそれほどずれたものではない。

from typing import Callable
# 座標を複素数で表し単純にする
coords = complex
# 座標から座標に変換する関数
C2C = Callable[[coords], coords]

def rev_transform_rough(bad: coords, worsen: C2C) -> coords:
 """
 おおよそ ``worsen``変換を逆転させる.

 ``bad = worsen(good)``は``good``に近いため,
 ``worsen(bad) - bad`` はおおよそ ``bad - good``として使える
 よって``bad - (worsen(bad) - bad)``はおおむね
 ``bad - (bad - good) = good``である

 この略算法はeviltransformで初めに見られたものである。
 """
 return bad - (worsen(bad) - bad)

def rev_transform(bad: coords, worsen: C2C) -> coords:
 """
 より正確に``worsen``変換を逆転させる.

 ``rev_transform_rough``と同様に、
 ``worsen(a) - worsen(b)`` を``a - b``の近似として扱える。

 これはgeoChina/R/cst.R (caijun 2014)で初めて見られたものである。
 おおよその初期化のない、反復のみのものはfengzee-me/ChinaMapShift (November 2013)から知られている。
 """
 eps = 1e-6
 wgs = rev_transform_rough(bad, worsen)
 old = bad
 dowhile = True # 最初のepsの試行で失敗する可能性があるため

 while abs(wgs - old) > eps or dowhile:
 old = wgs
 wgs -= worsen(wgs) - bad
 dowhile = False
 return wgs

略算的な方法でも1〜2 m程度の精度でWGS-84座標系による座標が得られ、より精度を上げた方法では2回の反復でセンチメートルレベルの精度が得られる。これら2つの特性は座標系のいくつかの基本的な機能を保証しているため、この逆変換の方法は新しい座標系でも変わることなく適用できる。BD-09座標系からGCJ-02座標系に変換するプログラムは上記の略算法では、明らかに付加された20秒程度の定数のずれをまず取り除く。

 中国国内でGPSがずれる問題 
中国国内でGPSがずれる問題とはGCJ-02座標系とWGS84座標系の違いに起因する問題である。GPSによる座標はWGS-84座標系を用いている一方、中国の道路地図はGCJ-02座標系に基づいており、その差は500 m近くある上に場所によって異なる。認可された位置情報サービス事業者（AutoNavi、NavInfoなど）はGPSによる位置を地図上に正しく配置するシフト補正アルゴリズムを入手する必要がある。OpenStreetMapなどユーザの投稿した道路地図と衛星画像は正確に表示できる。これはGPS機器を用いてデータを収集しているためである (ただし法的には非合法である #法律を参照)。
Hereなどの地図事業者はGCJ-02座標系の道路地図に一致させるために、衛星画像にもずれを導入している。

Googleは中国の地図情報サービス事業者AutoNaviと2006年から提携し地図情報を得ている。

google.cn/mapsは道路地図と衛星画像の両方がGCJ-02座標系である。しかし、ブラウザから送信されるWGS-84座標系による座標は誤った位置に描画されてしまう。反対に、google.com/mapsは道路地図にはGCJ-02座標系を用いているが、衛星画像はWGS-84座標系を用いているため、WGS-84座標系の座標が正確に衛星画像上では描画できるという利点がある（ただし道路地図上ではずれが生じる）。Google Earthも衛星画像の表示にはWGS-84座標系を用いている。

GPSによる軌跡をGoogleMapの地図上に重ねて描画する際、Google.comの地図はGCJ-02座標系を用いているがGPSはWGS-84座標系であるため、同様にずれが生じる。この現象は2009年以降何度もGoogleフォーラムに投稿されており、サードパーティ製のアプリケーションを使用することで解決できる。中国の都市におけるずれの一覧の販売も行われている。こういった問題は2008年にはみられ、当時原因が不明とされ、GPSチップが改ざんされており誤った座標を出力するといった推測をする人もいた。

 香港、マカオ 
一国二制度により、中国本土の法律が適用されない香港、マカオといった特別行政区内においては同様の規制は存在しない。従って、GPSのずれに関する問題は適用されない。しかし、特別行政区と中国本土の境界においては、ずれたデータと正しいデータが重なってオンライン地図のデータが壊れているように見える。この問題は国境をまたがって移動する旅行者にとって問題となるため、とくにこの問題を認識していない旅行者は注意しなければならない。