地球科学では、データを地図上に表示したくなることが多い。 Python で、地図をかき、その地図上にデータを表示するためのパッケージ 「cartopy」が開発されている。 その本家のウェブサイトは https://scitools.org.uk/cartopy/ にある。 これから数回かけて、cartopy をつかって空間分布する気象データを作図していく。
(「cartopy」という名まえは、cartography (地図学、地図作成技術) と Python からきている。)
X Window (Windows パソコンでは Xming) を起動したうえで、 端末 (Windows パソコン では TeraTerm) で niigata にログインして、 各自のホームディレクトリで (この授業用のディレクトリをつくっている人はそこに cd したうえで) つぎのことをやってください。
地球の表面上の図形を、平面の地図に表示する際には、 地球上の緯度・経度から、地図上の (x, y) への変換をおこなう。 この変換を「地図投影」という。 地図投影のうちには、実際に光をあてて投影することに相当する変換もあるが、 多くは数学的な関数による変換である。 球面上の図形の形や面積などの性質のすべてを 平面上に正確に表現することはできないので、 どの性質を重視するかによって、えらばれる投影方法がちがってくる。
Cartopy をつかって、いくつかの投影法で地図をかくプログラムを用意した。 下の「.py」で終わっているファイル名のリンクさきのファイルをダウンロードして動かしてみてほしい。 各ファイル名は、下線文字 (アンダースコア) をふくんでおり、空白文字 (スペース) をふくんでいない。
このページのプログラム例 (61a~i) では、 海岸線をひき、海と陸とをそれぞれ色でぬっている。 また、緯線・経線をひいているが、緯度・経度の数値はしめしていない。 それぞれ、最後の「plt.show()」で図を画面に表示するようになっている。 それを「plt.savefig('xxxx.pdf')」や 「plt.savefig('xxxx.png')」などに変えれば、 図を、PDFファイルや、PNGなどの画像ファイルに保存することもできる。
海岸線データは、(ユーザーから直接指示されなくても、coastlines() が最初によびだされたときに) 「Natural Earth」というウェブサイトからとってきている。 【ネットワーク接続の状況によっては、これがうまくいかなかったり、時間がかかったりすることがあるかもしれない。】
このページのプログラム例は、つぎのウェブページの例をまねしたところがある。
matplotlib のつかいかたが、ex3, ex4, ex5 とちがって、 figure (「fig」) と axes (「ax」) をわける方法によっている。 (地図投影をするばあいはこのほうがよいだろう。)
直進する光で見た像に対応する地図投影方法の例として、 赤道、東経140度にある静止衛星から見た地球の図をつくってみる。
天気図では、ローカルな風向を正しく表示したいという要求が強い。 たとえば、ある地点での北東の方向が、 地図上のその地点での経線の北方向 (図上の上方向と同じとはかぎらない) から 右へ45度の方向になっていてほしいのだ。 そこで、地図投影方法のなかで、「等角」という性質をもつものがえらばれる。 等角であることは、図形の形のゆがみがすくないことでもある。 緯線・経線が直交する直線で、等角の性質をもつのは、メルカトル (Mercator) 図法である。
メルカトル図法の世界地図をつくってみる。 北極・南極は無限遠になってしまうので、ある緯度でうちきっている。 世界地理をいくらか知っていれば、高緯度ほど拡大されているのがわかるだろう。 どの経線でくぎるかには任意性があるが、 わたしは大陸を分割したくなかったので (大西洋とグリーンランドを分割することになるが) 西経30度でくぎることにした。 「中央経線を東経150度とする」 と指定し、経度・緯度範囲を指定しないと、そのようになる。
図の範囲を、日本をふくむ、北緯 10-60度、東経 110-170度にかぎってみる (便宜上「東アジア」とよぶ)。 それには、ax.set_extent で、経度の最小値・最大値、緯度の最小値・最大値を リストにまとめて指定する。 また、ax.coastlines で海岸線のデータセットとして「50m」を指定している。 これは、(50メートルではなくて) 5千万分の1の地図にふさわしいくわしさをさしている。 (61b) のようにこれを指定しないと「110m」のデータがつかわれる。
緯線を 10度おきにひいているのだが、高緯度ほど緯線の間隔が広いのがわかるだろう。 メルカトル図法は各地点で東西方向と南北方向の縮尺が同じなので、 緯線間隔がのびているだけ、東西方向にも拡大されているのだ。
天気図だけでなく、「地理院地図」や Google Map などの多くのウェブ地図でも 標準的な投影方法としてメルカトル図法が採用されている。 ローカルな地図をみるためにはゆがみが小さくてよいのだが、 世界のうちの広い範囲をみるときには、緯度による縮尺のちがいに注意が必要だ。
メルカトル図法は、等角であるうえに、 低緯度の範囲にかぎれば縮尺の不均一も小さいので、 熱帯の天気図によくつかわれる。
ここでは、南緯25度から北緯25度、東経 80度から160度の範囲 (仮に「東南アジア」とよぶ) で作図してみる。緯線間隔を 5度にする。
中緯度の天気図では、等角であるとともに、縮尺の不均一が大きくない投影方法がもとめられる。 経線は直線とするが相互に平行でなくてよく、緯線は直線でなくてよいとすれば、この条件にあうものとして、 ランベルト等角円錐図法 (Lambert conformal conic projection) がある。 (ランベルトという人はいろいろな地図投影方法を考えたので、「ランベルト図法」ではどれだかわからない。) ここで仮に「東アジア」とよぶ緯度経度範囲について、この投影方法で作図してみる。
北極または南極をふくむ領域の地図をつくるときは、 緯線が同心円、経線が直線になるような投影方法がえらばれることが多い。 そのうちで等角の性質ももつのが、ステレオ (stereographic) 図法である。
地球上の現象を図示するとき、直交直線座標の横軸に経度、縦軸に緯度をとることもよくおこなわれる。 このような表示を英語で plate carree という。 (フランス語からの外来語らしく「carrée」のようにアクセント記号をつけた形もみかけるが、 ここでは cartopy にあわせてアクセント記号なしの形を採用する。) これも地図投影方法とみることができ、そのばあいは「正距円筒図法」という。 (距離が正しいのは経線上と赤道上である。)
正距円筒図法の世界地図をつくってみる。 メルカトル図法のばあいと同じように、東経 150度を中央経線としてみた。
ここで仮に「東アジア」とよぶ緯度経度範囲について、正距円筒図法で作図してみる。