我一直在尝试使用合并的图层数据创建一个TopoJson文件,其中包含美国各州,郡和国会区等其他图层。
原始的.shp shapefile来自人口普查局的Cartographic Boundary Files。
通过ogr2ogr将它们转换为GeoJson。
然后通过节点服务器端库合并为TopoJson格式,量化为1e7,保留比例为0.15。到目前为止,没有任何问题的迹象。
我使用mapshaper查看最终的topojson文件,看起来似乎没问题:
但是,当尝试使用topojson客户端库和D3.geo.path()进行渲染时,我在congressionalDist层中遇到一些奇怪的路径:(注意美国大陆,AK和HI周围的大矩形路径){ {0}}
可以在此处找到该页面的工作版本:http://jsl6906.net/D3/topojson_problem/map/
一些相关的说明:
在尝试了我能够处理的故障排除之后,我想我会问这里有人看看是否有人遇到过任何类似的问题。谢谢你的帮助。
答案 0 :(得分:4)
正如我在评论中提到的,我注意到三个违规的矩形都绑定到id
属性以ZZ
结尾的数据,而所有其他路径的ID都以数字结尾。
经过一些Google搜索后,我想出了我认为的答案。
根据census.gov网站上的this document,
在康涅狄格州,伊利诺伊州和密歇根州,州参与者没有指定当前(第113位) 国会选区覆盖所有州或同等地区。代码“ZZ”已分配 到没有定义国会区的地区(通常是大型水体)。这些未分配的区域 在国家内被视为单一的国会选区,用于数据展示。
似乎这三个未定义的区域将占据三个矩形。目前还不清楚他们在这个过程中会导致什么问题,但我相信对你眼前的问题有一个简单的解决方案。在搜索有关ZZ
代码的信息时,我在mbostock名为this makefile的项目中偶然发现了us-atlas
。
他似乎遇到了类似的问题,并设法在运行ogr2ogr
时过滤掉未定义的国会区。以下是该文件中的相关代码:
# remove undefined congressional districts
shp/us/congress-ungrouped.shp: shp/us/congress-unfiltered.shp
rm -f $@
ogr2ogr -f 'ESRI Shapefile' -where "GEOID NOT LIKE '%ZZ'" $@ $<
我敢打赌,如果你使用此处显示的标志在shapefile上运行ogr2ogr
,它将解决问题。