我正在制作纽约市各行政区的地图,但我似乎无法正确投影:我唯一得到的是一张小地图。
我尝试重新创建此示例,这只会使控制台因错误而疯狂,我怀疑是因为等式有些不对劲。
当我试图让阿尔伯斯工作时,我尝试了这个问题的答案,但我仍然无法让地图工作。
With 960/500 height and width, I used: var projection = d3.geo.albers().center([40.71, 73.98]).parallels([29.5, 45.5]).scale(10000).translate([(width) / 2, (height)/2]);
现在,我正在使用横向墨卡托,下面的代码,以及我使用其中一个文件创建的拓扑。
var width = 960,
height = 500;
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
d3.json("nyc-borough.json", function(error, nyb) {
var boroughs = topojson.feature(nyb, nyb.objects["nyc-borough-boundaries-polygon"]).features;
var projection = d3.geo.transverseMercator()
.scale(1600)
.rotate([73 + 58 / 60, -48 - 47 / 60]);
var path = d3.geo.path()
.projection(projection);
var g = svg.append("g");
g.append("g")
.attr("id", "boroughs")
.selectAll(".state")
.data(boroughs)
.enter().append("path")
.attr("class", function(d){ return d.properties.name; })
.attr("d", path);
});
拜托,请减半:(
提前感谢!
我在这里创建了一个带有纽约市行政区的bl.ock。 您在 WSG84/墨卡托的道路上是正确的,因为这是原始数据的内容,正如 QGIS 中的快速检查所证明的那样。
QGIS也很好地检查了数据的中心,结果再次为[-73.94,40.70]。 请注意,这些与经度和经度的坐标相反,但 d3 需要经度和经度,如 API 中此处所述。 要注意的另一件事是负面因素。 北是正的,所以北半球的纬度是正的,南半球的纬度是负的。 对于东半球和西半球来说,东半球是积极的。当然,这只对美国阿尔伯斯的全球预测很重要,不会对美国产生负面影响。 哦,如果不看一下杰森戴维斯的工作,关于投影的讨论将是不完整的。
如果您想使用与数据所在的投影不同的投影,我通常认为最好将数据预处理到该投影中,QGIS 是一个很好的工具,但还有许多其他工具,例如 gdal。