編輯因此,我在VBforums上發佈Jenner的解決方案顯然是在VB中,我使用在線轉換器將它移植到C#。翻譯中丟失了一些東西,這就是它離開10英里的原因。將NAD83 UTM轉換爲緯度和長度的問題
我在猜測我只是誤解了Proj.Net討論板上的算法是什麼,這就是爲什麼他們沒有做我想做的事情。
我會在兩天內關閉這個問題,當我可以標記我的答案,除非有人提供了令人敬畏的東西。
我在將UTM轉換爲lat和long時出現了問題。舉個例子,我有以下NAD83 UTM座標:
東座標:686029.702258
北向:3581213.621173
區:15
前一陣子我在vbforums找到了解決方法給我點在我期望的地方南方約10英里的地方。我發現一個簡單的數學解決方案here,給我意想不到的結果。
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解決方案或東西,將很容易地轉換
我會檢查出來 - 我本來應該指定它是一個。NET項目,但我會看看我是否可以完成這項工作 – dtryan 2012-02-22 14:03:55
我相信proj可以編譯爲Windows。作爲一個外部的可執行文件,雖然有點笨拙,但很容易就可以調用它。祝你好運。 – 2012-02-22 19:42:12