0

編集したがって、VBforumsでJennerから投稿したソリューションは、明らかにVBであり、オンラインコンバーターを使用してC#に移植しました。翻訳で何かが失われました、そしてそれがそれが10マイル離れていた理由です。

Proj.Netディスカッション掲示板のアルゴリズムが何のためにあるのかを誤解しているだけだと思います。そのため、彼らは私が望んでいたことをしていませんでした。

誰かが素晴らしいものを提供しない限り、私は私の答えをマークすることができるとき、私はこの質問を2日で締めくくります。


UTMをlatおよびlongに変換する際に問題が発生します。例として、次のNAD83UTM座標があります。

イースト:686029.702258

ノース:3581213.621173

ゾーン:15

しばらく前にvbforumsで見つけた解決策は、私が期待する場所から約10マイル南にポイントを与えてくれます。ここで見つけた簡単な数学的解決策は、予期しない結果をもたらしています。

double[] inverseMercator (double x, double y) {
     double lon = (x / 20037508.34) * 180;
     double lat = (y / 20037508.34) * 180;

     lat = 180/Math.PI * (2 * Math.Atan(Math.Exp(lat * Math.PI / 180)) - Math.PI / 2);
     return new double[] {lon, lat};
}
double[] toPoint = inverseMercator (686029.702258, 3581213.621173);

次の結果が得られます。

緯度:30.602349476368449

長い:6.1627096689832594

同じスレッドでD_Guidiが提供するProj.Netソリューションを使用しても同様の結果が得られます。

オンラインコンバーターを使用して、私は私が期待しているものに何かを近づけることができました:

緯度:32.35238307052292

長い:-91.0230710652583

誰かが私が間違っていることに光を当てることができますか?

編集-.NETソリューションまたは簡単に変換できるものを好む

関連スレッド

4

2 に答える 2

1

「proj」(プロジェクション、 http: //trac.osgeo.org/proj/)に含まれているcs2csバイナリを試しましたか?それはUTMを東/北と緯度/経度に変換する正確な仕事をするだろうと私は信じています。問題は、単純な数式が正確に、十分に、地球の形を説明していないことです。

于 2012-02-22T13:47:53.700 に答える
0

したがって、VBforumsでJennerから投稿したソリューションは、明らかにVBであり、オンラインコンバーターを使用してC#に移植しました。翻訳で何かが失われました、そしてそれがそれが10マイル離れていた理由です。

Proj.Netディスカッション掲示板のアルゴリズムが何のためにあるのかを誤解しているだけだと思います。そのため、彼らは私が望んでいたことをしていませんでした。

于 2012-02-22T15:21:18.680 に答える