Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

getMapData

Recuperar datos de la capa del mapa

Desde R2021a

Descripción

ejemplo

mapData = getMapData(map) devuelve una matriz de valores que contiene todos los datos para la capa de mapa dada map.

mapData = getMapData(map,xy) devuelve un arreglo de valores para las ubicaciones xy dadas en coordenadas mundiales.

mapData = getMapData(map,xy,"local") devuelve un arreglo de valores para las ubicaciones xy dadas en coordenadas locales.

mapData = getMapData(map,ij,"grid") devuelve un arreglo de valores para las ubicaciones ij dadas en coordenadas de cuadrícula. Cada fila de ij se refiere a un índice de celda de la cuadrícula [i j]

[mapData,inBounds] = getMapData(___) también devuelve un vector de valores lógicos que indica si la ubicación de entrada correspondiente xy o ij es válida usando las sintaxis anteriores.

mapData = getMapData(map,bottomLeft,mapSize) devuelve una matriz de valores en una subregión de la capa del mapa, map. La subregión comienza en la parte inferior izquierda xy-posición bottomLeft en coordenadas mundiales con un tamaño de mapa determinado mapSize especificado como [width height] en metros.

mapData = getMapData(map,bottomLeft,mapSize,"local") especifica la esquina inferior izquierda de la subregión en coordenadas locales.

mapData = getMapData(map,topLeft,gridSize,"grid") especifica la esquina superior izquierda de la subregión en coordenadas de cuadrícula. El tamaño de la subregión, gridSize también se proporciona en coordenadas de cuadrícula como [rows cols].

Ejemplos

contraer todo

Cree una capa de mapa que almacene dos valores por ubicación de cuadrícula como velocidades xy.

Cree una matriz de valores m-por-n-por-2. El primer elemento en la tercera dimensión es dx y el segundo es dy como velocidades.

dXY = reshape(1:200,10,20);
dXY(:,:,2) = dXY;

Cree una capa de mapa a partir de la matriz. Especifique la resolución y el nombre de la capa.

vLayer = mapLayer(dXY,'Resolution',1,'LayerName','dXY');

Obtenga todos los datos del mapa como una matriz. Obtenga las ubicaciones xy de los valores de velocidad creando arreglos que cubran los límites mínimo y máximo del mundo xy y se desplacen a las ubicaciones del centro de la cuadrícula. Las ubicaciones y se invierten al convertir entre matrices y coordenadas mundiales. Visualice las velocidades correspondientes a esas ubicaciones del centro de la cuadrícula usando la función quiver .

v = getMapData(vLayer);

R = 1/(2*vLayer.Resolution);
xLim = vLayer.XWorldLimits;
yLim = vLayer.YWorldLimits;
xLoc = (xLim(1)+R):R*2:(xLim(2)-R);
yLoc = (yLim(2)-R):-R*2:(yLim(1)+R);

quiver(xLoc,yLoc,v(:,:,1),v(:,:,2))

Figure contains an axes object. The axes object contains an object of type quiver.

Establezca el cuadrante inferior izquierdo con nuevos valores actualizados. Cree los valores como una matriz y especifique la esquina inferior izquierda (0,0) en las coordenadas del mapa para la función setData .

updateValues = repmat(reshape([-50,100],[1 1 2]),5,10);

setMapData(vLayer,[0 0],updateValues)
v = getMapData(vLayer);
quiver(xLoc,yLoc,v(:,:,1),v(:,:,2))

Figure contains an axes object. The axes object contains an object of type quiver.

Establezca nuevos valores para el cuadrante superior izquierdo usando coordenadas de cuadrícula. Para los mapas, la ubicación de la cuadrícula superior izquierda es (1,1).

setMapData(vLayer,[1 1],updateValues,'grid')
v = getMapData(vLayer);
quiver(xLoc,yLoc,v(:,:,1),v(:,:,2))

Figure contains an axes object. The axes object contains an object of type quiver.

El objeto mapLayer le permite aplicar transformaciones personalizadas de elementos al configurar y obtener datos en el mapa. Para transformar los datos que establece u obtiene del mapa, especifique identificadores de función para las propiedades GetTransfomFcn y SetTransformFcn . Este ejemplo muestra cómo implementar una capa de mapa probabilístico de probabilidades logarítmicas mediante la creación de una tabla de búsqueda de valores de probabilidad y probabilidades logarítmicas. Las funciones de transformación utilizan estas tablas de búsqueda para convertir entre estos valores al configurar u obtener datos.

Crear tablas de búsqueda

Genere una tabla de búsqueda completa de valores que asigne los valores de probabilidad a los límites mínimo y máximo de los valores int16 .

Cree un arreglo de valores int16 desde intmin a intmax. Defina los límites de probabilidad.

intType = 'int16';
intLinSpace = intmin(intType):intmax(intType);
numOfPoints = length(intLinSpace);
probLimits = [0.001 .999];

