6

ジオデータベース ファイル (.gdb) に含まれるシェープファイルを R に読み込もうとしています。.gdb には、それぞれに複数のフィーチャ クラスを持つ 2 つのフィーチャ データセットが含まれています。

問題は、2 つのフィーチャ データセットのうちの 1 つだけが読み取られていることです。具体的には、すべての州で NHD データセットを使用しています 。「WBD」のみが読み取られています。ogrListLayers を使用すると、「WBD」からレイヤーのみが返されます。「Hydrography」データセットを指定して、その中のフィーチャクラスにアクセスするにはどうすればよいですか?

どんな提案でも大歓迎です。R バージョン 3.2.0。OSX v.10.10.3

編集 06/16/15: orgListLayers を実行すると、次のように返されます。

ogrListLayers('NHDH_VI.gdb')
[1] "ExternalCrosswalk"       "NHDFCode"                "NHDFeatureToMetadata"   
[4] "NHDFlow"                 "NHDFlowlineVAA"          "NHDMetadata"            
[7] "NHDProcessingParameters" "NHDReachCodeMaintenance" "NHDReachCrossReference" 
[10] "NHDSourceCitation"       "NHDStatus"               "NHDVerticalRelationship"
[13] "WBDHU14"                 "WBDHU8"                  "WBDHU2"                 
[16] "WBDHU4"                  "WBDHU6"                  "WBDHU10"                
[19] "WBDHU12"                 "WBDHU16"                 "HYDRO_NET_Junctions" 

21 層は異なっており、Mike T と hrbrmstr によって表現されています。具体的には、レイヤー名: NHDWaterbodyを探しています。

ogrinfo -ro NHDH_VI.gdbターミナルから実行すると。

ERROR 1: Error: Failed to open Geodatabase (This release of the GeoDatabase is either invalid or out of date.)
FAILURE: Unable to open datasource `NHDH_VI.gdb' with the following drivers.
      -> FileGDB
      -> OpenFileGDB
      ...
4

2 に答える 2

6

おそらく、ESRI File Geodatabase (OpenFileGDB)ドライバーを使用してファイルを読み取っています。OGR はフィーチャ データセットを保存または使用しないため、すべてのフィーチャ クラスが同じフラットな名前空間に混在しています。(例) ArcCatalog の NHDH_VI.gdb を見る:

アークカタログ

次に、コマンドラインプロンプトから同じファイルを読み取りますogrinfo -ro NHDH_VI.gdb

INFO: Open of `NHDH_VI.gdb'
      using driver `OpenFileGDB' successful.
1: NHDPoint (Point)
2: NHDFlowline (Multi Line String)
3: NHDLine (Multi Line String)
4: NHDArea (Multi Polygon)
5: NHDWaterbody (Multi Polygon)
6: NHDAreaEventFC (Multi Polygon)
7: NHDLineEventFC (Multi Line String)
8: NHDPointEventFC (Point)
9: WBDLine (Multi Line String)
10: NonContributingDrainageArea (Multi Polygon)
11: NWISBoundary (Multi Line String)
12: NWISDrainageArea (Multi Polygon)
13: WBDHU14 (Multi Polygon)
14: WBDHU8 (Multi Polygon)
15: WBDHU2 (Multi Polygon)
16: WBDHU4 (Multi Polygon)
17: WBDHU6 (Multi Polygon)
18: WBDHU10 (Multi Polygon)
19: WBDHU12 (Multi Polygon)
20: WBDHU16 (Multi Polygon)
21: HYDRO_NET_Junctions (Point)

そして同じことがRから利用可能です:

> library(rgdal)
> ogrListLayers("NHDH_VI.gdb")
 [1] "NHDPoint"                    "NHDFlowline"                
 [3] "NHDLine"                     "NHDArea"                    
 [5] "NHDWaterbody"                "NHDAreaEventFC"             
 [7] "NHDLineEventFC"              "NHDPointEventFC"            
 [9] "WBDLine"                     "NonContributingDrainageArea"
[11] "NWISBoundary"                "NWISDrainageArea"           
[13] "WBDHU14"                     "WBDHU8"                     
[15] "WBDHU2"                      "WBDHU4"                     
[17] "WBDHU6"                      "WBDHU10"                    
[19] "WBDHU12"                     "WBDHU16"                    
[21] "HYDRO_NET_Junctions"        
attr(,"driver")
[1] "OpenFileGDB"
attr(,"nlayers")
[1] 21

そのため、ArcCatalog 階層のデータセットを手動でフィルタリングして、OGR から見つけられるものにする必要があります。すべてのクラスが OGR で使用できるわけではありません (非空間テーブル、関係クラスなど)。

于 2015-06-16T03:57:25.440 に答える