Albers 预测

阿尔伯斯的预测,或更确切地说,阿尔伯斯等面积的圆锥投影,是美国人口普查局和加拿大不列颠哥伦比亚省等许多司法管辖区和组织的共同预测和官方预测。它以牺牲地图的其他方面为代价来保留区域,如形状,角度和距离。

一般属性

一般转换在以下 gif 中捕获:

https://i.stack.imgur.com/wBl77.gif

(基于迈克博斯托克的

Albers 投影可最大限度地减少两个标准平行线的失真。这些平行线表示锥形投影与地球表面相交的位置。

对于此示例,所有比例均使用 960 像素宽,450 像素高 svg 尺寸,比例将随这些尺寸而变化

下图显示了天梭的 Indicatrix,用于 Albers 投影,标准平行线为北纬 10 度和 20 度。每个圆实际上具有相同的大小和形状,但是地图投影会扭曲这些形状(而不是区域)。请注意,在大约 10 到 20 度的北方,指标比其他地方更圆:

StackOverflow 文档

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

var projection = d3.geoAlbers()
    .scale(120)
    .center([0,0])
    .rotate([0,0])
    .parallels([10,20])
    .translate([width/2,height/2]);

如果我们使用在更高海拔的平行线,投影中的电弧程度会增加。以下图像使用北纬 50 度和 60 度的平行线:

StackOverflow 文档

var projection = d3.geoAlbers()
    .scale(120)
    .center([0,70]) // shifted up so that the projection is more visible
    .rotate([0,0])
    .parallels([40,50])
    .translate([width/2,height/2]);

如果我们有负(南方)平行线,则地图将向下凹而不是向上。如果一个平行线是北方和一个平行线,则地图将朝向更高/更极端的平行线凹入,如果它们距离赤道的距离相同,则地图将不会在任何方向上凹入。

选择 Para​​llels

由于平行线标记失真最小的区域,因此应根据你感兴趣的区域进行选择。如果你感兴趣的区域从北纬 10 度延伸到北纬 20 度,那么选择 13 和 17 的平行线将最大限度地减少整个地图的失真(因为这些平行线两侧的失真最小化)。

Parallels 不应该是你感兴趣的区域的极端北部和南部边界。如果你只希望投影与地球表面相交一次,则 Parallels 可以是相同的值。

投影参考和定义包括可用于重新创建标准化投影的并行数据。

居中和旋转

选择平行线后,必须定位地图,以便正确对齐感兴趣的区域。如果仅使用 projection.center([x,y]),则地图将简单地平移到所选点,并且不会发生其他变换。如果目标区域是俄罗斯,则平移可能不太理想:

StackOverflow 文档

var projection = d3.geoAlbers()
    .scale(120)
    .center([0,50]) // Shifted up so the projection is more visible
    .rotate([0,0])
    .parallels([50,60])
    .translate([width/2,height/2]);

Albers 投影的中央子午线是垂直的,我们需要在投影下旋转地球以改变中央子午线。Alber 投影的旋转是使投影在 x 轴(或经度)上居中的方法。当地球在投影下旋转时,我们使用我们想要居中的经度的负值。对于俄罗斯来说,这可能在东方约 100 度,所以我们将以另一种方式将地球旋转 100 度。

StackOverflow 文档

var projection = d3.geoAlbers()
    .scale(120)
    .center([0,60])
    .rotate([-100,0])
    .parallels([50,60])

现在我们可以上下平移,中央子午线附近的特征将是直立的。如果你在 x 轴上的 .center(),你的居中将相对于旋转设置的中央子午线。对于俄罗斯,我们可能想要向北平移一点并放大一点:

StackOverflow 文档

var projection = d3.geoAlbers()
    .scale(500)
    .center([0,65])
    .rotate([-100,0])
    .parallels([50,60])

对于像俄罗斯这样的特征,地图的拱形意味着该国的远边将围绕极点伸展,这意味着中心点可能不是你的特征的质心,因为你可能需要更多地平移到北或南比往常。

使用 Tissots Indicatrix,我们可以看到杆本身附近有一些扁平化,但在整个感兴趣的区域内这种形状是相当正确的(请记住,对于俄罗斯的尺寸,失真相当小,对于较小的特征,它会更小):

StackOverflow 文档

默认参数

与大多数其他投影不同,d3.geoAlbers 投影附带的默认参数不是 .rotate([0,0])和 .center([0,0]),默认投影是针对美国居中和旋转的。.parallels() 也是如此。因此,如果未设置其中任何一个,它们将默认为非零值。

摘要

Albers 投影通常使用以下参数设置:

var projection = d3.geoAlbers()
    .rotate([-x,0])
    .center([0,y])
    .parallels([a,b]);

其中 a 和 b 等于两个平行线。