Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从活动WMS层查询像素值_Javascript_Openlayers - Fatal编程技术网

Javascript 从活动WMS层查询像素值

Javascript 从活动WMS层查询像素值,javascript,openlayers,Javascript,Openlayers,我需要查看单个可见WMS的像素值。在我的项目中,我有两个WMS: /// WMS sources and layers var wms_path = 'https://gis.massimilianomoraca.it/geoserver/MassimilianoMoraca/wms'; var sourceNDVI_20150807 = new ol.source.TileWMS({ url: wms_path, params: { 'LAYERS': 'NDVI_Campa

我需要查看单个可见WMS的像素值。在我的项目中,我有两个WMS:

/// WMS sources and layers
var wms_path = 'https://gis.massimilianomoraca.it/geoserver/MassimilianoMoraca/wms';

var sourceNDVI_20150807 = new ol.source.TileWMS({
  url: wms_path,
  params: {
    'LAYERS': 'NDVI_Campania_20150807',
  },
});
var titleNDVI_20150807 = 'NDVI_Campania_20150807';
var layerNDVI_20150807 = new ol.layer.Tile({
  title: titleNDVI_20150807,
  source: sourceNDVI_20150807,
  visible: false
});

var sourceNDVI_20160712 = new ol.source.TileWMS({
  url: wms_path,
  params: {
    'LAYERS': 'NDVI_Campania_20160712',
  },
});
var layerNDVI_20160712 = new ol.layer.Tile({
  title: 'NDVI_Campania_20160712',
  source: sourceNDVI_20160712,
  visible: false
});
我能在地图上看到这些数据。我创建了下面的函数,目的是激活和取消激活单层

<button type="button" class="btn btn-primary"
  onclick="NDVI_Campania_20150807()">NDVI_Campania_20150807</button>
<button type="button" class="btn btn-success"
  onclick="NDVI_Campania_20160712()">NDVI_Campania_20160712</button>


function NDVI_Campania_20150807() {
  console.log('NDVI_Campania_20150807');
  map.removeLayer(layerNDVI_20160712);
  map.addLayer(layerNDVI_20150807);
  layerNDVI_20150807.setVisible(true);

  /// Click on pixel
  map.on('singleclick', function(evt) {
    var coordinate = evt.coordinate;
    var resolution = view.getResolution();
    var projection = 'EPSG:3857';
    var params = {
            'INFO_FORMAT': 'application/json',
          };

    var url_20150807 = sourceNDVI_20150807.getFeatureInfoUrl(
      coordinate, resolution, projection, params
    );
    fetch(url_20150807)
    .then(function (response) {
      return response.text(); })
    .then(function (data) {
      json = JSON.parse(data).features[0];

      ndvi_20150807 = json.properties.GRAY_INDEX;
      date_20150807 = '7 agosto 2015';

      index_20150807 = [1,date_20150807,ndvi_20150807]

    }).catch((error) => {
      console.warn(error)
    });

  });

};

