В чем разница между GeoJSON и TopoJSON, и когда я могу использовать одно вместо другого?
Описание TopoJSON на GitHub подразумевает TopoJSON файлы 80% меньше. Так почему бы просто не использовать TopoJSON все время?
В чем разница между GeoJSON и TopoJSON, и когда я могу использовать одно вместо другого?
Описание TopoJSON на GitHub подразумевает TopoJSON файлы 80% меньше. Так почему бы просто не использовать TopoJSON все время?
Ответы:
Если вам важен размер файла или топология, используйте 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) Как вы хотите, чтобы эти функции вели себя на странице (статические или динамический)
Однако на этот вопрос сложно ответить абстрактно. Что касается некоторых особенностей, если у вас есть непрерывное полигональное покрытие или другая ситуация, когда объекты разделяют границы, модель topojson позволяет вам использовать избыточность и учесть это в модели.
Прочтите документацию, проанализируйте примеры (например, bl.ocks.org), а затем получите некоторые данные и представьте их как в geojson, так и в topojson, и создайте свои собственные визуализации.