方位角等距投影

一般屬性:

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]);