Workflow: Erstellen eines Raster-Katalogs mit SQL

Komplexität: Anspruchsvoll Erforderliche Daten: Eigene Daten verwenden Ziel: Sie erfahren, wie Sie eine Raster-Tabelle erstellen, die ST_Raster-Spalte in der Tabelle initialisieren, der Tabelle Datensätze hinzufügen, Pyramiden und Statistiken für "ST_Raster" erstellen und die Tabelle dann bei der Geodatabase registrieren, um einen Raster-Katalog zu erstellen.

Der Raster-Katalog ist eine ArcObjects-Komponente, die räumlich referenzierte Raster-Datasets speichert. Es ist möglich, einen Raster-Katalog in SQL mit dem ST_Raster-Typ zu erstellen und zu füllen, indem Sie die Schritte in diesem Thema durchführen.

Jeder der folgenden Abschnitte enthält Beispiele zur Erstellung eines Raster-Katalogs in jedem Datenbankmanagementsystem. Sie können die Beispiele ändern, um sie an Ihre Daten anzupassen.

Erstellen einer Tabelle mit einer ST_Raster-Spalte

Schritte:
  1. Öffnen Sie einen SQL-Editor, wie SQL*Plus für Oracle, pgsql oder pgAdminIII für PostgreSQL oder das Query Editor-Fenster in Microsoft Management Studio für SQL Server.
  2. Verwenden Sie eine CREATE TABLE-Anweisung, um eine Tabelle mit einer ST_Raster-Spalte und einer Zeichenfolgenspalte zu erstellen.

    In diesen Beispielen wird eine Tabelle, urban_area, erstellt. Die Tabelle enthält zwei Spalten: "name" und "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);

Initialisieren der ST_Raster-Spalte, um Raster-Werte zu speichern

Verwenden Sie die Initialisierungsfunktion "ST_Raster_Util", um die ST_Raster-Spalte zu initialisieren. Diese Funktion fügt den ArcSDE-Raster-Metadatentabellen eine Referenz für die Raster-Spalte hinzu und erstellt die Raster-Blocktabelle und die Raster-Zusatztabelle sowie die Trigger INSERT, UPDATE und DELETE der Raster-Spalte. Sobald diese Funktion ausgeführt wird, wird die Raster-Spalte bei ArcSDE registriert und ist für die Funktionalität verfügbar. Den Systemtabellen "table_registry", "column_registry" und "raster_columns" wird ein Datensatz hinzugefügt. Dieser wird jedoch erst als ArcGIS-Raster-Katalogobjekt betrachtet, wenn er bei der Geodatabase registriert ist.

Schritte:
  1. Verwenden Sie das ST_Raster-Initialisierungshilfsprogramm, um die ST_Raster-Spalte in der Tabelle "urban_area" zu initialisieren.

    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'

Einfügen eines Raster-Wertes in die ST_Raster-Spalte

Mit einer INSERT-Anweisung wird der Tabelle eine Zeile hinzugefügt.

In diesen Beispielen wird die Namensspalte mit der Zeichenfolge "MILWAUKEE" befüllt. Der ST_Raster-Konstruktor konvertiert eine GeoTIFF-Datei in den ST_Raster-Typ.

Schritte:
  1. Fügen Sie mithilfe der SQL-Anweisung INSERT ein Bild in eine ST_Raster-Spalte ein. Stellen Sie sicher, dass Sie anstelle von milwakee.tif eine eigene TIFF-Datei verwenden.

    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'));
    VorsichtVorsicht:

    Stellen Sie sicher, dass der angegebene Pfad für die TIFF-Datei für den Server gültig ist, auf dem sich die Datenbank und die Datei befinden.

  2. Es können weitere INSERT-Anweisungen angewendet werden, oder Sie können die ST_Raster-Funktion "Mosaik" mit einer UPDATE-Anweisung auf die vorhandenen Raster-Spaltenwerte anwenden. Diese Anweisungen werden wiederholt, bis alle Daten in die ST_Raster-Spalte geladen sind.
  3. Mosaikieren Sie mithilfe der SQL-Anweisung UPDATE zur vorhandenen Raster-Spalte.

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

Erstellen von Pyramiden

Nach dem Laden der Quelldaten werden die Pyramiden mit der ST_Raster-Funktion "buildPyramid" erstellt. Erstellen Sie die Pyramiden entweder für alle Raster-Werte, oder verwenden Sie eine Where-Klausel, um die Raster-Werte zu qualifizieren, für die Sie Pyramiden erstellen möchten.

Alle Pyramiden werden mit der bilinearen Pyramideninterpolation erstellt.

Schritte:
  1. Verwenden der Funktion "buildPyramid"

    In diesen Beispielen wird eine Where-Klausel angegeben, um zu qualifizieren, welche Raster-Werte Pyramiden aufweisen müssen, die mit der Interpolationsmethode "Nächster Nachbar" oder "Bilinear" erstellt wurden.

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

