Complementary Eckert-Greifendorff projection

地図投影法を開発してみたシリーズ4

Equal-area ovalシリーズ3部作その2。

https://research.tableau.com/paper/bevy-area-preserving-transforms-map-projection-designersから

Directional path offset、前回のように擬円筒図法を詰めてつなぎ合わせるだけじゃなく、経緯度関係なく詰めたりしてもいいんだなー思いつかなかった。例えばこんな計算ということか。

f:id:dummy_index:20200831233553p:plain
Offsetted azimuthal equal-area double hemisphere

エイトフ変換をせずに席詰め(以降directional path offsetのことをこう呼ぶことにします)をすると緯線が90度を超えて反ってしまうな(水平から90度を超えるかどうかより地図の端で経線と交差する角度のほうが力学的に気になる)エイトフ変換をしても極付近の緯線はほぼ垂直になるから他になにか挟んだだけでまた90度超えしそうだし、もっとエイトフ変換について考えないと…

http://www.cartography.oregonstate.edu/pdf/2014_Savric_Jenny_ANewPseudocylindricalEqual-areaProjection.pdfの3ページ

1 \lt B \lt 2は緯線が両方の意味で反りが強すぎるのでそのままでは採用できません。 B=4 (Eckert-Greifendorff projection) は緯線を水平に近づけるのには成功しているけどそれが同時にHammerから高緯度の歪で知られるSinusoidalに近づけるような真似になってしまいます。B \lt 2にするのではない方法で逆方向に変化させるには…楕円からひし形に近づけるのの逆をするには…

こうじゃ!

f:id:dummy_index:20200901233522p:plain
Eckert-Greifendorff projection uses -pi/4 ~ +pi/4
f:id:dummy_index:20200901233643p:plain
Use the portion out of Eckert-Greifendorff projection, then do the directional path offset

f:id:dummy_index:20200901234243p:plain
Complementary Eckert-Greifendorff projection

Y座標からoffset量を求めるのに最初はニュートン法を使っていたのですが、Wolfram|Alphaを頼って閉形式の式を得ました。ヒントになったのがhttps://research.tableau.com/paper/bevy-area-preserving-transforms-map-projection-designersのHamusoidalのy_c\phi_{CM}の関係式。これなら\lambda=0以外でも明示的に解けそう…

solve y = (2/(1+cos(phi)*c))^0.5 * sin(phi) for phi - Wolfram|Alpha

そうしたら前提の\lambdaと得られた\phiから改めてforward formulaでxを得ます*1。式を整理して

x = \frac{\sqrt{(\cos^2(\lambda)-2)y^2 - \cos(\lambda)\cdot \sqrt{\cos^2(\lambda)\cdot y^4-8y^2+16}+4}}{\sqrt 2} \cdot \mbox{sgn}(\lambda) \cdot \mbox{sgn}(\cos^2(\lambda)\cdot y^4-8y^2+16)

f:id:dummy_index:20200903225153p:plain
Explicit function that gets x of specified meridian on specified y

出来上がった絵を見ると、緯線の折れはそんなに気にならないですね。緯線が端までまっすぐ突っ走って極付近の変形具合が…むしろMollweideに近い印象を受けます(でも歪は有限で収まります)。

…あれ、これB \lt 2の場合の緯線の反りの緩和にも使えそう。でもovalシリーズから外れる感じになるから後で別記事にします。

前回のと今回のを模式化すると

f:id:dummy_index:20200906234659p:plain
Where each meridian is come from

そして試しに、使わずに取り除く経度範囲を\pm\frac{1}{8}\pi\pm\frac{3}{8}\piに変更してみます。

f:id:dummy_index:20200906235136p:plain
Complementary Eckert-Greifendorff projection (remove ±pi/8)
f:id:dummy_index:20200906235328p:plain
Complementary Eckert-Greifendorff projection (remove ±3pi/8)

\pm\frac{1}{8}\piのほうはとても自然で特徴がない感じ…

github.com

2020.09.03 初版 2020.09.07 図差し替え、内容追加

*1:xyから\lambdaを求めるInverse formulaをxについて解けたら話が早かったのですがそれはWolfram|Alphaさんに断念されてしまいました