d3: штаты США в формате topojson размер файла слишком велик


Я визуализирую две карты на своей веб-странице и использую для этого d3. Один из них-карта мира, на которой изображены границы всех стран. Файл, который я использую, является версией этого: https://raw.github.com/mbostock/topojson/master/examples/world-110m.json

Вторая карта-это штаты США. Все, что мне нужно, - это государственные границы (а не округа). Я использую модифицированную версию этого файла: http://bl.ocks.org/mbostock/raw/4090846/us.json

Я изменил оба файла на включите имя и двухбуквенный код штата или страны), который я использую для подсказок.

Файл world-110m. json составляет около 100 Кб. Штаты.файл json значительно превышает 650 КБ. Кто-нибудь может объяснить, почему это так? И, что еще важнее, что я могу вывезти из Штатов.JSON-файл, чтобы существенно уменьшить его размер, оставаясь при этом действительным?

Оба файла имеют дуги, определенные для каждого узла, а также узел" дуги " в конце файла. Узел дуги Штатов огромен. У меня такое чувство, что ... в файле JSON Штатов есть все границы графств, которые мне не нужны.

2 2

2 ответа:

В дополнение к rysloan предложения, которые вы можете использовать Mapshaper и в QGIS, чтобы извлечь государственной границы. Оба они также свободны. Чтобы получить только США-Штаты, выполните следующие действия:

  • загрузить США.файл json в Mapshaper;
  • экспортируйте его как файл формы;
  • распакуйте молнию, и вы заметите, что Mapshaper уже разделил ваш topojson в 3 форме файлов, один из которых является США-Штаты;
  • загрузить штаты США.ШП и США-Штаты.shx to Mapshaper (вы будете иметь, чтобы обновить Mapshaper, чтобы избавиться от оригинальной США.JSON file first); и
  • сохраните как topojson, и у вас будет файл размером 58 КБ.

Если ваш файл states json все еще содержит:

objects:{"counties..." 

Тогда у вас все еще есть границы графства в вашем файле. вам нужно будет выполнить предварительную обработку вашего файла перед его использованием. вы можете просто удалить свойство 'counties' с помощью javascript (подчеркивание-хорошая библиотека для манипулирования объектами, см. _.пропускать). другие варианты включают использование некоторых ГИС для растворения полигонов графства. PostGIS и R - это два способа сделать это бесплатно(см. ST_UNION в postgis или unionSpatialPolygons в библиотеке r's maptools).

Что касается того, чтобы сделать карту мировых границ меньше, я не слишком уверен. похоже, у него и так довольно голые кости.