Apêndice G: Exemplo de código e cálculo de código aberto
Demonstração no Google Earth Engine e acesso ao código do ISBM no GitHub da Savimbo
Isto foi útil?
Isto foi útil?
// Carregar o polígono plot18
var plot18_data = require("users/drea/map:plot18_data");
var plot18 = plot18_data.polygon;
// Calcular a área do plot em hectares
var plotArea = plot18.area();
var plotAreaHectares = plotArea.divide(10000);
// Carregar pontos de onça
var points_jaguar_data = require("users/drea/map:points_jaguar_data");
var puntos = points_jaguar_data.points;
var radios = [];
var sumMultipliedArea = ee.Number(0);
// Definir uma coleção de feições para armazenar os polígonos de interseção
var intersectionPolygons = ee.FeatureCollection([]);
// Definir a função assignedArea
var assignedAreaFunction = function(offset) {
var day = startDate.advance(offset, 'day');
var dayString = day.format('YYYY-MM-dd');
var feature = ee.Feature(null, { date: dayString, intersectionArea: intersectionArea });
return feature.set('date_area', ee.String(dayString).cat(' - ').cat(intersectionArea));
};
// Calcular radios e buffers para cada ponto
for (var i = 0; i < puntos.length; i++) {
var point = puntos[i].geometry;
var date = puntos[i].date;
// Calcular a data de início subtraindo 30 dias
var startDate = ee.Date(date).advance(-30, 'day');
// Calcular a data de fim adicionando 30 dias
var endDate = ee.Date(date).advance(30, 'day');
// Criar uma feição com a geometria do ponto e a data como propriedades
var feature = ee.Feature(point, { date: date });
var pointBuffer = feature.buffer(800);
radios.push(pointBuffer);
// Calcular a interseção com plot18
var intersection = pointBuffer.intersection(plot18);
// Calcular a área em hectares
var area = intersection.area().divide(10000);
// Obter o mês e o ano da data
var month = ee.Date(date).get('month');
var year = ee.Date(date).get('year');
// Gerar um rótulo para o mês e o ano
var monthYearLabel = ee.String(month).cat('-').cat(year).cat(' Hectares Nº');
// Calcular a interseção com plot18 para o ponto atual
var intersectionPlot18 = pointBuffer.intersection(plot18);
// Calcular a área em hectares para a interseção com plot18
var intersectionArea = intersectionPlot18.area().divide(10000);
var multipliedArea = intersectionArea.multiply(60);
// Adicionar multipliedArea à soma
sumMultipliedArea = sumMultipliedArea.add(multipliedArea);
// Definir o intervalo de datas da onça
var jaguarRange = endDate.difference(startDate, 'day');
// Atribuir o valor de intersectionArea para cada dia do intervalo da onça
var assignedArea = ee.FeatureCollection(ee.List.sequence(0, jaguarRange.subtract(1)).map(assignedAreaFunction));
// Imprimir os resultados para cada ponto
print('Onça:', i + 1);
print('Data de captura da imagem:', date);
print('Data de início:', startDate.format('YYYY-MM-dd'));
print('Data de fim:', endDate.format('YYYY-MM-dd'));
print('Área total de interseção por dia em hectares:', intersectionArea);
print('Área de interseção multiplicada * 60:', multipliedArea);
print('Área atribuída por dia:', assignedArea);
print('----------------------');
// Adicionar o buffer do ponto atual ao mapa na cor azul
Map.addLayer(pointBuffer, { color: 'blue' }, 'Raio ' + (i + 1));
// Adicionar a geometria de interseção a intersectionPolygons
intersectionPolygons = intersectionPolygons.merge(intersection);
}
// Fazer a união dos polígonos para evitar duplicatas
var unionPolygons = intersectionPolygons.union();
// Calcular a área total das interseções sem duplicatas
var totalIntersectionArea = unionPolygons.geometry().area().divide(10000);
// Mostrar os resultados
print('Área total de interseção em hectares:', totalIntersectionArea);
print('Área do plot18 em hectares:', plotAreaHectares);
print('Soma da área de interseção multiplicada por 60 dias em hectares:', sumMultipliedArea);
// Adicionar a camada plot18 ao mapa
Map.addLayer(plot18, { color: 'gold' }, "plot18");
Map.centerObject(plot18);