3.9 GeoRasterオブジェクトの索引付け

GeoRasterデータは、様々な方法で索引付けできます。GeoRasterオブジェクトに作成できる最も重要な索引は、GeoRasterオブジェクトの空間エクステント(フットプリント)・ジオメトリ(spatialExtent Attributeに示すspatialExtent属性)に対する空間索引(Rツリー)です。大規模な地理空間イメージおよびラスター・データベースの場合、GeoRaster列に対して常に空間索引を作成する必要があります。次に、GeoRaster列に対して空間索引を作成する場合の基本ステップを示します。(この例では、GeoRaster表の名前がCITY_IMAGESで、そのGeoRaster列の名前がIMAGEであると仮定します。)

  1. GeoRaster表の名前(この例ではCITY_IMAGES)とGeoRaster列の名前の空間エクステント(IMAGE.SPATIALEXTENT)を使用して、USER_SDO_GEOM_METADATAビューに行を挿入します。適切なSRID値(この例では3371)が登録されることを確認してください。
    INSERT INTO user_sdo_geom_metadata
        (TABLE_NAME,
         COLUMN_NAME,
         DIMINFO,
         SRID)
    VALUES (
         'city_images',
         'image.spatialextent',
         SDO_DIM_ARRAY(
            SDO_DIM_ELEMENT('X', -1000000000, 1000000000, 0.005),
            SDO_DIM_ELEMENT('Y', -1000000000, 1000000000, 0.005)),
         3371
    );
    
  2. 次の例のようにGeoRaster列に空間索引を作成します(次の例では、すべてのパラメータにデフォルト値を使用して、イメージの空間エクステントに対してCITY_IMAGES_IDXという空間索引を作成します)。
    CREATE INDEX city_images_idx 
          ON city_images (image.spatialextent)
          INDEXTYPE IS MDSYS.SPATIAL_INDEX;
    

    前述の文は、無効な空間エクステントが存在する場合や、前述のステップで登録したSRID値にGeoRaster表のSRID値が一致しない場合、失敗する可能性があります。文が失敗した場合、すべてのGeoRasterオブジェクトに有効なspatialExtentジオメトリ属性が存在し、すべてのspatialExtentジオメトリに同じSRIDが含まれることを確認してください。(spatialExtent値にはNULLを使用できます。)次に、空間索引を再作成します。

GeoRaster表にすでに空間索引が含まれる場合の特別な考慮事項については、「GeoRaster表に空間索引が含まれる場合の特別な考慮事項」も参照してください。空間索引の作成および拡張機能の詳細は、『Oracle Spatial開発者ガイド』を参照してください。

次のような他の索引を作成することもできます。

  • Oracle XMLTypeまたはOracle Textドキュメントの索引付け機能を使用した、メタデータ・オブジェクトに対するファンクション索引

  • 雲、河川、湖、海、植物など、GeoRaster表の他のユーザー定義列に対する標準の索引

各ラスター・データ表のrasterIdpyramidLevelbandBlockNumberrowBlockNumberおよびcolumnBlockNumber列に対して単一のBツリー索引も作成する必要があります。これは、例3-2および例3-3に示すように、PRIMARY KEY (rasterID, pyramidLevel, bandBlockNumber,rowBlockNumber, columnBlockNumber)を使用して実行する必要があります。