海岸線を引く,陸地部分に色付けする

GMT の pscoast みたいなことを GMT や M_MAP に頼らず MATLAB でもやりたい.

海岸線データ取得

GSHHG のデータを使わせてもらう.
Mapping Toolbox が入っていると最初に一番粗いデータだけ入っているはず.

$ locate gshhs_c.b.gz
/usr/local/src/MATLAB/R2019b/toolbox/map/mapdata/gshhs_c.b.gz

さらに細かい解像度が必要な場合は NOAA のここ から拾ってくる.
gshhg-bin-X.X.X.zip に gshhs_c.b や gshhs_h.b などが入っており,拡張子の前の1文字は解像度を指す.
GMT の pscoast と同じで,粗い順に c (crude), l (low), i (intermediate), h (high), f (full).


GSHHG と Mapping Toolbox を使って境界を描く,境界面を塗る

GSHHG のファイルから都合の良い領域のデータを切り出す.
gshhs コマンドを使って取得したデータは構造体になっている.
単に海岸線だけがほしい(河川の境界はいらない等の)場合には,Level が 1 になっているものを抜き出して描く.

LatLim = [20,50];
LonLim = [120,155];
S = gshhs('./gshhs_i.b', LatLim, LonLim);
S = S([S.Level]==1);
figure
axis off
axm = axesm('eqdconic', 'FLineWidth', 1.0, 'MapLonLimit', LonLim, 'MapLatLimit', LatLim);
geoshow(S, 'EdgeColor', 'k','FaceColor',[1.0, 1.0, 0.5])
gridm on
framem on
mlabel on
plabel on
axesm(getm(axm),'LabelRotation','on','PLabelLocation',10,'MlabelLocation',10,'PLineLocation',5,'MLineLocation',5)

色は EdgeColor と FaceColor の値を変えれば海岸線・陸地の色が変えられる.
もちろんどちらかを描かないこともできる.

test_gshhs.png


参考

MathWorks のページ.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2020-11-13 (Fri) 16:10:25 (11d)