DHM koter har været tilgængelig via REST-API'en under services,- og certservices.datafordeler.dk. For at modernisere Datafordeleren og anvende standardiserede web-teknologier, erstattes REST-kotertjenesten med et eksisterende WMS-endepunktet under wms.datafordeler.dk. Dette er afspejlet i Datafordelerens dataoversigt.
Denne guide er for anvendere, som er:
Sideinformation
I dette dokument bruges begreberne, som beskrevet nedenfor. Bemærk at begreberne også kan være yderligere forklaret i løbet af dokumentet med eksempler.
Begreb | Beskrivelse |
Nuværende kotertjeneste | REST-API’en på certservices.datafordeler.dk, der tillader hentning af højdedata via punktkoordinater |
Moderniseret kotertjeneste | WMS GetFeatureInfo-baseret tjeneste på wms.datafordeler.dk |
Koter | Punkthøjdedata fra Danmarks Højdemodel (DHM), som repræsenterer terrænet eller bygninger |
BBOX | Bounding Box – en rektangulær omkransning defineret af mindste og største koordinater |
WMS | Web Map Service – standard web-tjeneste til visning og forespørgsler på geografiske data |
GetFeatureInfo | WMS-forespørgsel der returnerer attributdata for en geografisk lokation |
EPSG:4326 | Geografisk koordinatsystem (længde/bredde) |
EPSG:25832 | UTM Zone 32N – plankoordinatsystem for Danmark |
DHM Koter udbyder punkthøjdedata fra Danmarks Højdemodel. Brugeren kan anmode om højdedata for geografiske koordinater, og tjenesten returnerer de tilsvarende højdeværdier.
Den nuværende tjeneste på certservices.datafordeler.dk bruger REST-principper og tillader:
Den nye tjeneste på wms.datafordeler.dk bruger WMS GetFeatureInfo-standarden og:
Ved brug af den WMS-baserede løsning kræver tjenesten flere parametre end REST-tjenesten. Disse vil i eksemplerne i afsnit 6 være sat op til at give identiske resultater som REST-tjenesten.
Bemærk De angivne parameterværdier er kalibreret til at returnere samme data som REST-løsningen. Hvis disse værdier ændres, kan tjenesten returnere data for andre geografiske områder, hvilket ikke nødvendigvis stemmer overens med REST-kotertjenesten. Vi anbefaler derfor at beholde disse standardværdier, medmindre du bevidst ønsker andre resultater. |
Parameter | Bemærkning |
i=175 | Pixelkoordinat for horisontalt område |
j=175 | Pixelkoordinat for vertikalt område |
WIDTH=351 | Billedbredde i pixels |
HEIGHT=351 | Billedhøjde i pixels |
Gammel REST-parameter | Ny WMS-parameter | Bemærkning |
elevationmodel=dtm | Layers=dhm_terraen | Typen af højdedata ligger nu i Layers-parameteren. |
georef=EPSG:4326 | CRS=EPSG:4326 | Samme koordinatsystem, anderledes parameternavn. |
geop=POINT(x y) | BBOX=minX,minY,maxX,maxY | Se afsnit 5.2 for beregning. |
format=json | info_format=text/plain | WMS bruger text/plain for højdedata. |
username/password eller certifikat | Apikey, OAuth Shared Secret eller Certifikat | Autentifikation er påkrævet. |
Den vigtigste ændring er, at WMS-tjenesten kræver en Bounding Box i stedet for et enkelt punkt. Du beregner BBOX ved at tilføje/fratrække en værdi fra dine punktkoordinater:
Brug offset på minimum ±0.005:
Hvis punkt er: 55.67, 11.67 Vil BBOX være: 55.665, 11.665, 55.675, 11.675 |
Formel:
BBOX = minX, minY, maxX, maxY BBOX = (point_x - 0.005), (point_y - 0.005), (point_x + 0.005), (point_y + 0.005) |
Pseudokode til omregning:
point = [x, y] offset = 0.005 BBOX = (point.x - offset), (point.y - offset), (point.x + offset), (point.y + offset) |
Brug offset på minimum ±1:
Hvis punkt er: 536116.33, 6169788.83 Vil BBOX være: 536115.33, 6169787.83, 536117.33, 6169789.83 |
Formel:
BBOX = minX, minY, maxX, maxY BBOX = (point_x - 1), (point_y - 1), (point_x + 1), (point_y + 1) |
Pseudokode til omregning:
point = [x, y] offset = 1 BBOX = (point.x - offset), (point.y - offset), (point.x + offset), (point.y + offset) |
Nuværende løsning (REST):
geop=POINT(10.50 57.32)|POINT(10.51 57.33)|POINT(10.52 57.34) |
Moderniseret løsning (WMS):
Du skal lave ét WMS-kald pr. punkt. Dette kan implementeres som en løkke i din kode:
List<Point> points = new List<Point>
{
new Point(10.50, 57.32),
new Point(10.51, 57.33),
new Point(10.52, 57.34)
};
foreach (Point point in points)
{
double smallValue = 0.005; // for EPSG:4326
string bbox = $"{point.X - smallValue},{point.Y - smallValue}," +
$"{point.X + smallValue},{point.Y + smallValue}";
// Kald WMS med denne BBOX
CallWmsService(bbox);
} |
Før (REST)
https://certservices.datafordeler.dk/DHMTerraen/DHMKoter/1.0.0/GEOREST/HentKoter ?elevationmodel=dtm &georef=EPSG:4326 &geop=POINT(55.67 11.67) &format=json &username=BRUGERNAVN &password=ADGANGSKODE |
Efter (WMS)
https://wms.datafordeler.dk/DHMNedboer/dhm/1.0.0/WMS ?SERVICE=WMS &VERSION=1.3.0 &REQUEST=GetFeatureInfo &BBOX=55.665,11.665,55.675,11.675 &CRS=EPSG:4326 &STYLES= &FORMAT=image/jpeg &Layers=dhm_terraen &query_layers=dhm_terraen &i=175 &j=175 &WIDTH=351 &HEIGHT=351 &info_format=text/plain &apikey=APIKEY |
Før (REST)
https://certservices.datafordeler.dk/DHMTerraen/DHMKoter/1.0.0/GEOREST/HentKoter ?elevationmodel=dtm &georef=EPSG:25832 &geop=POINT(536116.33 6169788.83) &format=json &username=BRUGERNAVN &password=ADGANGSKODE |
Efter (WMS)
https://wms.datafordeler.dk/DHMNedboer/dhm/1.0.0/WMS ?SERVICE=WMS &VERSION=1.3.0 &REQUEST=GetFeatureInfo &BBOX=536115.33,6169787.83,536117.33,6169789.83 &CRS=EPSG:25832 &STYLES= &FORMAT=image/jpeg &Layers=dhm_terraen &query_layers=dhm_terraen &i=175 &j=175 &WIDTH=351 &HEIGHT=351 &info_format=text/plain &apikey=APIKEY |
Før (REST)
https://certservices.datafordeler.dk/DHMTerraen/DHMKoter/1.0.0/GEOREST/HentKoter ?elevationmodel=dtm &georef=EPSG:4326 &geop=POINT(10.503724366666667 57.32618695666667)|POINT(10.503724366666667 57.32685362333333)|POINT(10.504391033333334 57.32618695666667) &username=BRUGERNAVN &password=ADGANGSKODE |
Efter (WMS – separate kald)
Kald 1:
https://wms.datafordeler.dk/DHMNedboer/dhm/1.0.0/WMS ?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo &BBOX=57.321186956666667,10.498724366666667,57.331186956666667,10.508724366666667 &CRS=EPSG:4326 &STYLES=&FORMAT=image/jpeg&Layers=dhm_terraen&query_layers=dhm_terraen &i=175&j=175&WIDTH=351&HEIGHT=351 &info_format=text/plain&apikey=APIKEY |
Kald 2:
https://wms.datafordeler.dk/DHMNedboer/dhm/1.0.0/WMS ?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo &BBOX=57.321853623333333,10.498724366666667,57.331853623333333,10.508724366666667 &CRS=EPSG:4326 &STYLES=&FORMAT=image/jpeg&Layers=dhm_terraen&query_layers=dhm_terraen &i=175&j=175&WIDTH=351&HEIGHT=351 &info_format=text/plain&apikey=APIKEY |
Kald 3:
https://wms.datafordeler.dk/DHMNedboer/dhm/1.0.0/WMS ?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo &BBOX=57.321186956666667,10.499391033333334,57.331186956666667,10.509391033333334 &CRS=EPSG:4326 &STYLES=&FORMAT=image/jpeg&Layers=dhm_terraen&query_layers=dhm_terraen &i=175&j=175&WIDTH=351&HEIGHT=351 &info_format=text/plain&apikey=APIKEY |