1

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

在此处输入图像描述

在 QGIS 中打开时,世界地图和气候地图的 shapefile 似乎都已正确设置,并且它们似乎可以正确转换为 GeoJSON。我尝试将文件转换为 GeoJSON 而不是 TopoJSON,但得到了相同的结果。

我从这里得到了气候图

我的怀疑是我的代码中的某些设置不正确。有一个额外的复杂性是我需要向气候层添加一个剪辑路径,因为形状文件的方形边缘会渗入海洋,这看起来不太好。为了引入形状文件,我使用了以下函数:

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;
                    });
    });
}
4

1 回答 1

1

我认为您需要使用自适应重采样,正如 Mike 在这里描述的那样:http: //bost.ocks.org/mike/example/

于 2013-10-31T22:37:56.467 回答