gpt4 book ai didi

javascript - d3 voronoi map 能否与 geoAlbers 以外的任何其他投影配合使用?

转载 作者:行者123 更新时间:2023-11-29 18:58:17 25 4
gpt4 key购买 nike

我正在从示例链接学习 voronoi map https://bl.ocks.org/mbostock/7608400

但是当我想将投影更改为 mercator 时它不起作用。为什么?

这是我更改的唯一代码:

var projection = d3.geoMercator()
.translate([width / 2, height / 2])
.scale(1280);

最佳答案

是的,voronoi 应该适用于任何投影 - 它使用 svg 坐标空间中的投影点。如果你看到点,你可以做一个voronoi。

问题是您需要修改投影的参数。阿尔伯斯投影需要两条割线或平行线,其中地球的椭圆体与投影的锥体相交(或者,一条切线或平行线)。这些很少设置为赤道,因此 D3 具有适合美国并以美国为中心的阿尔伯斯投影的默认设置,因为将所有默认值保留为零没有多大意义。

D3 中的大多数其他投影都有其默认设置,导致 map 以 [0,0] 为中心,这是本初子午线和赤道,就在非洲海岸附近。因此,这就是您设置投影时所看到的位置 - 没有可见点,没有可见的 voronoi(可能除了外围。

如果您将比例尺设置得小得多,比如 170,您会看到您的 map ,但所有要素都将位于左上角:

enter image description here

我们可以使用 Albers 的默认居中坐标来居中 Mercator,而不是仅仅缩小:

projection.center([-96,39])

如果放大得太大,请降低比例值,如果缩小得太远,则增加比例值。由于墨卡托的尺寸失真在两极附近变得非常严重,您可能需要向外扩展。

这是我通过示例代码和投影得到的结果,缩小了一点,但取决于您是否想要阿拉斯加,您可能想要放大或缩小:

var projection = d3.geoMercator()
.translate([width / 2, height / 2])
.scale(600)
.center([-96,39])

enter image description here

关于javascript - d3 voronoi map 能否与 geoAlbers 以外的任何其他投影配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48143248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com