Was dieser Viewer macht
Viele Ortsdaten kommen nie als GIS-Datei an. Sie kommen als normales JSON: die Antwort einer Wetter-API, eine Filialliste aus einem Store-Locator, ein Export aus einer Liefer-App oder eine Datei, die Ihnen ein Entwickler schickt. Jeder Datensatz hat irgendwo einen Breiten- und einen Längengrad, aber ein Kartenprogramm, das GeoJSON erwartet, kann ihn nicht lesen, und in einer Tabellenkalkulation geht die verschachtelte Struktur verloren.
Dieser Viewer liest das JSON so, wie es ist. Er durchsucht das ganze Dokument nach Listen von Datensätzen, macht aus verschachtelten Objekten Feldnamen wie `location.lat` und erkennt die üblichen Namen für Breite und Länge, außerdem einzelne Felder mit beiden Werten, etwa Arrays `[lng, lat]` oder Texte `"lat, lng"`. Jeder Datensatz mit gültigen Koordinaten erscheint auf der Karte. Die Seitenleiste zeigt, wie viele Datensätze keine Koordinaten oder Werte außerhalb des gültigen Bereichs hatten, und warnt Sie, wenn Breite und Länge vertauscht aussehen.
Ich habe ihn für den Moment gebaut, in dem Ihnen jemand eine JSON-Datei schickt und fragt: „Wo liegen die?“. Sie prüfen die Daten in Sekunden, färben die Punkte nach einem beliebigen Feld, klicken auf einen Punkt, um den ganzen Datensatz zu lesen, und laden das Ergebnis als GeoJSON für ein GIS oder als CSV für eine Tabelle herunter. Die Datei wird in Ihrem Browser gelesen und nie hochgeladen.
Welche JSON-Formen der Viewer versteht
Echtes JSON hat viele Formen. Diese liest der Viewer ohne jede Einstellung. In jedem Fall zeigt er die gefundene Liste der Datensätze, und wenn die Datei mehrere hat, können Sie eine andere wählen.
[{ "name": "Berlin", "lat": 52.52, "lng": 13.405 }]lat und lng werden über den Namen gefunden.{ "data": { "cities": [{ "name": "Paris", "latitude": 48.8566, "longitude": 2.3522 }] } }data.cities. Weitere Listen in derselben Datei erscheinen im Menü „List of records“.[{ "name": "Rome", "location": { "lat": 41.9028, "lon": 12.4964 } }]location.lat und location.lon. Breite und Länge mit demselben Elternobjekt werden bevorzugt.[{ "id": 7, "coordinates": [2.1686, 41.3874] }]coordinates wird als [Länge, Breite] gelesen, die Reihenfolge von GeoJSON. Bei anderen Namen entscheiden die Wertebereiche über die Reihenfolge.[{ "stop": "Central", "latlng": "59.3293, 18.0686" }]{ "BER": { "lat": 52.52, "lng": 13.405 }, "PAR": { "lat": 48.86, "lng": 2.35 } }_key erhalten.{"lat": 38.72, "lng": -9.14}
{"lat": 41.16, "lng": -8.63}Zahlen als Text, etwa "52.52", und Zahlen mit Komma als Dezimalzeichen, etwa "52,52", werden ebenfalls gelesen. Arrays in einem Datensatz, etwa eine Liste von Schlagwörtern, bleiben im Popup und im Export als JSON-Text erhalten.
Welche Feldnamen erkannt werden
Der Viewer vergleicht den letzten Teil jedes Feldnamens, `lat`, `location.lat` und `data.geo.lat` zählen also alle. Groß- und Kleinschreibung spielt keine Rolle. Passt nichts, wählen Sie die Felder selbst im Bereich Coordinates.
- Breite
lat,latitude,lat_dd,y,ycoord,point_y,decimalLatitude,gps_lat,geo_latund ähnliche Formen.- Länge
lng,lon,long,longitude,lon_dd,x,xcoord,point_x,decimalLongitude,gps_lon,geo_lngund ähnliche Formen.- Ein Feld mit beiden
- Namen, die auf
coordinates,coords,position,latlng,lnglat,location,geo,point,centerodergpsenden, wenn der Wert ein Array aus zwei Zahlen oder ein Text "a, b" ist. - Wahl zwischen Kandidaten
- Jedes mögliche Paar aus Breite und Länge wird an den ersten 300 Datensätzen getestet. Das Paar mit den meisten Werten innerhalb von ±90 und ±180 gewinnt, ein Paar mit demselben Elternobjekt erhält einen Bonus, und
x/yverlieren bei Gleichstand gegen echte lat/lng-Namen. - Reihenfolge eines Paares
lnglat,lonlatundcoordinatesbedeuten Länge zuerst.latlngundlatlonbedeuten Breite zuerst. Bei anderen Namen gewinnt die Reihenfolge mit mehr gültigen Werten. Passen beide, werden Arrays als [lng, lat] und Texte als "lat, lng" gelesen.
Technische Details
Genau das nimmt der Viewer an und erzeugt er.
- Eingabe
.json-,.jsonl- und.ndjson-Dateien bis 50 MB oder JSON, das Sie in das Feld Paste JSON einfügen.- Nicht für GeoJSON oder TopoJSON
- Ist die Datei schon GeoJSON (
"type": "FeatureCollection") oder TopoJSON ("type": "Topology"), erscheint ein Hinweis auf den GeoJSON-Viewer oder den TopoJSON-Viewer dieser Website. - Listen von Datensätzen
- Arrays, in denen mindestens die Hälfte der Einträge Objekte sind, in jeder Tiefe bis 8 Ebenen, dazu Objekte, deren Werte alle Datensätze sind. Listen mit Koordinaten stehen zuerst, danach die größeren.
- Gültige Koordinaten
- Breite zwischen −90 und 90, Länge zwischen −180 und 180, in Dezimalgrad (WGS84). Datensätze außerhalb dieser Bereiche werden gezählt und nicht gezeichnet.
- Warnung bei Vertauschung
- Liegt ein Datensatz außerhalb des Bereichs, wäre aber mit vertauschter Breite und Länge gültig, zählt der Viewer ihn und bietet einen Swap-Button an.
- Färben nach Feld
- Jedes Feld mit bis zu 10 verschiedenen Werten kann die Punkte färben, mit Legende und Anzahl pro Wert.
- Leistung
- Die Punkte werden auf einem Canvas gezeichnet, daher bleiben Zehntausende Datensätze auf einem normalen Laptop flüssig.
- Export
- GeoJSON mit jedem Feld als Eigenschaft, oder CSV mit
latitudeundlongitudeals ersten beiden Spalten und den aufgelösten Feldern danach. - Datenschutz
- Die Datei wird in Ihrem Browser gelesen. Nur die Kacheln der Basiskarte kommen aus dem Internet.
So bringen Sie JSON auf eine Karte, Schritt für Schritt
Hier ist der ganze Ablauf mit dem eingebauten Beispiel: 25 europäische Städte in einer verschachtelten Antwort im API-Stil, mit den Koordinaten in einem Objekt `location` und einem Datensatz ohne Ort.

