Workflow : mosaïquage de données raster sur une valeur ST_Raster existante
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.
-
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.
-
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.
-
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.
-
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';