# Hent et terrængrid

`GET /v1/dhm/terraen` · DHM

Et regelmæssigt net af terrænkoter over et rektangel i EPSG:25832 — det terræn, en 3D-situationsplan står på.

`bbox` angives i EPSG:25832-meter, højdemodellens eget koordinatsystem — ikke i WGS84-grader. Koterne samples for hver `trin` meter, og nettet går altid helt ud til bboxens kant: den sidste række og kolonne kan ligge lidt uden for.

Rasteret hentes altid i modellens egen opløsning på 0,4 m, og hver prøve er den celle, punktet falder i. En kote her er derfor samme tal, som `/v1/dhm/kote` giver for samme koordinat. `celle_m` er afstanden mellem prøverne; `oploesning_m` er cellen, de er læst fra.

`koter` er række for række: rækkerne går fra nord mod syd og kolonnerne fra vest mod øst. Indeks `r * kolonner + c` ligger i `[oprindelse[0] + c * celle_m, oprindelse[1] - r * celle_m]`, hvor `oprindelse` er den nordvestligste prøve. En celle uden data er `null`, aldrig 0.

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

**Afregning:** Ét kald for hele griddet, uanset hvor mange koter det indeholder.

## Parametre

| Navn | Placering | Type | Påkrævet | Beskrivelse |
| --- | --- | --- | --- | --- |
| `bbox` | query | string | ja | `minx,miny,maxx,maxy` i EPSG:25832-meter. Højst 240 m på hver led og inden for Danmark. |
| `trin` | query | number | nej | Afstanden mellem prøverne i meter. Mindst 0,4 (modellens cellestørrelse), og stort nok til at holde griddet under 100.000 koter. |

## Eksempel

```bash
curl "https://api.grundfast.dk/v1/dhm/terraen?bbox=574700,6224250,574800,6224350&trin=50" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY"
```

## Svar (200)

```json
{
  "bbox": [
    574700,
    6224250,
    574800,
    6224350
  ],
  "epsg": 25832,
  "celle_m": 50,
  "kolonner": 3,
  "raekker": 3,
  "oprindelse": [
    574700,
    6224350
  ],
  "koter": [
    31.42,
    30.87,
    29.95,
    30.12,
    29.6,
    28.81,
    28.9,
    28.37,
    27.74
  ],
  "mangler": 0,
  "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 |
| --- | --- | --- |
| `koter` | (number \| null)[] | `kolonner * raekker` terrænkoter i meter DVR90, række for række fra nord. `null` hvor modellen ingen data har. |
| `oprindelse` | [number, number] | EPSG:25832-koordinaten for prøve 0 — den nordvestligste, ikke et cellehjørne. |
| `kolonner / raekker` | integer | Griddets bredde og højde i antal prøver. |
| `celle_m` | number | Afstanden mellem nabo-prøver i meter — den `trin`, du bad om. |
| `mangler` | integer | Antal `null` i `koter`. `0` betyder, at griddet er komplet. |

## Fejl

| Status | Betydning |
| --- | --- |
| 400 | `bbox` er ikke fire tal, har min ≥ maks, ligger uden for Danmark i EPSG:25832 (typisk fordi den er sendt i WGS84-grader) eller er over 240 m på en led; eller `trin` er under 0,4 eller giver over 100.000 koter. Fejlen nævner grænsen. |
| 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ø. |

> En for stor bbox eller et for fint `trin` afvises med en 400 — svaret bliver aldrig stille gjort grovere. Større områder hentes i flere fliser.
