d3:我们在topojson格式中的文件大小太大了

时间:2013-11-12 23:17:27

标签: json d3.js 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文件大约是100kb。 states.json文件超过650kb。谁能解释为什么会这样?而且,更重要的是,我可以从states.json文件中删除哪些文件以大幅缩小其大小,同时仍然有效?

两个文件都为每个节点定义了弧,并且在文件末尾附近有一个“弧”节点。各州的弧节点是巨大的。我有一种感觉状态json文件具有我不需要的所有县边界。

2 个答案:

答案 0 :(得分:4)

除了rysloan建议,您还可以使用MapshaperQGIS来提取州边界。这两个都是免费的。要获得美国 - 州遵循以下步骤:

  • 将us.json文件上传到Mapshaper;
  • 将其导出为形状文件;
  • 打开拉链包装,你会注意到Mapshaper已经拆分了 topojson成3个形状文件,其中一个是us-states;
  • 将us-states.shp和us-states.shx上传到Mapshaper(您必须先刷新Mapshaper才能摆脱原始的us.json文件);和
  • 另存为topojson,你的文件大小为58kb。

答案 1 :(得分:0)

如果您的州json文件仍然包含:

objects:{"counties..." 

然后你的文件中仍然有县边界。在使用之前,您需要对文件进行一些预处理。您可以使用javascript删除'counties'属性(下划线是一个很好的对象操作库,请参阅_.omit)。其他选项涉及使用一些gis来解散县多边形。 PostGIS和R将有两种免费方式(参见post中的ST_UNION或R的maptools库中的unionSpatialPolygons)。

至于使世界边界地图变小,我不太确定。看起来像它漂亮的裸骨。