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

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

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

3 ответа

Решение

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам