Flujo de trabajo: crear un mosaico de datos ráster en un valor ST_Raster existente

Complejidad: Intermedio Requisitos de datos: Usar datos propios Objetivo: Utilice las declaraciones SQL UPDATE para quitar un mapa de color de los valores ST_Raster en registros específicos de la tabla urban_area, cree un mosaico de ráster en los valores de ráster en esos registros, y después aplique otra vez un mapa de color a los mismos valores.

Puede usar una declaración SQL UPDATE y la función de mosaico ST_Raster para crear un mosaico de datos ráster en un valor ST_Raster existente. Puede utilizar un archivo de imagen, una carpeta de varias imágenes o valores extraídos de otra columna ST_Raster como entradas para crear rásteres en un valor existente.

Sin embargo, antes de que pueda crear un mosaico de ráster en un valor existente, debe quitar el mapa de color, si lo hay, del valor ST_Raster existente. Después de completar la operación de mosaico, puede agregar nuevamente el mapa de color al valor ST_Raster.

Los ejemplos en este tema le muestran cómo quitar un mapa de color de registros específicos en la tabla urban_area, agregar rásteres a los valores de ráster en esos registros, y después volver a aplicar un mapa de color.

Quitar un mapa de color

Utilice la función ST_Raster deleteColormap para quitar un mapa de color de un valor ST_Raster.

Esto debe hacerse antes de crear un mosaico con rásteres adicionales en los valores ráster de la tabla especificada.

Pasos:
  1. Utilice una declaración UPDATE SQL con la función deleteColormap para quitar el mapa de color de los valores ráster en las filas de la tabla urban_area que tienen un valor de nombre igual a ALL_CITIES.

    Oracle

    UPDATE URBAN_AREA t SET RASTER = t.raster.deleteColormap() WHERE NAME = 'ALL_CITIES';

    PostgreSQL

    UPDATE urban_area SET raster = deleteColormap(raster) WHERE name = 'all_cities';

    SQL Server

    UPDATE urban_area SET raster = deleteColormap() WHERE name = 'all_cities';

    Después de que deleteColormap se realiza correctamente, el valor ráster se representa en escala de grises en vez de un valor con mapa de color.

Crear un mosaico con más datos ráster en un valor ST_Raster existente

La operación de mosaico agrega reiteradamente más datos ráster al valor de ráster existente. De esta manera, un valor ráster puede superar muchos terabytes; lo único que limita el valor ráster es la capacidad de almacenamiento del sistema de administración de bases de datos (DBMS).

Ejemplo 1: Insertar todos los rásteres en una carpeta en una columna ST_Raster

Puede usar la opción recurrente de la función de mosaico en la declaración SQL UPDATE para que la carpeta especificada se escanee repetidas veces en busca de un tipo o archivo especificado. En estos ejemplos, se examina la carpeta cities repetidamente para buscar todos los archivos con extensión .tif. Con estos archivos después se crea un mosaico en el valor ráster identificado como all_cities en la tabla urban_area.

Pasos:
  1. Organice todos los archivos .tif en un mosaico dentro de una carpeta especificada en un valor ST_Raster existente por medio de la función de mosaico y la opción recurrente.

    Oracle

    UPDATE URBAN_AREA t SET RASTER = t.raster.mosaic('E:\cities\*.tif',  'recursive,log=E:\log.txt') WHERE NAME = 'ALL_CITIES';

    PostgreSQL

    UPDATE urban_area SET raster = mosaic(image,'E:\data\*.tif',  'recursive,log=E:\log.txt') WHERE name = 'all_cities';

    SQL Server

    UPDATE urban_area SET raster = raster.mosaic('E:\data\*.tif',NULL, 'recursive,log=E:\log.txt') WHERE name = 'all_cities';

Ejemplo 2: Extraer ST_PixelData y agregarlo a una columna ST_Raster

Con el primer nivel de pirámide de los píxeles en la columna de ráster de la tabla japan, cuyo valor de nombre es tokyo, se crea un mosaico en la columna de ráster de la tabla urban_area, cuyo valor de nombre de columna es all_cities. En este caso, la función ST_Raster getPixelData extrae el valor ST_PixelData del valor ST_Raster en la variable predefinida ST_PixelData llamada data. La variable pasa posteriormente al constructor ST_Raster para convertirse nuevamente al formato ST_Raster.

Pasos:
  1. Use la función getPixelData para extraer un valor ST_PixelData del valor ST_Raster en la tabla japan e insértelo en un valor ráster de la tabla urban_area.

    Oracle

    DECLARE data ST_PIXELDATA; BEGIN SELECT t.raster.getPixelData('level=1')  INTO data FROM JAPAN t  WHERE NAME = 'TOKYO';  UPDATE URBAN_AREA t SET image = t.raster.mosaic(data,'log=E:\log.txt') WHERE NAME = 'ALL_CITIES'; END; /

    PostgreSQL

    DROP FUNCTION IF EXISTS  mosaic_from_pixeldata(); CREATE OR REPLACE FUNCTION mosaic_from_pixeldata() RETURNS integer AS '  DECLARE data sde.st_pixeldata;  BEGIN SELECT getPixelData(image) INTO data FROM japan WHERE name = 'tokyo'; UPDATE urban_area SET raster = mosaic(raster,data,''log=E:\log.txt'') WHERE name = ''all_cities''; END;'   LANGUAGE plpgsql; SELECT mosaic_from_pixeldata(); DROP FUNCTION IF EXISTS mosaic_from_pixeldata();

    SQL Server

    DECLARE @data ST_PIXELDATA; SET @data = (SELECT raster.getPixelData('level=1') FROM japan WHERE name = 'tokyo'); UPDATE urban_area SET raster = raster.mosaic(NULL,@data,'log=E:\log.txt');

Aplicar un mapa de color al valor actualizado ST_Raster

Una vez que termina de actualizar el valor ST_Raster, puede volver a aplicar un mapa de color que defina los colores utilizados para visualizar el valor ráster. Use la función setColormap para volver a aplicar un mapa de color al ráster.

La función setColormap requiere un archivo de imagen TIFF como entrada. En los ejemplos siguientes, el mapa de color del archivo citycolors.tif se usa para agregar un mapa de color a aquellos valores ráster de la tabla urban_area para todas las filas que tengan un valor de nombre igual a all_cities.

Pasos:
  1. Utilice la declaración UPDATE SQL y el archivo de imagen de entrada citycolors.tif para agregar un mapa de color a los registros de la tabla urban_area que contengan un valor de nombre igual a all_cities.

    Oracle

    UPDATE URBAN_AREA t SET raster = t.raster.setColormap('/net/gis/gis1/citycolors.tif') WHERE name = 'ALL_CITIES';

    PostgreSQL

    UPDATE urban_area SET raster = setColormap(raster,'/net/gis/gis1/citycolors.tif') WHERE name = 'all_cities';

    SQL Server

    UPDATE urban_area SET raster = raster.setColormap('/net/gis/gis1/citycolors.tif') WHERE name = 'all_cities';

Temas relacionados


3/6/2012