今天花了一點點時間看了一下C#中OGR讀取與寫shape中的投影資訊的方式.
讀寫向量與屬性資訊見上一篇C#用GDAL/OGR庫建立與寫Shape檔案,測試通過[原創]
具體過程為
//投影實驗區
OSGeo.OSR.SpatialReference ss;
ss = orgLayer.GetSpatialRef();//orgLayer為OSGeo.OGR.layer類型執行個體
string ppss;
ss.ExportToWkt(out ppss);//將讀取檔案的shape投影資訊輸出到格式化字串ppss
MessageBox.Show(ppss);
非常簡單.
比如,輸出的一個編碼資訊串為
GEOGCS["GCS_North_American_1927",DATUM["North_American_Datum_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.0174532925199433]]
這個串就是OGR裡面標準的wkt串
然後往新產生的shape裡寫投影資訊的過程也比較簡單.
string strwkt = "GEOGCS[\"GCS_North_American_1927\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke_1866\",6378206.4,294.9786982]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.0174532925199433]]";
注意字串中雙引號表示為\"
OSGeo.OSR.SpatialReference srs = new OSGeo.OSR.SpatialReference(strwkt);
//然後在建立Layer的函數中,第二個參數就是//OSGeo.OSR.SpatialReference
此時
poLayer = poDS.CreateLayer("layername1", srs, OSGeo.OGR.wkbGeometryType.wkbPoint, null);