Migrar para a API Solar na Plataforma Google Maps

Desenvolvedores do Espaço Econômico Europeu (EEE)

Para migrar da API Solar do Google Earth Engine para a API Solar da Plataforma Google Maps:

  1. Ative a API Solar da Plataforma Google Maps no seu projeto na nuvem.
  2. Crie uma chave e restrinja o uso dela à API GMP Solar.
  3. Atualize seu código seguindo as instruções detalhadas abaixo.

Comparação lado a lado

API Solar (nova) Casas com um sol API Solar do Earth Engine (descontinuada) Ícone do EE
Status do lançamento Lançado Piloto (descontinuado)
Acesso
Mecanismo Conta do Google Cloud no console do Cloud, ativando a API Solar e gerenciando-a na seção da Plataforma Google Maps Conta do Google Cloud no console do Cloud ao ativar a API Earth Engine Solar
Quem Público Controlado por acesso
Nível Autoprovisionado Acesso manual ao projeto do Google Cloud
Autenticação Chave de API e OAuth Chave de API
Preços
Estratégia Pagamento por uso Desconto de 100%
Divisão em níveis Por 1.000 consultas, com preços decrescentes com base no volume
Endpoints Preços diferentes por endpoint
Cloud
Monitoramento Cloud Monitoring em "Plataforma Google Maps" Cloud Monitoring em "APIs e serviços"
Cota QPM (consultas por minuto) e QPH (consultas por hora) Anual
Logging Cloud Logging (opcional) Cloud Logging (opcional)
Faturamento Conta do Cloud Billing -
Suporte Suporte completo da Plataforma Google Maps com SLO/SLA Limitado, por e-mail
API
Nome do host https://solar.googleapis.com/v1/ (REST) https://earthenginesolar.googleapis.com/v1/ (REST)
Métodos
  • buildingInsights:findClosest
  • dataLayers:get
  • buildings:findClosest
  • solar.get
Resposta Nenhuma mudança em relação ao piloto
solarInfo Raio de até 100 m Raio de até 100 m
Cobertura
Área Global Global
Qualidade dos dados HIGH/MEDIUM HIGH/MEDIUM
Tipo de construção Qualquer edifício mapeado para um endereço E dentro da cobertura de imagens da API Solar Qualquer edifício mapeado para um endereço E dentro da cobertura de imagens da API Solar
Termos de Serviço
TOS Termos da Plataforma Google Maps Termos do Google Earth Engine

Passo a passo

Configurar seu projeto do Google Cloud

Instruções aqui: Configurar seu projeto do Google Cloud.

Somente determinadas funções podem criar um projeto do Cloud. Se você não conseguir criar um, entre em contato com o administrador da sua organização.

Também é possível usar um projeto do Cloud. Saiba mais em Como começar a usar a Plataforma Google Maps.

Configurar sua conta de faturamento

Instruções aqui: Como gerenciar sua conta de faturamento.

É possível usar um projeto do Cloud com uma conta de faturamento.

Receber uma chave de API ou usar um token OAuth

Depois de configurar o projeto do Google Cloud, crie e proteja a chave de API para usar a API Solar, conforme descrito em Usar chaves de API. Ou crie um token OAuth conforme descrito em Usar o OAuth.

Usar a API Solar

  • Faça solicitações GET para os novos endpoints : https://solar.googleapis.com
  • Alguns nomes de métodos da API mudaram:
    • buildings:findClosestbuildingInsights:findClosest
    • solarinfo:getdataLayers:get

Teste rápido: use a chave de API salva na etapa anterior e substitua YOUR_API_KEY na consulta de exemplo abaixo antes de carregar o URL no navegador:

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

Resposta para a versão de pré-lançamento original

Para a versão prévia original de 9 de maio de 2023, os URLs na resposta estão no formato:

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

Confira a seguir um exemplo de resposta:

{
  "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",
    ...
  ]
  }

Para fazer uma solicitação a um URL na resposta, inclua o URL inteiro na solicitação.

A especificação completa dessa solicitação e resposta está na documentação de referência.

Escrever um app para oferecer suporte aos dois formatos de resposta

Agora você pode escrever um app que lida com os formatos de resposta da prévia original e da atual.

A principal diferença entre as duas respostas, além do URL em si, é que você precisa transmitir uma chave de API para uma solicitação que acesse os URLs do novo formato de resposta. Se você omitir a chave de API, a solicitação vai falhar.

Por exemplo, adicione o seguinte código ao app para examinar o URL e processar cada versão corretamente:

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;
  }
}

Monitoramento

Nível do projeto Nível da conta de faturamento

Cloud Monitoring Cloud Billing

Dicas úteis

  • Cota: consumo que pode ser dimensionado (em vez de anual, que vai desaparecer)
    • Cota atual, que será alterada para QPM
    • Práticas recomendadas: definir cota do lado do cliente e enviar alertas
  • Preços:
    • Pagamento por utilização
    • As respostas 404 NOT_FOUND, quando o local não está no intervalo de cobertura, não são cobradas, mas são contabilizadas na cota.
  • Termos de uso gerais: Termos de Serviço da Plataforma Google Maps