Skip to content

Categorías

fbma edited this page Mar 22, 2018 · 9 revisions

Un capa categorizada es una capa cuya simbología se establece asociando un estilo a cada elemento o feature en base al valor de un atributo del mismo.

Por tanto, para definir ese tipo de simbología, es necesario especificar al menos los siguientes parámetros:

  • Atributo del feature por el cual se va a realizar la categorización.
  • Relación de Valores/Estilos para la representación de los diferentes valores del atributo.

Así, para categorizar por ejemplo una capa poligonal de municipios de Andalucía, de modo que a cada elemento se le diera un color en función de la provincia a la que pertenece, que viene indicado en uno de sus atributos:

// Definimos los estilos de cada categoría. Como queremos diferenciar entre
// provincias, crearemos un color para cada una
let verde = new M.style.Polygon({fill: {color: 'green'}});
let amarillo = new M.style.Polygon({fill: {color: 'pink'}});
let rojo = new M.style.Polygon({fill: {color: 'red'}});
let azul = new M.style.Polygon({fill: {color: 'grey'}});
let naranja = new M.style.Polygon({fill: {color: 'orange'}});
let marron = new M.style.Polygon({fill: {color: 'brown'}});
let magenta = new M.style.Polygon({fill: {color: '#e814d9'}});
let morado = new M.style.Polygon({fill: {color: '#b213dd'}});

// Creamos la simbologia. El atributo "provincia" contiene el nombre
// de la provincia a la que pertenece cada feature
let categoryStyle = new M.style.Category("provincia", {
  "Almería": marron,
  "Cádiz": amarillo,
  "Córdoba": magenta,
  "Granada": verde,
  "Jaén": naranja,
  "Málaga": azul,
  "Sevilla": rojo,
  "Huelva": morado
});

layerMunicipios.setStyle(categoryStyle);

Donde M.style.Category recibe:

Parámetro Descripción
attributeName {string} - atributo que contiene el campo por el que categorizar
categoryStyles {object} - con las relaciones valor-estilo

💡 Los estilos deben corresponder al tipo de geometría de la capa

Ejemplo funcional

No es necesario especificar estilo para todos los diferentes valores que pueda adoptar el atributo 'attributeName':

  • Si el valor del atributo de un feature no aparece en la lista de categoryStyles, ese feature se pintará con la simbología por defecto que tenga la capa.
  • El valor "other" en la lista de categoryStyles recogerá a todos los features cuyo atributo 'attributeName' tenga un valor que no se corresponda con ningún otro de la lista.

¿Y si quiero aplicar un estilo diferente y aleatorio a cada feature en función de un atributo, sin importarme qué estilo? Aunque este escenario se automatizará próximamente en Mapea, es posible programarlo: Aquí lo puedes ver funcionando

Acceso y modificación de las propiedades del estilo

Se puede acceder a las propidades de un estilo Category ya existente, y modificar aquellos aspectos de la misma que se desee:

// La capa ya tiene el estilo asignado
let estiloCategory = capa.getStyle();

// Obtenemos las categorías existentes, y el atributo de categorización
// Podrían modificarse con los métodos 'set' equivalentes
let categorías = estiloCategory.getCategories();
let atributo = estiloCategory.getAttributeName();

// Cambiamos únicamente el estilo asociado a la categoría de "Sevilla"
estiloCategory.setStyleForCategory("Sevilla",amarillo);
Clone this wiki locally