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 等於兩個平行線。