Flujo de trabajo: crear un catálogo de ráster con SQL
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
- 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.
-
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.
-
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.
-
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ó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.
-
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.
-
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.
-
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.
-
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.
Sugerencia: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.
- Inicie ArcMap y abra la ventana Catálogo o inicie ArcCatalog.
-
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.
- Haga clic con el botón derecho del ratón y haga clic en Registrar con geodatabase.
-
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.
- 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.
- Haga clic en Analizar.
- Marque las casillas de verificación Tabla del ráster y Tabla de negocios.
- Haga clic en Aceptar.