目前在d3中,如果您要绘制一个geoJSON对象,则必须对其进行缩放并对其进行翻译,以使其达到所需大小并将其翻译以使其居中.这是一个非常乏味的反复试验,我想知道是否有人知道更好的方法来获得这些价值观?
所以,例如,如果我有这个代码
var path, vis, xy;
xy = d3.geo.mercator().scale(8500).translate([0, -1200]);
path = d3.geo.path().projection(xy);
vis = d3.select("#vis").append("svg:svg").attr("width", 960).attr("height", 600);
d3.json("../../data/ireland2.geojson", function(json) {
return vis.append("svg:g")
.attr("class", "tracts")
.selectAll("path")
.data(json.features).enter()
.append("svg:path")
.attr("d", path)
.attr("fill", "#85C3C0")
.attr("stroke", "#222");
});
Run Code Online (Sandbox Code Playgroud)
到底如何获得.scale(8500)和.translate([0,-1200]),而一点一点去?
我正在尝试将 shapefile 转换为 GeoJSON,然后转换为 TopoJSON,如Let's Make a Map 中所述。沿着链条的某个地方,有些东西被破坏了,我得到的图像如下所示:

我的工作流程如下:
将 shapefile 转换为 GeoJSON
ogr2ogr -f GeoJSON vt_towns.json Boundary_BNDHASH_region_towns.shp
Run Code Online (Sandbox Code Playgroud)将 GeoJSON 转换为 TopoJSON
topojson -p TOWNNAME -p CNTY -o vt.json vt_towns.json
Run Code Online (Sandbox Code Playgroud)插入基本模板,对 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); …Run Code Online (Sandbox Code Playgroud)