# Hent et terrænprofil

`GET /v1/dhm/profil` · DHM

Terrænet langs en ret linje mellem to punkter, med faldet over linjen i meter.

Linjen samples for hver `trin` meter fra `fra` mod `til`, og begge endepunkter er altid med — også når linjen ikke går op i et helt antal trin. Den sidste station ligger så tættere på sin nabo; `afstand_m` viser det. Afstande måles i EPSG:25832, altså i rigtige meter.

`fald_m` er forskellen mellem højeste og laveste terrænkote på linjen — typisk faldet fra vej til skel, som en skrå højdegrænseplan efter BR18 § 177 regnes ud fra. Svaret angiver faldet, ikke om et projekt overholder reglerne; den vurdering er din og kommunens.

Linjen må højst være 2000 m lang og give højst 500 stationer; en længere linje afvises med en 400, der nævner længden og grænsen. Del en længere strækning op i flere profiler.

Hele linjen læses fra ét højderaster, ikke ét opslag pr. station. På linjer over ca. 240 m kan rasteret være læst med en grovere celle end 0,4 m; `oploesning_m` siger, hvilken.

**Godkendelse:** `Authorization: Bearer gf_live_…` (eller `gf_test_…`)

**Afregning:** Én enhed pr. returneret station — samme pris som at slå koterne op én ad gangen.

## Parametre

| Navn | Placering | Type | Påkrævet | Beskrivelse |
| --- | --- | --- | --- | --- |
| `fra` | query | string | ja | Linjens startpunkt som `lon,lat` i WGS84-decimalgrader. |
| `til` | query | string | ja | Linjens slutpunkt som `lon,lat` i WGS84-decimalgrader. |
| `trin` | query | number | nej | Afstanden mellem stationer i meter. Mindst 0,4 (modellens cellestørrelse), og stort nok til at profilet holder sig under 500 stationer. |

## Eksempel

```bash
curl "https://api.grundfast.dk/v1/dhm/profil?fra=9.9147,56.031834&til=9.91534,56.031834&trin=10" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY"
```

## Svar (200)

```json
{
  "fra": {
    "lon": 9.9147,
    "lat": 56.031834
  },
  "til": {
    "lon": 9.91534,
    "lat": 56.031834
  },
  "laengde_m": 39.88,
  "trin_m": 10,
  "punkter": [
    {
      "afstand_m": 0,
      "lon": 9.9147,
      "lat": 56.031834,
      "terraen_m": 23.9
    },
    {
      "afstand_m": 10,
      "lon": 9.9148605,
      "lat": 56.031834,
      "terraen_m": 24.55
    },
    {
      "afstand_m": 20,
      "lon": 9.9150209,
      "lat": 56.031834,
      "terraen_m": 24.52
    },
    {
      "afstand_m": 30,
      "lon": 9.9151814,
      "lat": 56.031834,
      "terraen_m": 24.31
    },
    {
      "afstand_m": 39.88,
      "lon": 9.91534,
      "lat": 56.031834,
      "terraen_m": 23.9
    }
  ],
  "terraen_min_m": 23.9,
  "terraen_maks_m": 24.55,
  "fald_m": 0.65,
  "system": "DVR90",
  "system_epsg": 5799,
  "oploesning_m": 0.4,
  "metode": "naermeste_celle",
  "usikkerhed_m": 0.05,
  "meta": {
    "kilde": "Dataforsyningen DHM via Grundfast",
    "grundfast_version": "0.1.0"
  }
}
```

## Vigtige felter

| Felt | Type | Betydning |
| --- | --- | --- |
| `laengde_m` | number | Linjens længde i meter, målt i EPSG:25832. |
| `punkter[]` | { afstand_m, lon, lat, terraen_m } | Stationerne i rækkefølge fra `fra`. `terraen_m` er i meter DVR90, eller `null` hvor modellen ingen data har. |
| `fald_m` | number \| null | `terraen_maks_m − terraen_min_m`. `null`, når ingen station havde data. |
| `trin_m` | number | Den stationsafstand, der blev brugt. |
| `oploesning_m` | number | Den rastercelle, koterne er læst fra. |

## Fejl

| Status | Betydning |
| --- | --- |
| 400 | `fra` eller `til` er ikke `lon,lat` eller ligger uden for Danmark, punkterne er ens, linjen er over 2000 m, `trin` er under 0,4, eller profilet ville få over 500 stationer. |
| 401 | Nøglen mangler eller er ugyldig. |
| 429 | Burst-grænsen eller månedskvoten er nået. Se `Retry-After`. |
| 502 | Højdemodellen kunne ikke nås. |
| 503 | DHM-kilden er ikke konfigureret i dette miljø. |
