Zugreifen auf ST_Raster-Eigenschaften
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.
-
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.
-
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.
-
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.
-
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.
-
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.
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.
-
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.
-
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:
- NONE: Zum Speichern der Daten wurde keine Komprimierung verwendet.
- LZ77: LZ77 verwendet eine Längenkomprimierung, die verlustfrei ist und am besten für Daten mit niedriger Variabilität geeignet ist oder wenn keine anderen Komprimierungsalgorithmen verwendet werden können.
- JPEG: JPEG steht für Joint Photographic Experts Group, den Ausschuss, der den Komprimierungsstandard entwickelt hat. JPEG ist ein verlustbehafteter Komprimierungstyp. Die JPEG-Komprimierung kann nur auf 8-Bit-Daten angewendet werden, die keinen Colormap-Index haben.
- JP2: Hierbei handelt es sich um den auf einem Wavelet basierenden Komprimierungstyp JPEG 2000. Dieser Komprimierungstyp kann auf 8-Bit- oder 16-Bit-Daten angewendet werden.
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.
-
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.
-
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)".
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.
-
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:
- 1bit: 1-Bit-Daten
- 4bit: 4-Bit-Daten
- uint8: 8-Bit-Ganzzahl (ohne Vorzeichen)
- int8: 8-Bit-Ganzzahl (mit Vorzeichen)
- uint16: 16-Bit-Ganzzahl (ohne Vorzeichen)
- int16: 16-Bit-Ganzzahl (mit Vorzeichen)
- uint32: 32-Bit-Ganzzahl (ohne Vorzeichen)
- int32: 32-Bit-Ganzzahl (mit Vorzeichen)
- float: Gleitkommazahl mit einfacher Genauigkeit
- double: Gleitkommazahl mit doppelter Genauigkeit
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.
-
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';