2

我一直在从 mbostock 的 us-atlas 集合中构建美国县的 TopoJSON 地图。对于大多数州,每个县创建一个多边形。伟大的!

对于密歇根州,由于某种原因,每个地形在导入的 shp 文件中都是独立的,因此有小岛(在湖上)的县有多个具有相同县 ID 和名称的多边形。我试图手动合并弧数组,结果是交集混乱。我尝试过使用不同的 topojson 设置进行重新处理,但到目前为止,还没有成功。

例如

…… {"type":"Polygon","arcs":[[250]],"id":"26033","properties":{"name":"Chippewa County"}},{"type":"Polygon","arcs":[[251]],"id":"26033","properties":{"name":"Chippewa County"}},{"type":"Polygon","arcs":[[252]],"id":"26033","properties":{"name":"Chippewa County"}}_

来自某个来源的其他州的数据正确地包括一个多边形中的所有弧线,一个 id 和一个县名,所以我很困惑。我真正想做的是以某种方式处理一个 shp 或 topojson 文件,以便将这些岛屿和陆地合并在一起。

4

1 回答 1

0

我遇到了同样的问题,并编写了一个简单的(阅读:粗糙和丑陋的)脚本来解决它,在这个 github gist 中看到:https ://gist.github.com/mkessy/7188859

基本上,问题来自于多个“多边形”类型的特征引用同一个县特征,所以当你使用例如 FIPS 代码作为键进行数据连接时,你最终会得到意想不到的结果,因为会有多个具有相同键的多边形。

解决方案很简单,将多边形组合并为一个类型为“ MultiPolygon ”的单一要素。这种类型很容易被 d3 path 函数理解,然后你可以进行数据连接等。

脚本所做的只是遍历特征并使用给定的 FIPS 代码捕获特征的坐标,并通过附加所有这些坐标数组来创建新特征。它还对 AREA、SQUARE_MIL 和 PERIMETER 属性进行重新求和。要使用该脚本,您必须直接从 shp 文件生成 GeoJSON。

于 2013-10-27T23:03:21.277 回答