Berechnen von Raster-Statistiken

Einige Raster-Daten müssen vom Anzeige-Renderer gestreckt werden, um sie wahrnehmbar zu machen. Andernfalls werden Sie schwarz, grau oder weiß angezeigt. Dieser Datentyp muss Raster-Statistiken aufweisen. Diese werden mit der ST_Raster-Funktion "buildStats" in einer UPDATE-Anweisung erstellt.

Verwenden Sie ggf. eine Where-Klausel, um zu qualifizieren, welche Tabellenzeilen Statistiken erfordern.

Schritte:
  1. Verwenden Sie die Funktion "buildStats" in der SQL-Anweisung 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';

Standardmäßig werden Statistiken auf der Grundebene des Raster-Wertes berechnet, der das genaueste statistische Ergebnis bereitstellt. Es ist jedoch auch möglich, Zeit zu sparen und ungenauere Ergebnisse bereitzustellen, indem Sie Statistiken für eine angegebene Pyramidenebene berechnen. Je höher die verwendete Pyramidenebene, desto schneller werden die Statistiken berechnet. Dies wirkt sich jedoch auf die statistische Genauigkeit aus. Natürlich muss die angegebene Pyramidenebene vor der Berechnung der Statistiken erstellt werden.

Schritte:
  1. Verwenden Sie die Funktion "buildStats", und stellen Sie eine Ebene bereit, für die Statistiken erstellt werden sollen.

    In diesen Beispielen werden die Statistiken auf der sechsten Pyramidenebene berechnet.

    TippTipp:

    Wenn eine Ebene nicht eingeschlossen ist, wird standardmäßig die Grundebene verwendet, die als Wert 0 angegeben werden kann.

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

Registrieren der Tabelle bei der Geodatabase

Jede Tabelle, die eine einzelne, räumlich referenzierte Raster-Spalte enthält, die bei ArcSDE registriert wurde, kann in einen ArcObjects-Raster-Katalog konvertiert werden. Die Initialisierungsfunktion "ST_Raster_Util" registriert die Raster-Spalte bei ArcSDE. Sobald sie ausgeführt wurde, kann eine Tabelle in einen Raster-Katalog konvertiert werden, indem sie bei der Geodatabase registriert wird. Da die Raster-Spalte in diesem Workflow-Beispiel initialisiert wurde, kann sie bei der Geodatabase registriert werden.

Registrieren Sie die Tabelle mithilfe von ArcGIS Desktop bei der Geodatabase, und erstellen Sie so einen Raster-Katalog.

Schritte:
  1. Starten Sie ArcMap, und öffnen Sie das Fenster Katalog, oder starten Sie ArcCatalog.
  2. Stellen Sie eine Verbindung mit der Geodatabase her, die die Tabelle "urban_area" enthält.

    Geodatabase-Verbindungen werden im Kataloginhaltsverzeichnis unter dem Knoten Datenbankverbindungen erstellt. Stellen Sie sicher, dass Sie sich bei der Geodatabase als Eigentümer der Tabelle "urban_area" anmelden.

  3. Klicken Sie mit der rechten Maustaste auf die Tabelle "urban_area", und klicken Sie auf In Geodatabase registrieren.
  4. Klicken Sie in der angezeigten Dialogfeldwarnung auf Ja. Sie enthält den Hinweis, dass der Tabelle eine Objekt-ID-Spalte hinzugefügt wird.

    Für die Geodatabase muss diese eindeutige Nicht NULL-Objekt-ID-Spalte vorhanden sein.

Das Tabellensymbol ändert sich in ein Raster-Katalogsymbol. Das heißt, die Tabelle wurde in einen Raster-Katalog konvertiert.

Aktualisieren von Datenbankstatistiken

Um eine optimale Leistung zu erzielen, nutzt ArcSDE bei Aktualisierungen oder Abfragen den kostenbasierten DBMS-Optimizer, um den geeigneten Ausführungsplan zu wählen. Der kostenbasierte Optimizer wiederum nutzt aktuelle DBMS-Statistiken, um den besten Ausführungsplan auszuwählen.

DBMS-Statistiken zu Daten in einer Geodatabase lassen sich am einfachsten über die grafische ArcCatalog-Benutzeroberfläche aktualisieren. Sie können Statistiken mit den Befehl "Analysieren" in ArcGIS Desktop aktualisieren.

Schritte:
  1. Klicken Sie in der Geodatabase unter dem Knoten Datenbankverbindungen im Kataloginhaltsverzeichnis mit der rechten Maustaste auf den Raster-Katalog "urban_areas".
  2. Klicken Sie auf Analysieren.
  3. Aktivieren Sie die Kontrollkästchen Raster-Tabelle und Business-Tabelle.
  4. Klicken Sie auf OK.

Verwandte Themen


3/6/2012