Sådan henter du et dansk ortofoto over WMS i EPSG:25832

Danmarks nationale ortofotos er gratis og landsdækkende. De ligger også bag en konto, en token og en OGC-tjeneste, hvor tre klassiske fejl hver især ligner »serveren er nede«. Her er vejen igennem, i den rækkefølge den virker.

Vi tilbyder ikke API'et i dag, og vi har ingen dato for det. Billederne henter og leverer vi som opgave — ring på +45 42 72 45 10.

Det du skal have på plads, før du skriver en linje kode

Opret en gratis konto på dataforsyningen.dk og lav en token i selvbetjeningen. Du kan have flere tokens, give dem navne og sætte en udløbsdato — brug det. En navngiven token pr. tjeneste betyder, at du kan spærre én ting uden at tage resten af huset ned med.

Token sendes enten som HTTP-headeren token, hvilket er det anbefalede, eller som &token= i URL'en. Headeren er at foretrække overalt hvor du selv styrer kaldet; URL-parameteren findes, fordi et kortbibliotek ikke altid kan sætte headers. Læg den aldrig i kode, der sendes til browseren.

Og så det vigtigste: HTTPS er et krav, TLS 1.2 som minimum. Almindelig HTTP bliver afvist — ikke omdirigeret. Et bibliotek, der plejer at følge et redirect for dig, redder dig ikke her, og fejlen ser ud som om tjenesten er nede.

Find det rigtige servicenavn — spørg tjenesten, ikke et blogindlæg

Tjenesterne ligger på https://api.dataforsyningen.dk/ efterfulgt af servicenavnet. Til ortofotos er de to, du skal bruge, forårsserien og sommerserien. Der findes desuden historiske serier og WMTS-varianter, hvoraf en er i Web Mercator.

Lagnavne og årgange ændrer sig over tid. Derfor begynder du med at læse capabilities i stedet for at gætte — det er ét kald, og det svarer på både lagnavne, understøttede koordinatsystemer, billedformater og dækning.

curl -H "token: DIN_TOKEN" \
  "https://api.dataforsyningen.dk/orto_foraar?service=WMS&request=GetCapabilities&version=1.3.0"

Kaldet, der giver dig et billede

Når du kender lagnavnet, er selve billedet ét GetMap-kald. Her i EPSG:25832, som er det koordinatsystem dataene er optaget i — og dermed det eneste, der ikke koster en gensampling.

curl -H "token: DIN_TOKEN" -o ortofoto.jpg \
  "https://api.dataforsyningen.dk/orto_foraar?service=WMS&version=1.3.0&request=GetMap\
&layers=orto_foraar&styles=&crs=EPSG:25832\
&bbox=725000,6175000,725128,6175128\
&width=1024&height=1024&format=image/jpeg"

Bbox'en ovenfor er et kvadrat på 128 × 128 meter midt i København, så du kan se med det samme, om du fik det rigtige sted. Og regn opløsningen ud i stedet for at håbe på den: 128 meter gengivet i 1024 px giver 12,5 cm pr. pixel. Beder du om 500 meter i de samme 1024 px, får du 49 cm pr. pixel og et billede, der ser sløret ud — ikke fordi dataene er dårlige, men fordi du bad om det.

De tre fejl, der ligner en serverfejl

Billedet er tomt, eller viser et sted i Østersøen

Akserækkefølge. WMS 1.3.0 følger koordinatsystemets egen rækkefølge. For EPSG:25832 er det øst, nord — altså som du selv ville skrive det, og derfor er der ingen fælde her. Fælden er EPSG:4326: i WMS 1.1.1 skrives bbox som længde,bredde, i 1.3.0 som bredde,længde. Bytter du rundt, får du ikke en fejl. Du får et gyldigt billede af et forkert sted.

Det er den bedste praktiske grund til at blive i 25832, så længe du arbejder med danske data.

Forbindelsen afvises, og der sker ingenting

Du kalder over HTTP. Det bliver afvist, ikke omdirigeret, og en klient der normalt håndterer det for dig gør det ikke her. Tjek også at din token står i headeren token og ikke i et felt, du har fundet på selv.

Billedet er helt gråt, eller uendeligt lille

Bbox i grader mod et projiceret koordinatsystem. 0,001 grad er omkring 100 meter i 4326 og omkring 1 millimeter i 25832. Enheden i EPSG:25832 er meter — ikke grader, og ikke kilometer.

Forår eller sommer: vælg serien bevidst

Forårsserien flyves uden løv, typisk fra begyndelsen af marts til begyndelsen af maj, og udkommer hen over maj–juni. Den er den rigtige til tagflader, terræn, befæstede arealer og afvanding, fordi ingenting er gemt under en trækrone.

Sommerserien har løv på. Den er den rigtige, når det netop er vegetationens tilstand, du er ude efter — og den forkerte til alt, der ligger under et træ.

Begge serier flyves én gang om året. Når næste serie udkommer, kan den foregående derfor være op mod fjorten måneder gammel. Skriv altid ned, hvilken serie og hvilket år dit resultat bygger på. Det er den oplysning, du kommer til at mangle, når nogen om et halvt år spørger, hvorfor carporten ikke er med.

Kildeangivelse er et vilkår, ikke en venlighed

Dataene er frit tilgængelige under CC BY 4.0, og den licens kræver kildeangivelse, dér hvor billedet vises. Den tekst, vi selv bruger, står nederst på hver side her — og den samme tekst bør stå i dit produkt.

Licensen giver dig til gengæld lov til langt mere, end folk regner med: du må bruge dataene kommercielt, ændre dem og videregive dem. Du må bare ikke give indtryk af, at Klimadatastyrelsen eller GeoDanmark står bag dit produkt. Det gør de ikke, og det gør de heller ikke bag vores.

Når du ikke gider gøre det selv

Alt ovenstående er arbejde, der skal gøres én gang og derefter vedligeholdes: token, fornyelse, lagnavne der ændrer sig mellem årgange, caching, og en tjeneste uden driftsgaranti. Det er præcis det stykke, vores API fjerner — samme billede, ét kald, ingen token hos Dataforsyningen, og kildeangivelsen leveret med i svaret.

Skal du bruge ét ortofoto over én adresse én gang, så brug fremgangsmåden ovenfor. Den er gratis, og den er bygget til netop det.

Kilder og videre læsning

Ring på +45 42 72 45 10 Skriv dig op, hvis vi åbner API'et Se de andre artikler

De nationale ortofotos er gratis offentligt data — vi tager kun betaling for at hente dem og for en flyvning. Skal billederne bare leveres, så ringer du bare.