# Binden Sie Ihre Daten an die Datenkarte an {#pripojte-sva-data-do-datovemapy}

Die Datenkarte ist ein offenes Portal, das Daten aus vielen Quellen in einer gemeinsamen Karte darstellt. Um Karte, Stile oder Kartenserver müssen Sie sich nicht kümmern. Es genügt, ein **Manifest** (die Beschreibung Ihrer Daten) und die **Daten als GeoJSON** zu veröffentlichen. Das Portal fragt die Daten in dem Moment ab, in dem jemand sie einschaltet, stellt sie gemäß Ihrer Beschreibung dar und nennt Sie als Quelle.

> **Bereitet ein KI-Agent die Daten auf?** Geben Sie ihm den Link zur [Anleitung für KI-Agenten](https://datenkarte.at/dokumentation/fuer-ki-agenten.md). Sie enthält ein schrittweises Vorgehen, Codevorlagen und Abnahmekriterien. Die gesamte Dokumentation ist maschinenlesbar: [llms.txt](https://datenkarte.at/llms.txt), [MCP-Server](https://datenkarte.at/dokumentation/api.md#mcp-server), [Validator](https://datenkarte.at/dokumentation/api.md#validator).

## Drei Arten der Anbindung {#tri-zpusoby-pripojeni}

| Art | Wann | Was Sie brauchen |
|---|---|---|
| **Statische Dateien** | bis etwa 2 000 Objekte, Daten ändern sich gelegentlich | `manifest.json` + `data.geojson` auf einer beliebigen Website (auch GitHub Pages) |
| **Eigener Endpunkt** | große oder Live-Datensätze | HTTP-GET-Endpunkt, der nach dem Kartenausschnitt (`bbox`) filtert |
| **Bestehende WMS / Kacheln** | Sie betreiben einen Kartenserver | nur ein Manifest mit einer Quelle vom Typ `raster` |

## 1. Manifest {#1-manifest}

Ein JSON, das Sie und Ihre Datensätze beschreibt. Verpflichtend ist nur das Minimum: `protocol`, `provider.id`, `provider.name` und bei jedem Datensatz `id`, `title`, `source` und `presentation`. Alles Weitere ist optional, hilft aber Menschen wie auch dem KI-Assistenten des Portals, die Daten zu finden und zu verstehen (`description`, `keywords`, `useCases`, `fields`).

Das kleinste sinnvolle Manifest (statische Dateien, eine relative URL wird von der Adresse des Manifests aus aufgelöst):

```json manifest
{
  "protocol": "0.1",
  "provider": { "id": "gemeinde-beispiel", "name": "Gemeinde Beispiel", "homepage": "https://www.gemeinde-beispiel.at/" },
  "license": { "name": "CC BY 4.0", "attribution": "© Gemeinde Beispiel" },
  "datasets": [
    {
      "id": "lavicky",
      "title": "Sitzbänke in der Gemeinde",
      "description": "Öffentliche Sitzbänke, die von der Gemeinde betreut werden.",
      "category": "society",
      "keywords": ["Bank", "Sitzbank", "Rastplatz", "Park"],
      "useCases": ["tourism"],
      "source": { "type": "geojson", "url": "lavicky.geojson", "mode": "full" },
      "presentation": { "type": "circle", "color": "#0d9488" },
      "fields": [{ "key": "umisteni", "label": "Standort", "primary": true }]
    }
  ]
}
```

Ein vollständiges Beispiel mit allen Möglichkeiten (Filter, Farben nach Werten, Gruppierung, Choroplethenkarte, WMS): [manifest-complete.json](https://datenkarte.at/beispiele/manifest-complete.json).

## 2. Daten {#2-data}

Die Antwort ist eine GeoJSON-`FeatureCollection` mit Koordinaten in WGS84 in der Reihenfolge `[lon, lat]`. Das Element `dm` ist optional: Überschrift und Link beim Objekt, Gesamtzahl der Objekte, Gültigkeit der Antwort.

```json data
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": 1842,
      "geometry": { "type": "Point", "coordinates": [14.2858, 48.3064] },
      "properties": { "druh": "papier", "vyvoz": "2026-10-01" },
      "dm": { "title": "Container Hauptplatz", "url": "https://www.stadt-beispiel.at/abfall/1842" }
    }
  ],
  "dm": { "total": 1, "ttl": 3600 }
}
```

### Wie das Portal abfragt {#jak-se-portal-pta}

Modus `full` – der ganze Datensatz mit einer Abfrage. Modus `bbox` – das Portal sendet den an Kacheln ausgerichteten Kartenausschnitt und die Zoomstufe, dazu die vom Nutzer gesetzten Filter:

```http
GET https://data.stadt-beispiel.at/datenkarte/kontejnery?bbox=14.238281,48.224673,14.414063,48.341646&zoom=11&limit=5000&lang=de&protocol=0.1&druh=papier,plast
Accept: application/geo+json, application/json
User-Agent: DatovaMapa/0.1 (+https://datenkarte.at/dokumentation/fuer-datenanbieter)
```

Geben Sie höchstens `limit` Objekte zurück (max. 5 000). Setzen Sie bei großen Datensätzen `coverage.minZoom` oder liefern Sie bei geringer Zoomstufe aggregierte Daten.

## 3. Visualisierung {#3-vizualizace}

| `presentation.type` | Geometrie | Typische Verwendung |
|---|---|---|
| `circle` | Punkte | Orte, Farbe nach Kategorie, Größe nach Wert, Gruppierung |
| `heatmap` | Punkte | Dichte des Vorkommens, optional nach Wert gewichtet |
| `line` | Linien | Routen, Netze, Fließgewässer |
| `fill` | Flächen | Gebiete, Choroplethenkarte nach Wert |
| `raster` | Kacheln | fertige Kartenebenen (WMS, XYZ); die Legende geben Sie in `legend` an |
| `auto` | beliebig | Standarddarstellung |

Farben werden immer hexadezimal angegeben. Die Farbe kann von einer Eigenschaft des Objekts abhängen – nach Kategorie (`categorical`), stufenlos (`interpolate`) oder in Intervallen (`step`). Einzelheiten im [Protokoll](https://datenkarte.at/dokumentation/protokoll.md#presentation). Weitere Typen kommen hinzu; einen Typ, den das Portal nicht kennt, stellt es als `auto` dar.

Daten, deren Wert sich im Zeitverlauf ändert (Einwohnerzahl, Preise, Messungen), haben im Standard eine eigene Darstellung: Senden Sie bei jedem Objekt die Wertereihe in `dm.chart`, und das Portal zeigt sie als Diagramm im Detail. Geht es vor allem darum, ob ein Wert steigt oder sinkt, setzen Sie `color: { "type": "trend" }` – das Portal färbt die Objekte anhand des Diagramms selbst grün, grau und rot und ergänzt die Legende. Einzelheiten im [Protokoll](https://datenkarte.at/dokumentation/protokoll.md#vyvoj-v-case-a-trend).

## 4. Prüfung {#4-overeni}

Bevor Sie das Manifest einreichen, lassen Sie es vom Validator prüfen. Er liefert Fehler und Empfehlungen mit stabilen Codes und Hinweisen zur Behebung:

```bash
curl -X POST https://datenkarte.at/api/validate -H 'Content-Type: application/json' --data @manifest.json
curl 'https://datenkarte.at/api/validate?manifestUrl=https://data.stadt-beispiel.at/datenkarte/manifest.json'
```

Der zweite Befehl führt einen Live-Test durch: Er lädt das Manifest herunter und sendet an jeden Datensatz dieselbe Abfrage, die auch das Portal senden würde.

## 5. Registrierung {#5-registrace}

Sobald der Validator `"valid": true` meldet, registrieren Sie die URL des Manifests unter [datenkarte.at/registrierung](https://datenkarte.at/registrierung), über die API oder das MCP-Werkzeug `register_provider`:

```bash
curl -X POST https://datenkarte.at/api/registration -H 'Content-Type: application/json' --data '{"manifestUrl": "https://data.stadt-beispiel.at/datenkarte/manifest.json"}'
```

Das Portal prüft das Manifest erneut mit einem Live-Test. Danach gilt:

- **Die Daten sind sofort verfügbar, aber ungeprüft.** Jeder Datensatz hat seine Seite `/karte/{provider}/{dataset}`. Vor der Anzeige der Daten erscheint dort eine Warnung, dass die Daten von Dritten hochgeladen wurden und der Betreiber sie noch nicht geprüft hat. Die Daten werden erst nach Bestätigung durch die Nutzerin oder den Nutzer geladen. Die Seite ist von Suchmaschinen ausgeschlossen. Eine Übersicht finden Sie unter [ungeprüfte Daten](https://datenkarte.at/ungepruefte-daten).
- **Nach der Freigabe durch den Betreiber** erscheinen die Daten im [Katalog](https://datenkarte.at/quellen.md), in der Suche und auf den Seiten der Gemeinden.
- **Die Freigabe gilt für einen bestimmten Inhalt des Manifests.** Ändern Sie das Manifest, werden die Daten bis zur erneuten Freigabe wieder nur mit Warnung angezeigt. Die Daten selbst (GeoJSON) können Sie laufend ändern.
- `provider.id` ist mit der ersten Registrierung vergeben. Ändern Sie weder sie noch die URL des Manifests.

Mit der Registrierung bestätigen Sie, dass Sie die Daten unter der angegebenen Lizenz veröffentlichen dürfen und dass sie keine personenbezogenen Daten enthalten. Der Betreiber kann die Registrierung jederzeit ablehnen; die Daten verschwinden dann aus dem Portal.

## Cache und Bedingungen {#cache-a-podminky}

- Antworten halten wir für die Dauer von `cache.ttl` (standardmäßig 5 Minuten) im Cache, damit Ihr Server nicht durch wiederholte Abfragen belastet wird. Bei einem Ausfall können wir kurzzeitig die zuletzt bekannten Daten mit einem Hinweis anzeigen.
- Im Interesse der Geschwindigkeit, der Schonung Ihrer Ressourcen, der Nachhaltigkeit, der Verknüpfung von Zusammenhängen zwischen Quellen und der Arbeit mit großen Datenmengen können wir die Daten auch in einer eigenen Datenschicht speichern. Wenn Sie das nicht möchten, setzen Sie beim Datensatz `cache.store: false`.
- Wir nennen Sie immer als Quelle gemäß den Angaben in der Lizenz des Manifests.
- Wir fragen Daten nur bei registrierten Anbietern ab, mit einem Zeitlimit von 10 s und einer Größenbeschränkung der Antwort von 15 MB.
- Veröffentlichen Sie keine personenbezogenen Daten. Für den Inhalt der Daten ist der Anbieter verantwortlich.

## Links {#odkazy}

- [Protokoll 0.1 – vollständige Spezifikation](https://datenkarte.at/dokumentation/protokoll.md)
- [Anleitung für KI-Agenten](https://datenkarte.at/dokumentation/fuer-ki-agenten.md)
- [API des Portals, Validator und MCP-Server](https://datenkarte.at/dokumentation/api.md)
- [JSON Schema des Manifests](https://datenkarte.at/schema/0.1/manifest.json) · [JSON Schema der Daten](https://datenkarte.at/schema/0.1/data.json) · [OpenAPI-Vertrag für Anbieter](https://datenkarte.at/schema/0.1/provider-openapi.json)
- Referenzimplementierung (erfundene Daten, nicht im Katalog des Portals): [Manifest](https://datenkarte.at/api/sample/manifest), [Daten](https://datenkarte.at/api/sample/krajska-mesta)
