Workflow : création d'un catalogue d'images avec SQL

Complexité : Avancé Conditions requises pour les données Utiliser vos propres données Objectif : Découvrez comment créer une table raster, initialiser la colonne ST_Raster dans la table, ajouter des enregistrements à la table, créer des pyramides et des statistiques dans ST_Raster, puis inscrire la table dans la géodatabase pour créer un catalogue d'images.

Le catalogue d'images est un composant ArcObjects qui stocke des jeux de données raster référencés spatialement. Il est possible de créer et renseigner un catalogue d'images avec SQL à l'aide du type ST_Raster en suivant le workflow fourni dans cette rubrique.

Chacun des sections suivantes contient des exemples illustrant la création d'un catalogue d'images dans chaque système de gestion de bases de données. Vous pouvez modifier les exemples pour les adapter à vos données.

Création d'une table avec une colonne ST_Raster

Etapes :
  1. Ouvrez un éditeur SQL, tel que SQL*Plus pour Oracle, pgsql ou pgAdminIII pour PostgreSQL, ou la fenêtre Editeur de requête dans Microsoft Management Studio pour SQL Server.
  2. Utilisez une instruction CREATE TABLE pour créer une table avec une colonne ST_Raster et une colonne de chaîne.

    Dans ces exemples, la table urban_area est créée. La table contient deux colonnes : nom et raster.

    Oracle

    CREATE TABLE urban_area 
    (name varchar2(255), sde.st_raster raster);

    PostgreSQL

    CREATE TABLE urban_area 
    (name varchar(255), sde.st_raster raster);

    SQL Server

    CREATE TABLE urban_area 
    (name varchar(255), dbo.st_raster raster);

Initialisation de la colonne ST_Raster pour stocker des valeurs de raster

Utilisez la fonction d'initialisation ST_Raster_Util pour initialiser une colonne ST_Raster. Cette fonction ajoute, pour la colonne raster, une référence aux tables de métadonnées de raster ArcSDE et crée la table des blocs raster et la table auxiliaire du raster, ainsi que les déclencheurs d'insertion, de mise à jour et de suppression de la colonne raster. Une fois cette fonction exécutée, la colonne raster est inscrite dans ArcSDE et ses fonctionnalités peuvent y accéder. Elle ajoute un enregistrement aux tables système table_registry, column_registry et raster_columns. Toutefois, elle n'est pas accessible comme objet de catalogue d'images ArcGIS tant qu'elle n'a pas été inscrite dans la géodatabase.

Etapes :
  1. Utilisez l'utilitaire d'initialisation ST_Raster pour initialiser la colonne ST_Raster dans la table urban_area.

    Oracle

    BEGIN SDE.ST_RASTER_UTIL.INITIALIZE 
    ('urban_area','raster',4326,'defaults'); END; /

    PostgreSQL

    SELECT st_raster_util_initialize 
    ('urban_area','raster',4326,'DEFAULTS');

    SQL Server

    EXEC ST_Raster_Util.Initialize 
    'sde','bobby','urban_area','raster',4326,NULL,'DEFAULTS'

Insertion d'une valeur de raster dans la colonne ST_Raster

Une instruction INSERT ajoute une ligne à la table.

Dans ces exemples, la colonne de nom est renseignée avec la chaîne de caractères "MILWAUKEE", et le constructeur ST_Raster convertit un fichier GeoTIFF en type ST_Raster.

