Zugreifen auf ST_Raster-Eigenschaften

Komplexität: Fortgeschritten Erforderliche Daten: Eigene Daten verwenden Ziel: Erfahren Sie, welche Funktionen Informationen zu einem ST_Raster-Wert zurückgeben, und wie diese verwendet werden.

Der Typ "ST_Raster" schließt mehrere Funktionen ein, die die Eigenschaften eines ST_Raster-Werts zurückgeben. Beispiele zur Verwendung dieser Funktionen finden Sie in diesem Thema. Stellen Sie sicher, dass Sie in den SQL-Beispielen Werte entsprechend Ihren Daten ersetzen.

Verwenden der Funktion "describe"

Verwenden Sie die Funktion "describe", um eine Liste mit ST_Raster-Werteigenschaften abzurufen. Durch Ausführen der Funktion "describe" ohne Argument werden die allgemeinen Eigenschaften des ST_Raster-Werts zurückgegeben.

Um Eigenschaften zu einer Colormap zurückzugeben, wenn der Raster-Wert über eine verfügt, schließen Sie das Colormap-Argument ein. Wenn der Raster-Wert nicht über eine Colormap verfügt und dieses Argument angegeben wird, wird ein Fehler zurückgegeben. Wenn der ST_Raster-Wert über eine Colormap verfügt, gibt die Funktion "hasColormap" "true" (1) zurück. Abgesehen von den allgemeinen Eigenschaften des ST_Raster-Werts wird durch Angeben des Colormap-Arguments auch der Colormap-Index zurückgegeben, der angewendet wurde.

Speichereigenschaften zu einem ST_Raster-Wert können zurückgegeben werden, indem das Speicherargument in die Funktion "describe" eingeschlossen wird. Dadurch werden auch die nach Pyramidenebene sortierten und nach Raster-Band untersortierten Speichereigenschaften aufgeführt. In den Speichereigenschaften werden die minimalen und maximalen Pixelwerte sowie der Mittelwert und die Standardabweichung der Pixelwerte in jedem Band und auf jeder Pyramidenebene erfasst. Die Speichereigenschaften umfassen die Gesamtzahl der Pixel sowie die komprimierte Größe unterteilt nach Band und Pyramidenebene.

Zurückgeben von allgemeinen Eigenschaften eines ST_Raster-Werts

Wenn Sie die ST_Raster-Funktion "describe" verwenden, ohne ein Argument anzugeben, gibt die Abfrage die allgemeinen Eigenschaften jedes ST_Raster-Werts zurück.

In den folgenden Beispielen wird die Verwendung einer SELECT-Anweisung mit der Funktion "describe" veranschaulicht, um die allgemeinen Eigenschaften der ST_Raster-Werte in einer Tabelle mit dem Namen "urban_areas" zurückzugeben. Nur die Datensätze, die die Kriterien der Where-Klausel erfüllen, werden zurückgegeben.

Schritte:
  1. Verwenden Sie die für Ihr Datenbankmanagementsystem (DBMS) geeignete SELECT-Anweisung.

    Oracle

    SELECT t.raster.describe()
    FROM URBAN_AREA t
    WHERE NAME = 'ALL_CITIES';

    PostgreSQL

    SELECT describe(raster)
    FROM urban_area
    WHERE name = 'all_cities';

    SQL Server

    SELECT raster.describe(NULL)
    FROM urban_area
    WHERE name = 'all_cities';

Zurückgeben von Speichereigenschaften eines ST_Raster-Werts

Die ST_Raster-Funktion "describe" mit dem Speicherargument gibt die allgemeinen Eigenschaften jedes ST_Raster-Werts zusammen mit den Speichereigenschaften zurück.

In den folgenden Beispielen wird gezeigt, wie die Funktion "describe" mit dem Speicherargument verwendet wird, um die Speichereigenschaften von ST_Raster für die Tabelle "urban_areas" zurückzugeben.

Schritte:
  1. Verwenden Sie die für Ihr DBMS geeignete SELECT-Anweisung.

    Oracle

    SELECT t.raster.describe('storage')
    FROM URBAN_AREA t
    WHERE NAME = 'ALL_CITIES';

    PostgreSQL

    SELECT describe(raster,'storage')
    FROM urban_area
    WHERE name = 'all_cities';

    SQL Server

    SELECT raster.describe('storage')
    FROM urban_area
    WHERE name = 'all_cities';

Zurückgeben des Colormap-Indexes eines "ST_Raster"

Die ST_Raster-Funktion "describe" mit dem Colormap-Argument gibt die allgemeinen Eigenschaften und den Colormap-Index jedes ST_Raster-Werts zurück. Wenn der ST_Raster-Wert nicht über eine Colormap verfügt, wird ein Fehler zurückgegeben, wenn das Colormap-Argument enthalten ist.

