編集したがって、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ソリューションまたは簡単に変換できるものを好む