Google earth engine NDVI

64 Views Asked by At

Can anyone tell me what to do with this Google earth engine code? The assignment due is in 2 days but still couldn't get it right The error is ComputedObject (Error) Image.select: Parameter 'input' is required.

Here's my code

// Define the region of interest (e.g., Kecamatan Berastagi, North Sumatra) var S1 = ee.Geometry.Polygon(\[ \[98.4761, 3.2071\], \[98.4773, 3.2071\], \[98.4773, 3.2081\], \[98.4761, 3.2081\] \]); // Load the Sentinel-2 image collection var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterBounds(S1) .filterDate('2023-01-01', '2023-06-06') .filterMetadata('CLOUD_COVER', 'less_than', 10); print('Landsat 8 collection:', collection); var C1 = ee.Image(collection.first()); // Define the bands for true-color visualization var Band = { bands: \['B4', 'B3', 'B2'\], min: 0.0, max: 0.3 }; // Display the true-color composite image Map.addLayer(C1, Band, 'True Color'); Map.centerObject(S1, 12); // Calculate NDVI var infra = C1.select(\['B5'\]); var red = C1.select(\['B4'\]); var ndvi = infra.subtract(red).divide(infra.add(red)).rename('NDVI'); // Visualize NDVI var BandNDVI = { palette: \['red', 'yellow', 'lightgreen', 'darkgreen'\], min: -1, max: 1 }; Map.addLayer(ndvi.clip(S1), BandNDVI, 'NDVI'); // Classify NDVI var ndvit0 = ndvi.gt(-1).and(ndvi.lte(0)).selfMask(); var ndvit1 = ndvi.gt(0).and(ndvi.lte(0.33)).selfMask(); var ndvit2 = ndvi.gt(0.33).and(ndvi.lte(0.66)).selfMask(); var ndvit3 = ndvi.gt(0.66).and(ndvi.lte(1)).selfMask(); // Add classified layers Map.addLayer(ndvit0.clip(S1), { palette: 'red' }, 'Bukan Tanaman'); Map.addLayer(ndvit1.clip(S1), { palette: 'yellow' }, 'Tanaman Tidak Sehat'); Map.addLayer(ndvit2.clip(S1), { palette: 'lightgreen' }, 'Tanaman Sehat'); Map.addLayer(ndvit3.clip(S1), { palette: 'darkgreen' }, 'Tanaman Sangat Sehat'); // Calculate areas var luast0 = ndvit0.clip(S1).selfMask().multiply(ee.Image.pixelArea()).rename('Luas Bukan Tanaman'); var luast1 = ndvit1.clip(S1).selfMask().multiply(ee.Image.pixelArea()).rename('Luas Tanaman Tidak Sehat'); var luast2 = ndvit2.clip(S1).selfMask().multiply(ee.Image.pixelArea()).rename('Luas Tanaman Sehat'); var luast3 = ndvit3.clip(S1).selfMask().multiply(ee.Image.pixelArea()).rename('Luas Tanaman Sangat Sehat'); var area0 = luast0.reduceRegion({ reducer: ee.Reducer.sum(), geometry: S1, scale: 30, maxPixels: 1e12 }); var area1 = luast1.reduceRegion({ reducer: ee.Reducer.sum(), geometry: S1, scale: 30, maxPixels: 1e12 }); var area2 = luast2.reduceRegion({ reducer: ee.Reducer.sum(), geometry: S1, scale: 30, maxPixels: 1e12 }); var area3 = luast3.reduceRegion({ reducer: ee.Reducer.sum(), geometry: S1, scale: 30, maxPixels: 1e12 }); print('Luas Bukan Tanaman (Ha):', area0.get('Luas Bukan Tanaman')); print('Luas Tanaman Tidak Sehat (Ha):', area1.get('Luas Tanaman Tidak Sehat')); print('Luas Tanaman Sehat (Ha):', area2.get('Luas Tanaman Sehat')); print('Luas Tanaman Sangat Sehat (Ha):', area3.get('Luas Tanaman Sangat Sehat')); // Add legend var legendTitle = 'NDVI'; var legendLabels = \['Bukan Tanaman', 'Tanaman Tidak Sehat', 'Tanaman Sehat', 'Tanaman Sangat Sehat'\]; var palette = \['red', 'yellow', 'lightgreen', 'darkgreen'\]; var legend = ui.Panel({ style: { position: 'bottom-right', padding: '10px', fontSize: '12px' } }); legend.add(ui.Label(legendTitle)); var makeRow = function (color, label) { var colorBox = ui.Label({ style: { backgroundColor: color, padding: '8px', margin: '0 0 4px 0' } }); var description = ui.Label({ value: label, style: { margin: '0 0 4px 6px' } }); return ui.Panel({ widgets: \[colorBox, description\], layout: ui.Panel.Layout.Flow('horizontal') }); }; for (var i = 0; i \< legendLabels.length; i++) { legend.add(makeRow(palette\[i\], legendLabels\[i\])); } // Add legend to the map Map.add(legend); // Export Export.image.toDrive({ image: ndvi, description: 'NDVI_Berastagi', region: S1, scale: 30, crs: 'EPSG:4326' });`

0

There are 0 best solutions below