function NDVI_Campania_20160712() {
  console.log('NDVI_Campania_20160712');
  map.removeLayer(layerNDVI_20150807);
  map.addLayer(layerNDVI_20160712);

  layerNDVI_20160712.setVisible(true);
  layerNDVI_20150807.setVisible(false);

  /// Funzione click pixel
  map.on('singleclick', function(evt) {
    var coordinate = evt.coordinate;
    var resolution = view.getResolution();
    var projection = 'EPSG:3857';
    var params = {
            'INFO_FORMAT': 'application/json',
          };

    var url_20160712 = sourceNDVI_20160712.getFeatureInfoUrl(
      coordinate, resolution, projection, params
    );
    fetch(url_20160712)
    .then(function (response) {
      return response.text(); })
    .then(function (data) {

      var json = JSON.parse(data).features[0];

      ndvi_20160712 = json.properties.GRAY_INDEX;
      date_20160712 = '12 luglio 2016';

      index_20160712 = [2,date_20160712,ndvi_20160712]
      console.log(index_20160712);

    }).catch((error) => {
      console.warn(error)
    });

  });

};
NDVI_Campania_20150807
NDVI_Campania_20160712
功能NDVI_Campania_20150807(){
控制台日志('NDVI_Campania_20150807');
地图移除层(layerNDVI_20160712);
地图添加层(layerNDVI_20150807);
layerNDVI_20150807.设置可见(真);
///点击像素
map.on('singleclick',函数(evt){
var坐标=evt坐标;
var resolution=view.getResolution();
var预测='EPSG:3857';
变量参数={
“信息格式”:“应用程序/json”,
};
var url_20150807=sourceNDVI_20150807.getFeatureInfoUrl(
坐标、分辨率、投影、参数
);
获取(url_20150807)
.然后(功能(响应){
返回响应。text();})
.then(功能(数据){
json=json.parse(data.features)[0];
ndvi_20150807=json.properties.GRAY_指数;
日期_20150807=‘2015年前7日’;
指数20150807=[1,日期20150807,ndvi 20150807]
}).catch((错误)=>{
控制台。警告(错误)
});
});
};
功能NDVI_Campania_20160712(){
控制台日志('NDVI_Campania_20160712');
地图移除层(layerNDVI_20150807);
地图添加层(layerNDVI_20160712);
layerNDVI_20160712.设置可见(真);
layerNDVI_20150807.设置可见(假);
///Funzione点击像素
map.on('singleclick',函数(evt){
var坐标=evt坐标;
var resolution=view.getResolution();
var预测='EPSG:3857';
变量参数={
“信息格式”:“应用程序/json”,
};
var url_20160712=sourceNDVI_20160712.getFeatureInfoUrl(
坐标、分辨率、投影、参数
);
获取(url_20160712)
.然后(功能(响应){
返回响应。text();})
.then(功能(数据){
var json=json.parse(data.features)[0];
ndvi_20160712=json.properties.GRAY_指数;
日期_20160712='12 luglio 2016';
指数20160712=[2,日期20160712,ndvi 20160712]
控制台日志(索引_20160712);
}).catch((错误)=>{
控制台。警告(错误)
});
});
};

我可以激活和取消激活图层,但如果单击像素,我会看到两个图层的数据。如何从活动层查看像素值?

在按钮单击处理程序中,仅更改层

function NDVI_Campania_20150807() {
  console.log('NDVI_Campania_20150807');
  map.removeLayer(layerNDVI_20160712);
  map.addLayer(layerNDVI_20150807);
  layerNDVI_20150807.setVisible(true);
  layerNDVI_20160712.setVisible(false);
};

function NDVI_Campania_20160712() {
  console.log('NDVI_Campania_20160712');
  map.removeLayer(layerNDVI_20150807);
  map.addLayer(layerNDVI_20160712);
  layerNDVI_20160712.setVisible(true);
  layerNDVI_20150807.setVisible(false);
};
并设置一个映射单击侦听器,用于查询任何可见的层

  map.on('singleclick', function(evt) {
    var coordinate = evt.coordinate;
    var resolution = view.getResolution();
    var projection = 'EPSG:3857';
    var params = {
            'INFO_FORMAT': 'application/json',
          };

    if (layerNDVI_20150807.getVisible()) {

      var url_20150807 = sourceNDVI_20150807.getFeatureInfoUrl(
        coordinate, resolution, projection, params
      );
      fetch(url_20150807)
      .then(function (response) {
        return response.text(); })
      .then(function (data) {
        json = JSON.parse(data).features[0];

        ndvi_20150807 = json.properties.GRAY_INDEX;
        date_20150807 = '7 agosto 2015';

        index_20150807 = [1,date_20150807,ndvi_20150807]

      }).catch((error) => {
        console.warn(error)
      });

    } else if (layerNDVI_20160712.getVisible()) {

      var url_20160712 = sourceNDVI_20160712.getFeatureInfoUrl(
        coordinate, resolution, projection, params
      );
      fetch(url_20160712)
      .then(function (response) {
        return response.text(); })
      .then(function (data) {
        var json = JSON.parse(data).features[0];

        ndvi_20160712 = json.properties.GRAY_INDEX;
        date_20160712 = '12 luglio 2016';

        index_20160712 = [2,date_20160712,ndvi_20160712]
        console.log(index_20160712);

      }).catch((error) => {
        console.warn(error)
      });

    }
  });

您可以使用map.un()或ol.Observable.unByKey()更改层时取消侦听器的设置,或者使用单个侦听器并测试侦听器中哪个层处于活动状态。您可以添加一个示例吗?