# Lampiran G: Contoh kode sumber terbuka dan perhitungan

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 digunakan dan tersedia untuk proyek IP dan LC dengan antarmuka yang dapat 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)tersedia sekarang. Proyek IP dapat mendaftar ke daftar tunggu di antarmuka ini sekarang dan memperoleh templat basis data Airtable dengan mengirim email ke <ops@savimbo.com>

Perhitungan demo 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 dalam revisi eksternal. 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 hektare
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 mengurangi 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 hektare
  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(' Hektarias N°');
  
  // Hitung perpotongan dengan plot18 untuk titik saat ini
  var intersectionPlot18 = pointBuffer.intersection(plot18);
  
  // Hitung luas dalam hektare 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 untuk 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('Tanggal pengambilan gambar:', date);
  print('Tanggal mulai:', startDate.format('YYYY-MM-dd'));
  print('Tanggal akhir:', endDate.format('YYYY-MM-dd'));
  print('Total luas perpotongan per hari dalam hektare:', intersectionArea);
  print('Luas perpotongan dikalikan * 60:', multipliedArea);
  print('Luas yang ditetapkan per hari:', assignedArea);
  print('----------------------');
  
  // Tambahkan buffer titik saat ini ke peta dengan warna biru
  Map.addLayer(pointBuffer, { color: 'blue' }, 'Radius ' + (i + 1));
  
  // Tambahkan geometri perpotongan ke intersectionPolygons
  intersectionPolygons = intersectionPolygons.merge(intersection);
}

// Lakukan penggabungan 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 luas perpotongan dalam hektare:', totalIntersectionArea);
print('Luas plot18 dalam hektare:', plotAreaHectares);
print('Jumlah luas perpotongan yang dikalikan hektare * 60 hari:', 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://sexytrees.savimbo.com/methodology/id/lampiran/lampiran-g-contoh-kode-sumber-terbuka-dan-perhitungan.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.
