Разница между GeoJSON и TopoJSON

В чем разница между GeoJSON и TopoJSON и когда я могу использовать одно вместо другого?

описание TopoJSON на GitHub подразумевает, что файлы TopoJSON на 80% меньше. Так почему бы просто не использовать TopoJSON все время?


person Luke    schedule 06.02.2013    source источник


Ответы (3)


Если вам важен размер файла или топология, используйте TopoJSON. Если вас это не волнует, для простоты используйте GeoJSON.

Основное преимущество TopoJSON - это размер. За счет устранения избыточности и использования более эффективного целочисленного кодирования координат с фиксированной точностью файлы TopoJSON часто на порядок меньше файлов GeoJSON. Второстепенное преимущество файлов TopoJSON заключается в том, что кодирование топологии имеет полезные приложения, такие как упрощение с сохранением топологии (аналогично MapShaper) и автоматическое создание сетки (как в границах состояние-состояние в этом примере choropleth).

Эти преимущества имеют свою цену: более сложный формат файла. Например, в JavaScript вы обычно используете клиентскую библиотеку TopoJSON для преобразования TopoJSON в GeoJSON для использования с помощью стандартных инструментов, таких как d3.geoPath. (В Python вы можете использовать topojson.py.) Кроме того, TopoJSON's Целочисленный формат требует квантования координат, что означает, что он может привести к ошибке округления, если вы не будете осторожны. (См. Документацию для topojson -q.)

Для манипулирования геометрией на стороне сервера, не требующей топологии, GeoJSON, вероятно, является более простым выбором. В противном случае, если вам нужна топология или вы хотите отправить геометрию по сети клиенту, используйте TopoJSON.

person mbostock    schedule 08.02.2013
comment
И хотя я действительно помню, как читал об общих линейных сегментах, я все же предполагал, что топография означает топографию, а это не так. Вот неплохое различие между топологией и топографией (первая является источником топологии in topojson) - и мне нужно будет прочитать статью Майка здесь о выводе топологии < / а> - person The Red Pea; 21.01.2016
comment
Я бы предпочел использовать geobuf, отличные от таких гибридных решений, как toposjon, при подключении через Интернет. - person tibetty; 15.01.2019

TopoJSON идеально подходит для аккуратных функций, которые «привязаны» друг к другу, например административных регионов, но не помогает с более беспорядочными или органическими данными. Если ваши данные представляют собой просто точки, то TopoJSON совершенно не поможет.

person sgillies    schedule 07.02.2013
comment
Даже при отсутствии общей топологии кодирование целых чисел фиксированной точности TopoJSON может быть значительно более эффективным, чем кодирование с плавающей запятой GeoJSON. - person mbostock; 07.02.2013
comment
Правда. Я не прав. Я бы удалил свой ответ, но мы потеряем ваш ценный комментарий! - person sgillies; 07.02.2013
comment
Ха, спасибо. :) Я отправил отдельный ответ, который включает дополнительные соображения. - person mbostock; 08.02.2013

Это зависит от многих соображений. Среди них следующие:

1) Характер (модель данных) функции или функций, которые вы хотите представить 2) Любые атрибуты, которые вы хотите связать с этими функциями 3) Как вы хотите, чтобы эти функции вели себя на странице (статические или динамический)

Однако на этот вопрос сложно ответить абстрактно. Что касается некоторых особенностей, если у вас есть непрерывное полигональное покрытие или другая ситуация, когда объекты разделяют границы, модель topojson позволяет вам использовать избыточность и учитывать это в модели.

Прочтите документацию, проанализируйте примеры (например, bl.ocks.org), а затем получите некоторые данные и представьте их как в geojson, так и в topojson, и создайте свои собственные визуализации.

person wsvekla    schedule 07.02.2013
comment
Спасибо wsvekla. Я так и делал - на самом деле я нашел ваши материалы на bl.ocks.org (bl.ocks.org / wsvekla / 4533258 bl.ocks.org/4348435), но нелегко Google. Однако, как вы указываете, есть много соображений, и я пытаюсь изучить параллельные сравнения, чтобы понять это. - person Luke; 08.02.2013
comment
Эти два блока ссылаются на один и тот же исходный шейп-файл: bl.ocks.org/4485308 и bl.ocks.org/4348435. TopoJSON действительно начал погружаться, когда я наконец понял, как я могу представлять несколько объектов (национальные, ведомственные и муниципальные границы) с одними и теми же данными в одном файле (вы не можете сделать это с помощью geojson). Это достигается с помощью функции фильтра: function (a, b) {return a.id! == b.id;}). Попытайтесь понять это, и topojson начнет обретать смысл. Для лучшего справочника по коду и чистого минимализма см. Блок Майка: bl.ocks.org/4108203 - person wsvekla; 08.02.2013