MATLAB: comment tracer plusieurs tracés 3D à l’aide des fonctions «geoplot3» et «geoglobe»

Meilleure réponse

  • Il y a deux choses à garder à l’esprit lors de l’utilisation de la fonction «géoglobe» pour tracer plusieurs tracés:
    1. Premièrement, la fonction «géoglobe» a la propriété par défaut de supprimer les tracés existants et de réinitialiser les propriétés du globe, à l’exception de Position et Unités, à leurs valeurs par défaut avant d’afficher le nouveau tracé. Afin de permettre à plusieurs tracés d’être tracés sur le globe, l’utilisateur doit spécifier l’argument de paire nom-valeur ‘NextPlot’ comme ‘ajouter’ comme indiqué ci-dessous dans l’exemple:
     
    uif = uifigure;
    g = geoglobe(uif,'NextPlot','add');
     
    De plus, veuillez vous référer à la documentation suivante concernant la propriété NextPlot:
    https://www.mathworks.com/help/map/ref/globe.graphics.geographicglobe.html#mw_6c760b8f-7d02-4f56-95f1-85a0ec557e20
    2. Deuxièmement, seules certaines syntaxes «hold» sont prises en charge par la fonction «geoglobe», comme indiqué ci-dessous:
     
    hold(g) %toggles the state between off and on
    hold(g,'on') % retains plot so that new plots can be added to the same plot
    hold(g,'off') % releases the current plot
     
    Veuillez vous référer à ce lien de documentation qui décrit la syntaxe de prise en charge prise en charge:
    https://www.mathworks.com/help/map/ref/globe.graphics.geographicglobe.html#mw_6ed71245-e876-4a96-9bb1-eb2162df345d
    De plus, veuillez vous référer à cet exemple de code MATLAB qui montrera comment tracer plusieurs tracés de ligne sur une région locale à l’aide de la fonction ‘geoplot3’:
     

    trk = gpxread('sample_mixed','FeatureType','track');
    lat = trk.Latitude;
    lon = trk.Longitude;
    h = trk.Elevation;
    lat1 = 0.98*(trk.Latitude);
    lon1 = 0.98*(trk.Longitude);
    h1 = 0.98*(trk.Elevation);
    uif = uifigure;
    g = geoglobe(uif,'NextPlot','add');
    geoplot3(g,lat,lon,h,'c')
    hold(g,'on')
    mskip = 1:25:length(lat1);
    geoplot3(g,lat1,lon1,h1,'ro','MarkerIndices',mskip)