Різниця між GeoJSON і TopoJSON


89

У чому різниця між GeoJSON і TopoJSON і коли я буду використовувати один над іншим?

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

Відповіді:


147

Якщо ви дбаєте про розмір файлу або топологію, тоді використовуйте TopoJSON. Якщо вас не хвилює жодна з них, тоді для простоти використовуйте GeoJSON.

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

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

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


2
І хоча я пам'ятав, що читав про "спільні сегменти рядків", я все одно припускав, що "топографія" означає "топографія", а це ні. Ось приємне читання про різницю між "топологією" та "топографією" (перша - це походження "топології" у topojson) - і мені доведеться прочитати тут
Червона горошина

Я б віддав перевагу використовувати геобуф, крім таких гібридних рішень, як топосйон, при підключенні до Інтернету.
tibetty

9

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


22
Навіть коли немає спільної топології, цілочисельне кодування з фіксованою точністю TopoJSON може бути значно ефективнішим, ніж плаваюча точка GeoJSON.
mbostock

16
Правда. Я помиляюся. Я б видалив свою відповідь, але ми втратили б ваш цінний коментар!
sgillies

Ха, дякую. :) Я подав окрему відповідь, яка включає додаткові міркування.
mbostock

3

Це залежить від багатьох міркувань. Серед них такі:

1) Характер (модель даних) об’єкта чи об’єктів, які ви хотіли б представляти 2) Будь-які атрибути, які ви хотіли б пов’язувати з цими об’єктами 3) Як ви хотіли б, щоб ці об’єкти поводились на сторінці (статичні проти динамічний)

Однак на це складне запитання можна відповісти абстрактно. Що стосується деяких особливостей, якщо у вас суміжний полігон покриття або інша ситуація, коли функції мають спільні межі, модель topojson дозволяє використовувати надмірність та коефіцієнт, що враховує цю модель.

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


Дякую wsvekla. Я робив це - я фактично знайшов ваші сутності на bl.ocks.org ( bl.ocks.org/wsvekla/4533258 bl.ocks.org/4348435 ), але непростий для пошуку в Google. Однак, як ви зазначаєте, є багато міркувань, і я намагаюся вивчити пліч-о-пліч порівняння, щоб навчитися цьому.
Лука

2
Ці два блоки посилаються на один і той же оригінальний шейп-файл: bl.ocks.org/4485308 та bl.ocks.org/4348435 . TopoJSON справді почав занурюватися, коли я нарешті зрозумів, як я можу представляти кілька функцій (національні, відомчі та муніципальні кордони) з однаковими даними в одному файлі (цього не можна зробити з geojson). Це досягається за допомогою функції фільтра: function (a, b) {return a.id! == b.id;}). Спробуйте це зрозуміти, і топойсон почне мати сенс. Для кращого посилання на код та простого
wsvekla
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.