Workflow: Erstellen eines Raster-Katalogs mit SQL

Komplexität: Experten Datenanforderung: 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" berechnen 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 bzw. 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 einer SQL-INSERT-Anweisung ein Bild in eine ST_Raster-Spalte ein. Stellen Sie sicher, anstelle von "milwaukee.tif" eine eigene TIFF-Datei zu 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'));
    
    AchtungAchtung:

    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 einer SQL-UPDATE-Anweisung in einer 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';
    

Berechnen von Pyramiden

Nach dem Laden der Quelldaten werden die Pyramiden mit der ST_Raster-Funktion "buildPyramid" erstellt. Berechnen 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 berechnen möchten.

Alle Pyramiden werden mit der bilinearen Pyramideninterpolation berechnet.

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 buildStats-Funktion in einer SQL-UPDATE-Anweisung.

    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, 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 for 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 Warnung im Dialogfeld auf Ja, in der Sie darüber informiert werden, dass der Tabelle eine ObjectID-Spalte hinzugefügt wird.

    Für die Geodatabase muss diese eindeutige ObjectID-Spalte ohne Nullwerte 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 Performance 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.

ArcGIS bietet die einfachste Möglichkeit, die DBMS-Statistik zu Daten in einer Geodatabase zu aktualisieren. Verwenden Sie zum Aktualisieren der Statistiken das Geoverarbeitungswerkzeug Datasets analysieren, das Sie über den Befehl "Analysieren" in ArcGIS for Desktop öffnen können.

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

    Stellen Sie sicher, dass Sie eine Verbindung als Eigentümer des Raster-Katalogs herstellen.

  3. Klicken Sie mit der rechten Maustaste auf den Raster-Katalog "urban_area".
  4. Zeigen Sie auf Verwalten, und klicken Sie auf Analysieren.
  5. Stellen Sie sicher, dass der Raster-Katalog "urban_area" in der Liste Zu analysierende Datasets aktiviert ist, und klicken Sie dann außerhalb der Liste.
  6. Aktivieren Sie Basistabellen analysieren, um die Statistik zur Raster-Basistabelle zu aktualisieren.
  7. Klicken Sie auf OK.

Verwandte Themen

9/12/2013