Name

AddRasterConstraints — Aggiunge vincoli raster a una tabella raster caricata per una colonna specifica che vincola il rif spaziale, la scala, la dimensione del blocco, l'allineamento, le bande, il tipo di banda e un flag per indicare se la colonna raster è regolarmente bloccata. La tabella deve essere caricata con i dati per poter dedurre i vincoli. Restituisce true se l'impostazione dei vincoli è stata eseguita, altrimenti emette un avviso.

Synopsis

boolean AddRasterConstraints(name rasttable, name rastcolumn, boolean srid=true, boolean scale_x=true, boolean scale_y=true, boolean blocksize_x=true, boolean blocksize_y=true, boolean same_alignment=true, boolean regular_blocking=false, boolean num_bands=true , boolean pixel_types=true , boolean nodata_values=true , boolean out_db=true , boolean extent=true );

boolean AddRasterConstraints(name rasttable, name rastcolumn, text[] VARIADIC constraints);

boolean AddRasterConstraints(name rastschema, name rasttable, name rastcolumn, text[] VARIADIC constraints);

boolean AddRasterConstraints(name rastschema, name rasttable, name rastcolumn, boolean srid=true, boolean scale_x=true, boolean scale_y=true, boolean blocksize_x=true, boolean blocksize_y=true, boolean same_alignment=true, boolean regular_blocking=false, boolean num_bands=true, boolean pixel_types=true, boolean nodata_values=true , boolean out_db=true , boolean extent=true );

Descrizione

Genera vincoli su una colonna raster che vengono utilizzati per visualizzare le informazioni nel catalogo raster raster_columns. rastschema è il nome dello schema della tabella in cui risiede la tabella. srid deve essere un valore intero di riferimento a una voce della tabella SPATIAL_REF_SYS.

raster2pgsql loader utilizza questa funzione per registrare le tabelle raster

Nomi di vincoli validi da inserire: fare riferimento a Section 10.2.1, “Catalogo delle colonne raster” per maggiori dettagli.

  • blocksize imposta sia la dimensione del blocco X che Y

  • blocksize_x imposta il riquadro X (larghezza in pixel di ogni riquadro)

  • blocksize_y imposta il riquadro Y (altezza in pixel di ogni riquadro)

  • extent calcola l'estensione dell'intera tabella e applica il vincolo che tutti i raster devono rientrare in tale estensione

  • num_bands numero di bande

  • pixel_types legge l'array di tipi di pixel per ogni banda, assicurando che tutte le bande n abbiano lo stesso tipo di pixel

  • regular_blocking imposta i vincoli di unicità spaziale (non ci sono due raster uguali dal punto di vista spaziale) e di copertura (il raster è allineato a una copertura)

  • same_alignment assicura che tutte le tessere abbiano lo stesso allineamento, il che significa che ogni due tessere confrontate restituiranno true. Fare riferimento a ST_SameAlignment.

  • srid assicura che tutti abbiano lo stesso srid

  • Altro -- tutti quelli elencati come input delle funzioni precedenti

[Note]

Questa funzione infonde i vincoli dai dati già presenti nella tabella. Per questo motivo, affinché funzioni, è necessario creare prima la colonna raster e poi caricarla con i dati.

[Note]

Se è necessario caricare altri dati nelle tabelle dopo aver applicato i vincoli, è possibile eseguire DropRasterConstraints se l'estensione dei dati è cambiata.

Disponibilità: 2.0.0

Esempi: Applicare tutti i possibili vincoli alle colonne in base ai dati

CREATE TABLE myrasters(rid SERIAL primary key, rast raster);
INSERT INTO myrasters(rast)
SELECT ST_AddBand(ST_MakeEmptyRaster(1000, 1000, 0.3, -0.3, 2, 2, 0, 0,4326), 1, '8BSI'::text, -129, NULL);

SELECT AddRasterConstraints('myrasters'::name, 'rast'::name);


-- verify if registered correctly in the raster_columns view --
SELECT srid, scale_x, scale_y, blocksize_x, blocksize_y, num_bands, pixel_types, nodata_values
    FROM raster_columns
    WHERE r_table_name = 'myrasters';

 srid | scale_x | scale_y | blocksize_x | blocksize_y | num_bands | pixel_types| nodata_values
------+---------+---------+-------------+-------------+-----------+-------------+---------------
 4326 |       2 |       2 |        1000 |        1000 |         1 | {8BSI}      | {0}
        

Esempi: Applicare un singolo vincolo

CREATE TABLE public.myrasters2(rid SERIAL primary key, rast raster);
INSERT INTO myrasters2(rast)
SELECT ST_AddBand(ST_MakeEmptyRaster(1000, 1000, 0.3, -0.3, 2, 2, 0, 0,4326), 1, '8BSI'::text, -129, NULL);

SELECT AddRasterConstraints('public'::name, 'myrasters2'::name, 'rast'::name,'regular_blocking', 'blocksize');
-- get notice--
NOTICE:  Adding regular blocking constraint
NOTICE:  Adding blocksize-X constraint
NOTICE:  Adding blocksize-Y constraint