Schritte:
  1. Verwenden Sie die für Ihr DBMS geeignete SELECT-Anweisung.

    Oracle

    SELECT t.raster.describe('colormap')
    FROM URBAN_AREA t
    WHERE NAME = 'ALL_CITIES';

    PostgreSQL

    SELECT describe(raster,'colormap')
    FROM urban_area
    WHERE name = 'all_cities';

    SQL Server

    SELECT raster.describe('colormap')
    FROM urban_area
    WHERE name = 'all_cities';

Verwenden der Funktion "hasColormap", um das Vorhandensein oder das Fehlen einer Colormap zu bestimmen

Verwenden Sie die Funktion "hasColormap", um zu ermitteln, ob auf einen ST_Raster-Wert ein Colormap-Index angewendet wurde. Die Funktion "hasColormap" gibt ein boolesches "true" zurück, wenn ein Colormap-Index vorhanden ist; andernfalls wird "false" zurückgegeben.

Die Funktion "hasColormap" in der SELECT-Bedingung gibt 1 zurück, wenn der ST_Raster-Wert über eine Colormap verfügt; falls nicht, wird 0 zurückgegeben.

Schritte:
  1. Oracle

    SELECT t.raster.hasColormap(), NAME 
    FROM URBAN_AREA t;

    PostgreSQL

    SELECT hasColormap(raster), name 
    FROM urban_area;

    SQL Server

    SELECT raster.hasColormap(), name 
    FROM urban_area;

Einschränken der Rückgabe auf Datensätze, die eine bzw. keine Colormap aufweisen

Die Funktion "hasColormap" kann der Where-Klausel hinzugefügt werden, damit Datensätze zurückgegeben werden, die eine bzw. keine Colormap aufweisen.

Schritte:
  1. Verwenden Sie die für Ihr DBMS geeignete SELECT-Anweisung.

    Oracle

    SELECT t.raster.describe('colormap')
    FROM URBAN_AREA t
    WHERE t.raster.hasColormap(raster) = 1;

    PostgreSQL

    SELECT describe(raster,'colormap')
    FROM urban_area
    WHERE hasColormap(raster) = 1;

    SQL Server

    SELECT raster.describe('colormap')
    FROM urban_area
    WHERE raster.hasColormap() = 1;

Verwenden der Funktion "hasStats", um zu ermitteln, ob die ST_Raster-Statistik berechnet wurde

Die Funktion "hasStats" gibt ein boolesches "true" zurück, wenn die Statistik eines ST_Raster-Werts berechnet wurde.

TippTipp:

Verwenden Sie zum Berechnen einer Statistik die ST_Raster-Funktion "buildStats". Verwenden Sie die Funktion "deleteStats", um eine Raster-Statistik aus einem ST_Raster zu entfernen.

Verwenden Sie die Funktion "hasStats" in der SELECT-Bedingung, um zu ermitteln, ob die Statistik für den ST_Raster-Wert berechnet wurde. Diese Funktion gibt 1 für ST_Raster-Werte zurück, die über eine Statistik verfügen, und 0 für Werte, die nicht über eine Statistik verfügen.

Schritte:
  1. Oracle

    SELECT t.raster.hasStats(),NAME
    FROM URBAN_AREA t;

    PostgreSQL

    SELECT hasStats(raster),name
    FROM urban_area;

    SQL Server

    SELECT raster.hasStats(),name
    FROM urban_area;

Die Funktion "hasStats" kann auf die Where-Klausel angewendet werden, um anzugeben, dass die Abfrage Datensätze zurückgibt, die eine bzw. keine Statistik aufweisen. In diesen Beispielen filtert die Where-Klausel nur die Datensätze, die im ST_Raster-Wert eine Statistik aufweisen. Dann wird die Statistik aus den Raster-Werten entfernt.

Schritte:
  1. Oracle

    UPDATE URBAN_AREA t
    SET raster = t.raster.deleteStats()
    WHERE t.raster.hasStats() = 1;

    PostgreSQL

    UPDATE urban_area
    SET raster = deleteStats(raster)
    WHERE hasStats(raster) = 1;

    SQL Server

    UPDATE urban_area
    SET raster = raster.deleteStats()
    WHERE raster.hasStats() = 1;

Zurückgeben des Komprimierungstyps eines "ST_Raster"

"getCompressionType" gibt die Komprimierungseigenschaft eines Rasters zurück. Die vier möglichen Komprimierungstypen lauten wie folgt:

Am häufigsten wird die LZ77-Komprimierung verwendet. Für Dreiband-Daten mit 8 Bit oder Graustufendaten mit hoher Variabilität wird jedoch die JPEG-Komprimierung verwendet. Normalerweise ist JPEG 2000-Komprimierung für 16-Bit-Daten reserviert.

