サーチ…


メルカトルプロジェクション

メルカトル図法は、マップで使用される最も目立つ投影法の1つです。すべてのマップ投影と同様に歪みがあり、メルカトル投影では、これは極座標で最も顕著です。円筒投影で、子午線は垂直に走り、緯度は水平に走ります。

スケールはあなたのsvgのサイズに依存します。この例では、使用されるすべての尺度は幅960ピクセル×高さ450ピクセルです。

下の地図は、Mercator投影法のTissot's Indicatrixを示していますが、実際にはそれぞれの円は同じサイズですが、投影法は明らかに他のものよりも大きなものを示しています。 Tissots Indicatrix

この歪みは、投影がマップの1次元の伸張を回避しようとするためです。経線が北極と南極で合流するにつれて、それらの間の距離はゼロに近づき始めますが、投影の表面は長方形です(マップではありませんが、長方形でもあります)。距離の変化は許されません投射の子午線間。これは、極の近くのx軸に沿ってフィーチャを引き伸ばし、その形状を歪ませます。これに対処するために、Mercatorがy軸を伸ばし、極に近づくと、指標が円形になります。

上のマップの投影は、本質的に、デフォルトのMercator投影が少し上にシフトしたものです。

var projection = d3.geoMercator()
    .scale(155)
    .center([0,40]) // Pan north 40 degrees
    .translate([width/2,height/2]);

既知の緯度と既知の経度で投影を所定のポイントの中心に合わせるには、中心を指定することによってそのポイントに簡単にパンすることができます。

var projection = d3.geoMercator()
    .center([longitude,latitude])

これは、投影されたサーフェス(上のマップのように見えます)のそのフィーチャーにズームしません。

スケールは関心領域に合わせて調整する必要がありますが、大きな数値は大きなフィーチャ(ズームの度合いが大きい)に相当し、小さい数値は反対の数値です。ズームアウトすることで、ベアリングが、中心にあるポイントを基準にして、そのフィーチャがどこにあるのかを見つけることができます。

メルカトル図法の性質上、赤道に近い地域や低緯度では、このタイプの投影が最も効果的ですが、極域は非常に歪んでいる可能性があります。歪みはどんな水平線にも沿っているので、幅が広いが高さのない領域も良いかもしれませんが、北極と南極の極端な差が大きい領域は視覚的に歪みがあります。

たとえばインドの場合、次のように使用できます。

var projection = d3.geoMercator()
    .scale(800)
    .center([77,21])
    .translate([width/2,height/2]);

これは私たちに(ひずみを示すためのティソの指標で)再び与えます: ここに画像の説明を入力

これは歪みのレベルは低くなりますが、円のサイズはほぼ同じです(下の2つの行よりも上の2つの行の重なりが大きいため、歪みが見えます)。総合的には、地図はインドにはおなじみの形をしています。

面積の歪みは線形ではなく、極点に向かって大きく誇張されているため、極端に離れた北極と南極の極端な極と極にかなり近い位置の歪みは、歪みが許されないことを意味します。

var projection = d3.geoMercator()
    .scale(225)
    .center([-95,69.75])
    .translate([width/2,height/2]);

ここに画像の説明を入力

この計画は、実際にはカナダがグリーンランドの約5倍の大きさであるように、グリーンランドをカナダほど大きく見えるようにします。これは単にグリーンランドがカナダの大部分よりも北にあるためです(ごめんなさいオンタリオ州、私はあなたの南端の一部を断ち切っているようです)。

メルセデイアでは、y軸が極の近くでかなり伸びているので、この投影法はカナダの地理的中心からかなり北の点を使います。高緯度地域を扱う場合は、このストレッチを考慮してセンタリングポイントを調整する必要があります。

極座標のメルカトルプロジェクションが必要な場合は、歪みを最小限に抑えながらメルカトルプロジェクションを使用する方法があります。あなたは地球儀を回転させることでこれを達成することができます。デフォルトのMercator上でx軸を回転させると、左または右にパンするように見えます(投射している円筒に地球儀を回転させるだけです)。しかし、デフォルトのMercatorのy軸を変更すると、地球を横方向に、または他の角度に回します。 -90度の回転を持つメルカトルがあります:

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

ここに画像の説明を入力

指標ポイントは、上記の最初のマップと同じ場所にあります。マップの上または下に達するにつれて、歪みは依然として増加します。これは、地球が[0,0]と南極[180,0]の北極を中心に回転した場合、デフォルトのメルカトルマップがどのように表示されるかです。回転すると、投影している円筒が90°ポール。ポールがもはや歪みを持たないことに注意してください。これは、極端な歪みなしにポールの近くの領域を投影する別の方法を提示します。

例としてカナダを例にとると、地図を中心座標に回転することができ、エリアの歪みが最小限に抑えられます。これを行うには、もう一度センタリングポイントに回転することができますが、これにはさらに1つのステップが必要です。センタリングを行うと、フィーチャに移動し、回転して地球を移動させるので、センタリング座標の負の値が必要です。

var projection = d3.geoMercator()
    .scale(500)
    .rotate([96,-64.15])
    .translate([width/2,height/2]);    

ここに画像の説明を入力

ティソの標本は今や領域の歪みが小さいことに注意してください。このカナダは現在投影の原点にあり、地図フィーチャの中央に沿ってフィーチャのフィーチャは上部または下部よりも小さいため、スケールファクタは以前よりもはるかに大きくなります(上記の最初の情報を参照)。この投影の中心点または起点が[-96,64.15] 、中心に[-96,64.15]必要はありません。センタリングすると、この点から私たちを移動させることになります。

Albersプロジェクション

