MATLAB

【MATLAB】App Designerで地理プロットをクリアする方法

この記事では,MATLAB app designerで地理プロットのデータ更新時に前に作成した地理プロットをクリアする方法を紹介します。

通常のプロットであれば,cla(app.対象UIAxes) でクリアできるのですが,地理プロットだとそれができない。なので,色々と調べてたどり着いた結論を共有します。

結論

新しい地理プロットを作成の前に,delete(app.gx) を挿入するだけ

MATLAB App Designerでの地理データの表示

位置情報データをMATLAB App Designer を使用してアプリで表示する方法はこちらの記事で紹介しました。位置情報データのAppでの表示についてはこちらの記事を参照してください。

位置情報データを切り替えるアプリの作成

機能の解説のため「更新ボタン」を押すことで,地理プロットのデータが更新されるアプリを作成します。設計ビューにボタンとパネルを使用して以下のような配置を作ります。

アプリ設計ビューの配置

関数には以下の関数をセットします。

startupFcn

startupFcnは,アプリを起動した際に実行される関数です。豊田市周辺にダミーの位置情報を100点作成し,それをapp.MapPanelgeoscatter関数でプロットします。

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) を挿入するだけ

-MATLAB
-, ,