Manejo de Datos Vectoriales

Earth Engine maneja datos vectoriales con el tipo ee.Geometry. La especificación GeoJSON describe en detalle el tipo de geometrías soportadas por Earth Engine, incluyendo:

  • Point: una lista de coordenadas en alguna proyección,
  • LineString: una lista de puntos,
  • LinearRing: una LineString cerrada
  • Polygon: una lista de LinearRings donde la primera es una cáscara y los anillos subsiguientes son agujeros.

Earth Engine también soporta MultiPoint, MultiLineString y MultiPolygon. GeoJSON GeometryCollection también es compatible, aunque tiene el nombre MultiGeometry dentro de Earth Engine.

Creación de Geometrías

Vamos a crear y mapear geometrías. Tenemos dos formas. Una a través de la escritura de sentencias y la otra forma a través del mapa.

Creando geometrías mediante código

//Puntos
var point = ee.Geometry.Point([-65.409244, -24.727333]);// geometria punto
//Lineas
var lineString = ee.Geometry.LineString([[-65.404817, -24.725354],
[-65.402682, -24.725636], [-65.403004, -24.727897], [-65.403959, -24.727829 ]]); //linea de puntos

//Anillo
var linearRing = ee.Geometry.LinearRing(
    [[-65.407033, -24.726395 ],[-65.407312, -24.727828],[-65.406632, -24.727128]  ,[-65.407033, -24.726395]] );

//Rectangulos
var rectangulo = ee.Geometry.Rectangle([-65.408418, -24.728688,-65.407839, -24.729896 ]);

//Poligonos
var vertices = [ [-65.410024, -24.728817], [-65.410383, -24.728763], [-65.410357, -24.728608],[-65.41018, -24.728632],[-65.41011, -24.728603],[-65.409992, -24.728661] ];
var poligono = ee.Geometry.Polygon( vertices );

 
// Mapeo de Geometrías
Map.addLayer(point,{'color':'00FF11'} ,'Punto');
Map.addLayer(lineString,{'color':'CC0011'} ,'Linea');
Map.addLayer(linearRing,{'color':'CC0011'} ,'Anillo');
Map.addLayer(rectangulo,{'color':'00FF11'} ,'Rectangulo');
Map.addLayer(poligono,{'color':'CC0011'} ,'Poligono');
Map.centerObject(point,16);

ee.Geometry.Point es la llamada a la API Earth Engine que recibe dos parámetros: una lista ee.List([]) con las coordenadas y el segundo que es opcional una proyección que puede ser especificada como código EPSG [1]. El valor predeterminado es EPSG:4326 (WGS84 Lat/Lon).

ee.Geometry.LineString recibe una lista de puntos y parámetros opcionales.

ee.Geometry.LinearRing recibe una lista de puntos que a diferencia de LineString comienza y termina con el mismo punto para poder cerrar el anillo. También tiene parámetros opcionales.

ee.Geometry.Rectangle recibe una lista con esquinas mínimas y máximas del rectángulo, como una lista de dos puntos en formato de coordenadas GeoJSON ‘Point’ o una lista de dos ee.Geometry que describen un punto, o una lista de cuatro números en el orden xMin, yMin , xMax, yMax.

ee.Geometry.Polygon recibe una lista de anillos que definen los límites del polígono. Puede ser una lista de coordenadas en el formato ‘Polygon’ de GeoJSON, o una lista de ee.Geometry que describe un LinearRing. El resto de los parámetros son similares al resto de las geometrías.

Creando geometrías mediante el mapa

Las opciones para dibujar están ubicadas en el sector superior izquierdo del mapa. Las herramientas disponibles permiten activar el dibujado de geometrías múltiples de: puntos, líneas y polígonos.Para dejar de dibujar se hace clic en la mano de la izquierda.

Herramientas para dibujar geometrías de puntos, lineas y pokígonos usando el mapa de GEE

Las geometrías creadas se incorporarán al codigo en la sección import (en el panel de Script). Una vez que se activa la herramienta esta se habilita para poder dibujar. Se asigna un color al azar y cada figura que se trace formará parte de una geometría múltiple. En la configuración predeterminada de la instanciación de un objeto ee.Geometry.XXXXX este se crea como EPSG:4326, es decir, será una geometría geodésica.

Operaciones con Geometrías

Earth Engine admite una amplia variedad de operaciones en objetos Geometry. Estos incluyen operaciones en geometrías individuales tales como calcular un buffer, centroide, bounding box, perímetro, envolvente convexa, etc.

Utilizando la definición del polígono de la anterior vamos a realizar algunas operaciones de geometrías:

print('Área: ', poligono.area());
// Todos los valores de mediciones de distancias vienen expresados en metros.
// asi que para km2 : poligono.area().divide(1000 * 1000));

Resumen: mapa conceptual de la lección

Mapa Conceptual de la lección 3