2015-06-15 2 views
3

Я пытаюсь прочитать шейп-файлы, содержащиеся в файле базы геоданных (.gdb), в R. В .gdb содержится два набора данных функций с несколькими классами функций в каждом из них.readOGR .gdb с несколькими наборами данных функций в R

Проблема заключается в том, что читается только один из двух наборов данных. В частности, я использую набор данных NHD для всех состояний. ftp://nhdftp.usgs.gov/DataSets/Staged/States/FileGDB/HighResolution/ В каждом состоянии .gdb представлены два набора данных: «WBD» и «Hydrography». Прочитывается только «WBD». Использование ogrListLayers возвращает только слои из «WBD». Как я могу указать набор данных «Гидрография» и получить доступ к классам функций внутри него?

Любые предложения были бы очень признательны. R версия 3.2.0. OSX v.10.10.3

Edit 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 
     ... 
+0

Вы можете опубликовать более подробную информацию либо здесь, либо, возможно, на ГИС. См. Мой ответ без ответа для большего количества q. – hrbrmstr

ответ

0

ЭТО НЕ ОТВЕТ, но требуется больше места для уточнения, так как ОП не обеспечивает воспроизводимый пример. Я буду удалить, когда ОП q будет более полным.

Когда я бегу ogrinfo на NHDH_CT.gdb (один из небольших архивов) я получаю:

Layer name: NHDPoint 
Layer name: NHDFlowline 
Layer name: NHDLine 
Layer name: NHDArea 
Layer name: NHDWaterbody 
Layer name: NHDAreaEventFC 
Layer name: NHDLineEventFC 
Layer name: NHDPointEventFC 
Layer name: WBDLine 
Layer name: NonContributingDrainageArea 
Layer name: NWISBoundary 
Layer name: NWISDrainageArea 
Layer name: WBDHU14 
Layer name: WBDHU8 
Layer name: WBDHU2 
Layer name: WBDHU4 
Layer name: WBDHU6 
Layer name: WBDHU10 
Layer name: WBDHU12 
Layer name: WBDHU16 
Layer name: HYDRO_NET_Junctions 

Это соответствует:

> ogrListLayers("NHDH_CT.gdb") 
[1] "NHDPoint"     "NHDFlowline"     "NHDLine"      
[4] "NHDArea"      "NHDWaterbody"    "NHDAreaEventFC"    
[7] "NHDLineEventFC"    "NHDPointEventFC"    "WBDLine"      
[10] "NonContributingDrainageArea" "NWISBoundary"    "NWISDrainageArea"   
[13] "WBDHU14"      "WBDHU8"      "WBDHU2"      
[16] "WBDHU4"      "WBDHU6"      "WBDHU10"      
[19] "WBDHU12"      "WBDHU16"      "HYDRO_NET_Junctions"   

Что вы ожидали увидеть? Что показывает ваш ogrinfo? (ПРИМЕЧАНИЕ: Гавайи дали аналогичный результат).

4

Возможно, вы читаете файл с помощью драйвера ESRI File Geodatabase (OpenFileGDB). OGR не сохраняет или не использует набор данных функций, поэтому все классы пространственных объектов смешиваются в одном и том же пространстве имен. Глядя на (например) NHDH_VI.gdb в ArcCatalog:

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 (например, не пространственные таблицы, классы отношений).

Смежные вопросы