Migracja do interfejsu Solar API w Google Maps Platform

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

  1. Włącz interfejs Solar API na platformie Google Maps w projekcie chmury.
  2. Utwórz nowy klucz i ogranicz go do interfejsu GMP Solar API.
  3. Zaktualizuj kod, wykonując podane niżej instrukcje krok po kroku.

Porównanie w układzie obok siebie

Solar API (nowy) Domy z słoneczną energią Earth Engine Solar API (przestarzały) Ikona EE
Stan uruchamiania Uruchomiony Pilot (wycofany)
Dostęp
Mechanizm Konto Google Cloud za pomocą konsoli Cloud, włączając interfejs Solar API i zarządzając nim w sekcji Mapy Google Platform. na koncie Google Cloud w konsoli Cloud, włączając interfejs API Earth Engine Solar;
Kto Publiczny kontrolowany dostęp,
Poziom Samodzielne wdrażanie Ręczny dostęp do projektu w Google Cloud
Uwierzytelnianie Klucz interfejsu API i protokół OAuth Klucz interfejsu API
Ceny
Strategia Płatność według wykorzystania Rabat 100%
Podział na poziomy Za 1000 zapytań, z ceną malejącą w zależności od ilości
Punkty końcowe różne ceny w zależności od punktu końcowego.
Chmura
Monitorowanie Monitorowanie w chmurze 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 (opcjonalny) Cloud Logging (opcjonalny)
Płatności Konto rozliczeniowe Cloud -
Pomoc Pełna pomoc dotycząca Google Maps Platform z poziomami usług SLO/SLA Ograniczone, e-mailem
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 pod konkretny adres I mieszczący się w zakresie zdjęć satelitarnych z Solar API Każdy budynek zmapowany pod konkretny adres I mieszczący się w zakresie zdjęć satelitarnych z Solar API
Warunki korzystania z usługi
Warunki korzystania z usługi Warunki korzystania z Google Maps Platform Warunki korzystania z Google Earth Engine

Krok po kroku

Konfigurowanie projektu Google Cloud

Instrukcje: Konfigurowanie projektu Google Cloud.

Tylko niektóre role mogą tworzyć projekty Cloud. Jeśli nie możesz utworzyć projektu, skontaktuj się z administratorem organizacji.

Możesz też użyć istniejącego projektu Cloud. Więcej informacji znajdziesz w artykule Pierwsze kroki z Google Maps Platform.

Konfigurowanie konta rozliczeniowego

Instrukcje znajdziesz tutaj: Jak zarządzać kontem rozliczeniowym.

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

Uzyskiwanie klucza interfejsu API lub używanie tokena OAuth

Po skonfigurowaniu projektu Google Cloud musisz utworzyć klucz API i zabezpieczyć go, aby móc korzystać z interfejsu Solar API zgodnie z opisem w artykule Korzystanie z kluczy API. Możesz też utworzyć token OAuth w sposób opisany w artykule Używanie OAuth.

Korzystanie z interfejsu Solar API

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

Szybki test: przed załadowaniem adresu URL w przeglądarce użyj zapisanego w poprzednim kroku klucza interfejsu API i zastąp nim YOUR_API_KEY w przykładowym zapytaniu poniżej:

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

Odpowiedź na pierwotną wersję podglądu

W przypadku wersji Preview z 9 maja 2023 r. adresy URL w odpowiedzi mają postać:

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

Ten fragment kodu to przykładowa odpowiedź:

{
  "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, dołącz do żądania cały adres URL.

Pełna specyfikacja tego żądania i odpowiedzi znajduje się w dokumentacji referencyjnej.

Napisać aplikację obsługującą oba formaty odpowiedzi

Teraz możesz napisać aplikację, która obsługuje zarówno oryginalny format podglądu, jak i obecne formaty odpowiedzi.

Główną różnicą między tymi 2 odpowiadami, oprócz samego adresu URL, jest to, że musisz przekazać klucz interfejsu API do żądania, które uzyskuje dostęp do adresów URL z nowego formatu odpowiedzi. Jeśli pominiesz klucz interfejsu API, żądanie się nie powiedzie.

Aby sprawdzić adres URL i odpowiednio obsłużyć każdą wersję, możesz na przykład dodać do aplikacji taki kod:

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 Na poziomie konta rozliczeniowego

Cloud Monitoring Rozliczenia usługi Google Cloud

Wskazówki

  • Limit: zużycie, które może się zmieniać (zamiast rocznego, który zniknie).
    • Bieżąca kwota, która zostanie zmieniona na QPM
    • Sprawdzone metody: ustawianie limitu po stronie klienta i wysyłanie alertów
  • Ceny:
    • Płatność według wykorzystania
    • Odpowiedzi 404 NOT_FOUND, gdy lokalizacja nie jest w zakresie zasięgu, nie będą obciążać, ale będą wliczać się do limitu
  • Ogólne warunki korzystania: Warunki korzystania z Google Maps Platform