この記事では,MATLAB app designerで地理プロットのデータ更新時に前に作成した地理プロットをクリアする方法を紹介します。
通常のプロットであれば,cla(app.対象UIAxes)
でクリアできるのですが,地理プロットだとそれができない。なので,色々と調べてたどり着いた結論を共有します。
結論
新しい地理プロットを作成の前に,delete(app.gx)
を挿入するだけ
MATLAB App Designerでの地理データの表示
位置情報データをMATLAB App Designer を使用してアプリで表示する方法はこちらの記事で紹介しました。位置情報データのAppでの表示についてはこちらの記事を参照してください。
位置情報データを切り替えるアプリの作成
機能の解説のため「更新ボタン」を押すことで,地理プロットのデータが更新されるアプリを作成します。設計ビューにボタンとパネルを使用して以下のような配置を作ります。
関数には以下の関数をセットします。
startupFcn
startupFcn
は,アプリを起動した際に実行される関数です。豊田市周辺にダミーの位置情報を100点作成し,それをapp.MapPanel
にgeoscatter
関数でプロットします。
function startupFcn(app)
% 豊田市周辺でダミーデータを作成:北緯34.9~35.4, 東経137.0~137.7 を100点作る
lat = 34.9 + (35.4-34.9).*rand(100,1);
long = 137.0 + (137.7-137.0).*rand(100,1);
% plotで確認
app.gx = geoaxes(app.MapPanel);
geoscatter(app.gx,lat,long,'red','filled')
end
MATLABアプリを起動するとこのようになります。
ButtonPushed
次に,データ更新ボタンを押した際に動作する関数である,ButtonPushed
関数の設定をします。5行目のdelete(app.gx)
がポイントです。
function ButtonPushed(app, event)
% 豊田市周辺でダミーデータを作成:北緯34.9~35.4, 東経137.0~137.7 を100点作る
lat = 34.9 + (35.4-34.9).*rand(100,1);
long = 137.0 + (137.7-137.0).*rand(100,1);
% plotで確認
delete(app.gx)
app.gx = geoaxes(app.MapPanel);
geoscatter(app.gx,lat,long,'blue','filled')
end
MATLABこれがないとボタンを押した際に,plotがこのように上書きされる形になります。
delete(app.gx)
を加えた場合の,実際にボタンを押した際の動きです。plotがクリアされて新しいplotが作成されています。
まとめ
この記事では,MATLAB app designerで地理プロットのデータ更新時に前に作成した地理プロットをクリアする方法を紹介しました。とてもシンプルです。
新しい地理プロットを作成の前に,delete(app.gx)
を挿入するだけ