D3js地图:南极陆地填充神器?

时间:2013-10-25 03:16:17

标签: d3.js topojson

我正在使用D3js制作Köppen-Geiger气候分类图,但由于某种原因,南极上空的覆盖层只是部分填充在非洲大陆。 正在进行的版本is on github here

enter image description 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;
                    });
    });
}

1 个答案:

答案 0 :(得分:1)

我认为您需要使用自适应重新采样,正如Mike在此处所述:http://bost.ocks.org/mike/example/