Migracja do interfejsu Solar API w Google Maps Platform

Aby przejść z interfejsu Google Earth Engine Solar API na Google Maps Platform Solar API:

  1. włączyć Google Maps Platform Solar API w swoim projekcie w chmurze,
  2. Utwórz nowy klucz i ogranicz go do interfejsu GMP Solar API.
  3. Zaktualizuj swój kod za pomocą krok po kroku podane niżej instrukcje.

Porównanie

Solar API (nowa wersja) Domy w promieniu słońca Earth Engine Solar API (wycofany) Ikona EE
Stan uruchamiania Uruchomiony Wdrożenie pilotażowe (wycofane)
Dostęp
Mechanizm konta Google Cloud przez konsolę Cloud, włączając interfejs Solar API i zarządzając interfejsem API w sekcji Google Maps Platform; konto Google Cloud przez włączenie Earth Engine Solar API w konsoli Google Cloud.
Kto Publiczny Kontrolowany dostęp
Poziom Samodzielnie przydzielona Ręczny dostęp do projektu Cloud
Uwierzytelnianie Klucz interfejsu API i OAuth Klucz interfejsu API
Ceny
Strategia Płatność według wykorzystania 100% rabat
Poziomy Za 1000 zapytań (z niższą ceną uzależnioną od liczby żądań)
Punkty końcowe Różne ceny w poszczególnych punktach końcowych
Chmura
Monitorowanie Cloud Monitoring w sekcji „Google Maps Platform” Cloud Monitoring w sekcji „Interfejsy API i usługi”.
Limit QPM (zapytania na minutę) i QPH (zapytania na godzinę) Roczna
Logowanie Cloud Logging (opcjonalnie) Cloud Logging (opcjonalnie)
Płatności Konto rozliczeniowe Cloud -
Pomoc Pełna obsługa Google Maps Platform w zakresie docelowego poziomu usług i poziomu jakości usług Ograniczona przez adres e-mail
Interfejs API
Nazwa hosta https://solar.googleapis.com/v1/ (REST) https://earthenginesolar.googleapis.com/v1/ (REST)
Metody
  • buildingInsights:findClosest
  • dataLayers:get
  • buildings:findClosest
  • solar.get
Odpowiedź Brak zmian w porównaniu z wersją pilotażową
solarInfo Promień ≤ 100 m Promień ≤ 100 m
Pokrycie,
Obszar Cały świat Cały świat
Jakość danych HIGH/MEDIUM HIGH/MEDIUM
Typ budynku Każdy budynek zmapowany na adres ORAZ w obszarze zasięgu zdjęć interfejsu Solar API. Każdy budynek zmapowany na adres ORAZ w obszarze zasięgu zdjęć interfejsu Solar API.
Warunki korzystania z usługi
TOS Warunki korzystania z Google Maps Platform Warunki korzystania z Google Earth Engine

Krok po kroku

Skonfiguruj projekt Google Cloud

Instrukcje znajdziesz tutaj: Skonfiguruj Google Cloud projekt.

Tylko niektóre role utworzyć projekt Google Cloud, Jeśli nie możesz utworzyć projektu, skontaktuj się ze swoim administratora organizacji.

Możesz też użyć istniejącego projektu Cloud. Więcej informacji znajdziesz w części Pierwsze kroki dzięki Google Maps Platform.

Konfigurowanie konta rozliczeniowego

Instrukcje znajdziesz tutaj: Jak zarządzać płatnościami Konto.

Możesz użyć istniejącego projektu Cloud z istniejącym kontem rozliczeniowym.

Uzyskiwanie klucza interfejsu API lub użycie tokena OAuth

Po skonfigurowaniu projektu Google Cloud musisz utworzyć i zabezpieczyć swój interfejs API Klucz do korzystania z interfejsu Solar API zgodnie z opisem w sekcji Używanie interfejsu API Keys (Klucze). Możesz też utworzyć token OAuth zgodnie z opisem w artykule Używanie OAuth.

Korzystanie z interfejsu Solar API

  • Wysyłaj żądania GET do nowych punktów końcowych : https://solar.googleapis.com
  • Zwróć uwagę, że niektóre nazwy metod interfejsu API uległy zmianie:
    • buildings:findClosestbuildingInsights:findClosest
    • solarinfo:getdataLayers:get

Szybka wersja próbna: użyj zapisanego klucza interfejsu API z poprzedniego kroku i zastąp YOUR_API_KEY w przykładowym zapytaniu poniżej, przed wczytaniem adresu URL w przeglądarka:

https://solar.googleapis.com/v1/dataLayers:get?location.latitude=37.2746464&location.longitude=-121.7530949&radius_meters=10&key=YOUR_API_KEY

Odpowiedź na temat pierwotnej wersji przedpremierowej

W przypadku pierwotnej wersji przedpremierowej z 9 maja 2023 roku adresy URL w odpowiedzi są w formularz:

https://earthengine.googleapis.com/v1alpha/projects/sunroof-api/thumbnails/THUMBNAIL_ID:getPixels

Ten fragment kodu jest przykładową odpowiedzią:

