代码之家  ›  专栏  ›  技术社区  ›  Deset

列出可用的WFS层并使用rgdal读取数据帧

  •  4
  • Deset  · 技术社区  · 9 年前

    我有以下问题,根据不同的来源,它应该能够读取R中的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 shell system 命令)。

    有人知道我做错了什么吗 rgdal公司 或任何类似的包装?

    2 回复  |  直到 9 年前
        1
  •  6
  •   hrbrmstr    9 年前

    您可以组合这两个包来完成任务。

    首先,使用 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(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" ...
    
        2
  •  0
  •   Roger Bivand    9 年前

    提问者和回答者都没有说明rgdal是如何安装的。如果它是用于Windows或OSX的CRAN二进制文件,那么它的驱动程序集可能比独立安装的GDAL底层gdalUtils要少。始终说明您的平台,以及rgdal是二进制安装的还是源代码安装的,并始终提供显示为rgdal加载的消息的输出,以及sessionInfo()的输出,以显示您正在运行的平台。

    考虑到驱动程序集的可能差异,给出的建议似乎是合理的。