# Lampiran G: Contoh kode dan perhitungan sumber terbuka

Kode sumber terbuka untuk perhitungan kredit keanekaragaman hayati tersedia untuk umum di [Savimbo GitHub](https://github.com/savimbo).&#x20;

Kami berniat membuat kode ini lebih mudah dipakai dan tersedia untuk proyek IP dan LC dengan antarmuka yang bisa memberi kredit otomatis dari, dan ke, basis data Airtable gratis setelah kami memulai sertifikasi keanekaragaman hayati pada 2024. Airtable gratis [daftar ](https://airtable.com/invite/r/fxsn6mcE)sudah tersedia sekarang. Proyek IP dapat mendaftar ke daftar tunggu di antarmuka ini sekarang dan mendapatkan templat basis data Airtable dengan mengirim email ke <ops@savimbo.com>

Contoh perhitungan juga tersedia di Google Earth Engine telah berjanji untuk menyediakan akun gratis bagi kelompok Masyarakat Adat yang terlibat dalam perubahan iklim. Nonkomersial [daftar](https://earthengine.google.com/noncommercial/) tersedia.&#x20;

**Gambar 11. Contoh kode Google Earth Engine**&#x20;

<figure><img src="https://lh6.googleusercontent.com/rVQ0Wv_v9_eXa7qOghqAvJhwResowct17qRiUSD-lO_eatzZqyiNhfpKmprKNcRWdVXXkv2FuYyAetkdA1BzOcf6d7EWeGqmRpKVVMGmk89gLOQd8i1K-Ia4A7ixXu0Xo2XSlovBPF8KPN24COHu6a4" alt=""><figcaption><p><em><strong>Gambar 11</strong></em>. Contoh kode Google Earth Engine</p></figcaption></figure>

Contoh kode, kode sedang direvisi oleh pihak luar. Dapat diakses melalui Google Earth Engine di [tautan ini.](https://code.earthengine.google.com/e914e4bf1b4fd252f4ad90318ca2371e) Atau di Savimbo GitHub di [tautan ini.](https://github.com/savimbo) Kontak ***ops at savimbo.co**m* jika Anda ingin menjadi peninjau kode.&#x20;

```markup
// Muat poligon plot18
var plot18_data = require("users/drea/map:plot18_data");
var plot18 = plot18_data.polygon;

// Hitung luas plot dalam hektar
var plotArea = plot18.area();
var plotAreaHectares = plotArea.divide(10000);

// Muat titik 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);

// Tentukan feature collection untuk menyimpan poligon perpotongan
var intersectionPolygons = ee.FeatureCollection([]);

// Tentukan fungsi 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));
};

// Hitung radius dan buffer untuk setiap titik
for (var i = 0; i < puntos.length; i++) {
  var point = puntos[i].geometry;
  var date = puntos[i].date;

  // Hitung tanggal mulai dengan mengurang 30 hari
  var startDate = ee.Date(date).advance(-30, 'day');
  
  // Hitung tanggal akhir dengan menambah 30 hari
  var endDate = ee.Date(date).advance(30, 'day');
  
  // Buat feature dengan geometri titik dan tanggal sebagai properti
  var feature = ee.Feature(point, { date: date });
  
  var pointBuffer = feature.buffer(800);
  radios.push(pointBuffer);
  
  // Hitung perpotongan dengan plot18
  var intersection = pointBuffer.intersection(plot18);
  
  // Hitung luas dalam hektar
  var area = intersection.area().divide(10000);
  
  // Ambil bulan dan tahun dari tanggal
  var month = ee.Date(date).get('month');
  var year = ee.Date(date).get('year');
  
  // Buat label untuk bulan dan tahun
  var monthYearLabel = ee.String(month).cat('-').cat(year).cat(' Hectarias N°');
  
  // Hitung perpotongan dengan plot18 untuk titik saat ini
  var intersectionPlot18 = pointBuffer.intersection(plot18);
  
  // Hitung luas dalam hektar untuk perpotongan dengan plot18
  var intersectionArea = intersectionPlot18.area().divide(10000);
  var multipliedArea = intersectionArea.multiply(60);
  
  // Tambahkan multipliedArea ke jumlah
  sumMultipliedArea = sumMultipliedArea.add(multipliedArea);
  
  // Tentukan rentang tanggal jaguar
  var jaguarRange = endDate.difference(startDate, 'day');
  
 // Tetapkan nilai intersectionArea ke setiap hari dalam rentang jaguar
  var assignedArea = ee.FeatureCollection(ee.List.sequence(0, jaguarRange.subtract(1)).map(assignedAreaFunction));
  
  // Tampilkan hasil untuk setiap titik
  print('Jaguar:', i + 1);
  print('Date of image capture:', date);
  print('Start Date:', startDate.format('YYYY-MM-dd'));
  print('End Date:', endDate.format('YYYY-MM-dd'));
  print('Total Intersection Area per day in hectares:', intersectionArea);
  print('Multiplied Intersection Area * 60:', multipliedArea);
  print('Assigned Area per day:', assignedArea);
  print('----------------------');
  
  // Tambahkan buffer titik saat ini ke peta dengan warna biru
  Map.addLayer(pointBuffer, { color: 'blue' }, 'Radio ' + (i + 1));
  
  // Tambahkan geometri perpotongan ke intersectionPolygons
  intersectionPolygons = intersectionPolygons.merge(intersection);
}

// Lakukan gabungan poligon untuk menghindari duplikasi
var unionPolygons = intersectionPolygons.union();

// Hitung total luas perpotongan tanpa duplikasi
var totalIntersectionArea = unionPolygons.geometry().area().divide(10000);

// Tampilkan hasil
print('Total intersection area hectares:', totalIntersectionArea);
print('Plot18 area hectares:', plotAreaHectares);
print('Sum of Multiplied Intersection Area hectares * 60 days:', sumMultipliedArea);

// Tambahkan layer plot18 ke peta
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/methodology/id/lampiran/lampiran-g-contoh-kode-dan-perhitungan-sumber-terbuka.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.
