我可以在TopoJSON(或其他方便的工具)中合并like-ID / like-name多边形(弧的集合)吗?

时间:2013-10-15 21:44:18

标签: shapefile topojson

我一直在使用mbostock的us-atlas系列构建美国各县的TopoJSON地图。对于大多数州,每个县创建一个多边形。太好了!

对于密歇根州,出于某种原因,每个地形在导入的shp文件中是分开的,因此具有小岛屿(在湖泊之外)的县具有多个具有相同县名和名称的多边形。我试图手动合并弧阵列,结果是一个交叉点混乱。我尝试过使用不同的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文件,以便将这些岛屿和陆地合并在一起。

1 个答案:

答案 0 :(得分:0)

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

基本上问题来自于具有“Polygon”类型的多个功能引用相同的County功能,因此当您使用例如FIPS代码作为键进行数据连接时,您将最终得到意外的结果,因为那里将是具有相同密钥的多个多边形。

解决方案很简单,将多边形组合并为一个类型为“MultiPolygon”的特征。 d3路径功能可以很容易地理解这种类型,然后你可以进行数据连接等。

所有脚本都会遍历这些功能并使用给定的FIPS代码捕获功能的坐标,并通过附加所有这些坐标数组来创建新功能。它还重新总结了AREA,SQUARE_MIL和PERIMETER属性。要使用该脚本,您必须直接从shp文件生成GeoJSON。