Exporta mosaicos de mapas

Para obtener información sobre cómo exportar a otros formatos, como imágenes, videos y tablas (datos vectoriales), consulta Cómo exportar datos.

Descripción general

Para mostrar datos de imágenes (datos ráster) en un mapa en línea, puedes exportar mosaicos de mapas con Export.map.toCloudStorage(). Esta función exporta una pirámide de mosaicos de mapas a un bucket de Cloud Storage, desde el que se puede entregar de forma pública o privada. Es útil cuando los datos de tu imagen son demasiado grandes para superponerse como una sola imagen. Estos mosaicos usan Coordenadas de mosaicos de Google Maps y son adecuados para mostrarse con Google Maps Platform (APIs de Maps), Google Earth para la Web y otras plataformas de mapeo. Las tarjetas se pueden obtener fácilmente en Google Maps o Earth con los archivos HTML que se proporcionan como parte de la exportación.

Existen varios parámetros de configuración y pasos para la exportación, que pueden ser necesarios o no, según cómo planees usar o publicar tus tarjetas. Algunas plataformas de mapas requieren que las tarjetas sean de acceso público, mientras que otras funcionan con tarjetas privadas. Si usas una de las APIs de Google Maps, es probable que debas tener una clave de API de Google Maps Platform. Si publicas mosaicos en Google Earth o en otras plataformas de mapas, es probable que debas configurar las opciones de nivel de acceso y acceso de JS (CORS) adecuadas, según cómo planees usar tus mosaicos. Consulta la sección Lineamientos específicos de la plataforma que se encuentra a continuación para conocer la configuración requerida.

Exporta mosaicos de mapas a Cloud Storage

En el siguiente ejemplo, se exportan mosaicos de una imagen de Landsat para un área de California.

Editor de código (JavaScript)

// --- Example Export Map Tiles - basic ---
// Specify area to clip/export, setup image and preview on map.
var exportRegion = ee.Geometry.BBox(-122.9, 37.1, -121.2, 38.2);
var landsatImage = ee.Image('LANDSAT/LC09/C02/T1_TOA/LC09_044034_20220111')
  .select(['B4', 'B3', 'B2'])
  .visualize({min: 0.02, max: 0.4, gamma: 1.2})
  .clip(exportRegion);
Map.addLayer(landsatImage, {}, 'landsatImage');
Map.centerObject(exportRegion);

// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEE',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Example Export Map Tiles - basic ---
# Specify area to clip/export, setup image and preview on map.
export_region = ee.Geometry.BBox(-122.9, 37.1, -121.2, 38.2)
landsat_image = (
    ee.Image('LANDSAT/LC09/C02/T1_TOA/LC09_044034_20220111')
    .select(['B4', 'B3', 'B2'])
    .visualize(min=0.02, max=0.4, gamma=1.2)
    .clip(export_region)
)
m = geemap.Map()
m.add_layer(landsat_image, {}, 'landsatImage')
m.center_object(export_region)
display(m)

# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEE',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
)
task.start()

Ten en cuenta que esto crea un directorio nuevo en el bucket de Cloud Storage especificado, que se nombra según el parámetro description de forma predeterminada. Puedes cambiar el nombre del directorio o especificar subdirectorios con el parámetro path. Puedes usar los archivos index.html y earth.html en tu directorio de salida para obtener una vista previa de las tarjetas en Maps o Earth.

ACL y opciones de CORS

En el ejemplo anterior, se configuran las ACL (lista de control de acceso) de las tarjetas para que puedan acceder a ellas de forma pública a través de una solicitud directa, pero no se configura el acceso de JS del bucket (configuración de CORS) para permitir que las apps web accedan a ellas. Esto significa que estas tarjetas exportadas se pueden ver en los mapas y las vistas previas de Earth, pero no serán útiles para otras plataformas que requieran acceso a JS. Se supone que eres el propietario del bucket de salida. Si eres escritor en el bucket de salida especificado (pero no el propietario), configura writePublicTiles como false para usar la LCA de objeto predeterminada del bucket de salida.

