搜尋此網誌

2015年11月28日 星期六

利用DotSpatial轉換ShapeFile坐標

在轉換坐標時候
除了用GIS軟體直接轉換之外
有時候會需要用程式來轉換



接下來示範用DotSpatial轉換ShapeFile坐標
這裡所用的DotSpatial是一個專門for .Net 的 open source
https://dotspatial.codeplex.com/

範例如下:
下載後把DotSpatial引用進去
  1. using DotSpatial.Data;  
  2. using DotSpatial.Topology;  
  3. using DotSpatial.Projections;  
轉換的function如下


  • //轉換ShapeFile坐標  
  •         public static Boolean ConvertCoordinate(string SourceFile, int SourceEpsgCode, string ResultFile, int ResultEpsgCode)  
  •         {  
  •             try  
  •             {  
  •                 Shapefile sf = Shapefile.OpenFile(SourceFile);  
  •                 sf.Projection = ProjectionInfo.FromEpsgCode(SourceEpsgCode);  
  •                 sf.Reproject(ProjectionInfo.FromEpsgCode(ResultEpsgCode));  
  •                 sf.SaveAs(ResultFile, true);  
  •                 return true;  
  •             }  
  •             catch  
  •             {  
  •                 return false;  
  •             }  
  •         }  
  • 呼叫方式:
    ConvertCoordinate(來源檔案含路徑, 來源檔案的EpsgCode, 欲儲存檔案名稱包含路徑, 欲儲存檔案的EpsgCode);

    這個範例就是將WGS84坐標轉換為97坐標

    ConvertCoordinate("大里區.shp", 4326, "97.shp", 3826);

    另外補充:
    EpsgCode為一個石油天然氣生產組織所定義的
    http://www.epsg.org/
    台灣常用的坐標EpsgCode分別為

    TWD 97 (121) - 3826
    TWD 69 (121) - 3828
    WGS84 - 4326
    Spherical Mercator - 3857

    2 則留言:

    1. 哈哈哈~大大我又被您救了一次XDD
      太感謝了QQ

      回覆刪除
      回覆
      1. 不用客氣啊
        教學相長,希望對你有幫助唷

        刪除