Un Feature de Earth Engine se define como un GeoJSON Feature. Es un objeto con una propiedad de tipo Geometry y una propiedad de properties que almacena un diccionario de otras propiedades. Entonces, necesitamos un objeto Geometry y opcionalmente un diccionario con los atributos de ese Feature.
// La geometría
var poligono = ee.Geometry.Polygon(
[[[-63.33892822265625, -25.150878651548442],
[-63.33824157714844, -25.17791290009134],
[-63.31043243408203, -25.17760219565173],
[-63.31043243408203, -25.15025710411473]]]);
//La declaración del Feature:
var miFeature = ee.Feature(poligono,
{variable_1: 100,
variable_2: 'Hola'});
print(miFeature);
Map.addLayer(miFeature, {}, 'Mi Feature!');
Map.centerObject(miFeature, 12);
Los Features tienen las mismas funcionalidades para gestionar sus geometrías que los objetos Geometry. Además, poseen otros métodos setters & getters para el manejo de las propiedades.
var feature_ejemplo = ee.Feature(
ee.Geometry.Point([-64.4913, -25.2314]))
.set('Nombre', 'El Tunal')
.set('Area_ha', 3800);
// Recupero una propiedad del feature
var nombre = feature_ejemplo.get('Nombre');
print(nombre);
print(feature_ejemplo);
// Asigno una nueva propiedad
feature_ejemplo = feature_ejemplo.set('Altura_max', 41);
// Sobreescribo un nuevo diccionario
var newDict = {Nombre: 'Embalse El Tunal', Area_ha: 3290};
var feature_ejemplo = feature_ejemplo.set(newDict);
print(feature_ejemplo);
// Se muestran los resultados
Map.addLayer(feature_ejemplo, {'color':'CC0011'}, 'Ejemplo 2');
Los grupos de features relacionados se pueden combinar en una FeatureCollection (FC), para permitir operaciones adicionales en todo el conjunto tales como: filtrado, clasificación y renderizado. Además de simples features (geometría + propiedades), FeatureCollection también puede contener otras colecciones.
Podemos construir un FeatureCollection a partir de una lista de features, donde estos pueden tener o no el mismo tipo de geometría.
var features = [
ee.Feature(ee.Geometry.Point(-65.4027, -24.7154), {Localidad:'Vaqueros'}),
ee.Feature(ee.Geometry.Point(-65.0511, -24.6605), {Localidad:'Guemes'}),
ee.Feature(ee.Geometry.Point(-65.48832, -24.8961 ), {Localidad: 'Cerrillos'}),
ee.Feature(ee.Geometry.Point(-65.656, -24.9061), {Localidad: 'Campo Quijano'})];
var fc_desdeUnaLista = ee.FeatureCollection(features);
print(fc_desdeUnaLista);
Map.addLayer(fc_desdeUnaLista, {}, 'FC_Puntos');
Map.centerObject(fc_desdeUnaLista,8);
También podemos incorporar un FeatureCollection a partir de un Google Fusion Table. Google Fusion Tables (GFT) es un servicio de Google que permite manejar tablas. Esto habilita la importación de archivos vectoriales a la plataforma GEE a través de archivos vectoriales en formato KML.
Estas tablas las gestionamos desde Google Drive, Debemos conectar a la Aplicación Tablas Dinámicas y crear una tabla dinámica de Google.
Para la creación del Fusion Table debemos importar desde el sistema de archivos un documento .kml.
Para poder importar este archivo a GEE necesitamos el ID de la tabla, para ello vamos a File y seleccionamos About this table. Ahí encontraremos el identificador (Id).
Ej. 1BqbNEHsacJn5xWbOwznChvc77xJ66tutV3u7axq_
Para cargar una FeatureCollection desde una Fusion Table, proporcione al constructor (ee.FeatureCollection) el ID de tabla agregado a ft:. Por ejemplo:
var desdeFT = ee.FeatureCollection('ft:1BqbNEHsacJn5xWbOwznChvc77xJ66tutV3u7axq_');
print(desdeFT);
Map.addLayer(desdeFT, {}, 'Región Chaqueña');
Map.centerObject(desdeFT);
Es posible instanciar un FC utilizando tablas que tenemos almacenadas en un Assets. Para crear esta nueva tabla podemos utilizar un Shapefile o un .zip que contenga todos los archivos que componen el Shapefile. El tamaño máximo permitido es 10GB.
La carga del archivo (upload) no es instantáneo y puede demorar algunos minutos dependiendo de la congestión de la plataforma y el tamaño que tenga el archivo. Podemos verificar el progreso desde la solapa Task: Podemos incluir este FC de dos formas. La primera es desde la solapa Assest. Importar el FC. Automáticamente se incorpora al código en la sección import.:
La segunda forma es:
var segunda_forma = 'users/hernanelena/Santa_maria_este_cuenca';
var cuenca = ee.FeatureCollection(segunda_forma);
print(cuenca);
Map.addLayer(cuenca, {color:'fec44f'}, 'Cuenca');
Al igual que mostramos anteriormente como dibujar geometrías, es posible definir FeaturesCollection dibujando desde el mapa.