方位角等距投影

一般属性:

Azimuthal 等距投影在极地区域使用时最佳识别。它用于联合国的标志 。从中心点开始,角度和距离得以保留。但是投影会扭曲形状和面积以实现这一目标,尤其是当人们从中心进一步移动时。同样,距离和角度不是在中心以外的位置。投影属于方位角范畴(而不是圆柱形(墨卡托)或圆锥曲线(阿尔伯斯)。这个投影将地球投射为圆盘:

https://i.stack.imgur.com/1iRVW.gif

(基于 Mike Bostock 的区块以北极为中心,一旦折叠,忽略图像顶部的三角形 artifactory

比例取决于你的 svg 的大小,对于这个例子,所使用的所有比例都在 960 像素宽,450 像素高的 svg 内(并且除非另有说明,否则屏幕被剪裁为需要的正方形)。

下面的地图显示了天梭的方形投影的天梭的 Indicatrix:

StackOverflow 文档

这是通过以下投影创建的:

var projection = d3.geoAzimuthalEquidistant()
   .scale(70)
   .center([0,0])
   .rotate([0,0])
   .translate([width/2,height/2]);

居中和旋转:

对中将简单地平移地图但不会改变其整体构图。将北极上的方位角等距离居中,同时保持其他参数不变或为零将使北极移动到屏幕的中心 - 否则不会改变上面的地图。

要正确居中区域,你需要旋转它。与 d3 中的任何旋转一样,最好将其视为在投影下移动地球,因此在 y 轴上旋转地图下方 -90 度实际上将北极置于中间:

StackOverflow 文档

var projection = d3.geoAzimuthalEquidistant()
   .scale(70)
   .center([0,0])
   .rotate([0,-90])
   .translate([width/2,height/2]);

同样,x 轴上的旋转表现相似。例如,要旋转地图以使加拿大北极直立,同时以北极为中心,我们可以使用如下投影:

StackOverflow 文档

var projection = d3.geoAzimuthalEquidistant()
    .scale(400)
    .center([0,0])
    .rotate([100,-90])
    .translate([width/2,height/2]);

这张地图使用了 600x600 svg

总的来说,这种简单性使得方位角等距离更容易设置投影,只需使用旋转。典型的投影将如下所示:

var projection = d3.geoProjection()
   .center([0,0])
   .rotate([-x,-y])
   .scale(k)
   .translate([width/2,height/2]);