Las funciones exampleHelperProbToLogodds y examplerHelperLogoddsToProb encubren entre los valores logarítmicos de probabilidades y de probabilidad. Utilice las funciones auxiliares para obtener los límites de las probabilidades logarítmicas y generar el arreglo para buscar valores de las probabilidades logarítmicas. Cree una cuadrícula interpolada para toda la tabla de búsqueda.

logOddsLimits = exampleHelperProbToLogodds([0.001 .999]);
logOddsLookup = single(exampleHelperLogoddsToProb(linspace(logOddsLimits(1),logOddsLimits(2),numOfPoints)));
interpTable = griddedInterpolant(logOddsLookup,single(intLinSpace),'nearest');

Especificar identificadores de función de transformación

Los controladores de la función de transformación utilizan ayudas de ejemplo que definen cómo convertir entre valores enteros de probabilidades logarítmicas y los valores de probabilidad con un límite de saturación aplicado. Los límites de saturación de probabilidad son [0.001 .999] como se especificó anteriormente. Este comportamiento es similar al objeto occupancyMap .

getXformFcn = @(obj,logodds,varargin)...
    exampleHelperIntLogoddsToProb(logodds,logOddsLookup(:),intLinSpace);

setXformFcn = @(obj,prob,varargin)...
    exampleHelperProbToIntLogodds(prob,interpTable,logOddsLookup(:),intLinSpace,probLimits);

Crear capa de mapa

Genere un objeto de capa de mapa de ocupación a partir de una matriz de valores de probabilidad. Especifique las funciones de transformación get y set.

occupancyLayer = mapLayer(repmat(0.5,10,10),...
                           'LayerName','Occupancy',...
                           'GetTransformFcn',getXformFcn,...
                           'SetTransformFcn',setXformFcn);

Observe que cuando crea el mapa, el valor predeterminado es 0,001 en lugar de 0. Esta diferencia se debe a que la función SetTransformFcn se ha aplicado al valor predeterminado de 0 cuando creas el objeto, lo que satura el valor a 0,001.

disp(occupancyLayer.DefaultValue)
    0.0010

Obtener y configurar datos de mapas

Los datos del mapa coinciden con la matriz que configuró al crearlo.

extData = getMapData(occupancyLayer) 
extData = 10×10

    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000

Establezca ubicaciones de mapa específicas en valores que sean:

  • Fuera de los límites de saturación de probabilidad.

  • Mayor precisión que la resolución de las tablas de consulta.

setMapData(occupancyLayer,[0 0],0.00001)
setMapData(occupancyLayer,[5 5],0.25999)

Para la primera ubicación, la probabilidad está limitada a los límites de saturación.

extData = getMapData(occupancyLayer,[0 0])
extData = 0.0010

La segunda ubicación devuelve el valor más cercano al valor de probabilidad en la tabla de búsqueda.

extData2 = getMapData(occupancyLayer,[5 5])
extData2 = 0.2600

La capa de mapa generada ahora se puede usar para actualizar un mapa de probabilidad de ocupación que se almacena como valores int16 . Para combinar este mapa con otras capas o tipos de mapas, consulte el objeto multiLayerMap .

Argumentos de entrada

contraer todo

Capa de mapa, especificada como un objeto mapLayer .

Coordenadas mundiales o locales, especificadas como una matriz n-por 2 de pares [x y] , donde n es el número de coordenadas.

Tipos de datos: double

Posiciones de cuadrícula, especificadas como una matriz n por 2 de pares [i j] en formato [rows cols] , donde n es el número de posiciones de la cuadrícula.

Tipos de datos: double

Ubicación de la esquina inferior izquierda de la matriz de salida en coordenadas mundiales o locales, especificada como un vector de dos elementos, [xCoord yCoord]. La ubicación está en coordenadas mundiales o locales según la sintaxis.

Tipos de datos: double

Tamaño del mapa de subregión, especificado como un vector de dos elementos [x y] en coordenadas mundiales o locales.

Tipos de datos: double

Tamaño de la cuadrícula de salida, especificado como un vector de dos elementos [row col].

Tipos de datos: double

Ubicación de la esquina superior izquierda de la cuadrícula, especificada como un vector de dos elementos, [iCoord jCoord].

Tipos de datos: double

Argumentos de salida

contraer todo

Valores de datos de la capa del mapa, devueltos como una matriz. De forma predeterminada, la función devuelve todos los datos de la capa como una matriz M-por- N-por- DataDims . M y N son las filas y columnas de la cuadrícula respectivamente. DataDims son las dimensiones de los datos del mapa, map.DataSize(3:end).

Para otras sintaxis, los datos del mapa se pueden devolver como un arreglo de valores con tamaño N por DataDims o como una subregión de la matriz completa.

Ubicaciones de mapa válidas, devueltas como un vector columna n -por-1 de igual longitud que xy o ij. Las ubicaciones dentro de los límites del mapa devuelven un valor de 1. Las ubicaciones fuera de los límites del mapa devuelven un valor de 0.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2021a

expandir todo