Etapes :
  1. Utilisez une instruction INSERT SQL pour insérer une image dans une colonne ST_Raster. Veillez à utiliser votre propre fichier TIFF au lieu de milwakee.tif.

    Oracle

    INSERT INTO URBAN_AREA 
    ('MILWAUKEE',SDE.ST_RASTER('C:\milwaukee.tif'));
    
    COMMIT;

    PostgreSQL

    INSERT INTO urban_area 
    ('milwaukee',sde.st_raster('C:\milwaukee.tif'));

    SQL Server

    INSERT INTO urban_area 
    ('milwaukee',dbo.ST_Raster::construct('C:\milwaukee.tif'));
    AttentionAttention :

    Vérifiez que le chemin d'accès spécifié au fichier TIFF est valide pour le serveur sur lequel la base de données et le fichier se trouvent.

  2. Vous pouvez appliquer d'autres instructions INSERT à ce stade, ou vous pouvez appliquer la fonction de mosaïquage ST_Raster aux valeurs de colonne raster existantes avec une instruction UPDATE. Ces instructions se répètent jusqu'à ce que toutes les données soient chargées dans la colonne ST_Raster.
  3. Utilisez une instruction SQL UPDATE pour appliquer une mosaïque à la colonne raster existante.

    Oracle

    UPDATE URBAN_AREA T
    SET RASTER = T.RASTER.MOSAIC('C:\milwaukee2.tif')
    WHERE NAME = 'MILWAUKEE';
    
    COMMIT;

    PostgreSQL

    UPDATE urban_area 
    SET raster = mosaic(RASTER,'C:\milwaukee2.tif') 
    WHERE name = 'milwaukee';

    SQL Server

    UPDATE urban_area 
    SET raster = raster.mosaic('C:\milwaukee2.tif') 
    WHERE name = 'milwaukee';

Création de pyramides

Après avoir chargé les données source, les pyramides sont créées avec la fonction buildPyramid ST_Raster. Vous pouvez créer les pyramides pour toutes les valeurs de raster ou utiliser une clause WHERE pour sélectionner les valeurs de raster pour lesquelles vous souhaitez créer des pyramides.

Toutes les pyramides sont créées avec l'interpolation de pyramide bilinéaire.

Etapes :
  1. Utilisez la fonction buildPyramid.

    Dans ces exemples, une clause WHERE est spécifiée afin d'indiquer pour quelles valeurs de raster créer des pyramides avec une interpolation du voisin le plus proche ou bilinéaire.

    Oracle

    UPDATE URBAN_AREA T
    SET RASTER =
    T.RASTER.BUILDPYRAMID('nearest,level=-1')
    WHERE NAME = 'MILWAUKEE';
    
     COMMIT;
    
    UPDATE URBAN_AREA T
    SET RASTER =
    T.RASTER.BUILDPYRAMID('bilinear,level=-1')
    WHERE NAME = 'TOKYO';
    
    COMMIT;

    PostgreSQL

    UPDATE urban_area
    SET raster = buildpyramid(raster,'nearest,level=-1')
    WHERE name = 'milwaukee';
    
    UPDATE urban_area
    SET raster = buildpyramid(raster,'bilinear,level=-1')
    WHERE name = 'tokyo';

    SQL Server

    UPDATE urban_area
    SET raster = raster.buildPyramid('bilinear,level=-1')
    WHERE name = 'milwaukee';
    
    UPDATE urban_area
    SET raster = raster.buildPyramid('nearest,level=-1')
    WHERE name = 'tokyo';

Génération de statistiques sur le raster

Certaines données raster doivent être étirées par le moteur de rendu pour être visibles. Sinon, elles apparaissent en noir, gris ou blanc. Pour ce type de données, des statistiques doivent être générées. Pour ce faire, utilisez la fonction buildStats ST_Raster dans une instruction UPDATE.

Utilisez une clause WHERE s'il est nécessaire d'indiquer pour quelles lignes de la table générer des statistiques.

Etapes :
  1. Utilisez la fonction buildStats dans une instruction SQL UPDATE.

    Oracle

    UPDATE URBAN_AREA T
    SET RASTER = T.RASTER.BUILDSTATS() 
    WHERE NAME = 'MILWAUKEE';
    
    COMMIT;

    PostgreSQL

    UPDATE urban_area 
    SET raster = buildstats(raster) 
    WHERE name = 'milwaukee';

    SQL Server

    UPDATE urban_area 
    SET raster = raster.buildStats(NULL) 
    WHERE name = 'milwaukee';

