在GIS軟件的開發(fā)中,經(jīng)常用到開源庫GDAL讀取Shp數(shù)據(jù),當(dāng)shp數(shù)據(jù)中包含投影信息時(shí),可能會(huì)遇到“Unable to open EPSG support file gcs.csv”錯(cuò)誤提示,該錯(cuò)誤是由于沒有設(shè)置“GDAL_DATA”引起的。 1.Shpefile文件組成Shapefile文件指的是一種文件存儲的方法,實(shí)際上該種文件格式是由多個(gè)文件組成的。其中,要組成一個(gè)Shapefile,有三個(gè)文件是必不可少的,它們分別是".shp", ".shx"與 ".dbf" 文件。表示同一數(shù)據(jù)的一組文件其文件名前綴應(yīng)該相同。例如,存儲一個(gè)關(guān)于湖的幾何與屬性數(shù)據(jù),就必須有l(wèi)ake.shp,lake.shx與 lake.dbf三個(gè)文件。而其中“真正”的Shapefile的后綴為shp,然而僅有這個(gè)文件數(shù)據(jù)是不完整的,必須要把其他兩個(gè)附帶上才能構(gòu)成一組完 整的地理數(shù)據(jù)。除了這三個(gè)必須的文件以外,還有八個(gè)可選的文件,使用它們可以增強(qiáng)空間數(shù)據(jù)的表達(dá)能力。所有的文件名都必須遵循MS DOS的8.3文件名標(biāo)準(zhǔn)(文件前綴名8個(gè)字符,后綴名3個(gè)字符,如shapefil.shp),以方便與一些老的應(yīng)用程序保持兼容性,盡管現(xiàn)在許多新的程序都能夠支持長文件名。此外,所有的文件都必須位于同一個(gè)目錄之中。 必須的文件:
其他可選的文件:
2.檢查編譯的GDAL或者下載的dll是否包含“Data”筆者編譯的GDAL目錄,如下圖所示(其中“GdalData”目錄名稱可自行指定): 該目錄內(nèi)容如下所示: 3.設(shè)置“GDAL_DATA”選項(xiàng)設(shè)置“GDAL_DATA”有兩種方法: (1)在環(huán)境變量中設(shè)置 具體步驟: 右鍵我的電腦-屬性-高級系統(tǒng)設(shè)置-選項(xiàng)“高級”-【環(huán)境變量】-“用戶變量”-【新建】 (2)在程序中讀取Shp數(shù)據(jù)時(shí)設(shè)置 具體代碼如下(其中路徑也可設(shè)置為相對路徑): 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不支持中文路徑的設(shè)置,該路徑必須為全英文路徑(若大家解決該問題,歡迎告知)。
|
|