客户端topojson呈现看似不正确的路径

Jos*_*osh 8 javascript d3.js topojson

我一直在尝试使用合并的图层数据创建一个TopoJson文件,其中包含美国各州,郡和国会区等其他图层.

原始的.shp shapefile来自人口普查局的制图边界文件.

这些通过ogr2ogr转换为GeoJson.

然后通过节点服务器端库合并为TopoJson格式,量化为1e7,保留比例为0.15.到目前为止,没有任何问题的迹象.

我使用mapshaper查看最终的topojson文件,看起来似乎没问题:通过mapshaper渲染

但是,当尝试使用topojson客户端库和D3.geo.path()进行渲染时,我在congressionalDist层中遇到了一些奇怪的路径:(注意美国大陆,AK和HI周围的大矩形路径)方形路径

该页面的工作版本可以在这里找到:http://jsl6906.net/D3/topojson_problem/map/

一些相关的说明:

  • 如果我更改我的topojson生成脚本以删除简化,那么路径似乎通过相同的d3.js页面正确显示
  • 如果我在创建topojson时只保留congressionalDist图层,那么路径似乎通过相同的d3.js页面正确显示:

好

在尝试了我能够处理的尽可能多的故障排除之后,我想我会问这里有人看看是否有人遇到过任何类似的问题.谢谢你的帮助.

jsh*_*ley 4

正如我在评论中提到的,我注意到这三个有问题的矩形都绑定到属性以id结尾的数据ZZ,而所有其他路径的 ID 都以数字结尾。

\n\n

经过一番谷歌搜索后,我找到了我认为的答案。

\n\n

根据census.gov 网站上的这份文件,

\n\n
\n

在康涅狄格州、伊利诺伊州和密歇根州,州参与者并未指定当前(第 113 个)\n 国会选区来覆盖整个州或同等区域。代码 \xe2\x80\x9cZZ\xe2\x80\x9d 已分配给 \n 未定义国会选区的区域(通常是大型水体)。出于数据呈现的目的,这些未分配的区域在州内被视为单个国会选区。

\n
\n\n

看起来这三个未定义的区域将占三个矩形。目前尚不清楚它们在过程中的哪个阶段引起了问题,但我相信有一个简单的解决方案可以解决您眼前的问题。在搜索有关代码的信息时,我在 mbostock 的一个名为 的项目中ZZ偶然发现了这个 makefileus-atlas

\n\n

看来他也遇到过类似的问题,并且在运行时成功过滤掉了未定义的国会选区ogr2ogr。这是该文件中的相关代码:

\n\n
# 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\'" $@ $<\n
Run Code Online (Sandbox Code Playgroud)\n\n

我敢打赌,如果您ogr2ogr使用此处显示的标志在 shapefile 上运行,它将解决问题。

\n