Skip to content

Instantly share code, notes, and snippets.

@vankesteren
Created November 6, 2020 12:12
Show Gist options
  • Save vankesteren/8cea55c2b19ff98a20a333b928af6506 to your computer and use it in GitHub Desktop.
Save vankesteren/8cea55c2b19ff98a20a333b928af6506 to your computer and use it in GitHub Desktop.
bag wfs query verblijfsobjecten
library(sf)
library(httr)
library(tidyverse)
url <- parse_url("https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1")
postcode_filter <- function(postcode, gebruiksdoel = "woonfunctie") {
sprintf(
"<Filter>
<And>
<PropertyIsLike wildCard=\"*\" singleChar=\"_\" escapeChar=\"\\\">
<PropertyName>postcode</PropertyName>
<Literal>%s</Literal>
</PropertyIsLike>
<PropertyIsEqualTo>
<PropertyName>gebruiksdoel</PropertyName>
<Literal>%s</Literal>
</PropertyIsEqualTo>
</And>
</Filter>
",
postcode, gebruiksdoel)
}
url$query <- list(service = "WFS",
version = "2.0.0",
request = "GetFeature",
typename = "bag:verblijfsobject",
propertyname = "postcode,oppervlakte,openbare_ruimte,huisnummer,huisletter",
outputformat = "application/json",
srsName = "EPSG:4326",
count = 1000,
startIndex = 5000,
filter = postcode_filter("3521*"))
request <- build_url(url)
dat_sf <- read_sf(request)
dat_sf %>% summarize(median = median(oppervlakte),
mean = mean(oppervlakte),
min = min(oppervlakte),
max = max(oppervlakte),
count = n())
dat_sf %>% filter(oppervlakte == 300)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment