GeoJSON eignet sich sehr gut zur Darstellung räumlicher Daten, jedoch mit Einschränkungen: Bei detaillierten oder sehr großen Gebieten, wie beispielsweise Länder oder der ganzen Welt, nimmt die Dateigröße rapide zu, was die Antwortzeit bei webbasierten Anwendungen verschlechtern kann. Größere Dateien bedeuten aufgrund der beschränkten Bandbreite des Internets längere Ladezeiten und im Gegensatz zu Datenbanken, ist es nicht möglich, einzelne Werte aus der Datei anzufordern.
Als Lösung für dieses Problem hat Mike Bostock das Datenformat TopoJSON entwickelt (https://github.com/mbostock/topojson-specification). Es handelt sich hierbei um eine Weiterentwicklung von GeoJSON.
Durch das Datenformat TopoJSON lässt sich die Dateigröße um durchschnittlich 80% reduzieren. Je nach Anwendungszweck kann die Dateigröße durch diverse Maßnahmen weiter verringert werden.
TopoJSON speichert im Gegensatz zu GeoJSON keine Geometrien, sondern Topologien. Dabei werden benachbarte Polygone auf Knotenpunkte überprüft. Wird ein Knotenpunkt erkannt, wird an der entsprechenden Stelle ein Schnitt gemacht. Dadurch entstehen einzelne Linienzüge, Arcs genannt.
In TopoJSON besteht ein Polygon in der Folge nicht mehr aus einer Reihe von Koordinaten, sondern aus einer Reihe von Verweisen auf Arcs. Hieraus lässt sich das ursprüngliche Polygon rekonstruieren. Der Vorteil liegt darin, dass re-dundante Datenhaltung vermieden wird, indem sich zwei Polygone ein oder mehrere gemeinsame Arcs teilen.
In den Arcs werden jedoch keine reellen Zahlenwerte (Kommazahlen) gespeichert, sondern Zahlenpaare aus vorzeichenbehafteten Ganzzahlen. Aus diesen Zahlen lassen sich durch die in der transform-Anweisung gespeicherten Werte die Koordinaten zurückrechnen.
Zum Weiterlesen: Bostock, Mike (2013): How To Infer Topology. URL: http://bost.ocks.org/mike/topology/ (Zugriff am 28.02.2018).