使用OGR2OGR將S57資料轉為shp格式

來源:互聯網
上載者:User

S57海圖資料中包含了大量的圖層,在目前ArcMap軟體作為必備的GIS軟體之一,所以還是shp格式處理起來可能比較方便(這裡的方便僅僅是對於某些人覺得shp最常見,用的最廣泛而言,其實我本人覺得shp不好的地方就是一個資料要多個檔案組成,有點不爽)。所以可能需要把S57的資料轉為shp資料。下面使用gdal提供的ogr2ogr工具來進行轉換,希望對大家有用。

首先我們使用ogrinfo查看s57的資料中包含的圖層等資訊,因為後面轉換的時候需要這個資訊。1所示。

圖1 S57資料中包含的圖層

知道了s57資料中包含的圖層,下面就可以使用ogr2ogr工具來將s57中的圖層轉為shp資料,命令列如下:

C:\gdal\bin>ogr2ogr.exe -f "ESRI Shapefile" D:\s57polygon.shp D:\s57\C1100102.000 Area
圖2 使用OGR2OGR轉換為shp格式

從可以看出,shp資料的屬性工作表中不支援StringList和IntegerList格式的屬性值報錯了。其他的還是都正確的。

今天還發現一個問題,同樣的s57資料,同樣的gdal庫,在我的電腦上就出現異常了。這個s57的資料中其實是有25個圖層,比如使用QGIS開啟是就是對的,3所示,而我使用GDALinfo查看卻是只有5個圖層,1所示,但是這個資料我在另外一台電腦顯示的卻是25個圖層與QGIS一致,這個問題目前還沒找到造成的原因,後續待查。目前大致可以肯定的是,將25個圖層讀取為5個圖層,貌似分類是DSID一個,點,線,面和中繼資料四個圖層。也就是把25個圖層按照圖層類型給重新歸類了,這點可以從圖2轉出來的資料進行驗證。

圖3 QGIS開啟的s57資料顯示的圖層個數

用QGIS開啟圖2將面狀資料轉為shp載入進去,還有把s57所有的面狀資料載入進去,圖4所示,可以發現兩者還是有很大的差異的,但是我在公司的電腦讀取的25個圖層,然後轉一個就OK。

圖4 載入shp資料顯示輪廓

圖5 載入s57面狀資料顯示輪廓

……………………………………………………分割線…2013-07-13………………………………………………………………………

上文中的開啟S57的資料圖層變成5個,原因已經查明,就是沒有設定GDAL_DATA的目錄導致。在程式開始中使用下面的代碼即可讀取到S57的圖層。

CPLSetConfigOption("GDAL_DATA","C:\warmerda\bld\data");

如果使用的ogrinfo的命令列工具,在命令列中加入下面的參數也可以。

--config GDAL_DATA C:\warmerda\bld\data

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.