我正在使用D3js制作Köppen-Geiger气候分类图,但由于某种原因,南极上空的覆盖层只是部分填充在非洲大陆。 正在进行的版本is on github here
在QGIS中打开时,世界地图和气候图的形状文件似乎都已正确设置,它们似乎可以正确转换为GeoJSON。我尝试将文件转换为GeoJSON而不是TopoJSON,但结果相同。
我从here
获得了气候图我怀疑我的代码中设置的内容不正确。还有一个额外的复杂因素,我需要为气候层添加一个剪辑路径,因为形状文件有方形边缘流入海洋,这看起来不太好。为了引入形状文件,我使用以下函数:
function loadOverlay(overlayFile) {
d3.json(overlayFile, function (error, climate) {
// remove the old overlay if it exists
svg.selectAll(".overlay")
.remove();
// add new overlay to the map
svg.append("g")
.attr("class","overlay") // set the class
.attr("clip-path", "url(#clip)") // use the shoreline paths as a clip path
.selectAll(".climate")
.data (topojson.feature(climate, climate.objects.features).features) // load the overlay from topoJSON
.enter()
.append("path")
// set the Climate type from the gridcode feature property in the topoJSON file
.attr("class",function (d) {
return "climate " + d.properties.gridcode;
})
.attr("d", d3.geo.path().projection(projection))
.attr("title", function (d) {
return d.properties.gridcode;
});
});
}