2015-08-16 20 views
4

根據不同的來源,我有以下問題,它應該能夠使用rgdal讀取R中的WFS層。列出可愛的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爲空間(點)數據幀。

我嘗試了幾個其他WFS服務器,但它不起作用。 我總是得到警告:

Cannot open data source 

檢查的WFS司機我得到以下結果:(?再)

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

那麼它看起來像WFS驅動程序未在rgdal實施 或者爲什麼有這麼多的例子「聲稱」相反?

我也嘗試了gdalUtils包,它的工作原理,但它給出了ogrinfo.exe的整個控制檯消息,而不僅僅是可用的層(我猜它只是調用ogrinfo.exe並將結果發回至R使用r shellsystem命令)。

那麼有沒有人知道我做錯了什麼,或者如果類似的東西甚至可能與rgdal或任何類似的包?

回答

6

你可以結合這兩個軟件包來完成你的任務。

首先,使用gdalUtils將需要的圖層轉換爲本地shapefile。然後,正常使用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安裝。如果它是Windows或OSX的CRAN二進制文件,它可能會有比GDAL底層gdalUtils的獨立安裝更小的一組驅動程序。始終說明您的平臺,以及rgdal是以二進制還是從源代碼安裝的,並始終提供顯示爲rgdal加載的消息的輸出,以及sessionInfo()以顯示您運行的平臺。

考慮到驅動程序集可能存在差異,給出的建議似乎是合理的。