# Hent bygningshøjder

`GET /v1/dhm/bygninger/:bfe` · DHM

Den målte højde og tagform for hver bygning på en ejendom, målt inden for bygningens GeoDanmark-omrids.

Bygningerne er de samme GeoDanmark-omrids, som `/v1/geodanmark/bygninger/:bfe` returnerer. Højden måles fra højdemodellens celler **inden for** omridset: `tag_m` er 95-percentilen af overfladen (så et træ, der hænger ind over, ikke bliver til tag), `terraen_m` er medianen af terrænet, og `hoejde_m` er forskellen. Alle koter er i DVR90.

Intet tal er afledt af BBR’s etageantal. En bygning har enten en måling eller `hoejde_m: null` med en `aarsag`, fx `ingen_geometri` (intet omrids i GeoDanmark) eller `upstream_fejl`. `ufuldstaendig: true` betyder, at mindst én bygning mangler en måling.

`tag` er en tagflade tilpasset de samme celler: form (`fladt`, `ensidig`, `saddeltag` eller `valm`), kipretning, hældning og tagfod. Kan formen ikke bestemmes sikkert, er `tagform` `null` med en `aarsag`. `konfidens` er en heuristisk score fra 0 til 1, ikke en sandsynlighed.

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

**Afregning:** Ét kald, uanset antallet af bygninger.

## Parametre

| Navn | Placering | Type | Påkrævet | Beskrivelse |
| --- | --- | --- | --- | --- |
| `bfe` | path | integer | ja | BFE-nummeret (Bestemt Fast Ejendom) — ejendommens nøgle på tværs af BBR, Matriklen og vurderingen. |

## Eksempel

```bash
curl "https://api.grundfast.dk/v1/dhm/bygninger/5651067" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY"
```

## Svar (200)

```json
{
  "bfe_nummer": 5651067,
  "system": "DVR90",
  "metode": {
    "tag": "p95",
    "terraen": "median",
    "hoejde": "tag_m - terraen_m",
    "tagflade": "ransac_planfit"
  },
  "antal": 2,
  "bygninger": [
    {
      "bbr_uuid": "0a3f509b-1c2d-32b8-e044-0003ba298018",
      "hoejde_m": 8.62,
      "hoejde_maalt": true,
      "hoejde_kilde": "DHM",
      "tag_m": 21.84,
      "tag_middel_m": 19.7,
      "terraen_m": 13.22,
      "terraen_min_m": 13.05,
      "terraen_max_m": 13.41,
      "antal_celler": 912,
      "celle_m": 0.4,
      "aarsag": null,
      "tag": {
        "tagform": "saddeltag",
        "kip_retning_grader": 88.4,
        "fald_retning_grader": 178.9,
        "haeldning_grader": 38.6,
        "tagfod_m": 3.9,
        "konfidens": 0.87,
        "antal_celler": 804,
        "aarsag": null
      }
    },
    {
      "bbr_uuid": "0a3f509b-1c2d-32b8-e044-0003ba298019",
      "hoejde_m": 2.71,
      "hoejde_maalt": true,
      "hoejde_kilde": "DHM",
      "tag_m": 15.98,
      "tag_middel_m": 15.83,
      "terraen_m": 13.27,
      "terraen_min_m": 13.19,
      "terraen_max_m": 13.34,
      "antal_celler": 21,
      "celle_m": 0.4,
      "aarsag": null,
      "tag": {
        "tagform": null,
        "kip_retning_grader": null,
        "fald_retning_grader": null,
        "haeldning_grader": null,
        "tagfod_m": null,
        "konfidens": 0,
        "antal_celler": 0,
        "aarsag": "for_faa_celler"
      }
    }
  ],
  "ufuldstaendig": false,
  "attribution": "@geodanmark",
  "meta": {
    "kilde": "Dataforsyningen DHM + GeoDanmark via Grundfast",
    "grundfast_version": "0.1.0"
  }
}
```

## Vigtige felter

| Felt | Type | Betydning |
| --- | --- | --- |
| `bygninger[].hoejde_m` | number \| null | Bygningens højde over terræn i meter (`tag_m − terraen_m`). `null` når den ikke kunne måles — aldrig 0. |
| `bygninger[].aarsag` | string \| null | Hvorfor `hoejde_m` er `null`: `ingen_geometri`, `ingen_data`, `upstream_fejl`, `uden_for_budget` eller `negativ_hoejde`. |
| `bygninger[].terraen_min_m / terraen_max_m` | number \| null | Laveste og højeste terrænkote under omridset — faldet under bygningen. |
| `bygninger[].tag.tagform` | string \| null | Den målte tagform, eller `null` med `tag.aarsag`, når målingen ikke bærer en form. |
| `bygninger[].tag.haeldning_grader` | number \| null | Taghældning i grader fra vandret, som et gennemsnit over de flader, der definerer formen. |
| `ufuldstaendig` | boolean | Sand, når mindst én bygning mangler en målt højde. Se `aarsag` pr. bygning. |
| `attribution` | string | Kreditering for GeoDanmark-omridsene (CC BY 4.0). Vis den, hvor omridsene tegnes. |

## Fejl

| Status | Betydning |
| --- | --- |
| 400 | BFE-nummeret er ikke et positivt heltal. |
| 401 | Nøglen mangler eller er ugyldig. |
| 404 | BFE-nummeret findes ikke i BBR. |
| 429 | Burst-grænsen eller månedskvoten er nået. Se `Retry-After`. |
| 502 | GeoDanmark-omridsene kunne ikke hentes, eller højdemodellen kunne ikke nås for nogen af bygningerne. En delvis fejl er en 200 med `aarsag: "upstream_fejl"` på de berørte bygninger. |
| 503 | DHM- eller GeoDanmark-kilden er ikke konfigureret i dette miljø. |
