在 R 中具有多个特征数据集的 readOGR .gdb

标签 r gis gdal rgdal

我正在尝试将地理数据库文件 (.gdb) 中包含的 shapefile 读取到 R 中。.gdb 包含两个要素数据集,每个数据集具有多个要素类。

问题是只有两个特征数据集之一正在被读取。
具体来说,我对所有州使用 NHD 数据集 ftp://nhdftp.usgs.gov/DataSets/Staged/States/FileGDB/HighResolution/
在每个状态 .gdb 中有两个特征数据集,“WBD”和“Hydrography”。仅读取“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
      ...

最佳答案

您可能正在阅读带有 ESRI File Geodatabase (OpenFileGDB) 的文件司机。 OGR 不保留或使用要素数据集,因此所有要素类都混合在同一个平面命名空间中。在 ArcCatalog 中查看(例如)NHDH_VI.gdb:

ArcCatalog

然后使用 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(例如非空间表、关系类)。

关于在 R 中具有多个特征数据集的 readOGR .gdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30851510/

相关文章:

python - 导入错误 : No module named gdal

Python gdal投影信息

postgresql - ogr2ogr 和 Postgis/PostgreSQL 数据库的编码问题

Shiny 的应用程序 selectInput 和 radioButtons 中的响应式(Reactive)更新 - ggvis

r - 如何更改ggplot中的默认美感?

r - 为什么 `sample0` 里面是 `sample` 而不是 `cv.glm` ?

python - 返回多边形 geopandas 内的点列表

r - 计算两个以上数据点之间的方位

python - 如何使用 GDAL 更改栅格的地理变换?

正则表达式替换 R 中字符串的部分/组