---
title: Attribution & Lizenz-Compliance
summary: Wann du Lodapi-Quellen sichtbar nennen musst — und wie du den attribution[]-Block ins Frontend bringst.
---
# Attribution & Lizenz-Compliance

Open Data heißt nicht „ohne Pflichten". Die Daten hinter Lodapi sind frei nutzbar — aber je nach Lizenz musst du die Quelle sichtbar nennen. Lodapi nimmt dir die 16 Behörden-Lizenzdialekte ab und normalisiert sie auf drei Familien. Die **Anzeigepflicht im Frontend** bleibt aber bei dir, dem Konsumenten.

## Warum überhaupt

In Deutschland kommen die LoD2- und DGM1-Daten unter drei Lizenzfamilien:

| Lizenz | Attributionspflicht |
|---|---|
| **DL-DE/Zero 2.0** | **Keine** — nutzbar ohne Quellenangabe (Nennung trotzdem empfohlen). |
| **DL-DE BY 2.0** | **Ja** — Quellenangabe Pflicht. |
| **CC BY 4.0** | **Ja** — Quellenangabe Pflicht. |

Welche Familie für ein Bundesland gilt, entscheidet die jeweilige Geobasis-Stelle, nicht Lodapi. Du musst das nicht pro Behörde nachschlagen — die API sagt es dir pro Antwort.

## Der `lodapi.attribution[]`-Block

Jede attributionsrelevante Response trägt top-level ein `lodapi`-Objekt mit `attribution[]`. Betroffen sind u.a. `/v1/buildings`, `/v1/tilesets` und `/v1/buildings/{gmlid}/roof`. Jeder Array-Eintrag steht für ein Bundesland, das in der Antwort vorkommt:

```json
{
  "lodapi": {
    "attribution": [
      {
        "source": "HLBG",
        "license": "DL-DE/Zero 2.0",
        "url": "https://www.govdata.de/dl-de/zero-2-0",
        "tiles_count": 1
      }
    ]
  }
}
```

Felder:

| Feld | Bedeutung |
|---|---|
| `source` | Behörden-/Geobasis-Stelle (z.B. `"HLBG"`, `"BezReg Köln"`). Das ist der String, den du anzeigst. |
| `license` | Klartext der Lizenz: `DL-DE/Zero 2.0`, `DL-DE BY 2.0` oder `CC BY 4.0`. |
| `url` | Lizenz-URL zum Verlinken im UI. |
| `tiles_count` | Anzahl beteiligter Tiles (bei `/v1/tilesets` aussagekräftig; bei `/v1/buildings` immer `1`). |

## Die Pflicht-Regel

> Ist `license != "DL-DE/Zero 2.0"`, **MUSS** der `source`-String sichtbar im Frontend stehen — typischerweise im Map-Footer oder als Credit-Zeile.

Bei `DL-DE/Zero 2.0` ist die Nennung **optional**, aber empfohlen. Die einfachste sichere Strategie: immer alle `source`-Strings anzeigen, dann liegst du bei jeder Lizenz richtig.

## Code-Snippets

### 1. Generisch (Vanilla JS) — Footer rendern

```js
const res = await fetch("https://api.lodapi.de/v1/buildings?bbox=8.66,50.108,8.665,50.111");
const data = await res.json();

const attrs = data.lodapi?.attribution ?? [];

// Pflicht: alles außer DL-DE/Zero anzeigen. Hier zeigen wir der Einfachheit halber alles.
const credits = attrs.map(a =>
  `<a href="${a.url}" target="_blank" rel="noopener">© ${a.source} (${a.license})</a>`
);

document.getElementById("map-credit").innerHTML =
  "Daten: " + credits.join(" · ");
```

### 2. CesiumJS — Credits in der Toolbar

```ts
const data = await (await fetch(
  `https://api.lodapi.de/v1/tilesets?bbox=${bbox}`
)).json();

for (const a of data.lodapi.attribution) {
  viewer.scene.creditDisplay.addStaticCredit(
    new Cesium.Credit(`${a.source} (${a.license})`, true)
  );
}
```

### 3. Statischer Footer-String-Builder

```js
function buildAttributionLine(attribution) {
  // Dedupe nach source (mehrere Tiles derselben Behörde).
  const seen = new Set();
  const parts = [];
  for (const a of attribution) {
    if (seen.has(a.source)) continue;
    seen.add(a.source);
    parts.push(`© ${a.source} (${a.license})`);
  }
  return "Daten: " + parts.join(" · ");
}
// → "Daten: © HLBG (DL-DE/Zero 2.0) · © BezReg Köln (DL-DE BY 2.0)"
```

## Terrain: Attribution als String

Die Terrain-Endpoints `/v1/terrain/elevation` und `/v1/terrain/profile` liefern ein **einzelnes** Feld `attribution` als **String** (nicht als Array), weil eine Höhenkote bzw. ein Profil aus genau einer Quelle stammt:

```json
{ "attribution": "© SenStadt Berlin (DL-DE/Zero 2.0)" }
```

Den String kannst du direkt anzeigen — er enthält Quelle und Lizenz bereits formatiert.

## Bezug

- [Quickstart](./quickstart.md) — Erste Calls, inklusive Lizenz-Hinweis.
- [Lodapi mit CesiumJS](./using-with-cesium.md) — Credit-Display in der Praxis.
- Endpoint-Details: `/v1/buildings`, `/v1/tilesets` und `/v1/buildings/{gmlid}/roof` in der [API-Referenz](/docs/endpoints).