Si deseas que todas las apps web puedan abrir tus tarjetas para el acceso público, agrega bucketCorsUris: ['*'] a los parámetros de la tarea. Ten en cuenta que el acceso público completo a JS puede no ser conveniente cuando existe el riesgo de que terceros usen tus tarjetas y generen costos de la nube. Para limitar esto, puedes restringir el acceso de JS solo a apps web en dominios o URLs específicos. Ten en cuenta que la configuración de acceso de JS (CORS) se aplica a todo el bucket, no a nivel de la carpeta ni del objeto.

Las ACL y el CORS se pueden configurar con los parámetros writePublicTiles y bucketCorsUris, respectivamente, o desde el diálogo de tareas de exportación, como se muestra a continuación:

Diálogo Export.map
El diálogo de tareas de Export.map.toCloudStorage().
  • Acceso para ver o descargar. Si quieres acceder a ellas (p.ej., desde el editor de código o las apps de Earth Engine), deberás hacer que las tarjetas sean "de acceso público".
  • Acceso a JS. El bucket al que se exporta el mapa debe permitir la legibilidad si deseas que el editor de código, las apps de Earth Engine o cualquier otra app web tengan acceso a las tarjetas. Esta configuración de solicitudes entre orígenes (CORS) se debe configurar a nivel del bucket. Para tu comodidad, el diálogo de exportación de Earth Engine te permite configurar CORS para tu bucket en el momento de la exportación.
  • NOTA: La configuración de acceso a JS o CORS se aplica a nivel del bucket, NO a nivel de la carpeta o el objeto, por lo que cambiar la configuración los actualizará para todas las carpetas y los objetos del bucket. Obtén más información en la documentación de CORS de Cloud Storage, incluida la forma de ver la configuración de CORS actual de un bucket.

Lista de parámetros

A continuación, se muestra una lista de todos los parámetros de una tarea de exportación de mosaicos de mapas, que muestra el nombre del parámetro (argumento) en el código y el campo correspondiente en el diálogo de la tarea (si corresponde). Ten en cuenta que algunos campos son mutuamente excluyentes (p.ej., maxzoom y escala). Consulta la documentación de Export.map para obtener más detalles.

