Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Fri 12 January 2018 12:40

jerem_abroad
Participant occasionnel
Date d'inscription: 27 Dec 2017
Messages: 12

Récupérer l'id d'un polygone d'une vector layer [OpenLayers3]

Bonjour,

J'aimerais afficher les infos de mon polygone dans une info-bulle. Mon problème est que je n'arrive pas à récupérer l'id de mon polygone lors de mon click. J'arrive à récupérer l'ensemble de mes infos de ma couche mais pas uniquement l'id de mon polygone sélectionné.

Pouvez-vous m'aider ??

Mon code:

Code:

  /*DEFINITION COUCHE WMS*/
    var osm = new ol.layer.Tile({
    source: new ol.source.OSM()
  });

  var wms_source = new ol.source.TileWMS({
        url: 'http://localhost:8080/geoserver/wms',
    params: {
              'LAYERS': 'gaez_fao:gleyic_layer',
              'TILED': true
              },
    serverType: 'geoserver',
    crossOrigin: 'anonymous'
   });

   var wms = new ol.layer.Tile({
    source: wms_source
  });

 /*DEFINITION COUCHE WFS*/

var vector_source = new ol.source.Vector({
      format: new ol.format.GeoJSON(),
      url: function(extent, resolution, projection) {
        return 'http://localhost:8080/geoserver/wfs?service=WFS&' +
          'version=1.1.0&request=GetFeature&typename=gaez_fao:gleyic_shapefile_table&' +
          'outputFormat=application/json&srsname=EPSG:4326&' +
          'bbox=' + extent.join(',') + ',EPSG:4326';
      },
      strategy: ol.loadingstrategy.bbox
    });

  var wfs = new ol.layer.Vector({
      source: vector_source,
      style: new ol.style.Style({
        stroke: new ol.style.Stroke({
          color: 'green',
          width: 2
        })
      })
    });

  /*DEFINITION MAP*/
  var view = new ol.View({
        //laos
        center: [11500000, 2000000],
        //zoom: 6
        zoom: 2
      });

      var map = new ol.Map({
        layers: [osm,wms,wfs],
        overlays: [overlay],
        target: 'map',
        view: view
      });


      map.on('singleclick', function(evt) {
        //RECUPERATION DES COORDONNEES DU CLIC
        var source = evt.target;
        console.log('evt.coordinate[0] = ' + evt.coordinate[0]);
        console.log('evt.coordinate[1] = ' + evt.coordinate[1]);
        var lonlat = ol.proj.transform(evt.coordinate,'EPSG:3857','EPSG:4326')
        console.log('lon = ' + lonlat[0]);
        console.log('lat = ' + lonlat[1]);
        
        //COUCHE WFS
        if(wfs.getSource().getState() == 'ready'){
          var features = wfs.getSource().getFeatures();
          //récupération de toutes les coordonnées des polygones
          features.forEach(function(feature){
            console.log(feature.getGeometry().getCoordinates()); // coordonnée
            console.log(feature.getId()); // id de tous mes polygones
          });

          //AFFICHAGE DANS UNE BULLE --> AU LIEU DE 10001, J'AIMERAIS INDIQUER L'ID DE MON POLYGONE SÉLECTIONNE
          content.innerHTML = '<p>pixel value:</p><code>' + features[10001].N.pixel_value + '</code>';
          console.log('features[10001].N.geometry = ' + features[10001].N.geometry);
          overlay.setPosition(evt.coordinate);
        }
      });

Dernière modification par jerem_abroad (Fri 12 January 2018 12:57)

Hors ligne

 

#2 Sun 14 January 2018 09:50

jerem_abroad
Participant occasionnel
Date d'inscription: 27 Dec 2017
Messages: 12

Re: Récupérer l'id d'un polygone d'une vector layer [OpenLayers3]

Je vais être un peu plus précis.

J'ai publié mon shapefile (couche de polygones) dans GEOSERVER et je voudrais interroger ma couche vectorielle pour pouvoir récupérer mes informations relatives à un polygone en particulier depuis mon front avec OpenLayers3.

Est ce que ma couche vectorielle est bien déclaré ? (J'ai publié ma table sur Geoserver avec la fonction PostGIS Database). Le format de ma couche vectorielle (GeoJSON) est-il judicieux ?

Est ce possible de récupérer les attributs d'un polygone en particulier grâce à l'event du click ? Si oui, quels attributs de l'event faut-il que j'utilise ?Ou est-ce préférable de récupérer les coordonnées du click et de faire une recherche dans mon shapefile en fonction de ses coordonnées ?

Merci pour votre aide.

Cordialement.

Hors ligne

 

#3 Sun 14 January 2018 12:14

Bruno
Membre du bureau
Lieu: Toulouse
Date d'inscription: 22 Jun 2005
Messages: 11727
Site web

Re: Récupérer l'id d'un polygone d'une vector layer [OpenLayers3]

Technos OS, je déplace ici.

Hors ligne

 

#4 Mon 15 January 2018 11:06

jerem_abroad
Participant occasionnel
Date d'inscription: 27 Dec 2017
Messages: 12

Re: Récupérer l'id d'un polygone d'une vector layer [OpenLayers3]

Problème résolu avec :
var coordinate = map.getEventCoordinate(evt.originalEvent);

var feature = wfs.getSource().getFeaturesAtCoordinate(coordinate);

Hors ligne

 

Pied de page des forums

Powered by FluxBB