2

我在我的网页中渲染两个地图,我正在使用 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 文件中删除什么以显着减小其大小,同时仍然有效?

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

4

2 回答 2

4

除了 rysloan 建议之外,您还可以使用MapshaperQGIS来提取州边界。这两个也是免费的。要仅获取 us-states,请执行以下步骤:

  • 将 us.json 文件上传到 Mapshaper;
  • 将其导出为形状文件;
  • 打开压缩包,您会注意到 Mapshaper 已经将您的 topojson 拆分为 3 个形状文件,其中一个是 us-states;
  • 将 us-states.shp 和 us-states.shx 上传到 Mapshaper(您必须先刷新 Mapshaper 才能删除原始 us.json 文件);和
  • 另存为 topojson,您将拥有一个 58kb 大小的文件。
于 2013-11-13T13:03:38.703 回答
0

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

objects:{"counties..." 

那么您的文件中仍然有县边界。在使用之前,您需要对文件进行一些预处理。您也许可以使用 javascript 删除“counties”属性(下划线是一个很好的对象操作库,请参阅 _.omit)。其他选项包括使用一些地理信息系统来分解县多边形。PostGIS 和 R 将是免费执行此操作的两种方法(请参阅 postgis 中的 ST_UNION 或 R 的 maptools 库中的 unionSpatialPolygons )。

至于缩小世界边界地图,我不太确定。看起来就像它的骨头一样。

于 2013-11-12T23:55:22.357 回答