get_wfs {happign} | R Documentation |
Download WFS layer
Description
Read simple features from IGN Web Feature Service (WFS) from location and name of layer.
Usage
get_wfs(x = NULL,
layer = NULL,
filename = NULL,
spatial_filter = "bbox",
ecql_filter = NULL,
overwrite = FALSE,
interactive = FALSE)
Arguments
x |
Object of class |
layer |
|
filename |
|
spatial_filter |
|
ecql_filter |
|
overwrite |
|
interactive |
|
Details
-
get_wfs
use ECQL language : a query language created by the OpenGeospatial Consortium. It provide multiple spatial filter : "intersects", "disjoint", "contains", "within", "touches", "crosses", "overlaps", "equals", "relate", "beyond", "dwithin". For "relate", "beyond", "dwithin", argument can be provide using vector like : spatial_filter = c("dwithin", distance, units). More info about ECQL language here. ECQL query can be provided to
ecql_filter
. This allows direct query of the IGN's WFS geoservers. Ifx
is set, then theecql_filter
comes in addition to thespatial_filter
. More info for writing ECQL here
Value
sf
object from sf
package or NULL
if no data.
See Also
Examples
## Not run:
library(sf)
library(tmap)
# Shape from the best town in France
penmarch <- read_sf(system.file("extdata/penmarch.shp", package = "happign"))
# For quick testing, use interactive = TRUE
shape <- get_wfs(x = penmarch,
interactive = TRUE)
## Getting borders of best town in France
metadata_table <- get_layers_metadata("wfs", "administratif")
layer <- metadata_table[32,1] # LIMITES_ADMINISTRATIVES_EXPRESS.LATEST:commune
# Downloading borders
borders <- get_wfs(penmarch, layer)
# Plotting result
qtm(borders, fill = NULL, borders = "firebrick") # easy map
# Get forest_area of the best town in France
forest_area <- get_wfs(x = borders,
layer = "LANDCOVER.FORESTINVENTORY.V1:resu_bdv1_shape")
qtm(forest_area, fill = "nom_typn")
# Using ECQL filters to query IGN server
## First find attributes of the layer
attrs <- get_wfs_attributes(layer)
## e.g. : find all commune's name starting by "plou"
plou_borders <- get_wfs(x = NULL, # When x is NULL, all France is query
layer = "LIMITES_ADMINISTRATIVES_EXPRESS.LATEST:commune",
ecql_filter = "nom_m LIKE 'PLOU%'")
qtm(plou_borders)
## Combining ecql_filters
plou_borders_inf_2000 <- get_wfs(x = NULL, # When x is NULL, all France is query
layer = "LIMITES_ADMINISTRATIVES_EXPRESS.LATEST:commune",
ecql_filter = "nom_m LIKE 'PLOU%' AND population < 2000")
qtm(plou_borders)+ qtm(plou_borders_inf_2000, fill = "red")
## End(Not run)