我正在尝试将shapefile转换为GeoJSON,然后转换为TopoJSON,如Let's Make a Map中所述。在链的某处,某些东西被破坏,我的结果图像如下所示:
我的工作流程如下:
将shapefile转换为GeoJSON
ogr2ogr -f GeoJSON vt_towns.json Boundary_BNDHASH_region_towns.shp
将GeoJSON转换为TopoJSON
topojson -p TOWNNAME -p CNTY -o vt.json vt_towns.json
插入基本模板,对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及其附带文件的解压缩数据集有关。
答案 0 :(得分:4)
您的文件似乎使用网格坐标系,使用-t_srs EPSG:4326
选项获取纬度和经度:
ogr2ogr -f GeoJSON -t_srs EPSG:4326 vt_towns.json Boundary_BNDHASH_region_towns.shp
然后继续您的工作流程。