GUI MATLAB для печати на Worldmap / Geoshow / Axesm - PullRequest
0 голосов
/ 26 сентября 2019

В настоящее время я пытаюсь создать графический интерфейс для выбора файлов .m из папки и вывести эти данные на карту мира в графическом интерфейсе.Я знаю, что в MATLAB сейчас есть такие вещи, как App Designer, но мне все еще трудно.Во-первых, я не уверен, смогу ли я заставить карту мира отображать в пределах GUI и иметь наложения сверху на графике при выборе.У меня есть код, с которым я смог работать, который еще не оптимизирован для GUI.Мне просто нужна помощь, чтобы начать в правильном направлении.

Мои вопросы: 1) Возможно ли иметь карту мира с несколькими графиками в графическом интерфейсе с использованием MATLAB?2) Как я могу сделать это?Документация, предоставленная моим MATLAB, похоже, не решает вопрос о картах мира в GUI.

Мой текущий код без графического интерфейса указан ниже:

clear;
clc;
format long
% Specify folder where the files live 
myFolder = 'C:\Users\J87662\Desktop\MAT Files';
% Check to make sure folder exists. Warns user if doesn't. 
if ~isdir(myFolder)
    errorMessage = sprintf('Error: The following folder does not exist:\n%s', myFolder);
    uiwait(warndlg(errorMessage));
    return;
end
% Get a list of all files in the folder with the desired file name pattern.
theFiles = dir(fullfile(myFolder, '*.mat')); % Using .mat as the desired file type.
% Number of files in the folder 
n = numel(theFiles);
data = cell(1,n);
% Establish time-frame for reference 
startDLG = inputdlg({'Year','Month','Date','Hour','Minute','Second'},'Enter starting time:', [1 60]); %
csStartIn = str2num(strjoin(startDLG, ',')); % Comma-separated input
% What we will use for finding where to begin plotting
StartDN = datenum(csStartIn);
endDLG = inputdlg({'Year','Month','Date','Hour','Minute','Second'},'Enter ending time:', [1 60]);
CSEndIn = str2num(strjoin(endDLG, ',')); % Comma-separated input
% What we will use for finding where to end plotting
endDN = datenum(CSEndIn); 
% Figure with coastlines
figure
load coastlines
geoshow(coastlat, coastlon)
geoshow('landareas.shp', 'FaceColor', [.56 .93 .56]);
hold all
% Plotting GPX Data
for k=1:n
    hold on
    % Creates a colormap based on the amount of files we have
    cmap = hsv(k);
    % Read each file 
    data{k} = load(fullfile( myFolder, theFiles(k).name )); 
    baseFileName = theFiles(k).name;
    fullFileName = fullfile(myFolder, baseFileName);
    fprintf(1, 'Now reading %s\n', fullFileName);
    endpoint = length(data{1,k}.lat);
    % Read time from each route 
    routetime = data{1,k}.time;
    % Establish format
    dt = datetime(routetime,'InputFormat','yyyy-MM-dd''T''HH:mm:ss.SSS''Z');
    % Convert into datenumbers 
    dn = datenum(dt);
    % Contain values
    [m, i] = min(abs(dn-StartDN));
    [j, t] = min(abs(dn-endDN));
    if (m == 0) || (j == 0)         
    % Plot data
         plot(data{1,k}.lon(find(dn>=StartDN & dn<=endDN)), data{1,k}.lat(find(dn>=StartDN & dn<=endDN)), 'Color', cmap(k,:),'LineWidth', 2)
    % Start marker 
         plot(data{1,k}.lon(1,find(dn==StartDN(1))), data{1,k}.lat(1,find(dn==StartDN(1))), 'o', 'LineWidth', 1.5);
         plot(data{1,k}.lon(1,find(dn==endDN)), data{1,k}.lat(1,find(dn==endDN)), 'x', 'LineWidth', 1.5);
    elseif (m > 0) || (j > 0)
        % Plot data
         plot(data{1,k}.lon(find(dn>=StartDN & dn<=endDN)), data{1,k}.lat(find(dn>=StartDN & dn<=endDN)), 'Color', cmap(k,:),'LineWidth', 2)
    % Start marker 
         plot(data{1,k}.lon(1,i), data{1,k}.lat(1,i), 'o', 'LineWidth', 1.5);
         plot(data{1,k}.lon(1,t), data{1,k}.lat(1,t), 'x', 'LineWidth', 1.5);
    elseif (m > 0) || (j == 0)
    hold all
    end
end 
hold on
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...