我可以围绕其中心点顺时针转动 D3 地图投影吗?
Can I turn a D3 map projection clockwise around its centre point?
如果可以的话,我怎样才能将我的地图顺时针旋转大约 15-20 度,使其看起来像我在地图集中看到的中东地图?
直觉上,.rotate
看起来应该这样做,但我尝试插入不同的值,但它只是 'uncentres' 地图。
我认为 D3 代码的重要部分是:
var projection = d3.geo.albers()
.center([49.7, 27.4])
.rotate([0, 0, 0])
.parallels([12.6, 40])
.scale(800)
.translate([width / 2, height / 2]);
(1)
谢谢。
(2)
我正在尝试复制看起来像这样 (2) 的地图 - 只是因为人们在常规地图集中看到的很熟悉。
不知道您到目前为止使用 projection.rotate()
尝试过什么,我仍然认为这种方法会产生预期的结果。例如,如您的示例中指定的那样,围绕 LAT=49.7N、LON=27.4E 顺时针旋转 20 度可以通过以下方式完成:
projection.rotate([-49.7,-27.4,-20])
我设置了一个 Plunk 来展示结果。
更新
如果您不一定要使用阿尔伯斯投影,可能还有其他选项可以提供更符合您需求的结果
what people are familiar with seeing in a regular atlas.
我在三张地图集中查找了它,其中使用等距柱状投影描绘了阿拉伯半岛,这看起来像您想要的输出:
var projection = d3.geo.equirectangular()
.rotate([-49.7,-27.4])
您只需通过应用 .rotate([-49.7,-27.4])
以 LAT=49.7N、LON=27.4E 为中心,而无需进一步滚动投影,即您不会将数组中的第三个元素提供给 rotate()
。请参阅我更新的 Plunk。对我来说,这看起来就像我在地图集中看到它时所期望的样子。
如果可以的话,我怎样才能将我的地图顺时针旋转大约 15-20 度,使其看起来像我在地图集中看到的中东地图?
直觉上,.rotate
看起来应该这样做,但我尝试插入不同的值,但它只是 'uncentres' 地图。
我认为 D3 代码的重要部分是:
var projection = d3.geo.albers()
.center([49.7, 27.4])
.rotate([0, 0, 0])
.parallels([12.6, 40])
.scale(800)
.translate([width / 2, height / 2]);
(1)
谢谢。
(2)
我正在尝试复制看起来像这样 (2) 的地图 - 只是因为人们在常规地图集中看到的很熟悉。
不知道您到目前为止使用 projection.rotate()
尝试过什么,我仍然认为这种方法会产生预期的结果。例如,如您的示例中指定的那样,围绕 LAT=49.7N、LON=27.4E 顺时针旋转 20 度可以通过以下方式完成:
projection.rotate([-49.7,-27.4,-20])
我设置了一个 Plunk 来展示结果。
更新
如果您不一定要使用阿尔伯斯投影,可能还有其他选项可以提供更符合您需求的结果
what people are familiar with seeing in a regular atlas.
我在三张地图集中查找了它,其中使用等距柱状投影描绘了阿拉伯半岛,这看起来像您想要的输出:
var projection = d3.geo.equirectangular()
.rotate([-49.7,-27.4])
您只需通过应用 .rotate([-49.7,-27.4])
以 LAT=49.7N、LON=27.4E 为中心,而无需进一步滚动投影,即您不会将数组中的第三个元素提供给 rotate()
。请参阅我更新的 Plunk。对我来说,这看起来就像我在地图集中看到它时所期望的样子。