Requêtes spatiales de table système
La table GDB_Items contient une colonne de géométrie qui conserve les étendues des classes d'entités stockées dans la géodatabase. Etant donné que le type de données de la colonne est un type spatial qui peut être interrogé avec SQL, vous pouvez utiliser SQL pour effectuer des requêtes spatiales dans la table et identifier les classes d'entités qui intersectent une zone de recherche.
Les géométries stockées pour l'étendue de chaque classe d'entités sont associées à la référence spatiale WGS 84, quelle que soit la référence spatiale de la classe d'entités. Par conséquent, toute géométrie de requête doit également comporter la référence spatiale WGS 84.
L'exemple suivant indique comment trouver le nom des classes d'entités comprises dans une zone de recherche. Notez que cet exemple utilise un polygone et l'opérateur Intersection, mais que d'autres types de géométrie et d'opérateurs relationnels peuvent également être utilisés.
--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