# Apêndice G: exemplo de código e cálculo de código aberto

Código de código aberto para cálculos de crédito de biodiversidade está disponível ao público no [Savimbo GitHub](https://github.com/savimbo).&#x20;

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 ](https://airtable.com/invite/r/fxsn6mcE)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](https://earthengine.google.com/noncommercial/) está disponível.&#x20;

**Figura 11. Exemplo de código do Google Earth Engine**&#x20;

<figure><img src="https://lh6.googleusercontent.com/rVQ0Wv_v9_eXa7qOghqAvJhwResowct17qRiUSD-lO_eatzZqyiNhfpKmprKNcRWdVXXkv2FuYyAetkdA1BzOcf6d7EWeGqmRpKVVMGmk89gLOQd8i1K-Ia4A7ixXu0Xo2XSlovBPF8KPN24COHu6a4" alt=""><figcaption><p><em><strong>Figura 11</strong></em>. Exemplo de código do Google Earth Engine</p></figcaption></figure>

Exemplo de código, código sob revisão externa. Pode ser acessado pelo Google Earth Engine neste [link.](https://code.earthengine.google.com/e914e4bf1b4fd252f4ad90318ca2371e) Ou no Savimbo GitHub neste [link.](https://github.com/savimbo) Contato ***ops at savimbo.co**m* se você quiser ser revisor de código.&#x20;

```markup
// 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);

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://isbm.savimbo.com/pt-br/apendices/apendice-g-exemplo-de-codigo-e-calculo-de-codigo-aberto.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
