2013-11-12 3 views
2

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

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

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

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

Оба файла имеют дуги, определенные для каждого узла, а также узел «дуга» в конце файла. Дуговый узел состояний является гуманным. У меня есть ощущение, что у json-файла состояния есть все границы графства, которые мне не нужны.

+0

Возможно, вы захотите использовать [topojson] (https://github.com/mbostock/topojson) вместо geojson. –

+2

Интересно. Я думал, что в json-файле я использовал WAS topojson, а не geojson. Не уверенный, почему Майк Босток использовал бы geojson для этого примера, когда он защищает использование топожей, похоже, везде. Спасибо за указатель. – dylanmac

ответ

4

В дополнение к предложениям Rysloan вы можете использовать Mapshaper и QGIS для извлечения государственных границ. Оба они также бесплатны. Для получения только состояний пользователя выполните следующие шаги:

  • Загрузить файл us.json в Mapshaper;
  • Экспортировать его в файл формы;
  • Распакуйте почтовый индекс, и вы заметите, что Mapshaper уже разделил ваш topojson на 3 файла формы, один из которых является us-state;
  • Загрузите us-states.shp и us-states.shx в Mapshaper (вам нужно будет обновить Mapshaper, чтобы сначала избавиться от исходного файла us.json); и
  • Сохраните как topojson, и у вас будет файл размером 58kb.
+0

Я использовал Mapshaper для удаления слоя графств из файла TopoJSON, который у меня был, и разместил его как сущность здесь: https://gist.github.com/lencioni/cd3baf0a7acdc9cc22a6 –

0

если ваши состояния JSON файл по-прежнему содержит:

objects:{"counties..." 

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

, что делает карту границ мира меньшей, я не уверен. выглядит как его довольно голые кости, как есть.

Смежные вопросы