Workflow : mosaïquage de données raster sur une valeur ST_Raster existante

Complexité : Intermédiaire Exigences relatives aux données : Utilisez vos propres données Objectif : Utilisez les instructions SQL UPDATE pour supprimer une palette de couleurs des valeurs ST_Raster dans des enregistrements spécifiques de la table urban_area, mosaïquer des rasters sur les valeurs de raster dans ces enregistrements, puis réappliquer une palette de couleurs sur les mêmes valeurs.

Vous pouvez utiliser une instruction SQL UPDATE et la fonction de mosaïquage ST_Raster pour mosaïquer des rasters sur une valeur ST_Raster existante. Vous pouvez utiliser un fichier image, un dossier de plusieurs images, ou des valeurs extraites d'une autre colonne ST_Raster comme entrée pour mosaïquer des rasters sur une valeur existante.

Toutefois, avant de mosaïquer un raster sur une valeur existante, vous devez supprimer la palette de couleurs, le cas échéant, de la valeur ST_Raster existante. Après l'opération de mosaïquage, vous pouvez rajouter la palette de couleurs à la valeur ST_Raster.

Les exemples de cette rubrique vous expliquent comment supprimer une palette de couleurs d'enregistrements spécifiques dans la table urban_area, ajouter des rasters aux valeurs de raster dans ces enregistrements, puis réappliquer une palette de couleurs.

Suppression d'une palette de couleurs

Utilisez la fonction deleteColormap ST_Raster pour supprimer une palette de couleurs d'une valeur ST_Raster.

Cette opération doit être effectuée avant de mosaïquer d'autres rasters sur les valeurs de raster dans la table spécifiée.

Étapes :
  1. Utilisez une instruction SQL UPDATE avec la fonction deleteColormap pour supprimer la palette de couleurs des valeurs de raster dans les lignes de la table urban_area dont le nom correspond à 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';

    Une fois la fonction deleteColormap réalisée, la valeur de raster s'affiche en nuances de gris et non avec une palette de couleurs.

Mosaïquage de données raster supplémentaires sur une valeur ST_Raster existante

L'opération de mosaïquage ajoute successivement d'autres données raster à une valeur de raster existante. Une valeur de raster peut ainsi s'accroître pour dépasser plusieurs téraoctets. La valeur de raster est limitée uniquement par la capacité de stockage du système de gestion de bases de données (SGBD).

Exemple 1 : insertion de tous les rasters d'un dossier dans une colonne ST_Raster

Vous pouvez utiliser l'option récursive de la fonction mosaic dans l'instruction SQL UPDATE pour que le type de fichier spécifié soit recherché à plusieurs reprises dans le dossier indiqué. Dans ces exemples, tous les fichiers portant une extension .tif sont recherchés de façon récursive dans le dossier cities. Ces fichiers sont ensuite mosaïqués sur la valeur de raster identifiée comme all_cities dans la table urban_area.

Étapes :
  1. Mosaïquez tous les fichiers .tif sous un dossier spécifié sur une valeur ST_Raster existante à l'aide de la fonction mosaic et l'option recursive.

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

Exemple 2 : extraction de ST_PixelData et ajout d'une colonne ST_Raster

Le premier niveau de pyramide des pixels de la colonne raster de la table japan dont le nom de colonne est tokyo est mosaïqué sur la colonne raster de la table urban_area dont le nom de colonne est all_cities. Dans ce cas, la fonction getPixelData ST_Raster extrait la valeur ST_PixelData de la valeur ST_Raster dans la variable ST_PixelData prédéfinie appelée data. La variable est ensuite transmise au constructeur ST_Raster pour la reconvertir au format ST_Raster.

Étapes :
  1. Utilisez la fonction getPixelData pour extraire une valeur ST_PixelData de la valeur ST_Raster dans la table japan et l'insérer dans une valeur de raster dans la table 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');

Application d'une palette de couleurs à la valeur ST_Raster mise à jour

Une fois la mise à jour de la valeur ST_Raster terminée, vous pouvez réappliquer une palette de couleurs pour définir les couleurs utilisées pour afficher la valeur de raster. Utilisez la fonction setColormap pour réappliquer une palette de couleurs au raster.

La fonction setColormap nécessite un fichier image TIFF en entrée. Dans les exemples suivants, la palette de couleurs du fichier citycolors.tif est utilisée pour ajouter une palette de couleurs aux valeurs de raster de la table urban_area pour toutes les lignes dont le nom correspond à all_cities.

Étapes :
  1. Utilisez une instruction SQL UPDATE et le fichier image citycolors.tif pour ajouter une palette de couleurs aux enregistrements de la table urban_area dont le nom correspond à 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';

Rubriques associées


3/6/2012