Argumento en el código Campo en el diálogo de tareas Notas
imagen N/A Es la imagen que se exportará como tarjetas. Debe ser una imagen, no una ImageCollection.
descripción Nombre de la tarea Es el nombre legible de la tarea. El valor predeterminado es "myExportMapTask". También se usa como el nombre de la carpeta de las tarjetas, si no se especifica el parámetro "path" (prefijo de salida).
bucket Nombre del bucket de GCS Es el bucket de destino en el que se escribirá.
fileFormat Formato de archivo Es el formato de archivo de las tarjetas del mapa, que puede ser "auto", "png" o "jpg". El valor predeterminado es "auto", lo que significa que las tarjetas opacas se codificarán como "jpg" y las tarjetas con transparencia se codificarán como "png".
ruta de acceso Prefijo de salida Es la cadena que se usa como ruta de acceso de la salida. La barra final "/" es opcional. El valor predeterminado es la descripción de la tarea (Task Name).
writePublicTiles Cómo ver o descargar el nivel de acceso Indica si se deben escribir tarjetas públicas en lugar de usar la LCA de objetos predeterminada del bucket. El valor predeterminado es verdadero y el llamador es el PROPIETARIO del bucket.
maxZoom Resolución máxima y zoom máximo Es el nivel de zoom máximo de las tarjetas del mapa que se exportarán.
de Google. Resolución máxima y escala máxima Es la resolución máxima de la imagen en metros por píxel, como alternativa a "maxZoom". La escala se convertirá al nivel de zoom máximo más apropiado en el ecuador.
minZoom Resolución máxima y zoom mínimo Es el nivel de zoom mínimo opcional de las tarjetas del mapa que se exportarán. El valor predeterminado es cero.
región N/A Un LinearRing, un polígono o coordenadas que representen la región que se exportará. Consulta la documentación para obtener más información.
skipEmptyTiles N/A Si es verdadero, omite la escritura de mosaicos de mapa vacíos (es decir, completamente transparentes). La configuración predeterminada es "false".
mapsApiKey Clave de API de Google Maps Se usa en index.html para inicializar la API de Google Maps. Esto quita el mensaje "Solo para fines de desarrollo" del mapa.
bucketCorsUris Agrega acceso de JS (& Website to allow) Es una lista de dominios (p.ej., https://code.earthengine.google.com) que pueden recuperar las tarjetas exportadas a través de JavaScript (CORS).

Escala y zoom

En el ejemplo anterior, maxZoom se establece en 13. Los niveles de zoom corresponden a cuadrículas de píxeles de diferentes tamaños con las que se muestra un mapa global. (consulta la guía de referencia de coordenadas de píxeles para obtener más información). Debido a la curvatura de la Tierra, la resolución de los píxeles en un nivel de zoom determinado varía según la latitud. Específicamente, los metros por píxel disminuyen en un factor de cos(latitud). En la siguiente tabla, se muestran los metros por píxel, en cada nivel de zoom, en el ecuador para la proyección de Mercator de Google:

Nivel de zoom Tamaño de píxeles (en el ecuador) Nivel de zoom Tamaño de píxeles (en el ecuador)
0 156 km 10 152 m
1 78 km 11 76 m
2 39 km 12 38 m
3 20 km 13 19 m
4 10 km 14 9.6 m
5 4.9 km 15 4.8 m
6 2.4 km 16 2.4 m
7 1.2 km 17 1.2 m
8 611 m 18 0.6 m
9 305 m 19 0.3 m
20 0.15 m

Observa en la tabla anterior que el maxZoom establecido en el ejemplo corresponde a 19 metros en el ecuador, más pequeño en latitudes más altas. Esto es menor que la resolución nominal de 30 segundos de arco por píxel de la imagen de entrada. Como resultado, se puede acercar el mapa que se muestra en el archivo de salida index.html hasta que se vean los píxeles en resolución nativa. Para limitar la visualización del mapa a la resolución de píxeles nativa, establece maxZoom en un valor que corresponda a la resolución nativa o menos.



Lineamientos específicos de la plataforma

A continuación, se incluyen algunas plataformas en las que es posible que desees ver y usar las tarjetas de mapas. En cada sección, se indica qué parámetros de configuración son necesarios para que las tarjetas funcionen con esa plataforma y se incluye una copia del código de ejemplo con los parámetros necesarios.

Cómo usar mosaicos de mapas en Earth Engine (editor de código o apps de EE)

Si deseas exportar mosaicos de mapas solo para volver a usarlos en Google Earth Engine o apps de EE, establece "Access Level" en "Publicly Accessible" y "JS Access Level" (en el diálogo de tareas) en "Add Earth Engine Access" o "Add Public Access". Como alternativa, puedes establecer estos parámetros en el código:

writePublicTiles: true,
bucketCorsUris: ['https://code.earthengine.google.com','https://*.earthengine.app']

Una vez que exportes las tarjetas, podrás acceder a ellas en Earth Engine.

Editor de código (JavaScript)

// --- Export Map Tiles for use in EE ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEE',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: ['https://code.earthengine.google.com','https://*.earthengine.app']
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Export Map Tiles for use in EE ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEE',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=[
        'https://code.earthengine.google.com',
        'https://*.earthengine.app',
    ],
)
task.start()

Cómo ver una vista previa de Google Maps

Para obtener una vista previa de tus tarjetas de mapa en Google Maps, ve a la carpeta de resultados en Google Cloud Storage y abre el archivo "index.html" en tu navegador. Se abrirá un mapa de página completa que mostrará tus tarjetas en Google Maps con la API de JavaScript de Google Maps Platform, como este: index.html. Una exportación básica generará mosaicos de mapas base inhabilitados y con la marca de agua "Solo para fines de desarrollo". Para evitar esto y mostrar mosaicos de mapas base estándar de Google, genera una clave de API y, luego, inclúyela en la configuración de exportación.

