システム テーブルの空間検索
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
7/10/2012