setMapData
Description
setMapData(
prend les arguments map
,layername
,layerinputs
)layerinputs
et les transmet à la fonction objet setMapData
pour le nom de couche de carte spécifié. Pour spécifier des cellules individuelles ou des blocs de données dans les coordonnées mondiales, locales ou de grille, consultez les syntaxes de setMapData
.
renvoie un tableau de valeurs pour les emplacements donnés dans l'argument d'entrée inBounds
= setMapData(map
,layername
,layerinputs
)layerinputs
.
Exemples
Créer des écouteurs à l'aide de couches de carte dépendantes
L'objet multiLayerMap
vous permet de regrouper plusieurs couches de carte et de définir le comportement de ces couches lors de la définition et de l'obtention de données. À l’aide de couches cartographiques distinctes, vous pouvez stocker diverses données cartographiques et spécifier des comportements différents pour chacune. Vous pouvez également définir les handles de fonction SetTransformFcn
et GetTransformFcn
pour une couche de carte afin que des dépendances soient créées entre les couches. Cet exemple montre comment stocker des données dans une couche de carte et implémenter des écouteurs d'événements qui mettent à jour d'autres cartes. Ces cartes stockent le nombre de fois où les données sont mises à jour ou consultées.
Couches dépendantes
Créez deux couches de carte indépendantes.
mapAccessed = mapLayer(zeros(10,10),"LayerName","GetListener"); mapModified = mapLayer(zeros(10,10),"LayerName","SetListener");
Spécifiez les handles de fonction pour les fonctions de transformation get et set utilisées dans la couche de carte principale. Ces fonctions incrémentent la valeur d'un emplacement de grille lorsque vous obtenez ou définissez des données cartographiques dans la carte d'entrée mainMap
. Voir Listener Function Handles pour l'implémentation de la fonction.
getHookFcn = @(mainMap,values,varargin)exampleHelperGetHookFcn(mapAccessed,mainMap,values,varargin{:}); setHookFcn = @(mainMap,values,varargin)exampleHelperSetHookFcn(mapModified,mainMap,values,varargin{:});
Créez la couche de carte principale avec des valeurs par défaut de 0,5. Spécifiez les poignées de fonction pour créer les dépendances de calque.
map = mapLayer(repmat(0.5,10,10), ... 'GetTransformFcn',getHookFcn, ... 'SetTransformFcn',setHookFcn);
Ajoutez toutes les cartes au même objet multiLayerMap
.
multiMapLayers = multiLayerMap({map,mapAccessed,mapModified})
multiMapLayers = multiLayerMap with properties: Map Properties NumLayers: 3 GridSize: [10 10] Resolution: 1 GridLocationInWorld: [0 0] GridOriginInLocal: [0 0] LocalOriginInWorld: [0 0] XLocalLimits: [0 10] YLocalLimits: [0 10] XWorldLimits: [0 10] YWorldLimits: [0 10] Layer Properties LayerNames: {'mapLayer' 'GetListener' 'SetListener'} DataSize: {[10 10] [10 10] [10 10]} DataType: ["double" "double" "double"] DefaultValue: {[0] [0] [0]}
Définissez l'emplacement de la carte (0,0) avec une valeur de zéro à l'aide de la fonction d'objet setMapData
de l'objet multiLayerMap
.
setMapData(multiMapLayers,"mapLayer",[0 0],0)
Vérifiez que la couche de carte SetListener
a incrémenté sa valeur.
getMapData(multiMapLayers,"SetListener",[0 0])
ans = 1
Obtenez les données que vous venez de définir sur la couche de carte principale. La valeur attendue de zéro est renvoyée.
getMapData(multiMapLayers,"mapLayer",[0 0])
ans = 0
Vérifiez que la couche de carte GetListener
a incrémenté sa valeur.
getMapData(multiMapLayers,"GetListener",[0 0])
ans = 1
Mettez à jour la carte entière avec une matrice de valeurs. Accédez également aux données.
setMapData(multiMapLayers,"mapLayer",rand(10,10)) getMapData(multiMapLayers,"mapLayer")
ans = 10×10
0.8147 0.1576 0.6557 0.7060 0.4387 0.2760 0.7513 0.8407 0.3517 0.0759
0.9058 0.9706 0.0357 0.0318 0.3816 0.6797 0.2551 0.2543 0.8308 0.0540
0.1270 0.9572 0.8491 0.2769 0.7655 0.6551 0.5060 0.8143 0.5853 0.5308
0.9134 0.4854 0.9340 0.0462 0.7952 0.1626 0.6991 0.2435 0.5497 0.7792
0.6324 0.8003 0.6787 0.0971 0.1869 0.1190 0.8909 0.9293 0.9172 0.9340
0.0975 0.1419 0.7577 0.8235 0.4898 0.4984 0.9593 0.3500 0.2858 0.1299
0.2785 0.4218 0.7431 0.6948 0.4456 0.9597 0.5472 0.1966 0.7572 0.5688
0.5469 0.9157 0.3922 0.3171 0.6463 0.3404 0.1386 0.2511 0.7537 0.4694
0.9575 0.7922 0.6555 0.9502 0.7094 0.5853 0.1493 0.6160 0.3804 0.0119
0.9649 0.9595 0.1712 0.0344 0.7547 0.2238 0.2575 0.4733 0.5678 0.3371
Vérifiez que les couches cartographiques GetListener
et SetListener
ont incrémenté leurs valeurs.
getMapData(multiMapLayers,"SetListener")
ans = 10×10
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1 1 1
getMapData(multiMapLayers,"GetListener")
ans = 10×10
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1 1 1
L'emplacement en bas à gauche renvoie deux et toutes les autres valeurs valent une. Cela confirme que les fonctions d'écoute fonctionnent comme prévu.
Poignées de fonction d'écoute
Ces fonctions implémentent les exemples de fonctions d'assistance get et set qui mettent à jour les autres couches de carte.
function valuesOut = exampleHelperSetHookFcn(modifiedMap,sourceLayer,valueIn,varargin) % Pass output through valuesOut = valueIn; % If no additional inputs are passed, return immediately. if numel(varargin) == 0 return; else % Otherwise, increment the value in the modifiedMap. if numel(varargin) == 1 currentValue = getMapData(modifiedMap); setMapData(modifiedMap,currentValue+1); else currentValue = getMapData(modifiedMap,varargin{1},varargin{3:end}); % setMapData syntax <<<<>>>> setMapData(modifiedMap,varargin{1},currentValue+1,varargin{3:end}); end end end function data = exampleHelperGetHookFcn(accessedMap,sourceLayer,valuesIn,varargin) data = valuesIn; % If no additional inputs are passed, check if the values in if numel(varargin) == 0 if isequal(size(valuesIn),sourceLayer.DataSize) % Increment the depedent map. currentValue = getMapData(accessedMap); setMapData(accessedMap,currentValue+1); end else currentValue = getMapData(accessedMap,varargin{:}); setMapData(accessedMap,varargin{1},currentValue+1,varargin{3:end}); end end
Arguments d'entrée
map
— Carte multicouche
Objet multiLayerMap
Carte multicouche, spécifiée comme objet multiLayerMap
.
layername
— Nom de la couche de carte
chaîne scalaire | tableau de caractères
Nom de la couche de carte, spécifié sous forme de chaîne scalaire ou de tableau de caractères. Les couches de carte ont leur nom spécifié lors de la création de l'objet multiLayerMap
.
layerinputs
— Entrées de longueur variable dans la couche cartographique
varargin
Entrées de longueur variable dans la fonction setMapData
de la couche cartographique, spécifiée comme varargin
. Pour spécifier des cellules individuelles ou des blocs de données dans les coordonnées mondiales, locales ou de grille, consultez les syntaxes de setMapData
.
Arguments de sortie
inBounds
— Emplacements valides sur la carte
n vecteur colonne -par 1
Emplacements de carte valides, renvoyés sous la forme d'un vecteur de colonne n-par 1 de longueur égale à xy
ou ij
. Les emplacements à l'intérieur des limites de la carte renvoient une valeur de 1. Les emplacements en dehors des limites de la carte renvoient une valeur de 0.
Capacités étendues
Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.
Historique des versions
Introduit dans R2021a
Commande MATLAB
Vous avez cliqué sur un lien qui correspond à cette commande MATLAB :
Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)