我有一个脚本下载哨兵-1图片从谷歌地球引擎,这是完美的工作在英国地区和其他地区的欧洲。然而,当我试图运行挪威的一个地区,返回的图像是模糊的。我认为这是因为在ee.imagecollection中,有些图像有一个不同的crs投影。
因此,我的问题是如何过滤图像以删除图像与其他crs?下面是谷歌地球引擎中的一个例子:
下面是在Google中显示这两个投影的图像集合的打印结果(参见特性0和3,显示EPSG: 32632和EPSG 32633):
我的Google引擎脚本包含在下面。若要复制此问题,请用绘制的多边形替换挪威几何学。
var year = 2021;
var region = 9;
var mth = 'October';
var mthno1 = 10;
var mthno2 = 11;
var endday1 = 18;
var endday2 = 18;
var geometry = ee.FeatureCollection("users/nfigbfr/Norway");
var s1c = ee.ImageCollection('COPERNICUS/S1_GRD')
.filterBounds(geometry)
.filterDate(year+'-'+mthno1+'-'+endday1,year+'-'+mthno2+'-'+endday2)
.filter(ee.Filter.eq('transmitterReceiverPolarisation', ['VV','VH']))
.filter(ee.Filter.eq('instrumentMode', 'IW'))
.map(function(image) {
var edge = image.lt(-30.0);
var maskedImage = image.mask().and(edge.not());
return image.updateMask(maskedImage);
});
print(s1c)
var img = s1c.mean();
print(img)
var img = img.addBands(img.select('VV').subtract(img.select('VH')).rename('Ratio'));
var img = img.select(['VV','VH','Ratio']).toFloat();
print(img);
var img_display = img.select(['VV','VH','Ratio']).clip(geometry);
Map.centerObject(geometry);
Map.addLayer(img_display, {min: -25, max: 0});
Export.image.toDrive({
image: img,
description: 'Norway_mean_'+mth+year,
folder: 'Sentinel_1',
crs: 'EPSG:32632',
scale: 10,
maxPixels: 1e13,
region: geometry
});
发布于 2022-09-13 00:03:05
crs是单个波段的属性,而不是图像。我也无法知道我们是否/如何能够访问带属性来进行过滤。
然而,这里有一个解决办法:
var target_crs = 'EPSG:32671'
var s1c = ee.ImageCollection('COPERNICUS/S1_GRD')
.filterBounds(point)
.filterDate(year+'-'+mthno1+'-'+endday1,year+'-'+mthno2+'-'+endday2)
.filter(ee.Filter.eq('transmitterReceiverPolarisation', ['VV','VH']))
.filter(ee.Filter.eq('instrumentMode', 'IW'))
.map(function(image) {
var edge = image.lt(-30.0);
var maskedImage = image.mask().and(edge.not());
return image.updateMask(maskedImage);
})
.map(function(img){
var crs = img.select(['VV']).projection().crs()
var myImageWithProperties = x.set({
crs: crs})
return ee.Image(myImageWithProperties)
;})
.filter(ee.Filter.eq('crs', target_crs));
我添加了一个.map()函数,该函数从VV波段获取投影代码(EPSG),并将其设置为图像属性。然后,我们可以根据这个属性过滤集合。
我在哨兵2号上试过了,效果很好。不过,还是很好奇是否有更简单的方法。
PS:这个问题更适合https://gis.stackexchange.com
https://stackoverflow.com/questions/71078921
复制相似问题