In diesen Beispielen wird das Speicherargument mit der Funktion "describe" angegeben, und die Funktion "getCompressionType" wird in der Where-Klausel verwendet, um nur diejenigen ST_Raster-Werte zurückzugeben, die über JPEG-Komprimierung verfügen.

Schritte:
  1. Verwenden Sie die für Ihr DBMS geeignete SELECT-Anweisung.

    Oracle

    SELECT t.raster.describe('storage')
    FROM URBAN_AREA t
    WHERE t.raster.getCompressionType() = 'JPEG';

    PostgreSQL

    SELECT describe(raster,'storage')
    FROM urban_area
    WHERE getCompressionType(raster) = 'JPEG';

    SQL Server

    SELECT raster.describe('storage')
    FROM urban_area
    WHERE raster.getCompressionType() = 'JPEG';

Bestimmen der Pyramideninterpolation eines ST_Raster-Werts

Der Typ der Pyramideninterpolation ist der Algorithmus während der Erstellung der Pyramide. Die Funktion "getInterpolationType" des Typs "ST_Raster" gibt den Interpolationstyp zurück, der zur Erstellung der Pyramide verwendet wurde. Wenn die Pyramide nicht vorhanden ist, gibt die Funktion einen Nullwert zurück. Die drei möglichen Interpolationstypen sind NEAREST, BILINEAR und BICUBIC.

Anstelle der bilinearen Interpolation wird in der Regel die Pyramideninterpolation "Nächster Nachbar" genutzt. Die bilineare Interpolation ist zu bevorzugen, da sich daraus in der Regel ein glatteres Ergebnis ergibt. Bei der bilinearen Interpolation werden die Pixelwerte der Vorgängerebene jedoch nicht beibehalten. Außerdem kann sie nicht für Daten verwendet werden, die über eine Colormap verfügen, und sie sollte nicht für Pixeldaten mit weniger als 8 Bit verwendet werden.

Diese Abfragen geben den Typ der Pyramideninterpolation aller ST_Raster-Werte zurück, die über eine Pyramide verfügen.

Schritte:
  1. Oracle

    SELECT t.raster.getInterpolationType()
    FROM URBAN_AREA t
    WHERE t.raster.getPyramidLevel() > 0;

    PostgreSQL

    SELECT getInterpolationType(raster)
    FROM urban_area
    WHERE getPyramidLevel(raster) > 0;

    SQL Server

    SELECT raster.getInterpolationType()
    FROM urban_area
    WHERE raster.getPyramidLevel() > 0;

Bestimmen des Band-Interleave-Typs eines ST_Raster-Werts

Der Typ "ST_Raster" unterstützt die Interleave-Typen "Band Interleaved by Pixel (BIP)" und "Band Sequential (BSQ)".

HinweisHinweis:

ArcObjects und Anwendungen auf Grundlage von ArcObjects, z. B. ArcGIS Desktop, lesen nur Daten, die als BSQ gespeichert wurden.

BIP gilt nur für Dreiband-Daten mit 8-Bit, die nacheinander als Einzelband gespeichert sind (r0, g0, b0, r1, g1, b1 … rn, gn, bn), wohingegen BSQ die Bändern in separater sequenzieller Reihenfolge (r0...rn),(g0...gn),(b0...bn) speichert.

Die folgenden Abfragen geben den Interleave-Typ für jeden ST_Raster-Wert in der ST_Raster-Spalte einer Tabelle zurück.

Schritte:
  1. Oracle

    SELECT t.raster.getInterleaveType()
    FROM URBAN_AREA t;

    PostgreSQL

    SELECT getInterleaveType(raster)
    FROM urban_area;

    SQL Server

    SELECT raster.getInterleaveType()
    FROM urban_area;

Bestimmen des Pixeltyps eines "ST_Raster"

Die Funktion "getPixelType" gibt den Pixeltyp eines ST_Raster-Werts zurück. Die folgenden Pixeltypen werden vom Typ "ST_Raster" unterstützt:

Mit diesen UPDATE-Anweisungen werden Pyramiden für alle ST_Raster-Werte in der ST_Raster-Spalte erstellt, jedoch nur, wenn der Pixeltyp des ST_Raster-Werts eine 8-Bit-Ganzzahl ohne Vorzeichen ist.

Schritte:
  1. Oracle

    UPDATE URBAN_AREA t
    SET raster = t.raster.buildPyramid('bilinear')
    WHERE t.raster.getPixelType() = 'UINT8';

    PostgreSQL

    UPDATE urban_area
    SET raster = buildPyramid(raster,'bilinear')
    WHERE getPixelType(raster) = 'UINT8';

    SQL Server

    UPDATE urban_area
    SET raster = raster.buildPyramid('bilinear')
    WHERE raster.getPixelType() = 'UINT8';

Verwandte Themen


7/10/2012