変換 (数学)
逆変換
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/17 15:30 UTC 版)
「中国における地理的データの制限」の記事における「逆変換」の解説
GCJ-02座標系には 20 n sin ( 180 k × l a t r a d ) {\displaystyle 20n\sin {}(180k\times lat_{rad})} の形で表される複数の高周波のノイズが用いられており、効果的に超越関数を作り、解析的解法を排除することが出来る。しかし、オープンソースで公開されている逆変換では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秒程度の定数のずれをまず取り除く。
※この「逆変換」の解説は、「中国における地理的データの制限」の解説の一部です。
「逆変換」を含む「中国における地理的データの制限」の記事については、「中国における地理的データの制限」の概要を参照ください。
「逆変換」の例文・使い方・用例・文例
- 逆変換のページへのリンク