Die Karte öffnet sich mit einer Straßenkarte. Nutzen Sie Upload, Paste JSON oder ziehen Sie eine Datei auf die Karte. Hier habe ich auf Sample Data geklickt.

Der Bereich Records zeigt die gewählte Liste (`data.cities`), wie viele Datensätze auf der Karte sind und wie viele keine Koordinaten hatten. Im Beispiel hat ein Datensatz `"location": null`, daher erscheinen 24 von 25.

Der Bereich Coordinates zeigt die erkannten Felder, hier `location.lat` und `location.lng`. Wechseln Sie zu „One field“ für Daten mit einem einzigen Feld `[lng, lat]` oder `"lat, lng"`, und nutzen Sie Swap, wenn die Punkte an der falschen Stelle liegen.

Wählen Sie unter „Color by field“ ein Feld. Hier teilt `capital` die Städte in Hauptstädte und andere Städte, mit Legende und Anzahl pro Wert.

Klicken Sie auf einen Punkt, um die genauen Koordinaten und jedes Feld des Datensatzes zu sehen, auch verschachtelte Werte und Arrays.

Laden Sie die Punkte als GeoJSON für QGIS, ArcGIS oder eine Webkarte herunter, oder als CSV für Excel und Google Tabellen.
Andere Wege, JSON-Daten auf eine Karte zu bringen
Dieser Viewer ist der schnellste Weg, eine JSON-Datei anzusehen. Wenn Sie dieselbe Aufgabe in einem Arbeitsablauf brauchen, nutze ich diese Werkzeuge.
QGIS
QGIS kann normale JSON-Datensätze nicht von sich aus auf eine Karte setzen. Es liest GeoJSON, und es liest CSV über „Layer aus Textdatei hinzufügen“. Der übliche Weg ist daher, das JSON zuerst in CSV oder GeoJSON umzuwandeln, genau das machen die Export-Buttons hier.
Python mit pandas und GeoPandas
pandas.json_normalize löst verschachteltes JSON in Spalten mit Punktnamen auf, genau wie dieser Viewer. geopandas.points_from_xy baut dann die Punkte. Denken Sie daran, dass es x (Länge) zuerst erwartet.
jq auf der Kommandozeile
jq kann jedes JSON mit einem Befehl in eine GeoJSON-FeatureCollection umbauen. Das ist ideal für Skripte, die regelmäßig Daten von einer API abholen.
JavaScript und Leaflet
Wenn Sie eine eigene Webkarte bauen, können Sie über die Datensätze laufen und Marker setzen. Leaflet erwartet [lat, lng], GeoJSON speichert dagegen [lng, lat]. Diese Verwechslung ist der häufigste Fehler in Kartencode.
Dieselbe Aufgabe im Code
Alle drei Beispiele lesen die oben genutzte Beispieldatei, überspringen den Datensatz ohne Ort und behalten die übrigen Felder.
# Python: pandas flattens nested JSON, GeoPandas builds the points
import json
import pandas as pd
import geopandas as gpd
with open("cities.json") as f:
data = json.load(f)
df = pd.json_normalize(data["data"]["cities"]) # columns: location.lat, location.lng
df = df.dropna(subset=["location.lat", "location.lng"])
gdf = gpd.GeoDataFrame(
df, geometry=gpd.points_from_xy(df["location.lng"], df["location.lat"]), crs="EPSG:4326"
)
gdf.to_file("cities.geojson", driver="GeoJSON")# jq on the command line: JSON records to a GeoJSON FeatureCollection
jq '{type: "FeatureCollection", features: [
.data.cities[] | select(.location != null) | {
type: "Feature",
properties: del(.location),
geometry: { type: "Point", coordinates: [.location.lng, .location.lat] }
}]}' cities.json > cities.geojson// JavaScript + Leaflet: note the order, Leaflet wants [lat, lng]
const res = await fetch("cities.json");
const json = await res.json();
for (const c of json.data.cities) {
if (!c.location) continue;
L.marker([c.location.lat, c.location.lng]).bindPopup(c.name).addTo(map);
}Meine Meinung: Nutzen Sie diesen Viewer, um eine neue JSON-Datei zu verstehen und ihre Koordinaten zu prüfen. Sobald Sie die Struktur kennen, machen ein paar Zeilen Python oder jq bei jeder Datenänderung GeoJSON daraus.
So arbeitet der Viewer
Das passiert zwischen dem Ablegen einer Datei und den Punkten auf der Karte. Jeder Schritt läuft in Ihrem Browser.
- Text parsen. Der Text wird als JSON geparst. Klappt das nicht und hat die Datei mehrere Zeilen, wird jede Zeile als JSON Lines geparst. Eine Byte-Order-Mark am Anfang wird entfernt.
- Dateien mit eigenem Viewer abweisen. GeoJSON und TopoJSON werden an ihrem
typeerkannt und an den passenden Viewer dieser Website verwiesen, weil sie schon echte Geometrie enthalten. - Listen von Datensätzen finden. Der Viewer durchläuft das Dokument bis 8 Ebenen tief und sammelt jedes Array, das überwiegend aus Objekten besteht, und jedes Objekt, dessen Werte alle Datensätze sind. Jeder Datensatz wird in Punktpfade aufgelöst.
- Koordinaten erkennen. Die Feldnamen werden mit den Listen oben verglichen. Jedes mögliche Paar wird an bis zu 300 Datensätzen getestet, das Paar mit den meisten gültigen Werten gewinnt. Passt kein Paar, werden einzelne Felder mit zwei Zahlen versucht.
- Punkte bauen. Jeder Datensatz wird mit den gewählten Feldern gelesen. Zahlen als Text werden umgewandelt, Werte außerhalb von ±90 / ±180 gezählt und übersprungen, und Datensätze, die vertauscht passen würden, werden extra gezählt.
- Zeichnen, färben und exportieren. Die Punkte werden auf einer Canvas-Ebene gezeichnet, und die Karte zoomt auf sie. Ändern Sie ein Feld, die Reihenfolge oder die Farbe, wird die Karte sofort neu gezeichnet. Die Exporte nutzen genau die Datensätze, die Sie sehen.
Die Erkennung ist nur ein erster Vorschlag. Jede Wahl lässt sich in der Seitenleiste ändern, und die Karte aktualisiert sich sofort. Ein falscher Vorschlag kostet also nur einen Klick.
Koordinaten prüfen: Bereiche, Vertauschung und Genauigkeit
Ein Paar aus Breite und Länge sind nur zwei Zahlen. Diese drei Prüfungen zeigen, ob die Zahlen sinnvoll sind.
1. Gültige Bereiche
Die Breite misst nach Norden und Süden vom Äquator aus, sie reicht also nur von −90 am Südpol bis +90 am Nordpol. Die Länge misst nach Osten und Westen von Greenwich aus und reicht von −180 bis +180.
gültig ⇔ −90 ≤ Breite ≤ 90 und −180 ≤ Länge ≤ 180 Breite 91.2, Länge 10.5 → ungültig (Breite zu groß)
Ein Wert außerhalb dieser Bereiche ist fast immer eines von drei Dingen: Die Felder sind vertauscht, die Daten liegen in einem projizierten System wie UTM oder Web-Mercator-Metern, oder der Dezimalpunkt ist verloren gegangen (52520000 statt 52.52).
2. Vertauschte Werte erkennen
Ist ein Paar so, wie es ist, ungültig, aber gültig, wenn die beiden Zahlen die Plätze tauschen, sind die Felder wahrscheinlich vertauscht. Der Viewer zählt diese Datensätze und bietet einen Swap-Button an.
gespeichert: Breite = 151.21, Länge = −33.87 → ungültig vertauscht: Breite = −33.87, Länge = 151.21 → gültig (Sydney)
Dieser Test findet nicht jede Vertauschung. Liegen beide Zahlen zwischen −90 und 90, sind beide Reihenfolgen gültig. Paris, gespeichert als (2.35, 48.86) statt (48.86, 2.35), landet im Indischen Ozean vor der Küste Somalias. Erscheinen Ihre Punkte im falschen Teil der Welt, probieren Sie Swap und schauen Sie auf die Karte.
3. Nachkommastellen und Genauigkeit
Ein Grad Breite sind überall etwa 111 km. Ein Grad Länge sind am Äquator etwa 111 km und werden mit dem Kosinus der Breite kleiner. Jede Nachkommastelle macht die Position also etwa zehnmal genauer.
1° Breite ≈ 111 320 m 1° Länge ≈ 111 320 m · cos(Breite) Stellen Schritt Breite Schritt Länge in Berlin (52.52°) 1 11.1 km 6.8 km 2 1.1 km 680 m 3 111 m 68 m 4 11.1 m 6.8 m 5 1.1 m 0.68 m 6 0.11 m 0.07 m
Vier Nachkommastellen reichen, um ein Gebäude zu finden, fünf für eine Haustür, und sechs sind schon feiner als ein normales Handy-GPS. Hat Ihr JSON 10 oder 15 Nachkommastellen, bringen die zusätzlichen Ziffern keine Genauigkeit; sie stammen aus der Gleitkommarechnung.
Wann dieser Viewer hilft
In diesen Situationen greife ich zu einem JSON-Karten-Viewer.
- Eine API-Antwort prüfen. Fügen Sie die Antwort einer Wetter-, Verkehrs- oder Store-Locator-API ein und sehen Sie sofort, ob die Orte stimmen, bevor Sie Kartencode schreiben.
- Einen App- oder Datenbank-Export prüfen. Liefer-Apps, CRMs und IoT-Plattformen exportieren oft JSON. Zeigen Sie den Export auf der Karte, um Datensätze mit fehlenden oder falschen Koordinaten zu finden.
- JSON in GeoJSON oder CSV umwandeln. Erhalten Sie eine GeoJSON-Datei für QGIS oder ArcGIS oder eine CSV für Excel, ohne ein Skript zu schreiben.
- Vertauschte Koordinaten finden. Die Warnung und die Karte machen den klassischen Fehler leicht sichtbar, bei dem Breite und Länge irgendwo in einer Verarbeitungskette die Plätze tauschen.
- Open-Data-Portale erkunden. Viele Open-Data-Portale bieten JSON neben CSV an. Das JSON behält oft verschachtelte Details, die in der CSV fehlen, und Sie können es direkt auf die Karte bringen.
- Punkte nach einem Feld gruppieren. Färben Sie nach Status, Kategorie oder Typ, um Muster zu sehen, etwa welche Stationen offline sind oder welche Läden sonntags öffnen.
- Kartencode debuggen. Zeigt Ihre eigene Karte Punkte an der falschen Stelle, laden Sie dasselbe JSON hier. Stimmen die Punkte hier, liegt der Fehler in Ihrem Code, oft eine Verwechslung von [lat, lng] und [lng, lat].
- JSON und Koordinaten unterrichten. Lernende können kleine JSON-Beispiele einfügen und sehen, wie Verschachtelung, Feldnamen und Reihenfolge der Koordinaten das Ergebnis auf der Karte verändern.
Häufig gestellte Fragen
1. Wie zeige ich JSON-Daten auf einer Karte?
Laden Sie die Datei hoch, fügen Sie das JSON ein oder ziehen Sie die Datei auf die Karte. Der Viewer findet die Datensätze und die Felder für Breite und Länge selbst. Findet er sie nicht, wählen Sie die Felder im Bereich Coordinates.
2. Was ist der Unterschied zwischen JSON und GeoJSON?
JSON ist ein allgemeines Datenformat. GeoJSON ist ein JSON-Standard (RFC 7946) mit fester Struktur für Geometrie: Features mit einem Objekt geometry und properties. Normales JSON kann Koordinaten in jedem Feld mit jedem Namen speichern, deshalb muss dieser Viewer sie suchen.
3. Meine Koordinaten stecken in einem verschachtelten Objekt. Geht das?
Ja. Verschachtelte Objekte werden in Punktpfade aufgelöst, aus {"location": {"lat": 52.5}} wird das Feld location.lat. Der Viewer sucht bis 8 Ebenen tief.
4. Meine Datei hat mehrere Listen. Welche wird genutzt?
Der Viewer bevorzugt eine Liste mit Koordinaten, dann die größte. Alle gefundenen Listen stehen im Menü „List of records“, Sie können also wechseln.
5. Meine Punkte liegen an der falschen Stelle. Was tun?
Klicken Sie zuerst auf Swap. Breite und Länge werden oft andersherum gespeichert. Stimmen die Punkte dann noch nicht, prüfen Sie das Koordinatensystem: Werte in Tausendern oder Millionen sind wahrscheinlich UTM- oder Web-Mercator-Meter, keine Grad.
6. Warum fehlen manche Datensätze auf der Karte?
Der Bereich Records nennt den Grund: Entweder hatte der Datensatz keinen Wert in den Koordinatenfeldern, oder die Werte lagen außerhalb von ±90 für die Breite oder ±180 für die Länge. Nur gültige Datensätze werden gezeichnet und exportiert.
7. Funktioniert es mit Koordinaten als Text?
Ja. "52.52" und "52,52" werden beide als Zahl gelesen. Texte mit beiden Werten, etwa "52.52, 13.405", funktionieren ebenfalls, wenn Sie „One field“ wählen.
8. Welche Reihenfolge nutzt ein Array [a, b]?
Ein Feld namens coordinates nutzt die GeoJSON-Reihenfolge [Länge, Breite]. latlng bedeutet Breite zuerst, lnglat Länge zuerst. Bei anderen Namen testet der Viewer beide Reihenfolgen und nimmt die mit mehr gültigen Werten. Im Menü für die Reihenfolge können Sie das jederzeit ändern.
9. Kann ich hier GeoJSON oder TopoJSON öffnen?
Nein, und das ist auch nicht nötig. Diese Formate enthalten schon Geometrie, daher verweist der Viewer Sie auf den GeoJSON-Viewer oder den TopoJSON-Viewer dieser Website.
10. Wie viele Datensätze schafft er?
Dateien bis 50 MB. Die Punkte werden auf einem Canvas gezeichnet, daher bleiben Zehntausende Punkte flüssig. Sehr große Dateien brauchen ein paar Sekunden zum Parsen.
11. Werden meine Daten hochgeladen?
Nein. Die Datei wird in Ihrem Browser gelesen, und auch die Exporte entstehen in Ihrem Browser. Nur die Kacheln der Basiskarte werden aus dem Internet geladen.
Bibliotheken und Danksagung
Das Lesen des JSON und die Erkennung der Koordinaten wurden für diese Website geschrieben. Die Karte baut auf Open-Source-Software auf.
- Leaflet 1.9 · BSD-2-Clause · Volodymyr Agafonkin and contributorsZeichnet die interaktive Karte, die Canvas-Punktebene und die Popups.
- OpenStreetMap, Protomaps (hosted by KONAKTIVE), CARTO, Esri World Imagery · ODbL und Nutzungsbedingungen des Anbieters · OpenStreetMap contributors, Protomaps, KONAKTIVE, CARTO, EsriKacheln und Luftbilder der Basiskarte.
Verwandte Werkzeuge
JSON-Dateien werden in Ihrem Browser gelesen und nie auf einen Server hochgeladen. Die Beispielkoordinaten sind Stadtzentren mit höchstens 4 Nachkommastellen. Kartenkacheln © OpenStreetMap-Mitwirkende, gezeichnet mit Protomaps (gehostet von KONAKTIVE), mit CARTO als Ersatz. Satellitenbilder: Esri.
