DEV Community

Eko Priyanto
Eko Priyanto

Posted on

Mencoba global forest watch API

Saat pertama coba selalu gagal API key tidak sesuai

ini mungkin works

<?php
$apiKey = 'ini-api-key-tanpa-domain-restriction'; // API key tanpa domain restriction

// Define geometry (polygon untuk area Trenggalek)
$geometry = [
    "type" => "Polygon",
    "coordinates" => [[
        [103.19732666015625, 0.5537709801264608],
        [103.24882507324219, 0.5647567848663363],
        [103.21277618408203, 0.5932511181408705],
        [103.19732666015625, 0.5537709801264608]
    ]]
];

// Step 1: Create geostore dari geometry
$geostoreUrl = 'https://data-api.globalforestwatch.org/geostore';
$geostorePayload = json_encode(["geojson" => $geometry]);

$ch = curl_init($geostoreUrl);

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTPHEADER => [
        'x-api-key: ' . $apiKey,
        'Content-Type: application/json',
        'Content-Length: ' . strlen($geostorePayload)
    ],
    CURLOPT_POSTFIELDS => $geostorePayload,
]);

$geostoreResponse = curl_exec($ch);
$geostoreHttpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$geostoreResult = json_decode($geostoreResponse, true);

if (!isset($geostoreResult['data']['id'])) {
    die("Gagal membuat geostore. HTTP: $geostoreHttpCode\n");
}

$geostoreId = $geostoreResult['data']['id'];
echo "Geostore ID: $geostoreId\n";

// Step 2: Query dataset dengan geostore dan geometry
$queryUrl = "https://data-api.globalforestwatch.org/dataset/umd_tree_cover_loss/v1.12/query/json?geostore=$geostoreId";

$queryPayload = json_encode([
    "sql" => "SELECT SUM(area__ha) as total_area FROM results WHERE umd_tree_cover_loss__year = 2019",
    "geometry" => $geometry
]);

$ch = curl_init($queryUrl);

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTPHEADER => [
        'x-api-key: ' . $apiKey,
        'Content-Type: application/json',
        'Content-Length: ' . strlen($queryPayload)
    ],
    CURLOPT_POSTFIELDS => $queryPayload,
]);

$queryResponse = curl_exec($ch);
$queryHttpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo "Query HTTP: $queryHttpCode\n";

$result = json_decode($queryResponse, true);

echo "<pre>";
print_r($result);
echo "</pre>";
Enter fullscreen mode Exit fullscreen mode

ini dokumentasi yang bagus:
https://developer.openepi.io/how-tos/getting-started-using-global-forest-watch-data-api

Top comments (0)