GDAL讀取Shp問題解決:Unable to open EPSG support file gcs.csv

在GIS軟件的開發中,常常用到開源庫GDAL讀取Shp數據,當shp數據中包含投影信息時,可能會遇到「Unable to open EPSG support file gcs.csv」錯誤提示,該錯誤是因爲沒有設置「GDAL_DATA」引發的。編碼

1.Shpefile文件組成

Shapefile文件指的是一種文件存儲的方法,實際上該種文件格式是由多個文件組成的。其中,要組成一個Shapefile,有三個文件是必不可少的,它們分別是".shp", ".shx"與 ".dbf" 文件。表示同一數據的一組文件其文件名前綴應該相同。例如,存儲一個關於湖的幾何與屬性數據,就必須有lake.shp,lake.shx與 lake.dbf三個文件。而其中「真正」的Shapefile的後綴爲shp,然而僅有這個文件數據是不完整的,必需要把其餘兩個附帶上才能構成一組完 整的地理數據。除了這三個必須的文件之外,還有八個可選的文件,使用它們能夠加強空間數據的表達能力。全部的文件名都必須遵循MS DOS的8.3文件名標準(文件前綴名8個字符,後綴名3個字符,如shapefil.shp),以方便與一些老的應用程序保持兼容性,儘管如今許多新的程序都可以支持長文件名。此外,全部的文件都必須位於同一個目錄之中。spa

必須的文件:code

  • .shp — 圖形格式,用於保存元素的幾何實體。
  • .shx — 圖形索引格式。幾何體位置索引,記錄每個幾何體在shp文件之中的位置,可以加快向前或向後搜索一個幾何體的效率。
  • .dbf — 屬性數據格式,以dBase IV的數據表格式存儲每一個幾何形狀的屬性數據。

其餘可選的文件:xml

  • .prj — 投影格式,用於保存地理座標系統與投影信息,是一個存儲well-known text投影描述符的文本文件。
  • .sbn and .sbx — 幾何體的空間索引
  • .fbn and .fbx — 只讀的Shapefiles的幾何體的空間索引
  • .ain and .aih — 列表中活動字段的屬性索引。
  • .ixs — 可讀寫Shapefile文件的地理編碼索引
  • .mxs — 可讀寫Shapefile文件的地理編碼索引(ODB格式)
  • .atx — .dbf文件的屬性索引,其文件名格式爲shapefile.columnname.atx (ArcGIS 8及以後的版本)
  • .shp.xml — 以XML格式保存元數據。
  • .cpg — 用於描述.dbf文件的代碼頁,指明其使用的字符編碼。

2.檢查編譯的GDAL或者下載的dll是否包含「Data」

筆者編譯的GDAL目錄,以下圖所示(其中「GdalData」目錄名稱可自行指定):blog

該目錄內容以下所示:索引

3.設置「GDAL_DATA」選項

設置「GDAL_DATA」有兩種方法:開發

(1)在環境變量中設置io

具體步驟:字符編碼

右鍵個人電腦-屬性-高級系統設置-選項「高級」-【環境變量】-「用戶變量」-【新建】編譯

(2)在程序中讀取Shp數據時設置

具體代碼以下(其中路徑也可設置爲相對路徑):

 OSGeo.GDAL.Gdal.AllRegister();
 OSGeo.OGR.Ogr.RegisterAll();
 OSGeo.GDAL.Gdal.SetConfigOption("GDAL_DATA", @"D:\GDAL\GDAL\GDAL232\GdalData");
 OSGeo.OGR.Driver dr = OSGeo.OGR.Ogr.GetDriverByName("ESRI shapefile");
 OSGeo.OGR.DataSource ds = dr.Open(path, 0);

注:gdal2.3.2不支持中文路徑的設置,該路徑必須爲全英文路徑(若你們解決該問題,歡迎告知)。

相關文章
相關標籤/搜索