Si proporcionas una clave de API en el momento de la exportación, esta página de vista previa se puede ver públicamente, se puede incorporar en otras páginas y no requiere que el usuario sea un usuario registrado de Earth Engine.

Editor de código (JavaScript)

// --- Export Map Tiles for use with Map Preview ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForMapPreview',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  mapsApiKey: 'fakeMapsApiKey012345' // replace with a valid API Key
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Export Map Tiles for use with Map Preview ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForMapPreview',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    mapsApiKey='fakeMapsApiKey012345',  # replace with a valid API Key
)
task.start()

Cómo ver una vista previa de Google Earth

Para obtener una vista previa de tus mosaicos de mapas en Google Earth en la Web, asegúrate de exportarlos con el nivel de acceso establecido en "Acceso público". Luego, ve a la carpeta de salida en Google Cloud Storage, abre el archivo "earth.html" en tu navegador, como este: earth.html y haz clic en el botón "Abrir en Google Earth" que aparece. Se abrirá Google Earth y se mostrarán tus mosaicos en el mapa 3D. La práctica recomendada es configurar el nivel de "Acceso a JS" en "Acceso público", lo que te permitirá usar las tarjetas en Google Earth sin el archivo de vista previa (que usa un servidor proxy si las tarjetas no tienen la configuración necesaria de Acceso a JS/CORS).

Para descargar un archivo KML que contenga un vínculo a tus datos, haz clic en el menú de 3 puntos en Google Earth y selecciona "Exportar como archivo KML". Nota: El archivo KML generado de esta manera NO es compatible con Google Earth Pro (la versión para computadoras de escritorio de Earth).

Editor de código (JavaScript)

// --- Export Map Tiles for use with Earth Preview ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEarthPreview',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: []  // leaving blank is ok for Earth Preview only
  // for direct use in Earth, set to: ['https://earth.google.com']
  // or set to public: ['*'] (risk of misuse)
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Export Map Tiles for use with Earth Preview ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEarthPreview',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=[],  # leaving blank is ok for Earth Preview only
    # for direct use in Earth, set to: ['https://earth.google.com']
    # or set to public: ['*'] (risk of misuse)
)
task.start()

Publicación con Google Maps Platform (APIs de Maps)

Para crear un conjunto de mosaicos de mapas listos para publicarse de forma pública a través de Google Maps Platform, deberás tener o crear una clave de API y asegurarte de que el nivel de acceso esté configurado como "Acceso público". Según la forma en que tu aplicación de la API de Maps acceda a las tarjetas, es posible que también debas establecer un "nivel de acceso de JS" adecuado para tu sitio. Una vez que hayas exportado tus mosaicos, el resultado en la pestaña Task del editor de código proporciona una URL para tus mosaicos con las variables adecuadas para usar con la API de Google Maps, por ejemplo: https://storage.googleapis.com/my_bucket/my_test_tiles/{Z}/{X}/{Y}

Editor de código (JavaScript)

// --- Export Map Tiles for use with Maps Platform APIs ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForMapsPlatform',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: ['*'],  // '*' = All domains = risk of misuse
  // For better protection, specify the domain(s) where the
  // tiles will be used, eg: ['https://mysite.mydomain.com']
  mapsApiKey: 'fakeMapsApiKey012345' // replace with a valid API Key
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Export Map Tiles for use with Maps Platform APIs ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForMapsPlatform',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=['*'],  # '*' = All domains = risk of misuse
    # For better protection, specify the domain(s) where the
    # tiles will be used, eg: ['https://mysite.mydomain.com']
    mapsApiKey='fakeMapsApiKey012345',  # replace with a valid API Key
)
task.start()

Publicación en Google Earth (en la Web)

Para crear un conjunto de mosaicos de mapas para publicarlos de forma pública a través de Google Earth, deberás establecer el nivel de acceso en "Acceso público" y el nivel de acceso de JS para permitir "https://earth.google.com" (o "Acceso público"). Después de la exportación, puedes obtener una vista previa en Google Earth con el archivo earth.html en el directorio de exportación (consulta más arriba).

Editor de código (JavaScript)

