システム テーブルの空間検索

GDB_Items テーブルには、ジオデータベースに格納されたフィーチャクラスの範囲を保持するジオメトリ列があります。この列のデータ タイプは、SQL で検索できる空間タイプであるため、SQL を使用してこのテーブルに空間検索を実行し、検索範囲と交差するフィーチャクラスを見つけることができます。

各フィーチャクラスに対して格納されたジオメトリは、そのフィーチャクラスが持つ空間参照に関係なく、WGS 84 の空間参照を持ちます。そのため、クエリのジオメトリも WGS 84 空間参照で構築されます。

次の例は、検索範囲にかかるフィーチャクラスの名前の検索方法を示しています。この例はポリゴンとインターセクト演算子を使用していますが、他のジオメトリ タイプと関係演算子も使用できることに注意してください。

--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