# 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*