Перечислите доступные слои WFS и считайте их во фрейм данных с помощью rgdal

У меня есть следующая проблема в соответствии с различными источниками, он должен быть в состоянии прочитать слой WFS в R с помощью 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 shell или же system команда).

Ну кто-нибудь знает, что я делаю неправильно, или если что-то подобное возможно даже с rgdal или любой подобный пакет?

2 ответа

Решение

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

Сначала преобразуйте нужный слой в локальный шейп-файл, используя 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)

введите описание изображения здесь

str(sic@data)

## '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" ...

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

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

Другие вопросы по тегам