經緯度到平面座標的相互轉換

來源:互聯網
上載者:User

分兩部分:

第一部分  簡單處理

現在好多人在使用ArcObject的時候都可能需要作經緯度和平面座標的相互轉換。由於經緯度是球面座標,平面座標是X-Y的笛卡爾座標系統,所以這是一個看起來比較難的問題。

      好多人一上來就搬出地圖學、地圖投影學或者測繪學中的投影公式(如高斯投影 或墨卡托投影),又是基準座標又是角度的搞的人頭都大了。

      實際上要想實現這個功能非常easy。 ARC Engine中的IPoint就可以進行投影和反投影運算了。

投影過程(C#):

///  flatref 投影的座標系統,這裡的54013是世界投影  ,世界投影所有經緯度都可以轉換為平面座標,但是由於投影面積大失真也會比較大(相當於把整個地球劈成一片片的,然後展開最後貼到平面上,失真當然大了)。當然也可以選擇精度更高的平面如:esriSRProjCS_Beijing1954GK_23N      對應數值21483  僅僅把北京附近的地球平面展開鋪在平面上,由於投影面積變小,所以投影經度提高。但是由於面積變小,所以有些經度緯度不能轉換,比如所美國的精度緯度用北京投影就投不了。

        flatref = pfactory.CreateProjectedCoordinateSystem(54013);

 

//沒什麼說的,標準大地經緯度,可以將X-Y逆投影為經度和緯度

  earthref = pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_NAD1983);

        /// 將經緯度點轉換為平面座標。
      
        private IPoint GetProject(double x, double y)
        {

            IPoint pt = new PointClass();
          
            pt.PutCoords(x, y);

            IGeometry geo = (IGeometry)pt;
            geo.SpatialReference = earthref;
            geo.Project(flatref);

        
            return pt;
        }

 

           /// 將平面座標轉換為經緯度。
         private IPoint GetGeo(double x, double y)
        {

            IPoint pt = new PointClass();

            pt.PutCoords(x, y);

            IGeometry geo = (IGeometry)pt;
            geo.SpatialReference = flatref;
            geo.Project(earthref);
            double xx = pt.X;
            return pt;
        }

 實際上IPoint的投影和任何地圖都沒什麼大關係,完全可以不用地圖,直接調用IPoint進行投影的轉換

第二部分

應該比較準確,沒有深入研究

http://www.3snews.net/html/88/688-18657.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.