Albersの投影、より適切にはAlbersの等面積円錐投影は、米国の国勢調査局やカナダのブリティッシュ・コロンビア州など多くの管轄区域や組織の共通の円錐投影法と公式の投影法です。これは、形状、角度、距離などのマップの他の面を犠牲にして領域を保存します。

一般的なプロパティ

一般的な変換は、次のgifで取得されます。

ここに画像の説明を入力

(Mike Bostockのブロックに基づいて)

Albers投影は、2つの標準的な平行線の周りの歪みを最小限に抑えます。これらの平行線は、円錐形の投影が地球の表面と交差する場所を表します。

この例では、すべてのスケールは960ピクセル×450ピクセルの高さのSVDディメンションで使用され、スケールはこれらのディメンションとともに変化します

下の地図はAlbers投影法のTissot's Indicatrixを示し、北緯10度と20度の標準平行線を示しています。各サークルは実際には同じサイズと形状ですが、マップ投影では形状が歪んでしまいます(領域ではありません)。周囲の約10〜20度の北方では、指標はどこよりも丸くなっていることに注意してください。

ここに画像の説明を入力

これは次のような予測で作成されました。

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

より高い高度で平行線を使用すると、投影におけるアークの度合いが増します。次の画像では、北緯50度と60度の平行線を使用しています。

ここに画像の説明を入力

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

もし我々がマイナス(南部)の平行線を持っていたら、地図は上向きではなく下向きになる。 1つの平行線が北と南の場合、地図はより高い/より極端な平行線に向かって凹面になり、赤道から同じ距離であれば、地図はどの方向にも凹ではありません。

Parallelsの選択

平行線は歪みが最も少ない領域をマークするので、関心領域に基づいて選択する必要があります。関心のある領域が北北緯10度から北緯20度に伸びる場合、13と17の平行線を選択すると、マップ全体の歪みが最小限に抑えられます(これらの平行線のどちらかの側で歪みが最小限に抑えられます)。

Parallelsはあなたの関心領域の極端な北と南の境界線であってはなりません。 投射を一度地球の表面と交差させたい場合、Parallelsは同じ値にすることができます。

投影の参照と定義には、標準化された投影を再作成するために使用できる並列データが含まれます。

センタリングと回転

並行が選択されると、関心領域が適切に整列するようにマップを配置する必要があります。 projection.center([x,y])だけを使用すると、マップは選択したポイントにパンニングされ、他の変換は行われません。ターゲットエリアがロシアの場合、パンニングは理想的ではないかもしれません:

ここに画像の説明を入力

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度回転させます。

ここに画像の説明を入力

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

今、私たちは上下にパンすることができ、中央経線に沿った特徴は直立します。 x軸上の.center()を使用すると、回転によって設定された中央子午線を基準にしたセンタリングが行われます 。ロシアにとっては、公正な北朝鮮をパンして少しズームしたいかもしれません:

ここに画像の説明を入力

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

ロシアのような機能の場合、地図のアーチは、国の遠端が極の周りに伸びることを意味します。つまり、センタリングポイントが機能の重心ではない可能性があります。通常よりも北または南。

Tissots Indicatrixでは、ポール自体の近くで平坦化がいくつか見られますが、その形状は関心のある領域全体でかなり真実です(ロシアのサイズについては、歪みはかなり小さく、小さなフィーチャではそれほど小さくありません)。

ここに画像の説明を入力

デフォルトパラメータ

他のほとんどの投影とは異なり、d3.geoAlbers投影には、回転([0,0])と中心([0,0])ではな​​いデフォルトのパラメータがあり、デフォルトの投影は米国の中心に配置され、回転します。これは.parallels()も当てはまります。したがって、これらの値のいずれかが設定されていない場合、デフォルトではゼロ以外の値になります。

概要

Albers投影法は、一般に次のパラメータで設定されます。

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

ここで、aとbは2つの平行に等しい。

方位角等価投影

一般プロパティ:

Azimuthal Equidistant投影は、極座標領域で使用するときに最もよく認識されます。 国連の紋章に使用されています。中心点から、角度と距離が保持されます。しかし、投影は、特に中心から遠ざかるにつれて、これを達成するために形状と面積を歪ませます。同様に、距離と角度は、中心以外の場所では真ではありません。投影は円柱(メルカトル)または円錐(Albers)ではなく、方位角カテゴリに属します。この投影法は地球を円板として投影します:

ここに画像の説明を入力

(Mike Bostockのブロックに基づいて、北極を中心に、一旦折り畳まれた画像の上にある三角形のアーティファクトを無視する

スケールはあなたのsvgのサイズに依存します。この例では、特に指定のない限り、使用されているすべてのスケールは幅960ピクセル×高さsvg(必要に応じて四角形の場合は画面がクリップされます)です。

下の地図は、方位角等距離投影のティソの指標を示しています。

ここに画像の説明を入力

これは次のような予測で作成されました。

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

センタリングと回転:

センタリングはマップをパンしますが、全体の構図は変更しません。その他のパラメータを変更しないでゼロにすると、方位角の等距離を北極に合わせると、北極が画面中央に移動しますが、上記のマップは変更されません。

エリアの中心を適切に調整するには、それを回転させる必要があります。 d3の回転の場合と同じように、投影の下で地球を動かすと考えるのが最善です。したがって、y軸上の地図の下に-90度の地球を回転させると、実際には北極が中央に配置されます:

ここに画像の説明を入力

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

同様に、x軸の回転も同様に振る舞います。たとえば、北極を中心にカナダの北極が直立するように地図を回転するには、次のような射影を使用できます。

ここに画像の説明を入力

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


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow