2015-08-16 4 views
4

У меня есть следующая проблема в зависимости от разных источников, она должна иметь возможность читать WFS-слой в R, используя rgdal.Список доступных слоев WFS и чтение в кадр данных с rgdal

dsn<-"WFS:http://geomap.reteunitaria.piemonte.it/ws/gsareprot/rp-01/areeprotwfs/wfs_gsareprot_1?service=WFS&request=getCapabilities" 

ogrListLayers(dsn) 
readOGR(dsn,"SIC") 

Результатом этого кода должна быть 1) в список доступного слоя WFS и 2), чтобы прочитать конкретный слой (SIC) в качестве R (точки) DataFrame Spatial.

Я пробовал несколько других серверов WFS, но он не работает. Я всегда получаю предупреждение:

Cannot open data source 

Проверка для водителя WFS я получаю следующий результат: (? Больше)

> "WFS" %in% ogrDrivers()$name 
[1] FALSE 

Ну это выглядит, как водитель WFS не реализован в rgdal Или почему существует так много примеров, «претендующих» на противоположное?

Я также попробовал пакет gdalUtils, и он работает, но он выдает все консольное сообщение ogrinfo.exe, а не только доступные слои. (Думаю, он «просто» вызывает ogrinfo.exe и отправляет результат обратно на R, например, с помощью команды r shell или system).

Хорошо, кто-нибудь знает, что я делаю неправильно, или если что-то подобное возможно с помощью rgdal или любого подобного пакета?

ответ

6

Вы можете комбинировать два пакета для выполнения своей задачи.

Сначала преобразуйте необходимый слой в локальный шейп-файл, используя gdalUtils. Затем используйте rgdal как обычно. ПРИМЕЧАНИЕ: после вызова ogr2ogr вы увидите предупреждающее сообщение, но оно выполнило преобразование для меня. Кроме того, ogr2ogr не будет перезаписывать локальные файлы без параметра overwrite, являющегося TRUE (есть и другие параметры, которые могут быть полезны).

library(gdalUtils) 
library(rgdal) 

dsn <- "WFS:http://geomap.reteunitaria.piemonte.it/ws/gsareprot/rp-01/areeprotwfs/wfs_gsareprot_1?service=WFS&request=getCapabilities" 

ogrinfo(dsn, so=TRUE) 
## [1] "Had to open data source read only." 
## [2] "INFO: Open of `WFS:http://geomap.reteunitaria.piemonte.it/ws/gsareprot/rp-01/areeprotwfs/wfs_gsareprot_1?service=WFS&request=getCapabilities'" 
## [3] "  using driver `WFS' successful." 
## [4] "1: AreeProtette" 
## [5] "2: ZPS" 
## [6] "3: SIC" 

ogr2ogr(dsn, "sic.shp", "SIC") 

sic <- readOGR("sic.shp", "sic", stringsAsFactors=FALSE) 
## OGR data source with driver: ESRI Shapefile 
## Source: "sic.shp", layer: "sic" 
## with 128 features 
## It has 23 fields 

plot(sic) 

enter image description here

str([email protected]) 

## 'data.frame': 128 obs. of 23 variables: 
## $ gml_id : chr "SIC.510" "SIC.472" "SIC.470" "SIC.508" ... 
## $ objectid : chr "510" "472" "470" "508" ... 
## $ inspire_id: chr NA NA NA NA ... 
## $ codice : chr "IT1160026" "IT1160017" "IT1160018" "IT1160020" ... 
## $ nome  : chr "Faggete di Pamparato, Tana del Forno, Grotta delle Turbiglie e Grotte di Bossea" "Stazione di Linum narbonense" "Sorgenti del T.te Maira, Bosco di Saretto, Rocca Provenzale" "Bosco di Bagnasco" ... 
## $ cod_tipo : chr "B" "B" "B" "B" ... 
## $ tipo  : chr "SIC" "SIC" "SIC" "SIC" ... 
## $ cod_reg_bi: chr "1" "1" "1" "1" ... 
## $ des_reg_bi: chr "Alpina" "Alpina" "Alpina" "Alpina" ... 
## $ mese_istit: chr "11" "11" "11" "11" ... 
## $ anno_istit: chr "1996" "1996" "1996" "1996" ... 
## $ mese_ultmo: chr "2" NA NA NA ... 
## $ anno_ultmo: chr "2002" NA NA NA ... 
## $ sup_sito : chr "29396102.9972" "82819.1127" "7272687.002" "3797600.3563" ... 
## $ perim_sito: chr "29261.8758" "1227.8846" "17650.289" "9081.4963" ... 
## $ url1  : chr "http://gis.csi.it/parchi/schede/IT1160026.pdf" "http://gis.csi.it/parchi/schede/IT1160017.pdf" "http://gis.csi.it/parchi/schede/IT1160018.pdf" "http://gis.csi.it/parchi/schede/IT1160020.pdf" ... 
## $ url2  : chr "http://gis.csi.it/parchi/carte/IT1160026.djvu" "http://gis.csi.it/parchi/carte/IT1160017.djvu" "http://gis.csi.it/parchi/carte/IT1160018.djvu" "http://gis.csi.it/parchi/carte/IT1160020.djvu" ... 
## $ fk_ente : chr NA NA NA NA ... 
## $ nome_ente : chr NA NA NA NA ... 
## $ url3  : chr NA NA NA NA ... 
## $ url4  : chr NA NA NA NA ... 
## $ tipo_geome: chr "poligono" "poligono" "poligono" "poligono" ... 
## $ schema : chr "Natura2000" "Natura2000" "Natura2000" "Natura2000" ... 
0

Ни спрашивающий, ни ответчик сказать, как rgdal был установлен. Если это двоичный файл CRAN для Windows или OSX, он может иметь меньший набор драйверов, чем независимая установка GDAL, лежащая в основе gdalUtils. Всегда указывайте свою платформу и устанавливайте ли rgdal двоичную или исходную информацию и всегда предоставляете вывод сообщений, отображаемых как нагрузки rgdal, а также sessionInfo(), чтобы показать платформу, на которой вы работаете.

Учитывая возможную разницу в наборах драйверов, приведенный совет представляется разумным.