@Rodrigo, 귀하의 신속한 회신에 감사드립니다. 포인트 추출 코드는 그 예제에서 완벽하게 작동했습니다. 나는 클라우드 마스크가 적용된 또 다른 이미지 집합에 대해 포인트 추출을 시도했으며 컬렉션의 첫 번째 이미지의 첫 번째 점이 마스크 (즉, 'null'값이 할당 된 픽셀) 외부에있는 경우, 내 보낸 표에는 해당 지점에 대한 대역 데이터가 포함되지 않습니다. 이 문제를 해결하기 위해 필자는 기능 컬렉션과 병합되기 전에 'null'값이 포함 된 점을 제거하는 필터를 추가했습니다.
다음은 'null'값을 제거하지 못한 실패 추출과 'null'값을 제거하는 성공적인 추출 모두를 포함하는 코드입니다.
//cloud mask ------------------------------------------------------
var maskCloudShadow = function(image){
var cfmask = image.select('cfmask');
return image.updateMask(cfmask.lt(1)); // keep clear (0) pixels
};
//select images from image collection -----------------------------
//extract filtered collection of Landsat 5 Surface Reflection
var L5fs1998post = ee.ImageCollection('LANDSAT/LT5_SR') //Landsat 5 Surface reflectance
.filterDate('1998-1-9', '1998-2-27') //filter to date bounds
.filter(ee.Filter.eq('wrs_path', 91))//filter to path and row
.filter(ee.Filter.eq('wrs_row', 86))
.map(maskCloudShadow); //apply cloud and cloud shadow mask function
print(L5fs1998post);
//Create sample points --------------------------------------------
//var pts =
ee.FeatureCollection('ft:1lfLgiQQSIIOpgjuZV5MZJno9_kLyQC49w6u3Hf9W');
var p1 = ee.Geometry.Point([146.84341192245483, -37.47371711676642]);
var p2 = ee.Geometry.Point([146.84167385101318, -37.4]);
var pts = ee.FeatureCollection(ee.List([ee.Feature(p1),ee.Feature(p2)]));
// Empty Collection to fill
var ft = ee.FeatureCollection(ee.List([]));
//Without removal of null values ----------------------------------
//Function to extract values from image collection based on point file and export as a table
var fill = function(img, ini) {
// type cast
var inift = ee.FeatureCollection(ini);
// gets the values for the points in the current img
var ft2 = img.reduceRegions(pts, ee.Reducer.first(),30);
// gets the date of the img
var date = img.date().format();
// writes the date in each feature
var ft3 = ft2.map(function(f){return f.set("date", date)});
// merges the FeatureCollections
return inift.merge(ft3);
};
// Iterates over the ImageCollection
var newft = ee.FeatureCollection(L5fs1998post.iterate(fill, ft));
print(newft);
// Export
Export.table.toDrive(newft,
"anyDescription",
"EarthEngine",
"sample_include_null");
//With removal of null values ------------------------------------------
//Function to extract values from image collection based on point file and export as a table
var fill = function(img, ini) {
// type cast
var inift = ee.FeatureCollection(ini);
// gets the values for the points in the current img
var ft2 = img.reduceRegions(pts, ee.Reducer.first(),30);
// gets the date of the img
var date = img.date().format();
// writes the date in each feature
var ft3 = ft2.map(function(f){return f.set("date", date)});
// merges the FeatureCollections
var ft3a = ft3.filter(ee.Filter.neq('B1', null));//filter first to remove null values
return inift.merge(ft3a);
};
// Iterates over the ImageCollection
var newft_remove_null = ee.FeatureCollection(L5fs1998post.iterate(fill, ft));
print(newft_remove_null);
// Export
Export.table.toDrive(newft_remove_null,
"anyDescription",
"EarthEngine",
"sample_remove_null");
//plot cloudy scene and sample points ------------------------------------
var scene = ee.Image('LANDSAT/LT5_SR/LT50910861998042');
Map.setCenter(147, -37.5, 9);
Map.addLayer(scene, {bands: ['B3', 'B2', 'B1'], min: 0, max: 2000}, 'false-color composite');
Map.addLayer(pts);