Cosa fa questo visualizzatore
Molti dati di posizione non arrivano mai come file GIS. Arrivano come JSON normale: la risposta di un'API meteo, un elenco di negozi da uno store locator, un'esportazione da un'app di consegne o un file che ti manda uno sviluppatore. Ogni record ha una latitudine e una longitudine da qualche parte, ma uno strumento di mappe che si aspetta GeoJSON non riesce a leggerlo, e aprirlo in un foglio di calcolo fa perdere la struttura annidata.
Questo visualizzatore legge quel JSON così com'è. Cerca in tutto il documento gli elenchi di record, trasforma gli oggetti annidati in nomi di campo come `location.lat` e riconosce i nomi comuni di latitudine e longitudine, oltre ai campi singoli che contengono entrambi i valori, come array `[lng, lat]` o testi `"lat, lng"`. Ogni record con coordinate valide compare sulla mappa. La barra laterale ti dice quanti record non avevano coordinate o avevano valori fuori dall'intervallo valido, e ti avvisa quando latitudine e longitudine sembrano scambiate.
L'ho creato per il momento in cui qualcuno ti manda un file JSON e chiede "dove sono questi?". Controlli i dati in pochi secondi, colori i punti secondo un campo qualsiasi, clicchi su un punto per leggere l'intero record e scarichi il risultato in GeoJSON per un GIS o in CSV per un foglio di calcolo. Il file viene letto nel tuo browser e non viene mai caricato.
Le forme di JSON che lo strumento capisce
Il JSON reale ha molte forme. Queste sono quelle che lo strumento legge senza alcuna impostazione. In ogni caso mostra l'elenco di record trovato, e puoi sceglierne un altro se il file ne ha più di uno.
[{ "name": "Berlin", "lat": 52.52, "lng": 13.405 }]lat e lng vengono trovati dal nome.{ "data": { "cities": [{ "name": "Paris", "latitude": 48.8566, "longitude": 2.3522 }] } }data.cities. Gli altri elenchi dello stesso file compaiono nel menu "List of records".[{ "name": "Rome", "location": { "lat": 41.9028, "lon": 12.4964 } }]location.lat e location.lon. Si preferiscono latitudine e longitudine con lo stesso oggetto padre.[{ "id": 7, "coordinates": [2.1686, 41.3874] }]coordinates viene letto come [longitudine, latitudine], l'ordine di GeoJSON. Per altri nomi, l'ordine si decide dagli intervalli dei valori.[{ "stop": "Central", "latlng": "59.3293, 18.0686" }]{ "BER": { "lat": 52.52, "lng": 13.405 }, "PAR": { "lat": 48.86, "lng": 2.35 } }_key.{"lat": 38.72, "lng": -9.14}
{"lat": 41.16, "lng": -8.63}Vengono letti anche i numeri salvati come testo, come "52.52", e i numeri con la virgola decimale, come "52,52". Gli array dentro un record, come un elenco di tag, restano come testo JSON nel popup e nell'esportazione.
Quali nomi di campo vengono riconosciuti
Lo strumento confronta l'ultima parte di ogni nome di campo, quindi `lat`, `location.lat` e `data.geo.lat` valgono tutti. Maiuscole e minuscole non contano. Se nulla corrisponde, scegli tu i campi nel pannello Coordinates.
- Latitudine
lat,latitude,lat_dd,y,ycoord,point_y,decimalLatitude,gps_lat,geo_late forme simili.- Longitudine
lng,lon,long,longitude,lon_dd,x,xcoord,point_x,decimalLongitude,gps_lon,geo_lnge forme simili.- Un campo con entrambi
- Nomi che finiscono con
coordinates,coords,position,latlng,lnglat,location,geo,point,centerogps, quando il valore è un array di due numeri o un testo "a, b". - Scelta tra i candidati
- Ogni possibile coppia di latitudine e longitudine viene provata sui primi 300 record. Vince la coppia con più valori dentro ±90 e ±180, una coppia con lo stesso oggetto padre riceve un bonus, e
x/yperdono i pareggi contro veri nomi lat/lng. - Ordine di una coppia
lnglat,lonlatecoordinatesvogliono dire longitudine prima.latlngelatlonvogliono dire latitudine prima. Per altri nomi vince l'ordine con più valori validi. Se vanno bene entrambi, gli array si leggono come [lng, lat] e i testi come "lat, lng".
Dettagli tecnici
Ecco esattamente cosa accetta e cosa produce lo strumento.
- Input
- File
.json,.jsonle.ndjsonfino a 50 MB, oppure JSON incollato nel riquadro Paste JSON. - Non per GeoJSON o TopoJSON
- Se il file è già GeoJSON (
"type": "FeatureCollection") o TopoJSON ("type": "Topology"), ricevi un messaggio che ti indirizza al Visualizzatore GeoJSON o al Visualizzatore TopoJSON di questo sito. - Elenchi di record
- Array in cui almeno metà degli elementi sono oggetti, a qualsiasi profondità fino a 8 livelli, più gli oggetti i cui valori sono tutti record. Prima compaiono gli elenchi con coordinate, poi quelli più grandi.
- Coordinate valide
- Latitudine tra −90 e 90, longitudine tra −180 e 180, in gradi decimali (WGS84). I record fuori da questi intervalli vengono contati e non disegnati.
- Avviso di scambio
- Se un record è fuori intervallo ma sarebbe valido con latitudine e longitudine scambiate, lo strumento lo conta e propone un pulsante Swap.
- Colore per campo
- Qualsiasi campo con al massimo 10 valori diversi può colorare i punti, con legenda e conteggio per valore.
- Prestazioni
- I punti sono disegnati su un canvas, quindi decine di migliaia di record restano fluidi su un normale portatile.
- Esportazione
- GeoJSON con ogni campo come proprietà, oppure CSV con
latitudeelongitudecome prime due colonne e i campi appiattiti dopo. - Privacy
- Il file viene letto nel tuo browser. Solo le tile della mappa di base arrivano da internet.
Come mettere un JSON su una mappa, passo dopo passo
Ecco tutto il flusso con l'esempio incluso: 25 città europee dentro una risposta annidata in stile API, con le coordinate in un oggetto `location` e un record senza posizione.

