要件:百度座標をWGS84座標に変換 実施: まず最初に、中国には多くの複雑な座標系があります。ご存知の通り、アメリカのGPSはWGS84座標を使用していますが、中国では安全上の理由から地図が公開される際、84の座標は非線形かつバイアスされており、得られた座標はGCJ02座標系、通称火星座標と呼ばれています。 さらに、多くの国内地図会社は、ビジネス上の必要性や競争の理由から、火星座標に基づいて非線形偏差を行い、独自の座標系を導入しています。 百度はまさにそのような会社です。 百度はGCJ02を基にBD-09の二次非線形バイアスを実施し、独自の百度座標系を取得しました。 これは百度自身の会社にとっては有益かもしれませんが、私たち開発者にとっては単に面倒なことです。 以下は、中国の一部の地図サービス提供者が使用している座標系の簡単な紹介です。
現在、百度は座標変換のためのAPIを提供しています http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude さあ、 ・出典元:ソース座標系(元のGPS座標は0、Google座標は2) • 変換座標(4は百度自身の座標で、これが4であるかのように) • x: 精度 • y:緯度 結果として返されるのはjson文字列です: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"} • error: はエラーマークビット、「0」はOKを示します • x: 百度座標系の精度(Base64暗号化) y:百度座標系の緯度(Base64暗号化); 私はこの二つの数字の意味をオンラインで調べました:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude 1: GPS機器で取得される角度座標; 2: GPSで取得された計量座標、ソゴウ地図で使われる座標; 3: Googleマップ、SOSOマップ、アリユンマップ、MapABCマップ、AMAPマップで使用される座標 4:3 リスト内の地図の座標に対応するメーター座標 5: 百度地図で使用される経度・緯度座標 6: 百度地図で使用されるメートル座標 7: マップバーの地図座標; 8:51 地図座標 デフォルトは1ではなく、これはGPSデバイスが取得した座標です 宛先座標タイプには2つの選択肢があります:5、6。 5: BD09LL(百度緯度・経度座標)、 6: BD09MC(緯度・経度座標(100度メートル); いいえ、デフォルトは5、つまりbd09ll(バイドゥ座標)です。
上記はすべて84座標を百度座標に変換するために使われています。以下では、座標の逆変換、つまり百度座標を84座標に変換する方法について説明します。 インターネットで多くのアルゴリズムを見つけましたが、ほとんどは1つのオフセット、つまり百度座標と火星座標の入れ替わり、火星座標と地球座標の入れ替えなどに限定されており、百度座標が84座標に使われるという言及はほとんどありません。 この点で、まず百度の座標を火星座標に変換し、次に火星の座標を地球座標に変換しようとしましたが、結果は満足のいくものではなく、最小誤差は60メートル、最大では600メートル以上の誤差だったため、諦めざるを得ませんでした。 アルゴリズムはもう公開しません。興味のある学生は自分でインターネットで探せばいいです。 ここでは巧妙な方法を使っています。具体的な方法は以下の通りです: 百度の座標とGPSの座標変換は近距離で非常に近いです。 例えば、Baiduの座標がx1=116.397428、y1=39.90923 この座標をGPS座標として受け取り、インターフェースを通じて彼の百度座標を取得します:x2=116.41004950566, y2=39.916979519873
GPSの座標は計算によって得られます: x = 2*x1-x2, y = 2*y1-y2 x=116.38480649434001 y=39.901480480127。 この方法の正確性を検証するために、中国の南東、北西、北西部の主要都市14の座標を試験に行ったところ、偏差13メートル、最小0.xメートルの偏差が得られました。 包括誤差は6メートルです。 具体的な検査結果は後日公開されます。 この問題を説明するために簡単な図を描きましょう。
Gは元の未変換の地球座標を表します。 BはGがバイドゥAPIで変換された後の百度座標を表します。 G'はB点Bが百度APIで変換された座標を表します。 Google座標を百度座標に変換した後のオフセット値が小さいと仮定すると、G点座標は完全に等しくなります。 2B-G'。 検証後、Google座標を百度座標に変換した後のオフセット値は数百メートル程度で、実際には無視できるほど小さいです。ですので、この方法でBaidu独自のAPIでオフセットライブラリの問題を解決し、オフセット値を変換する影響は無視してください。 もちろん、この方法には大きな欠点もあります。つまり、これら2点が同じオフセットデータベースに存在しなければならず、もし異なるオフセットライブラリに存在すると誤差が比較的大きくなる可能性があることです。 さらに、現在準備中のもう一つの方法があり、それはオフセットライブラリを確立し、このオフセットライブラリを使ってこの影響をさらに排除することです。これはまだ研究されていません。 オンライン変換の欠点は、BaiduのオンラインAPI変換ツールには変換されるデータ量に制限があり、各キーは約5,000件のデータしか変換できず、アカウントは最大20件まで申請できるため、データ量が多い場合はこの種のオンライン変換は推奨されません。これはローカルオフセットライブラリを研究する本来の意図でもあります。 さらに、ウェブ側はより制限されているため、ネットワーク速度や同時リクエストなどが結果やユーザー体験に影響を与える可能性があるため、上記の方法はあくまで参考に過ぎません。
|