{
  "imageryDate": {
    "year": 2015,
    "month": 8,
    "day": 8
  },
  "imageryProcessedDate": {
    "year": 2021,
    "month": 2,
    "day": 15
  },
  "dsmUrl": "https://earthengine.googleapis.com/v1alpha/projects/geo-solar-api/thumbnails/fbde33e9cd16d5fd10d19a19dc580bc1-8614f599c5c264553f821cd034d5cf32:getPixels",
  "rgbUrl": "https://earthengine.googleapis.com/v1alpha/projects/geo-solar-api/thumbnails/91ed3551f2d0abee20af35e07bd0c927-c96c59e80cf1fc1dc86cf59fc8ec86ba:getPixels",
  "maskUrl": "https://earthengine.googleapis.com/v1alpha/projects/geo-solar-api/thumbnails/e4051553dba6870c03d855ae82c30b7e-7cc8ae6ce7c73f219e3c1924e5c17fc6:getPixels",
  "annualFluxUrl": "https://earthengine.googleapis.com/v1alpha/projects/geo-solar-api/thumbnails/9b0f87f49d778a65c9e27ff936e6dbba-b90be2fe80d25abd4c9e8c4dc809f763:getPixels",
  "monthlyFluxUrl": "https://earthengine.googleapis.com/v1alpha/projects/geo-solar-api/thumbnails/90e7cca77402f14809e349937f0a0be8-94fafeb4ef42d72f1b3c0652a1cb5518:getPixels",
  "hourlyShadeUrls": [
    "https://earthengine.googleapis.com/v1alpha/projects/geo-solar-api/thumbnails/dcd276e4782aef4ff1b230b781736d37-e193b231ce57a03449afc3e21cf6783b:getPixels",
    ...
  ]
  }

Aby wysłać żądanie do adresu URL w odpowiedzi, podaj cały URL w polu użytkownika.

Pełną specyfikację tego żądania i odpowiedzi znajdziesz w odwołaniach dokumentacji.

Napisz aplikację, która będzie obsługiwać oba formaty odpowiedzi

Teraz możesz napisać aplikację, która obsługuje zarówno pierwotną wersję, jak i aktualną formatów odpowiedzi.

Główna różnica między 2 odpowiedziami, oprócz faktycznego adresu URL, że musisz przekazać klucz interfejsu API do żądania uzyskującego dostęp do adresów URL nowy format odpowiedzi. Jeśli pominiesz klucz interfejsu API, żądanie się nie powiedzie.

Możesz na przykład dodać do aplikacji ten kod, aby sprawdzić URL oraz obsługuje każdą wersję poprawnie:

JavaScript

/**
* Function to examine a response URL and to append the API key to the
* URL if it is in the new format.
*/
function prepareGetGeoTiffUrl(geoTiffUrl, apiKey) {
  if (geoTiffUrl.match("solar.googleapis.com")) {
    let url = new URL(geoTiffUrl);
    url.searchParams.set('apiKey', apiKey);
    return url.toString();
  }
  return geoTiffUrl;
}

Python

# Functions to examine a response URL and to append the API key to the
# URL if it is in the new format.

def add_api_key_to_url(base_url: str, api_key: str) -> str:
  '''Formats URL that currently lacks an API key to use the one provided.'''
  return base_url + "&key=" +api_key;

def prepare_geo_tiff_url(base_url: str, api_key: str) -> str:
  '''Prepares URL from GetDataLayers depending on API being called.
    If the geoTIFF url from GetDataLayers is for the solar API GetGeoTiff
      endpoint, append the API key. Otherwise return the URL as is.
  '''
  if re.search("solar.googleapis.com", geo_tiff_url):
    return add_api_key_to_url(geo_tiff_url, api_key)
  return geo_tiff_url

Java

/ **Adds API key to a URL. /*
private String addApiKeyToUrl(String geoTiffUrl, String apiKey) {
  return geoTiffUrl + "&key=" + apiKey;
}

/
** *Function to examine a response URL and to append the API key to the
 *URL if it is in the new format.
/*
private String prepareGetGeoTiffUrl(String geoTiffUrl, String apiKey) {
  Pattern pattern = Pattern.compile("solar.googleapis.com");
  Matcher matcher = pattern.matcher(geoTiffUrl);
  if (matcher.find()) {
    return addApiKeyToUrl(geoTiffUrl, apiKey);
  } else {
    return geoTiffUrl;
  }
}

Monitorowanie

Poziom projektu Poziom konta rozliczeniowego

Cloud Monitoring Rozliczenia usługi Google Cloud

Wskazówki, które warto wiedzieć

  • Limit: konsumpcja, którą można skalować (a nie roczna, która znika)
    • Aktualnie limit która zostanie zmieniona na QPM
    • Sprawdzone metody: ustawianie limitu po stronie klienta i wysyłanie alertów
  • Ceny:
    • Płatność według wykorzystania
    • 404 NOT_FOUND, jeśli lokalizacja jest poza zasięgiem, nie będą naliczane, ale będą wliczać się do limitu
  • Ogólne warunki korzystania z usługi: Warunki korzystania z Google Maps Platform.