La mappa si apre con una mappa stradale di base. Usa Upload, Paste JSON o trascina un file sulla mappa. Qui ho cliccato su Sample Data.

Il pannello Records mostra l'elenco scelto (`data.cities`), quanti record sono sulla mappa e quanti non avevano coordinate. Nell'esempio un record ha `"location": null`, quindi ne compaiono 24 su 25.

Il pannello Coordinates mostra i campi trovati, qui `location.lat` e `location.lng`. Passa a "One field" per dati con un solo campo `[lng, lat]` o `"lat, lng"`, e usa Swap se i punti finiscono nel posto sbagliato.

Scegli un campo in "Color by field". Qui `capital` divide le città in capitali e altre città, con legenda e conteggio per ogni valore.

Clicca su qualsiasi punto per vedere le coordinate esatte e ogni campo del record, compresi i valori annidati e gli array.

Scarica i punti in GeoJSON per QGIS, ArcGIS o una mappa web, oppure in CSV per Excel e Fogli Google.
Altri modi per portare dati JSON su una mappa
Questo visualizzatore è il modo più veloce per guardare un file JSON. Quando ti serve lo stesso lavoro dentro un flusso di lavoro, questi sono gli strumenti che uso.
QGIS
QGIS da solo non riesce a mettere su una mappa record JSON normali. Legge GeoJSON, e legge CSV con "Aggiungi layer testo delimitato". La strada di solito è convertire prima il JSON in CSV o GeoJSON, ed è proprio quello che fanno qui i pulsanti di esportazione.
Python con pandas e GeoPandas
pandas.json_normalize appiattisce il JSON annidato in colonne con nomi puntati, proprio come questo strumento. Poi geopandas.points_from_xy crea i punti. Ricorda che vuole prima x (la longitudine).
jq da riga di comando
jq può trasformare qualsiasi JSON in una FeatureCollection GeoJSON con un solo comando. È ideale negli script che scaricano dati da un'API a intervalli regolari.
JavaScript e Leaflet
Se costruisci una tua mappa web, puoi scorrere i record e aggiungere marcatori. Leaflet vuole [lat, lng], mentre GeoJSON salva [lng, lat]. Confonderli è l'errore più comune nel codice delle mappe.
Lo stesso lavoro in codice
Tutti e tre gli esempi leggono il file di esempio usato sopra, saltano il record senza posizione e tengono gli altri campi.
# 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);
}Il mio parere: usa questo strumento per capire un JSON nuovo e controllarne le coordinate. Quando conosci la struttura, poche righe di Python o jq lo trasformano in GeoJSON ogni volta che i dati cambiano.
Come funziona lo strumento
Ecco cosa succede tra il momento in cui lasci cadere un file e quello in cui vedi i punti. Ogni passo avviene nel tuo browser.
- Analizzare il testo. Il testo viene analizzato come JSON. Se non riesce e il file ha più righe, ogni riga viene analizzata come JSON Lines. Un eventuale byte order mark all'inizio viene tolto.
- Rifiutare i file che hanno un loro visualizzatore. GeoJSON e TopoJSON vengono riconosciuti dal loro
typee indirizzati al visualizzatore giusto di questo sito, perché contengono già una vera geometria. - Trovare gli elenchi di record. Lo strumento percorre il documento fino a 8 livelli di profondità e raccoglie ogni array fatto soprattutto di oggetti, e ogni oggetto i cui valori sono tutti record. Ogni record viene appiattito in percorsi con il punto.
- Riconoscere le coordinate. I nomi dei campi vengono confrontati con gli elenchi qui sopra. Ogni coppia candidata viene provata su un massimo di 300 record, e vince la coppia con più valori validi. Se nessuna coppia funziona, si provano i campi singoli con due numeri.
- Costruire i punti. Ogni record viene letto con i campi scelti. I numeri in forma di testo vengono convertiti, i valori fuori da ±90 / ±180 vengono contati e saltati, e i record che andrebbero bene se scambiati vengono contati a parte.
- Disegnare, colorare ed esportare. I punti vengono disegnati su un layer canvas e la mappa fa zoom su di essi. Se cambi un campo, l'ordine o il colore, la mappa si ridisegna subito. Le esportazioni usano esattamente i record che vedi.
Il riconoscimento è solo una prima proposta. Ogni scelta si può cambiare nella barra laterale, e la mappa si aggiorna appena la cambi, quindi una proposta sbagliata costa un clic.
Controllare le coordinate: intervalli, scambi e precisione
Una coppia di latitudine e longitudine sono solo due numeri. Questi tre controlli ti dicono se i numeri hanno senso.
1. Intervalli validi
La latitudine misura verso nord e verso sud dall'equatore, quindi va solo da −90 al Polo Sud a +90 al Polo Nord. La longitudine misura verso est e verso ovest da Greenwich e va da −180 a +180.
valido ⇔ −90 ≤ latitudine ≤ 90 e −180 ≤ longitudine ≤ 180 latitudine 91.2, longitudine 10.5 → non valido (latitudine troppo grande)
Un valore fuori da questi intervalli è quasi sempre una di tre cose: i campi sono scambiati, i dati sono in un sistema proiettato come UTM o metri Web Mercator, oppure si è perso il punto decimale (52520000 invece di 52.52).
2. Riconoscere valori scambiati
Se una coppia non è valida così com'è ma lo diventa scambiando di posto i due numeri, probabilmente i campi sono scambiati. Lo strumento conta questi record e propone un pulsante Swap.
salvato: lat = 151.21, lng = −33.87 → non valido scambiato: lat = −33.87, lng = 151.21 → valido (Sydney)
Questo controllo non trova ogni scambio. Quando entrambi i numeri sono tra −90 e 90, tutti e due gli ordini sono validi. Parigi salvata come (2.35, 48.86) invece di (48.86, 2.35) finisce nell'Oceano Indiano, al largo della Somalia. Se i tuoi punti compaiono nella parte sbagliata del mondo, prova Swap e guarda la mappa.
3. Decimali e precisione
Un grado di latitudine misura circa 111 km ovunque. Un grado di longitudine misura circa 111 km all'equatore e si riduce con il coseno della latitudine. Quindi ogni decimale rende la posizione circa dieci volte più precisa.
1° latitudine ≈ 111 320 m 1° longitudine ≈ 111 320 m · cos(latitudine) decimali passo in latitudine passo in longitudine a Berlino (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
Quattro decimali bastano per trovare un edificio, cinque per trovare una porta, e sei sono già più fini del GPS di un normale telefono. Se il tuo JSON ha 10 o 15 decimali, le cifre in più non aggiungono precisione; vengono dall'aritmetica in virgola mobile.
Quando serve questo visualizzatore
Queste sono le situazioni in cui uso un visualizzatore di mappe JSON.
- Controllare la risposta di un'API. Incolla la risposta di un'API meteo, dei trasporti o di uno store locator e vedi subito se le posizioni hanno senso, prima di scrivere codice per la mappa.
- Controllare l'esportazione di un'app o di un database. App di consegne, CRM e piattaforme IoT esportano spesso JSON. Metti l'esportazione su una mappa per trovare record con coordinate mancanti o sbagliate.
- Convertire JSON in GeoJSON o CSV. Ottieni un file GeoJSON per QGIS o ArcGIS, oppure un CSV per Excel, senza scrivere script.
- Trovare coordinate scambiate. L'avviso e la mappa rendono facile vedere l'errore classico in cui latitudine e longitudine si scambiano di posto da qualche parte in una catena di elaborazione.
- Esplorare portali open data. Molti portali open data offrono JSON accanto al CSV. Il JSON spesso conserva dettagli annidati che il CSV perde, e puoi metterlo direttamente su una mappa.
- Raggruppare i punti secondo un campo. Colora per stato, categoria o tipo per vedere degli schemi, per esempio quali stazioni sono offline o quali negozi aprono la domenica.
- Fare debug del codice delle mappe. Se la tua mappa mostra punti nel posto sbagliato, carica qui lo stesso JSON. Se qui i punti sono giusti, l'errore è nel tuo codice, spesso uno scambio tra [lat, lng] e [lng, lat].
- Insegnare JSON e coordinate. Gli studenti possono incollare piccoli esempi di JSON e vedere come l'annidamento, i nomi dei campi e l'ordine delle coordinate cambiano il risultato sulla mappa.
Domande frequenti
1. Come mostro dati JSON su una mappa?
Carica il file, incolla il JSON o trascina il file sulla mappa. Lo strumento trova da solo i record e i campi di latitudine e longitudine. Se non li trova, scegli i campi nel pannello Coordinates.
2. Qual è la differenza tra JSON e GeoJSON?
JSON è un formato di dati generico. GeoJSON è uno standard JSON (RFC 7946) con una struttura fissa per la geometria: elementi con un oggetto geometry e properties. Il JSON normale può salvare le coordinate in qualsiasi campo, con qualsiasi nome, ed è per questo che questo strumento deve cercarle.
3. Le mie coordinate sono dentro un oggetto annidato. Funziona?
Sì. Gli oggetti annidati vengono appiattiti in percorsi con il punto, quindi {"location": {"lat": 52.5}} diventa il campo location.lat. Lo strumento cerca fino a 8 livelli di profondità.
4. Il mio file ha più elenchi. Quale viene usato?
Lo strumento preferisce un elenco che abbia coordinate, poi quello più grande. Tutti gli elenchi trovati sono nel menu "List of records", quindi puoi passare a un altro.
5. I miei punti sono nel posto sbagliato. Cosa faccio?
Clicca prima su Swap. Latitudine e longitudine sono spesso salvate al contrario. Se i punti sono ancora sbagliati, controlla il sistema di coordinate: valori di migliaia o milioni sono probabilmente metri UTM o Web Mercator, non gradi.
6. Perché alcuni record mancano sulla mappa?
Il pannello Records ti dice il motivo: o il record non aveva un valore nei campi delle coordinate, oppure i valori erano fuori da ±90 per la latitudine o da ±180 per la longitudine. Solo i record validi vengono disegnati ed esportati.
7. Funziona con coordinate salvate come testo?
Sì. "52.52" e "52,52" vengono letti entrambi come numeri. Anche i testi con entrambi i valori, come "52.52, 13.405", funzionano se scegli "One field".
8. Che ordine usa un array [a, b]?
Un campo chiamato coordinates usa l'ordine di GeoJSON, [longitudine, latitudine]. latlng vuol dire latitudine prima e lnglat longitudine prima. Per altri nomi, lo strumento prova entrambi gli ordini e sceglie quello con più valori validi. Puoi sempre cambiarlo nel menu dell'ordine.
9. Posso aprire GeoJSON o TopoJSON qui?
No, e non serve. Questi formati contengono già la geometria, quindi lo strumento ti indirizza al Visualizzatore GeoJSON o al Visualizzatore TopoJSON di questo sito.
10. Quanti record riesce a gestire?
File fino a 50 MB. I punti sono disegnati su un canvas, quindi decine di migliaia di punti restano fluidi. I file molto grandi richiedono qualche secondo per l'analisi.
11. I miei dati vengono caricati?
No. Il file viene letto nel tuo browser, e anche le esportazioni vengono create nel tuo browser. Solo le tile della mappa di base arrivano da internet.
Librerie e ringraziamenti
La lettura del JSON e il riconoscimento delle coordinate sono stati scritti per questo sito. La mappa è costruita su software open source.
- Leaflet 1.9 · BSD-2-Clause · Volodymyr Agafonkin and contributorsDisegna la mappa interattiva, il layer di punti su canvas e i popup.
- OpenStreetMap, Protomaps (hosted by KONAKTIVE), CARTO, Esri World Imagery · ODbL e condizioni del fornitore · OpenStreetMap contributors, Protomaps, KONAKTIVE, CARTO, EsriTile e immagini della mappa di base.
Strumenti correlati
I file JSON vengono letti nel tuo browser e non vengono mai caricati su un server. Le coordinate dell'esempio sono centri di città con al massimo 4 decimali. Tessere della mappa © contributori di OpenStreetMap, disegnate con Protomaps (ospitato da KONAKTIVE), con CARTO come riserva. Immagini satellitari: Esri.
