在GIS軟件的開發中,常常用到開源庫GDAL讀取Shp數據,當shp數據中包含投影信息時,可能會遇到「Unable to open EPSG support file gcs.csv」錯誤提示,該錯誤是因爲沒有設置「GDAL_DATA」引發的。編碼
Shapefile文件指的是一種文件存儲的方法,實際上該種文件格式是由多個文件組成的。其中,要組成一個Shapefile,有三個文件是必不可少的,它們分別是".shp", ".shx"與 ".dbf" 文件。表示同一數據的一組文件其文件名前綴應該相同。例如,存儲一個關於湖的幾何與屬性數據,就必須有lake.shp,lake.shx與 lake.dbf三個文件。而其中「真正」的Shapefile的後綴爲shp,然而僅有這個文件數據是不完整的,必需要把其餘兩個附帶上才能構成一組完 整的地理數據。除了這三個必須的文件之外,還有八個可選的文件,使用它們能夠加強空間數據的表達能力。全部的文件名都必須遵循MS DOS的8.3文件名標準(文件前綴名8個字符,後綴名3個字符,如shapefil.shp),以方便與一些老的應用程序保持兼容性,儘管如今許多新的程序都可以支持長文件名。此外,全部的文件都必須位於同一個目錄之中。spa
必須的文件:code
其餘可選的文件:xml
筆者編譯的GDAL目錄,以下圖所示(其中「GdalData」目錄名稱可自行指定):blog
該目錄內容以下所示:索引
設置「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不支持中文路徑的設置,該路徑必須爲全英文路徑(若你們解決該問題,歡迎告知)。