# OGC API - en kort intro --- ## Om API'er og den kommende familien av standarder fra OGC Videoen viser også bruk av REST-API fra GeoNorge for administrative inndelinger - [ogc-api.pdf](docs/ogc-api.pdf) ### Se denne videoen fram til 22:00: ## Kodeeksempel med Open Layers, WFS og GML ### Orginalkode fra Andreas Hocevar ```js var xml = 'https://gist.githubusercontent.com/ahocevar/f6e7f1c9922f7ba9a7b987d21e5474e3/raw/74291e39afd0347535ff699a72af4539b8472849/test.xml'; proj4.defs("EPSG:27700", "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs"); var vector = new ol.layer.Vector({ source: new ol.source.Vector({ url: xml, format: new ol.format.GML({ featureNS: 'http://mapserver.gis.umn.edu/mapserver', featureType: 'WFSLayer' }) }) }); var map = new ol.Map({ target: 'map', layers: [vector], view: new ol.View({ center: [0, 0], zoom: 0 }) }); vector.getSource().once('change', function (e) { map.getView().fit(e.target.getExtent()); }); ``` - [ahocevar's komplette eksempel: hocevar.html](docs/hocevar.html) ### Modifisert versjon for innlandet fylke ```js var xml = 'https://wfs.geonorge.no/skwms1/wfs.administrative_enheter' + '?service=WFS' + '&version=1.1.0' + '&request=GetFeature' + '&typename=app%3AKommune' + '&outputFormat=application%2Fgml%2Bxml%3B%20version%3D3.2' + '&srsname=urn:ogc:def:crs:EPSG::3857' + '&filter=%3CFilter%20xmlns%3D%22http%3A%2F%2Fwww.opengis.net' + '%2Fogc%22%3E%0A%3CPropertyIsEqualTo%3E%0A%3CPropertyName%3Ekommunenummer' + '%3C%2FPropertyName%3E%0A%3CLiteral%3E3403%3C%2FLiteral' + '%3E%0A%3C%2FPropertyIsEqualTo%3E%0A%3C%2FFilter%3E'; var xmll = 'hamar.gml' console.log(xmll); var vector = new ol.layer.Vector({ source: new ol.source.Vector({ url: xmll, format: new ol.format.GML({ featureNS: 'http://skjema.geonorge.no/SOSI/produktspesifikasjon/AdmEnheter/4.1', featureType: 'Fylke' }) }) }); var map = new ol.Map({ target: 'map', layers: [vector], view: new ol.View({ //center: [1204170, 8552046], center: [0, 0], zoom: 0 }) }); ``` ### GetFeature-kallet i ulike varianter ```js var xml = 'https://wfs.geonorge.no/skwms1/wfs.administrative_enheter' + '?service=WFS' + '&version=1.1.0' + '&request=GetFeature' + '&typename=app%3AKommune' + '&outputFormat=application%2Fgml%2Bxml%3B%20version%3D3.2' + '&srsname=urn:ogc:def:crs:EPSG::3857' + '&filter=%3CFilter%20xmlns%3D%22http%3A%2F%2Fwww.opengis.net' + '%2Fogc%22%3E%0A%3CPropertyIsEqualTo%3E%0A%3CPropertyName%3Ekommunenummer' + '%3C%2FPropertyName%3E%0A%3CLiteral%3E3403%3C%2FLiteral' + '%3E%0A%3C%2FPropertyIsEqualTo%3E%0A%3C%2FFilter%3E'; https://wfs.geonorge.no/skwms1/wfs.administrative_enheter ?service=WFS &version=1.1.0 &request=GetFeature &typename=app%3AKommune &outputFormat=application%2Fgml%2Bxml%3B%20version%3D3.2 &srsname=urn:ogc:def:crs:EPSG::3857 &filter=%3CFilter%20xmlns%3D%22http%3A%2F%2Fwww.opengis.net %2Fogc%22%3E%0A%3CPropertyIsEqualTo%3E%0A%3CPropertyName%3Ekommunenummer %3C%2FPropertyName%3E%0A%3CLiteral%3E3403%3C%2FLiteral %3E%0A%3C%2FPropertyIsEqualTo%3E%0A%3C%2FFilter%3E kommunenummer 3403 ``` - [innlandet fylke-eksempel: hocevar_hamar.html](docs/hocevar_hamar.html) ## GeoJSON-basert webkart med kommunegrenser for hele Norge ```js map.on('load', function () { map.addSource('kommuner', { "type": "geojson", "data": 'https://ws.geonorge.no/kommuneinfo/v1/kommuner/illustrasjonskart?utkoordsys=4326' }); map.addLayer({ 'id': 'kommunekart', 'type': 'fill', 'source': 'kommuner', 'layout': {}, 'paint': { 'fill-color': '#088', 'fill-opacity': 0.4, 'fill-outline-color': '#2f4f4f' } }); }); ``` - [hele landet: kommunekart_geojson.html](docs/kommunekart_geojson.html) ## JSON-basert webkart med kommunegrense for Vestre Toten ```js const getKommunePolygon = async (kommunenummer) => { let geoJsonData = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "kommunenavn": "", "kommunenummer": "" }, "geometry": { "type": "MultiPolygon", "coordinates": [0, 0] } } ] }; response = await fetch(`https://ws.geonorge.no/kommuneinfo/v1/kommuner/${kommunenummer}/omrade?utkoordsys=4326`); //response = await fetch(`https://ws.geonorge.no/kommuneinfo/v1/kommuner/3443/omrade?utkoordsys=4326`); if (response.ok) { const apiData = await response.json(); geoJsonData.features[0].properties.kommunenavn = apiData.kommunenavn; geoJsonData.features[0].properties.kommunenummer = apiData.kommunenummer; geoJsonData.features[0].geometry.coordinates = apiData.omrade.coordinates; return geoJsonData; } else { return false; }; }; map.on('load', async function () { var minZoomThreshold = 8; map.addSource('kommuner', { "type": "geojson", "data": await getKommunePolygon(3443) }); map.addLayer({ 'id': 'kommuner', 'type': 'fill', 'source': 'kommuner', 'layout': {}, 'paint': { 'fill-color': '#088', 'fill-opacity': 0.4, 'fill-outline-color': '#2f4f4f' } }); }); ``` - [Vestre Toten: kommunekart.html](docs/kommunekart.html) ## *NTNU 25.03.2021 Sverre Stikbakke*

¯\_(ツ)_/¯