Angular, Blockchain, Science とか

Angular, Blockchain, Science全般 の情報を主に書いていきます。

matplotlib basemap 入門2 managing projections

前回の続きここでは、Projections 地図の投影法 を見ていきます。

全ての map は Projections を持たなくてはいけません。

まず cyl、 Cylindrical Equidistant projection, also known as Equirectangular projection or Plate Carrée
日本語だと正距円筒図法っていうらしい

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

map = Basemap(projection='cyl')

map.drawmapboundary(fill_color='aqua')
map.fillcontinents(color='coral',lake_color='aqua')
map.drawcoastlines()

plt.show()

こんな感じになる
f:id:firesparrow:20170113134958p:plain
多くのProjectionsは追加の引数を必要とします。

projections は aeqd

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

map = Basemap(projection='aeqd', lon_0 = 10, lat_0 = 50)

map.drawmapboundary(fill_color='aqua')
map.fillcontinents(color='coral',lake_color='aqua')
map.drawcoastlines()

plt.show()

lon_0 = 10, lat_0 = 50 の部分はlongitude = 10 and latitude = 50 つまり経度10 緯度50 を意味します。
aeqdはAzimuthal Equidistant Projectionの略と思われる。日本語では正距方位図法。詳しく知りたい人はwiki参照

正距方位図法 - Wikipedia
f:id:firesparrow:20170113141532p:plain
SRID?EPSG? これについてはこの記事がよくまとまっているので参照されたし

qiita.com

ここでいくつかの言葉を整理する。

llcrnrlon 左下端の経度(degree)
urcrnrlon 右上橋の経度
llcrnrlat 左下端の緯度
urcrnrlat 右上端の緯度

幅で指定する場合

width  地図の東西幅(メートル)
heiht  地図の南北幅
lon_0  地図の中心経度(degree)
lat_0  地図の中心緯度

極中心の場合(npstere,spstere,nplaea,splaea,npaeqd,spaeqd)

lon_0  中心となる経度(GrADSでは180度)
boundinglat  境界の緯度
地図の種類によっては内部で計算されるので指定しなくてよいものもある。

その他

resolution  地図の境界の解像度。c(crude) < l(low) < i(intermediate) < h(high) < f(full) の順で細かくなる。デフォルトはc
aspect  地図のアスペクト比。(y方向, x方向)
fix_aspect  地図の縦横比を地形に対して固定するか。デフォルトはTrue
lat_ts   スケールが正しくなる緯度。stereographicかmercatorの場合に指定できる。stereographicではlat_0、mercatorでは0がデフォルト
roun  極中心の図のときに枠を円にするか。

matplotlib basemap 入門3 に続く

firesparrow.hatenablog.com