// --- Export Map Tiles for use with Google Earth web ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEarthWeb',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: ['https://earth.google.com']
  // ['*'] will also work, but risks misuse
});

Configuración de Python

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Export Map Tiles for use with Google Earth web ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEarthWeb',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=['https://earth.google.com'],
    # ['*'] will also work, but risks misuse
)
task.start()

Una vez que exportes las tarjetas, podrás agregarlas a un proyecto en Google Earth en la Web. El resultado de la pestaña Tasks del editor de código (que se muestra a continuación) proporciona la URL de tus tarjetas con las variables adecuadas para usar en Google Earth, por ejemplo: https://storage.googleapis.com/my_bucket/my_test_tiles/$[level]/$[x]/$[y]

Cómo generar URLs de una tarea de exportación de tarjetas
Produce URLs de una tarea de exportación de mosaicos.

Para usarla en la Web de Earth, crea una función de superposición de mosaicos y agrega esta URL como "URL de superposición". Si tu conjunto de datos no es global y quieres evitar errores de solicitud de mosaicos para mosaicos inexistentes, asegúrate de abrir la sección "Overlay Options" y ajustar los cuatro parámetros de Tile Coverage para que coincidan con las extensiones de tus mosaicos exportados.

Mosaicos de mapas que se muestran en la Web de Earth
Mosaicos de mapas que se muestran en la Web de Earth.

Publicación en otras plataformas de mapas

Cuando exportes tarjetas para usarlas con otras plataformas o aplicaciones, la configuración necesaria dependerá de cómo accedan a ellas. Para que las tarjetas sean lo más accesibles posible, establece el nivel de acceso en “Acceso público” y el nivel de acceso de JS en “Acceso público”.



Cómo generar una clave de API de Google Maps Platform

Si planeas usar tus mosaicos de mapas con Google Maps Platform o deseas obtener una vista previa de ellos en Maps sin el mapa base restringido para desarrolladores, deberás tener o generar una clave de API de Google Maps Platform y, luego, incluirla en la configuración de exportación o agregarla a los sitios. Esto no es necesario para usar Google Earth.

Cuando exportas mosaicos de mapas desde Earth Engine, generamos una página HTML de muestra que se almacena en el directorio de salida para que puedas obtener una vista previa de los mosaicos con la API de Maps JavaScript de Google Maps Platform. De manera opcional, puedes proporcionar una clave de API de Google Maps Platform en el momento de la exportación, que se usará para las llamadas a la API del visor de muestra.

Para generar una clave de API de Google Maps Platform ahora, sigue estos cuatro pasos:

  • Haz clic en el botón "Crear clave de API de Maps Platform" que aparece a continuación.
  • Selecciona el proyecto de Cloud para tu clave de API y haz clic en SIGUIENTE.
  • Haz clic en para copiar la clave nueva y pégala en el diálogo Exportar mapa del editor de código.
  • (Recomendado) Haz clic en el vínculo de la Consola de API debajo de la clave nueva para establecer restricciones de URLs de referencia. Consulta las restricciones de aplicaciones y de referencia para obtener más detalles.

Crea una clave de API de Maps Platform

Ingresar nombre del proyecto La clave está lista

Cómo agregar restricciones de referencia a una clave de API

Cuando agregas una clave de API, las restricciones de referente garantizan que solo las apps designadas puedan usarla. Puedes configurar o editar las restricciones de referer en cualquier momento. Para ello, visita la página Credenciales en la consola de Cloud y sigue estos pasos:

  • Asegúrate de que el nombre del proyecto correcto esté seleccionado en el menú desplegable de la parte superior de la pantalla.
  • Haz clic en la clave de API de Maps Platform que se generó anteriormente para ver los detalles de la clave.
  • Selecciona URL de referencia HTTP (sitios web) y especifica el bucket de Cloud Storage que se especifica en Export.map.toCloudStorage con la siguiente plantilla: https://storage.googleapis.com/{bucket}/*
  • Haz clic en “Guardar”. Debería aparecer el indicador "Guardando…".
Agrega referencias