{ "cells": [ { "cell_type": "markdown", "id": "54f244d8", "metadata": {}, "source": [ "# Retrieving data from Web Feature Service (WFS)\n", "\n", "Contents:\n", "- Introduce OGC WFS\n", "- Use OWSLib to get capabilities of WFS API\n", "- Retrieve data to geopandas" ] }, { "cell_type": "code", "execution_count": 1, "id": "721a81ff", "metadata": {}, "outputs": [], "source": [ "import geopandas as gpd\n", "import requests\n", "import geojson\n", "from pyproj import CRS\n", "from owslib.wfs import WebFeatureService\n", "\n", "# Specify the url for the backend.\n", "# Here we are using data from Statistics Finland: https://www.stat.fi/org/avoindata/paikkatietoaineistot_en.html. (CC BY 4.0)\n", "url = \"http://geo.stat.fi/geoserver/tilastointialueet/wfs\"\n", "\n", "# Specify parameters (read data in json format).\n", "params = dict(\n", " service=\"WFS\",\n", " version=\"2.0.0\",\n", " request=\"GetFeature\",\n", " typeName=\"tilastointialueet:kunta4500k\",\n", " outputFormat=\"json\",\n", ")\n", "\n", "# Fetch data from WFS using requests\n", "r = requests.get(url, params=params)\n", "\n", "# Create GeoDataFrame from geojson and set coordinate reference system\n", "data = gpd.GeoDataFrame.from_features(geojson.loads(r.content), crs=\"EPSG:3067\")" ] }, { "cell_type": "code", "execution_count": 2, "id": "295d482e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | geometry | \n", "kunta | \n", "vuosi | \n", "nimi | \n", "namn | \n", "name | \n", "bbox | \n", "
---|---|---|---|---|---|---|---|
0 | \n", "POLYGON ((366787.924 7001300.583, 362458.797 6... | \n", "005 | \n", "2022 | \n", "Alajärvi | \n", "Alajärvi | \n", "Alajärvi | \n", "[321987.07200161, 6959704.55099558, 366787.924... | \n", "
1 | \n", "POLYGON ((382543.364 7120022.976, 372645.944 7... | \n", "009 | \n", "2022 | \n", "Alavieska | \n", "Alavieska | \n", "Alavieska | \n", "[360962.99200022, 7104339.03799839, 382543.364... | \n", "
2 | \n", "POLYGON ((343298.204 6961570.195, 345569.224 6... | \n", "010 | \n", "2022 | \n", "Alavus | \n", "Alavo | \n", "Alavus | \n", "[303353.32000378, 6922242.40698068, 345569.224... | \n", "
3 | \n", "POLYGON ((436139.680 6798279.085, 435912.756 6... | \n", "016 | \n", "2022 | \n", "Asikkala | \n", "Asikkala | \n", "Asikkala | \n", "[403543.81899999, 6774122.31100019, 442401.762... | \n", "
4 | \n", "POLYGON ((426631.036 6720528.076, 432565.266 6... | \n", "018 | \n", "2022 | \n", "Askola | \n", "Askola | \n", "Askola | \n", "[413073.96299999, 6704555.87800016, 435459.201... | \n", "