Flujo de trabajo: crear un catálogo de ráster con SQL

Complejidad: Avanzado Requisitos de datos: Usar datos propios Objetivo: Aprenda cómo crear una tabla de ráster, inicialice la columna ST_Raster en la tabla, agregue registros a la tabla, construya pirámides y estadísticas en ST_Raster, y después registre la tabla con la geodatabase para crear un catálogo de ráster.

El catálogo de ráster es un componente de ArcObjects que almacena datasets ráster referenciados espacialmente. Es posible crear y completar un catálogo de ráster desde SQL por medio del tipo ST_Raster si sigue el flujo de trabajo que se proporciona en este tema.

Cada una de las secciones siguientes contiene ejemplos para completar la tarea de crear un catálogo de ráster en cada sistema de administración de bases de datos. Puede modificar los ejemplos para que coincidan con sus datos.

Crear una tabla con una columna ST_Raster

Pasos:
  1. Abra un editor SQL, tal como SQL*Plus para Oracle, pgsql o pgAdminIII para PostgreSQL, o la ventana de Query Editor en Microsoft Management Studio para SQL Server.
  2. Utilice la declaración CREATE TABLE para crear una tabla con una columna ST_Raster y una columna de cadena de caracteres.

    En estos ejemplos se crea una tabla urban_area. La tabla contiene dos columnas: name y 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);

Inicializar la columna ST_Raster para almacenar valores de ráster

Utilice la función de inicialización ST_Raster_Util para inicializar una columna ST_Raster. Esta función agrega una referencia para la columna de ráster a las tablas de metadatos de ráster de ArcSDE y crea la tabla de bloques de ráster y la tabla auxiliar de ráster, así como también los desencadenadores de inserción, actualización y eliminación de la columna de ráster. Una vez que esta función se ejecuta, la columna de ráster se registra con ArcSDE y está disponible para su funcionalidad. Agrega un registro a las tablas del sistema table_registry, column_registry y raster_columns. Sin embargo, no se puede acceder como objeto de catálogo de ráster de ArcGIS hasta que se registra con la geodatabase.

Pasos:
  1. Utilice la utilidad de inicialización ST_Raster para inicializar la columna ST_Raster en la tabla 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'

Insertar un valor ráster en la columna ST_Raster

Una declaración INSERT agrega una fila a la tabla.

En estos ejemplos, la columna de nombre se completa con la cadena de caracteres 'MILWAUKEE', y el constructor ST_Raster convierte un archivo GeoTIFF al tipo ST_Raster.

Pasos:
  1. Utilice la declaración SQL INSERT para insertar una imagen en una columna ST_Raster. Asegúrese de usar su propio archivo TIFF en lugar 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'));
    PrecauciónPrecaución:

    Asegúrese de que la ruta especificada para el archivo TIFF sea válida para el servidor donde están ubicados la base de datos y el archivo.

  2. Puede aplicar más declaraciones INSERT en este punto, o puede aplicar la función de mosaico ST_Raster a los valores de columnas de ráster existentes con la declaración UPDATE. Estas declaraciones se repiten hasta que todos los datos están cargados en la columna ST_Raster.
  3. Utilice una declaración SQL UPDATE para crear un mosaico en la columna de ráster existente.

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

Construir pirámides

Después de cargar los datos de origen, se construyen las pirámides con la función ST_Raster buildPyramid. Construya las pirámides para todos los valores de ráster o utilice la cláusula WHERE para calificar los valores ráster para los que quiere construir las pirámides.

Todas las pirámides se construyen con la interpolación bilineal de pirámide.

Pasos:
  1. Utilice la función buildPyramid.

    En estos ejemplos, se especifica que una cláusula WHERE califica qué valores de ráster deben tener pirámides construidas cerca de la interpolación bilineal o vecinal más cercana.

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

Crear estadísticas en el ráster

Algunos datos ráster necesitan ser extendidos por el renderizador de visualización para volverse discernibles. De lo contrario, aparecen de color negro, gris o blanco. Para este tipo de datos se debe generar estadísticas de ráster. Eso se hace con la función ST_Raster buildStats en una declaración UPDATE.

Utilice una cláusula WHERE si es necesario calificar qué filas de la tabla necesitan estadísticas.

Pasos:
  1. Utilice la función buildStats en una declaración 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';

Por defecto, las estadísticas se calculan en el nivel de base del valor de ráster, lo que proporciona el resultado estadístico más preciso. Sin embargo, es posible renunciar a la precisión en favor del ahorro de tiempo si calcula las estadísticas en un nivel de pirámide especificado. Mientras más alto sea el nivel de pirámide usado, más rápido se calcularán las estadísticas, pero a costa de reducir la exactitud estadística. Por supuesto, se debe construir el nivel de pirámide especificado antes de calcular las estadísticas en él.

Pasos:
  1. Utilice la función buildStats y proporcione un nivel en el cual pueda generar las estadísticas.

    En estos ejemplos, las estadísticas se calculan en el sexto nivel de la pirámide.

    SugerenciaSugerencia:

    Cuando no se incluye un nivel, el valor predeterminado es el del nivel base, lo que podría ser especificado como valor 0.

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

Registrar la tabla con la geodatabase

Cualquier tabla que contenga una columna única de ráster espacialmente referenciada que haya sido registrada con ArcSDE puede convertirse en un catálogo de ráster de ArcObjects. La función de inicialización ST_Raster_Util registra la columna de ráster con ArcSDE, y una vez que se ejecuta se puede convertir una tabla a catálogo de ráster si la registra con la geodatabase. Dado que la columna de ráster se inicializó en este ejemplo de flujo de trabajo, se puede registrar con la geodatabase.

Utilice ArcGIS Desktop para registrar la tabla con la geodatabase, y así creará un catálogo de ráster.

Pasos:
  1. Inicie ArcMap y abra la ventana Catálogo o inicie ArcCatalog.
  2. Conéctese a la geodatabase que contiene la tabla urban_area.

    Las conexiones de geodatabase se hacen en el nodo Conexiones de base de datos en el árbol de catálogo. Asegúrese de iniciar sesión en la geodatabase como propietario de la tabla urban_area.

  3. Haga clic con el botón derecho del ratón y haga clic en Registrar con geodatabase.
  4. Haga clic en Si en la advertencia del cuadro de diálogo que anuncia que se agregará una columna de Id. de objeto a la tabla.

    La geodatabase requiere la presencia de esta columna con Id. de objeto única, no nula.

El icono de la tabla cambia al icono del catálogo de ráster, lo cual indica que la tabla se convirtió a un catálogo de ráster.

Actualizar estadísticas de base de datos

Para obtener un rendimiento óptimo, ArcSDE trabaja con el optimizador basado en el coste de DBMS para seleccionar el plan de ejecución adecuado cuando se realizan actualizaciones o consultas. El optimizador basado en el coste, a la vez, depende de estadísticas de DBMS actualizadas para seleccionar el mejor plan de ejecución.

La manera más sencilla de actualizar las estadísticas de DBMS de los datos en una geodatabase es por medio de la interfaz de usuario gráfica de ArcCatalog. Utilice el comando Analizar en ArcGIS Desktop para actualizar las estadísticas.

Pasos:
  1. Haga clic con el botón derecho del ratón en el catálogo de ráster urban_areas en la geodatabase del nodo Conexiones de base de datos en el árbol de catálogo.
  2. Haga clic en Analizar.
  3. Marque las casillas de verificación Tabla del ráster y Tabla de negocios.
  4. Haga clic en Aceptar.

Temas relacionados


3/6/2012