For the complete documentation index, see llms.txt. This page is also available as Markdown.
Apêndice G: Exemplo de código aberto e cálculo
Demonstração no Google Earth Engine e acesso ao código da ISBM no GitHub da Savimbo
Código de código aberto para cálculos de crédito de biodiversidade está disponível ao público no Savimbo GitHub.
Temos a intenção de tornar este código mais fácil de usar e disponível para projetos de Povos Indígenas e comunidades locais, com uma interface que pode creditar automaticamente a partir de, e para, um banco de dados Airtable gratuito depois que começarmos a certificação de biodiversidade em 2024. Airtable gratuito cadastre-se está disponível agora. Projetos de Povos Indígenas podem se inscrever agora na lista de espera nesta interface e obter modelos de banco de dados Airtable enviando um e-mail para ops@savimbo.com
Cálculos de demonstração também estão disponíveis em O Google Earth Engine prometeu fornecer contas gratuitas para grupos Indígenas envolvidos em mudanças climáticas. Não comercial cadastre-se está disponível.
Figura 11. Exemplo de código do Google Earth Engine
Figura 11. Exemplo de código do Google Earth Engine
Exemplo de código, código sob revisão externa. Pode ser acessado pelo Google Earth Engine neste link. Ou no Savimbo GitHub neste link. Contato ops at savimbo.com se você quiser ser revisor de código.
// Carregar polígono plot18
var plot18_data = require("users/drea/map:plot18_data");
var plot18 = plot18_data.polygon;
// Calcular a área da parcela em hectare
var plotArea = plot18.area();
var plotAreaHectares = plotArea.divide(10000);
// Carregar pontos de jaguar
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 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 final 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(' Hectarias 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 do jaguar
var jaguarRange = endDate.difference(startDate, 'day');
// Atribuir o valor de intersectionArea a cada dia do intervalo do jaguar
var assignedArea = ee.FeatureCollection(ee.List.sequence(0, jaguarRange.subtract(1)).map(assignedAreaFunction));
// Imprimir os resultados para cada ponto
print('Jaguar:', i + 1);
print('Data da captura da imagem:', date);
print('Data de início:', startDate.format('YYYY-MM-dd'));
print('Data final:', 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' }, 'Radio ' + (i + 1));
// Adicionar a geometria de interseção a intersectionPolygons
intersectionPolygons = intersectionPolygons.merge(intersection);
}
// Fazer união de 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 de plot18 em hectares:', plotAreaHectares);
print('Soma da área de interseção multiplicada em hectares * 60 dias:', sumMultipliedArea);
// Adicionar a camada plot18 ao mapa
Map.addLayer(plot18, { color: 'gold' }, "plot18");
Map.centerObject(plot18);