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