D3js从geojson中选择功能

时间:2016-02-02 15:49:06

标签: javascript json d3.js mapping

学习D3,我正在学习很多教程。到目前为止,我可以使用外部json文件为所有美国州创建美国地图。但是,我喜欢只用其中一个状态绘制地图(比如Alabama,这是json文件中的第一个特征)。

到目前为止的代码:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_app.settings")

application = get_wsgi_application()

.json的结构:

<script>

        var w = 500;
        var h = 300;

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

        var projection = 3.geo.albersUsa().translate([w/2,h/2]).scale([500]);
        var path = d3.geo.path().projection(projection);

        d3.json("us-states.json", function(json){

            svg.selectAll("path")
                .data(json.features)
                .enter()
                .append("path")
                .attr("d",path)
                .style("fill", "teal");
        });

   </script>

最原始的方法是,手动创建一个只有Alabama的新json文件,但我相信有更好的方法。我想我想创建一个带有json对象的新变量,我希望随后在d3.json函数中使用它。类似的东西:

{"type":"FeatureCollection","features":[{"type":"Feature","id":"01","properties":{"name":"Alabama"},"geometry":
{"type":"Polygon","coordinates":[[[-87.359296,35.00118],[-85.606675,34.984749],[-85.431413,34.124869],[-85.184951,32.859696],...

但我不知道如何从主json文件中获取信息。

1 个答案:

答案 0 :(得分:0)

您可以按索引选择状态并将所有内容放入数组中。像这样:

.data([topojson.feature(us, us.objects.states).features[1]])