2.1.1.1. Capas vectoriales - Desarrollos-IDEE/API-IDEE GitHub Wiki
¿Qué es una capa vectorial?
En un modelo de datos vectorial se recogen las características de los fenómenos de la realidad mediante entidades geométricas que definen sus límites. Según el fenómeno que se trate se utilizarán puntos, líneas o polígonos para representarlos, codificandolos explícitamente mediante las coordenadas de los puntos o vértices que forman los segmentos de líneas y polígonos.
A diferencia de las capas ráster, donde el cliente recibe una imagen o parte ella generada por el servidor de mapas, las capas vectoriales se descargan en el cliente, y éste es el que las representa. La API soporta los siguientes tipos de capas vectoriales:
¿Qué es un feature?
Un feature representa un fenómeno o elemento geográfico de una capa vectorial. Está formado por un identificador, una geometría y una serie de atributos alfanuméricos o propiedades. Por ejemplo, un feature que representa un edificio puede tener atributos como su altura, su área, su uso, su fecha de construcción, etc. Los features son representados en un SIG por medio de geometrías que describen su forma y posición en el mapa. Las geometrías pueden ser de diferentes tipos como puntos, líneas o polígonos.
Cuando un servidor de mapas nos devuelve una capa vectorial, nos está mandando el conjunto de todos los features o elementos que la forman:
const mapajs = IDEE.map({
container: "map",
wmcfiles: ["cdau"]
});
//capa vectorial GeoJSON de provincias servida
const layer = new IDEE.layer.GeoJSON({
name: "Provincias",
url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=tematicos:Provincias&maxFeatures=50&outputFormat=application/json"
});
mapajs.addLayers(layer);
// Cada feature es una provincia en esta capa
layer.on(IDEE.evt.LOAD, function() {
layer.getFeatures().forEach(function(feature) {
console.log('Provincia: ' + feature.getAttribute('nombre'));
})
});
Dispone de métodos para obtener/establecer su id, sus atributos y su geometría. Estos son algunos métodos comunes a todas las capas vectoriales:
// Creamos feature
const feature= new IDEE.Feature("featurePrueba002", {
"type": "Feature",
"id": "prueba_pol_wfst.1985",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[263770.72265536943,4085361.4590256726],
[230910.00600234355,4031901.3328427672],
[288293.77947248437,4017678.0840030923],
[263770.72265536943,4085361.4590256726]
]
]
},
"geometry_name": "geometry",
"properties": {
"cod_ine_municipio": "41091",
"cod_ine_provincia": "-",
"area": 1234,
"perimetro": 345,
"cod_ine_comunidad": "-",
"nombre": "feature2",
"nom_provincia": "Cádiz",
"alias": "f2",
"nom_ccaa": "Andalucía"
}
});
// lo añadimos a la capa
capaVectorial.addFeatures([feature])
// Añadir feature
capaVectorial.addFeatures([feature]);
// Eliminar feature
capaVectorial.removeFeatures([feature]);
// Obtener los features de una capa
const elementos = capaVectorial.getFeatures();
// Obtener la extension de los features de una capa
const bbox = capaVectorial.getFeaturesExtent();
// O eliminarlos todos los features
capaVectorial.clear();
:bulb: Dos features serán iguales si tienen el mismo id. Si se añade features con id repetidos el método getFeatures devolverá todos los features añadidos, pero a la capa sólo se añadirá el primer feature de los ids repetidos.
También es posible definir un feature desde cero mediante la especificación GeoJSON correspondiente:
const capaGeoJSON = new IDEE.layer.GeoJSON({
source: {
"crs": {"properties": {"name": "EPSG:25830"},"type": "name"},
// Se añade su notacion GeoJSON
"features": [feature.getGeoJSON()],
"type": "FeatureCollection"
},
name: 'prueba'
});
mapajs.addLayers(capaGeoJSON);
// Otra opción: añadir el feature a la capa
//capaGeoJSON.addFeatures(feature);