无法从geojson文件中检索GM_CODE

时间:2013-07-28 22:39:45

标签: d3.js

看了"Let's make a map"(很好的教程!)后,我决定制作一个省的地图,并为该省的所有市政府上色。我做了shapefile的工作,并成功地将整个省投影为黑色。你能帮助理解svg.selectAll(“。subunit”)函数,这样我可以改变它来从我的geojson文件中提取GM_CODE吗?如果需要,我可以发送geojson文件。

<!DOCTYPE html>
<meta charset="utf-8">

<style>
.GM_CODE.GM0003 { fill: #ddc; }
.GM_CODE.GM0005 { fill: #cdd; }
.GM_CODE.GM0007 { fill: #cdc; }
.GM_CODE.GM0009 { fill: #dcd; }

</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script>

var width = 960,
    height = 640;

var projection = d3.geo.albers()
    .center([0, 53.2])
    .rotate([-6.5, 0])
    .parallels([50, 60])
    .scale(40000)
    .translate([width / 2, height / 2]);

var path = d3.geo.path()
    .projection(projection);

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);

d3.json("groningen.json", function(error, json) {
  svg.selectAll(".subunit")
        .data(topojson.feature(json, json.objects.gemeente).features)
    .enter.append("path")
      .attr("class", function(d) { return "GM_CODE " + d.GM_CODE; })
      .attr("d", path);
});

</script>

1 个答案:

答案 0 :(得分:0)

首先,如果您使用的是GeoJSON文件,则应直接使用这些功能。

svg.selectAll('.subunits')
    .data(json.features)
    .enter()
    .append('path')
    .attr('class', function(d) { return 'GM_CODE ' + d.properties.GM_CODE; })
    .attr('d', path);

假设您的要素属性具有属性GM_CODE,您可以使用此代码分配类GM_CODEGM0003(例如)。如果您添加GeoJSON文件的示例,我可以在此更新确切的代码。