2

我正在尝试将 shapefile 转换为 GeoJSON,然后转换为 TopoJSON,如Let's Make a Map中所述。沿着链条的某个地方,某些东西被破坏了,我得到的图像如下所示: 损坏的 VT 地图

我的工作流程如下:

  1. 从以下网址下载 shapefile:http: //vcgi.vermont.gov/warehouse/search_tools - 我正在使用主城镇边界数据,特别是“Boundary_BNDHASH_region_towns.shp”文件。
  2. 将 shapefile 转换为 GeoJSON

    ogr2ogr -f GeoJSON vt_towns.json Boundary_BNDHASH_region_towns.shp
    
  3. 将 GeoJSON 转换为 TopoJSON

    topojson -p TOWNNAME -p CNTY -o vt.json vt_towns.json
    
  4. 插入基本模板,对 Mike Bostock 的示例进行一些小的修改

    <!DOCTYPE html>
    <meta charset="utf-8">
    <style>
    
    /* CSS goes here. */
    
    </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 = 1160;
    
        var svg = d3.select("body").append("svg")
            .attr("width", width)
            .attr("height", height);
    
        var projection = d3.geo.transverseMercator()
                .rotate([72.57, -44.20])
                .translate([175,185])
                .scale([100]);
    
        // Define path generator
        var path = d3.geo.path()
            .projection(projection);
    
        d3.json("vt.json", function(error, vt) {
    
            var vermont = topojson.feature(vt, vt.objects.vt_towns);
    
            svg.append("path")
                .datum(vermont)
                .attr("d", path);
    
        });
    
    </script>
    

这不是我的第一张 d3 地图(这是我的第二张地图!)但我非常不知道出了什么问题。我最好的猜测是它与包含许多 shapefile 及其随附文件的解压缩数据集有关。

4

1 回答 1

5

您的文件似乎使用网格坐标系,使用选项-t_srs EPSG:4326获取纬度和经度:

ogr2ogr -f GeoJSON -t_srs EPSG:4326 vt_towns.json Boundary_BNDHASH_region_towns.shp

然后继续您的工作流程。

于 2013-06-05T00:03:35.710 回答