Jos*_*osh 8 javascript d3.js topojson
我一直在尝试使用合并的图层数据创建一个TopoJson文件,其中包含美国各州,郡和国会区等其他图层.
原始的.shp shapefile来自人口普查局的制图边界文件.
这些通过ogr2ogr转换为GeoJson.
然后通过节点服务器端库合并为TopoJson格式,量化为1e7,保留比例为0.15.到目前为止,没有任何问题的迹象.
我使用mapshaper查看最终的topojson文件,看起来似乎没问题:
但是,当尝试使用topojson客户端库和D3.geo.path()进行渲染时,我在congressionalDist层中遇到了一些奇怪的路径:(注意美国大陆,AK和HI周围的大矩形路径)
该页面的工作版本可以在这里找到:http://jsl6906.net/D3/topojson_problem/map/
一些相关的说明:

在尝试了我能够处理的尽可能多的故障排除之后,我想我会问这里有人看看是否有人遇到过任何类似的问题.谢谢你的帮助.
正如我在评论中提到的,我注意到这三个有问题的矩形都绑定到属性以id结尾的数据ZZ,而所有其他路径的 ID 都以数字结尾。
经过一番谷歌搜索后,我找到了我认为的答案。
\n\n根据census.gov 网站上的这份文件,
\n\n\n\n\n在康涅狄格州、伊利诺伊州和密歇根州,州参与者并未指定当前(第 113 个)\n 国会选区来覆盖整个州或同等区域。代码 \xe2\x80\x9cZZ\xe2\x80\x9d 已分配给 \n 未定义国会选区的区域(通常是大型水体)。出于数据呈现的目的,这些未分配的区域在州内被视为单个国会选区。
\n
看起来这三个未定义的区域将占三个矩形。目前尚不清楚它们在过程中的哪个阶段引起了问题,但我相信有一个简单的解决方案可以解决您眼前的问题。在搜索有关代码的信息时,我在 mbostock 的一个名为 的项目中ZZ偶然发现了这个 makefileus-atlas。
看来他也遇到过类似的问题,并且在运行时成功过滤掉了未定义的国会选区ogr2ogr。这是该文件中的相关代码:
# remove undefined congressional districts\nshp/us/congress-ungrouped.shp: shp/us/congress-unfiltered.shp\n rm -f $@\n ogr2ogr -f \'ESRI Shapefile\' -where "GEOID NOT LIKE \'%ZZ\'" $@ $<\nRun Code Online (Sandbox Code Playgroud)\n\n我敢打赌,如果您ogr2ogr使用此处显示的标志在 shapefile 上运行,它将解决问题。