Räumliche Abfragen für Systemtabellen

Die Tabelle "GDB_Items" enthält eine Geometriespalte, die die Ausdehnungen von in der Geodatabase gespeicherten Feature-Classes verwaltet. Da der Datentyp der Spalte ein räumlicher Datentyp ist, der mit SQL abgefragt werden kann, können Sie mithilfe von SQL räumliche Abfragen für die Tabelle ausführen und ermitteln, welche Feature-Classes einen Suchbereich schneiden.

Die für die Ausdehnung jeder Feature-Class gespeicherte Geometrie hat den Raumbezug WGS 84, unabhängig davon, welchen Raumbezug die Feature-Class hat. Daher sollte die Abfragegeometrie ebenfalls mit einem WGS-84-Raumbezug erstellt werden.

Im folgenden Beispiel wird gezeigt, wie die Namen von Feature-Classes, die in einem Suchbereich liegen, gesucht werden. In diesem Beispiel wird ein Polygon und der Operator "Überschneiden (Intersect)" verwendet, Sie können jedoch auch andere Geometrietypen und relationale Operatoren verwenden.

--Queries a dbo-schema geodatabase in SQL Server

-- Defines the extents of the search area.
-- VARCHARs are used rather than FLOATs to reduce casting.
DECLARE @MAX_X VARCHAR(3);
DECLARE @MIN_X VARCHAR(3);
DECLARE @MAX_Y VARCHAR(2);
DECLARE @MIN_Y VARCHAR(2);

SET @MAX_X = '-85';
SET @MIN_X = '-86';
SET @MAX_Y = '33';
SET @MIN_Y = '32';

-- Create a polygon for the search area.
-- 4326 is the spatial reference ID for WGS84 in the SQL Server system table.
DECLARE @WKT_CONST nvarchar(max);
DECLARE @SEARCH_AREA GEOMETRY;

SET @WKT_CONST = 'POLYGON ((' +
 @MIN_X + ' ' + @MIN_Y + ', ' +
 @MAX_X + ' ' + @MIN_Y + ', ' +
 @MAX_X + ' ' + @MAX_Y + ', ' + 
 @MIN_X + ' ' + @MAX_Y + ', ' +
 @MIN_X + ' ' + @MIN_Y + '))';
SET @SEARCH_AREA =GEOMETRY::STPolyFromText(@WKT_CONST, 4326);

 -- Find the classes that intersect the extent.
SELECT Name
FROM dbo.GDB_ITEMS
WHERE Shape.STIntersects(@SEARCH_area) = 1


3/6/2012