2013-07-28 3 views
1

Посмотрев на "Let's make a map" (хороший учебник!), Я решил составить карту нашей провинции и раскрасить все муниципалитеты этой провинции. Я делал работу над шейп-файлами и претворялся в проекции всей провинции черным. Можете ли вы помочь понять функцию svg.selectAll (". Subunit"), чтобы я мог ее изменить, чтобы извлечь GM_CODE из моего файла geojson? При необходимости я могу отправить файл 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> 

ответ

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_CODE и GM0003 (например) с этим кодом. Если вы добавите образец своего файла GeoJSON, я могу обновить здесь точный код.

Смежные вопросы