es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo implementar Heatmap.js con Openlayers y una capa WFS?

Estoy siguiendo el ejemplo de heatmap.js con openlayers para crear un mapa de calor http://csn0.gps.caltech.edu/Events/heatmap.js-master/website/example-heatmap-openlayers-renderer.html.
Mis datos provienen del geoserver y los busco a través de WFS. ¿Cómo puedo obtener datos de WFS con heatmap?

var my_layer_heatmap = new ol.layer.Vector({
    title: 'Mi capa',
    visible: false,
    source: new ol.source.Vector({
        format: new ol.format.GeoJSON(),
        url: function(extent) {
          return urlGeoserver + 'wfs?service=WFS&' +
              'version=' + versionGeoserver + '&request=GetFeature&typename=geo:GEO_MY_LAYER&&' +
              'outputFormat=application/json&srsname=EPSG:4326&&' +
              'all=' + extent.join(',') + ',EPSG:4326';
        },
        strategy: ol.loadingstrategy.all
    }),
});
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener datos WFS con mapa de calor, puedes utilizar el mismo enfoque que para obtener datos WFS con cualquier otra capa de OpenLayers. En el fragmento de código proporcionado, se crea una capa de vector de OpenLayers con una fuente que obtiene datos GeoJSON de un punto final WFS.

    Para usar esta capa de vector en el mapa de calor, simplemente puedes pasarla como fuente de datos para la capa de mapa de calor.

    Aquí tienes un ejemplo de fragmento de código que combina las dos capas:

    var my_layer_wfs = new ol.layer.Vector({
        title: 'Mi capa',
        visible: false,
        source: new ol.source.Vector({
            format: new ol.format.GeoJSON(),
            url: function(extent) {
                return urlGeoserver + 'wfs?service=WFS&' +
                    'version=' + versionGeoserver + '&request=GetFeature&typename=geo:GEO_MY_LAYER&' +
                    'outputFormat=application/json&srsname=EPSG:4326&' +
                    'bbox=' + extent.join(',') + ',EPSG:4326';
            },
            strategy: ol.loadingstrategy.bbox
        }),
    });
    
    var my_layer_heatmap = new ol.layer.Heatmap({
        title: 'Mi capa de mapa de calor',
        source: my_layer_wfs.getSource(),
        blur: 15,
        radius: 5,
        maxZoom: 16,
        zIndex: 10
    });
    

    En este fragmento de código, la capa my_layer_wfs obtiene datos GeoJSON de un punto final WFS utilizando una estrategia de cuadro delimitador (bbox), y luego se pasa como fuente para la capa my_layer_heatmap. La capa my_layer_heatmap se configura con opciones de mapa de calor como blur, radius, maxZoom y zIndex.

    Ten en cuenta que la llamada a la función extent.join(',') se ha reemplazado con extent.join(',') + ',EPSG:4326'. Esto se debe a que la función join() devuelve una cadena con valores separados por comas, pero OpenLayers requiere que el parámetro bbox incluya un parámetro adicional que especifique el sistema de coordenadas de la bbox (en este caso, EPSG:4326).

Comments are closed.