Differenza tra GeoJSON e TopoJSON


Risposte:


147

Se ti interessano le dimensioni dei file o la topologia, usa TopoJSON. Se non ti interessa nemmeno, usa GeoJSON per semplicità.

Il vantaggio principale di TopoJSON è la dimensione. Eliminando la ridondanza e utilizzando una codifica intera a precisione fissa più efficiente delle coordinate, i file TopoJSON sono spesso un ordine di grandezza più piccoli dei file GeoJSON. Il vantaggio secondario dei file TopoJSON è che la codifica della topologia ha applicazioni utili, come la semplificazione della conservazione della topologia (simile a MapShaper ) e la generazione automatica di mesh (come nei confini dello stato in questo esempio coropletico ).

Questi vantaggi hanno un costo: un formato di file più complesso. In JavaScript, ad esempio, in genere si utilizza la libreria client TopoJSON per convertire TopoJSON in GeoJSON da utilizzare con strumenti standard come d3.geoPath . (In Python, puoi usare topojson.py .) Inoltre, il formato intero di TopoJSON richiede coordinate di quantizzazione, il che significa che può introdurre errori di arrotondamento se non stai attento. (Vedere la documentazione per topojson -q.)

Per la manipolazione lato server di geometrie che non richiede topologia, GeoJSON è probabilmente la scelta più semplice. In caso contrario, se è necessaria la topologia o si desidera inviare la geometria in rete a un client, utilizzare TopoJSON.


2
E anche se ricordavo di aver letto di "segmenti di linea condivisi", ho comunque assunto "topo" per "topografia", cosa che non è. Ecco una bella lettura sulla differenza tra "topologia" e "topografia" (la prima è l'origine di "topo" in topojson) - e dovrò leggere l'articolo di Mike qui sulla inferenza della topologia
The Red Pea

Preferirei utilizzare geobuf diverso da tali soluzioni ibride come toposjon quando si collega su Internet.
tibetty

9

TopoJSON è ideale per funzioni ordinate che si "agganciano" l'una all'altra, come le regioni amministrative, ma non aiuta con dati più disordinati o organici. Se i tuoi dati sono semplicemente punti, TopoJSON non è affatto d'aiuto.


22
Anche quando non esiste una topologia condivisa, la codifica intera a precisione fissa di TopoJSON può essere sostanzialmente più efficiente della virgola mobile di GeoJSON.
mbostock

16
Vero. Mi sbaglio. Eliminerei la mia risposta, ma perderemo il tuo prezioso commento!
sgillies

Grazie. :) Ho inviato una risposta separata che include considerazioni aggiuntive.
mbostock

3

Dipende da molte considerazioni. Tra questi ci sono i seguenti:

1) La natura (modello di dati) dell'elemento o degli elementi che desideri rappresentare 2) Qualsiasi attributo che desideri associare a tali elementi 3) Come desideri che si comportino questi elementi sulla pagina (statico e dinamico)

Tuttavia, questa è una domanda difficile a cui rispondere in astratto. Per quanto riguarda alcune specifiche, se hai una copertura poligonale contigua o un'altra situazione in cui le caratteristiche condividono i confini, il modello di topojson ti consente di sfruttare la ridondanza e tenerla nel modello.

Leggi la documentazione, analizza esempi (ad esempio bl.ocks.org), quindi ottieni alcuni dati e rappresentali sia in geojson che in topojson e crea le tue visualizzazioni.


Grazie wsvekla. L'ho fatto: ho trovato le tue sintesi su bl.ocks.org in effetti ( bl.ocks.org/wsvekla/4533258 bl.ocks.org/4348435 ) ma non facile da google. Tuttavia, come fai notare, ci sono molte considerazioni e sto cercando di esplorare i confronti fianco a fianco per imparare questo.
Luca

2
Questi due blocchi fanno riferimento allo stesso shapefile originale: bl.ocks.org/4485308 e bl.ocks.org/4348435 . TopoJSON ha davvero iniziato ad affondare quando ho finalmente capito come potevo rappresentare più caratteristiche (confini nazionali, dipartimentali e municipali) con gli stessi dati nello stesso file (non puoi farlo con geojson). Ciò si ottiene tramite la funzione di filtro: function (a, b) {return a.id! == b.id;}). Cerca di capirlo e topojson inizierà ad avere un senso. Per un migliore riferimento al codice e un minimalismo essenziale
wsvekla
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.