Как удалить изображения с указанными c WRS_PATH и WRS_ROW из коллекции отражений поверхности landat 8? - PullRequest
0 голосов
/ 28 января 2020

Существует четыре фрагмента (путь: 41, ряд: 35 / путь: 41, ряд: 36 / путь: 42, ряд: 35 / путь: 42, ряд: 36) Коэффициент отражения поверхности LANDSAT 8, который покрывает мою область исследования , Я хочу удалить из этой коллекции только изображения (плитку) с путем 42 и строкой 36. Как я могу это сделать? Вот мой код:

Map.centerObject(table);
Map.addLayer(table);

var sd = '2015-01-01';//Start Date
var ed = '2016-01-01';//End   Date

var suro = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterBounds(table)
.filterDate(sd,ed)
//.filter(ee.Filter.and(ee.Filter.notEquals('WRS_PATH',42),ee.Filter.notEquals('WRS_ROW',36)))
.filter(ee.Filter.lt('CLOUD_COVER', 45));

var sur = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterBounds(table)
.filterDate(sd,ed)
//.filter(ee.Filter.and(ee.Filter.notEquals('WRS_PATH',42),ee.Filter.notEquals('WRS_ROW',36)))
.filter(ee.Filter.lt('CLOUD_COVER', 45))
//Map a function to mask clouds and negative values
.map(function(img){
  var idd = img.id();
  // Bits 3 and 5 are cloud shadow and cloud, respectively.
  var cloudShadowBitMask = 1 << 3;
  var cloudsBitMask = 1 << 5;
  // Get the pixel QA band.
  var qa = img.select('pixel_qa');
  // Both flags should be set to zero, indicating clear conditions.
  var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
      .and(qa.bitwiseAnd(cloudsBitMask).eq(0));
  // Return the masked image, scaled to reflectance, without the QA bands.
  var img2 = img.updateMask(mask).multiply(0.0001).select("B1").rename(idd);
  //Mask negative values from images
  var mask2 = img2.gt(0);
  return img2.multiply(mask2);
})
.toBands()
.clip(table);
Map.addLayer(sur);

var imColl_sur = sur.getInfo().bands;
print(imColl_sur);
print(imColl_sur.length);

for (var i = 0; i < imColl_sur.length; i++) {
  //Image Load
  var im = sur.select(imColl_sur[i]["id"]);
  //var id = imColl_sur[i]["id"];
  //var im = ee.Image.load(id);
  //Image Properties from original collection
  var idl = suro.getInfo().features[i]["properties"]["LANDSAT_ID"];
  var st = suro.getInfo().features[i]["properties"]["SENSING_TIME"];
  var sza = (suro.getInfo().features[i]["properties"]["SOLAR_ZENITH_ANGLE"])
    .toString();
  //Download
  Export.image.toDrive({
    image: im,
    description: 'L8_surReflectance_B1_'+idl.slice(10,26)
      +st.slice(11,13)+st.slice(14,16)+'_'
      +sza.slice(0,2)+sza.slice(3,8),
    scale: 30,
    region: table,
    maxPixels: 1e9
  });
}

1 Ответ

0 голосов
/ 28 января 2020

Редактировать:

Объединение фильтров, вероятно, работает каким-то образом и будет более элегантным.

Но вы можете использовать второй подход: создать новую переменную метаданных, комбинирующую ROW и PATH, и основанную на фильтре на нем:

var geometry = ee.Geometry({"type":"Polygon","coordinates":[[[-98.01249999999999,41.430123208731864],[-98.01249999999999,38.809492348693325],[-92.03593749999999,38.809492348693325],[-92.03593749999999,41.430123208731864]]],"geodesic":false,"evenOdd":true})

var sd = '2015-01-01';//Start Date
var ed = '2016-01-01';//End   Date

var suro = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterBounds(geometry)
.filterDate(sd,ed)
.map(function(image){
  return image.set({'WRS_PATHROW':{'path':image.get('WRS_PATH'),
                          'row':image.get('WRS_ROW')}
})})
.filter(ee.Filter.neq('WRS_PATHROW',  {'path':25, 'row':32}))

Вы можете объединить два фильтра с ee.Filter.and, чтобы удалить любые изображения, которые имеют WRS_PATH=21 и WRS_ROW=32:

var filters =  ee.Filter.and(
  ee.Filter.neq('WRS_PATH',21),
  ee.Filter.neq('WRS_ROW',32)
);

var suro = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterBounds(geometry)
.filterDate(sd,ed)
.filter(filters);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...