2008-08-05 201 views
22

私は(地理的に歪んだ)地図上の既知のx/y座標にマップする緯度/経度のペアを持っています。緯度/経度を歪んだマップにマップするにはどうすればよいですか?

次に、緯度/経度のペアがもう1つあります。私は可能な限り地図上にそれをプロットしたいと思います。これをどうやって行うのですか?

最初は、3つの最も近い緯度/経度の点の1次方程式のシステムを作成し、これらからの変換を計算することにしましたが、これはまったく機能しません。それは線形システムなので、近くのポイントを使用することはできません。

あなたはノースがアップしていると仮定することはできません。既存の緯度/経度 - x/yマッピングだけがあります。

EDIT:それはメルカトル図法などではありません。読みやすさのために任意に歪んでいます(地下鉄の地図を考えてください)。マップの他の部分の歪みが私が計算しようとしているマッピングに影響を与えないように、最も近い5から10のマッピングだけを使用したいと思います。

さらに、マップ全体が非常に小さい地域にあるので、地球儀を心配する必要はありません。フラットアースの仮定は十分です。

+0

http://trimaps.comを試しましたか? – Gilbou

答えて

8

歪みの種類について詳しくはありますか?たとえば、緯度と経度がメルカトル図法を使用して2Dマップに「ゆがんでいる」場合、変換の計算はreadily availableです。

マップが本当に恣意的に歪んでいる場合は、試してみることがたくさんありますが、最も単純なのはおそらく既存のポイントマッピングからweighted averageを計算することでしょう。あなたの重みは、あなたの新しいポイントからあなたの既存ポイントそれぞれまでのx/y距離の二乗逆数になります。

いくつかの擬似コード:

estimate-latitude-longitude (x, y) 

    numerator-latitude := 0 
    numerator-longitude := 0 
    denominator := 0 

    for each point, 
     deltaX := x - point.x 
     deltaY := y - point.y 
     distSq := deltaX * deltaX + deltaY * deltaY 
     weight := 1/distSq 

     numerator-latitude += weight * point.latitude 
     numerator-longitude += weight * point.longitude 
     denominator += weight 

    return (numerator-latitude/denominator, numerator-longitude/denominator) 

このコードは比較的単純な近似を与えます。投影が地理座標を歪める方法をより正確にすることができれば、おそらくもっと良いことができます。

0

問題は、球体がさまざまな方法でゆがんでいて、赤道にある点をすべて知っていることです。

あなたはより良い 'close'ポイントが必要です。そして、これらの3つのポイントが4番目のプレーンにあると仮定し、補間を行います - 経度の距離が定数ではなく関数であることを知ってください。

0

ええと。たぶん私はここの質問について何かを見逃しているかもしれませんが、あなたがロング/ラットの情報を持っているなら、あなたは北の方向も持っていますか?

測地座標を投影座標系にマッピングする必要があるようです。たとえば、osgbからwgs84です。

関連する数学は重要ではありませんが、コードはほんの数行しか出ません。もし私がもっと時間を持っていたら、私はシャワーが必要なので、私は退屈し、wikipediaエントリーへのリンクはかなり良いです。

注:シャワーを編集しました。

2

いいえ。理想的には、歪みが「任意」であり、任意の解をこの任意の歪みをモデル化する必要があるとすれば、明らかに「答え」を得ることはできません。しかし、どんな解決策でも、状況の現実を反映しているかもしれないし、そうでないかもしれない歪みのモデルを(通常は暗黙的に)課すことを伴うであろう。

歪みマッピングの局所的連続性を前提としたモデルに最も興味があるようですが、もっとも明白な選択は、最も近いポイント間の線形補間です。それを超えると、より洗練された数学的および数値解析知識が必要になります。

ただし、これをさらに多くのポイントに拡張することはできません。最小自乗誤差法を使用することができます。他の点の誤差を最小にする線形解を求める。これはおそらく最も単純な拡張です。言い換えれば、最も近い5点を取って、それらの点の誤差を最小にする線形近似を考えよう。それを使用してください。私はこれを次に試みるでしょう。

これでうまくいかない場合は、N点の領域で線形性が仮定されます。その時点で、2次モデルまたは3次モデルにアップグレードする必要があります。その時点で数学は忙しくなるだろう。

関連する問題