Par défaut, les statistiques sont calculées sur le niveau de base de la valeur de raster, ce qui permet d'obtenir les statistiques les plus précises. Toutefois, il est possible de renoncer à la précision dans le but de gagner du temps en calculant des statistiques sur un niveau de pyramide spécifié. Plus le niveau de pyramide utilisé est élevé et plus les statistiques sont calculées rapidement, mais au prix d'une dégradation de la précision des statistiques. Evidemment, le niveau de pyramide spécifié doit avoir été créé avant de calculer des statistiques.

Etapes :
  1. Utilisez la fonction buildStats et fournissez un niveau sur lequel générer des statistiques.

    Dans ces exemples, les statistiques sont calculées sur le sixième niveau de pyramide.

    AstuceAstuce :

    Lorsqu'un niveau n'est pas inclus, le niveau de base (qui peut être spécifié avec la valeur 0) est utilisé par défaut.

    Oracle

    UPDATE URBAN_AREA T 
    SET RASTER = T.RASTER.BUILDSTATS(6) 
    WHERE NAME = 'MILWAUKEE';

    PostgreSQL

    UPDATE urban_area 
    SET raster = buildstats(raster,6) 
    WHERE name = 'milwaukee';

    SQL Server

    UPDATE urban_area 
    SET raster = buildStats.raster(6) 
    WHERE name = 'milwaukee';

Inscription de la table dans la géodatabase

Toute table qui contient une colonne raster unique et référencée spatialement ayant été inscrite ArcSDE peut être convertie en catalogue d'images ArcObjects. La fonction d'initialisation ST_Raster_Util inscrit la colonne raster dans ArcSDE, et une fois exécutée, une table peut être convertie en catalogue d'images en l'inscrivant dans la géodatabase. Comme la colonne raster dans ce workflow d'exemple a été initialisée, elle peut être inscrite dans la géodatabase.

Utilisez ArcGIS Desktop pour inscrire la table dans la géodatabase, ce qui entraîne la création d'un catalogue d'images.

Etapes :
  1. Lancez ArcMap et ouvrez la fenêtre Catalogue ou démarrez ArcCatalog.
  2. Connectez-vous à la géodatabase qui contient la table urban_area.

    Les connexions aux géodatabases s'effectuent sous le nœud Connexions aux bases de données dans l'arborescence du catalogue. Veillez à vous connecter à la géodatabase en tant que propriétaire de la table urban_area.

  3. Cliquez avec le bouton droit sur la table urban_area, puis cliquez sur Inscrire dans la géodatabase.
  4. Cliquez sur Oui dans la boîte de dialogue qui vous avertit qu'une colonne d'identifiant d'objet va être ajoutée à la table.

    La géodatabase nécessite la présence de cette colonne d'identifiant d'objet unique et non nulle.

L'icône de table se transforme en icône de catalogue d'images, ce qui indique que la table a été convertie en catalogue d'images.

Mise à jour des statistiques de la base de données

Pour obtenir des performances optimales, ArcSDE compte sur l'optimiseur de coût SGBD pour sélectionner le plan d'exécution approprié dès que des mises à jour ou des requêtes sont réalisées. L'optimiseur de coût repose à son tour sur les dernières statistiques SGBD pour choisir le meilleur plan d'exécution.

La méthode la plus simple pour mettre à jour des statistiques SGBD sur les données dans une géodatabase consiste à utiliser l'interface utilisateur graphique d'ArcCatalog. Utilisez la commande Analyser d'ArcGIS Desktop pour mettre à jour des statistiques.

Etapes :
  1. Cliquez avec le bouton droit de la souris sur le catalogue d'images urban_areas dans la géodatabase sous le nœud Connexions aux bases de données dans l'arborescence du catalogue.
  2. Cliquez sur Analyser.
  3. Cochez les cases Table raster et Table métier.
  4. Cliquez sur OK.

Rubriques connexes


7/10/2012