Oracle® Spatial and Graph

GeoRaster開発者ガイド

12c リリース1 (12.1)

B72468-06(原本部品番号:E49118-05)

2017年3月

Oracle Spatial and GraphのGeoRaster機能の使用方法およびリファレンス情報を提供します。GeoRasterを使用すると、ラスター・データ(ラスター・イメージ・データとグリッド・データおよびそれらに関連するメタデータ)の格納、索引付け、問合せ、分析および配信を行うことができます。

Oracle Spatial and Graph GeoRaster開発者ガイド, 12cリリース1 (12.1)

B72468-06

Copyright © 1999, 2017, Oracle and/or its affiliates.  All rights reserved.

原本著者: Chuck Murray

協力者: Fengting Chen、Ivan Lucena、Qingyun (Jeffrey) Xie、Zhihai Zhang

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

図一覧

表一覧

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

『Oracle Spatial and Graph GeoRaster開発者ガイド』のこのリリースでの変更点

- Oracle Database 12cリリース1 (12.1.0.2)での変更点

- GeoRasterをデフォルトで有効にしない

- JAVA APIによるリリース12cのすべての新機能のサポート

- サード・パーティのプラグインのインストールの変更

- GDALベースのETLツールの強化

- SDO_GEOR_AGGRパッケージの強化

- Other Changes

- Oracle Database 12cリリース1 (12.1.0.1)での変更点

- 新機能

- ラスター代数および分析

- 高度なイメージ処理および仮想モザイク

- GeoRasterのコア機能の拡張

- その他の新しいサーバー側サブプログラムおよび機能

- 追加および強化されたクライアント側ツールとJava API

- SDO_GEOR_AGGRパッケージ

- SDO_GEOR_RAパッケージ

- 非推奨となった機能

- Other Changes

1 GeoRasterの概要および概念

- 1.1 ベクトル・データおよびラスター・データ

- 1.2 ラスター・データ・ソース

- 1.2.1 リモート・センシング

- 1.2.2 写真測量

- 1.2.3 地理情報システム

- 1.2.4 地図作成法

- 1.2.5 デジタル・イメージ処理

- 1.2.6 地質学、地球物理学および地球化学

- 1.3 GeoRasterデータ・モデル

- 1.4 GeoRasterの物理記憶域

- 1.4.1 記憶域パラメータ

- 1.4.2 ラスター・データ表

- 1.4.3 空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト

- 1.4.4 空のラスター・ブロック

- 1.4.5 GeoRasterにおけるクロススキーマのサポート

- 1.5 バンド、レイヤーおよびメタデータ

- 1.6 地理参照

- 1.6.1 関数フィッティング地理参照モデル

- 1.6.2 地上基準点(GCP)地理参照モデル

- 1.6.3 セル座標とモデル座標の変換

- 1.7 リサンプリングおよび内挿

- 1.8 ピラミッド

- 1.9 ビットマップ・マスク

- 1.10 NODATA値および値の範囲

- 1.11 圧縮と解凍

- 1.11.1 GeoRasterオブジェクトのJPEG圧縮

- 1.11.1.1 非推奨となったJPEG-Bサポート

- 1.11.2 GeoRasterオブジェクトのDEFLATE圧縮

- 1.11.3 GeoRasterオブジェクトの解凍

- 1.11.4 圧縮に使用するサード・パーティのプラグイン

- 1.11.5 拡張LOB圧縮

- 1.12 GeoRasterおよびデータベースの管理

- 1.13 GeoRasterでのパラレル処理

- 1.14 GeoRasterでの操作の進行状況のレポート

- 1.15 GeoRaster PL/SQL API

- 1.16 GeoRaster Javaインタフェース

- 1.17 GeoRaster Java API

- 1.18 GeoRasterツール: ローダー、ビューア、エクスポータ

- 1.18.1 JAIベースのビューア、ローダーおよびエクスポータ

- 1.18.2 同時バッチ・ロードおよびエクスポートのためのGDALベースのETLウィザード

- 1.19 GeoRasterのPL/SQLおよびJavaデモ・ファイル

- 1.20 Spatial and Graphおよび関連機能のREADMEファイル

2 GeoRasterのデータ型および関連構造

- 2.1 SDO_GEORASTERオブジェクト型

- 2.1.1 rasterType属性

- 2.1.2 spatialExtent属性

- 2.1.3 rasterDataTable属性

- 2.1.4 rasterID属性

- 2.1.5 metadata属性

- 2.2 SDO_RASTERオブジェクト型およびラスター・データ表

- 2.2.1 rasterID属性

- 2.2.2 pyramidLevel属性

- 2.2.3 bandBlockNumber属性

- 2.2.4 rowBlockNumber属性

- 2.2.5 columnBlockNumber属性

- 2.2.6 blockMBR属性

- 2.2.7 rasterBlock属性

- 2.3 他のGeoRasterの型

- 2.3.1 SDO_GEOR_HISTOGRAMオブジェクト型

- 2.3.2 SDO_GEOR_COLORMAPオブジェクト型

- 2.3.3 SDO_GEOR_GRAYSCALEオブジェクト型

- 2.3.4 SDO_RASTERSETコレクション型

- 2.3.5 SDO_GEOR_SRSオブジェクト型

- 2.3.6 SDO_GEOR_GCPオブジェクト型

- 2.3.7 SDO_GEOR_GCP_COLLECTIONコレクション型

- 2.3.8 SDO_GEOR_GCPGEOREFTYPEオブジェクト型

- 2.4 GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)

- 2.4.1 TABLE_NAME列

- 2.4.2 COLUMN_NAME列

- 2.4.3 METADATA_COLUMN_NAME列

- 2.4.4 RDT_TABLE_NAME列

- 2.4.5 RASTER_ID列

- 2.4.6 OTHER_TABLE_NAMES列

- 2.5 GeoRasterのXMLスキーマ

3 基本的なGeoRaster操作

- 3.1 GeoRaster表およびラスター・データ表の作成

- 3.1.1 GeoRaster表の作成

- 3.1.2 ラスター・データ表の作成

- 3.1.3 GeoRaster DMLトリガー

- 3.2 新しいGeoRasterオブジェクトの作成

- 3.3 GeoRasterユーザーに対する一時表領域の追加

- 3.4 ラスター・データのロード

- 3.4.1 ロード前のソース・ラスターの再フォーマット

- 3.5 GeoRasterオブジェクトの検証

- 3.6 GeoRasterオブジェクトの地理参照

- 3.7 空間エクステントの生成と設定

- 3.7.1 GeoRaster表に空間索引が含まれる場合の特別な考慮事項

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

- 3.9 GeoRasterオブジェクトの問合せと検索

- 3.10 ラスター記憶域の変更と最適化

- 3.11 GeoRasterオブジェクトのコピー

- 3.12 GeoRasterメタデータの問合せおよび更新

- 3.13 GeoRasterセル・データの問合せおよび更新

- 3.14 セル値の内挿

- 3.15 GeoRasterオブジェクトの処理および分析

- 3.16 GeoRaster操作の進行状況の監視およびレポート

- 3.17 GeoRasterオブジェクトの圧縮と解凍

- 3.18 GeoRasterオブジェクトの削除とGeoRaster表およびRDTの削除

- 3.19 GeoRasterオブジェクトの表示

- 3.20 GeoRasterオブジェクトのエクスポート

- 3.21 コミット前のGeoRasterオブジェクトの更新

- 3.22 テンプレート関連のサブプログラムを使用したGeoRasterアプリケーションの開発

- 3.23 Workspace ManagerおよびLabel SecurityでのGeoRasterの使用

- 3.23.1 Workspace ManagerでのGeoRasterの使用

- 3.23.2 Label SecurityでのGeoRasterの使用

- 3.24 GeoRasterオブジェクトによる表領域の効率的な使用のメンテナンス

- 3.25 データベースのGeoRasterオブジェクトおよびシステム・データのメンテナンス

- 3.26 データベース間でのGeoRasterデータの転送

- 3.26.1 競合の確認と解決

- 3.26.2 GeoRasterデータの転送の実行

- 3.27 GeoRasterデータでのトランスポータブル表領域の使用

4 ラスター代数および分析

- 4.1 ラスター代数言語

- 4.1.1 ラスター代数式の例

- 4.2 セル値ベースの条件付き問合せ

- 4.3 セル値ベースの条件付き更新(編集)

- 4.4 数学的操作

- 4.5 分類操作

- 4.6 オンザフライ統計分析

- 4.7 ラスター・データのスケール変更およびオフセット設定

- 4.8 ラスター・データのキャスト

- 4.9 地図的モデリング

5 イメージ処理および仮想モザイク

- 5.1 高度な地理参照

- 5.2 イメージの再投影

- 5.3 イメージの幾何補正

- 5.4 イメージのオルソ補正

- 5.4.1 平均の高さを使用したオルソ補正

- 5.4.2 DEMを使用したオルソ補正

- 5.5 イメージのスケール変更

- 5.6 イメージのストレッチ

- 5.7 イメージのセグメント化

- 5.8 イメージのピラミッド化: パラレル生成および部分更新

- 5.9 ビットマップのピラミッド化

- 5.10 植生指標計算

- 5.11 タッセルド・キャップ変換

- 5.12 イメージのマスキング

- 5.13 バンドのマージ

- 5.14 イメージの追加

- 5.15 大規模イメージのモザイク処理

- 5.15.1 パラレル圧縮、コピー、サブセット化、再投影および幾何補正

- 5.16 仮想モザイク

- 5.16.1 GeoRaster表のいずれか1つまたはリストとしての仮想モザイク

- 5.16.2 GeoRaster列を含むビューとしての仮想モザイク

- 5.16.3 SQL問合せ文またはカーソルとしての仮想モザイク

- 5.16.4 アプリケーションでの仮想モザイクの使用

- 5.16.5 大規模な仮想モザイクに関する特別な考慮事項

- 5.16.5.1 MIN_X_RES$およびMAX_X_RES$を使用した問合せパフォーマンスの向上

- 5.17 イメージの提供

6 SDO_GEORパッケージのリファレンス

- 6.1 SDO_GEOR.addNODATA

- 6.2 SDO_GEOR.addSourceInfo

- 6.3 SDO_GEOR.calcCompressionRatio

- 6.4 SDO_GEOR.changeCellValue

- 6.5 SDO_GEOR.changeFormatCopy

- 6.6 SDO_GEOR.copy

- 6.7 SDO_GEOR.createBlank

- 6.8 SDO_GEOR.createTemplate

- 6.9 SDO_GEOR.deleteControlPoint

- 6.10 SDO_GEOR.deleteNODATA

- 6.11 SDO_GEOR.deletePyramid

- 6.12 SDO_GEOR.evaluateDouble

- 6.13 SDO_GEOR.exportTo

- 6.14 SDO_GEOR.generateBlockMBR

- 6.15 SDO_GEOR.generatePyramid

- 6.16 SDO_GEOR.generateSpatialExtent

- 6.17 SDO_GEOR.generateSpatialResolutions

- 6.18 SDO_GEOR.generateStatistics

- 6.19 SDO_GEOR.generateStatisticsMax

- 6.20 SDO_GEOR.generateStatisticsMean

- 6.21 SDO_GEOR.generateStatisticsMedian

- 6.22 SDO_GEOR.generateStatisticsMin

- 6.23 SDO_GEOR.generateStatisticsMode

- 6.24 SDO_GEOR.generateStatisticsSTD

- 6.25 SDO_GEOR.georeference

- 6.26 SDO_GEOR.getBandDimSize

- 6.27 SDO_GEOR.getBeginDateTime

- 6.28 SDO_GEOR.getBinFunction

- 6.29 SDO_GEOR.getBinTable

- 6.30 SDO_GEOR.getBinType

- 6.31 SDO_GEOR.getBitmapMask

- 6.32 SDO_GEOR.getBitmapMaskSubset

- 6.33 SDO_GEOR.getBitmapMaskValue

- 6.34 SDO_GEOR.getBlankCellValue

- 6.35 SDO_GEOR.getBlockingType

- 6.36 SDO_GEOR.getBlockSize

- 6.37 SDO_GEOR.getCellCoordinate

- 6.38 SDO_GEOR.getCellDepth

- 6.39 SDO_GEOR.getCellValue

- 6.40 SDO_GEOR.getColorMap

- 6.41 SDO_GEOR.getColorMapTable

- 6.42 SDO_GEOR.getCompressionType

- 6.43 SDO_GEOR.getControlPoint

- 6.44 SDO_GEOR.getDefaultAlpha

- 6.45 SDO_GEOR.getDefaultBlue

- 6.46 SDO_GEOR.getDefaultColorLayer

- 6.47 SDO_GEOR.getDefaultGreen

- 6.48 SDO_GEOR.getDefaultPyramidLevel

- 6.49 SDO_GEOR.getDefaultRed

- 6.50 SDO_GEOR.getEndDateTime

- 6.51 SDO_GEOR.getGCPGeorefMethod

- 6.52 SDO_GEOR.getGCPGeorefModel

- 6.53 SDO_GEOR.getGeoreferenceType

- 6.54 SDO_GEOR.getGrayScale

- 6.55 SDO_GEOR.getGrayScaleTable

- 6.56 SDO_GEOR.getHistogram

- 6.57 SDO_GEOR.getHistogramTable

- 6.58 SDO_GEOR.getID

- 6.59 SDO_GEOR.getInterleavingType

- 6.60 SDO_GEOR.getLayerDimension

- 6.61 SDO_GEOR.getLayerID

- 6.62 SDO_GEOR.getLayerOrdinate

- 6.63 SDO_GEOR.getModelCoordinate

- 6.64 SDO_GEOR.getModelCoordLocation

- 6.65 SDO_GEOR.getModelSRID

- 6.66 SDO_GEOR.getNODATA

- 6.67 SDO_GEOR.getPyramidMaxLevel

- 6.68 SDO_GEOR.getPyramidType

- 6.69 SDO_GEOR.getRasterBlockLocator

- 6.70 SDO_GEOR.getRasterBlocks

- 6.71 SDO_GEOR.getRasterData

- 6.72 SDO_GEOR.getRasterRange

- 6.73 SDO_GEOR.getRasterSubset

- 6.74 SDO_GEOR.getScaling

- 6.75 SDO_GEOR.getSourceInfo

- 6.76 SDO_GEOR.getSpatialDimNumber

- 6.77 SDO_GEOR.getSpatialDimSizes

- 6.78 SDO_GEOR.getSpatialResolutions

- 6.79 SDO_GEOR.getSpectralResolution

- 6.80 SDO_GEOR.getSpectralUnit

- 6.81 SDO_GEOR.getSRS

- 6.82 SDO_GEOR.getStatistics

- 6.83 SDO_GEOR.getTotalLayerNumber

- 6.84 SDO_GEOR.getULTCoordinate

- 6.85 SDO_GEOR.getVAT

- 6.86 SDO_GEOR.getVersion

- 6.87 SDO_GEOR.hasBitmapMask

- 6.88 SDO_GEOR.hasGrayScale

- 6.89 SDO_GEOR.hasNODATAMask

- 6.90 SDO_GEOR.hasPseudoColor

- 6.91 SDO_GEOR.importFrom

- 6.92 SDO_GEOR.init

- 6.93 SDO_GEOR.isBlank

- 6.94 SDO_GEOR.isOrthoRectified

- 6.95 SDO_GEOR.isRectified

- 6.96 SDO_GEOR.isSpatialReferenced

- 6.97 SDO_GEOR.mask

- 6.98 SDO_GEOR.mergeLayers

- 6.99 SDO_GEOR.mosaic

- 6.100 SDO_GEOR.rectify

- 6.101 SDO_GEOR.reproject

- 6.102 SDO_GEOR.scaleCopy

- 6.103 SDO_GEOR.schemaValidate

- 6.104 SDO_GEOR.setBeginDateTime

- 6.105 SDO_GEOR.setBinFunction

- 6.106 SDO_GEOR.setBinTable

- 6.107 SDO_GEOR.setBitmapMask

- 6.108 SDO_GEOR.setBlankCellValue

- 6.109 SDO_GEOR.setColorMap

- 6.110 SDO_GEOR.setColorMapTable

- 6.111 SDO_GEOR.setControlPoint

- 6.112 SDO_GEOR.setDefaultAlpha

- 6.113 SDO_GEOR.setDefaultBlue

- 6.114 SDO_GEOR.setDefaultColorLayer

- 6.115 SDO_GEOR.setDefaultGreen

- 6.116 SDO_GEOR.setDefaultPyramidLevel

- 6.117 SDO_GEOR.setDefaultRed

- 6.118 SDO_GEOR.setEndDateTime

- 6.119 SDO_GEOR.setGCPGeorefMethod

- 6.120 SDO_GEOR.setGCPGeorefModel

- 6.121 SDO_GEOR.setGrayScale

- 6.122 SDO_GEOR.setGrayScaleTable

- 6.123 SDO_GEOR.setHistogramTable

- 6.124 SDO_GEOR.setID

- 6.125 SDO_GEOR.setLayerID

- 6.126 SDO_GEOR.setLayerOrdinate

- 6.127 SDO_GEOR.setModelCoordLocation

- 6.128 SDO_GEOR.setModelSRID

- 6.129 SDO_GEOR.setNODATAMask

- 6.130 SDO_GEOR.setOrthoRectified

- 6.131 SDO_GEOR.setRasterType

- 6.132 SDO_GEOR.setRectified

- 6.133 SDO_GEOR.setScaling

- 6.134 SDO_GEOR.setSourceInfo

- 6.135 SDO_GEOR.setSpatialReferenced

- 6.136 SDO_GEOR.setSpatialResolutions

- 6.137 SDO_GEOR.setSpectralResolution

- 6.138 SDO_GEOR.setSpectralUnit

- 6.139 SDO_GEOR.setSRS

- 6.140 SDO_GEOR.setStatistics

- 6.141 SDO_GEOR.setULTCoordinate

- 6.142 SDO_GEOR.setVAT

- 6.143 SDO_GEOR.setVersion

- 6.144 SDO_GEOR.subset

- 6.145 SDO_GEOR.updateRaster

- 6.146 SDO_GEOR.validateBlockMBR

- 6.147 SDO_GEOR.validateGeoRaster

7 SDO_GEOR_ADMINパッケージのリファレンス

- 7.1 SDO_GEOR_ADMIN.checkSysdataEntries

- 7.2 SDO_GEOR_ADMIN.isRDTNameUnique

- 7.3 SDO_GEOR_ADMIN.isUpgradeNeeded

- 7.4 SDO_GEOR_ADMIN.listGeoRasterColumns

- 7.5 SDO_GEOR_ADMIN.listGeoRasterObjects

- 7.6 SDO_GEOR_ADMIN.listGeoRasterTables

- 7.7 SDO_GEOR_ADMIN.listDanglingRasterData

- 7.8 SDO_GEOR_ADMIN.listRDT

- 7.9 SDO_GEOR_ADMIN.listRegisteredRDT

- 7.10 SDO_GEOR_ADMIN.listUnregisteredRDT

- 7.11 SDO_GEOR_ADMIN.maintainSysdataEntries

- 7.12 SDO_GEOR_ADMIN.registerGeoRasterColumns

- 7.13 SDO_GEOR_ADMIN.registerGeoRasterObjects

- 7.14 SDO_GEOR_ADMIN.upgradeGeoRaster

8 SDO_GEOR_AGGRパッケージのリファレンス

- 8.1 SDO_GEOR_AGGR.append

- 8.2 SDO_GEOR_AGGR.getMosaicExtent

- 8.3 SDO_GEOR_AGGR.getMosaicResolutions

- 8.4 SDO_GEOR_AGGR.getMosaicSubset

- 8.5 SDO_GEOR_AGGR.mosaicSubset

- 8.6 SDO_GEOR_AGGR.validateForMosaicSubset

9 SDO_GEOR_RAパッケージのリファレンス

- 9.1 SDO_GEOR_RA.classify

- 9.2 SDO_GEOR_RA.findCells

- 9.3 SDO_GEOR_RA.isOverlap

- 9.4 SDO_GEOR_RA.rasterMathOp

- 9.5 SDO_GEOR_RA.rasterUpdate

10 SDO_GEOR_UTLパッケージのリファレンス

- 10.1 SDO_GEOR_UTL.calcOptimizedBlockSize

- 10.2 SDO_GEOR_UTL.calcRasterNominalSize

- 10.3 SDO_GEOR_UTL.calcRasterStorageSize

- 10.4 SDO_GEOR_UTL.clearReportTable

- 10.5 SDO_GEOR_UTL.createDMLTrigger

- 10.6 SDO_GEOR_UTL.createReportTable

- 10.7 SDO_GEOR_UTL.disableReport

- 10.8 SDO_GEOR_UTL.dropReportTable

- 10.9 SDO_GEOR_UTL.emptyBlocks

- 10.10 SDO_GEOR_UTL.enableReport

- 10.11 SDO_GEOR_UTL.fillEmptyBlocks

- 10.12 SDO_GEOR_UTL.getAllStatusReport

- 10.13 SDO_GEOR_UTL.getProgress

- 10.14 SDO_GEOR_UTL.getStatusReport

- 10.15 SDO_GEOR_UTL.isReporting

- 10.16 SDO_GEOR_UTL.makeRDTNamesUnique

- 10.17 SDO_GEOR_UTL.recreateDMLTriggers

- 10.18 SDO_GEOR_UTL.renameRDT

- 10.19 SDO_GEOR_UTL.setClientID

- 10.20 SDO_GEOR_UTL.setSeqID

A GeoRasterメタデータのXMLスキーマ

索引

図一覧

- 1-1 ラスター空間とモデル空間

- 1-2 2つのタイプのセル座標系

- 1-3 GeoRasterデータの物理記憶域

- 1-4 Oracle Database内のGeoRasterデータ

- 1-5 レイヤー、バンドおよびラスター・データ表

- 1-6 地理参照に使用される多項式

- 1-7 ピラミッド・レベル

表一覧

- 1-1 ラスター・データのstorageParamのキーワード

- 2-1 SDO_GEOR_HISTOGRAMオブジェクト型の属性

- 2-2 SDO_GEOR_COLORMAPオブジェクト型の属性

- 2-3 SDO_GEOR_GRAYSCALEオブジェクト型の属性

- 2-4 SDO_GEOR_SRSオブジェクト型の属性

- 2-5 SDO_GEOR_GCPオブジェクト型の属性

- 2-6 SDO_GEOR_GCPGEOREFTYPEオブジェクト型の属性

- 2-7 SDO_GEOR_XMLSCHEMA_TABLE表の列

- 8-1 mosaicParamキーワード

はじめに

『Oracle Spatial and Graph開発者ガイド』では、Oracle Spatial and GraphのGeoRaster機能(このマニュアルではGeoRasterと表記します)の使用方法およびリファレンス情報について説明します。GeoRasterを使用すると、ラスター・イメージ・データとグリッド・データおよびそれらに関連するメタデータの格納、索引付け、問合せ、分析および配信を行うことができます。GeoRasterは、Oracle Spatial and Graphのデータ型および1つのオブジェクト・リレーショナル・スキーマを提供します。これらのデータ型およびスキーマ・オブジェクトを使用すると、地表面またはローカル座標系での位置を参照可能な多次元グリッド・レイヤーとデジタル・イメージを格納できます。

GeoRasterはスタンドアロン製品ではありません。Oracle Spatial and Graphとともにインストールされます。

注意:

GeoRasterを使用するには、Oracle Spatial and Graphの主な概念、データ型、使用方法、演算子、プロシージャおよびファンクションを理解しておく必要があります。これらの詳細は、『Oracle Spatial and Graph開発者ガイド』を参照してください。

対象読者

このマニュアルは、Oracle Databaseにラスター・データを格納する必要があるすべてのユーザーを対象としています。

Oracle Spatial and Graph、PL/SQLプログラミングおよびOracleのオブジェクト・リレーショナル・テクノロジを理解しておく必要があります。

また、ラスターの概念と用語、およびラスター・データを取得、作成または処理する方法も理解しておく必要があります。たとえば、このマニュアルでは、幾何補正されたデータを地理参照させることができることは示しますが、幾何補正の処理またはそれに関連する問題や方法については説明しません。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティへの取り組みについては、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)にアクセスしてください。

Oracleサポートへのアクセス

Oracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info、聴覚に障害があるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

関連ドキュメント

詳細については、次のドキュメントを参照してください。

- Oracle Spatial and Graph開発者ガイド

表記規則

このドキュメントでは次の表記規則を使用します。

表記規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダー変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

『Oracle Spatial and Graph GeoRaster開発者ガイド』のこのリリースでの変更点

「はじめに」の内容は次のとおりです。

- Oracle Database 12cリリース1 (12.1.0.2)での変更点

- Oracle Database 12cリリース1 (12.1.0.1)での変更点

Oracle Database 12cリリース1 (12.1.0.2)での変更点

次に、Oracle Database 12cリリース1 (12.1.0.2)の『Oracle Spatial and Graph GeoRaster開発者ガイド』での変更点を示します。

- GeoRasterをデフォルトで有効にしない

- JAVA APIによるリリース12cのすべての新機能のサポート

- サード・パーティのプラグインのインストールの変更

- GDALベースのETLツールの強化

- SDO_GEOR_AGGRパッケージの強化

- Other Changes

GeoRasterをデフォルトで有効にしない

Oracle Spatial and Graphの最初のインストール後、デフォルトではGeoRaster機能が無効になっています。GeoRasterを有効にするには、次の手順に従います。

1. SYS AS SYSDBAとしてデータベースに接続します。

2. 次の文を入力します。

EXECUTE MDSYS.enableGeoRaster;

詳細は、『Oracle Spatial and Graph開発者ガイド』のインストールまたはアップグレード後にGeoRasterが正しく動作するための確認事項に関する項を参照してください。

JAVA APIによるリリース12cのすべての新機能のサポート

GeoRasterのJava APIが更新され、リリース12.1の新しいパッケージ、ファンクション、プロシージャ、その他の機能がすべてサポートされます。これにはラスター代数、高度なイメージ処理、リレーショナルRDT表および新しいメタデータが含まれます。GeoRasterのJava APIについては、Oracle Spatial and Graph Java APIリファレンスに記載されています。

サード・パーティのプラグインのインストールの変更

LizardTechプラグインをインストールする前に、インストール準備のいくつかの手順に従う必要があります。詳細は、「圧縮に使用するサード・パーティのプラグイン」を参照してください。

GDALベースのETLツールの強化

GDALベースのETLツールのユーザー・インタフェースが強化され、操作性が向上して新しいロード・オプションが追加されました。これは最新のGDALバージョンでも更新されます。詳細は、最新のユーザーズ・ガイド($ORACLE_HOME/md/demo/georaster/etl/georaster_etl_user_guide.pdf)を参照してください。

SDO_GEOR_AGGRパッケージの強化

SDO_GEOR_AGGR.mosaicSubsetおよびSDO_GEOR_AGGR.getMosaicSubsetプロシージャでは、mosaicParamパラメータで解像度フィルタの使用を制御する新しいresFilterキーワードを使用できます。また、HIGHRESはcommonPointRuleキーワードの新しいオプションで、モザイクの重複するエリアにおいて最も解像度の高い画像を選択します。これらのキーワードについては、表8-1を参照してください。

その他の変更

このマニュアルでは、次のような変更があります。

- 新しい項の「パラレル圧縮、コピー、サブセット化、再投影および幾何補正」では、圧縮、コピー、サブセット化および幾何補正のためのパラレル処理の適用方法について説明します。「GeoRasterでのパラレル処理」にも情報が追加されています。

- 新しく「GeoRasterユーザーに対する一時表領域の追加」が追加されました。

Oracle Database 12cリリース1 (12.1.0.1)での変更点

次に、Oracle Database 12cリリース1 (12.1.0.1)の『Oracle Spatial and Graph GeoRaster開発者ガイド』での変更点を示します。

新機能

このリリースの新機能は次のとおりです。

- ラスター代数および分析

- 高度なイメージ処理および仮想モザイク

- GeoRasterのコア機能の拡張

- その他の新しいサーバー側サブプログラムおよび機能

- 追加および強化されたクライアント側ツールとJava API

- SDO_GEOR_AGGRパッケージ

- SDO_GEOR_RAパッケージ

ラスター代数および分析

このリリースでは、ユーザーが簡単にラスター・データに代数ファンクションを適用して新しい結果を導出できるように、ラスター・データ分析やGISモデリングで使用して、ラスター分析を代数式として定義するためのラスター代数および分析がサポートされます。詳細は、「ラスター代数および分析」を参照してください。

ラスター代数および分析のサポートには、次のものが含まれます。

- PL/SQL言語の拡張である新しいラスター代数言語。これには、式言語と、地図代数のローカル・ファンクション・タイプのファンクションが含まれます。(ラスター代数言語については、「ラスター代数言語」を参照してください。)

- ラスター代数言語を使用した算術操作のサポート(SDO_GEOR_RA.rasterMathOpプロシージャ)。

- ラスター代数言語を使用したセル値ベースの条件付き問合せのサポート(SDO_GEOR_RA.findCellsプロシージャ)。

- ラスター代数言語を使用したセル値ベースの条件付き更新(ラスター編集)のサポート(SDO_GEOR_RA.rasterUpdateプロシージャ)。

- ラスター代数言語を使用したラスター・セグメント化の分類のサポート(SDO_GEOR_RA.classifyプロシージャ)。

- オンザフライでの対話型分析をサポートする新しい統計生成ファンクション(SDO_GEOR.generateStatisticsMax、SDO_GEOR.generateStatisticsMean、SDO_GEOR.generateStatisticsMedian、SDO_GEOR.generateStatisticsMin、SDO_GEOR.generateStatisticsMode、SDO_GEOR.generateStatisticsSTD)。

- オンザフライ分析をサポートするSDO_GEOR.generateStatisticsの機能拡張。

高度なイメージ処理および仮想モザイク

このリリースでは、高度なイメージ処理および仮想モザイクがサポートされます。詳細は、「イメージ処理および仮想モザイク」を参照してください。

高度なイメージ処理および仮想モザイクのサポートには、次のものが含まれます。

- 地理参照されるRAWイメージの幾何補正(SDO_GEOR.rectify)

- 地理参照されるRAWイメージ(高さやDEMを含む)のオルソ補正(SDO_GEOR.rectify)

- 大規模イメージの追加(SDO_GEOR_AGGR.append)

- 地理参照されるRAWイメージの高度で高速な大規模モザイク処理(SDO_GEOR_AGGR.mosaicSubset)

- 任意の数の地理参照されるRAWイメージの仮想モザイクと、オンザフライ問合せおよび仮想モザイクのクロッピング(SDO_GEOR_AGGR.mosaicSubset、SDO_GEOR_AGGR.getMosaicSubset、SDO_GEOR_AGGR.getMosaicExtent、SDO_GEOR_AGGR.getMosaicResolutions、SDO_GEOR_AGGR.validateForMosaicSubsetおよび「仮想モザイク」)

- 内部的再投影/幾何補正、共通ポイント・ルール、および高度なモザイク処理と仮想モザイク両方での簡易カラー・バランスのサポート(SDO_GEOR_AGGR.mosaicSubsetの項の表8-1を参照)

- イメージ・ピラミッドのパラレル生成および部分更新(「イメージのピラミッド化: パラレル生成および部分更新」を参照)

- ビットマップ・ラスターの特殊なピラミッド化アルゴリズム(「ビットマップのピラミッド化」を参照)

- イメージ・マスキング(SDO_GEOR.mask)

- イメージの線形ストレッチ(「イメージのストレッチ」を参照)とイメージのセグメント化(「イメージのセグメント化」を参照)

- NDVI計算(「植生指標計算」を参照)およびタッセルド・キャップ変換(「タッセルド・キャップ変換」を参照)

GeoRasterのコア機能の拡張

このリリースには、GeoRasterのコア機能に対する次の拡張が含まれます。

- モザイク処理、ピラミッド化、すべてのラスター代数ファンクションおよびプロシージャに追加された、パフォーマンスが大幅に向上するパラレル処理機能(「GeoRasterでのパラレル処理」を参照)

- 多くの新しいサブプログラムに追加された操作の進行状況レポートと、その目的で追加された多くの新しいユーティリティ・プロシージャおよびファンクション(「GeoRasterでの操作の進行状況のレポート」を参照)

- 追加のラスター・データ記憶域としてのリレーショナルRDT表のサポート(「ラスター・データ表」を参照)

- メタデータにデフォルトのアルファ・チャネルおよびピラミッド・レベルを指定する機能(「GeoRasterメタデータのXMLスキーマ」で定義)

- グリッドの任意の点にセル値を内挿する新しい共2次内挿法(イメージ操作やピラミッド化の新しいリサンプリング・タイプとしても追加された共2次内挿法(「リサンプリングおよび内挿」を参照))

- ファイルからインポートされた不明な、または外部のピラミッド・リサンプリング・タイプを示すために追加されたOTHERリサンプリング・タイプ(「リサンプリングおよび内挿」を参照)

- ピラミッド化、再投影およびスケール変更の大幅なパフォーマンス向上

その他の新しいサーバー側サブプログラムおよび機能

追加された他の新しいサーバー側サブプログラムおよび機能は次のとおりです。

- ラスター範囲(最小および最大のセル値)を問い合せる新しいファンクション(SDO_GEOR.getRasterRange)

- 1つのセルの行、列およびバンド番号の指定、またはモデル座標空間またはセル座標空間の点ジオメトリの指定を可能にする2つの新しいSDO_GEOR.getRasterBlockLocator形式

- ピラミッドの解像度生成(SDO_GEOR.generateSpatialResolutions)

- 既存のラスター・ブロックからの空のラスター・ブロックの作成(SDO_GEOR_UTL.emptyBlocks)

- DMLトリガーの再作成(SDO_GEOR_UTL.recreateDMLTriggers)

追加および強化されたクライアント側ツールとJava API

次のクライアント側ツールとJava API機能が追加または強化されました。

- 多数のラスター・ファイルの同時バッチ・ロードおよびエクスポートのための新しいGDALベースのETLウィザード(「同時バッチ・ロードおよびエクスポートのためのGDALベースのETLウィザード」を参照)。

- GeoRasterビューアでは、GeoRaster表またはビューのいずれか1つまたはリストとして定義された仮想モザイクを表示できるように強化されています(「JAIベースのビューア、ローダーおよびエクスポータ」を参照)

- 地上基準点(GCP)の格納および操作、GCP地理参照、再投影、グリッド内挿などの機能をサポートするために拡張されたJava API

SDO_GEOR_AGGRパッケージ

新しいSDO_GEOR_AGGRパッケージには、仮想モザイク、大規模な物理モザイク処理、およびGeoRasterオブジェクトに対する追加操作をサポートするサブプログラムが含まれます。サブプログラムのリファレンスおよび使用情報は、「SDO_GEOR_AGGRパッケージのリファレンス」を参照してください。

SDO_GEOR_RAパッケージ

新しいSDO_GEOR_RAパッケージには、GeoRasterに関連するラスター代数および分析操作のためのサブプログラムが含まれます。サブプログラムのリファレンスおよび使用情報は、「SDO_GEOR_RAパッケージのリファレンス」を参照してください。

非推奨となった機能

次の機能は、このリリースで非推奨となりました(将来のリリースではサポートされなくなる予定です)。

- GeoRasterでのJPEG-B圧縮のサポート
JPEG-Fサポートを使用することをお薦めします(「非推奨となったJPEG-Bサポート」を参照)。

その他の変更

このリリースでの追加変更は次のとおりです。

- 新しい「ラスター代数および分析」では、ラスター代数言語(PL/SQL式と代数式)および関連するラスター操作(条件付き問合せ、セル値ベースの更新または編集、数学的操作、分類、オンザフライ統計分析、地図的モデリングでのそれらの適用など)について説明します。

- 新しい「イメージ処理および仮想モザイク」では、高度な地理参照、再投影、幾何補正、オルソ補正、ラスター更新、ラスター追加、大規模な物理モザイク処理、仮想モザイク、仮想モザイクに対するオンザフライ空間問合せなどの高度なイメージ処理機能について説明します。

1 GeoRasterの概要および概念

GeoRasterはOracle Spatial and Graphの機能で、ラスター画像およびグリッド・データとその関連メタデータの格納、索引付け、問合せ、分析および配信を行います。GeoRasterは、Oracleの空間データ型および1つのオブジェクト・リレーショナル・スキーマを提供します。これらのデータ型およびスキーマ・オブジェクトを使用すると、地表面またはローカル座標系での位置を参照可能な多次元グリッド・レイヤーとデジタル・イメージを格納できます。データが地理参照される場合、イメージ上のセルに対する地表の場所を検索したり、地表の場所に対して、その場所に関連付けられたイメージ上のセルを検索できます。

GeoRasterは、リモート・センシング、写真測量、主題図作成などの、イメージの取得または作成を行う任意のテクノロジからのデータに対して使用できます。ロケーション・ベースのサービス、地理イメージのアーカイブ、環境の監視とアセスメント、地質工学と地質学的調査、天然資源管理、防衛、緊急時対応、遠隔通信、輸送、都市計画、自国の保安などの広範囲な応用分野に利用できます。

注意:

GeoRasterを使用するには、Oracle Spatial and Graphの主な概念、データ型、使用方法、演算子、プロシージャおよびファンクションを理解しておく必要があります。これらの詳細は、『Oracle Spatial and Graph開発者ガイド』を参照してください。

また、ラスターとイメージの概念と用語、およびラスター・データを取得、作成または処理する方法も理解しておく必要があります。

GeoRasterは、Java仮想マシン(JVM)やOracle XML DBなど、Oracle Databaseに含まれるいくつかのコンポーネントを使用します。

注意:

Oracle Spatial and Graphの最初のインストール後、デフォルトではGeoRaster機能が無効になっています。GeoRasterを有効にするには、次の手順に従います。

1. SYS AS SYSDBAとしてデータベースに接続します。

2. 次の文を入力します。

EXECUTE MDSYS.enableGeoRaster;

Oracle XML DBリポジトリが適切にインストールされていること、およびCOMPATIBILITYデータベース初期化パラメータの値が10.0以上であることも確認してください。詳細は、『Oracle Spatial and Graph開発者ガイド』のインストール、互換性およびアップグレードに関する付録を参照してください。

データベースのアップグレード後に、SDO_GEOR_ADMIN.isUpgradeNeededファンクションをコールして、現在のリリースで無効なGeoRasterオブジェクトおよび無効なシステム・データを確認する必要があります。詳細は、「データベースのGeoRasterオブジェクトおよびシステム・データのメンテナンス」を参照してください。

この章では、GeoRasterの中核的な概念と機能(GeoRasterのデータ・モデルと記憶方式、地理参照モデル、メタデータのサポート、リサンプリングのアルゴリズム、ピラミッド、圧縮、パラレル処理、ロードおよびエクスポートの機能、Java APIなど)について説明します。内容は次のとおりです。

- ベクトル・データおよびラスター・データ

- ラスター・データ・ソース

- GeoRasterデータ・モデル

- GeoRasterの物理記憶域

- バンド、レイヤーおよびメタデータ

- 地理参照

- リサンプリングおよび内挿

- ピラミッド

- ビットマップ・マスク

- NODATA値および値の範囲

- 圧縮と解凍

- GeoRasterおよびデータベースの管理

- GeoRasterでのパラレル処理

- GeoRasterでの操作の進行状況のレポート

- GeoRaster PL/SQL API

- GeoRaster Java API

- GeoRasterツール: ローダー、ビューア、エクスポータ

- GeoRasterのPL/SQLおよびJavaデモ・ファイル

- Spatial and Graphおよび関連機能のREADMEファイル

1.1 ベクトル・データおよびラスター・データ

地理的な特徴は、ベクトル形式、ラスター形式、またはその両方で表現できます。ベクトル・データでは、点は明示的なx,y,z座標で表現され、線は点の連なりであり、領域は境界が線であるポリゴンとして表現されます。この種類のベクトル形式は、空間オブジェクトの場所および形状の正確な記録に使用できます。ラスター・データでは、オブジェクトを覆うセルに値を割り当てることで空間オブジェクトを表現でき、セルを配列として表現できます。この種類のラスター形式は、ベクトル形式よりも精度は低いですが、多くのタイプの空間分析に最適です。

ラスター地理情報システム(GIS)分野では、通常、この種類のラスター・データはグリッド・データと呼ばれます。イメージ処理システムでは、通常、ラスター・データ表現はグリッドではなくイメージと呼ばれます。グリッドとイメージの間に相違点はありますが、どちらの形式の空間情報も通常はマトリックス構造(セルの配列)で表現され、各セルは空間に規則的に配置されます。

1.2 ラスター・データ・ソース

ラスター・データは、リモート・センシング、航空写真測量、地図作成法およびグローバル・ポジショニング・システムなどの様々な地理情報テクノロジによって収集され、使用されています。データは、収集された後、デジタル・イメージ処理システム、コンピュータ・グラフィック・アプリケーションおよびコンピュータ画像認識テクノロジによって分析されます。これらのテクノロジでは、複数のデータ形式が使用され、様々な製品が作成されます。

この項では、アプリケーション開発時に知っておく必要のある概念および技術に焦点を当て、GeoRasterのいくつかの主要なデータ・ソースおよび使用方法について簡単に説明します。テクノロジの詳細は説明しないため、それらの情報については一般的な教本や参考資料を参照してください。

1.2.1 リモート・センシング

リモート・センシングでは、ある領域またはオブジェクトの情報を、その領域またはオブジェクトに物理的に接続していないデバイスを介して取得します。たとえば、センサーの例には、衛星、気球、飛行機、ボート、地上局などがあります。センサー・デバイスには、フレーム・カメラ、プッシュブルーム(走査)方式のセンサー、合成開口レーダー(SAR)、水路用ソナー、ペーパー・スキャナ、フィルム・スキャナなどの広範囲なデバイスを使用できます。リモート・センシング・アプリケーションには、環境のアセスメントや監視、地球変動の調査や監視、天然資源調査などのためのアプリケーションがあります。

リモート・センシングによって収集されたデータは、通常、地理イメージと呼ばれます。波長、バンド数およびその他の要因によって、地理イメージの放射特性が決定されます。地理イメージにはシングルバンド、マルチバンドまたはハイパースペクトルがあり、いずれもGeoRasterで管理できます。これらの地理イメージ(特に衛星で観測されたイメージ)は、地表のあらゆる領域を表現できます。気象衛星の場合などは高い時間解像度が得られるため、変更を簡単に検出できます。リモート・センシング・アプリケーションでは、多くの場合、様々なタイプの解像度(時間、空間、スペクトル、放射)が重要になります。

1.2.2 写真測量

写真測量では、写真による測定結果から測量情報を導出します。ほとんどの写真測量アプリケーションでは、航空写真や、衛星リモート・センシングによって収集された高解像度イメージが使用されます。従来の写真測量の主なデータは、白黒写真、カラー写真、立体写真セットなどのイメージです。

写真測量によって、イメージ作成時に存在したとおりのイメージとオブジェクトの精密な地理的関係が確立され、オブジェクトに関する情報をそのイメージから導出できます。イメージとオブジェクトの関係は、いくつかの方法によって確立できますが、その方法は、アナログ(光学的、機械的および電子的な構成要素を使用)または分析的(モデリングは数学的で処理はデジタル)の2つのカテゴリに分けられます。アナログのソリューションは、ソフトコピー写真測量とも呼ばれる、分析的/デジタルのソリューションに、次第に取って代わられています。

ソフトコピー写真測量システムでは、主に、数値標高モデル(DEM)やオルソ・イメージなどが生成されます。GeoRasterでは、これらのすべてのラスター・データを地理参照情報とともに管理できます。

1.2.3 地理情報システム

地理情報システム(GIS)は、地理参照情報を取得、格納および処理します。従来のGISソフトウェアはベクトルベースかラスターベースのいずれかでしたが、Oracle Spatial and Graphでは、GeoRaster機能によってラスターとベクトルの両方のデータを処理できます。

ラスターベースGISシステムは、通常、幾何補正されたグリッド・データを処理します。グリッド・データには、離散データまたは連続データがあります。離散データには行政的小区域、土地利用と土地被覆、バス路線、油井などがあり、これらは通常、整数グリッドとして格納されます。連続データには標高、アスペクト、汚染濃度、環境騒音レベル、風速などがあり、これらは通常、浮動小数点グリッドとして格納されます。GeoRasterでは、これらのすべてのデータを格納できます。

離散グリッド・レイヤーの属性は、値属性表(VAT)というリレーショナル表に格納されます。VATには、GISベンダーが指定した列が含まれており、ユーザーが定義した列を含めることもできます。VATは、単純な表としてOracle Databaseに格納できます。ラスターGISアプリケーションでそのVATを使用できるように、対応するGeoRasterオブジェクト内にVAT名を登録することができます。

1.2.4 地図作成法

地図作成法は、地図を作成するための技術で、3次元の地表を(または地表以外の空間をローカル座標系を使用して)2次元で表すものです。今日では、地図をデジタルで作成したり、スキャンしてデジタル形式にできるようになり、地図作成が大幅に自動化されています。コンピュータに格納した地図では、高速な問合せ、分析および更新が可能です。

様々な使用方法や目的に対応する、多くのタイプの地図があります。地図のタイプの例には、基本図(背景)、主題図、地形図(3次元)、方位図、地籍図(土地利用)および差込み図などがあります。通常、地図には、縮尺棒、凡例、記号(北矢印など)、ラベル(都市名、河川名など)など、複数の注釈要素が含まれています。

地図は、ラスター形式(GeoRasterで管理可能)、ベクトル形式またはハイブリッド形式で格納できます。

1.2.5 デジタル・イメージ処理

デジタル・イメージ処理は、標準イメージ形式(TIFF、GIF、JFIF(JPEG)など)および多くの地理イメージ形式(NITF、GeoTIFF、ERDAS IMG、PCI PIXなど)のラスター・データの処理に使用されます。イメージ処理技術は、リモート・センシング・アプリケーションおよび写真測量アプリケーションで広範囲に使用されています。これらの技術を必要に応じて使用して、解釈を容易にするためのイメージの強調、修正および復元や、ぶれ、ひずみ、その他のノイズの修正、および地理オブジェクトの自動分類とターゲット識別を行うことができます。GeoRasterでは、ソース・イメージ、中間イメージおよび結果イメージをロードして管理できます。

1.2.6 地質学、地球物理学および地球化学

地質学、地球物理学および地球化学のすべての分野ではデジタル・データが使用され、GeoRasterで管理可能ななんらかのデジタル・ラスター地図が作成されます。

- 地質学では、このデータには地域地質図、地層図、岩盤すべりの写真などが含まれます。地質学的調査および石油地質学で広く利用されるコンピュータによる地層シミュレーション、合成鉱物の推算、3次元での油田の特徴付けでは、ラスター・データが使用されます。

- 地球物理学では、重力、磁界、地震波の伝達およびその他の項目に関するデータを、地理参照情報とともに記録します。

- 地球化学では、複数の化学元素の含有量を分析および測定できます。多くの場合、Triangulated Irregular Network (TIN)技術を使用して、さらなる分析のためのラスター地図が作成され、イメージ処理も広範囲に使用されます。

1.3 GeoRasterデータ・モデル

ラスター・データには、次の要素の一部またはすべてを含めることができます。

- セルまたはピクセル

- 空間ドメイン(フットプリント)

- 空間参照情報、時間参照情報およびバンド参照情報

- セル属性

- メタデータ

- 処理データおよび地図サポート・データ

GeoRasterでは、論理レイヤーを含む、構成要素ベースで多次元の汎用ラスター・データ・モデルが定義されます。ラスターのコア・データは、ラスター・セルの多次元の配列またはマトリックスです。各セルはマトリックスの1つの要素であり、セルの値はセル値と呼ばれ、セルの中心でサンプリングされます。GeoRasterオブジェクトをイメージとして表現する場合、セルはピクセルとも呼ばれ、1つのピクセルは1つの値のみを持ちます。(GeoRasterでは、セルとピクセルという用語は同義で使用されます。)マトリックスには、次元数、セル深度、各次元のサイズがあります。セル深度は、各セルの値のデータ・サイズです。セル深度は、すべてのセル値の範囲を定義し、この範囲は、セルの配列ではなく、個々のセルの範囲です。このコア・ラスター・データのセットをブロック化して、格納および取得を最適化できます。

このデータ・モデルには、論理レイヤー構造が含まれます。コア・データは、1つ以上の論理レイヤーで構成されています。たとえば、マルチチャネル・リモート・センシング・イメージの場合、このレイヤーを使用してイメージのチャネルがモデル化されます。(バンドおよびレイヤーの詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。)今回のリリースでは、各レイヤーは、行次元と列次元で構成されるセルの2次元マトリックスです。

GeoRasterデータにはメタデータと属性が含まれ、GeoRasterデータの各レイヤーには個別のメタデータと属性が含まれます。GeoRasterデータ・モデルでは、コア・セル・マトリックス以外のすべてのデータは、GeoRasterメタデータです。GeoRasterメタデータは、さらに様々な構成要素に分割され(このため構成要素ベースと呼ばれます)、これらの構成要素には、次の種類の情報が含まれます。

- オブジェクト情報

- ラスター情報

- 空間参照システム情報

- 日時(時間参照システム)情報

- バンド参照システム情報

- 各レイヤーのレイヤー情報

GeoRasterオブジェクトは、このデータ・モデルに基づいて、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)によって記述され、このXMLスキーマを使用して、メタデータが構成されます。スキーマの一部のコンポーネントおよびサブコンポーネントは必須で、それ以外はオプションです。GeoRasterのローダー、エクスポータまたはその他のアプリケーションを開発する場合、このXMLスキーマを理解しておく必要があります。今回のリリースでは、メタデータに関するいくつかの制限事項があり、詳細は、「SDO_GEORパッケージのリファレンス」の「SDO_GEOR.validateGeoRaster」ファンクションの「使用上の注意」を参照してください(SDO_GEOR.validateGeorasterは、GeoRasterオブジェクトのメタデータの妥当性をチェックします)。

GeoRasterオブジェクトのデータ型(「GeoRasterのデータ型および関連構造」を参照)は、GeoRasterデータ・モデルに基づいています。

このデータ・モデルでは、ラスター・マトリックス内の各ピクセル(セル)の座標、およびその座標が表す地表面の座標という、2つのタイプの座標を考慮する必要があります。このため、セル座標系とモデル座標系の2つのタイプの座標系(空間)が定義されています。

セル座標系(ラスター空間とも呼ばれる)は、ラスター・マトリックス内のセルおよびセルの間隔の記述に使用され、セル座標系の次元は、行、列およびバンド(この順序どおり)です。モデル座標系(地上座標系またはモデル空間とも呼ばれる)は、地表の点、またはOracle SRID値に関連付けられた任意の座標系の記述に使用されます。モデル座標系の空間次元は、XおよびY(この順序どおり)で、それぞれセル座標系の列次元と行次元に相当します。論理レイヤーは、セル空間のバンド次元に相当します。

図1-1に、ラスター・イメージとそれに関連付けられた地理(空間)エクステントの関係、およびイメージの部分とそれらに関連付けられた地理実体の関係を示します。

図1-1 ラスター空間とモデル空間

次に、図1-1について説明します。

- 左側のオブジェクトでは、中サイズの四角形はラスター・イメージを表し、その中の四角形の領域は国立公園、点は特定のレストランの位置を表しています。イメージ内の各ピクセルは、セル座標系(ラスター・イメージに関連付けられる座標系)の座標で表すことができます。中サイズの四角形の左上角は、このGeoRasterオブジェクトのセル空間のULTCoordinate値に関連付けられた座標値です。

- 右側のオブジェクトでは、大きい四角形は、ラスター・イメージに表される地理領域(モデル(地上)空間での)を表し、この四角形の中には、国立公園と特定のレストランを表す空間ジオメトリが存在します。地理領域全体とその中のジオメトリは、モデル(地上)座標系の座標(経度/緯度データ用のWGS 84など)を使用してそれぞれ表すことができます。

2次元の単一レイヤーGeoRasterデータの場合、下方向の行次元および右方向の列次元がセル座標系に含まれます(図1-1を参照)。セル空間の基点は常に(0,0)です。間隔は1セルまたは1ピクセルで、多くの場合、セル座標は、整数の行番号および列番号で識別されます。マルチバンド・イメージの場合、バンド方向の軸はバンド次元と呼ばれます。時系列のマルチレイヤー・イメージ(各レイヤーに異なる日付またはタイムスタンプが設定される)の場合、レイヤー方向の軸は時間次元と呼ばれます。3次元GeoRasterデータには、行次元と列次元の両方に対して垂直である、垂直次元が含まれます。

注意:

今回のリリースでは、セル座標系の行次元、列次元およびバンド次元のみがサポートされています。行次元と列次元は、2次元空間座標のモデル化に使用されます。バンド次元は、マルチチャネルのリモート・センシング・イメージまたは写真、およびその他のタイプのレイヤー(時間レイヤーや、複数のグリッドを含む主題など)のモデル化に使用できます。

ラスター・データが数値の配列として処理される場合、ほとんどのアプリケーションにおいて行番号および列番号を使用した整数のアドレスで十分です。ただし、一般的にラスター・データ配列は連続する空間の離散表現であるため、セルの値が領域の集合値または点の単一値のいずれを表しているかに関係なく、セル空間とモデル空間の間の座標の1対1マッピングが必要です。

つまり、セル空間のサブセル(サブピクセル)・アドレッシングが必要です。サブセル・アドレッシングをサポートするために、セルの基点(0,0)が定義されている場所に応じて、GeoRasterは2つのタイプのセル座標系を定義します。図1-2は、各四角形が1つのセルを表し、2つのタイプのセル座標系(中心を基準とする座標系と左上を基準とする座標系)を示します。

図1-2 2つのタイプのセル座標系

デフォルトのセル座標系は基点がセルの中心にあるため、中心を基準とするセル座標系と呼ばれます。もう1つのセル座標系では基点がセルの左上にあるため、左上を基準とするセル座標系と呼ばれます。どちらの座標系でも、セルは均等なサイズの四角形で、単位は1セルです。IおよびJは整数、xおよびyは浮動小数点数と想定しています。

- 中心を基準とするセル空間では、I-0.5 <= x < I+0.5およびJ-0.5 <= y < J+0.5である場合、座標(x, y)は(I,J)にマップされます。

- 左上を基準とするセル空間では、I <= x < I+1.0およびJ <= y < J+1.0である場合、座標(x, y)はセル(I,J)にマップされます。

たとえば、サブセル座標(0.3, 0.3)は両方の座標系で同じ整数セル座標(0,0)を持ちますが、(0.3,0.6)は中心を基準とするセル空間では(0,1)を意味し、左上を基準とするセル空間では(0,0)を意味します。この2つのタイプのセル座標系は、spatialReferenceInfoメタデータのmodelCoordinateLocation要素によって定義されますが、定義されていない場合、デフォルトは中心を基準とするタイプになります。GeoRasterは、Oracle Database 11gで有効な両方のセル座標系をサポートし、サブセル・アドレスは、GeoRaster PL/SQL APIでサポートされます。(サブセル・アドレスは、以前のリリースでは内部的にサポートされていました。)

GeoRasterでは、セル空間の基点は常に(0,0)ですが、ラスター・データ自体の左上角のセルには、セル空間の基点座標とは異なる、セル空間内の座標を指定できます。したがって、左上角のセルの整数(行,列)座標は、(0,0)である必要はありません。この左上角をULTCoordinateといい、その値はメタデータに登録されます。これは基本的には、セル空間内のデータの相対位置を定義します。バンド次元が存在する場合、ULTCoordinate値は常に(行,列,0)です。各セルの座標は、ULTCoordinate値ではなく、セル空間の基点を基準としています。セル座標系の基点は、ULTCoordinate値と同じである必要はありません。

モデル座標系は、空間次元およびその他の次元(存在する場合)で構成されます。空間次元はx次元、y次元、およびz次元と呼ばれ、これらの次元の値は、測地座標系、投影座標系またはローカル座標系に関連付けることができます。その他の次元には、スペクトル次元および時間次元(それぞれs次元およびt次元と呼ばれる)があります。GeoRaster SRSでは現在、モデル座標系の2つの空間次元(X,Y)および3つの空間次元(X, Y, Z)がサポートされています。(様々な座標系のタイプなどの座標系の詳細は、『Oracle Spatial and Graph開発者ガイド』を参照してください。)

GeoRasterモデル座標系は、Oracle Spatial and Graph SRIDによって定義されます。モデル座標は、指定したSRIDと同じ単位を持ち、モデル座標系で定義された値の範囲内にある必要があります。たとえば、8307などの測地座標系にGeoRasterオブジェクトを地理参照する場合、その空間参照システム(SRS)から導出されるモデル座標の単位は10進度で、経度の値は-180.0から+180.0の範囲内に、緯度の値は-90.0から+90.0の範囲内にあることが必要です。

セル座標とモデル座標の関係は、GeoRasterの参照システム(マッピング方法)によってモデル化されます。定義されているGeoRasterの参照システムを次に示します。

- 空間参照システム(GeoRaster SRS)では、セル座標(行,列,垂直位置)がモデル座標(X,Y,Z)にマップされます。GeoRasterデータに空間参照システムを使用することを、データを地理参照するといいます。(地理参照の詳細は、「地理参照」を参照してください。)

- 時間参照システム(GeoRaster TRS)では、セル座標(時間)がモデル座標(T)にマップされます。

- バンド参照システム(GeoRaster BRS)では、セル座標(バンド)がモデル座標(S (スペクトル(Spectral)のS))にマップされます。

今回のリリースでは、これらの各参照システムの少なくとも一部がGeoRasterのXMLスキーマに定義されています。ただし、今回のリリースでは、空間参照システムのみがサポートされています。つまり、(行,列)座標と(X,Y)または(X, Y, Z)座標の関係のみをマップ可能です。モデル座標系が測地座標系である場合、(X,Y)は(経度,緯度)を表します。ただし、時間参照システムおよびバンド参照システムを使用して、スペクトル分解や、ラスター・データの収集タイミングなどの有効な時間情報およびスペクトル情報を格納することができます。

その他のメタデータは、「バンド、レイヤーおよびメタデータ」に示すように、GeoRaster XMLメタデータの<layerInfo>要素に格納されます。

1.4 GeoRasterの物理記憶域

GeoRasterデータは、セルの多次元マトリックスおよびGeoRasterメタデータで構成されます(「GeoRasterデータ・モデル」を参照)。多くのメタデータは、Oracle XMLTypeデータ型を使用してXML文書として格納されます。メタデータは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)に従って定義されます。GeoRasterオブジェクトの空間エクステント(フットプリント)はメタデータの一部ですが、これはGeoRasterオブジェクトの属性として、個別に格納されます。この方法によって、GeoRasterで空間ジオメトリ型および関連機能(GeoRasterオブジェクトに対するRツリー索引付けなど)を利用できるようになります。空間エクステントの詳細は、「spatialExtent属性」を参照してください。

GeoRasterメタデータは、CLOB記憶域オプションまたはバイナリXML記憶域オプションを使用して格納されます。GeoRasterメタデータのバイナリXML記憶域オプションは、デフォルトであり、ディスク領域が節約され、パフォーマンスが向上します。記憶域オプションは、GeoRaster表を作成するときに指定または変更できます。

大規模なGeoRasterオブジェクトを格納したり、取得や処理のパフォーマンスを最適化するために、セルの多次元マトリックスを小さいサブセットにブロック化できます。各ブロックはバイナリ・ラージ・オブジェクト(BLOB)として表に格納され、(SDO_GEOMETRY型の)ジオメトリ・オブジェクトを使用してブロックの正確なエクステントが定義されます。表の各行には、1つのブロックと、そのブロックに関連するブロック化情報のみが格納されます。(このブロック化方法は、ピラミッドにも適用されます。)

次元サイズ(行次元、列次元、バンド次元)は、対応するブロック・サイズで均等に分割されない場合があります。GeoRasterでは、境界ブロックを完成するために十分な元のセルが存在しない場合、埋込みが追加されます。境界ブロックは、各次元の正の方向の終了ブロックです。埋込みセルのセル深度は他のセルと同一で、値は0 (ゼロ)です。埋込みによって、各ブロックのBLOBサイズが同一になります。埋込みは、主に行ブロックおよび列ブロックに適用されますが、マルチバンド・イメージおよびハイパースペクトル・イメージの場合、バンド次元にも適用されます。たとえば、ライン単位のバンド・インターリーブ、(64,64,3)でのブロック化、8バンド、各バンドに64行および64列という仕様について考えてみます。この場合、次のようになります。

1. 1つ目のブロックには、バンド0、1および2がライン単位のインターリーブで格納されます。

2. 2つ目のブロックには、バンド3、4および5がライン単位のインターリーブで格納されます。

3. 3つ目のブロックには、バンド6のライン1、バンド7のライン1、埋め込まれた64個の列値、バンド6のライン2、バンド7のライン2、埋め込まれた64個の列値、のように、64個のすべての行が格納されるまでこの順番で格納されます。

ただし、ピラミッドの最上位レベルでは、そのピラミッド・レベルの行次元と列次元の両方のサイズがそれぞれ行ブロック・サイズと列ブロック・サイズの半分以下の場合、埋込みは行われません。ピラミッドの物理記憶域の詳細は、「ピラミッド」を参照してください。

各GeoRasterブロックのサイズは同一です。ブロックの次元サイズは2の累乗値である必要はありません。ランダムな整数値です。各GeoRasterオブジェクトで最小限の埋込みスペースのみが使用されるように、ブロック・サイズは、GeoRasterオブジェクトの次元サイズに基づいて自動的に最適化できます。詳細は、「記憶域パラメータ」の表1-1を参照してください。

ラスター・ブロック(BLOB)には、ラスター・セル値のバイナリ表現が含まれます。具体的には、浮動小数点のセル値は、サポートされているプラットフォーム上でIEEE 754標準形式で表されます。セル深度が8ビットよりも大きい場合、GeoRasterのセル・データはラスター・ブロックにビッグエンディアン形式で格納されます。セル深度が8ビットよりも小さい場合、ラスター・ブロックの各バイトには2つ以上のセルが含まれるため、1バイトのすべてのビットには、セル・データが埋め込まれます。セルは、必ず左から右へとバイトに埋め込まれます。たとえばセル深度が4ビットの場合は、1つのバイトに2つのセルが含まれ、そのバイトの最初の4ビットにはセルの値が含まれ、後の4ビットには次のセルの値が含まれますが、これは、インターリーブ・タイプで決定されます。

この物理記憶域モデルに基づいて、ラスター・データ・セットと関連メタデータ用のSDO_GEORASTER、およびラスター・イメージ内の各ブロック用のSDO_RASTERという2つのオブジェクト型が提供されています。

- SDO_GEORASTERオブジェクトには、空間エクステント・ジオメトリ(フットプリントまたは範囲のエクステント)および関連メタデータが含まれます。このオブジェクト型の列を1つ以上含む表を、GeoRaster表といいます。

- SDO_RASTERオブジェクトには、GeoRasterオブジェクトのブロック(タイル)に関する情報が含まれ、BLOBオブジェクトを使用して、ブロックのラスター・セル・データが格納されます。このオブジェクト型のオブジェクト表、または、このオブジェクト型の属性と同じ列を含むリレーショナル表を、ラスター・データ表(RDT)といいます。

SDO_GEORASTERオブジェクトには、イメージまたはラスター・データ・セットが格納され、参照されます。SDO_RASTERオブジェクトは、GeoRasterの内部オブジェクトです。SDO_GEORASTERオブジェクトは、ラスター・データ・セットのメタデータおよびラスター・セル・データ(SDO_RASTERオブジェクトのコレクション)を完全にカプセル化します。SDO_GEORASTERオブジェクトとそのSDO_RASTERオブジェクト間の関係は、GeoRasterによって自動的に管理されます。GeoRasterのファンクションおよびプロシージャのすべてのインタフェースでは、SDO_GEORASTERオブジェクトのみが処理され、SDO_GEORASTERオブジェクトのSDO_RASTERオブジェクトは、内部で自動的に処理されます。SDO_GEORASTERオブジェクトは、ユーザーがGeoRasterデータベースを構築して管理するための主要インタフェースであり、SDO_RASTERオブジェクトを使用するだけでラスター・データ表(RDT)を作成できます。

各SDO_GEORASTERオブジェクトには、RDTを一意に識別する属性の組合せ(rasterDataTableとrasterID)、およびGeoRasterオブジェクトのラスター・セル・データを格納するRDT内の行が存在します。

図1-3に、様々な都市のイメージを持つ行を含む表内の、マサチューセッツ州ボストンのイメージを例にあげて、GeoRasterオブジェクトの記憶域を示します。

図1-3 GeoRasterデータの物理記憶域

次に、図1-3について説明します。

- CITY_IMAGES表内の各行には、SDO_GEORASTERオブジェクトを含む、特定の都市(ボストンなど)のイメージに関する情報が含まれています。

- SDO_GEORASTERオブジェクトには、イメージの全領域を占める空間エクステント・ジオメトリ、メタデータ、ラスターID、およびこのイメージに関連付けられたラスター・データ表の名前が含まれています。

- ラスター・データ表内の各行には、ブロックの最小境界矩形(MBR)およびイメージ・データ(BLOBとして格納)を含む、イメージのブロック(四角形)に関する情報が含まれています。ラスター・データ表の詳細は、「ラスター・データ表」を参照してください。

SDO_GEORASTERおよびSDO_RASTERオブジェクト型の詳細は、「GeoRasterのデータ型および関連構造」を参照してください。

図1-4に、データベース内のGeoRasterデータ、およびいくつかの関連オブジェクトの物理記憶域を示します。

図1-4 Oracle Database内のGeoRasterデータ

次に、図1-4について説明します。

- GeoRaster表内の各GeoRasterオブジェクトには、1つのラスター・データ表が関連付けられています。この表には、ラスター・イメージの各ブロックに対応するエントリが含まれています。

- 各ラスター・イメージ・ブロックに対応するイメージ・データを含むBLOBは、ラスター表データとは別に格納されます。BLOBには、記憶域パラメータ(「記憶域パラメータ」を参照)を指定できます。

- 各GeoRasterオブジェクトには、1つのラスター・データ表が関連付けられます。ただし、1つのラスター・データ表には複数のGeoRasterオブジェクトのブロックを格納できるため、GeoRaster表内の複数のGeoRasterオブジェクトは、1つのラスター・データ表に関連付けられる場合と、複数のラスター・データ表に関連付けられる場合があります。

- GeoRaster表とラスター・データ表の関係は、GeoRasterシステム・データ(「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」を参照)に保持されます。

- GeoRaster表およびラスター・データ表には、索引(標準および空間)を作成できます。GeoRasterデータの索引付けの詳細は、「GeoRasterオブジェクトの索引付け」を参照してください。

- 地上基準点(GCP)や値属性表(VAT)などの追加情報を、GeoRasterオブジェクトに関連付けることができます。

GeoRaster表と、それに関連するラスター・データ表の間では、多対多関係を保持できる場合であっても、通常は1対多関係を保持します。つまり、ラスター・データ表には、同じGeoRaster表に属するGeoRasterオブジェクトのセル・データのみが含まれます。GeoRaster表は、多数の(潜在的に無制限の) GeoRasterオブジェクトを保持できます。ラスターのサイズによっては、RDTを使用して限られた数のGeoRasterオブジェクトのラスター・ブロックを保持する必要があります。

次の考慮事項は、スキーマ、表、および任意のOracle Spatial and Graphメタデータ・ビューに格納されている列名に適用されます。たとえば、これらの考慮事項はジオメトリ表、GeoRaster表、ラスター・データ表、およびジオメトリとGeoRaster列に適用されます。

- 名前には、文字、数字、下線のみが使用できます。たとえば、名前に空白( )、アポストロフィ(')、引用符(")またはカンマ(,)を使用することはできません。

- 名前がジオメトリ・メタデータ・ビューまたはGeoRasterシステム・データ(xxx_SDO_GEOR_SYSDATA)ビューに格納される前、あるいは表にアクセスする前に、名前で使用されているすべての文字は大文字に変換されます。表名で指定されるすべてのスキーマ名も、同様に変換されます。

ラスター・データ表の詳細は、「ラスター・データ表」を参照してください。

GeoRaster表およびラスター・データ表におけるクロススキーマのサポートの詳細は、「GeoRasterにおけるクロススキーマのサポート」を参照してください。

1.4.1 記憶域パラメータ

一部のGeoRaster操作では、記憶域の形式を指定または変更できます。関連のサブプログラムには、storageParamというパラメータが含まれており、このパラメータでは、キーワードとその値の文字列を引用符で囲みます。storageParamパラメータのキーワードは、ラスター・データの特性を指定します(表1-1を参照)。

注意:

この項に示すキーワードは、SDO_GEOR.importFromプロシージャのstorageParamパラメータおよびSDO_GEOR.exportToプロシージャのsubsetParamパラメータには、部分的に該当するか、または該当しません。「SDO_GEORパッケージのリファレンス」に示す、これらの各プロシージャに該当するパラメータのリファレンス情報を参照してください。

注意:

GeoRasterのサブプログラムに対する文字列(VARCHAR2)パラメータの中に数値がある場合は、ロケールにかかわらず、小数点にはピリオド(.)を使用する必要があります。

表1-1 ラスター・データのstorageParamのキーワード

キーワード

説明

bitmapmask

ビットマップ・マスクを考慮するかどうかを指定します。関連付けられたビットマップ・マスクを考慮する場合はTRUE、ビットマップ・マスクを考慮しない場合はFALSEを指定します。SDO_GEOR.copy、SDO_GEOR.changeFormatCopy、SDO_GEOR.mergeLayers、SDO_GEOR.scaleCopyおよびSDO_GEOR.subsetの場合はデフォルトがTRUE、SDO_GEOR.mosaicの場合はデフォルトがFALSEです(SDO_GEOR.mosaicでは、TRUEは無効であり、無視されます)。

blocking

ラスター・データをブロック化するかどうかを指定します。TRUEを指定すると、指定したまたはデフォルトのblockSize値のブロックで、ラスター・データがブロック化されます。OPTIMALPADDINGは、指定したblockSize値が埋込みスペースを縮小するために最適値に調整されること以外、TRUEと同じです。FALSEを指定すると、ラスター・データはブロック化されません(イメージ全体に1つのブロックのみが使用されます)。OPTIMALPADDINGを指定すると、GeoRasterでSDO_GEOR_UTL.calcOptimizedBlockSizeプロシージャが内部的にコールされます。

blockingのデフォルト値は、blockSizeキーワードを指定した場合はTRUEです。blocking=TRUEを指定し、blockSizeキーワードを指定しない場合、デフォルトのblockSizeが(512,512,B)になります(Bは出力されるGeoRasterオブジェクトのバンド数です)。blockingとblockSizeのいずれも指定しない場合、ソースGeoRasterオブジェクトからデフォルト値が導出されます(元のデータがブロック化されていない場合、デフォルトでは、出力されるGeoRasterオブジェクトのデータはブロック化されず、元のデータがブロック化されている場合、出力されるGeoRasterオブジェクトのデータは、同じブロック化方法でブロック化されます)。

blockSize

ブロック・サイズ(ブロック当たりのセル数)を指定します。出力されるGeoRasterオブジェクトの各次元に1つの値を指定する必要があります。たとえば、blocksize=(512,512,3)の場合、行次元に512、列次元に512、およびバンド次元に3が指定され、blocksize=(512,512)の場合、バンド次元を含まないGeoRasterオブジェクトの行および列のブロック・サイズに512が指定されます。値は負以外の整数である必要があります。値が0 (ゼロ)である場合は、ブロック・サイズが対応する次元のサイズであることを意味します。値が対応する次元のサイズより大きい場合は、埋込みが適用されます。この表のblockingキーワードの説明および「SDO_GEOR_UTLパッケージのリファレンス」のSDO_GEOR_UTL.calcOptimizedBlockSizeプロシージャの説明も参照してください。

通常のブロック化のみがサポートされます(すべてのブロックは常に同一サイズで、均等に配置されますが、ピラミッドの一部の最上位レベルはこのかぎりではありません)。ただし、ブロックの次元サイズは2の累乗値である必要はありません。ランダムな整数値です。たとえば、blockSize値として(589,1236,7)を指定できます。

ラスター・ブロックの物理記憶域サイズは、4GB以下である必要があります。

cellDepth

ラスター・データ・セットのセル深度を指定します(このセル深度は、すべてのセルのビット数およびデータ型の符号を示します)。ただし、セル深度を変更すると、データが消失したり、精度やイメージ品質が低下する場合があることに注意してください。値は、1BIT、2BIT、4BIT、8BIT_U、8BIT_S、16BIT_U、16BIT_S、32BIT_U、32BIT_S、32BIT_REALまたは64BIT_REAL(_Uは符号なし、_Sは符号付き)のいずれかである必要があります。(複合cellDepth型はサポートされません。)cellDepthを指定しない場合、デフォルトでは、ソースGeoRasterオブジェクトの値が使用されます。たとえば、celldepth=16BIT_Uのように指定します。

compression

GeoRasterオブジェクトに適用する圧縮タイプを指定します。JPEG-F、DEFLATEまたはNONEのいずれかの値を指定する必要があります。(NONEを使用して、圧縮されたGeoRasterオブジェクトを解凍することができます。)compressionを指定しない場合、デフォルトでは、ソースGeoRasterオブジェクトの圧縮タイプが使用されます。圧縮および解凍の詳細は、「圧縮と解凍」を参照してください。たとえば、compression=JPEG-Fのように指定します。

ソースGeoRasterオブジェクトが空白の場合は、SDO_GEOR.getRasterSubsetファンクションおよびSDO_GEOR.getRasterDataファンクションを除き、compressionキーワードは無視されます。(空白のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)

interleaving

インターリーブ・タイプを指定します。(インターリーブの詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。)値は、BSQ(順次バンド)、BIL(ライン単位のバンド・インターリーブ)またはBIP (ピクセル単位のバンド・インターリーブ)のいずれかである必要があります。たとえば、interleaving=BSQのように指定します。

parallel

圧縮操作の並列度を指定します。(このパラメータは、サブプログラムのコールでparallelParamパラメータが指定される場合には無視されます。)指定する場合、parallel=nという形式である必要があります(nは1より大きい)。compression記憶域パラメータとともに使用する必要があります。並列は次の圧縮操作でサポートされます。

- NONEからJPEG-F

- NONEからDEFLATE

- JPEG-FからNONE

- DEFLATEからNONE

並列は次の圧縮操作にはサポートされません。

- JPEG-FからDEFLATE

- DEFLATEからJPEG-F

pyramid

元のピラミッド・データを保持する場合はTRUE、元のピラミッド・データを保持しない場合はFALSEを指定します。デフォルト値は、プロシージャによって異なり、SDO_GEOR.copyおよびSDO_GEOR.changeFormatCopyの場合はTRUE、SDO_GEOR.scaleCopy、SDO_GEOR.mosaicおよびSDO_GEOR.subsetの場合はFALSEです。(SDO_GEOR.scaleCopyまたはSDO_GEOR.subsetではTRUEは無効であり、無視されます。)

記憶域パラメータを使用してピラミッド・データを生成することはできません。ピラミッド・データを生成するには、GeoRasterオブジェクトの作成後にSDO_GEOR.generatePyramidプロシージャを使用する必要があります。

quality

JPEGの圧縮品質(圧縮によって発生する劣化の程度)を指定します。0 (最低の品質)から100 (最高の品質)までの整数値をGeoRasterオブジェクトに適用します。デフォルト値は75です。圧縮の質の詳細は、「GeoRasterオブジェクトのJPEG圧縮」を参照してください。たとえば、quality=80のように指定します。

例1-1では、ブロック・サイズを変更し、元のオブジェクトのピラミッド・データをコピーせずに、GeoRasterオブジェクトをコピーします。

例1-1 storageParamキーワードの使用

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
INSERT INTO georaster_table (georid, georaster) VALUES (2, sdo_geor.init('RDT_1'))
RETURNING georaster INTO gr2;
SELECT georaster INTO gr1 FROM georaster_table WHERE georid=1;
sdo_geor.changeFormatCopy(gr1, 'blocking=OPTIMALPADDING
blocksize=(512,512) pyramid=FALSE', gr2);
UPDATE georaster_table SET georaster=gr2 WHERE georid=2;
COMMIT;
END;
/

例1-1では、GeoRasterオブジェクトgr2のラスター・データ表はRDT_1です。ラスター・データを表RDT_1に書き込む場合、PL/SQLブロックの実行前にこの表が存在する必要があります。存在しない場合、SDO_GEOR.changeFormatCopyプロシージャでエラーが発生します。

注意:

GeoRasterのセル・データまたはメタデータを挿入、更新または削除する場合は、例1-1および「コミット前のGeoRasterオブジェクトの更新」に示すように、トランザクションをコミットする前にGeoRasterオブジェクトを更新します。

例1-1および「SDO_GEORパッケージのリファレンス」の複数の例では、次のように定義されているGEORASTER_TABLEという表を使用しています。

CREATE TABLE georaster_table
( georid    NUMBER PRIMARY KEY,
name      VARCHAR2(32),
georaster SDO_GEORASTER );

1.4.2 ラスター・データ表

ラスター・データ表は、SDO_RASTER型のオブジェクト表か、または次の列定義を持つリレーショナル表である必要があります。

rasterID          NUMBER,
pyramidLevel      NUMBER,
bandBlockNumber   NUMBER,
rowBlockNumber    NUMBER,
columnBlockNumber NUMBER,
blockMBR          SDO_GEOMETRY,
rasterBlock       BLOB

ラスター・データ表は、オブジェクト表であるかリレーショナル表であるかにかかわらず、列(rasterID、pyramidLevel、bandBlockNumber、rowBlockNumber、columnBlockNumber)に主キーが定義されている必要があります。

各ラスター・データ表の名前は、引用符で囲まれていない有効な識別子と同じである必要があり、これらの名前は、スキーマ接頭辞を使用せずに、GeoRasterメタデータ・ビューおよびSDO_GEORASTERオブジェクトにすべて大文字で格納されます。(各GeoRaster列の名前は、引用符で囲まれていない有効な識別子と同じである必要があり、GeoRasterメタデータ・ビューにすべて大文字で格納されます。)また、各ラスター・データ表の名前は、データベース内で一意である必要があります。ラスター・データ表の名前の重複を解決するために、SDO_GEOR_ADMIN.maintainSysdataEntriesファンクションを使用できます(「SDO_GEOR_ADMINパッケージのリファレンス」を参照)。

ラスター・データ表を作成すると、RDTの配置および記憶域特性を制御できます(たとえば、パフォーマンスの向上のために表をパーティション化するなど)。大規模なGeoRasterオブジェクトの場合、ラスター・データを別のラスター・データ表に格納し、そのラスター・データ表をピラミッド・レベルまたはブロック番号(あるいはその両方)でパーティション化することをお薦めします(ただし、一定数の小規模なGeoRasterオブジェクトの場合、あまり多くのRDTを作成することのないように、RDTを共有することを常に検討してください)。GeoRaster表およびラスター・データ表の格納には、SYSTEM表領域を使用しないでください。かわりに、GeoRaster表用の個別のローカル管理(デフォルト)表領域を作成してください。

ラスター・データ表の行を直接挿入または削除しないでください。該当するRDT内の行は、GeoRasterオブジェクトがラスター・データを使用して作成されたときやGeoRasterの表から削除されたときに、自動的に挿入または削除されます。

ラスター・データのブロック・サイズを選択する際は、次のことを考慮します。

- ラスター・ブロックの最大長は4GBです。4GBを超えるブロック・サイズを指定しないでください。

- 必要なラスター・ブロック・サイズを計算する際は、GeoRasterオブジェクトのcellDepth値を考慮します。

- 適切なブロック・サイズを選択するには、ラスター・ブロック・サイズと、GeoRasterオブジェクトに必要なブロック数のバランスを取ります。サイズの大きいラスター・データの場合、行および列の次元サイズとして最低でも(512,512)をお薦めします。ラスター・ブロックが4 KB (64,64など)に近くなるようなブロック化サイズ値は、4 KBがOracleのBLOBを表外に格納する場合のしきい値であるため、通常は適切ではありません。

オブジェクト表またはリレーショナル・ラスター・データ表の作成方法の詳細は、「ラスター・データ表の作成」を参照してください。

1.4.3 空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト

空白のGeoRasterオブジェクトは、すべてのセルが同じ値を持つ、特別なタイプのGeoRasterオブジェクトです。このオブジェクトのセルは、SDO_RASTERブロックに格納する必要はなく、かわりに、このセル値はメタデータのblankCellValue要素に登録されます。それ以外の点では、空白のGeoRasterオブジェクトは他のGeoRasterオブジェクトと同様に処理されます。空白のGeoRasterオブジェクトを作成するにはSDO_GEOR.createBlankファンクションを使用し、GeoRasterオブジェクトが空白のGeoRasterオブジェクトかどうかを確認するには、SDO_GEOR.isBlankファンクションを使用し、また、空白のGeoRasterオブジェクト内のセルの値を戻すには、SDO_GEOR.getBlankCellValueファンクションを使用します。

空のGeoRasterオブジェクトには、rasterDataTable名およびrasterIDのみが含まれます。空のGeoRasterオブジェクトを作成するには、SDO_GEOR.initファンクションを使用します。新しいGeoRasterオブジェクトを出力する操作の前に、空のGeoRasterオブジェクトを作成する必要があり、これによって、新しいGeoRasterオブジェクトの出力が、初期化済の空のGeoRasterオブジェクトに格納されます。

1.4.4 空のラスター・ブロック

GeoRasterは、容量の大きいモザイク・オブジェクトで記憶領域を節約したり、ラスター処理速度を向上させるために、空のラスター・ブロックをサポートしています。空のラスター・ブロックは、容量の大きいGeoRasterオブジェクトの特定のラスター・ブロックに対して使用可能なラスター・データがない場合に使用します。このようなGeoRasterデータは、特別なスパース・データ型のデータです。空の各ラスター・ブロックのラスター・データ表内にはエントリが存在していますが、BLOBの長さは(空であることを示す)0 (ゼロ)になります。

GeoRaster操作(SDO_GEOR.changeCellValue、SDO_GEOR.changeFormatCopy、SDO_GEOR.generatePyramid、SDO_GEOR.getRasterData、SDO_GEOR.getRasterSubset、SDO_GEOR.mergeLayers、SDO_GEOR.mosaic、SDO_GEOR.scaleCopy、SDO_GEOR.subset、SDO_GEOR.updateRasterなど)が、空のラスター・ブロックを持つソースGeoRasterオブジェクトに適用されると、空のまたは部分的に空の結果のラスター・ブロックが生成される可能性があります。

結果のラスター・ブロックは、そのブロック内のすべてのセルが空のソース・ラスター・ブロックから導出される場合に、空になります。結果のラスター・ブロックは、そのブロック内の一部のセルが空のソース・ラスター・ブロックから導出される場合にのみ、部分的に空になります。空のソース・ラスター・ブロックから導出された部分的に空の結果のラスター・ブロック内のセルは、特定の背景値(bgValuesパラメータで指定されている場合)または0 (ゼロ)(bgValuesパラメータが指定されていない場合)に設定されます。この設定が行われると、部分的に空のラスター・ブロックは通常の空ではないラスター・ブロックと同様になり、操作を終了した後に、結果のGeoRasterオブジェクト内の各ラスター・ブロックは、空または空ではない状態になります。

部分的に空のラスター・ブロックにデータを入力するとラスター・データが永続的に変更されてしまうため、GeoRasterオブジェクトの操作を行う際には一貫性のある背景値を適切に選択する必要があります。背景値としては、GeoRasterメタデータに格納されているNODATA値(存在する場合)を選択することをお薦めしますが、一貫して使用されている値であれば、他の背景値も選択できます。

GeoRasterオブジェクトに空のラスター・ブロックが含まれている場合、SDO_GEOR.generatePyramidの操作中に、部分的に空のラスター・ブロックに背景値または0 (ゼロ)が入力されるため、GeoRasterオブジェクトのピラミッド・データに空のラスター・ブロックが格納されないことがあります。このファンクションをコールしてピラミッドを生成するときは、この項の説明のように一貫性のある背景値を選択するように注意してください。

ビットマップ・マスク(「ビットマップ・マスク」を参照)にも空のラスター・ブロックが含まれる場合があり、欠落しているセルの値は0(ゼロ)を示します。データの入力が必要な場合、欠落しているセルは必ず0 (ゼロ)の値で充填されます。

1.4.5 GeoRasterにおけるクロススキーマのサポート

GeoRaster表と、それに関連するラスター・データ表では、所有者が同じである必要があります。ただし、適切な権限を持つユーザーは、他のスキーマが所有するGeoRaster表と、それに関連するラスター・データ表を作成でき、他のスキーマが所有しているGeoRasterオブジェクトを作成、問合せ、更新および削除することもできます。GeoRasterオブジェクトのクロススキーマ問合せでは、GeoRaster表と、それに関連するラスター・データ表についてSELECTまたはREAD権限を持っている必要があります。GeoRasterオブジェクトのクロススキーマ更新では、GeoRaster表と、それに関連するラスター・データ表についてSELECTまたはREAD権限と、INSERT、UPDATEおよびDELETE権限を持っている必要があります。

「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」で説明するALL_SDO_GEOR_SYSDATAビューには、現行ユーザーがアクセス可能なすべてのGeoRasterオブジェクトに関する情報が含まれています。リストされている各オブジェクトについて、現行ユーザーはGeoRaster表にアクセスできる必要があります。現行ユーザーがラスター・データにアクセスすることも必要な場合、そのユーザーは、関連するラスター・データ表に対する適切な権限も持っている必要があります。

すべてのSDO_GEORサブプログラムは、現行の接続スキーマ以外のスキーマに定義されているGeoRasterオブジェクトに対して機能できます。

1.5 バンド、レイヤーおよびメタデータ

GeoRasterでは、バンドとレイヤーの概念は異なります。バンドは、多次元ラスター・データ・セットの物理次元で、セル空間内の座標の1つです。たとえば、セル空間には行、列およびバンドという座標が存在する場合があります。バンドには、0からn-1の番号が付けられ、nは、最上位のレイヤー番号です。レイヤーは、GeoRasterデータ・モデル内の論理概念です。レイヤーは、バンドにマップされます。通常、1つのレイヤーは1つのバンドに対応し、rowDimensionSizeとcolumnDimensionSizeのサイズの2次元マトリックスで構成されます。レイヤーには、1からnの番号が付けられ、この番号は、layerNumber = bandNumber + 1として算出されます。

GeoRasterオブジェクトは、複数のバンド(複数のレイヤー)を含むことができます。たとえば、リモート・センシング・デバイスからの電磁波データは、特定の数のチャネルにグループ化されます(使用可能なチャネル数は、センシング・デバイスの性能によって異なります)。マルチスペクトル・イメージは複数のチャネルを含み、ハイパースペクトル・イメージは非常に多く(50以上)のチャネルを含みます。すべてのチャネルは、それぞれGeoRasterバンドにマップされ、これらのバンドはレイヤーに関連付けられます。

ラスターGISアプリケーションでは、データ・セットは複数のラスター・レイヤーを含むことができ、各レイヤーは、主題と呼ばれます。たとえば、ラスターに人口密度レイヤーを含めることができ、1平方マイルまたは1平方km当たりの平均住民数に応じて異なるセル値を使用します。その他の主題の例には、平均所得水準、土地利用(農地、宅地、工場用地など)、海抜標高などがあります。ラスターGISの複数の主題は、個別のGeoRasterオブジェクトまたは1つのGeoRasterオブジェクトに格納でき、各主題は、1つのレイヤーとしてモデル化されます。ラスターの主題およびマルチスペクトル・イメージ・チャネルも、それらが同じ次元を持つ場合は、1つのGeoRasterオブジェクトの個別のレイヤーとして格納できます。

図1-5に、複数のレイヤーおよび1つのラスター・データ表を持つイメージを示します。各レイヤーには複数のブロックが含まれ、各ブロックには通常多くのセルが含まれます。各ブロックに対応するエントリが、ラスター・データ表に含まれます。図1-5に示すとおり、GeoRasterではレイヤー番号は1から始まり、バンド番号は0 (ゼロ)から始まることに注意してください。

図1-5 レイヤー、バンドおよびラスター・データ表

GeoRaster XMLメタデータは、オブジェクト・レイヤーおよび複数のレイヤーを参照します。オブジェクト・レイヤーは、GeoRasterオブジェクトが複数のレイヤーを含むか含まないかにかかわらず、そのオブジェクト全体を参照します。GeoRasterオブジェクトが複数のレイヤーを含む場合、各レイヤーはオブジェクト・レイヤーのサブレイヤーであり、1つのバンドを参照します。

各レイヤーには、オプションのメタデータ・セットを関連付けることができます。レイヤーのメタデータ項目は、ユーザー定義のレイヤーID、説明、ビットマップ・マスク、NODATA値および値範囲、スケール変更ファンクション、ビン・ファンクション、統計データ・セット(ヒストグラムなど)、グレースケール参照表、カラーマップ(疑似カラー参照表(PCT))などです。メタデータ項目は、GeoRasterメタデータのXMLスキーマで定義されます(GeoRasterメタデータのXMLスキーマの詳細は、「GeoRasterメタデータのXMLスキーマ」、「SDO_GEOR_HISTOGRAMオブジェクト型」のSDO_GEOR_HISTOGRAMオブジェクト型、「SDO_GEOR_COLORMAPオブジェクト型」のSDO_GEOR_COLORMAPオブジェクト型、「SDO_GEOR_GRAYSCALEオブジェクト型」のSDO_GEOR_GRAYSCALEオブジェクト型および「SDO_GEOR_SRSオブジェクト型」のSDO_GEOR_SRSオブジェクト型を参照してください)。

オブジェクト・レイヤーに関連付けられたメタデータは、GeoRasterオブジェクト全体に適用されます。1つのレイヤーに関連付けられたメタデータは、そのレイヤーのみに適用されます。たとえば、オブジェクト・レイヤーの統計データ・セットは、オブジェクトに含まれるレイヤーの数に関係なく、GeoRasterオブジェクトのすべてのセルに基づいて計算されますが、1つのレイヤーの統計データは、そのレイヤー内のセルのみに基づいて計算されます。

オブジェクト・レイヤーおよび他のレイヤーのメタデータは、<layerInfo>要素を使用してGeoRaster XMLメタデータに格納されますが、カラーマップ表やヒストグラム表など、個別の表に格納される場合もあります。GeoRaster XMLメタデータに格納されたメタデータは、GeoRasterによって管理され、ユーザーはGeoRaster APIを使用して、このメタデータを取得および変更できます。個別の表に格納されたメタデータの場合は、その表の名前をGeoRaster XMLスキーマに登録できます(この場合、アプリケーションで表の名前を取得できます)。ただし、GeoRasterでは、その表の存在または妥当性についてはチェックされず、その表に対して操作を行うこともできません。

インターリーブは、BSQ (順次バンド)、BIL (ライン単位のバンド・インターリーブ)およびBIP (ピクセル単位のバンド・インターリーブ)の3つのタイプがサポートされています。インターリーブは、バンド間またはレイヤー間のみに適用されます。また、GeoRasterオブジェクトの各ブロック内のセルのインターリーブのみに制限されています。これは、GeoRasterが常に、最初にGeoRasterオブジェクトのブロック化を実行し、次にブロックごとにインターリーブを実行することを意味します。ただし、同じGeoRasterオブジェクト内の各ブロックのインターリーブは、同じタイプになります。データをより効率的に処理および使用するために、SDO_GEOR.changeFormatCopyプロシージャをコールしてGeoRasterオブジェクトのコピーのインターリーブ・タイプを変更できます。

1.6 地理参照

GeoRaster空間参照システム(SRS)は、GeoRasterオブジェクトのメタデータ構成要素であり、地理参照に関連する情報が含まれます。地理参照によって、GeoRasterデータのセル座標と実際の地上座標(またはいくつかのローカル座標)が関連付けられます。地理参照を実行すると、地上座標がセル座標に割り当てられ、セル座標が地上座標に割り当てられます。

GeoRasterでは、地理参照は、地理補正、幾何補正またはオルソ補正とは異なります。後者の3つの処理では、ラスター・データのセルのリサンプリングが頻繁に行われ、結果のGeoRasterデータのモデル座標系および次元サイズが異なる場合があります。地理参照を実行すると、セル座標と実際の座標(またはいくつかのローカル座標)が関連付けられます。地理参照を実行するには、適切な数式、十分な数の地上基準点(GCP)座標、またはリモート・センシング・システムからの精密なモデル・データを提供する必要があります。地理参照では、セル座標系とモデル座標系間での座標変換を容易にするために必要な場合を除き、GeoRasterセル・データまたはその他のメタデータは変更されません。

GeoRasterは、地理参照のために関数フィッティング・モデル(「関数フィッティング地理参照モデル」を参照)およびストアド・ファンクション・モデル(「地上基準点(GCP)地理参照モデル」を参照)の両方をサポートします。精密なモデルはサポートされていません。GeoRasterオブジェクトが関数フィッティング・モデルを使用して地理参照される場合は、SRSメタデータのisReferenced値がTRUEになり、参照されない場合、この値はFALSEです。

幾何補正は、水平座標に対して実行でき、これによって、GeoRasterデータ・セットのセルを投影図座標系にマップすることが可能になります。幾何補正後の各セルは、図で使用される単位の均等なサイズになり、モデル座標系(東西次元および南北次元)で配置されます。標高データ(DEM)を使用した幾何補正はオルソ補正と呼ばれ、これは、地形偏移を修正する特別な形式の幾何補正です。GeoRasterオブジェクトが幾何補正されており、関数フィッティング・モデルを使用して地理参照される場合は、そのメタデータのisRectified値がTRUEになり、それ以外の場合、この値はFALSEです。GeoRasterオブジェクトがオルソ補正されており、関数フィッティング・モデルを使用して地理参照される場合は、そのメタデータのisOrthoRectified値がTRUEになり、それ以外の場合、この値はFALSEです。

GeoRasterオブジェクトの地理参照の詳細は、「GeoRasterオブジェクトの地理参照」および「高度な地理参照」を参照してください。GeoRasterオブジェクトを幾何補正およびオルソ補正するには、「イメージの幾何補正」および「イメージのオルソ補正」を参照してください。

1.6.1 関数フィッティング地理参照モデル

GeoRasterは、GeoRasterメタデータに格納される汎用関数フィッティング地理参照モデルを定義します。これには、広範囲に使用される複数のジオメトリ・モデルが含まれ、このモデルを使用すると、幾何補正されていないGeoRasterオブジェクトを地理参照できるようになります。

このモデルでは、2次元または3次元の地上座標と2次元のセル座標との間の変換、または2次元のセル座標と2次元または3次元の地上座標との間の変換をサポートします。モデルを説明する等式を次に示します。

rn = p(Xn,Yn,Zn) / q(Xn,Yn,Zn)

cn = r(Xn,Yn,Zn) / s(Xn,Yn,Zn)

等式の各変数の意味は、次のとおりです。

- rnは、ラスター内のセルの正規化された行索引です。

- cnは、ラスター内のセルの正規化された列索引です。

- Xn , Yn , Znは、正規化された地上座標値です。

多項式p(Xn , Yn , Zn)、q(Xn , Yn , Zn)、r(Xn , Yn , Zn)およびs(Xn , Yn , Zn)は、図1-6に示す形式で指定されます。

図1-6 地理参照に使用される多項式

図1-6に示す多項式の形式では、ijkは多項式の係数です。

4つの多項式はそれぞれ異なることがあります。また、各多項式は次の変数によって個別に説明されます。

- pTypeは、多項式のタイプ(1または2)です。

- nVarsは、変数の合計数(地上座標の次元0、2または3)です。

- orderは、各変数の累乗の最大次数または多項式の各項の累乗の最大合計次数(最大で5)です。

- nCoefficientsは、係数の合計数です(前の3つの数値から導出する必要があります)。

pTypeは、多項式の最大合計次数を意味し、多項式の項の合計数に影響を与えます。pType = 1は、最大次数が、多項式の各項に含まれるすべての変数の最大合計次数であることを示します。pType = 2は、最大次数が、多項式のすべての項に含まれる各変数の最大次数であることを示します。nVarsは、地上座標系が2D (X, Y)または3D (X,Y,Z)のいずれかであるかを示します。セル座標系は常に2Dです。たとえば、これは2次元座標間のアフィン変換と、3次元から2次元座標へのDLTモデルおよびRPCモデルをサポートしています。

多項式の項およびその係数の合計数および順番は、次のループ疑似コードの論理によって決定されます。

n = 0;
For (k = 0; k <= order; k++)
For (j = 0; j <= order; j++)
For (i = 0; i <= order; i++)
{
if (pType == 1 & (i+j+k) > order )
break;
polynomialCoefficients[n]=COEF[ijk];
n++;
}

前述の疑似コードでは、iの次数、jの次数、およびkはZの次数と想定し、また、nはGeoRasterメタデータ要素<polynomialCoefficients>内の係数の指数と想定します。したがって、COEF[ijk]は分子pまたは分母qの項x(i)y(j)z(k)の係数であり、polynomialCoefficients[n]はXMLメタデータ内の<polynomialCoefficients>要素(倍精度のリスト型)のn番目の倍精度数であり、COEF[ijk]はpolynomialCoefficients[n]と1対1で一致します。

実際の値ではない正規化された値は、計算時のエラーの発生を最小限にするために、そのデータ自体によって、格納および使用される場合とされない場合があります。行値と列値(row,column)および正規化された行値と列値(rn, cn)の間の変換、およびモデル座標(x,y,z)と正規化されたモデル座標(Xn , Yn , Zn)の間の変換は、次の変換(オフセット)とスケールを正規化したセットにより定義されます。

- rn = (row - rowOff) / rowScale

- cn = (column - columnOff) / columnScale

- Xn = (x - xOff) / xScale

- Yn = (y - yOff) / yScale

- Zn = (z - zOff) / zScale

係数、スケールおよびオフセットはGeoRaster SRSメタデータに格納されます(「SDO_GEOR_SRSオブジェクト型」を参照)。

この関数フィッティング・モデルは汎用モデルです。これには、アフィン変換、二次多項式、三次多項式、DLT(Direct Linear Transformation)、二次有理、RPC(Rational Polynomial CoefficientsまたはRapid Positioning Coefficients)などの特定のジオメトリ・モデルが含まれます。これらの標準モデルの係数は、GeoRasterに格納するために、この項で説明する順序に変換されます。

SDO_GEOR.setSRSプロシージャを使用すると、GeoRasterオブジェクトの空間参照情報を直接設定でき、SDO_GEOR.getGeoreferenceTypeファンクションを使用すると、GeoRasterオブジェクトの特定の地理参照モデル・タイプを検出できます。

最も単純な地理参照モデル・タイプは、次に示す特別なアフィン変換です。

row    = a + c * y
column = d - c * x

前述の計算式では、cが0 (ゼロ)以外の値である場合、ラスター・データは幾何補正されているとみなされ、そのメタデータ内のisRectified値がTRUEになります。

アフィン変換では、pTypeは1または2のいずれかです。pおよびr多項式の場合、nVarsは2、orderは1、nCoefficientsは3で、qおよびs多項式の場合、nVarsは0、orderは0、nCoefficientsは1です。

二次多項式モデルでは、pTypeは1です。pおよびr多項式の場合、nVarsは2、orderは2、nCoefficientsは6で、qおよびs多項式の場合、nVarsは0、orderは0、nCoefficientsは1です。

三次多項式モデルでは、pTypeは1です。pおよびr多項式の場合、nVarsは2、orderは3、nCoefficientsは10で、qおよびs多項式の場合、nVarsは0、orderは0、nCoefficientsは1です。

DLTモデルでは、pTypeは1または2のいずれかです。すべての多項式について、nVarsは3、orderは1、nCoefficientsは4です。また、qおよびs多項式は同一である必要があります。

二次有理モデルでは、pTypeは1です。すべての多項式について、nVarsは3、orderは2、nCoefficientsは10です。

RPCモデルでは、pTypeは1です。すべての多項式について、nVarsは3、orderは3、nCoefficientsは20です。

DLT、RPCおよびその他のジオメトリ・モデルの詳細は、サード・パーティの関連するドキュメントを参照してください。

1.6.2 地上基準点(GCP)地理参照モデル

GeoRasterは、地上基準点(GCP)記憶域および地理参照をサポートしています。地上基準点(GCP)または単なる基準点は、一部の参照座標系のその座標(X,YまたはX,Y,Z)とGeoRasterオブジェクトのセル空間内の対応する位置(行,列)がわかる点です。参照座標系には、座標系が不明な場合のSRID 999999など、任意の有効なOracle Spatial and Graph座標系を指定できます。GCPのコレクションおよびそれに関連するジオメトリ・モデル(関数フィッティング・メソッド)は、GeoRasterではストアド・ファンクション地理参照モデルとも呼ばれます。

GeoRaster SRSに格納されているか、パラメータで指定されているGCPを使用して、関数フィッティング・モデルを生成することができます。詳細は、SDO_GEOR.georeferenceファンクションを参照してください。

GCPを選択するためのガイドラインは、次のとおりです。

- 点は、GeoRasterオブジェクトと参照座標系の両方で簡単に識別できる必要があります。

- 点は、結果が非対称にならないようにするために、GeoRasterオブジェクトの対象となっている領域内で均等に分散される必要があります。

- 結果が安定するように、点は一列に配置することはできません。

GCPまたはストアド・ファンクションは、SDO_GEOR_GCPオブジェクト型(「SDO_GEOR_GCPオブジェクト型」を参照)、SDO_GEOR_GCP_ COLLECTIONコレクション型(「SDO_GEOR_GCP_ COLLECTIONコレクション型」を参照)およびSDO_GEOR_GCPGEOREFTYPEオブジェクト型(「SDO_GEOR_GCPGEOREFTYPEオブジェクト型」を参照)を使用して指定されます。

GCPを使用して地理参照するには、ジオメトリ・モデル(つまり、GeoRasterオブジェクトのセル空間と参照座標系間の関係を数学的にモデル化する方法)も選択する必要があります。GeoRasterでは、GCP地理参照で次のジオメトリ・モデルがサポートされています: アフィン(デフォルト・モデル)、二次多項式、三次多項式、DLT、二次有理およびRPC。アフィン、二次多項式および三次多項式は、多項式の順番がそれぞれ1、2、3である2次元の多項式モデルであるのに対し、DLT、二次有理およびRPCは、多項式の順番がそれぞれ1、2、3である3次元の有理多項式モデルです。すべての多項式は多項式のタイプpType=1を持ちます。(地理参照モデル・タイプの詳細は、「関数フィッティング地理参照モデル」を参照してください。)

GCPを使用した地理参照では、GCPのセル座標およびモデル座標が多項式または有理多項式モデルの計算式で使用され、連立一次方程式が形成されます。計算式に加重は使用されません(つまり、すべての点で加重は同一の1.0です)。連立一次方程式は、指定した基準点に最適なモデルの係数を生成する最小2乗法によって解かれます。基準点のタイプを使用したGCPのみがソリューションの計算に含まれますが、チェック・ポイントのタイプを使用したGCPは解決されたモデルの位置精度の確認に使用されます。ソリューションの精度は、ソリューションに含まれるそれらの基準点のセル座標の残差に基づいて評価されます。

異なるジオメトリ・モデルには、異なるモデル座標の次元および異なるGCPの最小数が必要です。2次元のジオメトリ・モデルでは、モデル座標は2D (X,Y)、3次元のジオメトリ・モデルでは、モデル座標は3D (X, Y, Z)である必要があります。ジオメトリ・モデルに必要なGCPの最小数は、アフィン: 3、二次多項式: 6、三次多項式: 10、DLT: 7、二次有理: 19、RPC: 39です。ただし、地理参照を行うには、通常、GCPの最小数より大きい値を使用する必要があります。

詳細は、「高度な地理参照」を参照してください。

1.6.3 セル座標とモデル座標の変換

GeoRasterは、関数フィッティング地理参照モデルを使用して、地上座標をセル座標に割り当て、セル座標を地上座標に割り当てます。特殊なケースとして、セルの整数座標(セル・マトリックス内のセルの配列索引)がモデル座標に変換されます(これにより、モデル空間内の点の正確な場所を特定します)。この点(モデル座標)は、セルによって表されるモデル空間内の領域の左上角または中心のいずれかになります。

同様に、モデル座標は地理参照を通してセル座標に変換できます。ただし、関数フィッティング地理参照モデルを直接変換した結果のセル座標は、ほとんどが浮動小数点数です。(modelCoordinateLocation要素で指定される)セル空間座標系のタイプは、浮動小数点座標が参照するセルを決定します(「GeoRasterデータ・モデル」を参照)。GeoRasterは、浮動小数点(サブセル)セル座標および整数セル座標の両方を、そのAPIのすべての部分においてサポートします。

セル座標およびモデル座標の変換は、GeoRasterの空間参照システム(SRS)の関数フィッティング・モデルに基づいて行われます。GeoRaster SRSを使用する変換の前後では、セルの座標の値(行,列)はGeoRasterのセル空間を基準としており、ラスター・データ自体の左上角を必ずしも基準としません。ULTCoordinateでは、セル空間の基点座標とは異なる任意の座標(行および列の値)を指定できます。つまり、左上角の(行,列)座標は、(0,0)である必要はありません。

多くのイメージ・ファイル形式と同様に、ラスター・データの左上角を独自のセル空間の基点(0, 0)として定義するアプリケーションでは、GeoRaster ULTCoordinate (row0, column0)が(0, 0)ではない場合、GeoRaster SRSから導出される(行,列)を、この基点が基準となるように変換する必要があります。この変換では、次の計算式に示すように、GeoRaster ULTCoordinateを考慮する必要があります。

row = row0 + m
column = column0 + n

計算式の各変数の意味は、次のとおりです。

- rowは、GeoRasterセル空間の基点を基準としたセルの行索引です。

- columnは、GeoRasterセル空間の基点を基準としたセルの列索引です。

- row0は、GeoRasterセル空間の基点を基準としたULTCoordinateの行索引です。

- column0は、GeoRasterセル空間の基点を基準としたULTCoordinateの列索引です。

- mは、ULTCoordinateを基準としたセルの行索引です。つまり、先頭行を0から開始した場合のm番目の行です。

- nは、ULTCoordinateを基準としたセルの列索引です。つまり、先頭列を0から開始した場合のn番目の列です。

ほとんどのアプリケーションでは、ULTCoordinateと、セル空間の基点は同じ(つまりrow0 = 0およびcolumn0 = 0)になります。この場合、m = rowおよびn = columnとなります。

1.7 リサンプリングおよび内挿

イメージおよびラスターの様々な変換と操作には、ピクセルまたはセルのリサンプリングと内挿が伴います。GeoRasterでは、次の標準的なリサンプリング・メソッドと内挿方法がサポートされます。

- 最近傍(NN)

- 周囲の4つのセルを使用する共1次内挿法(BILINEAR)

- 周囲の9つのセルを使用する共2次内挿法(BIQUADRATIC)

- 周囲の16個のセルを使用する3次畳込み内挿法(CUBIC)

- 周囲の4つのセルを使用する平均法(AVERAGE4)

- 周囲の16のセルを使用する平均法(AVERAGE16)

- OTHER

これらのリサンプリング・タイプのキーワードは、GeoRaster XMLメタデータ・スキーマのresamplingType要素定義で定義されます(「GeoRasterメタデータのXMLスキーマ」を参照)。OTHER以外のキーワードは、次のような複数のサブプログラムで使用できます。

- SDO_GEOR.generatePyramid

- SDO_GEOR.scaleCopy

- SDO_GEOR.reproject

- SDO_GEOR.rectify

- SDO_GEOR_AGGR.append

- SDO_GEOR_AGGR.getMosaicSubset

- SDO_GEOR_AGGR.mosaicSubset

リサンプリング・タイプのOTHERは、GeoRasterオブジェクトのピラミッドがファイルなどの外部ソースから生成またはインポートされる場合に、不明な(または外部の)リサンプリング・タイプを示すためにのみ使用されます。

ラスター・データでは、空間全体で連続的に変化する現実の現象が処理されます。このデータは、通常、グリッド内挿(セル間またはセル内の空間位置に値を内挿する方法)に関連付けられます。GeoRasterでは、SDO_GEOR.evaluateDoubleがグリッド内挿ファンクションです。これは、内挿方法としてリサンプリングのキーワードと同じキーワードを使用します。

1.8 ピラミッド

ピラミッドは、ラスター・イメージまたはラスター・データを様々なサイズおよび解像度で表す、GeoRasterオブジェクトのサブオブジェクトです。サイズは、通常、アプリケーションでのイメージの取得および表示(特にWebを経由する場合)にかかる時間に影響します。つまり、イメージ・サイズが小さいほど表示速度が速くなり、詳細な解像度が必要ない場合は(ユーザーが十分にズーム・アウトしている場合など)、小さいイメージの表示品質で十分です。

ピラミッド・レベルは、必要な記憶域が小さくなる低解像度イメージ、または必要な記憶域が大きくなる高解像度イメージを表します。(GeoRasterでは、低解像度のピラミッドのみがサポートされています。)値が0 (ゼロ)のピラミッド・レベルは、元のラスター・データを示します(この場合、イメージの解像度は低下せず、必要な記憶域は変化しません)。値が0 (ゼロ)より大きくなるほど、イメージの解像度のレベルが低くなり、必要な記憶域が小さくなります。

ピラミッド・タイプは、ピラミッドのタイプを表します。次のいずれかの値を指定できます。

- DECREASE: ピラミッド・レベルが高くなるほどピラミッド・サイズが小さくなります。

- NONE: GeoRasterオブジェクトに関連付けられたピラミッドが存在しません。

図1-7に、ピラミッド・タイプをDECREASEに指定した場合のピラミッド・レベルの概要を示します。この図では、ピラミッド・レベル番号が大きくなるほどファイル・サイズが小さくなり、イメージの表現に使用されるピクセルが減少するために解像度も低くなることを示しています。

図1-7 ピラミッド・レベル

各レベルのピラミッド・イメージのサイズは、次の計算式によって、元のイメージ・サイズとピラミッド・レベルに基づいて決定されます。

r(n) = (int)(r(0) / 2^n)
c(n) = (int)(c(0) / 2^n)

計算式の各変数の意味は、次のとおりです。

- r(0)およびc(0): 元の行次元および列次元のサイズです。

- r(n)およびc(n): ピラミッド・レベルn の行次元および列次元のサイズです。

- int: 任意の数値を、その数値未満の最も近い整数値に丸めます。

- 2^n: 2のn乗を表します。

最上位レベルの全体像(最上位レベルの最小ピラミッド)では、行次元と列次元のいずれか小さい方のサイズは1になります。最も低い解像度のピラミッド・レベルは、このサイズによって決まり、(int)(log2(a))という式で求められます。

式の各変数の意味は、次のとおりです。

- log2: 底が2の対数関数です。

- a: 元の次元サイズの行または列の小さい方です。

ピラミッド内のセル・アドレッシングでは、元のラスター・データに定義されているセル・アドレッシングと同じタイプを使用します(「GeoRasterデータ・モデル」を参照)。各ピラミッド・レベルには独自のセル空間がありますが、ピラミッド・レベルのすべてのセル空間には、元のレベル(レベル・ゼロ)のセル座標系と同じタイプのセル座標系(中心または左上を基準とするセル座標系)があります。セルは均等なサイズの四角形で、単位は1セルです。各ピラミッド・レベルの左上角のセルにあるULTCoordinateは、メタデータに登録されている、元のラスター・データのULTCoordinateと同じです。このセル空間の定義とピラミッド・レベルに基づいて、1つのピラミッド・レベルのセル座標を別の座標に変換できます。

GeoRasterメタデータにはピラミッド・レベルごとに定義されている個々のSRSはありません。ピラミッド内のセルのモデル座標を導出するには、最初に別のピラミッド・レベルのセル座標をピラミッド・レベル・ゼロのセル座標に変換してから、GeoRaster SRSを適用します。逆に、ピラミッドの地上点のセル座標を導出するには、ピラミッド・レベル・ゼロのこれらの地上点のセル座標をGeoRaster SRSを使用して最初に取得してから、特定のピラミッド・レベルに変換します。GeoRasterがピラミッドのサブセル・アドレッシングを、そのAPIのすべての部分においてサポートします。

ピラミッドは、GeoRasterオブジェクトと同じラスター・データ表に格納されます。ラスター・データ表内のpyramidLevel属性は、特定のピラミッド・レベルに関連付けられたすべてのブロックを示します。通常、各ピラミッド・レベルでのブロック化方法は、(GeoRasterオブジェクト・メタデータに定義されている)元のレベルのブロック化方法と同じですが、次の例外があります。

- 元のGeoRasterオブジェクトがブロック化されておらず、元のセル・データがオブジェクトと同じサイズの1つのブロック(BLOB)に格納されている場合、各ピラミッド・レベルのセル・データは1つのブロックに格納され、各ピラミッド・レベルの実際のイメージと同じサイズになります。

- 元のGeoRasterオブジェクトがブロック化されている場合(1つのブロックとしてブロック化されている場合も)、各ピラミッド・レベルのセル・データは元のレベルのデータと同じ方法でブロック化され、各ブロックは、ピラミッド・レベルの実際のイメージの最大次元サイズがブロック・サイズより大きい場合、個別のBLOBオブジェクトに格納されます。ただし、生成されるピラミッド・レベルの解像度がより低くなる場合(ピラミッド・レベルの行次元と列次元の両方のサイズが、それぞれ行ブロック・サイズと列ブロック・サイズの半分以下である場合)、そのようなピラミッド・レベルのセル・データは1つのBLOBオブジェクトに格納され、そのピラミッド・レベルの実際のイメージと同じサイズになります。

GeoRasterオブジェクトのピラミッドを生成するか、またはGeoRasterオブジェクトをスケール変更する際は、セル・データのリサンプリングが必要になります。GeoRasterは、標準のリサンプリング・メソッド(「リサンプリングおよび内挿」を参照)を提供します。

GeoRasterでのピラミッドのサポートに関連するサブプログラム(「SDO_GEORパッケージのリファレンス」を参照)を次に示します。

- SDO_GEOR.generatePyramid: GeoRasterオブジェクトのピラミッド・データを生成します。

- SDO_GEOR.deletePyramid: GeoRasterオブジェクトのピラミッド・データを削除します。

- SDO_GEOR.getPyramidMaxLevel: GeoRasterオブジェクトの最上位のピラミッド・レベルを戻します。

- SDO_GEOR.getPyramidType: GeoRasterオブジェクトのピラミッド・タイプを戻します。

1.9 ビットマップ・マスク

ビットマップ・マスクとは、深度が1ビットの特別な矩形ラスター・グリッドであり、各ピクセルの値は0または1です。ビットマップ・マスクは、別のイメージ内にある変則的な形をした領域を定義するために使用します。1ビットは領域の内部を定義し、0ビットは領域の外部を定義します。

ビットマップ・マスクは、空白ではないGeoRasterオブジェクトにアタッチしたり、空白ではないGeoRasterオブジェクトから削除することができます。空白ではないGeoRasterオブジェクトの各バンドまたは各レイヤーでも、それぞれに関連付けられた個別のビットマップ・マスクを持つことができます。したがって、空白ではないGeoRasterオブジェクトに関連付けられたビットマップ・マスクは、最大でn+1個存在します(この場合のnは、GeoRasterオブジェクトのサブレイヤーの合計数です)。ビットマップ・マスクは、個別に編集または更新できます。

ビットマップ・マスクがオブジェクト・レイヤーに関連付けられている場合は、そのビットマップ・マスクがすべてのサブレイヤーのデフォルトのビットマップ・マスクになります。サブレイヤーに関連付けられたビットマップ・マスクは、オブジェクト・レイヤーに関連付けられたデフォルトのビットマップ・マスクをオーバーライドします。

ラスター・レイヤーにアタッチされたビットマップ・マスクは、イメージ内の他のラスター・レイヤーと同じ行および列の番号を持つ必要があり、また、正確に同じ領域を覆っている必要があります。このようなビットマップ・マスクでは、GeoRasterオブジェクト自体のULTCoordinateおよびSRSと同じULTCoordinateおよびSRSを使用します。論理的には、これはラスター・イメージ自体の必須情報ではなく補足情報ですが、物理的には、GeoRasterオブジェクト内に格納されます。

ビットマップ・マスクの物理記憶域は、GeoRasterオブジェクトのラスター・データの物理記憶域と似ています。ビットマップ・マスクは、関連付けられたGeoRasterオブジェクトのラスター・データ表に、同じブロック属性を使用して格納されます。ただし、ビットマップ・マスク・エントリのbandBlockNumberは常に、ビットマップ・マスクが関連付けられているレイヤー番号に設定されます。バンドとレイヤーの間の関係の詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。

pyramidLevel値は、0ではなく-99999の値から開始され、ピラミッド・レベルが1つ上がるごとに1ずつ増えます。ピラミッドは、通常のラスター・データのピラミッドとともにビットマップ・マスク上に作成され、ビットマップ・マスクは、SDO_GEOR.scaleCopyプロシージャを使用して、関連付けられたGeoRasterオブジェクトとともにスケール変更できますが、ビットマップ・マスクに使用するリサンプリング・メソッドは常にNN (Nearest Neighbor)となります。ビットマップ・マスクは、関連付けられたGeoRasterオブジェクトが圧縮または解凍されると圧縮または解凍され、また、ビットマップ・マスクは常にDEFLATEメソッド(可逆圧縮)で圧縮されます。ビットマップ・マスクはスパースとなる場合があり、その場合は空のブロックが格納され、欠落しているセルの値は0 (ゼロ)を示します。

アプリケーションでは、通常、ビットマップ・マスクを次のいずれか、または両方の方法で使用します。

- 透過マスクとして使用すると、ビットマップ・マスクは、表示アプリケーションによってイメージの表示部分を決定するために使用されます。たとえば、ビットマップ・マスクの1ビットに対応するメイン・イメージ・ピクセルは画面またはプリンタに出力されますが、ビットマップ・マスクの0ビットに対応するメイン・イメージ・ピクセルは表示および印刷されません。また、イメージのアルファ・チャネルとして使用できるため、0および1の値は様々な透明度値にマップされ表示されます。

- GISアプリケーションでNODATAマスクとして使用すると、ビットマップ・マスクは、マスクの外部(0ビット)に対応するピクセルをNODATAとして処理することをGISアプリケーションに認識させることができます。そのために、ビットマップ・マスクを特別なタイプのNODATAとしてGeoRasterメタデータに登録できます(「NODATA値および値の範囲」を参照)。

PL/SQLサブプログラムには、ビットマップ・マスクに対する操作を実行するものがあります。操作には、ビットマップ・マスクのGeoRasterオブジェクトへのアタッチ、既存のビットマップ・マスクの置換、ビットマップ・マスクの削除、GeoRasterオブジェクトが特定のビットマップ・マスクを持つかどうかのチェック、ビットマップ・マスク全体、ビットマップ・マスクのサブセットまたはビットマップ・マスクの単一のセル値の抽出などがあります。SDO_GEOR.maskプロシージャを使用して、データベース内でマスキング操作を適用することもできます。イメージ・マスキングの詳細は、「イメージのマスキング」を参照してください。

1.10 NODATA値および値の範囲

NODATA値は、不明または無効な値を持つセルで使用されます。個別のラスター・レイヤーごとに、ラスター・レイヤーに関連付けられた複数のNODATA値またはNODATA値の範囲、あるいはその両方を持つことができます。GeoRasterメタデータ・スキーマには、各ラスター・レイヤーのNODATA情報が格納されます。具体的には、オブジェクト・レイヤーに関連付けられたNODATA値および値の範囲が他のサブレイヤーに適用されます。サブレイヤーのNODATA値および値の範囲は、オブジェクト・レイヤーのNODATA値および値の範囲と、サブレイヤーに存在するNODATAメタデータを結合したものです。サブレイヤーからNODATA値または値の範囲を削除しても、オブジェクト・レイヤーに存在する値または値の範囲は削除できません。

NODATA値および値の範囲は、リサンプリング中(スケール変更によるピラミッドの生成時、イメージの生成時など)に考慮されます。デフォルトで、NODATAセルは、拡大や縮小を回避するために通常のセルとして処理されます。ただし、NODATA値または値の範囲が考慮対象として選択され、リサンプリング・メソッドがBILINEAR、BIQUADRATIC、CUBIC、AVERAGE4またはAVERAGE16の場合は、リサンプリングの計算に含まれるセル値がNODATA値であると、リサンプリングの結果もNODATA値となります。結果のNODATA値は、各リサンプリング・ウィンドウ内の最初のNODATA値です(セル値は左上角から右下角に向かって行ごとに順序付けされます)。

リリース11gより前からのGeoRasterオブジェクトがNODATAメタデータをラスターの記述に格納している場合、そのメタデータは下位互換性を確保するため現在のリリースでも有効です。古いNODATA値はオブジェクト全体の値とみなされます。この値は、オブジェクト・レイヤーに対してSDO_GEOR.addNODATAプロシージャをコールするとオブジェクト・レイヤーに移動され、SDO_GEOR.deleteNODATAプロシージャをコールすると古いNODATA値を削除せずにオブジェクト・レイヤーに移動されます。

NODATA値または値の範囲はSDO_RANGE_ARRAY型を使用して記述され、VARRAY(1048576) OF SDO_RANGEとして定義されます。SDO_RANGE型は、下限値と上限値を指定し、(LB NUMBER, UB NUMBER)として定義されます。

- SDO_RANGE定義で単一の数値を指定するには、LBに数値を、UBにNULLを指定します。次の例では、NODATA値として2を指定します。SDO_RANGE_ARRAY(SDO_RANGE(2,NULL))

- SDO_RANGE(LB, UB)。ここで、LB=UBは、SDO_RANGE(LB, NULL)と同じであるとみなされます。

- 実際のNODATA値の範囲(UBがNULL以外の値で、LBがUBより小さい値)には、下限が含まれ、上限は含まれません。

- 複数のNODATA値の範囲および個別のNODATA値を指定できます。次の例では、1つの単一のNODATA値(5)と、2つのNODATA値の範囲(1,3)および(7,8)を指定します。SDO_RANGE_ARRAY(SDO_RANGE(1,3), SDO_RANGE(5,NULL), SDO_RANGE(7,8))

いくつかのPL/SQLサブプログラムは、GeoRasterレイヤーに関連付けられたNODATA値および値の範囲に対して追加、削除、問合せなどの操作を実行します。

GeoRasterでは、ビットマップ・マスクは特別なタイプのNODATAとして処理されます(1つ以上の不規則な領域を指定するNODATAマスクはNODATA領域として処理されます)。この場合、ビットマップ・マスクはlayerInfoメタデータのbitmapMask要素で識別されるだけではなく、layerInfoメタデータのNODATA要素に登録されます。ただし、ビットマップ・マスクのNODATA値は、リサンプリング処理および統計分析中は考慮されません。

1.11 圧縮と解凍

GeoRasterには、GeoRasterオブジェクトに必要な記憶領域を縮小するために、JPEG (JPEG-F)およびDEFLATEの2つのネイティブの圧縮タイプがあります。どちらのタイプも、それぞれのブロックは明確なラスター表現として個別に圧縮されます。圧縮されたGeoRasterオブジェクトを解凍すると、各ブロックは個別に解凍されます。

解凍された(圧縮されていない)GeoRasterオブジェクトで実行できるすべてのGeoRaster操作は、圧縮されたGeoRasterオブジェクトでも実行できます。GeoRasterでなんらかの操作が行われる場合、ソースGeoRasterオブジェクトが圧縮されていれば、必要に応じてそのソース・オブジェクトのブロックが内部的に解凍されてから、指定された操作が実行され、次に、その操作によって得られたオブジェクトがcompressionキーワードで指定された形式で圧縮されるか、または、compressionキーワードが指定されていない場合は、ソース・オブジェクトの圧縮形式で圧縮されます。このため、特定の操作では、その実行前に圧縮されているGeoRasterオブジェクトを解凍する必要はありませんが、実行前にオブジェクトを解凍しておくと、全体のパフォーマンスが向上する操作もあります。

データベース・ユーザーがGeoRasterオブジェクトを圧縮または解凍する前には、データベースがデフォルトの一時表領域で作成されていること、あるいはユーザーが一時表領域または表領域グループに割り当てられていることを確認してください。これ以外の場合、デフォルトでは、一時表領域としてSYSTEM表領域が使用され、GeoRasterの操作で生成された大容量の一時LOBデータがSYSTEM表領域に格納されるため、データベース全体のパフォーマンスに影響を与える可能性があります。一時表領域の管理については、『Oracle Database管理者ガイド』を参照してください。

GeoRasterオブジェクトの圧縮または解凍を指定するには、storageParamパラメータのcompressionキーワードを使用します(「記憶域パラメータ」を参照)。compressionキーワードは、SDO_GEOR.changeFormatCopy、SDO_GEOR.getRasterData、SDO_GEOR.getRasterSubset、SDO_GEOR.importFrom、SDO_GEOR.mosaic、SDO_GEOR.scaleCopy、SDO_GEOR.subsetなど、様々なGeoRasterプロシージャのstorageParamパラメータで使用できます。(GeoRasterオブジェクトを圧縮および解凍するための個別のプロシージャはありません。)

ソースGeoRasterオブジェクトが空白の場合は、SDO_GEOR.getRasterSubsetファンクションおよびSDO_GEOR.getRasterDataファンクションを除き、compressionキーワードは無視されます。つまり、空白のGeoRasterオブジェクトが圧縮されることはなく、メタデータの圧縮タイプは常にNONEになります。(空白のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)

この項では、次の内容について説明します。

- GeoRasterオブジェクトのJPEG圧縮(「GeoRasterオブジェクトのJPEG圧縮」)

- GeoRasterオブジェクトのDEFLATE圧縮(「GeoRasterオブジェクトのDEFLATE圧縮」)

- GeoRasterオブジェクトの解凍(「GeoRasterオブジェクトの解凍」)

- GeoRasterオブジェクトの圧縮に使用するサード・パーティのプラグイン(「圧縮に使用するサード・パーティのプラグイン」)

- 拡張LOB圧縮(拡張LOB圧縮)

1.11.1 GeoRasterオブジェクトのJPEG圧縮

JPEG圧縮がサポートされているのは、cellDepth値が8BIT_Uで、ブロック当たりのバンド数が4以下(ただし、各ブロックでのバンド数が1、3または4であること)のGeoRasterオブジェクトのみです。(ブロック当たりのバンド数が2は、JPEG圧縮ではサポートされません。)バンド数が4より大きいGeoRasterオブジェクトの場合は、GeoRasterオブジェクトを1、3または4バンドのバンド・ブロック・サイズで再ブロック化するとJPEG圧縮できます。JPEG圧縮は、カラーマップを含むGeoRasterオブジェクトではサポートされていません。

JPEG圧縮は、あらゆるサイズのGeoRasterオブジェクトに対してサポートされていますが、GeoRasterオブジェクトの各ブロックの合計サイズ(columnsPerBlock * rowsPerBlock * bandsPerBlock * cellDepth / 8)は、50MB以下である必要があります。容量の大きいGeoRasterオブジェクトに対しては、SDO_GEOR.changeFormatCopyプロシージャをコールし、50MB未満のブロックになるようにGeoRasterオブジェクトをブロック化してからGeoRasterオブジェクトを圧縮するか、またはSDO_GEOR.changeFormatCopyプロシージャへの同じコールの中で、ブロック化および圧縮を実行できます。

GeoRasterでは、フルフォーマット基準のJPEG形式でオブジェクトを圧縮するJPEG-F圧縮モードがサポートされます。

JPEG-F圧縮については、CCITT Rec.T.81 JPEG Specification (またはICO/IEC IS 10918-1)を参照してください。GeoRasterは、CCITT Rec.T.81 JPEG Specificationの表K.2の量子化表と、(ハフマン表として)この仕様の表K.4およびK.6の標準クロミナンス表を使用します。量子化表は、圧縮プロセスでこの表がデータに適用される前に、圧縮品質によってスケール変更されます。

JPEG-Fは、不可逆圧縮形式です。storageParamパラメータにqualityキーワードを指定して、劣化の程度を制御できます。qualityキーワードには、0から100の整数値を指定できます。値に0 (ゼロ)を指定すると圧縮率は最高になりますが、データの消失が大きくなります。値に75 (GeoRasterのデフォルト)を指定すると、高圧縮率ではありますが、ほとんどの人が品質には劣化がないと感じる程度の画像になります。値に100を指定すると、圧縮率は最低になりますが品質は最高になります。

1.11.1.1 非推奨となったJPEG-Bサポート

簡易基準のJPEG形式でオブジェクトを圧縮するJPEG-B圧縮に対するGeoRasterのサポートは、非推奨となったため、将来のリリースではサポートされません。JPEG-BがGeoRasterサブプログラムのパラメータに指定されている場合、かわりにJPEG-F圧縮が使用されます。JPEG-Fサポートを使用することをお薦めします。

1.11.2 GeoRasterオブジェクトのDEFLATE圧縮

DEFLATE圧縮は、Deflate Compressed Data Format Specification (Network Working Group RFC 1951)に従ってオブジェクトを圧縮し、圧縮したデータをZLIB形式で格納します。詳細は、ZLIB Compressed Data Format Specification (Network Working Group RFC 1950)を参照してください。ZLIBのヘッダーおよびチェックサムのフィールドは、圧縮されたGeoRasterオブジェクトに含まれます。

DEFLATE圧縮は、あらゆるサイズのGeoRasterオブジェクトに対してサポートされていますが、GeoRasterオブジェクトの各ブロックの合計サイズ(columnsPerBlock * rowsPerBlock * bandsPerBlock * cellDepth / 8)は、1GB以下である必要があります。容量の大きいGeoRasterオブジェクトに対しては、SDO_GEOR.changeFormatCopyプロシージャをコールし、1GB未満のブロックになるようにGeoRasterオブジェクトをブロック化してからGeoRasterオブジェクトを圧縮するか、またはSDO_GEOR.changeFormatCopyプロシージャへの同じコールの中で、ブロック化および圧縮を実行できます。

DEFLATE圧縮は可逆圧縮であるため、圧縮品質は適用されません。圧縮品質を指定しても無視されます。

1.11.3 GeoRasterオブジェクトの解凍

storageParamパラメータでcompression=NONEを指定すると、圧縮されたGeoRasterオブジェクトを解凍できます。JPEG-F圧縮の場合、記憶域パラメータとして圧縮品質を指定しないでください。

PL/SQL、Oracle Call Interface (OCI)などの既存のApplication Programming Interface (API)を使用すると、圧縮されたGeoRasterオブジェクトを、データベースの外(つまりクライアント側)で解凍して、GeoRasterオブジェクトのブロックに対応するBLOBオブジェクトを取得し、該当する圧縮形式の仕様に従って、圧縮されたそれぞれのブロックを個別にデコードできます。たとえば、GeoRasterオブジェクトがJPEG-Fモードで圧縮されている場合、デコーディング・プロセスでは最初にJPEGヘッダーが解析され、表およびブロック次元が取得されます。次に、ハフマンのデコーディングが適用され、イメージ・データが量子化されます。

JPEGの解凍をすべてユーザー自身で実装するのは、複雑で、細部まで気を配る必要のあるプロセスです。アプリケーションによっては、既存の実装を使用する方が適切な場合があります。Cのjpeglibなどのライブラリ、およびJavaのいくつかのイメージングAPI (Oracle J2SE、JAIなど)では、すでにJPEGの解凍を実装しており、それらを使用して、JPEGで圧縮されたGeoRasterオブジェクトに対しデコーディング・プロセスを実行することができます。DEFLATE圧縮に対しては、ZLIB CライブラリまたはJava APIを使用して、基本的に同様の方法を適用できます。

1.11.4 圧縮に使用するサード・パーティのプラグイン

GeoRasterは、サード・パーティの圧縮ソリューションのプラグイン・アーキテクチャを提供します。LizardTech社は、MrSIDおよびJPEG 2000の圧縮タイプで、ラスター・イメージをネイティブでOracle Spatial and Graph GeoRasterに圧縮して格納できるプラグインを提供しています。

LizardTechプラグインをインストールする前に、次の手順に従う必要があります。

1. $ORACLE_HOME/md/adminディレクトリに移動します。

2. SYS AS SYSDBAとしてデータベースに接続します。

3. 次のSQL文を入力します。

SQL> @prvtgrlt.plb

LizardTechプラグインとその関連情報の入手については、LizardTech Corporationに問い合せてください。

1.11.5 高度なLOB圧縮

Oracle Database Advanced LOB Compression (概要は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照)を使用して、GeoRasterラスター・データ表(RDT)の可逆圧縮を実現し、GeoRasterオブジェクトを圧縮することができます。表の作成時に、LOB記憶域(RDTのrasterBlock列など)に拡張LOB圧縮を指定すると、その表のすべての行のSecureFiles LOBが拡張LOB圧縮を使用して圧縮されます。圧縮はGeoRasterに対して透過的になるため、アプリケーションの変更は必要ありません。ただし、RDTラスター・ブロック上で任意のGeoRaster固有の圧縮タイプ(JPEG、DEFLATEまたはサード・パーティのプラグインなど)も使用している場合は、これらのブロック上で拡張LOB圧縮を使用しないようにする必要があります。

拡張LOB圧縮を使用するには、Oracle Database Advanced Compression Optionのライセンス(『Oracle Databaseライセンス情報』を参照)が必要です。ただし、拡張LOB圧縮を使用しないGeoRaster圧縮操作には、Oracle Database Advanced Compression Optionは必要ありません。

1.12 GeoRasterおよびデータベースの管理

GeoRasterでは、データベース管理タスクを実行できます。また、多くの管理タスクを自動的に実行し、自動管理操作を容易にするための複数のガイドラインが強化されています。

GeoRasterは、特別な管理タスクを実行する必要のあるユーザーに複数のサブプログラムを提供します。

- SDO_GEOR_ADMIN.isRDTNameUniqueはRDT名の一意性をチェックし、SDO_GEOR_UTL.renameRDTはデータの移行中に発生する可能性のある競合を解決するために、データベース内のRDTの名前を変更します。

- SDO_GEOR_ADMIN.checkSysdataEntriesおよびSDO_GEOR_ADMIN.maintainSysdataEntriesは、データベース接続に関連付けられた権限に応じて、現行のスキーマまたはデータベース内の破損したSYSDATAエントリをチェックして修正します。

- 次のサブプログラムは、データベース接続に関連付けられた権限に応じて、現行のスキーマまたはデータベース内の既存のGeoRasterオブジェクトおよび関連オブジェクトの状態をチェックします。SDO_GEOR_ADMIN.listGeoRasterObjects、SDO_GEOR_ADMIN.listGeoRasterColumns、SDO_GEOR_ADMIN.listGeoRasterTables、SDO_GEOR_ADMIN.listRDT、SDO_GEOR_ADMIN.listRegisteredRDTおよびSDO_GEOR_ADMIN.listUnregisteredRDT。

- 次のサブプログラムは、データベース接続に関連付けられた権限に応じて、現行のスキーマまたはデータベース内の既存のGeoRasterオブジェクトを登録できます。SDO_GEOR_ADMIN.registerGeoRasterObjectsおよびSDO_GEOR_ADMIN.registerGeoRasterColumns。

- SDO_GEOR_ADMIN.upgradeGeoRasterは、データベースのアップグレード後にエラーをチェックして修正します。

GeoRasterのデータおよびメタデータの信頼性を保証するために、次の処理が実行され、次のガイドラインが強化されます。

- GeoRasterトリガーはGeoRasterによって管理され、ユーザーが直接発行するSQL文では削除および変更できません。

- 名前のパターンGRDMLTR_*は、GeoRasterトリガーで使用するために予約されています。ユーザーは、GRDMLTR_で始まる名前を持つトリガーを作成できません。

- 関連付けられたGeoRasterメタデータ・エントリが自動的に更新されるのは、GeoRaster表の削除、切捨て、名前の変更、または変更が行われた場合、GeoRaster列が削除された場合またはスキーマが削除された場合です。(ただし、ALTER TABLE文を使用して1つ以上のGeoRaster列を追加する場合は、SDO_GEOR_UTL.createDMLTriggerプロシージャをコールして、追加された各GeoRaster列にDMLトリガーを作成する必要があります。)

- ラスター・データ表(RDT)は、GeoRasterオブジェクトがそのRDTを参照している場合、標準のSQL文を使用して削除したり直接名前を変更することはできません。RDTの名前を変更するには、SDO_GEOR_UTL.renameRDTプロシージャをコールします。

1.13 GeoRasterでのパラレル処理

GeoRasterには、次の2つのタイプのパラレル処理があります。

- SQL文のパラレル実行

- パラレル化されたGeoRasterプロシージャ

SQL文のパラレル実行では、ほとんどのSQL文(問合せとDMLの両方)をパラレルに実行できます。SQL文は、実行されると、個々のステップまたは行ソースに分解され、実行計画で個別の行として識別されます。

パラレル問合せでは、メタデータ関連の問合せ操作(すべてのGeoRasterメタデータgetファンクションおよびSDO_GEOR.validateGeoRaster)などのすべてのGeoRaster読取り専用ファンクションおよびすべての単一ラスター・セル問合せ(SDO_GEOR.getCellValueおよびSDO_GEOR.evaluateDouble)を有効化する必要があります。つまり、マルチCPU環境では、これらのファンクションを使用して1つ以上のGeoRaster表で多くのGeoRasterオブジェクトを問い合せる場合、およびSQL文をパラレルに実行する場合、GeoRaster行は自動的に複数のサブセットに分割され、複数のOracleサーバー・プロセスが同時に動作して各サブセットを処理し、応答時間全体を短縮します。複数のプロセス全体でGeoRaster SQL文を実行するように作業を分割することで、空間索引を迅速に管理し、場所、様々なメタデータおよび属性に基づいてGeoRasterオブジェクトを検出できます。パイプライン・テーブル・ファンクションおよびパラレル・テーブル・ファンクションを使用して、より高度なプロシージャを実装することもできます(単一のGeoRasterオブジェクトに対するいくつかの操作のパラレル化など)。

パラレル化されたGeoRasterプロシージャでは、GeoRasterオブジェクトの同時処理用に複数のサブプロセスを指定できます。個々のラスターおよびイメージ処理プロシージャの一部は、特にこのタイプのパラレル化をサポートするために実装されます。これらのプロシージャでは、単に入力パラメータとして並列度(DOP)の整数値を指定することで、操作がその数のサブプロセスに分割され、単一のGeoRasterオブジェクトのサブセットが同時に処理されます。これらの各サブプロセスは、相互に独立して実行されます。すべてのサブプロセスが終了すると、プロセス全体も終了します。次のプロシージャでは、この種類のパラレル処理が直接サポートされます。

- SDO_GEOR.generatePyramid

- SDO_GEOR_RA.classify

- SDO_GEOR_RA.findCells

- SDO_GEOR_RA.rasterMathOp

- SDO_GEOR_RA.rasterUpdate

- SDO_GEOR_AGGR.mosaicSubset

SDO_GEOR_AGGR.mosaicSubsetプロシージャを通して、他のタイプのパラレル処理もサポートされます。これに含まれるものとしては、パラレル圧縮と解凍、パラレル・コピーまたは形式変更コピー、パラレル・サブセット化、パラレル再投影、およびパラレル幾何補正があります。詳細は、「パラレル圧縮、コピー、サブセット化、再投影および幾何補正」を参照してください。

イメージおよびラスター・データは、通常、非常に大きいため、前述の操作に時間がかかる可能性があります。そのため、マルチCPUまたはマルチコア・サーバーを使用する場合、パフォーマンスを向上するためにパラレル処理を使用することを常に検討してください。

1.14 GeoRasterでの操作の進行状況のレポート

一部のリソース処理集中型の操作では、GeoRasterによってその実行の進行状況を監視およびレポートできます。この機能は、次のサブプログラムの実行に適用されます。

- SDO_GEOR_AGGR.getMosaicSubset

- SDO_GEOR_AGGR.mosaicSubset

- SDO_GEOR.generatePyramid

- SDO_GEOR.mosaic

実行の進行状況を監視およびレポートするには、次のサブプログラムを使用できます。

- SDO_GEOR_UTL.clearReportTable

- SDO_GEOR_UTL.createReportTable

- SDO_GEOR_UTL.disableReport

- SDO_GEOR_UTL.dropReportTable

- SDO_GEOR_UTL.enableReport

- SDO_GEOR_UTL.getAllStatusReport

- SDO_GEOR_UTL.getProgress

- SDO_GEOR_UTL.getStatusReport

- SDO_GEOR_UTL.isReporting

- SDO_GEOR_UTL.setClientID

- SDO_GEOR_UTL.setSeqID

GeoRaster操作の進行状況の監視およびレポートの詳細は、「GeoRaster操作の進行状況の監視およびレポート」を参照してください。

1.15 GeoRaster PL/SQL API

GeoRasterは、SDO_GEOR、SDO_GEOR_ADMIN、SDO_GEOR_AGGR、SDO_GEOR_RAおよびSDO_GEOR_UTLというPL/SQLパッケージを提供します。これらのパッケージには、GeoRasterのデータおよびメタデータを処理するサブプログラム(ファンクションとプロシージャ)が含まれています。これらのサブプログラムのほとんどは、次の論理カテゴリのいずれかに適合し、サブプログラムの目的を反映します。

- GeoRasterデータの作成、ロードおよびエクスポート

- 地理参照およびGeoRasterオブジェクトの検証

- GeoRasterメタデータの問合せおよび更新

- GeoRasterセル・データの問合せおよび更新

- GeoRasterオブジェクトのフォーマット、変換、処理および分析

- GeoRaster管理機能の実行

GeoRasterは、setプロシージャまたはprocessプロシージャの完了後に、GeoRasterオブジェクトを自動的に検証します。

SDO_GEOR (「SDO_GEORパッケージのリファレンス」)、SDO_GEOR_ADMIN (「SDO_GEOR_ADMINパッケージのリファレンス」)、SDO_GEOR_AGGR (「SDO_GEOR_AGGRパッケージのリファレンス」)、SDO_GEOR_RA (「SDO_GEOR_RAパッケージのリファレンス」)およびSDO_GEOR_UTL (「SDO_GEOR_UTLパッケージのリファレンス」)の各PL/SQLパッケージのサブプログラムの詳細なリファレンス情報は、それぞれの章を参照してください。これらの章では、サブプログラムをアルファベット順に記載しています。「基本的なGeoRaster操作」、「ラスター代数および分析」および「イメージ処理および仮想モザイク」では、サブプログラムをコールする一般的な手順など、これらの多くのサブプログラムの使用方法を含む操作について説明します。

GeoRasterでは、空間索引付け機能および関連操作を使用します(『Oracle Spatial and Graph開発者ガイド』を参照)。

1.16 GeoRaster Javaインタフェース

GeoRasterのJavaクライアント・インタフェースは、次のクラスで構成されます。

- JGeoRaster: SQL型SDO_GEORASTERをマップするクラス(データベースのラスター・イメージの読取りおよび書込み用の主なメソッドはload(STRUCT)およびstore()です。)

- JGeoRasterMeta: GeoRasterメタデータ用のクラス

- JGeoRasterMeta.BandInfo: GeoRasterバンド・メタデータ用のクラス

- JGeoRasterSRS: GeoRaster SRS情報用のクラス

- JRaster: SQL型SDO_RASTERをマップするクラス(データベースのラスター・イメージの読取りおよび書込み用の主なメソッドはload(STRUCT)およびstore()です。)

- JPEGWriter: JPEGイメージの書込み用のクラス

- PNGWriter: PNGイメージの書込み用のクラス

- TIFFWriter: TIFFイメージの書込み用のクラス

- BMPWriter: BMPイメージの書込み用のクラス

- GeoRasterAdapter: GeoRasterオブジェクトのロード、インポートおよびエクスポート用のクラス

- GeoRasterException: GeoRaster例外用のクラス

GeoRasterクラスの詳細なリファレンス情報、およびJava APIの使用方法については、Javadoc生成のAPIドキュメントを参照してください。このドキュメントを参照するには、パスsdogr/doc/javadocを含むディレクトリ内のindex.htmlを開きます。

1.17 GeoRaster Java API

Oracle Spatial and Graph GeoRasterのJava APIは、Oracle Spatial and GraphのGeoRaster機能で使用可能な機能をサポートするインタフェースおよびクラスで構成されます。このAPIは、SDO_GEORASTERオブジェクト型およびそのメタデータのJavaオブジェクトへのマッピングを完了し、GeoRasterオブジェクトを操作するJavaメソッドを提供します。

このAPIには次のパッケージが含まれています。

- oracle.spatial.georasterパッケージはこのAPIのコアです。これは、SDO_GEORASTERオブジェクト型およびそのメタデータのJavaオブジェクトへのマッピングを完了し、GeoRasterオブジェクトを操作するJavaメソッドを提供します。これはPure Javaであり、JAIに依存しません。

- oracle.spatial.georaster.sqlパッケージは、oracle.spatial.georasterパッケージに含まれるサポートが提供されない一部のGeoRaster PL/SQLサブプログラムのラップのサポートを提供します。

- oracle.spatial.georaster.imageパッケージは、GeoRasterオブジェクトまたはGeoRasterオブジェクトのサブセットからJavaイメージを生成し、イメージを処理するためのサポートを提供します。このパッケージはJAIに依存し、JAIを利用します。

これらのパッケージの詳細は、『Oracle Spatial and Graph Java API Reference』(Javadoc)を参照してください。

Spatial and Graph Javaクラス・ライブラリは、<ORACLE_HOME>/md/jlib/ディレクトリの下の.jarファイルにあります。GeoRaster Java API .jarファイルは$ORACLE_HOME/md/jlib/georasterapi.jarです。

Oracle MapViewerでのGeoRasterの主題のサポートは、GeoRasterのJava APIに基づきます。MapViewer JavaおよびXML APIを使用して、GeoRasterデータにアクセスできます。MapViewerについては、『Oracle Fusion Middleware Oracle MapViewerユーザーズ・ガイド』を参照してください。

1.18 GeoRasterツール: ビューア、ローダー、エクスポータ

Oracleはサード・パーティと密接に連携して、各種ラスター・データ形式をロードおよびエクスポートする包括的なETL (抽出、変換、ロード)ツールと、GeoRasterオブジェクトを表示する視覚化クライアントを提供します。Spatial and Graphのパートナ・ソリューションの情報については、http://www.oracle.com/technetwork/database-options/spatialandgraph/learnmore/を、Spatial and Graphのオープン・ソース・コンポーネントについては、http://www.oracle.com/technetwork/database-options/spatialandgraph/documentation/を参照し、また$ORACLE_HOME/md/demo/georaster/java/READMEファイルも参照してください(制限を含む)

GeoRasterには、次のクライアント側ツールも含まれています。

- JAIベースのGeoRasterビューア、ローダーおよびエクスポータ(「JAIベースのビューア、ローダーおよびエクスポータ」を参照)

- 多数のイメージ・ファイルおよびラスター・ファイルの同時バッチ・ロードおよびエクスポートのためのGDALベースのETLウィザード(「同時バッチ・ロードおよびエクスポートのためのGDALベースのETLウィザード」を参照)

これらのクライアント側ツールを使用するには、Oracle Database Examplesメディアからデモ・ファイルをインストールする必要があります(『Oracle Database Examplesインストレーション・ガイド』を参照)。インストール後、これらのツールは次の2つの.jarファイルに配置されます(Spatial and Graphのデフォルトのインストール・ディレクトリが$ORACLE_HOME/mdであるとします)。

$ORACLE_HOME/md/demo/georaster/java/georaster_tools.jar
$ORACLE_HOME/md/demo/georaster/etl/georaster_etl.jar

1.18.1 JAIベースのビューア、ローダーおよびエクスポータ

GeoRaster JAIベースのツールには、ビューア、ローダーおよびエクスポータが含まれます。これらのツールは、DBAおよびアプリケーション開発者向けです。ビューアは、GeoRasterオブジェクトのすべての型とそのメタデータを調査する場合に特に便利です。これによって、GeoRaster表またはビューのいずれか1つまたはリストとして定義された仮想モザイクも表示されます。ローダーおよびエクスポータは、限られた数のイメージ・ファイルおよびラスター・ファイルを1つずつ簡単にロードおよびエクスポートするための軽量ツールです。$ORACLE_HOME/md/demo/georaster/java/READMEファイルには、次のツールに役立つ使用情報や使用手順が記載されています。

- GeoRasterビューア: このツールは、GeoRasterオブジェクトとメタデータ、および仮想モザイクを表示します。複数のデータベースに同時に接続して、左側のペインに示される各データベースからGeoRasterオブジェクトを表示できます。元のイメージ(ピラミッド・レベル0)から概要的なイメージ(最高のピラミッド・レベル)まで、様々な解像度のビューを簡単に切り替えることができます。線形ストレッチ(自動、手動、またはピース単位)、正規化、均等化、および明るさ、コントラスト、しきい値の制御など、イメージを向上させるための操作を実行できます。(GeoRasterオブジェクトの表示方法の詳細は、「GeoRasterオブジェクトの表示」を参照してください。)
ビューアからは、GeoRasterローダーおよびエクスポータ・ツールをコールできます。これにより、1つのツールを、すべてのGeoRasterツールの機能へのインタフェースとして使用できます。ローダーおよびエクスポータ・ツールについては、この項およびREADMEファイルで説明しています。

- GeoRasterローダー: このツールは、ラスター・データをGeoRasterオブジェクトにロードします。TIFF、GeoTIFF、JPEG、BMP、GIF、PNGおよびJP2イメージ形式をロードできます。地理参照情報は、ESRIワールド・ファイル、GeoTIFFファイルおよびDigital Globe RPCテキスト・ファイルからのロードが可能です。
GeoRasterローダーは、SDO_GEOR.importFromプロシージャ(「SDO_GEORパッケージのリファレンス」を参照)のかわりに使用できます。ただし、Windows以外のシステムでは、このローダー・ツールはBMPまたはGIFイメージ形式をサポートしないため、Windows以外のシステムでこれらの形式を使用するには、SDO_GEOR.importFromプロシージャを使用する必要があります。このツールは、セル深度値が2BITのラスター・データ、またはBILまたはBSQインターリーブ・タイプのソース・マルチバンド・ラスター・データをサポートしていません。インポートされたGeoRasterオブジェクトは、BIPインターリーブ・タイプになります。このツールでのロード操作はロールバックできません。

JPEGファイル形式でイメージをロードする場合、操作に必要なメモリーの容量は、圧縮されていないイメージのサイズによって異なります。これは、-Xmxオプション(java -Xmx256M oracle.spatial.georaster.tools.GeoRasterLoader ...など)を使用してコマンドライン・パラメータとして指定できます。

- GeoRasterエクスポータ: このツールは、GeoRasterオブジェクトをイメージ・ファイルにエクスポートします。GeoRasterエクスポータ・ツールは、宛先イメージ・ファイル形式としてTIFF、GeoTIFF、JPEG、BMP、GIF、PNGおよびJP2をサポートします。地理参照情報は、ESRIワールド・ファイル、GeoTIFFファイルおよびDigital Globe RPCテキスト・ファイルへのエクスポートが可能です。
このツールは、SDO_GEOR.exportToプロシージャ(「SDO_GEORパッケージのリファレンス」を参照)のかわりに使用できます。ただし、GeoRasterエクスポータ・ツールは、GIFを宛先ファイル形式としてサポートせず、SDO_GEOR.exportToプロシージャは、GIF、JPEGまたはJP2を宛先ファイル形式としてサポートしていません。GeoRasterエクスポータ・ツールは、cellDepth値が2BITのGeoRasterオブジェクトをサポートしていません。BSQまたはBILインターリーブ形式で8ビット以上のセル深度を持つGeoRasterオブジェクトは、BIPインターリーブ形式でエクスポートされます。

1回の操作でエクスポートできるGeoRasterデータの容量の制限については、SDO_GEOR.exportToプロシージャの「使用上の注意」を参照してください。

イメージのサイズおよびタイプに関して、ロード操作とエクスポート操作に制限事項が適用される場合があります。詳細は、GeoRasterツールのREADMEファイルを参照してください。

これらのツールはJavaで開発されているため、Oracle Databaseとネットワーク接続できるかぎり、イントラネットまたはインターネットを介して任意の場所で実行できます。

GeoRasterのクライアント側ツールでGeoTIFFイメージをロードまたはエクスポートするには、次のライブラリを現在のCLASSPATH定義に追加します。

- xtiff-jai.jar (SourceForge Extensible-TIFF-JAIグループから入手可能)

- geotiff-jai.jar (SourceForge GeoTIFF-JAIグループから入手可能)

JP2イメージのロードまたはエクスポートを行うには、CLASSPATH定義にライブラリjai-imageio.jar (Oracle Java Advanced Imaging Image I/O Toolsのダウンロード・ページから入手可能)を追加します。

ラスター・ファイルまたはイメージ・ファイルがGeoRasterオブジェクトにロードされた後、データ全体がGeoRasterオブジェクトのネイティブ・データ型で格納され、他の特定のファイル形式との関連性がなくなります。

独自のGeoRasterローダー・ツールおよびGeoRasterエクスポータ・ツールは、OCI、Oracle C++ Call Interface (OCCI)またはJavaを使用して開発できます。開発したツールは、クライアント側のコマンドまたはサーバー側のSQLプロシージャまたはファンクションとして実装できます。

1.18.2 同時バッチ・ロードおよびエクスポートのためのGDALベースのETLウィザード

GeoRasterには、GDALを使用して様々なイメージ・ファイルとラスター・ファイルの同時バッチ・ロードおよびエクスポートを自動化して有効化するためのETLウィザード・ツールが付属しています。この強力なツールによって、多数のラスター・ファイルとイメージ・ファイルを一括して同時にロードおよびエクスポートできます。

これは、XMLスキーマを定義し、XMLでロードおよびエクスポート記述ファイルを作成するためのGraphical User Interfaceを提供します。各記述ファイルには、GeoRasterを対象に一括して一連のラスター・ファイルをロードまたはエクスポートする方法が記述されています。XML記述ファイルが作成されると、同じウィザード・ツールを使用して複数の記述ファイルを呼び出し、ラスター・ファイルを一括して同時にロードおよびエクスポートできます。実行時障害は、発生すると捕捉されて記録されますが、バッチ・ロードまたはエクスポート・プロセスは停止しません。このツールは、GDALでサポートされるすべてのラスター形式に対応しています。

このウィザードを使用するには、Oracle Database Examplesメディアからデモ・ファイルをインストールする必要があります(『Oracle Database Examplesインストレーション・ガイド』を参照)。インストール後、このウィザードは次の.jarファイルに配置されます(Spatial and Graphのデフォルトのインストール・ディレクトリが$ORACLE_HOME/mdであるとします)。

$ORACLE_HOME/md/demo/georaster/etl/georaster_etl.jar

$ORACLE_HOME/md/demo/georaster/etl/READMEファイルには、GDALの設定方法とウィザードの起動方法が記述されています。

$ORACLE_HOME/md/demo/georaster/etl/georaster_etl_user_guide.pdfファイルには、使用方法の詳細が記述されています。

1.19 GeoRasterのPL/SQLおよびJavaデモ・ファイル

GeoRasterには、一般的な操作を示す、いくつかのPL/SQLおよびJavaデモ・ファイルが含まれています。Oracle Database Examplesメディアからデモ・ファイルをインストールした場合(『Oracle Database Examplesインストレーション・ガイド』を参照)、これらのファイルはSpatial and Graphのインストール・ディレクトリ(デフォルトでは$ORACLE_HOME/md)の下の次のディレクトリにあります。

/demo/georaster/plsql
/demo/georaster/java

PL/SQLの例では、GeoRaster PL/SQL APIを使用して、GeoRasterオブジェクトの初期化、インポート、挿入、削除、問合せ、処理、更新およびエクスポートを行う基本操作を示しています。

Javaの例では、GeoRaster Java APIを使用して、GeoRaster ETL(抽出、変換、ロード)ツールおよびアプリケーションを開発する方法を示しています。

1.20 Spatial and Graphおよび関連する機能のREADMEファイル

README.txtファイルは、『Oracle Spatial and Graph開発者ガイド』、『Oracle Spatial and Graph GeoRaster開発者ガイド』(このマニュアル)および『Oracle Spatial and Graphトポロジ・データ・モデルおよびネットワーク・データ・モデル・グラフ開発者ガイド』のマニュアルの情報を補足します。このファイルは次のディレクトリにあります。

$ORACLE_HOME/md/doc/README.txt

GeoRasterについては、$ORACLE_HOME/md/demo/georaster/java/READMEファイルも参照してください。

2 GeoRasterのデータ型および関連構造

GeoRasterのオブジェクト・リレーショナル実装は、データおよびシステム・データを格納するための一連のオブジェクト・データ型で構成されます。イメージまたはグリッド・ラスター・データはそれぞれSDO_GEORASTER型の列に格納され、そのラスター・データ内のブロックはSDO_RASTER型のラスター・データ表に格納されます(「GeoRasterの物理記憶域」を参照)。この章には次の項が含まれます。

- SDO_GEORASTERオブジェクト型

- SDO_RASTERオブジェクト型およびラスター・データ表

- 他のGeoRasterの型

- GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)

- GeoRasterのXMLスキーマ

2.1 SDO_GEORASTERオブジェクト型

GeoRasterオブジェクト・リレーショナル・モデルでは、ラスター・イメージまたはグリッド・オブジェクトが、ユーザーが定義した表のSDO_GEORASTERオブジェクト型の1列に、1行で格納されます。1つ以上のSDO_GEORASTER型の列が含まれる表は、GeoRaster表と呼ばれます。

SDO_GEORASTERオブジェクト型の定義は次のとおりです。

CREATE TYPE sdo_georaster AS OBJECT (
rasterType       NUMBER,
spatialExtent    SDO_GEOMETRY,
rasterDataTable  VARCHAR2(32),
rasterID         NUMBER,
metadata         XMLType);

この項では、各SDO_GEORASTER属性の意味について説明します。

2.1.1 rasterType属性

rasterType属性には、[d][b][t][gt]という書式の5桁の値を指定する必要があります。

- [d]は、空間次元数を示します。今回のリリースでは、2を指定する必要があります。

- [b]は、バンドまたはレイヤーの情報を示します。0(ゼロ)は、バンドまたはレイヤーが1つであることを意味します。1は、バンドまたはレイヤーが1つまたは複数であることを意味します。このフィールドにはバンドまたはレイヤーの合計数を指定するのではないことに注意してください。(バンドおよびレイヤーの詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。)

- [t]は、将来使用するために予約されており、0 (ゼロ)を指定する必要があります。

- [gt]は、2桁のGeoRaster型を示し、次の値のいずれかを指定する必要があります。

[gt]の値

意味

00

Oracleで使用するために予約されています。

01

任意のGeoRaster型です。今回のリリースでは、この値のみがサポートされています。この値を指定すると、GeoRasterで、将来のリリースで型が実装された場合に、その特定の型に関連付けられた制限が適用されなくなります。

02-50

Oracleで使用するために予約されています。

51-99

将来のリリースで顧客が使用するために予約されています。

たとえば、20001のRasterType値は、次のことを意味します。

- 2次元データである

- 1つのバンド(レイヤー)である

- 任意のGeoRaster型である

2.1.2 spatialExtent属性

spatialExtent属性は、ラスター・データに関連付けられた空間エクステント(フットプリント)を表します。空間エクステントは、SDO_GEOMETRY型のOracle Spatial and Graphジオメトリです。空間エクステント・ジオメトリは、必ずしもGeoRasterモデル空間内ではなく、任意の座標系に存在できます。また、ジオメトリを指定したSQLのUPDATE文で直接更新できます。ただし、空間エクステント・ジオメトリがGeoRasterオブジェクトのモデル(地上)空間内に存在するのは、GeoRasterオブジェクトが地理参照されていて、空間エクステント・ジオメトリを生成する際に、SDO_GEOR.generateSpatialExtentファンクションをコールしたか、あるいはspatialExtent=TRUEをSDO_GEOR.importFromプロシージャまたはGeoRasterのクライアント側ローダー(「GeoRasterツール: ローダー、ビューア、エクスポータ」を参照)の記憶域パラメータとして指定した場合です。

SDO_CS.transformをコールすることにより、サポートされている他のすべての座標系に空間エクステント・ジオメトリを変換できます。SRIDの値がNULLまたは0 (ゼロ)の場合、空間エクステントは、セル空間ではなくNULLに設定されます。SDO_GEOMETRYデータ型の詳細は、『Oracle Spatial and Graph開発者ガイド』を参照してください。

GeoRasterの空間エクステントは、通常、GeoRaster列に空間Rツリー索引を作成する際に使用されます。たとえば、すべてのGeoRasterオブジェクトが異なるローカル投影に存在する場合、すべての空間エクステントに対して測地SRIDを使用でき、全地球ベースの空間索引をGeoRaster表に作成して、GeoRasterオブジェクトの空間検索をグローバルに実行できます。空間索引の作成によってGeoRasterアプリケーションのパフォーマンスが向上する可能性があるため、ジオメトリは、XMLのmetadata属性(「metadata属性」を参照)に含まれるのではなく、spatialExtent属性に関連付けられます。GeoRasterデータの索引付けの詳細は、「GeoRasterオブジェクトの索引付け」を参照してください。

2.1.3 rasterDataTable属性

rasterDataTable属性は、ラスター・データ表の名前を識別します。ラスター・データ表は、SDO_RASTER型のオブジェクト表か、含まれるすべての列がオブジェクト型SDO_RASTERによって定義されている、リレーショナル表である必要があります。この表には、格納されている各ラスター・ブロックに対して1つの行が含まれます。ラスター・データ表は作成および(必要に応じて)削除する必要があります。この表の行を直接変更することはできませんが、この表を問い合せてラスター・データにアクセスすることはできます。

この属性は、引用符で囲まれていない有効な識別子で、ピリオドで区切る必要はありません。また、英数字はすべて大文字であることが必要です。

ラスター・データ表およびSDO_RASTER型の詳細は、「SDO_RASTERオブジェクト型およびラスター・データ表」を参照してください。

2.1.4 rasterID属性

rasterID属性の値は、ラスター・データ表の行に格納され、GeoRasterオブジェクトに属する行を識別します。rasterDataTable属性とrasterID属性の組合せによって、データベース内でGeoRasterオブジェクトが一意に識別されます。各GeoRasterオブジェクトには1つのラスター・データ表が存在しますが、1つのラスター・データ表に複数のGeoRasterオブジェクトのデータが含まれる場合があります。

rasterIDおよびrasterDataTable属性は新しいGeoRasterオブジェクトに指定できます。ただし、それぞれの組合せがデータベース内で一意である必要があります。これらの値を指定しない場合、SDO_GEOR.initおよびSDO_GEOR.createBlankファンクションによって値が自動的に生成されます。

2.1.5 metadata属性

metadata属性には、オラクル社によって定義されたGeoRasterメタデータが含まれます。このメタデータは、GeoRasterメタデータのXMLスキーマによって記述されます(「GeoRasterメタデータのXMLスキーマ」を参照。)すべてのGeoRasterオブジェクトのメタデータは、このXMLスキーマに対して検証する必要があります。また、SDO_GEOR.validateGeoRasterファンクションを使用して検証する必要もあります。このXMLスキーマでは定義されない追加の制限が、このファンクションによって適用されます。

GeoRasterメタデータのデフォルトの記憶域オプションは、バイナリXMLです。

2.2 SDO_RASTERオブジェクト型およびラスター・データ表

GeoRasterオブジェクト・リレーショナル・モデルでは、ラスター・データ表を使用して、ラスター・イメージ内のすべてのセル・データが格納されます。GeoRasterオブジェクトのセル・データはブロック化され、各ブロックは1つの行としてラスター・データ表に格納されます。この表はSDO_GEORASTERオブジェクトのrasterDataTable属性で指定します(「rasterDataTable属性」を参照)。任意のセル・データを格納する前にラスター・データ表を作成する必要があります。

ラスター・データ表は、SDO_RASTERオブジェクト型の表として、または含まれるすべての列がオブジェクト型SDO_RASTERによって定義されているリレーショナル表として定義されたオブジェクト表です。SDO_RASTERオブジェクト型の定義は次のとおりです。

CREATE TYPE sdo_raster AS OBJECT (
rasterID           NUMBER,
pyramidLevel       NUMBER,
bandBlockNumber    NUMBER,
rowBlockNumber     NUMBER,
columnBlockNumber  NUMBER,
blockMBR           SDO_GEOMETRY,
rasterBlock        BLOB);

この項では、各SDO_RASTER属性の意味について説明します。

2.2.1 rasterID属性

SDO_RASTERオブジェクトのrasterID属性には、関連付けられたSDO_GEORASTERオブジェクトのrasterIDの値と一致する数値を指定する必要があります。(SDO_GEORASTERオブジェクトのrasterID属性については、「rasterID属性」を参照してください。)これらの数値が一致することによって、特定のGeoRasterオブジェクトに属しているラスター・ブロックが識別されます。

2.2.2 pyramidLevel属性

pyramidLevel属性は、セルの特定のブロックのピラミッド・レベルを識別します。ピラミッド・レベルには、0(ゼロ)または任意の正の整数を指定します。ピラミッド・レベルは、必要な記憶域が小さい低解像度のイメージを作成するために使用されます。値が0 (ゼロ)のピラミッド・レベルは、元のラスター・データを示します(この場合、イメージの解像度は低下せず、必要な記憶域は変化しません)。値が0 (ゼロ)より大きくなるほど、イメージの解像度のレベルが低くなり、必要な記憶域が小さくなります。ピラミッドの詳細は、「ピラミッド」を参照してください。

この属性とbandBlockNumber属性(「bandBlockNumber属性」を参照)は、ビットマップ・マスクおよびビットマップ・マスク・ピラミッドの指定にも使用します。ビットマップ・マスク、ビットマップ・マスク・ピラミッド、およびpyramidLevel属性とbandBlockNumber属性の使用方法は、「ビットマップ・マスク」を参照してください。

2.2.3 bandBlockNumber属性

bandBlockNumber属性は、バンド次元でのブロック番号を識別します。バンドおよびレイヤーの詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。ビットマップ・マスクおよびビットマップ・マスク・ピラミッドでのbandBlockNumber属性の使用方法は、「ビットマップ・マスク」を参照してください。

2.2.4 rowBlockNumber属性

rowBlockNumber属性は、行次元でのブロック番号を識別します。

2.2.5 columnBlockNumber属性

columnBlockNumber属性は、列次元でのブロック番号を識別します。

2.2.6 blockMBR属性

blockMBR属性は、特定のブロックの最小境界矩形(MBR)の(SDO_GEOMETRY型の)ジオメトリです。ジオメトリはセル空間に存在し(SRID値はNULL)、すべての座標は整数になります。座標は、このブロックに格納された最小行と最小列、および最大行と最大列を表します。

2.2.7 rasterBlock属性

rasterBlock属性には、特定のブロックのすべてのラスター・セル・データが含まれます。また、GeoRasterオブジェクトのビットマップ・マスクの格納にも使用されます。rasterBlock属性は、BLOB型です。

2.3 他のGeoRasterの型

GeoRasterでは、SDO_GEORASTER (「SDO_GEORASTERオブジェクト型」を参照)、SDO_RASTER (「SDO_RASTERオブジェクト型およびラスター・データ表」を参照)およびSDO_RANGE_ARRAYとSDO_RANGE (「NODATA値および値の範囲」を参照)の他に、特定の種類の操作に使用される他の複数のオブジェクト型およびコレクション型が提供されています。(表の列を定義する場合などに)データベースのストレージで使用されるSDO_GEORASTER型およびSDO_RASTER型とは異なり、この項で説明する型は、今回のリリースのGeoRaster PL/SQL APIでのみ使用されます。

2.3.1 SDO_GEOR_HISTOGRAMオブジェクト型

GeoRasterでは、XMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)を使用してヒストグラムがGeoRasterメタデータに格納されます。SDO_GEOR_HISTOGRAMオブジェクト型は、GeoRasterオブジェクトまたはレイヤーのヒストグラム・データを含めるためにPL/SQL API内で使用されます。レイヤーは、ヒストグラム・データ構造が同じです。各セルは値を持ち、各セルの値または値の範囲に対して、その値を持つセルまたはその範囲内の値を持つセルが多数存在する可能性があります。

SDO_GEOR_HISTOGRAMオブジェクト型の定義は次のとおりです。

CREATE TYPE sdo_geor_histogram AS OBJECT(
cellValue  SDO_NUMBER_ARRAY,
count      SDO_NUMBER_ARRAY);

表2-1に、SDO_GEOR_HISTOGRAMオブジェクト型の属性の説明を示します。cellValueとcount配列の長さは同じである必要があります。

表2-1 SDO_GEOR_HISTOGRAMオブジェクト型の属性

属性

説明

cellValue

セル値の配列。

count

各セル値またはセル値の範囲に対応するセルの数。

ヒストグラムには、セル値(および暗黙的な値の範囲)、および各セル値または各セル値の範囲に関連するセルの合計数が含まれます。たとえば、(cellValue1, count1)と(cellValue2, count2)がヒストグラム内で昇順に隣接する2つのエントリである場合、暗黙的な値の範囲は(cellValue1, cellValue2)で、この範囲に含まれるセルの合計数はcount1です。セル値の範囲には、常に下限が含まれ、上限は含まれません。各範囲のサイズが同一である必要はありません。この例の場合は、cellValue1以上かつcellValue2未満が範囲になります。セル深度の下限(例: 1ビットから8ビットまでの整数)では、通常、セル値の範囲はセル値と同じです。

2.3.2 SDO_GEOR_COLORMAPオブジェクト型

GeoRasterでは、XMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)を使用してカラー情報がGeoRasterメタデータに格納されます。SDO_GEOR_COLORMAPオブジェクト型は、カラーマップ情報を含めるためにPL/SQL APIで使用されます。カラーマップ情報とは、特定の値を持つセルまたは特定の値の範囲に含まれるセルの表示に使用される色の、赤、緑、青および(オプション)アルファの値を識別するための疑似カラー情報です。カラーマップは、疑似カラー表またはパレット表とも呼ばれます。GeoRasterのデフォルトのカラーマップは、sRGB ColorSpaceです。これは、標準のRGB色空間として勧告提案されています。詳細は、次のURLを参照してください。

http://www.w3.org/Graphics/Color/sRGB.html

赤、緑、青およびアルファの値はすべて、0から255の、8ビットの符号なし整数になります。

アルファは、不透明度とも呼ばれます。アルファ値が255の場合は色が完全に不透明であることを意味し、アルファ値が0 (ゼロ)の場合は色が完全に透明であることを意味します。色構成要素値にアルファ値を掛けることはできません。

SDO_GEOR_COLORMAPオブジェクト型の定義は次のとおりです。

CREATE TYPE sdo_geor_colormap AS OBJECT(
cellValue  SDO_NUMBER_ARRAY,
red        SDO_NUMBER_ARRAY,
green      SDO_NUMBER_ARRAY,
blue       SDO_NUMBER_ARRAY,
alpha      SDO_NUMBER_ARRAY);

表2-2に、SDO_GEOR_COLORMAPオブジェクト型の属性の説明を示します。各属性は、数値の配列です。各配列の長さは同じで、各配列の同じ索引の値が相互に対応している必要があります。各cellValue値は、GeoRasterオブジェクトのcellDepth値と一貫性がある必要があります。

カラーマップには、セル値(および暗黙的な値の範囲)と、各セル値または各セル値の範囲に関連する赤、緑、青またはアルファの値が含まれます。たとえば、(cellValue1, red1, green1, blue1, alpha1)と(cellValue2, red2, green2, blue2, alpha2)がカラーマップ内で昇順に隣接する2つのエントリである場合、暗黙的な値の範囲は(cellValue1, cellValue2)で、この範囲に含まれるすべてのセルに関連付けられる色構成要素は(red1, green1, blue1, alpha1)です。セル値の範囲には、常に下限が含まれ、上限は含まれません。各範囲のサイズが同一である必要はありません。この例の場合は、cellValue1以上かつcellValue2未満が範囲になります。セル深度の下限(例: 1ビットから8ビットまでの整数)では、通常、セル値の範囲はセル値と同じです。

表2-2 SDO_GEOR_COLORMAPオブジェクト型の属性

属性

説明

cellValue

セル値の配列。値は昇順に格納する必要があります。

red

cellValueに値または値の範囲を持つセルの、疑似カラー表示用の赤の構成要素値の配列。0から255の整数値を指定する必要があります。

green

cellValueに値または値の範囲を持つセルの、疑似カラー表示用の緑の構成要素値の配列。0から255の整数値を指定する必要があります。

blue

cellValueに値または値の範囲を持つセルの、疑似カラー表示用の青の構成要素値の配列。0から255の整数値を指定する必要があります。

alpha

cellValueに値または値の範囲を持つセルの、疑似カラー表示用のアルファの構成要素値の配列。0から255の整数値を指定する必要があります。

2.3.3 SDO_GEOR_GRAYSCALEオブジェクト型

GeoRasterでは、XMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)を使用してグレースケール情報がGeoRasterメタデータに格納されます。SDO_GEOR_GRAYSCALEオブジェクト型は、グレースケール値の識別用グレースケール情報を含めるためにPL/SQL APIで使用されます。グレースケール値は、特定の値を持つセルまたは特定の値の範囲に含まれるセルを表示する際に使用されます。グレースケール表のセル値は、このグレースケール表を使用して線形比率で伸縮できるため、元のラスター・データを適切に表示できます。グレースケール表の値は、0から255の、8ビットの符号なしの整数になります。グレースケール表は、コントラスト表または参照表とも呼ばれます。

SDO_GEOR_GRAYSCALEオブジェクト型の定義は次のとおりです。

CREATE TYPE sdo_geor_grayscale AS OBJECT(
cellValue  SDO_NUMBER_ARRAY,
gray       SDO_NUMBER_ARRAY);

表2-3に、SDO_GEOR_GRAYSCALEオブジェクト型の属性の説明を示します。cellValueとgray配列の長さは同じである必要があります。各cellValue値は、GeoRasterオブジェクトのcellDepth値と一貫性がある必要があります。

グレースケールには、セル値(および暗黙的な値の範囲)、および各セル値または各セル値の範囲に関連するグレー値が含まれます。たとえば、(cellValue1, gray1)と(cellValue2, gray2)がグレースケール表内で昇順に隣接する2つのエントリである場合、暗黙的な値の範囲は(cellValue1, cellValue2)で、この範囲に含まれるすべてのセルに関連付けられたグレー色はgray1です。セル値の範囲には、常に下限が含まれ、上限は含まれません。各範囲のサイズが同一である必要はありません。この例の場合は、cellValue1以上かつcellValue2未満が範囲になります。セル深度の下限(例: 1ビットから8ビットまでの整数)では、通常、セル値の範囲はセル値と同じです。

表2-3 SDO_GEOR_GRAYSCALEオブジェクト型の属性

属性

説明

cellValue

セル値の配列。値は昇順に格納する必要があります。

gray

cellValueに値または値の範囲を持つセルの、グレースケール表示用のグレーの構成要素値の配列。0から255の整数値を指定する必要があります。

2.3.4 SDO_RASTERSETコレクション型

SDO_RASTERSETコレクション型は、ラスター・データ・ブロック(1つまたは複数のブロック、全体またはサブセット)を問い合せるテーブル・ファンクションの戻り型として使用されます。

SDO_RASTERSETコレクション型の定義は次のとおりです。

CREATE TYPE sdo_rasterset AS TABLE of SDO_RASTER;

SDO_RASTER型の詳細は、「SDO_RASTERオブジェクト型およびラスター・データ表」を参照してください。

2.3.5 SDO_GEOR_SRSオブジェクト型

GeoRasterでは、XMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)を使用して空間参照システム(SRS)情報がGeoRasterメタデータに格納されます。SDO_GEOR_SRSオブジェクト型は、GeoRasterオブジェクトの空間参照に関する情報を含めるためにPL/SQL APIで使用されます。メタデータとオブジェクト型には同じ情報が含まれます。オブジェクト型を使用して、GeoRasterオブジェクトからのSRS情報を取得したり、GeoRasterオブジェクトにSRS情報をロードして更新できます。

SDO_GEOR_SRSオブジェクト型の定義は次のとおりです。

CREATE TYPE sdo_geor_srs AS OBJECT (
isReferenced       VARCHAR2(5),
isRectified        VARCHAR2(5),
isOrthoRectified   VARCHAR2(5),
srid               NUMBER,
spatialResolution  SDO_NUMBER_ARRAY,
spatialTolerance   NUMBER,
coordLocation      NUMBER,
rowOff             NUMBER,
columnOff          NUMBER,
xOff               NUMBER,
yOff               NUMBER,
zOff               NUMBER,
rowScale           NUMBER,
columnScale        NUMBER,
xScale             NUMBER,
yScale             NUMBER,
zScale             NUMBER,
rowRMS             NUMBER,
columnRMS          NUMBER,
totalRMS           NUMBER,
rowNumerator       SDO_NUMBER_ARRAY,
rowDenominator     SDO_NUMBER_ARRAY,
columnNumerator    SDO_NUMBER_ARRAY,
columnDenominator  SDO_NUMBER_ARRAY,
xRMS               NUMBER,
yRMS               NUMBER,
zRMS               NUMBER,
modelTotalRMS      NUMBER,
GCPgeoreferenceModel SDO_GEOR_GCPGEOREFTYPE);

表2-4に、SDO_GEOR_SRSオブジェクト型の属性の説明を示します。

表2-4 SDO_GEOR_SRSオブジェクト型の属性

属性

説明

isReferenced

GeoRasterオブジェクトが地理参照されている場合はTRUE、地理参照されていない場合はFALSEを指定します。

isRectified

GeoRasterオブジェクトが幾何補正および地理参照されている場合はTRUE、幾何補正されていない場合はFALSEを指定します。

isOrthoRectified

GeoRasterオブジェクトがオルソ補正、幾何補正および地理参照されている場合はTRUE、オルソ補正されていない場合はFALSEを指定します。

srid

モデル(地上)座標系のSRID値を指定します。

spatialResolution

空間解像度の値(空間次元ごとに1つの値を指定した数値の配列)を指定します。各値は、セルの空間次元によって表現されるデータ領域に関連付けられた測定単位の数を示します。

spatialTolerance

精度を制御するための許容差を指定します。

coordLocation

モデル座標位置は、左上角(coordLocation=1)または中心(coordLocation=0)のいずれかを表すセル空間の種類を定義します。モデル空間およびセル(ラスター)空間の詳細は、「GeoRasterデータ・モデル」を参照してください。

rowOff

行のオフセット値。

columnOff

列のオフセット値。

xOff

X座標のオフセット値。

yOff

Y座標のオフセット値。

zOff

Z座標のオフセット値。

rowScale

行のスケール変更係数値

columnScale

列のスケール変更係数値

xScale

X座標のスケール変更係数値

yScale

Y座標のスケール変更係数値

zScale

Z座標のスケール変更係数値

rowRMS

行次元の精度。GCPを使用してSDO_GEOR.georeferenceをコールすると、基準点を使用して計算されます。

columnRMS

列次元の精度。GCPを使用してSDO_GEOR.georeferenceをコールすると、基準点を使用して計算されます。

totalRMS

行と列の合計精度。GCPを使用してSDO_GEOR.georeferenceをコールすると、基準点を使用して計算されます。

rowNumerator

pType、nVars、order、nCoefficientsおよび行多項式の分子のすべての係数を指定します。ここでpTypeは1または2、nVarsは0、2または3、orderは0以上5以下です。nCoefficientsはpType、nVars、orderから導出されます。多項式の詳細は、「関数フィッティング地理参照モデル」を参照してください。

rowDenominator

pType、nVars、order、nCoefficientsおよび行多項式の分母のすべての係数を指定します。ここでpTypeは1または2、nVarsは0、2または3、orderは0以上5以下です。nCoefficientsはpType、nVars、orderから導出されます。多項式の詳細は、「関数フィッティング地理参照モデル」を参照してください。

columnNumerator

pType、nVars、order、nCoefficientsおよび列多項式の分子のすべての係数を指定します。ここでpTypeは1または2、nVarsは0、2または3、orderは0以上5以下です。nCoefficientsはpType、nVars、orderから導出されます。多項式の詳細は、「関数フィッティング地理参照モデル」を参照してください。

columnDenominator

pType、nVars、order、nCoefficientsおよび列多項式の分母のすべての係数を指定します。ここでpTypeは1または2、nVarsは0、2または3、orderは0以上5以下です。nCoefficientsはpType、nVars、orderから導出されます。多項式の詳細は、「関数フィッティング地理参照モデル」を参照してください。

xRMS

X次元の精度。GCPを使用してSDO_GEOR.georeferenceをコールすると、チェック・ポイントを使用して計算されます。

yRMS

Y次元の精度。GCPを使用してSDO_GEOR.georeferenceをコールすると、チェック・ポイントを使用して計算されます。

zRMS

Z次元の精度。GCPを使用してSDO_GEOR.georeferenceをコールすると、チェック・ポイントを使用して計算されます。

modelTotalRMS

合計モデル精度。GCPを使用してSDO_GEOR.georeferenceをコールすると、チェック・ポイントを使用して計算されます。

GCPgeoreferenceModel

ストアド・ファンクション・モデル情報、つまり、GCPベースの地理参照モデルに関するすべての情報。GCPベースの地理参照モデル情報の詳細は、「SDO_GEOR_GCPGEOREFTYPEオブジェクト型」を参照してください。

ただし、直接および反転ソリューションが関数フィッティング・モデルから導出される場合、表2-4にリストされている精度の値は、今回のリリースのGeoRasterのセル座標とモデル座標の内部変換計算では考慮されません。

SDO_GEOR_SRSオブジェクト型には次の2つのコンストラクタが含まれます。

- 1つのコンストラクタは、パラメータを持たず、isReferenced属性がFALSEに設定され他の属性はNULL値に設定される型のインスタンスを作成します。このコンストラクタを使用すると、関数フィッティング・モデルまたはストアド・ファンクション(GCP)モデルのいずれかを設定するか、これらの両方を同時に設定することができます。

- もう1つのコンストラクタは、ストアド・ファンクション(GCP)モデルに関連するものを除く、このオブジェクト型のすべての属性をパラメータとして取得します。

SDO_GEOR_SRSコンストラクタの使用例は、「SDO_GEORパッケージのリファレンス」のSDO_GEOR.setSRSプロシージャに関する項を参照してください。

2.3.6 SDO_GEOR_GCPオブジェクト型

GeoRasterでは、XMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)を使用して地上基準点(GCP)情報がGeoRasterメタデータに格納されます。SDO_GEOR_GCPオブジェクト型は、GeoRasterオブジェクトの地理参照に関するGCP情報を含めるためにPL/SQL APIで使用されます。メタデータとオブジェクト型には同じ情報が含まれます。オブジェクト型を使用して、GeoRasterオブジェクトからのGCP情報を取得したり、GeoRasterオブジェクトにGCP情報をロードして更新できます。

SDO_GEOR_GCPオブジェクト型の定義は次のとおりです。

CREATE TYPE sdo_geor_gcp AS OBJECT (
pointID          VARCHAR2(32),
description      VARCHAR2(256),
pointType        NUMBER,
cellDimension    NUMBER,
cellCoordinates  SDO_NUMBER_ARRAY,
modelDimension   NUMBER,
modelCoordinates SDO_NUMBER_ARRAY,
accuracy         SDO_NUMBER_ARRAY,
status           NUMBER
);

表2-5に、SDO_GEOR_GCPオブジェクト型の属性の説明を示します。

表2-5 SDO_GEOR_GCPオブジェクト型の属性

属性

説明

pointID

基準点の一意のID。最大32文字です。

description

基準点の説明。

pointType

ポイント・タイプ: 1 (基準点)または2 (チェック・ポイント)。

cellDimension

セル座標の次元(次元数): 2または3。

cellCoordinates

基準点のセル座標の配列; 各点の(行,列)または(行,列,垂直)。

modelDimension

モデル座標の次元(次元数): 2または3。

modelCoordinates

セル空間内の点に対応する、基準点のモデル座標の配列; 各点の(X,Y)または(X,Y,Z)。

accuracy

(xRMS, yRMS)または(xRMS, yRMS, zRMS)の値で表される、基準点の精度。

status

GCPのステータス: Measured、Removed、Estimated、ValidatedまたはInvalid。この列の値は情報のみを示し、GeoRasterによるGCPの使用には影響しません。

SDO_GEOR_GCPコンストラクタは、このオブジェクト型の空のインスタンスを作成するために使用できます。このインスタンスを使用する前に、必要なデータを入力する必要があります。

2.3.7 SDO_GEOR_GCP_COLLECTIONコレクション型

SDO_GEOR_GCP_COLLECTIONコレクション型は、地上基準点(GCP)の配列(コレクション)を格納するために使用されます。

SDO_GEOR_GCP_COLLECTIONコレクション型の定義は次のとおりです。

CREATE TYPE sdo_geor_gcp_collection VARRAY(1048576) OF SDO_GEOR_GCP;

SDO_GEOR_GCP型の詳細は、「SDO_GEOR_GCPオブジェクト型」を参照してください。

2.3.8 SDO_GEOR_GCPGEOREFTYPEオブジェクト型

GeoRasterでは、XMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)を使用してGCPベースの地理参照モデル情報がGeoRasterメタデータに格納されます。SDO_GEOR_GCPGEOREFTYPEオブジェクトには、地理参照関数フィッティング・メソッド(ジオメトリ・モデル)、モデル・パラメータを解決するための基準点、およびソリューションの精度が含まれています。SDO_GEOR_GCPGEOREFTYPEオブジェクト型は、GeoRasterオブジェクトのGCPベースの地理参照に関する地理参照モデル情報を含めるためにPL/SQL APIで使用されます。メタデータとオブジェクト型には同じ情報が含まれます。オブジェクト型を使用して、GeoRasterオブジェクトからの地理参照モデル情報を取得したり、GeoRasterオブジェクトに地理参照モデル情報をロードして更新できます。

SDO_GEOR_GCPGEOREFTYPEオブジェクト型の定義は次のとおりです。

CREATE TYPE sdo_geor_gcpgeoreftype AS OBJECT (
FFMethodType     VARCHAR2(32),
numberGCP        NUMBER,
GCPs             SDO_GEOR_GCP_COLLECTION,
solutionAccuracy SDO_NUMBER_ARRAY
);

表2-6に、SDO_GEOR_GCPGEOREFTYPEオブジェクト型の属性の説明を示します。

表2-6 SDO_GEOR_GCPGEOREFTYPEオブジェクト型の属性

属性

説明

FFMethodType

関数フィッティング・メソッド。Affine、QuadraticPolynomial、CubicPolynomial、DLT、QuadraticRationalまたはRPCのいずれかを指定する必要があります。

numberGCP

GCPコレクション内の地上基準点の数(GCPsパラメータ)。

GCPs

SDO_GEOR_GCP_COLLECTION型のGCPコレクション(「SDO_GEOR_GCP_ COLLECTIONオブジェクト型」を参照)。

solutionAccuracy

次の形式で地理参照ソリューションの精度を格納する配列: (rowRMS, columnRMS, totalRMS, xRMS, yRMS, zRMS, modelTotalRMS)。最初の3つのRMS番号は基準点を使用して計算され、後の4つのRMS番号はチェック・ポイント(ある場合)を使用して計算されます。この情報は出力専用であるため、この属性の値を格納または変更しないでください。

SDO_GEOR_GCPGEOREFTYPEオブジェクト型には1つのコンストラクタが含まれます。そのコンストラクタは、パラメータを持たず、FFMethodType属性がAffineに設定され他の属性はNULL値に設定される型のインスタンスを作成します。

2.4 GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)

GeoRasterは、システム・データ表(SYSDATA表)を使用して、GeoRaster表とそれに関連するラスター・データ表の間の関係を保持します。各GeoRasterオブジェクト(NULL以外の場合)には、ラスター・データ表が関連付けられており、地上基準点(GCP)や値属性表(VAT)など、その他の情報が関連付けられる場合もあります。

任意のユーザーに対して、ラスター・データ表の名前とrasterIDの組合せによって、GeoRasterオブジェクトが一意に識別されます。1つのGeoRaster表に含まれる(rasterID値が異なる)複数のGeoRasterオブジェクトが、1つのラスター・データ表を共有できます。

新しいGeoRasterオブジェクト(空および空白のGeoRasterオブジェクトを含む)が作成されるたびに、そのオブジェクトにラスター・データ表およびrasterID値が割り当てられます。すべてのSDO_GEORASTERオブジェクト(アトミックNULLオブジェクトを除く)は、作成時にシステム・データ表に自動的に記録されます。

GeoRasterのSYSDATA表は、MDSYSスキーマに存在します。GeoRasterシステム・データ表に含まれるほとんどの情報は、システム・データ・ビューを介して参照できるため、GeoRasterデータベースに含まれるすべてのGeoRasterオブジェクトのディクショナリまたはカタログとして使用できます。GeoRasterのユーザーには、自分に関連付けられたスキーマに次のシステム・データ・ビューが含まれます。

- USER_SDO_GEOR_SYSDATAには、現行ユーザーが所有するすべてのGeoRasterオブジェクトのシステム・データが含まれます。

- ALL_SDO_GEOR_SYSDATAには、現行ユーザーがアクセス可能なすべてのGeoRasterオブジェクトのシステム・データが含まれます。

ユーザーは、GeoRasterのSYSDATA表およびUSER_SDO_GEOR_SYSDATAビューとALL_SDO_GEOR_SYSDATAビューを直接変更することはできません。ただし、これらは各GeoRaster表の各SDO_GEORASTER列に自動作成されるDMLトリガーによって更新されます。

USER_SDO_GEOR_SYSDATAビューの定義は次のとおりです。

(
TABLE_NAME            VARCHAR2(32),
COLUMN_NAME           VARCHAR2(1024),
METADATA_COLUMN_NAME  VARCHAR2(1024),
RDT_TABLE_NAME        VARCHAR2(32),
RASTER_ID             NUMBER,
OTHER_TABLE_NAMES     SDO_STRING_ARRAY
);

ALL_SDO_GEOR_SYSDATAビューにはUSER_SDO_GEOR_SYSDATAビューのすべての列が含まれますが、TABLE_NAME列で指定された表を所有するスキーマを識別するOWNER列も含まれます。

この項では、両方のビューに共通する列について説明します。任意の列のVARCHAR2データの名前は、すべて大文字で格納されていることに注意してください。

2.4.1 TABLE_NAME列

TABLE_NAME列には、SDO_GEORASTER型の1つ以上の列を含むGeoRaster表の名前が含まれます。

2.4.2 COLUMN_NAME列

COLUMN_NAME列には、TABLE_NAME列で指定されたGeoRaster表のSDO_GEORASTER型の列の名前が含まれます。

2.4.3 METADATA_COLUMN_NAME列

今回のリリースでは、METADATA_COLUMN_NAME列は無視されます。

2.4.4 RDT_TABLE_NAME列

RDT_TABLE_NAME列には、TABLE_NAME列およびCOLUMN_NAME列で指定された表および列に関連付けられたラスター・データ表の名前が含まれます。(ラスター・データ表の詳細は、「SDO_RASTERオブジェクト型およびラスター・データ表」を参照してください。)

2.4.5 RASTER_ID列

RASTER_ID列には、RDT_TABLE_NAME列の値との組合せによって各GeoRasterオブジェクトを一意に識別する数値が含まれます。

2.4.6 OTHER_TABLE_NAMES列

今回のリリースでは、OTHER_TABLE_NAMES列は無視されます。

2.5 GeoRasterのXMLスキーマ

GeoRasterでは、GeoRasterメタデータを格納および管理するためにXMLスキーマを定義します。このXMLスキーマの定義は、「GeoRasterメタデータのXMLスキーマ」に記載されています。GeoRaster XMLスキーマによって定義される名前空間はhttp://xmlns.oracle.com/spatial/georasterであり、Oracleで使用するために予約されています。SQL XMLファンクションまたはXMLTypeメソッドを使用してGeoRasterメタデータ・ドキュメントを操作する場合は、この名前空間を参照する必要があります。

GeoRasterは、SDO_GEOR_XMLSCHEMA_TABLEという名前の表を使用して、GeoRasterメタデータのXMLスキーマおよびその他の情報を格納します。この表は、MDSYSスキーマに存在します。この表を参照する場合、スキーマ名を含める必要があります。次に例を示します。

DESCRIBE mdsys.sdo_geor_xmlschema_table
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ID                                        NOT NULL NUMBER
GEORASTERFORMAT                                    VARCHAR2(1024)
XMLSCHEMA                                          CLOB

表2-7に、SDO_GEOR_XMLSCHEMA_TABLE表の列の型の説明を示します。

表2-7 SDO_GEOR_XMLSCHEMA_TABLE表の列

列名

データ型

説明

id

NUMBER

Oracleによって割り当てられるID番号。値1から50は、Oracleで使用するために予約されています。

georasterFormat

VARCHAR2(1024)

Oracleによって割り当てられるGeoRasterフォーマット識別子。値GEORASTERは、Oracleで使用するために予約されています。

xmlSchema

CLOB

GeoRasterメタデータのXMLスキーマの定義。この定義は、「GeoRasterメタデータのXMLスキーマ」に記載されています。

この表にはGeoRasterビューが定義されていません。これは、主に、この表でGeoRasterのXMLスキーマの情報を問い合せる上級ユーザーを対象としています。

GeoRasterのXMLスキーマに含まれていない他のメタデータに対する独自のXMLスキーマを定義して、この表の新しい行にそのメタデータを格納する場合を除き、この表の内容を変更しないことをお薦めします。独自のメタデータの行を追加する場合、ID列値に1から50またはGEORASTERFORMAT列値にGEORASTERを使用しないでください。これらの列値は、Oracleで使用するために予約されています。XMLSCHEMA列値を指定する場合は、独自のXMLスキーマに対して一意の名前空間を選択し、データベース内で一意である対応するスキーマURLを使用して登録する必要があります。(詳細は、『Oracle XML DB開発者ガイド』を参照してください。)

3 基本的なGeoRaster操作

この章では、GeoRasterの主な基本的操作を実行する方法について説明します。GeoRasterデータベースを構築して管理するための通常のワークフローは、次のほとんどまたはすべての手順で構成されます。

1. GeoRaster表およびラスター・データ表を作成します(「GeoRaster表およびラスター・データ表の作成」を参照)。

2. GeoRasterオブジェクトを初期化または作成します(「新しいGeoRasterオブジェクトの作成」を参照)。

3. GeoRasterユーザー用の一時表領域を追加します(「GeoRasterユーザーに対する一時表領域の追加」を参照)。

4. ラスター・イメージまたはグリッドをロードします(「ラスター・データのロード」を参照)。

5. 検証されていないGeoRasterオブジェクトを検証します(「GeoRasterオブジェクトの検証」を参照)。

6. 必要に応じて、GeoRasterオブジェクトを地理参照します(「GeoRasterオブジェクトの地理参照」を参照)。

7. GeoRasterオブジェクトの空間エクステントを設定します(「空間エクステントの生成と設定」を参照)。

8. 空間索引または他の索引あるいは両方を作成します(「GeoRasterオブジェクトの索引付け」を参照)。

9. GeoRasterオブジェクトを問合せおよび検索します(「GeoRasterオブジェクトの問合せと検索」を参照)。

10. 必要に応じて、GeoRasterの記憶域形式を変更および最適化します(「ラスター記憶域の変更と最適化」を参照)。

11. GeoRasterオブジェクトをコピーします(「GeoRasterオブジェクトのコピー」を参照)。

12. GeoRasterメタデータを問合せおよび更新します(「GeoRasterメタデータの問合せおよび更新」を参照)。

13. セル・データを問合せおよび更新します(「GeoRasterセル・データの問合せおよび更新」を参照)。

14. セル値を内挿します(「セル値の内挿」を参照)。

15. GeoRasterオブジェクトを処理および分析します(「GeoRasterオブジェクトの処理および分析」を参照)。

16. GeoRaster操作の進行状況を監視およびレポートします(「GeoRaster操作の進行状況の監視およびレポート」を参照)。

17. 必要に応じて、GeoRasterオブジェクトを圧縮します(「GeoRasterオブジェクトの圧縮と解凍」を参照)。

18. GeoRasterオブジェクトを削除し、GeoRaster表およびRDTを削除します(「GeoRasterオブジェクトの削除とGeoRaster表およびRDTの削除」を参照)。

19. GeoRasterオブジェクトを表示します(「GeoRasterオブジェクトの表示」を参照)。

20. GeoRasterオブジェクトをエクスポートします(「GeoRasterオブジェクトのエクスポート」を参照)。

21. トランザクションをコミットする前にGeoRasterオブジェクトを更新します(「コミット前のGeoRasterオブジェクトの更新」を参照)。

22. テンプレート関連のサブプログラムを使用してGeoRasterアプリケーションを開発します(「テンプレート関連のサブプログラムを使用したGeoRasterアプリケーションの開発」を参照)。

23. Workspace ManagerおよびLabel SecurityでGeoRasterを使用します(「Workspace ManagerおよびLabel SecurityでのGeoRasterの使用」を参照)。

24. GeoRasterオブジェクトによる表領域の効率的な使用をメンテナンスします(「GeoRasterオブジェクトによる表領域の効率的な使用のメンテナンス」を参照)。

25. データベースのGeoRasterオブジェクトおよびシステム・データをメンテナンスします(「データベースのGeoRasterオブジェクトおよびシステム・データのメンテナンス」を参照)。

26. データベース間でGeoRasterデータを転送します(「データベース間でのGeoRasterデータの転送」を参照)。

27. GeoRasterデータにOracle Databaseのトランスポータブル表領域機能を使用します(「GeoRasterデータでのトランスポータブル表領域の使用」を参照)。

GeoRasterオブジェクトを作成し、データをロードしてGeoRasterオブジェクトを検証した後は、アプリケーションの要件に応じて、残りの操作を任意の順序で実行できます。特定の操作をスキップすることもできます。

SQLを使用して実行できる操作と、PL/SQLブロックを使用して実行する必要がある操作があります。GeoRasterオブジェクトのメタデータやセル・データを挿入、更新、形式変更、圧縮、解凍または削除した後は、変更をコミットする前にGeoRasterオブジェクトを更新する必要があります(「コミット前のGeoRasterオブジェクトの更新」を参照)。これらの操作の例の詳細は、「GeoRasterのPL/SQLおよびJavaデモ・ファイル」のデモ・ファイルおよび「SDO_GEORパッケージのリファレンス」に示す例を参照してください。

このマニュアルの後続の章では、高度なトピックについて説明し(「ラスター代数および分析」および 「イメージ処理および仮想モザイク」)、GeoRaster PL/SQLパッケージに関する詳細なリファレンス情報を提供しています( 「SDO_GEORパッケージのリファレンス」、 「SDO_GEOR_ADMINパッケージのリファレンス」、 「SDO_GEOR_AGGRパッケージのリファレンス」、 「SDO_GEOR_RAパッケージのリファレンス」および 「SDO_GEOR_UTLパッケージのリファレンス」)。

3.1 GeoRaster表およびラスター・データ表の作成

GeoRasterオブジェクトで操作を行う前に、GeoRaster表および(作成していない場合は)1つ以上のラスター・データ表を作成する必要があります。

3.1.1 GeoRaster表の作成

GeoRaster表は、SDO_GEORASTER型の1つ以上の列を含む任意の表です。この列は、別のユーザー定義のオブジェクト型の属性列とすることも可能です。例3-1では、CITY_IMAGESというGeoRaster表を作成します。この表には、GeoRasterオブジェクトを格納するためのIMAGEという列が含まれています。

例3-1 City ImagesのGeoRaster表の作成

CREATE TABLE city_images (image_id NUMBER PRIMARY KEY, image_description VARCHAR2(50), image SDO_GEORASTER);

GeoRaster表の詳細は、「GeoRasterの物理記憶域」を参照してください。

3.1.2 ラスター・データ表の作成

GeoRaster表を作成したら、GeoRaster表のオブジェクトとともに使用する1つ以上のラスター・データ表(RDT)を作成する必要があります。ラスター・データ表は、オブジェクト表として、またはリレーショナル表として作成できます。RDTを作成する場合、LOB記憶域形式のSecureFiles LOB (SecureFiles)を使用する必要があります。SecureFilesを使用すると、従来のLOB記憶域パラダイムのBasicFiles LOB (BasicFiles)を使用する場合と比較して、GeoRaster操作のパフォーマンスが大幅に向上します。

例3-2では、SecureFilesを使用してラスター・データ表を作成します。RDTを使用して、CITY_IMAGES表または他のGeoRaster表に含まれる1つ以上のGeoRasterオブジェクトのすべてのラスター・ブロックを格納します。(GeoRasterオブジェクトを作成するまで、GeoRasterオブジェクトとラスター・データ表の関連は確立されません(「新しいGeoRasterオブジェクトの作成」を参照))。

例3-2 SecureFilesを使用したラスター・データ表の作成

CREATE TABLE city_images_rdt OF SDO_RASTER
(PRIMARY KEY (rasterID, pyramidLevel, bandBlockNumber,
rowBlockNumber, columnBlockNumber))
TABLESPACE im_tbs_2
LOB(rasterBlock) STORE AS SECUREFILE
(CACHE);

例3-3 SecureFilesを使用したラスター・データ表(リレーショナル)の作成

例3-3では、同様にSecureFilesを使用して例3-2と同じ名前のラスター・データ表を作成しますが、オブジェクト表ではなくリレーショナル表としてそれを作成します。

CREATE TABLE city_images_rdt
(rasterID NUMBER,
pyramidLevel NUMBER,
bandBlockNumber NUMBER,
rowBlockNumber NUMBER,
columnBlockNumber NUMBER,
blockMBR SDO_GEOMETRY,
rasterBlock BLOB,
CONSTRAINT pkey PRIMARY KEY (rasterId, pyramidLevel, bandBlockNumber,
rowBlockNumber, columnBlockNumber))
LOB (rasterblock) STORE AS SECUREFILE(cache);

ラスター・データ表のCREATE TABLE文には、次の句を含める必要があります(前述の例に含まれています)。

(PRIMARY KEY (rasterID, pyramidLevel, bandBlockNumber,
rowBlockNumber, columnBlockNumber))

このPRIMARY KEY句によって、ラスター・データ表にBツリー索引を作成します(この索引は、最適な問合せパフォーマンスのために必須です)。

BasicFilesを使用する場合、より大きいCHUNKサイズ(16または32KB)を指定して、LOB記憶域のパフォーマンスを向上できます。SecureFilesでは、CHUNKサイズ・パラメータを指定する必要はありませんが、別のいくつかの記憶域パラメータを考慮する必要があります。SecureFiles LOBを使用するラスター・データ表は、自動セグメント領域管理オプション付きの表領域に作成する必要があります。Oracle SecureFilesの使用方法とBasicFiles LOBのパフォーマンス上の考慮事項の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

LOB記憶域の指定を含む、表の作成のリファレンス情報については、『Oracle Database SQL言語リファレンス』のCREATE TABLE文に関する項を参照してください。

ラスター・データ表を作成する場合のキーワードおよびオプションの詳細は、「ラスター・データ表」を参照してください。

3.1.3 GeoRaster DMLトリガー

GeoRasterの内部表とデータ構造の一貫性および整合性を保証するために、ユーザーがGeoRaster表(1つ以上のGeoRaster列を含む表)を作成すると、各GeoRaster列に対応する一意のDMLトリガーがGeoRasterにより自動的に作成されます。ただし、ALTER TABLE文を使用して1つ以上のGeoRaster列を追加する場合は、SDO_GEOR_UTL.createDMLTriggerプロシージャをコールして、追加した各GeoRaster列に対してDMLトリガーを作成する必要があります。データベース・アップグレードやデータ移行などの一部の使用例では、SDO_GEOR_UTL.recreateDMLTriggersプロシージャをコールしてすべてのGeoRaster列にDMLトリガーを再作成できます。

トリガーが起動されるのは、GeoRasterオブジェクトに影響を及ぼすデータ操作言語(DML)の各操作(行の挿入、GeoRasterオブジェクトの更新、および行の削除)の実行後です。

トリガーが起動されると、次のアクションが自動的に実行されます。

- 挿入操作を実行すると、トリガーによって、GeoRaster表の名前、GeoRaster列の名前、ラスター・データ表の名前およびrasterID値を含む行がUSER_SDO_GEOR_SYSDATAビューに挿入されます(「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」を参照)。同一のエントリがすでに存在する場合、例外が発生します。

- 更新操作を実行すると、新しいGeoRasterオブジェクトがNULLまたは空である場合、トリガーによって、古いGeoRasterオブジェクトが削除されます。古いGeoRasterオブジェクトのUSER_SDO_GEOR_SYSDATAビューにエントリが存在しない場合(古いGeoRasterオブジェクトがNULLの場合)、トリガーによって、新しいGeoRasterオブジェクトのビューに行が挿入されます。古いGeoRasterオブジェクトのUSER_SDO_GEOR_SYSDATAビューにエントリが存在する場合、トリガーによって、新しいGeoRasterオブジェクトを反映するように情報が更新されます。

- 削除操作を実行すると、トリガーによって、GeoRasterオブジェクトのラスター・データ・ブロックがラスター・データ表から削除され、そのGeoRasterオブジェクトの行がUSER_SDO_GEOR_SYSDATAビューから削除されます。

3.2 新しいGeoRasterオブジェクトの作成

GeoRaster表にGeoRasterイメージを格納する前に、GeoRasterオブジェクトを作成し、作業の開始前にそのオブジェクトをGeoRaster表に挿入する必要があります。新しいGeoRasterオブジェクトを作成するには、次の方法があります。

- SDO_GEOR.initファンクションを使用して、空のGeoRasterオブジェクトを初期化します。

- SDO_GEOR.createBlankファンクションを使用して、空白のGeoRasterオブジェクトを作成します。

オブジェクトが適切に作成されていない場合(オブジェクトがアトミックなNULLの場合)、いずれのGeoRaster操作も実行できません。SDO_GEOR.initおよびSDO_GEOR.createBlankファンクションは、ラスター・データ表の名前およびラスターID値が指定されていない場合に、それらの値でGeoRasterオブジェクトを初期化します。GeoRaster DMLトリガーは、ラスター・データ表の名前とラスターID値の組合せが現行ユーザーに対して一意であることを保証します。

(SDO_GEOR.importFrom、SDO_GEOR.subset、SDO_GEOR.copyなどの別のGeoRasterプロシージャの結果として)新しいGeoRasterオブジェクトにラスター・セル・データが含まれ、この新しいGeoRasterオブジェクトに対するラスター・データ表が存在しない場合は、まずラスター・データ表を作成する必要があります。ラスター・データ表を作成する方法とその例の詳細は、「ラスター・データ表の作成」を参照してください。

GeoRasterのデータについて考えられる問題(その一部は「データベースのGeoRasterオブジェクトおよびシステム・データのメンテナンス」で説明しています)を防止するには、初期化済のGeoRasterオブジェクトがGeoRasterのシステム・ビューに登録されている必要がありますが、これはGeoRasterオブジェクトをGeoRasterの表に挿入したときに自動的に行われます。これは、そのGeoRasterオブジェクトに対して他のなんらかの操作を行う前に実行する必要があります。ソースまたはターゲットのGeoRasterオブジェクトが登録されていない場合、ラスター・データ表を操作する必要のあるGeoRaster操作を実行すると、例外が発生します。

3.3 GeoRasterユーザーに対する一時表領域の追加

GeoRasterデータベースは一般的に非常に大きく、操作によっては一時表領域が使用されることがあります。GeoRaster操作(特に大規模なモザイク処理操作)に圧縮が含まれる場合、圧縮済または未圧縮の中間データを格納するために一時領域が必要です。GeoRasterユーザーが一時表領域を持たない場合、データベース・システムの一時表領域が使用されます。これは、効率的ではなく、モザイク処理などの操作速度が低下する可能性があります。そのため、常にGeoRasterユーザーに一時表領域を作成する必要があります。次に例を示します。

CONNECT system/<password>;
CREATE TEMPORARY TABLESPACE geor_temp TEMPFILE 'geor_temp_1.f' SIZE 1G AUTOEXTEND ON;
ALTER USER <georaster_user> TEMPORARY TABLESPACE geor_temp;

通常、必要とされる一時領域の容量は限定されます。ただし、大規模なモザイク処理で、結果が圧縮される場合、必要とされる一時領域は、結果の未圧縮のイメージ・サイズと等しくなります。したがって、GeoRasterユーザー用の一時表領域を作成するときにAUTOEXTEND ONを指定します。

3.4 ラスター・データのロード

イメージまたはラスター・データをロードおよびエクスポートする場合、常にサード・パーティのETLツールの使用を検討してください(「GeoRasterツール: ビューア、ローダー、エクスポータ」の「注意」を参照)

GeoRasterの機能を使用してラスター・データをロードする場合、次の方法があります。

- SDO_GEOR.importFromプロシージャをコールして、イメージをGeoRasterオブジェクトにロードします。

- GeoRasterのJAIベースのローダー・ツールまたはビューア・ツールを使用します(「JAIベースのビューア、ローダーおよびエクスポータ」を参照)。

- 同時バッチ・ロードおよびエクスポート用のGDALベースのETLツールを使用します。このツールの詳細は、「同時バッチ・ロードおよびエクスポートのためのGDALベースのETLウィザード」を参照してください。

最初の2つのオプション(SDO_GEOR.importFromとJAIベースのツール)では、次のことを実行できます。

- ラスター・データを圧縮し、データをJPEG圧縮またはDEFLATE圧縮されたGeoRasterオブジェクトに保存します。

- ESRIワールド・ファイルまたはDigital Globe RPCテキスト・ファイル(.rpb)を既存のGeoRasterオブジェクトにロードし、リロードせずにラスター・データを地理参照します。ワールド・ファイルでSRIDを指定し、データの空間エクステントを生成することもできます。

- ラスター・データの有無にかかわらず、地理参照とともにGeoTIFF形式のファイルをロードします。GeoTIFFイメージの地理参照情報をロードおよびエクスポートするには、GeoTIFFライブラリが必要です。手順については、「GeoRasterオブジェクトの地理参照」を参照してください。

イメージまたはラスター・ファイルをGeoRasterオブジェクトにロードする場合、ファイル形式によってブロック化方法は大きく異なる可能性があるため、常にデータの適切なブロック化を考慮して適用してください。一般的に、ブロック化サイズは256x256以上である必要があります。ブロック化サイズに絶対的なルールはありませんが、ラスターが大きくなるほど、使用する可能性のあるブロック化サイズも大きくなります。通常のラスターの場合、512x512から2048x2048が適切です。非常に小さいイメージ(1024x1024x3未満)の場合、通常はブロック化なしが適切な選択です。小さすぎたり(64x64、128x128など)、大きすぎるブロック化サイズや、1ブロック当たりのピクセル数が0.5 (2分の1)、1、8行などの極端なブロック化サイズは避けてください。通常、ブロックの矩形は、正方形または正方形に近い形にする必要があります。異なるアプリケーションごとに、効率的な記憶域と最適なパフォーマンスのバランスを取るようにブロック化を調整できます。

GeoRasterオブジェクトにラスター・データをロードしたら、SDO_GEOR.validateGeoRasterファンクションをコールしてそのオブジェクトが有効であることを確認する必要があります(「 GeoRasterオブジェクトの検証」を参照)。

ESRIワールド・ファイルまたは.rpbファイルには座標系の情報が含まれていないため、ロード操作用に座標参照システムのSRID値を指定することができます。ただし、SRIDを指定しない場合は、ローダーによりGeoRasterオブジェクトのモデルSRIDが0(ゼロ)に設定されます。これは、GeoRasterオブジェクトが無効であり、そのため、SDO_GEOR.setModelSRIDプロシージャを使用してこのオブジェクトに有効なモデル空間を指定する必要があることを意味します。モデル空間の座標系が不明である場合は、SRIDの値を999999に指定できます。これは、座標参照システムが不明であることを意味します。(具体的には、SRID 999999はunknown CRSという座標参照システムに関連付けられます。)モデル空間の実際の座標参照システムがわかった後で、それに応じてSRID値を設定できます。

unknown CRS (SRID 999999)の座標参照システムの詳細は、『Oracle Spatial and Graph開発者ガイド』を参照してください。

3.4.1 ロード前のソース・ラスターの再フォーマット

GeoRasterのJAIベースのローダーでは、BSQインターリーブ形式のソース・ラスター・ファイルがサポートされないため、ファイルが大きすぎるとメモリー不足のエラーが発生する可能性があります。また、その他の制限も適用される場合があります。このような問題を回避するには、ソース・ファイルが適切にロードされるようにソース・ファイルを再フォーマットおよび再ブロック化します。

たとえば、この操作を行う方法の1つに、GDALの使用があります(GDALは、http://www.gdal.orgから入手できるオープン・ソースのラスター変換ライブラリであり、JAI (Java Advanced Imaging)で処理するためにイメージ・ファイルやラスター・ファイルを再フォーマットまたは再ブロック化できます)。GDALは、GeoRasterをネイティブにサポートし、GeoRasterオブジェクトを直接インポートおよびエクスポートでき、また、GeoRasterオブジェクトを処理できます(詳細は、http://www.oracle.com/technetwork/database/enterprise-edition/getting-started-with-gdal-133874.pdfを参照してください)。また、GDALを使用してTFWファイルを生成することもできます。たとえば、GDALコマンドラインまたは(一括変換の場合は)シェルを使用して、それぞれ単一行で次の2つのようなコマンドを実行します。

gdal_translate -of GTiff -co "TFW=YES" -co "INTERLEAVE=PIXEL" -co "TILED=YES" D:\my_image.tif D:\my_new_image.tif

gdal_translate -of GTiff -co "TILED=YES" -co "TFW=YES" D:\my_image.ecw D:\my_new_image.tif

前述の例で、最初のコマンドはTFWファイルを生成し、インターリーブを(JAIでサポートされる)BIPに変更して、イメージを256x256に再ブロック化します。2つ目のコマンドは、ECWをTIFFに変換し、TFWを生成してイメージを再ブロック化します。

その後、GeoRasterローダー・ツール(「GeoRasterツール: ビューア、ローダー、エクスポータ」を参照)を使用して再ブロック化を指定し、イメージを適切にロードして、後でデータベースから効率的に取得できるようにします。次に、単一コマンドの例を示します。

java -Xmx1024m oracle.spatial.georaster.tools.GeoRasterLoader mymachine db11 6521 georaster georaster thin 32 T globe image "blocking=true, blocksize=(512,512,3)" "D:my_image.tif,2,RDT_15, D:\my_image.tfw,82213"

SDO_GEOR.importFromをコールして非常に大きいイメージをロードしようとしたときにメモリー不足のエラーが発生した場合は、異なるブロック化サイズ・パラメータでイメージをロードするか、ロード前にGDALを使用してイメージをより小さい内部矩形サイズに再ブロック化してください。極端に大きいイメージの場合、GDALを使用して、そのイメージをより小さいサイズ(JAIで処理できるサイズ)の複数のイメージ・ファイルにタイル処理することや、GDALを使用してそのイメージを直接ロードおよびエクスポートすることも可能です。

3.5 GeoRasterオブジェクトの検証

GeoRasterオブジェクトを使用する前、またはGeoRasterオブジェクトのラスター・データおよびメタデータを手動で編集した後、そのオブジェクトが有効であることを確認する必要があります。GeoRasterオブジェクトの検証では、GeoRasterオブジェクトの登録の確認、メタデータとラスター・セル・データの確認、およびメタデータとデータに一貫性があるかどうかの確認が行われます。たとえば、検証では、ラスター型、ディメンション情報およびセル・ブロックの実際のサイズが確認され、その他の確認が行われます。

GeoRasterローダー・ツール(「GeoRasterツール: ビューア、ローダー、エクスポータ」を参照)を使用した場合、GeoRasterオブジェクトはロード操作時に検証されています。

GeoRasterは、次の検証サブプログラムを提供します。

- SDO_GEOR.validateGeoRaster: セル・データおよびメタデータを含む、GeoRasterオブジェクトを検証します。オブジェクトが有効な場合はTRUEを戻します。有効でない場合は、GeoRasterオブジェクトが無効である理由を示すOracleエラー・コード、FALSE(不明な理由によって検証が失敗した場合)、またはNULL(GeoRasterオブジェクトがNULLの場合)のいずれかを戻します。GeoRasterオブジェクトの作成後は、常にこのファンクションを使用する必要があります。

- SDO_GEOR.schemaValidate: GeoRasterのXMLスキーマに対してメタデータを検証します。SDO_GEOR.validateGeoRasterファンクションによってエラー・コード13454が戻された場合、このファンクションを使用してエラーの場所を特定できます。SDO_GEOR.schemaValidateおよびSDO_GEOR.validateGeoRasterファンクションは、空間エクステント・ジオメトリを検証しません。

- SDO_GEOR.validateBlockMBR: ラスター・データ表に格納された各ラスター・ブロックに関連するblockMBRジオメトリを検証します。無効なblockMBRジオメトリが存在する場合は、SDO_GEOR.generateBlockMBRプロシージャをコールしてそれらを再生成します。

3.6 GeoRasterオブジェクトの地理参照

地理参照(「地理参照」を参照)によって、GeoRasterデータのセル座標と実際の地上座標(またはいくつかのローカル座標)が関連付けられます。GeoRasterオブジェクトを地理参照する必要がある場合、次の方法を使用できます。

- 元のイメージがすでに地理参照されており、その地理参照情報がESRIワールド・ファイルまたはRPC係数を含む.rpbファイルに格納されている場合は、SDO_GEOR.importFromプロシージャを使用して、ファイルまたはCLOBオブジェクトから、(FILEまたはBLOB形式の)イメージ・データ自体とともに、ESRIワールド・ファイルまたは.rpbファイルをロードできます。GeoRasterのクライアント側ローダー・ツール(「GeoRasterツール: ビューア、ローダー、エクスポータ」を参照)を使用して、イメージ・ファイル自体とともに、ESRIワールド・ファイルまたは.rpbファイルをファイルからロードすることもできます。
ESRIワールド・ファイルまたは.rpbファイルではモデル座標系が指定されないため、Oracle SRIDを使用して地理参照されるGeoRasterオブジェクトのモデル空間を、次のいずれかの方法で設定できます。ワールド・ファイルとともにSDO_GEOR.importFromプロシージャまたはGeoRasterのクライアント側ローダー(「GeoRasterツール: ビューア、ローダー、エクスポータ」を参照)に対してSRIDをパラメータとして指定するか、またはワールド・ファイルのロード後に、SDO_GEOR.setModelSRIDプロシージャをコールします。SDO_GEOR.setModelSRIDプロシージャをコールして、地理参照されるGeoRasterオブジェクトのモデル空間を変更することもできます。

- 元のイメージが、地理参照されるGeoTIFFイメージの場合、SDO_GEOR.importFromプロシージャを使用し、入力形式としてGEOTIFFを指定することで、地理参照とともにイメージをロードできます。GeoTIFFイメージからラスター・イメージ・データなしで地理参照情報のみを既存のGeoRasterオブジェクトにロードするには、raster=false記憶域パラメータを追加します。GeoTIFFの構成値が、Oracle Spatial and Graphによって認識されるSRIDと一致しない場合、srid記憶域パラメータ付きでバックアップSRIDを指定できます。
GeoTIFF PixelIsAreaラスター空間は、左上角を基準とするGeoRasterのセル座標系と同じです。GeoTiffへのエクスポートは、常にPixelIsAreaラスター空間が対象となります(GeoRasterオブジェクトが中央を基準とするセル座標系の場合は、アフィン変換で2分の1ピクセル単位の調整が行われます)。GeoTIFFからのインポートは、常に中央を基準とするGeoRasterのセル座標系が対象となります(GeoTIFFファイルがPixelIsAreaラスター空間で指定されている場合は、アフィン変換で2分の1ピクセル単位の調整が行われます)。

GeoRasterのクライアント側ローダー・ツール(「GeoRasterツール: ビューア、ローダー、エクスポータ」を参照)を使用して、geotiff=true記憶域パラメータの指定により地理参照とともにGeoTIFFイメージをロードすることもできます。このパラメータを省略するか、geotiff=falseを指定すると、イメージは地理参照なしの単純なTIFFイメージとしてロードされます。rasterおよびsrid記憶域パラメータも、クライアント側ローダー・ツールに適用されます。

GeoRasterのクライアント側ツールでGeoTIFFイメージをロードまたはエクスポートするには、次のGeoTIFFライブラリを現在のCLASSPATH定義に追加します。

- xtiff-jai.jar (SourceForge Extensible-TIFF-JAIグループから入手可能)

- geotiff-jai.jar (SourceForge GeoTIFF-JAIグループから入手可能)

SDO_GEOR.importFromまたはSDO_GEOR.exportToプロシージャでGeoTIFFイメージをロードまたはエクスポートする場合は、これらのライブラリをMDSYSスキーマにロードする必要があります。これを行うには、SYSTEMユーザーとしてデータベースに接続し、xtiff-jai.jarおよびgeotiff-jai.jarファイルへのパスを反映するように必要に応じて$ORACLE_HOME/md/admin/sdoldgtf.sqlを編集し、sdoldgtf.sql SQL*Plusスクリプトを実行します。sdoldgtf.sqlスクリプトを使用するかわりに、次のコマンドを入力することもできます。

loadjava -user system/password@database -resolve -force -synonym -schema MDSYS -grant PUBLIC xtiff-jai.jar

loadjava -user system/password@database -resolve -force -synonym -schema MDSYS -grant PUBLIC geotiff-jai.jar

データベースをOracle Database 11g より前のリリースにダウングレードする場合は、$ORACLE_HOME/md/admin/sdormgtf.sqlのスクリプトを使用してこれらのライブラリをアンインストールする必要があります。これを行うには、xtiff-jai.jarおよびgeotiff-jai.jarファイルへのパスを反映するように必要に応じてスクリプトを編集し、sdormgtf.sqlスクリプトを実行するか、または次のコマンドを入力します。

dropjava -user system/password@database -resolve -force -synonym -schema MDSYS -grant PUBLIC xtiff-jai.jar

dropjava -user system/password@database -resolve -force -synonym -schema MDSYS -grant PUBLIC geotiff-jai.jar

- SDO_GEOR.setSRSプロシージャを使用して、GeoRaster SRSメタデータに直接アクセスすることで地理参照情報を追加、変更および削除できます。たとえば、SDO_GEOR_SRSオブジェクトを作成し、係数および関連する地理参照情報を割り当てた後、SDO_GEOR.setSRSプロシージャをコールして、任意のGeoRasterオブジェクトの空間リファレンス情報を追加または更新できます。SDO_GEOR.setSRSプロシージャを使用して、サポートされるすべての関数フィッティング地理参照モデルに対応する空間参照情報を設定できます。既存のDLTモデルや既存のRPCモデルからSRS情報を設定する方法の例は、SDO_GEOR.setSRSプロシージャのリファレンスの項を参照してください。
1つのGeoRasterオブジェクトが別のGeoRasterオブジェクトと同じSRS情報を持つことがわかっている場合、SDO_GEOR.getSRSファンクションをコールしてこのGeoRasterオブジェクトからSDO_GEOR_SRSオブジェクトを取得し、次にSDO_GEOR.setSRSプロシージャをコールして最初のGeoRasterオブジェクトを地理参照できます。

- アフィン変換を使用してGeoRasterオブジェクトを地理参照できる場合、SDO_GEOR.georeferenceプロシージャをコールしてGeoRasterオブジェクトを直接地理参照できます。SDO_GEOR.georeferenceのリファレンス情報に記載されているとおり、このプロシージャでは、係数A、B、C、D、E、Fおよびその他の情報を使用し、それらを係数a、b、c、d、e、fに変換してGeoRasterオブジェクトの空間参照情報に格納します。元のラスター・データが幾何補正されており、基点(左上角)のモデル座標が(x0, y0)で、空間解像度値(スケール)がsである場合、A = s、B = 0、C = x0、D = 0、E = -s、F = y0となります。

- 地上基準点(GCP)を保持しているか、独自にGCPを収集する場合、SDO_GEOR.georeferenceプロシージャをコールしてGeoRasterオブジェクトを地理参照できます。詳細は、「高度な地理参照」を参照してください。

地理参照されるGeoRasterオブジェクトのSRS情報に基づいたGeoRasterの座標情報の変換では、特定のセル(ラスター)座標に関連付けられたモデル(地上)座標を検索します。または、その反対に特定のモデル(地上)座標に関連付けられたセル(ラスター)座標を検索します。つまり、次の操作を実行できます。

- 任意のセル座標に対して、SDO_GEOR.getModelCoordinateファンクションを使用して、関連付けられたモデル空間座標を検索できます。たとえば、イメージ上の点を指定して、その点に関連付けられた緯度と経度を検索できます。

- モデル空間座標に対して、SDO_GEOR.getCellCoordinateファンクションを使用して、関連付けられたセル座標を検索できます。たとえば、緯度と経度の座標を指定して、これらの座標に関連付けられたイメージ上のセルを検索できます。

3.7 空間エクステントの生成と設定

GeoRasterオブジェクトが作成される際、その空間エクステント(「spatialExtent属性」に示すspatialExtent属性)は、モデル空間の座標系の中では囲まれたジオメトリである必要はありません。空間エクステント(フットプリント)・ジオメトリは、最初はNULLであるか、またはセル空間の座標系や他の座標系を表すことがあります。空間エクステントを生成および設定する機能は、世界的な規模の範囲や広い地域の範囲の大容量のGeoRasterデータベースを作成する場合に便利です。この場合、空間エクステントは世界的な規模の1つの測地座標系の中にあり、GeoRasterオブジェクト(イメージ、DEMなど)は異なる投影座標系の中にあります。このような場合には、空間エクステント上に空間(Rツリー)索引を作成できますが、すべての空間エクステント・ジオメトリは同じSRID値を持つ必要があります。

表内の各GeoRasterオブジェクトの空間エクステント・ジオメトリがモデル空間の座標系(または使用する他の座標系)に対して正しくなるようにするには、空間エクステントを設定する必要があります。また、空間エクステント・ジオメトリで空間索引を使用する(「GeoRasterオブジェクトの索引付け」を参照)には、索引付けされたすべてのジオメトリが同じ座標系に基づいている(つまり同じSRID値を持つ)必要があります。

空間エクステントは、次のいずれかの方法で設定できます。SDO_GEOR.importFromプロシージャまたはGeoRasterクライアント側のローダー(「GeoRasterツール: ビューア、ローダー、エクスポータ」を参照)に対してspatialExtent=TRUEを記憶域パラメータとして指定するか、またはSQL UPDATE文を使用します。SDO_GEOR.importFromプロシージャまたはローダーを使用する場合、SRIDはNULLまたは0(ゼロ)にはできません。また、GeoRasterの空間エクステントにRツリー索引が存在する場合は、空間エクステントのSRIDは既存の空間索引のSRIDと一致する必要があります。それ以外の場合は、空間エクステントはNULLに設定されます。

さらに、空間エクステント・ジオメトリがない場合は、SDO_GEOR.generateSpatialExtentファンクションを使用して作成し、そのジオメトリを使用してGeoRasterオブジェクトを更新できます。次の例では、(「GeoRaster表の作成」の例3-1で作成した)CITY_IMAGES表のGeoRasterオブジェクトの空間エクステント・ジオメトリを更新し、そのオブジェクトの空間エクステント(モデル座標系を反映しているもの)を生成します。

UPDATE city_images c
SET c.image.spatialExtent = sdo_geor.generateSpatialExtent(image)
WHERE c.image_id = 100;
COMMIT;

GeoRasterオブジェクトの空間エクステント・ジオメトリがわかっている場合、または空間エクステント・ジオメトリをモデル空間以外の座標系に基づくようにする場合は、SDO_GEOMETRYオブジェクトを作成するか、または表から選択します。その後、次の例に示すように、GeoRasterオブジェクトを更新して、その空間エクステント属性が対象のジオメトリに設定されるようにします。

DECLARE
geom sdo_geometry;
BEGIN
-- Set geom to an SDO_GEOMETRY object that covers the spatial extent
-- of the desired GeoRaster object. If necessary, perform coordinate
-- system transformation before setting geom.
-- geom := sdo_geometry(...);
UPDATE city_images c
SET c.image.spatialExtent = geom WHERE c.image_id = 100;
COMMIT;
END;

3.7.1 GeoRaster表に空間索引が含まれる場合の特別な考慮事項

GeoRaster空間エクステントに空間Rツリー索引を作成する場合(「GeoRasterオブジェクトの索引付け」を参照)、すべての空間エクステント・ジオメトリは同じSRID値を持つ必要があります。ただし、GeoRasterオブジェクトは異なるモデルSRIDを持つ場合があり、ほとんどのGeoRaster操作では、1つ以上のソースGeoRasterオブジェクトのモデルSRIDに基づいて、出力GeoRasterオブジェクトに空間エクステントが自動的に生成されます。これは、空間エクステントを持つ結果のGeoRasterオブジェクトがGeoRaster表に更新される場合、その表ではspatialExtent属性に基づいて作成された空間索引がすでに存在し、異なるSRIDが使用されている可能性があるため、問題となることがあります。

このような場合には、挿入または更新操作を行う前に、空間索引と同じSRIDに空間エクステントを変換する必要があります。次の例では、モザイク処理を実行しますが、結果のGeoRasterオブジェクトの空間エクステントをSRID 8307に変換してから、そのオブジェクトでGeoRaster表を更新しています。

DECLARE
gr sdo_georaster;
BEGIN
SELECT georaster INTO gr FROM mosaic_test WHERE georid=1 FOR UPDATE;
sdo_geor.mosaic('mosaic_data', 'georaster', gr, 'blocksize=(512,512)');
-- Transform the spatial extent geometry, if ncessary.
-- In this example example, the modelSRID of the mosaic is 27302,
-- but the SRID of the spatial index on mosaic_test is 8307.
gr.spatialExtent := sdo_cs.transform(gr.spatialExtent, 8307);
UPDATE mosaic_test SET georaster=gr WHERE georid=1;
END;
/

空間Rツリー索引が存在する場合、挿入または更新操作の後にコミット操作を行うと、挿入または更新されたGeoRasterオブジェクトに空間エクステント・ジオメトリが含まれている場合には、その索引は更新されます。これにより、各操作(特にイメージのバッチ・ロードなどのバッチ・ジョブ)の後にコミットを実行すると、一部の操作の処理速度が低下する可能性があります。通常、索引更新のパフォーマンスとGeoRaster操作とのバランスを取り、操作の後に一括してコミットする方がより効率的です。

たとえば、イメージ・データ・ロード(SDO_GEOR.importFromプロシージャおよびGeoRasterローダー)の後に内部コミット操作が続くため、spatialExtent=TRUEを指定して空間エクステントを生成している間にロードすることは効率的ではありません。かわりに、spatialExtent=FALSEを指定してから後でspatialExtent属性を更新した方が、ロード処理の速度を向上させることができます。

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

GeoRasterデータは、様々な方法で索引付けできます。GeoRasterオブジェクトに作成できる最も重要な索引は、GeoRasterオブジェクトの空間エクステント(フットプリント)・ジオメトリ(「spatialExtent属性」に示す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 and Graph開発者ガイド』を参照してください。

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

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

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

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

3.9 GeoRasterオブジェクトの問合せと検索

GeoRaster表は、ID番号、名前、タイムスタンプ、文字列形式での独自の説明など、様々な列を持つことのできる通常のリレーショナル表です。これらの列には索引を付けることができ、GeoRasterオブジェクトは、このマニュアルの多くの例で示しているとおり、標準的なデータベースの索引付けおよび問合せの文を使用して問い合せることが可能です。

GeoRaster表に空間索引が付けられると(「GeoRasterオブジェクトの索引付け」を参照)、ジオメトリも使用してGeoRasterオブジェクトの問合せまたは検索を迅速に行うことができます。たとえば、次の例に示すとおり、特定の地域内のすべてのイメージ(通常は数百以上)を検出して、イメージごとに完全なピラミッドを生成できます。

DECLARE
type curtype is ref cursor;
my_cursor curtype;
stmt varchar2(1000);
id     number;
gr    sdo_georaster;
gm  sdo_geometry;
BEGIN
-- 1. Define the query area in WGS84 coordinate system
gm := sdo_geometry(2003, 8307, null,
sdo_elem_info_array(1,1003,3),
sdo_ordinate_array(5,6,30,30));

-- 2. Define the query statement on the GeoRaster table (city_images) and column (image)
stmt := 'select id, t.image from city_images t ' ||
'where sdo_inside(t.image.spatialextent, :1)=''TRUE''';

-- 3. Spatially query all images INSIDE the query area
--    and generate full pyramids for each of the images
open my_cursor for stmt using gm;
loop
fetch my_cursor into id, gr;
exit when my_cursor%NOTFOUND;
sdo_geor.generatePyramid(gr, 'resampling=bilinear');
execute immediate 'update city_images set image=:1
where id=:2' using gr, id;
commit;
end loop;
close my_cursor;
END;

このようなブロックをPL/SQLプロシージャにまとめてデータベースに格納し、そのストアド・プロシージャを直接コールすることもできます。これらの機能によって、複雑なプロセスを編成し、データベース管理タスクを自動化できます。

3.10 ラスター記憶域の変更と最適化

ラスター・ブロック・サイズ、セル深度、インターリーブ・タイプなど、ラスター・イメージ・データを格納する方法(または将来格納する方法)の一部を変更または指定できます。既存のGeoRasterオブジェクトに対してこのような変更を行うには、SDO_GEOR.changeFormatCopyプロシージャを使用して、storageParamパラメータで目的の記憶域パラメータ値を指定します。GeoRasterオブジェクトをロードおよび処理し、別のGeoRasterオブジェクトを作成するほとんどのサブプログラムを使用して、記憶域パラメータを指定できます。つまり、SDO_GEOR.importFrom、SDO_GEOR.subset、SDO_GEOR.mosaic、SDO_GEOR.reproject、SDO_GEOR.scaleCopy、SDO_GEOR.mergeLayers、SDO_GEOR.createTemplateなどのファンクションまたはプロシージャをコールするときに、出力形式を指定できます。

結果のGeoRasterオブジェクトのstorageParamパラメータは、ユーザーが決定するデータ・サイズ、次元サイズ、アプリケーション・ニーズなどの要素に基づいている必要があります。ただし、各GeoRasterオブジェクトで最小限の埋込みスペースのみが使用され、アプリケーション要件が引き続き満たされるように、ブロック・サイズは、GeoRasterオブジェクトの次元サイズとユーザーが必要とする目的の出力に基づいて自動的に最適化することもできます。

詳細は、「記憶域パラメータ」、特に表1-1を参照してください。

3.11 GeoRasterオブジェクトのコピー

GeoRasterオブジェクトをコピーするには、そのオブジェクトを空のGeoRasterオブジェクトにコピーするか、既存の有効なGeoRasterオブジェクトを上書きする必要があります。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)ソースGeoRasterオブジェクトと同一のコピーを作成するには、SDO_GEOR.copyプロシージャを使用します。記憶域形式の変更を伴うコピーを作成するには、SDO_GEOR.changeFormatCopyプロシージャ(「ラスター記憶域の変更と最適化」を参照)を使用します。

空のGeoRasterオブジェクトを使用してGeoRasterオブジェクトをコピーするには、次の手順を実行します。

1. 空のGeoRasterオブジェクトを初期化して宛先表に挿入し、その空のGeoRasterオブジェクトを戻します。

2. SDO_GEOR.copyまたはSDO_GEOR.changeFormatCopyプロシージャを使用して、戻された空のGeoRasterオブジェクトに適切なGeoRasterオブジェクトをコピーします。

3. UPDATE文を使用して、コピーしたGeoRasterオブジェクトが宛先表のGeoRaster列に含まれるように宛先表の目的の行を更新します。

4. トランザクションのコミットの準備ができたら、COMMIT文を使用します。

空のGeoRasterオブジェクトを使用したコピー方法の例は、「SDO_GEORパッケージのリファレンス」のSDO_GEOR.copyプロシージャの例を参照してください。

既存のGeoRasterオブジェクトを上書き(置換)してGeoRasterオブジェクトをコピーするには、次の手順を実行します。

1. 更新する既存のGeoRasterオブジェクトを選択します。

2. SDO_GEOR.copyまたはSDO_GEOR.changeFormatCopyプロシージャを使用して、選択したGeoRasterオブジェクトを既存の有効なGeoRasterオブジェクトにコピーするか、または空のGeoRasterオブジェクトにコピーします。

3. UPDATE文を使用して、コピーしたGeoRasterオブジェクトが宛先表のGeoRaster列に含まれるように宛先表の目的の行を更新します。

4. トランザクションのコミットの準備ができたら、COMMIT文を使用します。

既存のGeoRasterオブジェクトを置き換えるため、および記憶域形式を変更するためのコピーの例は、「SDO_GEORパッケージのリファレンス」のSDO_GEOR.changeFormatCopyプロシージャの例を参照してください。

パラレルでのコピーおよびサブセット化は、SDO_GEOR_AGGR.mosaicSubsetプロシージャでサポートされます。パラレル・コピーおよび形式変更コピーの詳細は、「パラレル圧縮、コピー、サブセット化、再投影および幾何補正」の例5-22を参照してください。

3.12 GeoRasterメタデータの問合せおよび更新

GeoRasterオブジェクトのメタデータを問い合せ、そのメタデータの多くの属性を更新できます。

多くのファンクション(ほとんどのファンクションは名前がget で始まる)を使用すると、メタデータおよび補助情報(SDO_GEOR.getTotalLayerNumberやSDO_GEOR.hasPseudoColorなど)を問い合せることができます。

いくつかのサブプログラム(ほとんどのサブプログラムは名前がset で始まる)を使用すると、メタデータおよび補助情報(SDO_GEOR.setSRSやSDO_GEOR.setColorMapなど)を更新できます。

getファンクションの多くには、名前がsetで始まる、対応するプロシージャが存在します。これらのプロシージャは、メタデータ属性の値を設定、変更または削除します。ほとんどのsetプロシージャでは、そのプロシージャがメタデータ属性の値を変更するように設計されている場合、メタデータ属性の値を削除するには、その属性値にNULLを指定します。たとえば、GeoRasterオブジェクトのレイヤーのビン表を削除するには、SDO_GEOR.setBinTableプロシージャをコールして、tableNameパラメータにNULLを指定します。ただし、ほとんどの場合、関連する他の属性に対してはNULL値は指定できません。たとえば、SDO_GEOR.setBinTableプロシージャへのコールでlayerNumberパラメータにNULLを指定することはできません。

次の推奨事項、要件および制限事項に注意してください。

- ほとんどのGeoRasterメタデータは、XMLTypeのメソッドまたはXML固有のSQLファンクション(extractやupdateXMLなど)を使用しても取得および変更できます。ただし、取得または変更するメタデータ属性に対応するGeoRasterのgetまたはsetサブプログラムが存在する場合、XMLTypeインタフェースではなくGeoRasterサブプログラムを使用してください。これは、GeoRasterサブプログラムでは、すべての変更が実行前に検証されるためです。XMLTypeのメソッドまたはXML固有のSQLファンクションをコールしてメタデータを更新する場合は、トランザクションをコミットする前にGeoRasterオブジェクトを検証する必要があります。

- メタデータを直接NULLに設定しないでください。

- GeoRasterオブジェクトのrasterType属性は直接更新しないでください(かわりに、SDO_GEOR.setRasterTypeプロシージャをコールします)。

- ラスター・データ表の名前を変更する場合は、SDO_GEOR_UTL.renameRDTプロシージャを使用します。

- 通常は、GeoRasterオブジェクトの属性を直接更新しないでください(spatialExtent属性を除く)。

- GeoRasterオブジェクトのメタデータまたはセル・データ(あるいはその両方)を更新した後で、データベース・トランザクションをコミットする前に、SQL UPDATE文をコールしてGeoRasterオブジェクトを更新する必要があります(「コミット前のGeoRasterオブジェクトの更新」を参照)。

3.13 GeoRasterセル・データの問合せおよび更新

処理および視覚化のためのGeoRasterオブジェクトのセル(ピクセル)・データを問い合せる場合、1つのセル(ピクセル)、セルの範囲、またはGeoRasterオブジェクトのラスター全体のラスター・データを問い合せることができます。

- SDO_GEOR.getCellValueは、指定した場所の1つ以上のレイヤーまたはバンドのセル値を戻します。

- SDO_GEOR.evaluateDoubleは、指定された内挿方法を使用することで、隣接するセルの値に基づいて直接の場所を評価し、その場所に指定されたバンドまたはレイヤーのラスター値(倍精度の数値)を戻します。(詳細は、「セル値の内挿」を参照してください。)

- SDO_GEOR.getRasterSubsetは、(矩形ウィンドウまたはクリップ・ポリゴン・ジオメトリ、レイヤーまたはバンド番号、およびピラミッド・レベルで指定された) GeoRasterオブジェクトの厳密なサブセットのすべてのセルが含まれる、単一のBLOBオブジェクトを作成します。このBLOBオブジェクトにはラスター・セルのみが含まれ、関連するメタデータは含まれません。

- SDO_GEOR.getRasterDataは、GeoRasterオブジェクトの、指定されたピラミッド・レベルのすべてのセルが含まれる、単一のBLOBオブジェクトを作成します。このBLOBオブジェクトにはラスター・セルのみが含まれ、関連するメタデータは含まれません。

- SDO_GEOR.getRasterBlocksは、指定されたウィンドウの内部に存在するか、またはそのウィンドウの境界に接するすべてのイメージ・データが含まれるオブジェクトを戻します。具体的には、指定されたピラミッド・レベルで、指定されたウィンドウの内部に存在するか、またはそのウィンドウの境界に接するすべてのブロックを識別する、SDO_RASTERSETコレクション型のオブジェクトを戻します。

- SDO_GEOR.reprojectは、ある投影座標系から別の投影座標系にGeoRasterオブジェクト全体を変換するのみでなく、問合せ結果(単一のBLOB)を異なる座標系にオンザフライで直接変換することで、SDO_GEOR.getRasterSubsetと同じ機能を組み入れることができます。

- SDO_GEOR.rectifyは、問合せウィンドウに基づいて、地理参照されるGeoRasterオブジェクトの全部または一部に対して再投影、幾何補正またはオルソ補正を実行します。結果のオブジェクトは、新しいGeoRasterオブジェクト(永続記憶域目的)またはBLOB (一時使用目的)のいずれかです。

- SDO_GEOR_RA.findCellsは、GeoRasterラスター代数言語を使用して、セル値に基づいて新しいGeoRasterオブジェクトを生成します。(詳細は、「セル値ベースの条件付き問合せ」を参照してください。)

- SDO_GEOR_AGGR.mosaicSubsetは、複数のGeoRasterオブジェクトを1つのGeoRasterオブジェクトにモザイク処理します。

- SDO_GEOR_AGGR.getMosaicSubsetは、仮想モザイクを問い合せて、モザイク処理されたサブセットをオンザフライで戻します。

SDO_GEOR.exportToプロシージャを使用して、ラスター・イメージの全体または一部を、BLOBオブジェクト(バイナリ・イメージ形式)または指定したファイル形式タイプのファイルにエクスポートすることもできます。

ラスター更新には、空間ベースとセル値ベースという2つのタイプがあります。

- 空間ベースのラスター更新では、単一値または別のGeoRasterオブジェクトを使用して、指定したウィンドウ内でGeoRasterオブジェクトのラスター・データを完全に更新できます。
指定したウィンドウ内のラスター・セルの値を単一の値に更新または変更するには、SDO_GEOR.changeCellValueプロシージャを使用します。SDO_GEOR.updateRasterプロシージャをコールすると、指定した領域の指定したピラミッド(1つのGeoRasterオブジェクトの重複部分)を、別のGeoRasterオブジェクトの指定したピラミッドと指定したバンドまたはレイヤーで更新できます。SDO_GEOR.changeCellValueおよびSDO_GEOR.updateRasterプロシージャでは、元のラスター・データ(ピラミッド・レベル0)を含むすべてのピラミッド・レベルがサポートされます。

SDO_GEOR_AGGR.appendプロシージャを使用して、新しいイメージで既存のイメージを更新することもできます(「イメージの追加」を参照)。

- セル値ベースのラスター更新では、GeoRasterラスター代数言語を使用して、セル値に基づいてGeoRasterオブジェクトのラスター・データを更新できます。
SDO_GEOR_RA.rasterUpdateは、conditionsパラメータに指定されたブール文字列に基づいて、指定されたGeoRasterオブジェクトからセルを選択し、valsパラメータに指定された式文字列を計算して対応するセル値を更新します。conditionsおよびvalsパラメータは、両方ともラスター代数言語を使用して複雑な式にすることができます。(詳細は、「セル値ベースの条件付き更新(編集)」を参照してください。)

空間ベースまたはラスター・セル値ベースの更新を実行するときに、GeoRasterオブジェクトにすでに統計が設定されている場合、ラスター更新プロシージャの実行後に統計は自動的に削除または更新されません。必要に応じて、ユーザーが統計を削除または再生成する必要があります。

注意:

入力されたGeoRasterオブジェクトのデータに対して追加または上書きするプロシージャを使用する場合は、元のGeoRasterオブジェクトをコピーし、そのコピーしたオブジェクトに対してプロシージャを使用してください。プロシージャの結果を確認してから、必要に応じて元のGeoRasterオブジェクトを廃棄します。

ラスター・データ表の名前、GeoRasterオブジェクトの属性、または他の任意のメタデータを変更する場合、「GeoRasterメタデータの問合せおよび更新」に記載されている推奨事項、要件および制限事項を参照してください。

GeoRasterオブジェクトのメタデータまたはセル・データ(あるいはその両方)を更新した後で、データベース・トランザクションをコミットする前に、SQL UPDATE文をコールしてGeoRasterオブジェクトを更新する必要があります(「コミット前のGeoRasterオブジェクトの更新」を参照)。

3.14 セル値の内挿

GeoRasterオブジェクトは、グリッド範囲です。グリッド範囲を評価する操作は、グリッド内挿(セル間またはセル内の点位置にセル値を内挿する方法)とも呼ばれます。GeoRasterでのこの操作は、ラスターの任意の点を評価してその場所の倍精度数値を戻すSDO_GEOR.evaluateDoubleファンクションによって実行されます。6つの異なる内挿方法(「リサンプリングおよび内挿」のリストを参照)のいずれかを使用して評価を実行できます。たとえば、GeoRasterオブジェクトがDEMレイヤーの場合、次の例を使用して、ランダムな点の位置の評価を検出できます。

SELECT SDO_GEOR.evaluateDouble(a.georaster, 0,
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(112.704, 41.917, NULL),
NULL, NULL),
'1',
'interpolationMethod=BILINEAR')
FROM georaster_table a WHERE raster_name='myDEM';

'interpolationMethod=NN'を使用してSDO_GEOR.evaluateDoubleをコールすると、GeoRasterオブジェクトは別個のラスターとして扱われ、前述の例は、セル内の異なる点の場所で同じ値(セル値)を戻すSDO_GEOR.getCellValueをコールした場合と同じになります。この場合(特に1つのバンドのセル値のみを問い合せる場合)、かわりにSDO_GEOR.getCellValueを直接コールできます。他の内挿方法では、ラスターが連続面として扱われ、セル内の異なる点の場所で異なる値が戻される可能性があります。

3.15 GeoRasterオブジェクトの処理および分析

GeoRasterデータには、内部ラスター記憶域形式の変更、サブセット化(クロッピング)、スケール変更、マスキング、ストレッチ、(ある座標系から別の座標系への)再投影、幾何補正、オルソ補正、モザイク処理、追加、およびピラミッドの生成など、GeoRasterデータに対して様々なラスターおよびイメージ処理操作を実行できます。GeoRasterでは、仮想モザイクもサポートされます。関連するサブプログラムには、SDO_GEOR.changeFormatCopy、SDO_GEOR.subset、SDO_GEOR.reproject、SDO_GEOR.rectify、SDO_GEOR.generatePyramid、SDO_GEOR.deletePyramid、SDO_GEOR.scaleCopy、SDO_GEOR.mergeLayers、SDO_GEOR_AGGR.mosaicSubset、SDO_GEOR_AGGR.getMosaicSubsetおよびSDO_GEOR_AGGR.appendが含まれます。詳細は、「イメージ処理および仮想モザイク」、「SDO_GEORパッケージのリファレンス」および「SDO_GEOR_AGGRパッケージのリファレンス」を参照してください。

ラスター・セル値ベースの代数的操作や地図的モデリングおよび分析については、GeoRasterによって、ラスター代数言語(PL/SQL式と代数式)および関連するラスター操作(条件付き問合せ(SDO_GEOR_RA.findCells)、セル値ベースの更新または編集(SDO_GEOR_RA.rasterUpdate)、数学的操作(SDO_GEOR_RA.rasterMathOp)、イメージおよびラスターのセグメント化(SDO_GEOR_RA.classify)など)がサポートされます。SDO_GEOR.generateStatisticsファンクションでは、ポリゴンベースの統計およびヒストグラム生成がサポートされます。SDO_GEOR.generateStatisticsMax、SDO_GEOR.generateStatisticsMean、SDO_GEOR.generateStatisticsMedian、SDO_GEOR.generateStatisticsMin、SDO_GEOR.generateStatisticsModeおよびSDO_GEOR.generateStatisticsSTDの各オンザフライ・ファンクションでは、GeoRasterオブジェクトまたはそのレイヤーの対話型統計分析がサポートされます。詳細は、「ラスター代数および分析」および「SDO_GEOR_RAパッケージのリファレンス」を参照してください。

例および説明は、「GeoRasterのPL/SQLおよびJavaデモ・ファイル」に記載されているGeoRaster PL/SQLデモ・ファイルも参照してください。

3.16 GeoRaster操作の進行状況の監視およびレポート

GeoRasterでは、多くの操作の実行の進行状況を監視およびレポートできます(「GeoRasterでの操作の進行状況のレポート」のリストを参照)。次に、操作の進行状況をレポートする場合の基本手順を示します。

1. SDO_GEOR_UTL.createReportTableプロシージャを使用して、適切なユーザーのスキーマにレポート表を作成します。(これは、操作を監視する前に1回コールする必要があります。)

EXECUTE SDO_GEOR_UTL.createReportTable;

2. 操作を実行および監視するユーザー・セッションで、次のアクションを実行します。

a. SDO_GEOR_UTL.enableReportを使用して監視を有効化します。(後でステータス・レポートを取得するために、このプロシージャをコールする必要があります。)

EXECUTE SDO_GEOR_UTL.enableReport;

b. オプションで、SDO_GEOR_UTL.setClientIDを使用してクライアントIDを設定します。クライアントIDを使用して、操作を実行するユーザー・セッションを識別します。このプロシージャがコールされない場合、クライアントIDはデフォルトでSQLセッションIDになります。次に例を示します。

EXECUTE SDO_GEOR_UTL.setClientID(100);

c. オプションで、SDO_GEOR_UTL.setSeqIDを使用して順序IDを設定します。順序IDを使用して、同じSQLセッション内の繰返し操作を識別します。このプロシージャがコールされない場合、順序IDはデフォルトで0になります。次に例を示します。

EXECUTE SDO_GEOR_UTL.setSeqID(1);

d. 監視対象の操作を実行します。次に例を示します。

-- Generate pyramid for georid=6. The progress of this generatePyramid call
-- can be monitored by step 3.
DECLARE
gr sdo_georaster;
BEGIN
SELECT georaster INTO gr
FROM georaster_table WHERE georid = 6 FOR UPDATE;
sdo_geor.generatePyramid(gr, 'rLevel=5, resampling=NN');
UPDATE georaster_table SET georaster = gr WHERE georid = 6;
COMMIT;
END;
/

e. オプションで、監視対象の追加操作ごとに、手順cおよびdを繰り返します。次に例を示します。

EXECUTE SDO_GEOR_UTL.setSeqID(2);
-- Generate pyramid for georid=7. The progress of this generatePyramid call
-- can be monitored by step 3.
DECLARE
gr sdo_georaster;
BEGIN
SELECT georaster INTO gr
FROM georaster_table WHERE georid = 7 FOR UPDATE;
sdo_geor.generatePyramid(gr, 'rLevel=5, resampling=NN');
UPDATE georaster_table SET georaster = gr WHERE georid = 7;
COMMIT;
END;
/

f. オプションで、SDO_GEOR_UTL.disableReportを使用して監視を無効化します。このプロシージャがコールされない場合、監視はユーザー・セッションの終了時に自動的に停止します。

EXECUTE SDO_GEOR_UTL.disableReport;

3. 同じユーザーの別のセッションから、実行ステータス・レポートを取得します。
クライアントIDおよび順序IDによって識別される特定の操作の進行状況を取得するには、SDO_GEOR_UTL.getProgressファンクションを使用します。このファンクションは、完了の割合を反映した0から1の間の数値として進行状況を戻します。たとえば、次の問合せは、操作が55%完了したことを示しています。

SELECT sdo_geor_utl.getProgress(100, 2) progress FROM DUAL;

PROGRESS
--------
0.55

1 row selected.

クライアントIDおよび順序IDによって識別される特定の操作のステータス・レポートを取得するには、SDO_GEOR_UTL.getStatusReportファンクションを使用します。このファンクションは、操作の進行状況とその他の情報を記述した文字列の配列を戻します。次に例を示します。

-- Check the status of the generatePyramid on georid=6
SELECT sdo_geor_utl.getStatusReport(100, 1) FROM DUAL;
SDO_GEOR_UTL.GETSTATUSREPORT(100,1)
-----------------------------------------------------------------------------
SDO_STRING2_ARRAY('31-OCT-11 02.20.04.854558 PM', 'GeneratePyramid', 'RDT:RDT_1', 'RID:6', '100% complete', 'operation completed')

1 row selected.

-- Check the status of the generatePyramid on georid=7
SELECT sdo_geor_utl.getStatusReport(100, 2) FROM DUAL;

SDO_GEOR_UTL.GETSTATUSREPORT(100,2)
-----------------------------------------------------------------------------
SDO_STRING2_ARRAY('31-OCT-11 02.20.08.854558 PM', 'GeneratePyramid', 'RDT:RDT_1', 'RID:7', '55% complete', 'operation completed')

1 row selected.

監視対象のすべての操作のステータスを取得するには、次の文を入力します。

SELECT * from the (select sdo_geor_utl.getAllStatusReport() FROM DUAL);
COLUMN_VALUE
------------------------------------------------------------------------------
SDO_STRING2_ARRAY('Client:100', 'Sequence:1', '31-OCT-11 02.20.04.854558 PM', 'GeneratePyramid', 'RDT:RDT_1', 'RID:6', '100% complete', 'operation completed')
SDO_STRING2_ARRAY('Client:100', 'Sequence:2', '31-OCT-11 02.20.08.854558 PM', 'GeneratePyramid', 'RDT:RDT_1', 'RID:7', '55% complete', NULL)

2 rows selected.

レポート表を消去または削除する必要がある場合、それぞれSDO_GEOR_UTL.clearReportTableまたはSDO_GEOR_UTL.dropReportTableプロシージャを使用します。

EXECUTE SDO_GEOR_UTL.clearReportTable;
-- or:
EXECUTE SDO_GEOR_UTL.dropReportTable;

3.17 GeoRasterオブジェクトの圧縮と解凍

JPEG-FまたはDEFLATE圧縮を使用してGeoRasterオブジェクトを圧縮することによって、GeoRasterオブジェクトに必要な記憶域を縮小できます。圧縮されたGeoRasterオブジェクトは解凍できます。ただし圧縮されていない(解凍されている)GeoRasterオブジェクト上で実行できるすべてのGeoRaster操作は、圧縮されたGeoRasterオブジェクトで実行できるため、解凍はすべてのGeoRaster操作で必須ではありません。

GeoRasterオブジェクトを圧縮または解凍するには、SDO_GEOR.changeFormatCopyプロシージャや、別のGeoRasterオブジェクトを作成するためにGeoRasterオブジェクトをロードして処理するその他の多数のプロシージャ(SDO_GEOR.importFrom、SDO_GEOR.mosaic、SDO_GEOR.scaleCopy、SDO_GEOR.subset、SDO_GEOR_AGGR.mosaicSubsetなど)のstorageParamパラメータで、compressionキーワードを使用します。(GeoRasterオブジェクトを圧縮および解凍するための個別のプロシージャはありません。)

GeoRasterの圧縮および解凍の詳細は、「圧縮と解凍」を参照してください(サード・パーティの圧縮ソリューションのサポート情報は、「圧縮に使用するサード・パーティのプラグイン」を参照)。

また、GeoRasterオブジェクトに圧縮を使用する場合、いくつかの特別な使用上の考慮事項があります。

- 大きいGeoRasterオブジェクトを圧縮してそれに対して完全なピラミッドを作成する場合、最初に圧縮されていないGeoRasterオブジェクトに対してピラミッドを生成し、次に圧縮を適用した方が高速です。

- 大規模なモザイク処理の場合、最初に圧縮を適用せずにモザイク処理を行い、次にピラミッドを生成してから圧縮を適用した方が高速です。

- 一部の操作では、GeoRasterで一時表領域を使用してデータが圧縮および解凍されるため、GeoRasterユーザーに対して一時表領域を追加することはパフォーマンスのために必須です(「GeoRasterユーザーに対する一時表領域の追加」を参照)。

パラレル圧縮および解凍は、SDO_GEOR_AGGR.mosaicSubsetプロシージャでサポートされます。パラレル圧縮および解凍には、パフォーマンスの大幅な向上という効果があり、これはイメージが大きいときに特に役立ちます。「パラレル圧縮、コピー、サブセット化、再投影および幾何補正」の例5-21を参照してください。

圧縮済のGeoRasterオブジェクトを保存する場合は、ユーザー用の一時表領域を必ず作成してください。詳細は、「GeoRasterユーザーに対する一時表領域の追加」を参照してください。

3.18 GeoRasterオブジェクトの削除とGeoRaster表およびRDTの削除

GeoRasterでは、GeoRasterメタデータと、GeoRaster表とラスター・データ表(RDT)間の関係が自動的に維持されます。したがって、ほとんどの操作で、関連する従来のSQL文を使用できます。

- GeoRasterオブジェクトを削除するには、DELETE文を使用してオブジェクトを含む行を削除します(DELETE FROM geor_table WHERE ...;など)。
GeoRasterオブジェクトがGeoRaster表から削除されると、RDTに格納されているすべての関連ラスター・データも自動的に削除されます。ラスター・データ表の行を直接挿入または削除しないでください。

- GeoRaster表を削除するには、DROP文を使用します(DROP geor_table;など)。
GeoRaster表が削除されると、削除されたGeoRaster表のGeoRasterオブジェクトに関連付けられているすべてのラスター・データも自動的に削除されます。

- RDTを削除するには、最初にそのRDTを参照しているすべてのGeoRasterオブジェクトを削除する必要があり、その後でRDTに対してDROP文を使用できます。
RDTの削除を試行する前に、RDTを参照しているすべてのGeoRasterオブジェクトを削除しないと、例外が発生します。

注意:

RDTの名前を変更するには、SDO_GEOR_UTL.renameRDTプロシージャを使用します。

3.19 GeoRasterオブジェクトの表示

GeoRasterデータを表示するには、次の方法があります。

- SDO_GEOR.exportToプロシージャをコールしてGeoRasterオブジェクトをイメージ・ファイルにエクスポートした後、イメージ・ツールまたはWebブラウザを使用してイメージを表示します。

- スタンドアロンのGeoRasterビューア・ツール(「GeoRasterツール: ビューア、ローダー、エクスポータ」に示すツールの1つ)を使用します。

- Oracle Fusion Middleware MapViewerまたはそれに関連付けられたMap Builderユーティリティを使用します。

GeoRasterのビューア・ツールでは、データベース・スキーマ(ユーザー)のGeoRasterオブジェクトの選択、GeoRasterオブジェクトの全体またはサブセットの問合せと表示、ズームイン、ズームアウト、スクロール、および他の基本操作を実行できます。マウス・ポインタの位置の点について、ピラミッド・レベル、セル座標およびモデル座標(オブジェクトが地理参照されている場合)が表示されます。個々のセル値を表示して、RGBフルカラー表示のために、マルチバンド・イメージまたはハイパースペクトル・イメージの複数のレイヤーを選択できます。表示の最前面にブロック境界を重ねて表示できます。ビューアでは、データおよびユーザーの要件に応じて、イントラネットまたはインターネット上でラスター・データをグレースケール、疑似カラーおよび24ビット・トゥルーカラーで表示できます。一部の基本的なGeoRasterメタデータも表示されます。

GeoRasterビューア・ツールでは、GeoRaster表またはビューのいずれか1つまたはリストとして定義された仮想モザイクを表示できます。

GeoRasterのビューア・ツールには、GeoRasterオブジェクトの表示機能を強化するためのイメージ処理演算子のセットが含まれます。これらの演算子は、特にGeoRasterオブジェクトのセル深度が8を超える場合や、浮動小数点数である場合に役立ちます。また、このツールでは、GeoRasterオブジェクトにビットマップ・マスクがある場合に、そのビットマップ・マスクを表示および適用できます。

GeoRasterのビューア・ツールには、GeoRasterローダーおよびエクスポータ・ツールをコールするためのメニュー・コマンドも含まれています。これにより、1つのツールを、すべてのGeoRasterツールの機能へのインタフェースとして使用できます。

視覚化アプリケーションでは、GeoRasterオブジェクトのデフォルトのRGBAおよびデフォルトのピラミッド・レベルの指定を利用できます。SDO_GEOR.setDefaultColorLayerまたはSDO_GEOR.setDefaultRed、SDO_GEOR.setDefaultGreen、SDO_GEOR.setDefaultBlueおよびSDO_GEOR.setDefaultAlphaをコールすることで、デフォルトの赤、緑、青およびアルファ・チャネルとしてマルチバンド・イメージの異なるバンドを設定できます。大きなイメージの場合、SDO_GEOR.setDefaultPyramidLevelをコールして、アプリケーションの初期表示用のイメージに最適な解像度(ピラミッド)レベルを設定できます。たとえば、イメージ全体の完全な概要を取得するには、デフォルトのピラミッド・レベルとして最高のピラミッド・レベルを設定するのが最適です。

3.20 GeoRasterオブジェクトのエクスポート

イメージまたはラスター・データをロードおよびエクスポートする場合、常にサード・パーティのETLツールの使用を検討してください(「GeoRasterツール: ビューア、ローダー、エクスポータ」の「注意」を参照)

GeoRasterの機能を使用してGeoRasterオブジェクトをイメージ・ファイルにエクスポートする場合、次の方法があります。

- SDO_GEOR.exportToプロシージャをコールします(ファイルまたはBLOBオブジェクトのいずれかにエクスポートできます)。

- GeoRasterエクスポータ・ツールまたはビューア・ツールを使用します(「GeoRasterツール: ローダー、ビューア、エクスポータ」を参照)。

3.21 コミット前のGeoRasterオブジェクトの更新

GeoRasterのセル・データまたはメタデータを挿入、更新、再フォーマット、圧縮、解凍または削除するデータベース・トランザクションをコミットする前に、SQL UPDATE文を使用してGeoRasterオブジェクトを更新する必要があります。セル・データの変更後にGeoRasterオブジェクトを更新しないと、無効なGeoRasterオブジェクト、ダングリング・ラスター・データ、および一貫性のないメタデータの1つ以上が発生する可能性があります。GeoRasterメタデータの変更後にGeoRasterオブジェクトを更新しないと、メタデータの変更は反映されません。

トランザクションをコミットしないでロールバックする場合は、UPDATE文は必要ありません。

例3-4では、UPDATE文はSDO_GEOR.changeFormatCopyプロシージャのコールの後およびCOMMIT文の前に必要です。

例3-4 コミット前のGeoRasterオブジェクトの更新

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
SELECT georaster INTO gr2 from georaster_table WHERE georid=11 FOR UPDATE;
SELECT georaster INTO gr1 from georaster_table WHERE georid=1;
sdo_geor.changeFormatCopy(gr1, 'blocksize=(2048,2048)', gr2);
UPDATE georaster_table SET georaster=gr2 WHERE georid=11;
COMMIT;
END;
/

3.22 テンプレート関連のサブプログラムを使用したGeoRasterアプリケーションの開発

SDO_GEOR.createTemplateおよびSDO_GEOR.getRasterBlockLocatorサブプログラムを使用すると、Oracle XMLType、GeoRaster XMLスキーマおよびOracle BLOBを直接操作せずにGeoRasterメタデータとバイナリ・ラスター・データの読取りおよび書込みを行うことで、GeoRasterアプリケーション(GeoRasterオブジェクトを処理するETLツールやイメージ処理システムなど)を開発できます。

新しいGeoRasterオブジェクトを作成(「新しいGeoRasterオブジェクトの作成」を参照)すると、SDO_GEOR.createTemplateファンクションを使用して、ラスター型、次元サイズ、ULTCoordinate、セル深度、インターリーブ・タイプ、ブロック化とブロック・サイズ、ピラミッド・リサンプリング・メソッドと縮小レベル、圧縮方法と圧縮品質などの基本情報をGeoRasterオブジェクトのメタデータに移入できます。このファンクションでは、オプションで、正しい行数および空のBLOBを含むラスター・ブロックで構成される行データをラスター・データ表に移入できます。

SDO_GEOR.createTemplateファンクションにより生成されるXMLメタデータは、GeoRasterメタデータのスキーマに準拠します。そのため、他のGeoRasterサブプログラムを使用してメタデータの問合せや更新を行うことができます(「GeoRasterメタデータの問合せおよび更新」を参照)。

SDO_GEOR.getRasterBlockLocatorプロシージャを使用すると、ピラミッド・レベルとブロック番号を指定することでラスター・ブロックのロケータを取得できます。ラスター・ブロックのロケータを取得したら、OCIまたはJava JDBC LOBインタフェースを使用してバイナリ・ラスター・データの読取りおよび書込みを行うことができます。(SDO_GEOR.getRasterBlockLocatorプロシージャは、それ自体ではLOBデータの読取りや処理を行いません。)この方法を使用するには、ラスター・データの物理記憶域(「GeoRasterの物理記憶域」を参照)を理解しておく必要があり、BLOBの読取りおよび書込みの前に必要に応じてデータの圧縮と解凍を行う必要があります。

3.23 Workspace ManagerおよびLabel SecurityでのGeoRasterの使用

Oracle Workspace Managerでは、GeoRasterオブジェクトのラスター・ブロックのためのバージョニング機能が提供されます。Oracle Label Securityでは、ラスター・ブロックの行レベルの拡張セキュリティを使用するGeoRasterオブジェクトがサポートされます。

GeoRasterをOracle Workspace ManagerまたはOracle Label Securityと組み合せて使用するには、GeoRasterオブジェクトのリレーショナル表としてラスター・データ表(RDT)を作成する必要があります(例3-3を参照)。ベース・リレーショナルRDTでSDO_RASTER型のオブジェクト・ビューを定義する必要はありません。

3.23.1 Workspace ManagerでのGeoRasterの使用

Workspace Managerでは、異なる作業領域にラスター・データの異なるバージョンを保存して変更を加えることで、ラスター・データに対する変更を容易に管理できます。Workspace ManagerでGeoRasterを使用するには、ラスター記憶域用のリレーショナル・ラスター・データ表を使用し、それらのリレーショナル・ラスター・データ表をバージョン対応にする必要があります。次に一般的な形式の例を示します。

EXECUTE DBMS_WM.EnableVersioning (<rdt_relational_table>, 'VIEW_WO_OVERWRITE');

注意:

バージョン対応にできるのは、ラスター・データ表のみです。GeoRasterオブジェクトが格納されているGeoRaster表は、バージョン対応にしないでください。また、作業領域での作業中にGeoRaster表を変更する必要のある操作は実行しないでください。

リレーショナルRDTをバージョン対応にした後に、DBMS_WMパッケージのサブプログラムを使用してラスター・データの変更を管理できます。ラスター・ブロックを直接変更する必要がある場合は、次の例に示すとおり、操作の前にDBMS_WM.copyForUpdateプロシージャをコールします。

declare
geor sdo_georaster;
cond varchar2(1000);
lb   blob;
r1   raw(1024);
amt  number;
begin
r1 := utl_raw.copies(utl_raw.cast_to_raw('0'),1024);

select georaster into geor from georaster_table where georid=1;
cond := 'rasterId=' || geor.rasterId || ' AND pyramidLevel=0 AND ' ||
' bandBlockNumber=0 AND rowBlockNumber=0 AND columnBlockNumber=0';
dbms_wm.copyForUpdate(geor.rasterDataTable, cond);
sdo_geor.getRasterBlockLocator(geor, 0, 0, 0, 0, lb, null, 'TRUE');
amt := 1024;
dbms_lob.write(lb, amt, 1, r1);
end;
/

ただし、GeoRasterサブプログラムを使用してラスター・データを変更する場合は、事前にDBMS_WM.copyForUpdateプロシージャをコールする必要はありません。

Workspace Managerの詳細は、『Oracle Database Workspace Manager開発者ガイド』を参照してください。

3.23.2 Label SecurityでのGeoRasterの使用

Oracle Label Securityでは、ユーザーのセキュリティ・クリアランスのレベルに基づいて、機密データに対する行レベルのアクセス制御を実現できます。Label SecurityでGeoRasterを使用するには、次の基本手順を実行します。

1. GeoRaster表および1つ以上のリレーショナルRDTを作成します。

2. Oracle Label Securityポリシーを作成してラベル・コンポーネントを定義します。

3. GeoRaster表と1つ以上のリレーショナルRDTに対してラベル付けファンクションを作成します。

GeoRaster表の行のラベルは、アプリケーションの要求に従って生成される必要があります。GeoRasterオブジェクトを格納する行と、関連するRDTのGeoRasterオブジェクトのラスター行には、両方とも同じラベルを使用してください。異なるラベルを使用すると、GeoRasterオブジェクトが無効になるか、一貫性のないステータスになる可能性があります。

次の例では、リレーショナルRDTに対してラベル付けファンクションを作成します。

CREATE OR REPLACE FUNCTION gen_rdt_label(rdt_name varchar2, rid number)
RETURN LBACSYS.LBAC_LABEL
AS
tabname varchar2(80);
schema  varchar2(32);
grcol   varchar2(1024);
colname varchar2(30);
label   NUMBER;
BEGIN
EXECUTE IMMEDIATE
'SELECT v.owner, v.table_name, v.column_name grcol, p.column_name ' ||
'  FROM all_sdo_geor_sysdata v, all_sa_policies p, all_sa_table_policies t '
|| ' WHERE v.rdt_table_name=:1 AND v.raster_id=:2 AND ' ||
' v.owner=t.schema_name AND v.table_name=t.table_name AND ' ||
' p.policy_name=t.policy_name '
INTO schema, tabname, grcol, colname
USING upper(rdt_name), rid;
EXECUTE IMMEDIATE
'SELECT t.' || colname  ||
' FROM ' || schema || '.' || tabname || ' t ' ||
' WHERE t.' || grcol || '.rasterdatatable=:1 AND ' ||
'       t.' || grcol || '.rasterid=:2'
INTO label
USING upper(rdt_name), rid;
RETURN LBACSYS.LBAC_LABEL.NEW_LBAC_LABEL(label);
END;
/

4. Label SecurityポリシーをGeoRaster表とそれに関連する1つ以上のRDTに適用します。

次の一般的な形式の例では、前述の手順におけるラベル付けファンクションの例を使用して、Label Securityポリシーを1つのRDTに適用します。

BEGIN
SA_POLICY_ADMIN.REMOVE_TABLE_POLICY(<policy_name>,<schema_name>,<rdt_relational_table>);
SA_POLICY_ADMIN.APPLY_TABLE_POLICY(
POLICY_NAME => <policy_name>,
SCHEMA_NAME => <schema_name>,
TABLE_NAME  => <rdt_relational_table>,
TABLE_OPTIONS => 'READ_CONTROL,WRITE_CONTROL,CHECK_CONTROL',
LABEL_FUNCTION => '<schema_name>.gen_rdt_label(<rdt_relational_table>,:new.rasterid)',
PREDICATE => NULL);
END;
/

5. ユーザーを作成して認可を行い、Label Securityに関連する他の管理タスクを完了します。

ポリシーを表に適用する前または後に、GeoRasterデータをロードできます。

ALL_SDO_GEOR_SYSDATAビュー(「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」を参照)には、現行ユーザーがアクセス可能なすべてのGeoRasterオブジェクトに関するシステム・データが含まれます。この場合のアクセス可能性は、任意アクセス制御(DAC)のコンテキストで定義されたユーザーの権限によって決定されます。

GeoRaster表の行のラベルが更新されたら、各ラベルが同期するように、RDTの関連するデータ・ラベルも更新される必要があります。

Label Securityの詳細は、『Oracle Label Security管理者ガイド』を参照してください。

3.24 GeoRasterオブジェクトによる表領域の効率的な使用のメンテナンス

操作を削除またはロールバックしても、ラスター・データ表に割り当てられた未使用の領域は、基礎となる表領域にすぐに戻されないことがあります。これにより、表領域が無駄に使用されることがあり、ラスター・データのサイズが大きい場合は重大な問題となる可能性があります。自動セグメント領域管理の表領域でBasicFiles LOBを使用してラスター・データ表を作成した場合、ラスター・データ表を変更することでrasterBlock LOBセグメントまたはラスター・データ表を明示的に縮小できます。次の例3-5および例3-6を参照してください。

例3-5 BasicFile rasterBlock LOBセグメントの縮小

ALTER TABLE city_images_rdt MODIFY LOB (rasterBlock) (SHRINK SPACE);

例3-6 ラスター・データ表の縮小

ALTER TABLE city_images_rdt ENABLE ROW MOVEMENT;
ALTER TABLE city_images_rdt SHRINK SPACE CASCADE;

SecureFilesを使用している場合、または手動セグメント領域管理の表領域で割り当てられたBasicFilesを使用している場合、前述の例のようにALTER TABLE文を使用して未使用の領域を再利用することはできません。かわりに、一時的に使用する作業用のラスター・データ表を作成し、断続的に発生する結果をそのRDTに配置して、不要になったらその作業用RDTを削除する必要があります。

3.25 データベースのGeoRasterオブジェクトおよびシステム・データのメンテナンス

GeoRasterには、無効なGeoRasterオブジェクトおよびシステム・データの作成を防止する内部データベース・メカニズムがありますが、特に以前のリリースからのアップグレード後や、GeoRasterシステム・データに対する操作で複数のユーザー・エラーが発生した後には、データベース内にそのような無効なGeoRasterオブジェクトやシステム・データが発生することがあります。無効なオブジェクトおよびシステム・データの例は、次のとおりです。

- GeoRasterシステム・データ・ビューのエントリ(「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」のxxx_SDO_GEOR_SYSDATAを参照)が、存在しないGeoRaster表または列を示します。

- 2つ以上のGeoRasterオブジェクトに、RDT名とラスターID値の同じ組合せが含まれています。

- 一部のGeoRasterオブジェクト、表、列またはRDTが登録されていません。

- RDT名が一意ではありません。

- GeoRasterオブジェクトが空または空白ではないが、関連するRDTが存在しません。

データベースのアップグレード後に、SDO_GEOR_ADMIN.isUpgradeNeededファンクションをコールして、現在のリリースで無効なGeoRasterオブジェクトおよび無効なシステム・データを確認する必要があります。なんらかのエラーや無効なデータが検出された場合は、SDO_GEOR_ADMIN.upgradeGeoRasterファンクションをコールして問題を自動的に修正します。ユーザーMDSYSとして接続している場合、SDO_GEOR_ADMIN.upgradeGeoRasterファンクションをコールすると、データベース内のすべてのGeoRasterオブジェクトがアップグレードされます。それ以外の場合は、現行ユーザーのスキーマのGeoRasterオブジェクトのみがアップグレードされます。(詳細は、「SDO_GEOR_ADMINパッケージのリファレンス」でSDO_GEOR_ADMIN.upgradeGeoRasterに関するリファレンスおよび使用情報を参照してください。)

発生する可能性のあるユーザー・エラーに対する定期的なメンテナンスでは、無効なGeoRasterオブジェクトおよびシステム・データ・エントリを検出して修正するために次のファンクションおよびプロシージャが役立ちます。

- エラーを検出するには、SDO_GEOR_ADMIN.checkSysdataEntriesおよびSDO_GEOR_ADMIN.listUnregisteredRDTをコールします。

- ダングリング・ラスター・データを検出するには、SDO_GEOR_ADMIN.listDanglingRasterDataをコールします。

- すべての無効なシステム・データ・エントリを修正するには、SDO_GEOR_ADMIN.maintainSysdataEntriesをコールします。

- すべてのGeoRaster列に適切なDMLトリガーを作成するには、SDO_GEOR_ADMIN.registerGeoRasterColumnsをコールします。

- すべての既存のGeoRasterオブジェクトをシステム・データ表に登録するには、SDO_GEOR_ADMIN.registerGeoRasterObjectsをコールします。

詳細は、「SDO_GEOR_ADMINパッケージのリファレンス」でこれらのプロシージャとファンクションに関するリファレンスおよび使用情報を参照してください。

3.26 データベース間でのGeoRasterデータの転送

データ・ポンプ・エクスポート・ユーティリティおよびインポート・ユーティリティまたは従来のエクスポート・ユーティリティおよびインポート・ユーティリティのいずれかを使用して、データベース間でGeoRasterデータを転送できます。GeoRaster表と関連するラスター・データ表の両方から行をエクスポートし、インポートする必要があります。データの転送後、インポートしたGeoRasterオブジェクトのGeoRasterシステム・データをターゲット・スキーマのUSER_SDO_GEOR_SYSDATAビュー(「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」を参照)に挿入する必要はありません。ただし、これらのオブジェクトになんらかの操作を実行する前に、SDO_GEOR.validateGeoRasterファンクションを使用して、インポートしたGeoRasterオブジェクトが有効かどうかを確認する必要があります。

データ・ポンプ・エクスポート・ユーティリティとインポート・ユーティリティ、および従来のエクスポート・ユーティリティとインポート・ユーティリティの詳細は、『Oracle Databaseユーティリティ』を参照してください。

データベース間でGeoRasterデータを転送するには、次の一般的な手順に従います。

1. 競合を確認して、解決します(「競合の確認と解決」を参照)。

2. データの転送を行います(「GeoRasterデータの転送の実行」を参照)。

3.26.1 競合の確認と解決

GeoRasterデータをターゲット・データベースに正常にインポートするには、ターゲット・スキーマのGeoRasterシステム・データが競合していない必要があります。次の条件では、競合が発生する可能性があります。

- ターゲット・データベース内の別のスキーマに、同じ名前を持つラスター・データ表がすでに定義されている。
たとえば、ラスター・データ表(RDT)をターゲット・スキーマに作成してGeoRasterオブジェクトをインポートする場合、ターゲット・スキーマの既存のRDTにすでに同じ名前が割り当てられている可能性があります。この場合、SDO_GEOR_ADMIN.listRDTまたはSDO_GEOR_ADMIN.isRDTNameUniqueファンクションを使用して、ソース・データベースとターゲット・データベースの両方を調査し、RDT名の競合が存在するかどうかを確認する必要があります。競合が存在する場合は、SDO_GEOR_UTL.renameRDTプロシージャを使用してターゲット・データベースのRDT名を異なる名前に変更し、GeoRasterオブジェクトをインポートする前に競合を解決します。

- ターゲット・スキーマのUSER_SDO_GEOR_SYSDATAビューに挿入するラスター・データ表の名前とラスターIDの組合せが一意ではない。
たとえば、ターゲット・データベースの既存のRDTにデータを追加することでRDTデータをインポートする場合に、この競合が発生する可能性があります。この場合、データをターゲット・データベースにインポートする前に、SDO_GEOR_ADMIN.listGeoRasterObjectsファンクションを使用してターゲット・スキーマに定義されているすべてのGeoRasterオブジェクトをリスト表示し、RDT名とラスターIDの組合せが既存のGeoRasterデータとインポートするGeoRasterデータの間で競合していないことを確認します。競合が存在する場合は、ターゲット・スキーマのGeoRasterオブジェクトのラスターIDを変更し、競合を解決します。この処理を行わないと、ダンプ・ファイル内に競合の存在するGeoRasterオブジェクトは、インポート・プロセスの実行時に拒否されます。

ダンプ・ファイルでラスター・データ表(RDT)の名前とラスターID(RID)の情報を確認する必要がある場合、いくつかの方法があります。ソース・データベースの情報を確認する方法、ダンプ・ファイルのプロバイダの情報をリクエストする方法、個別のテスト・データベースにダンプ・ファイルをロードしてそこでその情報を確認する方法、または(テスト用に個別のデータベースを使用できない場合)現行データベースのテスト・スキーマにダンプ・ファイルをロードしてその情報を確認する方法です。現行データベースのテスト・スキーマにダンプ・ファイルをロードして情報を確認するには、次の手順を実行します。

1. ターゲット・データベースにテスト・スキーマを作成します。

2. CONTENT = METADATA_ONLYパラメータを指定してデータ・ポンプ・インポート・ユーティリティを使用し、ダンプ・ファイルからこのテスト・スキーマにすべてのGeoRaster表をロードします。

3. MDSYSユーザーとしてデータベースに接続し、前述の手順でロードしたGeoRaster表のすべてのDMLトリガーを無効化します。

4. CONTENT = DATA_ONLYパラメータを指定してデータ・ポンプ・インポート・ユーティリティを使用し、GeoRaster表にデータをロードします。

5. テスト・スキーマのGeoRaster表からRDTとRID (ラスター・データ表の名前とラスターID)の組合せを直接取得します。

競合を解決したら、GeoRasterのメタデータおよびデータの整合性を確認する必要があります(「データベースのGeoRasterオブジェクトおよびシステム・データのメンテナンス」を参照)。また、コミットなどの操作を実行する前に、修正したGeoRasterオブジェクトを検証する必要があります。

インポート操作時に競合を解決する方法の一般情報は、『Oracle Databaseユーティリティ』のデータ・ポンプ・インポートに関する章でTABLE_EXISTS_ACTIONパラメータの説明を参照してください。

3.26.2 GeoRasterデータの転送の実行

あるデータベースのGeoRasterデータをエクスポートして別のデータベースにインポートすると、ターゲット・データベースにGeoRaster表およびオブジェクトがインポートされた後に、必要なDMLトリガーとシステム・データ・エントリがGeoRasterのデータベース管理システムによって自動的に生成されます。そのため、GeoRasterのすべての内部DMLトリガーが、expdp操作およびimpdp操作から除外されます。除外されない場合、安全に無視できるエラーですが、次のようなimpdpエラーが発生することがあります。

ORA-39083: Object type TRIGGER failed to create with error:
ORA-13391:  GeoRaster reserved names cannot be used to create regular triggers

GeoRasterデータをエクスポートする方法は、他のタイプのデータをエクスポートする場合と同様ですが、GeoRasterの内部DMLトリガー(名前がGRDMLTR_で始まるもの)は除外します。次に例を示します。

expdp scott schemas=scott directory=dump_dir dumpfile=exp.dmp parfile=exclude.par
Enter password: password

exclude.parファイルの内容は次のとおりです。

exclude=trigger:"like 'GRDMLTR_%'"

GeoRasterデータをインポートする方法は、他のタイプのデータをインポートする場合と同様ですが、エクスポート操作でGeoRasterの内部DMLトリガー(名前がGRDMLTR_で始まるもの)を除外しなかった場合は、除外します。次に例を示します。

1. インポートするGeoRasterデータとターゲット・データベース内の既存のGeoRasterデータ間に競合が存在しないことを確認します(「競合の確認と解決」を参照)。
競合が解決されていない場合、複数の例外が発生します。競合のないGeoRasterデータのみがターゲット・データベースにインポートされます。

2. GeoRasterデータは、他のタイプのデータと同様にインポートしますが、エクスポート操作でGeoRasterの内部DMLトリガー(名前がGRDMLTR_で始まるもの)を除外しなかった場合は、除外します。次に例を示します。

impdp scott schemas=scott directory=dump_dir dumpfile=exp.dmp parfile=exclude.par
Enter password: password

exclude.parファイルの内容は次のとおりです。

exclude=trigger:"like 'GRDMLTR_%'"

3.27 GeoRasterデータでのトランスポータブル表領域の使用

GeoRasterデータにOracle Databaseのトランスポータブル表領域機能を使用できます。

トランスポートする表領域に、GeoRaster表またはラスター・データ表(RDT)に対する空間索引が含まれる場合、状況によってはいくつかの準備手順を実行する必要があります。空間データでのトランスポータブル表領域機能の使用方法の詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_UTIL.PREPARE_FOR_TTSおよびSDO_UTIL.INITIALIZE_INDEXES_FOR_TTSプロシージャの使用上の注意を参照してください。

GeoRasterデータをターゲット・データベースに正常にインポートするには、ターゲット・スキーマのGeoRasterシステム・データが競合していない必要があります。表領域を別のデータベースまたはスキーマにトランスポートする前に、「競合の確認と解決」に記載されている手順に従って競合を確認および解決することをお薦めします(ただし必須ではありません)。そのため、ソース・データベースのトランスポータブル表領域を使用する前に、そのような予測可能な競合を避けるようにGeoRaster表およびRDT表を設計する必要があります。

トランスポートされる表領域に空間索引があるかどうかにかかわらず、GeoRasterオブジェクトを含む表領域をトランスポートした後で、次の手順を実行します。

1. SDO_GEOR_ADMIN.registerGeoRasterObjectsプロシージャ(「SDO_GEOR_ADMINパッケージのリファレンス」を参照)をコールして、現在のスキーマまたは新しいデータベースにすべてのGeoRasterオブジェクトを登録します。

2. トランスポートされたGeoRasterデータを使用する前に、定期的なメンテナンス操作(「データベースのGeoRasterオブジェクトおよびシステム・データのメンテナンス」を参照)を実行して、GeoRasterオブジェクトおよびシステム・データを管理し、すべてのGeoRasterオブジェクトが正しくトランスポートされ、適切に登録されていることを確認します。

3. 競合が検出された場合は、SDO_GEOR_UTL.renameRDTプロシージャまたはSDO_GEOR_UTL.makeRDTNamesUniqueプロシージャをコールして、そうした競合を解決し、再度検証します。

トランスポータブル表領域および表領域を別のデータベースに転送する方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

4 ラスター代数および分析

この章では、ラスター代数言語(PL/SQL式と代数式)および関連するラスター操作(条件付き問合せ、セル値ベースの更新または編集、数学的操作、分類、オンザフライ統計分析、地図的モデリングでのそれらの適用など)について説明します。

この章の内容は次のとおりです。

- ラスター代数言語

- セル値ベースの条件付き問合せ

- セル値ベースの条件付き更新(編集)

- 数学的操作

- 分類操作

- オンザフライ統計分析

- ラスター・データのスケール変更およびオフセット設定

- ラスター・データのキャスト

- 地図的モデリング

4.1 ラスター代数言語

ラスター代数は、ラスター・データ分析とGISモデリングで一般的に使用されます。GeoRasterでは、GeoRasterラスター代数言語によってラスター代数がサポートされます。

GeoRasterラスター代数言語は、Oracle PL/SQL言語の拡張です。PL/SQLでは、変数と定数の宣言、一般的な数式、基本ファンクション、文およびプログラミング機能が提供されます。GeoRasterでは、ラスター代数式言語と、ラスター・レイヤー操作のためのラスター代数ファンクションのセットが提供されます。ラスター代数式言語には、一般算術、キャスト、論理および関係演算子が含まれ、それらの任意の組合せを使用できます。ラスター代数ファンクションでは、式の使用が可能で、1つ以上のGeoRasterオブジェクトの1つ以上のラスター・レイヤーに対するセル値ベースの条件付き問合せ、数学的モデリング、分類操作、およびセル値ベースの更新または編集がサポートされます。

PL/SQL言語とGeoRaster代数式およびファンクションのこの組合せによって、ラスター分析を代数式として定義するための簡単で強力な方法が提供されるため、ユーザーは、ラスター・データに代数ファンクションを簡単に適用して新しい結果を導出できます。たとえば、単純なラスター操作で同じ次元サイズを持つ2つ以上のラスター・レイヤーを使用して、代数操作(加算、減算など)の使用によって新しいラスター・レイヤーを生成することや、高度なラスター操作を使用して衛星イメージの複数のバンドから正規化植生指標(NDVI)を生成することができます。

GeoRasterでは、ラスター代数のローカル操作がサポートされるため、ラスター代数操作は個々のラスター・セルまたはピクセルを対象に動作します。

次に、GeoRasterラスター代数式言語の定義を示します。

arithmeticExpr:
unaryArithmeticExpr
| binaryArithmeticExpr
| functionArithmeticExpr
| booleanExpr
| castingExpr
| constantNumber
| identifier
| (arithmeticExpr)
booleanExpr:
unaryBooleanExpr
| binaryBooleanExpr
| arithmeticExpr comparisonOp arithmeticExpr
| (booleanExpr)
unaryArithmeticExpr:
(arithmeticUnaryOp arithmeticExpr)
binaryArithmeticExpr:
arithmeticExpr  arithmeticBinaryOp arithmeticExpr
functionArithmeticExpr:
numericFunction (arithmeticExpr)

castingExpr:
rangeType(arithmeticExpr)
unaryBooleanExpr:
booleanUnaryOp booleanExpr
binaryBooleanExpr:
booleanExpr booleanBinaryOp booleanExpr
arithmeticBinaryOp:
+
| -
| *
| /
comparisonOp:
=
|  <
|  >
| >=
| <=
| !=
arithmeticUnaryOp:
+
| -
booleanBinaryOp:
&
| |
booleanUnaryOp:
!
rangeType:
castint
| castonebit
| casttwobit
| castfourbit
| casteightbit
numericFunction:
abs
| sqrt
| exp
| log
| ln
| sin
| cos
| tan
| sinh
| cosh
| tanh
| arcsin
| arccos
| arctan
| ceil
| floor
constantNumber:
double number
identifier:
{ID,band}
| {band}
ID:
integer number
band:
integer number

式言語の代数演算子(+、-、*、/など)の優先順位は、一般的な表記規則に従います。ただし、式が間違って解釈される可能性がある場合は、カッコを使用して解釈の意図を明確化する必要があります。

booleanExprは、GeoRasterラスター代数式言語に定義されているとおり、arithmeticExprとして使用できます。この場合、booleanExprのTRUEとFALSEの評価結果は、それぞれ数値の1と0に変換されます。

式のidentifierは、GeoRasterオブジェクトのラスター・レイヤーを示します。これは、1つのband番号か(関連するGeoRasterオブジェクトが1つのみの場合)、または(ID, band)のペアです(IDは式のGeoRasterオブジェクトのいずれかを示し、bandはそのGeoRasterオブジェクトの特定のレイヤーを示します)。この言語のband番号は、セル空間のバンド次元に沿ったレイヤーの座標番号を示すため、常に0(ゼロ)から開始します。

次のプロシージャによって、ラスター代数操作の主なサポートが提供されます。

- SDO_GEOR_RA.rasterMathOpは、arithmeticExprを使用して数学的操作またはモデリングを実行します。

- SDO_GEOR_RA.findCellsは、booleanExpr条件に基づいてセルを検索またはマスクします。

- SDO_GEOR_RA.classifyは、arithmeticExprをセルに適用してからラスターをセグメント化します。

- SDO_GEOR_RA.rasterUpdateは、異なるbooleanExpr条件に基づいてラスターのセル値を更新します。

これらのラスター代数ファンクションは、1つ以上のGeoRasterオブジェクトから多くのレイヤーを取得してそれらのレイヤーにbooleanExpr式またはarithmeticExpr式(あるいはその両方)を適用し、特定の代数計算またはモデリングを実行して新しいGeoRasterオブジェクトを出力します。式は、この項で前述した構文に基づいて、いずれかの方法で定義できます。

すべてのラスター代数ファンクションでは、ラスター・レイヤーが相互に重複し、同じ次元サイズと解像度を持つか(それらが地理参照される場合)、同じ次元サイズを持つ必要があります(それらが地理参照されない場合)。2つ以上のGeoRasterオブジェクトにラスター代数操作を適用する前に、SDO_GEOR_RA.isOverlapファンクションを使用して、GeoRasterオブジェクトが同じサイズであり、同じ土地を対象範囲としているかどうかを判別できます。

ラスターおよびイメージ・データベースは、通常、非常に大きくなります。そのようなデータベースを問い合せて処理することは、計算集中型の操作です。パフォーマンスを向上するため、すべてのGeoRasterラスター代数ファンクションはパラレル化されます。マルチCPUまたはマルチコア・サーバーを使用する場合、パラレル処理を適用することを常に検討してください。

4.1.1 ラスター代数式の例

この項には、ラスター代数式を定義する方法を示した例が含まれます。

例4-1 比較(>)に基づくピクセルの検出

例4-1では、代数式の'{1}>200'で定義された条件に一致するすべてのピクセルを検出します(プロシージャに含まれるGeoRasterオブジェクトは1つのみであるため、{1}は2番目のレイヤーのセル値を示し({0}は1番目のレイヤーに対応します)、'{1}>200'は2番目のレイヤー値が200より大きいピクセルを意味します。この例では、ソースGeoRasterオブジェクトに2つ以上のレイヤーが存在すると仮定します。

DECLARE
geor       MDSYS.SDO_GEORASTER;
geor1      MDSYS.SDO_GEORASTER;
BEGIN
select georaster into geor from georaster_table where georid = 1;
select georaster into geor1 from georaster_table where georid = 5 for update;
sdo_geor_ra.findcells(geor, '{1}>200','blocking=true, blocksize=(256,256,3)',geor1);
update georaster_table set georaster = geor1 where georid = 5;
commit;
END;
/

例4-2 式配列に基づくGeoRasterオブジェクトの生成

例4-2では、代数式配列のSDO_STRING2_ARRAY('{0,0}-0.5*{1,0}','{0,1}-0.5*{1,1}','{0,2}-0.5*{1,2}')に基づいて、2つの入力GeoRasterオブジェクトのgeorおよびgeor1から新しいGeoRasterオブジェクトのgeor2を生成します。この例では、2つのソースGeoRasterオブジェクトが3つのバンドを持つイメージであると仮定します。

DECLARE
geor       MDSYS.SDO_GEORASTER;
geor1      MDSYS.SDO_GEORASTER;
geor2      MDSYS.SDO_GEORASTER;
geo_array  MDSYS.SDO_GEORASTER_ARRAY;
BEGIN
select georaster into geor from georaster_table where georid = 1;
select georaster into geor1 from georaster_table where georid = 2;
insert into georaster_table values (17, sdo_geor.init('rdt_1', 17)) returning georaster into geor2;
geo_array:=MDSYS.SDO_GEORASTER_ARRAY(geor,geor1);
sdo_geor_ra.rasterMathOp(geo_array,SDO_STRING2_ARRAY('{0,0}-0.5*{1,0}','{0,1}-0.5*{1,1}','{0,2}-0.5*{1,2}'),null,geor2);
update georaster_table set georaster = geor2 where georid = 17;
commit;
END;
/

例4-2の代数式配列の内容は次のとおりです。

- {0,0}は、第1入力GeoRasterオブジェクトgeorのバンド0のセル値を示します。

- {0,1}は、第1入力GeoRasterオブジェクトgeorのバンド1のセル値を示します。

- {0,2}は、第1入力GeoRasterオブジェクトgeorのバンド2のセル値を示します。

- {1,0}は、第2入力GeoRasterオブジェクトgeor1のバンド0のセル値を示します。

- {1,1}は、第2入力GeoRasterオブジェクトgeor1のバンド1のセル値を示します。

- {1,2}は、第2入力GeoRasterオブジェクトgeor1のバンド2のセル値を示します。

例4-2で、ターゲットGeoRasterオブジェクトのgeor2は3つのバンドを持ちます。

- ターゲットGeoRasterオブジェクトgeor2のバンド0のセル値は、{0,0}-0.5*{1,0}です。

- ターゲットGeoRasterオブジェクトgeor2のバンド1のセル値は、{0,1}-0.5*{1,1}です。

- ターゲットGeoRasterオブジェクトgeor2のバンド2のセル値は、{0,2}-0.5*{1,2}です。

例4-3 式配列に基づくGeoRasterオブジェクトの更新

例4-3では、代数式配列のSDO_STRING2_ARRAY('(abs({0}-{1})=48)&({2}-{1}=-101)','2*{0}-{1}/3=108')に基づいて、入力GeoRasterオブジェクトのセル値を更新します。この例では、ソースGeoRasterオブジェクトに3つのレイヤーが存在すると仮定します。

DECLARE
geor       MDSYS.SDO_GEORASTER;
geor1      MDSYS.SDO_GEORASTER;
begin
select georaster into geor from georaster_table where georid = 1;
sdo_geor_ra.rasterUpdate(geor,0,SDO_STRING2_ARRAY('(abs({0}-{1})=48)&({2}-{1}=-101)','2*{0}-{1}/3=108'),SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('123','54','89'),SDO_STRING2_ARRAY('98','56','123')));
END;
/

例4-3では、ピクセルごとに次の処理が実行されます。

- (abs({0}-{1})=48)&({2}-{1}=-101)がtrueの場合、3つのレイヤーのセル値は('123','54','89')に更新されます。

- 2*{0}-{1}/3=108がtrueの場合、3つのレイヤーのセル値は('98','56','123')に更新されます。

4.2 セル値ベースの条件付き問合せ

ラスターに対する空間ベースの問合せでの使用に加え(SDO_GEOR.getRasterSubsetの使用など)、分析およびアプリケーション・モデリングではセル値ベースの問合せが特に便利です。セル値ベースの条件付き問合せを実行し、指定した条件に基づいて新しいGeoRasterオブジェクトを生成するには、SDO_GEOR_RA.findCellsプロシージャを使用して適切なconditionパラメータを指定します。

conditionパラメータでは、有効なbooleanExpr値(「ラスター代数言語」を参照)を指定する必要があります。プロシージャは、ソースGeoRasterオブジェクトの各セルに対してbooleanExprを計算します。結果がTRUEの場合、元のセル値が出力GeoRasterオブジェクトに維持され、結果がFALSEの場合、bgValuesを使用して出力GeoRasterオブジェクトのセル値が入力されます。これは、マスキング操作と考えることもできます。

例4-4 条件付き問合せ

例4-4では、SDO_GEOR_RA.findCellsプロシージャをコールして、2番目のバンドの値が200より大きいすべてのピクセルを検出します。bgValuesパラメータが指定されていないため、値0が背景値として使用され、条件がfalseになるすべてのピクセルが入力されます。この例では、ソースGeoRasterオブジェクトが3つ以上のバンドを持つイメージであると仮定します。

DECLARE
geor   SDO_GEORASTER;
geor1  SDO_GEORASTER;
BEGIN
SELECT georaster INTO geor FROM georaster_table WHERE georid = 1;
INSERT into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1;
sdo_geor_ra.findcells(geor, '{ 1 }>200', 'blocking=true, blocksize=(256,256,3)', geor1);
UPDATE georaster_table set georaster = geor1 WHERE georid = 5;
COMMIT;
END;
/

-- This pixel is set to (0,0,0) because the cell value of the
-- second band is 136, which is not greater than 200.
SELECT sdo_geor.getcellvalue(georaster,0,30,30,'') FROM georaster_table WHERE georid =1 OR georid=5 ORDER BY georid;
SDO_GEOR.GETCELLVALUE(GEORASTER,0,30,30,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 136, 35)
SDO_NUMBER_ARRAY(0, 0, 0)

2 rows selected.

-- This pixel keeps the original values because the cell value
-- of the second band is greater than 200.
SELECT sdo_geor.getcellvalue(georaster,0,132,116,'') FROM georaster_table WHERE georid =1 OR georid=5 ORDER BY georid;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,132,116,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(242, 225, 233)
SDO_NUMBER_ARRAY(242, 225, 233)

2 rows selected.

-- This pixel keeps the original values because the cell value
-- of the second band is greater than 200.
SELECT sdo_geor.getcellvalue(georaster,0,261,185,'') FROM georaster_table WHERE georid =1 OR georid=5 ORDER BY georid;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,261,185,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(255, 214, 2)
SDO_NUMBER_ARRAY(255, 214, 2)

例4-5 nodataパラメータを使用した条件付き問合せ

例4-5は、基本的に例4-4と同じですが、すべてのNODATAピクセルで入力GeoRasterオブジェクトからの元の値を出力GeoRasterオブジェクトで維持するように、nodataパラメータ値が'TRUE'に設定されています。

DECLARE
geor   SDO_GEORASTER;
geor1  SDO_GEORASTER;
BEGIN
SELECT georaster INTO geor FROM georaster_table WHERE georid = 1;
INSERT into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1;
sdo_geor_ra.findcells(geor, '{ 1 }>200', null, geor1, null, 'TRUE');
UPDATE georaster_table set georaster = geor1 WHERE georid = 5;
COMMIT;
END;
/

SELECT sdo_geor.getcellvalue(georaster,0,30,30,'') FROM georaster_table WHERE georid =1;
SDO_GEOR.GETCELLVALUE(GEORASTER,0,30,30,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 136, 35)

1 row selected.

-- This pixel keeps its original cell values because it is nodata, even though
-- the cell value of the second band is not greater than 200.
SELECT sdo_geor.getcellvalue(georaster,0,30,30,'') FROM georaster_table WHERE georid=5;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,30,30,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 136, 35)

1 row selected.

例4-6 parallelParamを使用した条件付き問合せ

例4-6では、次の条件をすべて満たすすべてのピクセルを検出します。

- 1番目のバンドのセル値が(100,200)の間にあります。

- 2番目のバンドのセル値が[50,250]の間にあります。

- 3番目のバンドのセル値が100を超えます。

また、parallelParamが'parallel=4'と指定されているため、例4-6のプロシージャは4つのプロセスを使用してパラレルに実行されます。

DECLARE
geor   SDO_GEORASTER;
geor1  SDO_GEORASTER;
BEGIN
SELECT georaster INTO geor FROM georaster_table WHERE georid = 2;
INSERT into georaster_table values (10, sdo_geor.init('rdt_1', 10)) returning georaster into geor1;
sdo_geor_ra.findcells(geor,'({1}>=50)&({1}<=250)&({0}>100)&({0}<200)&{2}>100) ',null,geor1,null,'false','parallel=4');
UPDATE georaster_table SET georaster = geor1 WHERE georid = 10;
COMMIT;
END;
/

4.3 セル値ベースの条件付き更新(編集)

この項では、セル値ベースのラスター更新について説明し、空間ベースのラスター更新については説明しません(2つのタイプの更新については、「GeoRasterセル・データの問合せおよび更新」を参照してください)。

条件に基づいてラスター・セル値を更新するには、SDO_GEOR_RA.rasterUpdateプロシージャを使用して適切なconditionおよびvalsパラメータを指定します。

conditionパラメータではブール式の配列を指定し、valsパラメータでは計算式の各配列の配列を指定します。(「ラスター代数言語」のラスター代数操作の説明を参照してください。)各セルで、conditionがTRUEの場合、そのセル値はvals配列の対応する計算式の結果に更新されます。

例4-7 セル値ベースの更新

例4-7では、更新されるGeoRasterオブジェクトが3つのバンドを持つイメージであり、SDO_GEOR_RA.rasterUpdateプロシージャのコールによって次のことを実行すると仮定します。

- ピクセルについてabs(first_band_value - second_band_value)=48および(third_band_value - second_band_value=-101)である場合、3つのバンド値はそれぞれ(123,54,89)に更新されます。

- ピクセルについて(2*first_band_value - second_band_value/3)=108である場合、3つのバンド値はそれぞれ(98,56,123)に更新されます。

例4-7には、前と後の値を示すためにSDO_GEOR.getCellValueファンクションに対する複数のコールも含まれます。

SELECT sdo_geor.getcellvalue(georaster,0,30,30,'') FROM georaster_table WHERE georid =1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,30,30,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 136, 35)

1 row selected.

SELECT sdo_geor.getcellvalue(georaster,0,130,130,'') FROM georaster_table WHERE georid =1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,130,130,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(64, 60, 48)

1 row selected.

SELECT sdo_geor.getcellvalue(georaster,0,230,230,'') FROM georaster_table WHERE georid =1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,230,230,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(11,11, 11)

1 row selected.

DECLARE
geor   SDO_GEORASTER;
geor1  SDO_GEORASTER;
BEGIN

SELECT georaster into geor FROM georaster_table WHERE georid = 1;
sdo_geor_ra.rasterUpdate(geor,0,SDO_STRING2_ARRAY('(abs({0}-{1})=48)&({2}-{1}=-101)','2*{0}-{1}/3=108'),SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('123','54','89'),SDO_STRING2_ARRAY('98','56','123')));
END;
/

PL/SQL procedure successfully completed.

show errors;
No errors.

-- This pixel gets updated because it meets the first condition.
SELECT sdo_geor.getcellvalue(georaster,0,30,30,'') FROM georaster_table WHERE georid =1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,30,30,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(123, 54, 89)

1 row selected.

--This pixel gets updated because it meets the second condition.
SELECT sdo_geor.getcellvalue(georaster,0,130,130,'') FROM georaster_table WHERE georid=1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,130,130,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(98, 56, 123)

1 row selected.

-- This pixel keeps its original values because it does not meet any condition
-- in the "condition" array.
SELECT sdo_geor.getcellvalue(georaster,0,230,230,'') FROM georaster_table WHERE georid =1;
SDO_GEOR.GETCELLVALUE(GEORASTER,0,230,230,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(11,11, 11)

1 row selected.

例4-8 nodataパラメータを使用したセル値ベースの更新

例4-8は、基本的に例4-7と同じですが、すべてのNODATAピクセルで入力GeoRasterオブジェクトからの元の値を出力GeoRasterオブジェクトで維持するように、nodataパラメータ値が'TRUE'に設定されています。

SELECT sdo_geor.getcellvalue(georaster,0,30,30,'') FROM georaster_table WHERE georid =1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,30,30,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 136, 35)

1 row selected.

SELECT sdo_geor.getcellvalue(georaster,0,130,130,'') FROM georaster_table WHERE georid =1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,130,130,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(64, 60, 48)

1 row selected.

SELECT sdo_geor.getcellvalue(georaster,0,230,230,'') FROM georaster_table WHERE georid =1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,230,230,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(11,11, 11)

1 row selected.

DECLARE
geor   SDO_GEORASTER;
geor1  SDO_GEORASTER;
BEGIN

SELECT georaster into geor FROM georaster_table WHERE georid = 1;
sdo_geor.addNODATA(geor, 1,88);
sdo_geor_ra.rasterUpdate(geor,0,SDO_STRING2_ARRAY('(abs({0}-{1})=48)&({2}-{1}=-101)','2*{0}-{1}/3=108'),SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('123','54','89'),SDO_STRING2_ARRAY('98','56','123')),null,'true');
END;
/

PL/SQL procedure successfully completed.

-- This pixel keeps its original values because it is a NODATA pixel.
SELECT sdo_geor.getcellvalue(georaster,0,30,30,'') FROM georaster_table WHERE georid =1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,30,30,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 136, 35)

1 row selected.

--This pixel gets updated because it meets the second condition.
SELECT sdo_geor.getcellvalue(georaster,0,130,130,'') FROM georaster_table WHERE georid=1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,130,130,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(98, 56, 123)

1 row selected.

4.4 数学的操作

ラスター代数の主な用途は、ソースの異なるラスター・レイヤーに数学的モデルを適用することです。1つ以上のGeoRasterオブジェクトの1つ以上のレイヤーに数学的操作を適用して新しいGeoRasterオブジェクトを生成するには、SDO_GEOR_RA.rasterMathOpプロシージャを使用します。

このプロシージャのほとんどの形式では、operationパラメータで、出力GeoRasterオブジェクトのラスター・セル値を計算するために使用するarithmeticExpr文字列の配列を指定します。配列の各要素は、出力GeoRasterオブジェクトのレイヤーに対応します。

例4-8で実行したように、booleanExprはarithmeticExprとしても使用できることに注意してください。

例4-9 数学的操作(1)

例4-9では、SDO_GEOR_RA.rasterMathOpプロシージャをコールして3レイヤーのソースGeoRasterオブジェクトから6レイヤーの新しいGeoRasterオブジェクトを生成し、次のルールに従ってターゲットGeoRasterオブジェクトのセル値を計算します。

- ターゲットGeoRasterオブジェクトの最初の3つのレイヤーのセル値は、ソースGeoRasterオブジェクトの対応するレイヤーの値から10を引いた値に等しくなります。

- ターゲットGeoRasterオブジェクトの最後の3つのレイヤーのセル値は、それぞれソースGeoRasterオブジェクトの最初の3つのレイヤーの値に等しくなります。

DECLARE
geor   SDO_GEORASTER;
geor1  SDO_GEORASTER;
geor2  SDO_GEORASTER;
BEGIN
SELECT georaster INTO geor FROM georaster_table WHERE georid = 1;
INSERT into georaster_table values (16, sdo_geor.init('rdt_1', 16)) returning georaster into geor1;
sdo_geor_ra.rasterMathOp(geor,SDO_STRING2_ARRAY('{0,0}-10','{0,1}-10','{0,2}-10','{0,0}','{0,1}','{0,2}'),null,geor1);
UPDATE georaster_table SET georaster = geor1 WHERE georid = 16;
COMMIT;
END;
/

PL/SQL procedure successfully completed.

SELECT sdo_geor.getcellvalue(georaster,0,100,100,'') FROM georaster_table WHERE georid=1;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,100,100,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(181, 163, 159)

1 row selected.

--  In the results of the next SELECT statement, note:
--  171=181-10
--  153=163-10
--  149=159-10
--  181=181
--  163=163
--  159=159
SELECT sdo_geor.getcellvalue(georaster,0,100,100,'') FROM georaster_table WHERE georid =16;
SDO_GEOR.GETCELLVALUE(GEORASTER,0,100,100,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(171, 153, 149, 181, 163, 159)

1 row selected.

例4-10 数学的操作(2)

例4-10では、2要素のGeoRaster配列(2つの3レイヤーのソースGeoRasterオブジェクトを含む)に対して操作を適用し、3レイヤーの新しいGeoRasterオブジェクトを生成します。

DECLARE
geor       SDO_GEORASTER;
geor1      SDO_GEORASTER;
geor2      SDO_GEORASTER;
geo_array  SDO_GEORASTER_ARRAY;
BEGIN
SELECT georaster INTO geor FROM georaster_table WHERE georid = 1;
SELECT georaster INTO geor2 FROM georaster_table WHERE georid = 2;
INSERT into georaster_table values (17, sdo_geor.init('rdt_1', 17)) returning georaster into geor1;
geo_array:=SDO_GEORASTER_ARRAY(geor,geor2);
sdo_geor_ra.rasterMathOp(geo_array,SDO_STRING2_ARRAY('{0,0}-0.5*{1,0}','{0,1}-0.5*{1,1}','{0,2}-0.5*{1,2}'),null,geor1,'false',null,'parallel=4');
UPDATE georaster_table SET georaster = geor1 WHERE georid = 17;
COMMIT;
END;
/

PL/SQL procedure successfully completed.

SELECT sdo_geor.getcellvalue(georaster,0,100,100,'') FROM georaster_table WHERE georid=1 or georid=2;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,100,100,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(181, 163, 159)
SDO_NUMBER_ARRAY(60, 80, 90)

2 rows selected.

-- In the results of the next SELECT statement, note:
-- 151=181-0.5*60
-- 123=163-0.5*80
-- 114=159-0.5*90
SELECT sdo_geor.getcellvalue(georaster,0,100,100,'') FROM georaster_table WHERE georid =17;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,100,100,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(151, 123 114)

1 row selected.

例4-11 数学的操作(3)

例4-11では、2つの3レイヤーの入力GeoRasterオブジェクトに対して減算操作を適用し、新しいGeoRasterオブジェクトを生成します。例には、前と後の値を示すためにSDO_GEOR.getCellValueファンクションに対する複数のコールも含まれます。

SELECT sdo_geor.getcellvalue(georaster,0,10,10,'0-2') FROM georaster_table WHERE georid=1 OR georid=5 ORDER BY georid;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,10,10,'0-2')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 137, 32)
SDO_NUMBER_ARRAY(98, 147, 42)

2 rows selected.

SELECT sdo_geor.getcellvalue(georaster,0,100,100,'0-2') FROM georaster_table WHERE georid=1 OR georid=5 ORDER BY georid;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,100,100,'0-2')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(181, 163, 159)
SDO_NUMBER_ARRAY(191, 173, 169)

2 rows selected.

DECLARE
geor0  SDO_GEORASTER;
geor   SDO_GEORASTER;
geor1  SDO_GEORASTER;
BEGIN
SELECT georaster INTO geor FROM georaster_table WHERE georid = 1;
SELECT georaster INTO geor0 FROM georaster_table WHERE georid = 5;
INSERT into georaster_table values (6, sdo_geor.init('rdt_1', 6)) returning georaster into geor1;
sdo_geor_ra.rasterMathOp(geor0,geor,null,sdo_geor_ra.OPERATOR_SUBTRACT,null,geor1);
UPDATE georaster_table SET georaster = geor1 WHERE georid = 6;
COMMIT;
END;
/

PL/SQL procedure successfully completed.

SELECT sdo_geor.getcellvalue(georaster,0,10,10,'0-2') FROM georaster_table WHERE georid=6;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,10,10,'0-2')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(10, 10, 10)

1 row selected.

SELECT sdo_geor.getcellvalue(georaster,0,100,100,'0-2') FROM georaster_table WHERE georid=6;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,100,100,'0-2')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(10, 10, 10)

1 row selected.

4.5 分類操作

ソースGeoRasterオブジェクトに単純な分類操作を適用し、指定に基づいて新しいGeoRasterオブジェクトを生成するには、SDO_GEOR_RA.classifyプロシージャを使用してexpression、rangeArrayおよびvalueArrayパラメータを指定します。この分類手順は、セグメント化と呼ぶこともできます。

expressionパラメータは、rangeArrayパラメータに定義された値の範囲にマップするための値を計算するために使用します。rangeArrayパラメータでは、セル値を分類するための範囲を定義する数値配列を指定しますが、この配列には1つ以上の要素を含める必要があります。valueArrayパラメータは、各範囲のターゲット・セル値を定義する数値配列で、その大きさはrangeArrayに1を加えた大きさである必要があります。

例4-12 分類

例4-12では、SDO_GEOR_RA.classifyプロシージャをコールして入力GeoRasterオブジェクトの1番目のバンドの値にセグメント化操作を適用します。この例では、GeoRasterオブジェクトがイメージであると仮定します。

DECLARE
geor       SDO_GEORASTER;
geor1      SDO_GEORASTER;
rangeArray SDO_NUMBER_ARRAY;
valueArray SDO_NUMBER_ARRAY;
BEGIN
rangeArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180);
valueArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180,190);
SELECT georaster INTO geor FROM georaster_table WHERE georid = 1;
INSERT into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1;
sdo_geor_ra.classify(geor,'{0}',rangeArray,valueArray,null,geor1);
UPDATE georaster_table SET georaster = geor1 WHERE georid = 5;
COMMIT;
END;
/

PL/SQL procedure successfully completed.

-- In the next statement, the target value is 90 because the value of the
-- first band of source GeoRaster object is 88, which is between 80 and 90.
SELECT sdo_geor.getcellvalue(georaster,0,30,30,'') FROM georaster_table WHERE georid =1 OR georid =5 ORDER BY georid;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,30,30,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 136, 35)
SDO_NUMBER_ARRAY(90)

2 rows selected.

-- In the next statement, the target value is 190 because the value of the
-- first band of source GeoRaster object is 242, which is greater than 180.
SELECT sdo_geor.getcellvalue(georaster,0,132,116,'') FROM georaster_table WHERE georid =1 OR georid =5 ORDER BY georid;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,132,116,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(242, 225, 233)
SDO_NUMBER_ARRAY(190)

2 rows selected.

例4-13 nodataおよびnodataValueパラメータを使用した分類

例4-13では、SDO_GEOR_RA.classifyプロシージャをコールして、ソースGeoRasterオブジェクトの1番目のレイヤーの値にセグメント化操作を適用し、すべてのNODATAピクセルのNODATA値がターゲットGeoRasterオブジェクトで5に設定されるように、nodataパラメータを'TRUE'に、nodataValueパラメータを5に設定します。

DECLARE
geor       SDO_GEORASTER;
geor1      SDO_GEORASTER;
rangeArray SDO_NUMEBR_ARRAY;
valueArray SDO_NUMEBR_ARRAY;
BEGIN
rangeArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180);
valueArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180,190);
SELECT georaster INTO geor FROM georaster_table WHERE georid = 1;
sdo_geor.addNODATA(geor, 2,136);
INSERT into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1;
sdo_geor_ra.classify(geor,'{0}',rangeArray,valueArray,null,geor1,'true',5);
UPDATE georaster_table SET georaster = geor1 WHERE georid = 5;
END;
/

PL/SQL procedure successfully completed.

-- In the next statement, the target value of the cell is 5 because the value
-- of the second layer of the input GeoRaster object is 136, which is nodata.
SELECT sdo_geor.getcellvalue(georaster,0,30,30,'') FROM georaster_table WHERE georid =1 OR georid =5 ORDER BY georid;

SDO_GEOR.GETCELLVALUE(GEORASTER,0,30,30,'')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 136, 35)
SDO_NUMBER_ARRAY(5)

2 rows selected.

4.6 オンザフライ統計分析

多くのアプリケーションで統計分析が必要です。GeoRasterでは、GeoRasterオブジェクトの完全な統計値または個別の統計値(最小値、最大値、平均値、中央値、最頻値および標準偏差値)を動的に(オンザフライで)計算する統計分析ファンクションが提供されます。これは、ヒストグラムの生成やGeoRasterオブジェクト・メタデータの更新を行うことなく実行できます。

これらのサブプログラムでは、バンドごとに、指定したバンド番号の集計に基づいてピラミッドがサポートされます。各サブプログラムは、SDO_NUMBER_ARRAYオブジェクトまたは数値を戻します。

これらのオンザフライ統計計算サブプログラムの説明および例は、次のリファレンス情報を参照してください。

- SDO_GEOR.generateStatistics

- SDO_GEOR.generateStatisticsMax

- SDO_GEOR.generateStatisticsMean

- SDO_GEOR.generateStatisticsMedian

- SDO_GEOR.generateStatisticsMin

- SDO_GEOR.generateStatisticsMode

- SDO_GEOR.generateStatisticsSTD

これらのサブプログラムでは、GeoRasterオブジェクト・メタデータの統計データを設定してSDO_NUMBER_ARRAYオブジェクトのかわりにTRUEまたはFALSEの文字列値を戻す一部の形式のSDO_GEOR.generateStatisticsを除き、GeoRasterのメタデータは変更されません。

動的に生成される統計データを使用するアプリケーションについては、「 イメージのストレッチ」の例5-11を参照してください。

4.7 ラスター・データのスケール変更およびオフセット設定

ラスター代数には、地図的モデリング(「地図的モデリング」を参照)、イメージの線形ストレッチ(「イメージのストレッチ」を参照)、植生指標計算(「植生指標計算」を参照)、タッセルド・キャップ変換(「タッセルド・キャップ変換」を参照)などの多くのアプリケーションがあります。この章および「イメージ処理および仮想モザイク」の各項では、GeoRasterラスター代数のサンプル・アプリケーションについていくつか説明します。

例4-14 フィートからメートルへのDEMデータの変換

GeoRasterオブジェクトのセル値は、特定の単位によって空間オブジェクトの量的属性を表すことがあります。たとえば、DEM GeoRasterオブジェクトの標高データは、フィート単位になることがあります。アプリケーションでは、幾何補正などの操作で標高をメートルなどの別の単位に変換する必要があります。ラスター代数を使用して、DEMデータのスケールをフィートからメートルに変更(単位変換)できます(例4-14を参照)。

DECLARE
geor1    SDO_GEORASTER;
geor2    SDO_GEORASTER;
BEGIN
--Source GeoRaster object with a single DEM layer
select georaster into geor1 from georaster_table where georid = 1;
--To store the output DEM layer
select georaster into geor2 from georaster_table where georid = 2 for update;
--Scale elevation from feet to meters using the unit factor
sdo_geor_ra.rasterMathOp(geor1,SDO_STRING2_ARRAY('{0} * 0.3048'),null,geor2);
--Commit changes to the output georaster object
update georaster_table set georaster = geor2 where georid = 2;
commit;
END;
/

例4-15 ジオイド高によるDEMのオフセット

GeoRasterオブジェクトのセル・データは、状況によっては処理を続行するために定数によってオフセットする必要があります。たとえば、DEMレイヤーは、楕円体高度ではなく海抜高度を表すことがあります。RPCモデルによって地理参照されるRAWイメージをオルソ補正するには、楕円体高度が必要です。例4-15では、ジオイド高で海抜DEMをオフセットし、楕円体DEMを生成します。

DECLARE
geor1    SDO_GEORASTER;
geor2    SDO_GEORASTER;
BEGIN
--Source GeoRaster object with a single orthometric DEM layer
select georaster into geor1 from georaster_table where georid = 1;
--To store the output DEM layer
select georaster into geor2 from georaster_table where georid = 2 for update;
--Offset elevation by geoid height to get ellipsoidal elevation
sdo_geor_ra.rasterMathOp(geor1,SDO_STRING2_ARRAY('{0} - 28.8'),null,geor2);
--Commit changes to the output GeoRaster object
update georaster_table set georaster = geor2 where georid = 2;
commit;
END;
/

例4-16 変換(スケール変更)およびオフセット設定

例4-14と例4-15の操作は組み合せて1つの単純な手順にできます(例4-16を参照)。

DECLARE
geor1    SDO_GEORASTER;
geor2    SDO_GEORASTER;
BEGIN
--Source GeoRaster object with a single DEM layer
select georaster into geor1 from georaster_table where georid = 1;
--To store the output DEM layer
select georaster into geor2 from georaster_table where georid = 2 for update;
--Scale elevation from feet to meters and offset elevation by geoid height
sdo_geor_ra.rasterMathOp(geor1,SDO_STRING2_ARRAY('{0} * 0.3048 - 28.8'),null,geor2);
--Commit changes to the output georaster object
update georaster_table set georaster = geor2 where georid = 2;
commit;
END;
/

4.8 ラスター・データのキャスト

ラスター・データのキャストによって、あるデータ型から別のデータ型にセル値がマップされます。GeoRasterには、2つのタイプのキャスト操作があり、一方では操作のstorageParamパラメータでcellDepthキーワードを使用し、他方ではGeoRasterラスター代数のcastingExpr操作を使用します。(castingExprはarithmeticExpr操作の1つです。「ラスター代数言語」を参照してください。)

ラスター・データの結果を新しいGeoRasterオブジェクトに格納する操作を適用するたびに、その操作のstorageParamパラメータでcellDepthキーワードを使用できます。(cellDepthキーワードとその値については、表1-1を参照してください。)cellDepthが指定されている場合、ターゲットGeoRasterオブジェクトがそのcellDepth値を使用して作成され、ラスター・セル・データは自動的にその格納用のcellDepth値にキャストされます。ソース・データがセル深度の下限で、結果のデータがセル深度の上限である場合、storageParamパラメータでcellDepthを直接使用してキャストを実行できます。この場合、キャストは透過的で高速です。

ただし、セル深度の上限のデータに対してセル深度の下限を指定すると、storageParamパラメータでcellDepthキーワードを使用してセル深度を変更した場合にデータの消失または変更が発生し、精度や品質が低下する可能性があります。精度と確度を詳細に制御するには、ラスター代数のキャスト演算子のcastingExprを使用します。

たとえば、32BIT_REALのセル深度を持つラスターがあり、値の範囲が[0.0, 100.0]であると仮定します。例4-17を使用して、10の異なるクラスへのラスターの線形セグメント化を実行できます(それぞれが、castint演算子の使用によって、10の倍数のセル値(0, 10, 20, …, 90)を持ちます)。この操作によって、すべてのセル値が、最も近い小さい方の10の倍数にキャストされます(たとえば、60から69のすべての数は、60にキャストされます)。

例4-17 ラスターの線形セグメント化

DECLARE
geor1    SDO_GEORASTER;
geor2    SDO_GEORASTER;
BEGIN
--Source georaster object with cell value range [0.0,100.0)
select georaster into geor1 from georaster_table where georid = 1;
--Target georaster object to store the output layer
select georaster into geor2 from georaster_table where georid = 2 for update;
--Linearly segment the source raster into 10 classes and store in 8BIT cell depth
sdo_geor_ra.rasterMathOp(geor1,
SDO_STRING2_ARRAY('(castint({0}/10)*10'),
'celldepth=8BIT',
geor2);
--Commit changes to the output georaster object
update georaster_table set georaster = geor2 where georid = 2;
commit;
END;
/

例4-17に示すとおり、storageParamパラメータでのcellDepthキーワードの使用とラスター代数のキャスト演算子を組み合せることで、適切で簡潔な方法で結果を正しく計算して格納できます。例4-17で、出力セル値は90以下の整数であるため、結果のラスターは(32BIT_REALのかわりに)記憶域を節約できる8BITのセル深度を使用して格納できます。

4.9 地図的モデリング

ラスター代数は、地図的モデリングに広く使用され、GISシステムの必須の構成要素と考えられます。PL/SQLとラスター代数の式およびファンクションを使用して、事実上無制限のサイズの多数のラスターおよびイメージを対象に地図的モデリングを実行できます。

たとえば、山火事の評価の地図的モデリング・プロセスでは、標高、傾斜、方位、温度、湿度などの情報を一連のラスター・レイヤーから取得し、1つずつセルを評価して結果のラスター地図を作成できます(この地図はさらに主題地図を作成するために分類できます)。ラスター・レイヤーのオーバーレイ技術を使用した変更分析、用地選定、適合性分析、気候モデリングおよび油田評価は、他の典型的な地図的モデリング・プロセスです。これらの場合、状況に応じて算術、関係および論理演算子を組み合せる必要があります。

架空の地図的モデルに7つの異なるラスター・レイヤーが含まれ、次のような式があり、モデリングの結果はセル値として0および1を持つラスター地図であると仮定します。

output = 1 if ( (100 < layer1 <= 500)
& (layer2 == 3 or layer2 == 10)
& ( (layer3+layer4) * log(Layer5) / sqrt(layer5) ) >= layer6)
|| (layer7 != 1) )
is TRUE and
0 if otherwise

例4-18は、GeoRasterで前述の地図的モデルを実行してその結果をビットマップとして格納する方法を示しています。

例4-18 地図的モデリング

DECLARE
geor       SDO_GEORASTER;
geor1      SDO_GEORASTER;
mycursor   sys_refcursor;
expr       varchar2(1024);
BEGIN
--7 source GeoRaster objects, each of which contains one source layer in the order of 1 to 7
OPEN mycursor FOR
select georaster from georaster_table where georid >0 and georid <=7 order by georid;
--Output GeoRaster object to contain the result
insert into georaster_table (georid, georaster) values (8, sdo_geor.init('RDT_1',8))
returning georaster into geor1;
--Modeling using arithmeticExpr, booleanExpr, and rasterMathOp
expr := '((100<{0,0})&({0,0}<=500))&(({1,0}=3)|({1,0}=10))&(((({2,0}+{3,0})*log({4,0})/sqrt({4,0}))>={5,0})|({6,0}!=1))';
sdo_geor_ra.rasterMathOp(mycursor, sdo_string2_array(expr),
'celldepth=1BIT', geor1, 'true', 0, 'parallel=4');
update georaster_table set georaster = geor1 where georid = 8;
commit;
END;
/

例4-18のプロセスでは、NODATAを考慮し、1つ以上のソース・レイヤーのNODATAセルである任意のセルに0(ゼロ)を割り当てます。これは、データベース・サーバーの複数のCPUを利用してパフォーマンスを向上するために、4つのプロセスにパラレル化されます。

5 イメージ処理および仮想モザイク

この章では、GCP地理参照、再投影、幾何補正、オルソ補正、イメージのスケール変更、ストレッチ、マスキング、イメージのセグメント化、NDVI計算、タッセルド・キャップ変換、イメージの追加、バンドのマージ、大規模な拡張イメージ・モザイク処理などの高度なイメージ処理機能について説明します。

この章では、大規模なイメージ・データベースとそれに対するオンザフライ空間問合せのコンテキスト内における仮想モザイクの概念および適用についても説明します。

この章の操作は、地理空間イメージ(特に衛星によるRAWイメージや航空写真)を処理するために最もよく使用されます。ただし、これらの操作は、GeoRasterラスター代数と同様にすべてのラスター・データ型に適用されます。

この章の内容は次のとおりです。

- 高度な地理参照

- イメージの再投影

- イメージの幾何補正

- イメージのオルソ補正

- イメージのスケール変更

- イメージのストレッチ

- イメージのセグメント化

- イメージのピラミッド化: パラレル生成および部分更新

- ビットマップのピラミッド化

- 植生指標計算

- タッセルド・キャップ変換

- イメージのマスキング

- バンドのマージ

- イメージの追加

- 大規模イメージのモザイク処理

- 仮想モザイク

- イメージの提供

5.1 高度な地理参照

GeoRasterでは、空間参照機能は空間参照システム(SRS)または地理参照と呼ばれます(これは地理または地理空間スキームに関連する場合としない場合があります)。地理参照は、GeoRasterの主要機能であり、地理空間イメージおよびグリッド・ラスター・データに対する空間問合せおよび操作の基盤です。SRSモデルの詳細は、「地理参照」を参照してください。

GeoRasterでは、座標系に関連付けられていない地理空間イメージ以外のイメージ、美術写真、および多次元配列がサポートされます。これらのイメージおよびラスターでは、通常は地理参照の必要はありませんが、ほとんどのGeoRaster操作(ピラミッド化、スケール変更、サブセット化、バンドのマージ、ストレッチ、代数操作など)はそれらに対して動作します。この場合、ラスターのセル空間座標(行、列およびバンド)を使用してピクセル(セル)をアドレッシングします。

地理に関連しないユーザー定義の座標系(新しいSRID)を作成することも可能で、そのSRIDをラスターのモデル座標系として使用できます。その後、そのSRIDを基準としてこれらのラスターを空間参照できます(SRSメタデータ構成要素がこれらのラスターごとに作成されます)。これを行うことで、各ラスターが空間参照され、そのユーザー定義のモデル座標系にともに配置されます。関連するすべてのラスターでこれを行った後、GeoRaster操作は、地理座標系を基準に地理参照する場合と同様にそれらのラスターで動作します。たとえば、ある芸術家が壁に描いた巨大な壁画があり、その壁の多数の高解像度写真を異なるタイルとして撮り、それらをまとめて貼り合せるとします。タイル・イメージを空間参照し、GeoRasterのモザイク処理機能を使用して貼合せを行うことができます。

新しい座標系を定義しない場合でも、セル空間にイメージをともに配置できます。つまり、イメージを同じ座標系に配置してモザイク処理できるように、SDO_GEOR.setULTCoordinateプロシージャをコールしてイメージ用に異なるULT座標を設定できます。

保持しているほとんどの地理空間イメージおよびラスター・ファイルは、通常、すでに他のソフトウェア・ツールによって地理参照されているため、それらには地理参照情報が付属している可能性があります。そのような場合、地理参照情報は、ラスターとともに直接ロードするか、後でSDO_GEOR.importFrom、SDO_GEOR.setSRS、GeoRasterローダー・ツール、GDAL、または他のサード・パーティETLツールを使用してロードできます。詳細は、「GeoRasterツール: ビューア、ローダー、エクスポータ」および「GeoRasterオブジェクトの地理参照」を参照してください。

地理空間イメージに空間参照情報が含まれない場合、GeoRasterの地上基準点(GCP)サポートを使用してイメージを地理参照できます。GCPは、リモート・センシング・システムによって自動的に、または後から手動で収集します。GCP情報のないイメージの場合、GeoRasterの視覚化ツールを使用してGeoRasterオブジェクトのGCPを収集できます。GCPの詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

GCPを入手した後で、それらをGeoRasterメタデータに格納する場合、SDO_GEOR.getGCPGeorefModelファンクションおよびSDO_GEOR.setGCPGeorefModelプロシージャを使用してGCPベースの地理参照モードを取得および設定できます。GCPのみを取得、設定および編集するには、SDO_GEOR.getControlPoint ファンクションと、SDO_GEOR.setControlPointおよびSDO_GEOR.deleteControlPoint プロシージャを使用します。GCPは、SDO_GEOR.georeferenceをコールすると、GeoRasterメタデータにも格納できます。

ジオメトリ・モデルのみを取得および設定するには、SDO_GEOR.getGCPGeorefMethodファンクションおよびSDO_GEOR.setGCPGeorefMethodプロシージャを使用します。GeoRasterでは、チェック・ポイント(pointType = 2)も格納できますが、それらは基準点(pointType = 1)と同じように処理および操作されます(ただし、チェック・ポイントは、SDO_GEOR.georeferenceがGCPとともにコールされたときにSRS係数を作成するために使用されません)。

GeoRasterオブジェクトに格納されているか、格納されていない地上基準点(GCP)があり、関数フィッティング地理参照モデルを計算する場合、SDO_GEOR.georeferenceプロシージャをコールしてソリューションを検出します。関数フィッティング地理参照モデルでは、すべての係数をGeoRaster SRSに格納し、セル空間とモデル空間の間で座標変換が可能になります。GCPを使用して関数フィッティング地理参照モデルを生成するには、適切なジオメトリ・モデルを指定する必要があります。SDO_GEOR.georeferenceによってサポートされる特定のジオメトリ・モデルは、アフィン変換、二次多項式、三次多項式、DLT、二次有理およびRPCです。これらのモデルの詳細は、「関数フィッティング地理参照モデル」を参照してください。

例5-1 GCP地理参照モデルの設定

たとえば、平面領域のランドサット・イメージがあり、それを地理参照する場合、二次多項式ジオメトリ・モデルを選択できます。この目的で、9つのGCP (この場合6つ以上のGCP)と3つのチェック・ポイントを収集済の場合、GCPを設定して、例5-1のコードを使用してGeoRasterのメタデータにそれらを格納できます。

DECLARE
gr1         sdo_georaster;
georefModel SDO_GEOR_GCPGEOREFTYPE;
GCPs        SDO_GEOR_GCP_COLLECTION;
BEGIN
SELECT georaster INTO gr1 from georaster_table WHERE georid=1 FOR UPDATE;
GCPs := SDO_GEOR_GCP_COLLECTION(
SDO_GEOR_GCP('1', '', 1,
2, sdo_number_array(25, 73),
2, sdo_number_array(237036.9, 897987.2),
NULL, NULL),
SDO_GEOR_GCP('2', '', 1,
2, sdo_number_array(100, 459),
2, sdo_number_array(237229.6, 897949.7),
NULL, NULL),
SDO_GEOR_GCP('3', '', 1,
2, sdo_number_array(362, 77),
2, sdo_number_array(237038.9, 897818.8),
NULL, NULL),
SDO_GEOR_GCP('4', '', 1,
2, sdo_number_array(478, 402),
2, sdo_number_array(237201.06, 897760.56),
NULL, NULL),
SDO_GEOR_GCP('5', '', 1,
2, sdo_number_array(167, 64),
2, sdo_number_array(237032.02, 897916.26),
NULL, NULL),
SDO_GEOR_GCP('6', '', 1,
2, sdo_number_array(101, 257),
2, sdo_number_array(237128.9, 897949.3),
NULL, NULL),
SDO_GEOR_GCP('7', '', 1,
2, sdo_number_array(235, 501),
2, sdo_number_array(237250.9, 897882.2),
NULL, NULL),
SDO_GEOR_GCP('8', '', 1,
2, sdo_number_array(423, 214),
2, sdo_number_array(237107.3, 897788.0),
NULL, NULL),
SDO_GEOR_GCP('9', '', 1,
2, sdo_number_array(127, 178),
2, sdo_number_array(237089.0, 897936.5),
NULL, NULL),
SDO_GEOR_GCP('10', '', 2,
2, sdo_number_array(131, 425),
2, sdo_number_array(237212.8, 897934.2),
NULL, NULL),
SDO_GEOR_GCP('11', '', 2,
2, sdo_number_array(299, 111),
2, sdo_number_array(237055.7, 897850.4),
NULL, NULL),
SDO_GEOR_GCP('12', '', 2,
2, sdo_number_array(329, 253),
2, sdo_number_array(237126.9,897835.4),
NULL, NULL) );
georefModel := SDO_GEOR_GCPGEOREFTYPE('QuadraticPolynomial', GCPs.count, GCPs, NULL);
-- Set and store the GCP georeference model into the GeoRaster object's metadata
sdo_geor.setGCPGeorefModel(gr1, georefModel);
UPDATE georaster_table SET georaster=gr1 WHERE georid=1;
COMMIT;
END;
/

例5-2 GCPを使用した関数フィッティング・モデルの生成

例5-1のコードを使用した後、例5-2のコードを使用して関数フィッティング・モデルの係数を生成できます。

DECLARE
gr1  sdo_georaster;
rms  sdo_number_array;
BEGIN
SELECT georaster INTO gr1 from georaster_table WHERE georid=1 FOR UPDATE;
-- georeference the image using the GCPs stored in the image's metadata
rms := sdo_geor.georeference(gr1, null, 26986, 0, 'TRUE');
UPDATE georaster_table SET georaster=gr1 WHERE georid=1;
COMMIT;
END;
/

例5-1および例5-2の手順は、GeoRasterオブジェクトのメタデータにGCPを事前設定することなく、組み合せることができます(「SDO_GEORパッケージのリファレンス」のSDO_GEOR.georeferenceの例を参照)。例5-2のSDO_GEOR.georeferenceで戻される値の配列には、各GCPのRMS値と残差が含まれます。これらを使用して、ソリューションの精度を調査し、不適切なGCPを識別できます。精度に不満がある場合、すべてのGCPを再チェックしてそれらが正確であることを確認し、必要に応じて別のGCPを追加してから、1つ以上のスクリプトを再度実行します。

GeoRasterのGCPサポートでは、任意の非地理空間イメージおよびラスターも空間参照できます。

地理空間イメージを地理参照した後、幾何補正、再投影、モザイク処理の適用や、異なる座標系のジオメトリ・ポリゴンを使用したラスターの空間問合せおよびサブセット化などで、それらのイメージを処理できます。

5.2 イメージの再投影

イメージの再投影は、イメージをあるSRS (空間参照システム、または座標系)から別のSRSに変換するプロセスです。再投影は、2つ以上のオブジェクトを結合する一定のGeoRaster操作では特に便利です(この場合、すべてのGeoRasterオブジェクトを同じSRSに含める必要があるため)。

GeoRasterの基本的な再投影は、SDO_GEOR.reprojectプロシージャによって実行されますが、ソースGeoRaster SRIDは、出力SRIDとは異なっている必要があります。

例5-3 イメージの再投影

例5-3では、SRID 4326のGeoRasterオブジェクトにロードされているラスター・イメージを再投影しますが、以前にSRID 23619で格納された他のイメージと同じSRIDを持つように再投影する必要があります。

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
select raster into gr1 from georaster_load_table where georid = 10;
delete from georaster_table where georid = 54;
insert into georaster_table
values(54,'reprojected', sdo_geor.init())
returning georaster into gr2;
sdo_geor.reproject(inGeoRaster   => gr1,
pyramidLevel  => 0,
cropArea      => null,
layerNumbers  => null,
resampleParam => 'resampling=BILINEAR',
storageParam  => null,
outSRID       => 32619,
outGeoraster  => gr2);
update georaster_table set georaster = gr2 where georid = 54;
commit;
END;

同じ操作は、SDO_GEOR.rectifyプロシージャでも実行可能で、同様の結果が生成されます。SDO_GEOR.rectifyプロシージャでは、SDO_GEOR.reprojectより多くの機能と柔軟性が提供されます(たとえば、入力および出力のSRIDを同じにすることができ、ユーザーは出力の正確な解像度を指定できます(「イメージの幾何補正」を参照))。

GeoRasterオブジェクトにSRSが関連付けられていない場合、その地理参照と幾何補正のプロセスの詳細は、「GeoRasterオブジェクトの地理参照」および「イメージの幾何補正」を参照してください。

パラレル再投影は、SDO_GEOR_AGGR.mosaicSubsetプロシージャでサポートされます。「パラレル圧縮、コピー、サブセット化、再投影および幾何補正」の例5-23を参照してください。

5.3 イメージの幾何補正

地上のリモート・センサーから取得されるほとんどのラスター・データは、通常、地形を原因とするひずみ、計器の視野角、および地球の不規則な形状の影響を受けます。この項で説明するイメージの幾何補正は、イメージを変換してそのひずみを低減するプロセスです。

幾何補正は、SDO_GEOR.rectifyプロシージャによって実行されますが、ソースGeoRasterオブジェクトには1つ以上の関数フィッティング地理参照モデルが必要です。つまり、イメージは幾何補正する必要はありませんが、メタデータに地理参照情報を保持する必要があります(「GeoRasterオブジェクトの地理参照」を参照)。

SDO_GEOR.rectifyプロシージャでは、ソースGeoRasterオブジェクトで使用可能な情報を使用して、出力GeoRasterの空間エクステント、次元およびSRIDを自動的に確立でき、ユーザーも適切なパラメータを使用して異なる値を指定できます。

例5-4 イメージの幾何補正

例5-3では、GeoRasterにロードされてからGCPを使用して地理参照されている航空イメージを幾何補正します(「高度な地理参照」を参照)。イメージは、出力GeoRasterオブジェクトが既存のGeoRasterオブジェクトと同じSRSおよび解像度となるように幾何補正されます。イメージは、既存のGeoRasterオブジェクトの領域に制限されます(ピクセルは既存のGeoRasterオブジェクトに完全に沿って配置される必要があります)。

DECLARE
gr_src sdo_georaster;
gr_ref sdo_georaster;
gr_out sdo_georaster;
BEGIN
select raster into gr_src from georaster_load_table where georid = 15;
select raster into gr_ref from georaster_table where georid = 1;
delete from georaster_table where georid = 2;
insert into georaster_table
values(2, 'rectified', sdo_geor.init())
returning georaster into gr_out;
sdo_geor.rectify(inGeoRaster      => gr_src,
pyramidLevel     => null,
elevationParam   => null,
dem              => null,
outSRID          => sdo_geor.getModelSRID(gr_ref),
outModelCoordLoc => null,
cropArea         => sdo_geor.generateSpatialExtent(gr_ref),
polygonClip      => null,
layerNumbers     => null,
outResolutions   => sdo_geor.getSpatialResolutions(gr_ref),
resolutionUnit   => 'unit=meters',
referencePoint   => sdo_geor.getModelCoordinate(gr_ref,
0, sdo_number_array(-0.5,-0.5)),
resampleParam    => null,
storageParam     => null,
outGeoraster     => gr_out);
update georaster_table set georaster = gr_out where georid = 2;
commit;
END;

幾何補正の出力は、標高に関する情報がSDO_GEOR.rectifyプロシージャに渡されると大幅に改善される可能性があります。(標高の詳細は、「イメージのオルソ補正」を参照してください。)

パラレル幾何補正は、SDO_GEOR_AGGR.mosaicSubsetプロシージャでサポートされます。「パラレル圧縮、コピー、サブセット化、再投影および幾何補正」の例5-23を参照してください。

5.4 イメージのオルソ補正

オルソ補正は、地球の標高、地形および形状に関する情報を使用して出力幾何補正イメージの品質を向上する幾何補正変換プロセスです。Oracle GeoRasterでは、高さの平均値またはDEMを使用した単一のイメージ・オルソ補正がサポートされます。

オルソ補正は、SDO_GEOR.rectifyプロシージャによって実行されますが、ソースGeoRasterには3D SRSが必要です。SDO_GEOR.rectifyプロシージャは、領域の平均の高さまたは詳細な数値標高モデル(DEM)を使用してオルソ補正を実行できます。

関連項目:

- 平均の高さを使用したオルソ補正

- DEMを使用したオルソ補正

5.4.1 平均の高さを使用したオルソ補正

数値標高モデル(DEM)を使用したGeoRasterオブジェクトは、オルソ補正のオプションです。比較的平坦な地形では、3D SRSと高さの平均値を組み合せれば、通常、ソース・イメージのひずみを修正するために十分です。

例5-5 平均の高さを使用したオルソ補正

例5-5に、平均の高さを使用したオルソ補正を示します。この例の場合、ソース・イメージは、RPCを使用してDigitalGlobeから取得できました。DEMは使用できませんでしたが、領域の平均の標高は、1748.0mであるとわかっています。

DECLARE
gr_src  sdo_georaster;
gr_out  sdo_georaster;
BEGIN
select georaster into gr_src from georaster_table where georid = 1;
delete from georaster_table where georid = 3;
insert into georaster_table values(3, 'orthorectified without DEM',
sdo_geor.init('rdt_4',3))
returning georaster into gr_out;
sdo_geor.rectify(inGeoRaster      => gr_src,
pyramidLevel     => null,
elevationParam   => 'average=1748.8',
dem              => null,
outSRID          => 32613,
outModelCoordLoc => null,
cropArea         => null,
polygonClip      => null,
layerNumbers     => null,
outResolutions   => null,
resolutionUnit   => null,
referencePoint   => null,
resampleParam    => 'resampling=AVERAGE4',
storageParam     => null,
outGeoraster     => gr_out);
update georaster_table set georaster = gr_out where georid = 3;
commit;
END;

例5-5では、demパラメータはNULLで、elevationParamの平均の標高はSRSと同じ単位である必要があります。また、elevationParamでは、offsetおよびscaleキーワードは、DEMが指定されている場合にのみ関連するため、指定されていません。

5.4.2 DEMを使用したオルソ補正

数値標高モデル(DEM)・レイヤーの使用によって、幾何補正プロセスの精度が向上するため、より高品質な出力GeoRasterオブジェクトが生成されます。

DEMを使用したオルソ補正では、ソースGeoRasterに3D SRSが必要です。DEMは、すべてのターゲット出力領域を対象とし、出力と同じSRIDである必要があります。DEMの解像度は、出力GeoRasterオブジェクトの予測される解像度とほぼ同じである必要があります。

DEMを使用したオルソ補正では、elevationParamのaverageキーワードはオプションで、指定しない場合、プロシージャでは、ターゲット領域のDEMから抽出されたサンプル値に基づいて標高値が評価されます。

elevationParamのoffsetおよびscaleの値は、DEMからの値を変更するために使用できます。たとえば、scaleは、DEM値がソースGeoRaster SRSの単位とは異なる単位である場合の単位変換に使用でき、offsetはジオイド補正や他のオフセット設定を実行するために使用できます。ただし、これらの指定では、GeoRasterオブジェクトのDEM値に変更が適用されません。かわりの方法は、オルソ補正の前にDEMデータにスケール変更およびオフセット設定を適用して、DEM値を事前処理することです(「ラスター・データのスケール変更およびオフセット設定」を参照)。

例5-6 DEMを使用したオルソ補正

例5-6の例では、DEMを使用してオルソ補正を実行します。DEMは、出力GeoRasterの解像度に近似している解像度のすべての出力領域を対象とします。DEM値はm単位ですが、ソース・イメージSRSはフィート単位です。約-15.3mの該当領域に対するジオイド補正もあります。

DECLARE
gr_src  sdo_georaster;
gr_dem  sdo_georaster;
gr_out  sdo_georaster;
BEGIN
select georaster into gr_src from georaster_table where georid = 1;
select georaster into gr_dem from georaster_table where georid = 5;
delete from georaster_table where georid = 6;
insert into georaster_table values(5, 'orthorectified with DEM',
sdo_geor.init('rdt_4',6))
returning georaster into gr_out;
sdo_geor.rectify(inGeoRaster      => gr_src,
pyramidLevel     => null,
elevationParam   => 'average=1748.8 offset=-15.3',
dem              => gr_dem,
outSRID          => 32613,
outModelCoordLoc => null,
cropArea         => null,
polygonClip      => null,
layerNumbers     => null,
outResolutions   => null,
resolutionUnit   => null,
referencePoint   => null,
resampleParam    => 'resampling=BILINEAR',
storageParam     => null,
outGeoraster     => gr_out);
update georaster_table set georaster = gr_out where georid = 6;
commit;
END;

例5-7 クロッピング済のDEMを使用したオルソ補正

通常、DEMは、ターゲット領域よりずっと大きい領域を対象とし、解像度は出力GeoRasterオブジェクトのターゲット解像度よりも粗くなります。このDEMをそのまま使用すると、品質の低いオルソ補正になります。この一般的な問題に対するソリューションは、ターゲット領域までDEMをクロッピングし、目的の解像度になるまでそのスケールを変更することです(例5-7を参照)。この例では、SDO_GEOR.rectifyプロシージャを使用して、低解像度DEM GeoRasterオブジェクトを、SDO_GEOR.rectifyプロシージャに対する2番目のコールによって生成されるオルソ補正済GeoRasterオブジェクトと同じ解像度を持つ2番目のDEM GeoRasterオブジェクトに変換します。

DECLARE
height   number := 1748.8;
gr_src   sdo_georaster;
gr_out   sdo_georaster;
gr_dem   sdo_georaster;
gr_dem2  sdo_georaster;
gm_area  sdo_geometry;
begin
select georaster into gr_src from georaster_table where georid = 1;
select georaster into gr_dem from georaster_table where georid = 2;
-- Calculate crop area
gm_area := sdo_cs.make_2d(
sdo_geor.generateSpatialExtent(gr_src,height),
sdo_geor.getModelSRID(gr_dem));
-- Rectify dem ( re-project, crop area, re-escale and resample )
delete from georaster_table where georid = 4;
insert into georaster_table values(4,
'rectified DEM',
sdo_geor.init('rdt_4',4))
returning georaster into gr_dem2;
sdo_geor.rectify(inGeoRaster      => gr_dem,
pyramidLevel     => null,
elevationParam   => null,
dem              => null,
outSRID          => 32613,
outModelCoordLoc => null,
cropArea         => gm_area,
polygonClip      => null,
layerNumbers     => null,
outResolutions   => sdo_number_array(0.6,0.6),
resolutionUnit   => null,
referencePoint   => null,
resampleParam    => 'resampling=CUBIC',
storageParam     => null,
outGeoraster     => gr_dem2);
update georaster_table set georaster = gr_dem2 where georid = 4;
commit;
-- Orthorectification with DEM
select georaster into gr_dem2 from georaster_table where georid = 4;
delete from georaster_table where georid = 5;
insert into georaster_table
values(5, 'orthorectified', sdo_geor.init('rdt_4',5))
returning georaster into gr_out;
sdo_geor.rectify(inGeoRaster      => gr_src,
pyramidLevel     => null,
elevationParam   =>
'average=' || height || ' offset=-15.588',
dem              => gr_dem2,
outSRID          => 32613,
outModelCoordLoc => null,
cropArea         => gm_area,
polygonClip      => null,
layerNumbers     => null,
outResolutions   => sdo_number_array(0.6,0.6),
resolutionUnit   => null,
referencePoint   => null,
resampleParam    => 'resampling=average16',
storageParam     => null,
outGeoraster     => gr_out);
update georaster_table set georaster = gr_out where georid = 5;
commit;
end;
/

5.5 イメージのスケール変更

イメージのスケール変更は、イメージの行および列の次元に対応するピクセル・サイズを変更してイメージを拡大または縮小するプロセスです。イメージのスケール変更では、そのイメージのスケール変更したバージョンを作成するため、元のイメージからピクセル値をリサンプリングします。

イメージのスケール変更を実行する1つの方法は、SDO_GEOR.scaleCopyプロシージャを使用して、scaleParamおよびscaleFactorが入力イメージ次元または出力イメージのmaxDimSizeに適用されるように指定します。

イメージのスケール変更を実行するもう1つの方法は、SDO_GEOR.rectifyプロシージャを使用して出力イメージの解像度を指定します。

SDO_GEOR.scaleCopyとSDO_GEOR.rectifyの両方で、resampleParamパラメータによって、入力ピクセル値に実行されるリサンプリング・アルゴリズムを決定し、出力イメージの値を特定します。

例5-8 SDO_GEOR.scaleCopyを使用したイメージのスケール変更

例5-8では、SDO_GEOR.scaleCopyを使用してスケール変更を実行し、scaleFactor値を2に指定します。入力イメージには、元のイメージと比較して2倍の行と2倍の列が含まれ、値はaverage16アルゴリズムによってリサンプリングされます。イメージは、元のイメージと比較して4倍の大きさになることに注意してください。

DECLARE
gr_src  sdo_georaster;
gr_out  sdo_georaster;
BEGIN
select georaster into gr_src from georaster_table where georid = 7;
-- Rescale
delete from georaster_table where georid = 9;
insert into georaster_table values(9, 're-scaled by scaleCopy',
sdo_geor.init('rdt_4',9))
returning georaster into gr_out;
sdo_geor.scaleCopy(inGeoRaster      => null,
scaleFactor      => 'scaleFactor=2',
resampleParam    => 'resampling=AVERAGE16',
storageParam     => null,
outGeoraster     => gr_out);
update georaster_table set georaster = gr_out where georid = 9;
commit;
END;
/

例5-9 SDO_GEOR.rectifyを使用したイメージのスケール変更

例5-9では、SDO_GEOR.rectifyを使用してスケール変更を実行し、outResolutionsパラメータを指定します。入力イメージは、すでに幾何補正され、出力には入力と同じSRIDが含まれます。

DECLARE
gr_src     sdo_georaster;
gr_out     sdo_georaster;
BEGIN
select georaster into gr_src from georaster_table where georid = 7;
-- Rescale
delete from georaster_table where georid = 10;
insert into georaster_table values(10, 're-scaled by rectify',
sdo_geor.init('rdt_4',10))
returning georaster into gr_out;
sdo_geor.rectify(inGeoRaster      => null,
pyramidLevel     => null,
elevationParam   => null,
dem              => null,
outSRID          => null,
outModelCoordLoc => null,
cropArea         => null,
polygonClip      => null,
layerNumbers     => null,
outResolutions   => sdo_number_array(1.2,1.2),
resolutionUnit   => null,
referencePoint   => null,
resampleParam    => 'resampling=CUBIC',
storageParam     => null,
outGeoraster     => gr_out);
update georaster_table set georaster = gr_out where georid = 10;
commit;
END;
/

5.6 イメージのストレッチ

イメージの単純な線形ストレッチでは、イメージの色またはコントラストを拡張できます。イメージのストレッチを実行するには、SDO_GEOR_RA.rasterMathOpプロシージャを使用します。

例5-10 既知の最小および最大のセル値を使用したイメージのストレッチ

例5-10では、既知の、または事前生成済の最小および最大のセル値を使用して、線形ストレッチによって3バンドのイメージのコントラストを拡張します。

DECLARE
gr1 sdo_georaster; -- source 3-band image
gr2 sdo_georaster; -- output 3-band image
BEGIN
select georaster into gr1 from georaster_table where georid = 1;
select georaster into gr2 from georaster_table where georid = 2 for update;
-- Assume the min and max cell values are (17, 163), (14, 150), and (10, 148) for the bands.
sdo_geor_ra.rasterMathOp(gr1,
SDO_STRING2_ARRAY(
'255/(163-17)*({0}-17)',
'255/(150-14)*({1}-14)',
'255/(148-10)*({2}-10)'),
'celldepth=8BIT_U', gr2);
update georaster_table set georaster = gr2 where georid = 2;
commit;
END;
/

例5-11 動的に生成された最小および最大のセル値を使用したイメージのストレッチ

例5-11では、イメージの各バンドの統計的な最小および最大のピクセル値を動的に分析し、SDO_GEOR_RA.rasterMathOpプロシージャのarithmeticExprパラメータ値を生成して、次にイメージのすべてのバンドを(0, 255)の範囲に線形にストレッチします。

DECLARE
i integer;
bands  number;
gr1 sdo_georaster;
gr2 sdo_georaster;
stmt varchar2(5024);
mmax number;
mmin number;
str varchar2(664);
win SDO_NUMBER_ARRAY;
BEGIN
select georaster into gr1 from georaster_table where georid = 1;
select georaster into gr2 from georaster_table where georid = 2 for update;
i:=0;
bands:=SDO_GEOR.getBandDimSize(gr1);
stmt:='';
LOOP
str:=to_char(i);
mmax:=sdo_geor.generateStatisticsMax(gr1,0,'samplingFactor=1',win,str);
mmin:=sdo_geor.generateStatisticsMin(gr1,0,'samplingFactor=1',win,str);
stmt:=stmt ||
'''255/((' ||trim(to_char(mmax,'990.999'))|| ')-(' ||trim(to_char(mmin,'990.999'))|| '))*({' ||trim(to_char( i,'999' ))|| '} -('  ||trim(to_char(mmin,'990.999'))|| '))''';
IF(i<(bands-1))
THEN
stmt:=stmt||',';
END if;
i := i + 1;
IF i >=bands
THEN   EXIT;
END IF;
END LOOP;
stmt := 'call sdo_geor_ra.rasterMathOp(:1,SDO_STRING2_ARRAY('||stmt||'),'||
'''celldepth=8BIT_U'',:2)';
execute immediate stmt using gr1,in out gr2;
dbms_output.put_line(stmt);
update georaster_table set georaster = gr2 where georid = 2;
commit;
END;
/

例5-10および例5-11は、最小/最大ストレッチと呼ばれます。カラー・イメージでは、正規化ストレッチと呼ばれる別の線形ストレッチ・アルゴリズムによって、コントラストがより拡張されます。正規化ストレッチは、指定された中央値や標準偏差値を使用しますが、それ以外の場合もこれらの例と同じような方法で実行されます。

これらの例と同じアプローチを使用して、上限または下限のセル深度(32ビット整数のDEMや64ビット浮動小数点数の温度レイヤーなど)でラスターを(0, 255)の範囲にストレッチし、そのようなラスターを適切に表示できます。

5.7 イメージのセグメント化

セグメント化は、単純なタイプの分類アルゴリズムで、一定のタイプのイメージをより大きい地表特徴カテゴリ(陸地、雲、水、雪など)に分類する場合に役立ちます。

SDO_GEOR_RA.classifyプロシージャを使用して、イメージにしきい値処理を適用できます。しきい値処理は、単一のセル値をしきい値として使用して、イメージを2つのカテゴリに分類する最も簡単なセグメント化です。結果のイメージは、2つの値のみを含み、同じプロセスで直接バイナリ・ビットマップ・マスクにキャストできます。

最初に複数のバンドに算術操作を適用し、次にその結果を複数のカテゴリに分類することで、SDO_GEOR_RA.classifyプロシージャを使用してより多くのイメージのセグメント化操作を適用することも可能です。

SDO_GEOR_RA.classifyプロシージャの使用例は、「分類操作」を参照してください。

5.8 イメージのピラミッド化: パラレル生成および部分更新

イメージのピラミッド化は、大規模なイメージ・データベースの構築に最もよく使用されるプロセスの1つです。この項では、ピラミッドのパラレル生成、ピラミッドの部分更新、バッチおよび同時処理などのいくつかの関連技術について説明します。

ピラミッドをより効率的に操作するため、ピラミッドをパラレルに生成することや、ピラミッドの部分更新を実行することができます。(この項では、読者が「ピラミッド」に説明されている概念を理解していると仮定します。)

例5-12 ピラミッドのパラレル生成

ピラミッドの生成を高速化するため、SDO_GEOR.generatePyramidプロシージャでparallelParamパラメータを指定できます。例5-12で、並列度は4に設定されます。(ピラミッド生成のパフォーマンスが実際にどれぐらい向上するかは、Oracle Databaseで使用可能なCPUの数に応じて変化します。)

DECLARE
gr sdo_georaster;
BEGIN

SELECT georaster INTO gr
FROM georaster_table WHERE georid = 6 FOR UPDATE;

-- Generate pyramids.
sdo_geor.generatePyramid(gr, 'rLevel=5, resampling=NN', null, 'parallel=4');

-- Update the original GeoRaster object.
UPDATE georaster_table SET georaster = gr WHERE georid = 6;

COMMIT;
END;
/

ピラミッド生成のパラレル処理を有効化するには、SDO_GEOR.generatePyramidによって、暗黙的コミット操作を実行します。コール中にエラーが発生すると、GeoRasterオブジェクトは無効な状態になる可能性があります。それが発生した場合、SDO_GEOR.deletePyramidを使用して、GeoRasterオブジェクトで新しく生成された上位のピラミッド・レベルを削除します。

例5-13 ピラミッドの部分更新

SDO_GEOR.updateRasterプロシージャを使用して、ピラミッドを部分的に更新できます。例5-13では、指定した領域のターゲットGeoRasterオブジェクト(targetAreaがareaとして指定される)が、別のGeoRasterオブジェクトによって更新されます。updateUpperPyramidsパラメータはtrueに設定されるため、ターゲットGeoRasterオブジェクトの上位のピラミッドは、指定した領域で部分的にのみ更新されます。つまり、上位のピラミッド・レベルは完全には再生成されませんが、そのtargetAreaのセルのみが再生成されるため、パフォーマンスが向上します。

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
area sdo_number_array := sdo_number_array(-200,-50,201,162);
BEGIN
SELECT georaster INTO gr2 FROM georaster_table WHERE georid=0 FOR UPDATE;
SELECT georaster INTO gr1 FROM georaster_table WHERE georid=1;
SDO_GEOR.updateRaster(gr2, 0, null, area, gr1, 0, null, 'true');
UPDATE GEORASTER_TABLE SET georaster=gr2 WHERE georid=0;
COMMIT;
END;
/

ピラミッド化プロセスを高速化および自動化する他の技術にはバッチ処理が含まれ、同時処理を使用できます。特定の領域の多くのイメージを一括してピラミッド化するには、「GeoRasterオブジェクトの問合せと検索」の例を参照してください。多くのバッチを同時に処理するため、異なるデータベース・セッションを開始できます。

5.9 ビットマップのピラミッド化

ほとんどのラスター・データ型で、イメージのピラミッド化(「イメージのピラミッド化: パラレル生成および部分更新」を参照)によって、高品質のピラミッドが生成されます。ただし、通常は1ビットのセル深度で格納される点、行または多角形のビットマップ・ラスターの場合、同じピラミッド化アプローチでは、高品質なピラミッドが作成されない可能性があります。これらのピラミッドでは、ゆがんだ点のパターンや破線がよく見られます。

この問題を解決するには、GeoRasterラスター代数を使用してビットマップのピラミッド化を実行します。このアプローチでは、ビットマップ・ラスター(道路ラスター地図やユーティリティ・ネットワーク・ラスター地図など)での特に破線または線の欠落といったゆがんだパターンを避けることで、ピラミッドの品質が大幅に向上されます。これには、元のラスターおよび完全なピラミッドが(8ビットのかわりに)1ビットのセル深度に戻されて格納されるため、データが展開されたり、ディスク領域が無駄に使用されることはありません。

例5-14に、ビットマップ・ラスターの高品質なピラミッドを生成する方法を示します。例のコメントでは、主要な論理ステップを説明しています。

例5-14 ビットマップのピラミッド化

DECLARE
geor1  SDO_GEORASTER; -- source bitmap raster
geor2  SDO_GEORASTER; -- temporary raster
geor3  SDO_GEORASTER; -- resultant bitmap raster with fully pyramids generated
BEGIN
-- The original 1bit raster with lines/roads value 0 and background value 1
select georaster into geor1
from georaster_table where georid = 22;

-- Step 1: Cast to 8bit raster while mapping 0 (roads) to 255 and 1 (bkgrd) to 0
delete from georaster_table where georid = 21;
insert into georaster_table values (21, null, sdo_geor.init('RDT_1',21));
select georaster into geor2
from georaster_table where georid = 21 for update;
sdo_geor_ra.classify(
geor1,
'{0}',
SDO_NUMBER_ARRAY(1),
SDO_NUMBER_ARRAY(255, 0),
'celldepth = 8BIT_U',
geor2);

-- Step 2: Generate pyramids on the 8bit raster.
sdo_geor.generatePyramid(geor2, 'rLevel=15, resampling=bilinear');

-- Step 3, Map value to either 0 or 1.
-- Depending on the source raster, adjust value 253 to a different number to improve qualtiy.
sdo_geor_ra.rasterUpdate(
geor2,
null,-- update the raster's full pyramid as well
SDO_STRING2_ARRAY('{0}<253','{0}>=253'),
SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('0'),SDO_STRING2_ARRAY('1')));

-- Step 4, Cast back to 1bit raster with full pyramids.
delete from georaster_table where georid = 20;
insert into georaster_table values (20, null, sdo_geor.init('RDT_1',20));
select georaster into geor3
from georaster_table where georid = 20 for update;
sdo_geor.changeFormatCopy(geor2, 'celldepth=1BIT pyramid=true', geor3);

-- Step 5, Optionally add a good colormap for the 1bit raster to display roads as white.
sdo_geor.setColorMap(geor3, 1,
sdo_geor_colormap(sdo_number_array(0, 1),
sdo_number_array(0, 255),
sdo_number_array(0, 255),
sdo_number_array(0, 255),
sdo_number_array(255, 255)));

-- Commit the resultant raster, which can be used to overwrite the original raster after quality checking.
UPDATE georaster_table SET georaster = geor3 WHERE georid=20;
COMMIT;
END;
/

5.10 植生指標計算

リモート・センシングで、正規化植生指標(NDVI)は、広く使用されている植生指標であり、植生領域を迅速に識別して植物の成長と状態を監視できます。ランドサットTMイメージを使用した標準のNDVI計算式は(TM4 - TM3) / (TM4 + TM3)です。

例5-15 植生指標計算

例5-15では、ランドサット7 ETM+イメージを使用して、浮動小数点数データ型の別のラスターとして格納されるNDVIを計算します。GeoRaster代数言語で、バンド番号は0から始まるため、計算式は({3}-{2})/({3}+{2})という式に変換されることに注意してください。

DECLARE
geor1    SDO_GEORASTER;
geor2    SDO_GEORASTER;
EBGIN
-- Source ETM+ image
select georaster into geor1 from georaster_table where georid = 2;
-- Store NDVI
select georaster into geor2 from georaster_table where georid = 3 for update;
sdo_geor_ra.rasterMathOp(geor1,
SDO_STRING_ARRAY('({3}-{2})/({3}+{2})'),
'celldepth=32bit_real',geor2);
update georaster_table set georaster = geor2 where georid = 3;
commit;
end;
/

NDVIに加え、リモート・センシングの領域には他の多くの植生指標があります。それらの多くは、GeoRasterラスター代数を使用して同様に計算できます。

5.11 タッセルド・キャップ変換

タッセルド・キャップ変換(TCT)は、リモート・センシングされたイメージを使用して物理的な地表特徴を分析する場合に役立つツールです。これは、様々なランドサット・イメージに基づいて、元のデジタル番号(DN)または反射率データの5つのバンドを使用して、6つの新しいバンドを生成します(そのそれぞれが異なる地表特徴を表します)。結果の6つのバンドは、一般的に、(土壌の)明るさ、(植生の)緑度、(土壌およびキャノピーの)湿度、煙霧、TC5およびTC6です。これらの各要素または組合せは、作物生育の監視と分析、バイオマス研究、農業計画などの異なるアプリケーションに役立ちます。

例5-16 タッセルド・キャップ変換

例5-16では、ランドサット5 TMイメージのDNデータを入力として取得し、GeoRasterラスター代数を使用してTCTを実行して、結果を含む新しいイメージを作成します。

declare
gr1 sdo_georaster;
gr2 sdo_georaster;
ret varchar2(32);
begin
select georaster into gr1 from georaster_table where georid = 2;
select georaster into gr2 from georaster_table where georid = 4 for update;
sdo_geor_ra.rasterMathOp(
gr1,
SDO_STRING2_ARRAY(
'0.3561*{0}+0.3972*{1}+0.3904*{2}+0.6966*{3}+0.2286*{4}+0.1596*{6}',
'(-0.3344)*{0}-0.3544*{1}-0.4556*{2}+0.6966*{3}-0.0242*{4}-0.2630*{6}',
'0.2626*{0}+0.2141*{1}+0.0926*{2}+0.0656*{3}-0.7629*{4}-0.5388*{6}',
'0.0805*{0}-0.0498*{1}+0.1950*{2}-0.1327*{3}+0.5752*{4}-0.7775*{6}',
'(-0.7252)*{0}-0.0202*{1}+0.6683*{2}+0.0631*{3}-0.1494*{4}-0.0274*{6}',
'0.4000*{0}-0.8172*{1}+0.3832*{2}+0.0602*{3}-0.1095*{4}+0.0985*{6}' ),
'celldepth=32BIT_REAL',
gr2);
update georaster_table set georaster = gr2 where georid = 4;
commit;
end;
/

また、同じラスター代数言語を使用して、例5-16にコードを追加し、32ビットの浮動小数点数イメージを8ビットの整数イメージに変換し、結果のTCTイメージにイメージのストレッチ(「イメージのストレッチ」を参照)を適用して視覚化および分析のために新しいGeoRasterオブジェクトを生成できます。

ラスター代数アルゴリズムおよび埋込みパラレル処理の最適化された実装を使用する以外に、さらにOracleのグリッド・コンピューティング・インフラストラクチャを利用して、迅速にNDVIを計算したり、GeoRasterデータベースに格納されている数千のイメージに対してTCTを適用できます。

5.12 イメージのマスキング

イメージ・マスキングを実行するには、アプリケーションを使用してGeoRasterデータベースでビットマップ・マスクを問い合せ、目的となる1つ以上のビットマップ・マスクを取得して、オブジェクトの表示や他の処理を実行する目的でターゲットGeoRasterオブジェクトにマスキング操作を適用します。ビットマップ・マスク(「ビットマップ・マスク」を参照)は、独立したGeoRasterオブジェクトとして格納できます(また、GeoRasterオブジェクト内のメタデータとして格納し、1つのバンドまたはGeoRasterオブジェクト全体に関連付けることもできます)。

SDO_GEOR.maskプロシージャを使用して、データベース内でマスキング操作を実行し、新しいGeoRasterオブジェクトを生成することも可能です。

5.13 バンドのマージ

イメージ分類、時系列分析およびラスターGISモデリングでは、状況により、異なるGeoRasterオブジェクトの複数のバンドまたはレイヤーをマージして1つのGeoRasterオブジェクトにする必要があります。この操作は、GeoRasterでバンドまたはレイヤーのマージと呼ばれ、SDO_GEOR.mergeLayersプロシージャを使用して実行できます。ソースGeoRasterオブジェクトの指定したバンドをターゲットGeoRasterオブジェクトに追加するか、2つのGeoRasterオブジェクトの異なるバンドを1つの新しいGeoRasterオブジェクトにマージできます。このマージや追加を反復実行することで、無制限の数のバンドを1つのGeoRasterオブジェクトにマージできます。

例5-17では、8つのGeoRasterオブジェクトがあり、そのそれぞれにGeoTIFF形式の単一バンド・ランドサットETM+イメージ・ファイルからロードされたただ1つのバンドが含まれると仮定します。各GeoRasterオブジェクトのバンドの数は、そのGeoRasterオブジェクトのGEORID列の値と同じです。例では、すべてのバンドを1つのGeoRasterオブジェクトにマージして、完全なETM+シーンを作成します。

例5-17 バンドのマージ

DECLARE
gr1 sdo_georaster;
BEGIN
select georaster into gr1 from georaster_table where georid = 1 for update;
for rec in (select georaster from georaster_table
where georid >= 2 and georid <= 8
order by georid)
loop
sdo_geor.mergelayers(gr1, rec.georaster);
end loop;
update georaster_table set georaster = gr1 where georid = 1;
commit;
END;
/

5.14 イメージの追加

2つのイメージに同じ数のバンドが含まれる場合、一方のイメージをもう一方のイメージに追加できます。イメージの追加は、地理空間イメージを定期的に収集し、取得したイメージを後で既存のイメージに追加して空間領域全体の大規模イメージを作成する必要がある場合に役立ちます。イメージの追加は、新しいイメージで既存のイメージを更新する場合にも役立ちます。

SDO_GEOR_AGGR.appendプロシージャは、既存のGeoRasterオブジェクトを別のGeoRasterオブジェクトで部分的に更新することで、イメージの追加を実行します。既存のGeoRasterオブジェクトにピラミッドが含まれる場合、ブロックのあるピラミッドは、新しいデータで部分的に更新されます。

例5-18では、あるイメージを別のイメージに追加します(ブロックのあるピラミッドが同時に更新されます)。appendParamパラメータで'nodata=true'を指定しているため、重複する領域のNODATA値は透過的であるとみなされます。

例5-18 あるイメージの別のイメージへの追加

DECLARE
gr1 sdo_georaster;
gr1 sdo_georaster;
BEGIN
select georaster into gr1 from georaster_table where georid = 1 for update;
select georaster into gr2 from georaster_table where georid = 2;
sdo_geor_aggr.append(gr1, gr2, 0, 'nodata=true');
update georaster_table set georaster = gr1 where georid= 1;
commit;
END;
/

5.15 大規模イメージのモザイク処理

大規模な地理空間領域は、通常、多くの小さい航空写真または衛星イメージで構成されます。大規模イメージのモザイク処理では、それらの小さい地理空間イメージを貼り合せて1つの大きいイメージにし、空間領域全体のわかりやすいビューを取得します。GeoRasterには、切れ目、重複、欠落したソースGeoRasterオブジェクトに対応できる大規模モザイク処理ファンクションがあります。これによって、幾何補正されたイメージと幾何補正されないイメージの両方がサポートされます。これは、内部的再投影と幾何補正、共通ポイント・ルール、および簡易カラー・バランスに対応します。特定のピラミッド・レベルでモザイク処理することも可能です。このモザイク処理プロセスでは、仮想モザイクに対して物理モザイクとも呼ばれる1つのGeoRasterオブジェクトが生成されます(仮想モザイクの詳細は、「仮想モザイク」を参照してください)。

SDO_GEOR.mosaicプロシージャおよびSDO_GEOR_AGGR.mosaicSubsetプロシージャはイメージのモザイク処理をサポートしますが、SDO_GEOR_AGGR.mosaicSubsetの方がより多くの高度な機能とオプションを備えており、パラレル処理も実装されているため、このプロシージャの使用を強くお薦めします。SDO_GEOR_AGGR.mosaicSubsetは、ソース・イメージとして仮想モザイク(GeoRaster表のリスト、GeoRaster列のあるデータベース・ビュー、REF CURSORなど)を使用できます。

SDO_GEOR.mosaicプロシージャは、幾何補正され、同じSRIDに基づいて地理空間的に配置され、同じ解像度を持つソースGeoRasterイメージのセットをモザイク処理します。モザイクの結果は、別のGeoRasterオブジェクトです。ソース・イメージ間に重複がある場合、モザイクの結果は、重複する領域にある最後のソース・イメージの内容を含みます。このプロシージャは、事前処理されて完全に配置されたソース・イメージに対して適切に動作します。

この項の例では、ソース・イメージは、次の列を使用して定義されたソースGeoRaster表のGRTAB、GRTAB1およびGRTAB2に格納されます。

(id          NUMBER PRIMARY KEY,
cloud_cover  NUMBER     -- percentage of cloud coverage
last_update  TIMESTAMP  -- GeoRaster object's last update time
grobj        SDO_GEORASTER )

これらの表で、GeoRasterオブジェクトのspatialExtent属性に対してOracle Spatial and Graphの空間索引が作成されています。

次の例で、モザイク処理されたイメージは、「記憶域パラメータ」で定義されているGEORASTER_TABLEに格納されます。

例5-19 SDO_GEOR.mosaic (表および列名)

例5-19に、SDO_GEOR.mosaicプロシージャを示します。

DECLARE
gr sdo_georaster;
BEGIN
INSERT INTO georaster_table (georid, georaster)
VALUES (12, sdo_geor.init('rdt_1'))
RETURNING georaster INTO gr;
sdo_geor.mosaic('grtab', 'grobj', gr, 'blocksize=(512,512,1)');
UPDATE georaster_table SET georaster=gr WHERE id=12;
END;
/

ただし、実際のソース・イメージは、通常、異なる解像度や大規模な重複領域を持つ異なる環境下で、または異なる地理参照システムを使用して収集されます。この場合、SDO_GEOR_AGGR.mosaicSubsetプロシージャを使用して、これらのソース・イメージを1つの均一なモザイク・イメージにモザイク処理できます。SDO_GEOR.mosaicと比較して、SDO_GEOR_AGGR.mosaicSubsetプロシージャではより多くの機能とオプションが提供されます。

- ソース・イメージは、同じ座標系(SRID)にある必要はなく、同じ地理参照情報または解像度を持ちます。

- ソース・イメージは、ユーザーが指定したピラミッド・レベルでモザイク処理されます。

- ソース・イメージは、ユーザーが指定したバンドでモザイク処理されます。

- 出力イメージは、入力イメージとは異なる座標系および解像度を持つことができます(outSRIDおよびoutResolutionsパラメータ)。

- mosaicParamパラメータを通じて重複する領域の出力を詳細に制御できます(commonPointRuleでは重複する領域での出力のために使用するセル値を指定でき、NODATAでは重複する領域でのNODATA値を考慮するかどうかを指定できます)。

- 出力モザイク・イメージを指定した点に配置できます(参照点)。ソース・イメージは、mosaicParamに指定されたresampleTolerance値より多くずれている場合、参照点に揃えるためにリサンプリングできます。

- fillGapがmosaicParamでtrueである場合、ソース・イメージ間に2ピクセル未満の小さい切れ目があっても、周囲のピクセル値を使用して埋めることができます。

- 制限付きのカラー・バランス(線形ストレッチおよび正規化)がサポートされます。

- モザイク処理プロセスを高速化するためにパラレル処理がサポートされます。

例5-20 SDO_GEOR_AGGR.mosaicSubset

例5-20では、SDO_GEOR_AGGR.mosaicSubsetを使用して、2つのGeoRaster表(GRTAB1およびGRTAB2)のすべてのソース・イメージを、XおよびY次元で30mの解像度を持つSRID 4326の大規模なモザイク・イメージにモザイク処理します。

DECLARE
resolutions sdo_number_array;
gr sdo_georaster;
BEGIN
insert into georaster_table (georid, georaster)
values (10, sdo_geor.init('RDT_1',10))
returning georaster into gr;

resolutions := sdo_number_array(30, 30);
sdo_geor_aggr.mosaicSubset('grtab1, grtab2', 'grobj, grobj',
0, 4326, null, null, null,
null, null, null, resolutions, 'unit=meter',
'commonPointRule = end, nodata=true, resampleTolerance=0.2, resampling=bilinear, fillGap=true',
'blocksize=(512, 512, 3)', gr, null, 'parallel=4');

update georaster_table set georaster = gr where georid=10;
commit;
END;
/

次に、例5-20について説明します。

- 幾何補正されていないソース・イメージは幾何補正され、SRID 4326ではないソース・イメージはSRID 4326に再投影されます。

- 30m以外の解像度を持つソース・イメージは、30mの解像度にスケール変更されます。

- mosaicParamパラメータのnodataキーワードはtrueに指定されているため、重複する領域のNODATA値は考慮されません。

- mosaicParamパラメータのresampleToleranceキーワードは0.2に指定されているため、ソース・イメージがターゲットから0.2ピクセルより多くオフセットされる場合、ソース・イメージはリサンプリングされます。

- リサンプリング・メソッドは、mosaicParamパラメータでbilinearに指定されています。

- 並列度は、parallelParamパラメータで4に指定されています。

SDO_GEOR_AGGR.getMosaicSubsetをコールする前にSDO_GEOR_AGGR.validateForMosaicSubsetをコールして、ソース・イメージがモザイク処理可能であることを確認できます。

5.15.1 パラレル圧縮、コピー、サブセット化、再投影および幾何補正

SDO_GEOR_AGGR.mosaicSubsetプロシージャは、単一のGeoRasterオブジェクトを入力として受け取ることができます。このプロシージャを使用すると、様々なタイプのパラレル操作、たとえばパラレル圧縮と解凍、パラレル・コピーまたは形式変更コピー、パラレル・サブセット化、パラレル再投影、パラレル幾何補正を実行できます。この項では、このような操作の例を示します。これらのどのケースでも、SDO_GEOR_AGGR.mosaicSubsetプロシージャは単一のGeoRasterオブジェクトに作用します。

パラレル化操作をわかりやすく説明するために、この項の例ではほとんどのパラメータにnull値を使用しています。実際のアプリケーションでは、SDO_GEOR_AGGR.mosaicSubsetプロシージャのその他のパラメータすべてを適用できますが、mosaicParamパラメータは、入力が単一GeoRasterオブジェクトのときは効果を持ちません。

例5-21 パラレル圧縮

例5-21に、SDO_GEOR_AGGR.mosaicSubsetプロシージャを使用するパラレル圧縮を示します。これは、DEFLATEとJPEGの両方の圧縮および解凍に適用されます。

DECLARE
gr sdo_georaster;
cur sys_refcursor;
crop_area sdo_geometry := null;
BEGIN
-- create a new georaster object with georid = 2
-- to hold the compressed image
delete from georaster_table where georid = 2;
insert into georaster_table(georid, georaster) values (2,
sdo_geor.init('RDT2', 2)) returning georaster into gr;

-- compress the image with georid = 1 into JPEG using parallel degree of 8
open cur for 'select georaster from georaster_table where georid = 1';
sdo_geor_aggr.mosaicSubset(cur, 0, null, null, null, crop_area,
null, null, null, null, null, null,
'compression=JPEG-F', gr, null, 'parallel=8');

update georaster_table set georaster = gr where georid = 2;
commit;
END;
/

例5-22 パラレル・コピー

例5-22に、SDO_GEOR_AGGR.mosaicSubsetプロシージャを使用するパラレル・コピーを示します。

DECLARE
gr sdo_georaster;
cur sys_refcursor;
crop_area sdo_geometry := null;
BEGIN
-- create a new georaster object with georid = 2 to hold the copy
delete from georaster_table where georid = 2;
insert into georaster_table(georid, georaster) values (2,
sdo_geor.init('RDT2', 2)) returning georaster into gr;

-- make a copy of the image with georid = 1 using parallel degree of 8
open cur for 'select georaster from georaster_table where georid = 1';
sdo_geor_aggr.mosaicSubset(cur, 0, null, null, null, crop_area,
null, null, null, null, null, null,
'pyramid=true', gr, null, 'parallel=8');
update georaster_table set georaster = gr where georid = 2;
commit;
END;
/

例5-22では、storageParamパラメータを調整すると、パラレル化したSDO_GEOR.changeFormatCopy操作として機能するようになります。crop_areaを適用した場合は(デフォルト値nullを使用するかわりに)、パラレル化したSDO_GEOR.subset操作として機能し、ポリゴンのクリップを実行できます。

例5-23 パラレル幾何補正または再投影

例5-23に、SDO_GEOR_AGGR.mosaicSubsetプロシージャを使用するパラレル幾何補正または再投影を示します。幾何補正と再投影にこの方法を使用する場合は、出力の解像度は指定したソース・ピラミッド・レベルの解像度の0.75倍以上1.5倍以下とする必要があります。

DECLARE
gr sdo_georaster;
cur sys_refcursor;
crop_area sdo_geometry := null;
out_res sdo_number_array := sdo_number_array(30, 30);
BEGIN
-- create a new georaster object with georid = 2 to hold the result
delete from georaster_table where georid = 2;
insert into georaster_table(georid, georaster) values (2,
sdo_geor.init('RDT2', 2)) returning georaster into gr;

-- rectify the image with georid = 1 into SRID 32611 and
-- resolution 30 by 30 using parallel degree of 4
open cur for 'select georaster from georaster_table where georid = 1';
sdo_geor_aggr.mosaicSubset(cur, 0, 32611, null, null, crop_area,
null, null, null, out_res, null,
'resampling=bilinear', null, gr, null,
'parallel=4');
update georaster_table set georaster = gr where georid = 2;
commit;
END;
/

5.16 仮想モザイク

一部のアプリケーションでは、イメージのコレクションをモザイク処理して1つの物理モザイクにする必要はないか、推奨されません。たとえば、モザイクを個別に格納する十分なディスク領域がない場合や、単にディスク領域を節約する場合です。別の例としては、同じデータ・セットの同一の2つのコピーを維持せずに、元のデータ・セット(DEMデータ・セットなど)を現状のまま格納するが、このデータ・セットに対してシームレスに問合せを実行する場合があげられます。また別の例としては、ソース・イメージをモザイク処理するときに、同じ領域に異なる処理ルールとモザイク処理ルールを適用する場合があげられます(物理モザイクにはこのような柔軟性はありません)。

このような場合、GeoRasterイメージのセットを1つの大きいGeoRasterイメージにモザイク処理してそれをGeoRaster表に格納するかわりに、仮想モザイクを作成できます。仮想モザイクでは、GeoRasterイメージのセットは、GeoRaster表には格納されず、1つの大規模な仮想化されたモザイク・イメージとして扱われます。

GeoRasterでは、仮想モザイクは、1つのGeoRasterオブジェクトの場合と同様に扱われる1つ以上のGeoRaster表またはビューに基づく、幾何補正の有無を問わない地理参照されたGeoRasterオブジェクトの大規模コレクションとして定義されます。仮想モザイクのピラミッドはサポートされます。仮想モザイクには、無制限の数のイメージを含むことが可能で、GeoRasterデータベース全体を仮想モザイクとして扱うことができます。対象領域(サブセット化またはクロッピング)に基づいて仮想モザイクを問い合せる1つのコールを発行し、クロッピングされたイメージが異なる解像度を持つ異なる座標系に配置されるようにリクエストできます。問合せプロセス中に、ユーザー・リクエストに基づいて、共通ポイント・ルールを使用したリサンプリングおよびモザイク処理のオンザフライ変換が内部的および自動的に実行されます。

仮想モザイクを定義する方法は次のとおりです。

- GeoRaster表またはGeoRaster表のリストとして(「GeoRaster表のいずれか1つまたはリストとしての仮想モザイク」を参照)

- GeoRaster列を含むデータベース・ビューとして(「GeoRaster列を含むビューとしての仮想モザイク」を参照)

- GeoRasterオブジェクトのコレクションが生成されるSQL問合せ文(カーソル) (「SQL問合せ文またはカーソルとしての仮想モザイク」を参照)

仮想モザイクの定義方法にかかわらず、GeoRaster表のGeoRasterオブジェクトには生成または設定されたspatialExtent属性が含まれる必要があり、そうでない場合、SDO_GEOR_AGGR.getMosaicSubsetおよびSDO_GEOR_AGGR.mosaicSubsetプロシージャによって空のLOBロケータまたは空のGeoRasterオブジェクトが戻されます。一般的な使用方法で最高の問合せパフォーマンスを実現するため、あらかじめ常にspatialExtent属性に対して空間索引を作成する必要があります。

仮想モザイクを定義した後、次のプロシージャを使用してそれを問い合せるか、処理できます。

- SDO_GEOR_AGGR.getMosaicSubsetは、仮想モザイクに対してオンザフライ問合せを実行します。
仮想化されたモザイク・イメージの任意の部分の空間問合せで、SDO_GEOR_AGGR.getMosaicSubsetプロシージャは、問合せ対象領域に対して動的にモザイク操作を実行し、物理的に格納されたモザイク・イメージをサブセット化する場合と同様に、必要な結果をBLOBでオンザフライで戻します。

- SDO_GEOR_AGGR.mosaicSubsetは、モザイク処理されたサブセットをGeoRasterオブジェクトとしてデータベースに格納します。
SDO_GEOR_AGGR.mosaicSubsetプロシージャは、問合せ対象領域に対してモザイク操作を実行し、必要な結果を別のGeoRasterオブジェクトに永続的に格納します。

仮想モザイクを使用する場合の典型的なワークフローは、「アプリケーションでの仮想モザイクの使用」および「大規模な仮想モザイクに関する特別な考慮事項」、およびその関連する項の「MIN_X_RES$およびMAX_X_RES$を使用した問合せパフォーマンスの向上」を参照してください。

5.16.1 GeoRaster表のいずれか1つまたはリストとしての仮想モザイク

仮想モザイクは、1つのGeoRaster表として、またはGeoRaster表のリストとして定義できます。アプリケーションでは、各表とそのGeoRaster列を指定します。このアプローチでは、それらのGeoRaster表に含まれる指定されたGeoRaster列のすべてのGeoRasterオブジェクトが、仮想モザイクの一部となります。

例5-24では、GeoRaster表のリスト(GRTAB1、GRTAB2およびGRTAB3で、これらは「大規模イメージのモザイク処理」のGRTABと同じ定義を持ちます)で仮想モザイク処理のためのソース・イメージを指定します。

例5-24 GeoRaster表のリストとしての仮想モザイク

DECLARE
lb blob;
cropArea sdo_geometry;
outArea  sdo_geometry := null;
outWin   sdo_number_array:=null;
resolutions sdo_number_array;
BEGIN
dbms_lob.createTemporary(lb, TRUE);

cropArea :=  sdo_geometry(2003, 32610, null,
sdo_elem_info_array(1, 1003, 3),
sdo_ordinate_array(399180, 4247820,
496140,4353900) );
resolutions := sdo_number_array(30, 30);
sdo_geor_aggr.getMosaicSubset('grtab1, grtab2, grtab3',
'grobj, grobj, grobj',
0, 32610, null, null, cropArea,
null, null, null, resolutions, null,
'commonPointRule = end, nodata=true',
lb, outArea, outWin);
dbms_lob.freeTemporary(lb);
if outWin is not null then
dbms_output.put_line('output window: (' || outWin(1) || ',' || outWin(2) ||', ' || outWin(3) || ', ' || outWin(4) || ')');
end if;
END;
/

5.16.2 GeoRaster列を含むビューとしての仮想モザイク

仮想モザイクは、GeoRaster列を含む1つのデータベース・ビューとして定義できます。アプリケーションでは、ビュー名とそのGeoRaster列を指定します。このアプローチでは、ビューに含まれる指定されたGeoRaster列のすべてのGeoRasterオブジェクトが、仮想モザイクの一部となります。このアプローチでは、空間索引や他の任意の関連索引を使用して、任意の数のGeoRaster表から複雑な方法で仮想モザイクのイメージを選択できます。

仮想モザイクは、GeoRasterビューとGeoRaster表を組み合せたリストとして定義することも可能です。

仮想モザイクをデータベース・ビューとして定義する場合、そのビューは問合せ時にgeorasterTableNamesパラメータで指定できます。例5-25では、ビューとして定義された仮想モザイクを問い合せます。この例では、問合せによって、イメージが作成時刻に基づいてソートされ、重複する領域での結果となるモザイクに対して最新のイメージが選択されることに注意してください。

例5-25 仮想モザイクのためのGeoRaster表に対するビューの使用

Create or replace view grview as select * from (
Select grobj, last_update from grtab1 where cloud_cover=0 union all
Select grobj, last_update from grtab2 where cloud_cover=0 union all
Select grobj, last_update from grtab3 ) order by last_update;

DECLARE
lb blob;
cropArea sdo_geometry;
outArea  sdo_geometry := null;
outWin   sdo_number_array:=null;
resolutions sdo_number_array;
BEGIN
dbms_lob.createTemporary(lb, TRUE);

cropArea :=  sdo_geometry(2003, 32610, null,
sdo_elem_info_array(1, 1003, 3),
sdo_ordinate_array(399180, 4247820,
496140,4353900) );
resolutions := sdo_number_array(30, 30);
sdo_geor_aggr.getMosaicSubset('grview', 'grobj',
0, 32610, null, null, cropArea,
null, null, null, resolutions, null,
'commonPointRule = end, nodata=true',
lb, outArea, outWin);
dbms_lob.freeTemporary(lb);
if outWin is not null then
dbms_output.put_line('output window: (' || outWin(1) || ',' || outWin(2) ||', ' || outWin(3) || ', ' || outWin(4) || ')');
end if;
END;
/

5.16.3 SQL問合せ文またはカーソルとしての仮想モザイク

ビューを作成するかわりに、データベースからGeoRasterオブジェクトのコレクションを選択するSQL文または実行時データベース・カーソルとして仮想モザイクを定義できます。アプリケーションでは、SQL文からカーソルを作成して、そのカーソルを仮想モザイクとして使用します。この定義では、カーソルのすべてのGeoRasterオブジェクトが仮想モザイクの一部となります。このアプローチでは、任意の数のGeoRaster表から複雑な方法で仮想モザイクのイメージを選択できます。ただし、空間索引は、このタイプの仮想モザイクに対する問合せで自動的に使用されません。空間索引を利用するには、SQL文に対する問合せウィンドウを直接使用して動的に空間問合せ条件を追加し、その問合せウィンドウのすべてのイメージをより迅速に特定できるようにします。

SDO_GEOR_AGGR.getMosaicSubsetおよびSDO_GEOR_AGGR.mosaicSubsetプロシージャは、仮想モザイクとしてGeoRasterオブジェクトのカーソルを取得します(例5-26を参照)。この例では、問合せによって、イメージが作成時刻に基づいてソートされ、重複する領域での結果となるモザイクに対して最新のイメージが選択されることに注意してください。表に多くのGeoRasterオブジェクトが存在する場合に最高のパフォーマンスを実現するため、カーソルの問合せでは、空間問合せウィンドウを使用して、前述の段落に記載されている無関係のGeoRasterオブジェクトを除外する必要があります。

例5-26 仮想モザイクのためのカーソルの使用

DECLARE
lb blob;
outArea  sdo_geometry := null;
outWin   sdo_number_array:=null;
resolutions sdo_number_array;
mosaic_stmt  varchar2(1000);
condition        varchar2(1000);
BEGIN
dbms_lob.createTemporary(lb, TRUE);

resolutions := sdo_number_array(30, 30);

-- Define the query window (cropArea)
cropArea := sdo_geometry(2003, 32610, null,
sdo_elem_info_array(1, 1003, 3),
sdo_ordinate_array(399180, 4247820, 496140,4353900) );

-- Define the virtual mosaic
mosaic_stmt := 'select grobj from (select grobj, last_update from grtab1 ' ||
'where cloud_cover=0  union all select grobj, last_update from grtab2 ' ||
'where cloud_cover=0) t ';

-- Apply filtering using the query window (cropArea) to speed up query performance
condition := 'where sdo_anyinteract(t.grobj.spatialExtent,:1) = ''true'' ' ||
' order by last_update';

-- Open the virtual mosaic for query
open cur for mosaic_stmt || condition using cropArea;

-- Query the virtual mosaic (make sure the cropArea used here is the same
-- as the one used at opening the cursor)
sdo_geor_aggr.getMosaicSubset(cur,
0, 32610, null, null, cropArea,
null, null, null, resolutions, null,
'commonPointRule=end, nodata=true',
lb, outArea, outWin);
dbms_lob.freeTemporary(lb);
close cur;
if outWin is not null then
dbms_output.put_line('output window: (' || outWin(1) || ',' || outWin(2) ||', ' || outWin(3) || ', ' || outWin(4) || ')');
end if;
END;
/

5.16.4 アプリケーションでの仮想モザイクの使用

仮想モザイクは、イメージ提供エンジンとして、他の様々なアプリケーション・シナリオで使用できます。仮想モザイクの定義は、文字列または他の形式として個別にアプリケーションによって格納できます。主な問合せプロシージャのSDO_GEOR_AGGR.getMosaicSubsetおよびSDO_GEOR_AGGR.mosaicSubset以外に、GeoRasterでは、SDO_GEOR_AGGRパッケージでアプリケーション開発に役立つ他のサブプログラムを提供しています。

- SDO_GEOR_AGGR.validateForMosaicSubset

- SDO_GEOR_AGGR.getMosaicExtent

- SDO_GEOR_AGGR.getMosaicResolutions

SDO_GEOR_AGGR.validateForMosaicSubset、SDO_GEOR_AGGR.getMosaicExtentおよびSDO_GEOR_AGGR.getMosaicResolutionsをアプリケーションでコールして、仮想モザイクが有効であり、空間問合せが仮想モザイク内に含まれることを確認できます。次の手順では、アプリケーションの仮想モザイクで使用可能なワークフローについて説明します。

1. 仮想モザイクを定義します。次に例を示します。

Create or replace view grview as select * from (
Select grobj, last_update from grtab1 where cloud_cover=0 union all
Select grobj, last_update from grtab2 where cloud_cover=0 union all
Select grobj, last_update from grtab3 ) order by last_update;

表GRTAB1、GRTAB2およびGRTAB3は、「大規模イメージのモザイク処理」のGRTABと同じ定義を使用して作成され、Oracle Spatial and Graphの空間索引がこれらの表のGeoRasterオブジェクトのspatialExtent属性に対して作成されています。

2. 仮想モザイクのデータ・セットを検証します。次に例を示します。

EXECUTE SDO_GEOR_AGGR.validateForMosaicSubset('grview', 'grobj', OUTSRID, OUTResolutions);

詳細な検証情報が必要な場合、検証エラー表を作成してコールに渡すことができます。詳細は、SDO_GEOR_AGGR.validateForMosaicSubsetのリファレンスの項を参照してください。

3. 仮想モザイクの空間エクステントを取得します。次に例を示します。

SELECT SDO_GEOR_AGGR.getMosaicExtent('grview', 'grobj', OUTSRID) from dual;

4. 既存のソース・イメージの解像度の範囲を取得します。次に例を示します。

SELECT SDO_GEOR_AGGR.getMosaicResolutions('grview', 'grobj', 'unit=meter') from dual;

解像度の範囲は、すべてのピラミッド・レベルを含むソース・イメージの最小および最大の解像度を反映しています。

5. 前述の2つの手順で取得された情報に基づいて、アプリケーション・リクエストに応じて空間問合せウィンドウのcropAreaおよびOUTResolutionsを渡し、仮想モザイクのサブセットを取得して、オプションで異なるリサンプリング・メソッド、異なる共通ポイント・ルール、空間NODATA処理およびカラー・バランスを適用します。次に例を示します。

SDO_GEOR_AGGR.getMosaicSubset('grview', 'grobj', null, OUTSRID, null, null,
cropArea, null, null, null, OUTResolutions, null,
'commonPointRule=end, nodata=true', lb, outArea, outWin);

OUTResolutionsはソース・イメージの解像度の範囲内に含まれる必要があることに注意してください。OUTResolutionsが、指定したピラミッド・レベルのソース・イメージの解像度と同じである場合、ピラミッド・データは出力モザイクで使用されますが、それ以外の場合、ソース・イメージはターゲットの解像度にスケール変更されます。

通常のアプリケーションは、この手順を繰り返し適用し、イメージ表示やイメージ配布などの目的で同じ仮想モザイクに対して異なる対象領域を問い合せます。

5.16.5 大規模な仮想モザイクに関する特別な考慮事項

仮想モザイクには、数個のイメージを含めることができますが、何万または何千万ものイメージを含めることも可能です。SDO_GEOR_AGGR.getMosaicSubsetとSDO_GEOR_AGGR.mosaicSubsetの両方で、cropAreaに接するかまたはその内部にあるすべてのイメージの仮想モザイクを(ネイティブ空間索引を使用して)自動的に検索し、それらのイメージおよびピラミッドの解像度を確認できます。cropAreaに接するかまたはその内部にあり、リクエストされた解像度に近い解像度を持つそれらのイメージまたは適切なピラミッド・レベルが、モザイク処理プロセスで使用されます。つまり、ソース・イメージとそのピラミッドの構成は、結果の品質と問合せパフォーマンス全体にとって非常に重要になります。

ガイドラインは、リクエストされた解像度のリクエストされたクロッピング領域に含まれる異なるソース・イメージまたはそのピラミッドから、小さいイメージをあまり多く取得しないようにすることです。

限られた数のみのイメージを含む小さい仮想モザイクでは、ソース・イメージごとに完全なピラミッドが生成され、ほとんどのアプリケーションで良好な問合せパフォーマンスが実現します。

多数のイメージ(数百を超えるイメージ)を含む大規模な領域では、アプリケーションによって、ソース・イメージごとに一定数のピラミッド・レベルのみを生成し、それらの最上位のピラミッドを新しいGeoRasterオブジェクトにモザイク処理して、それらのモザイクのピラミッドを生成できます。大規模なWeb視覚化プロジェクトの場合、ソース解像度のすべてのイメージと、より低い解像度レベルのすべてのイメージは、それらに対して構築されたピラミッドなしでGeoRasterオブジェクトとして格納される可能性があります。

これらの場合(多数のイメージや大規模Web視覚化)、各ソース・イメージが小さく、仮想モザイク内に多くの解像度レベルが存在すると、低い解像度レベルに対する問合せには、高い解像度レベルの多くの不要なイメージに対するメタデータ解像度の問合せが含まれるため、問合せが遅くなります。パフォーマンスを向上するには、アプリケーションで多くの仮想モザイクを定義し、そのそれぞれに特定の解像度または数個の解像度レベルのイメージのみをすべて含めます。次に、アプリケーションで、最初の手順としてリクエストされた解像度に基づいて1つ以上の適切な仮想モザイクを検出し、選択したそれらの仮想モザイクにのみ空間問合せを実行します。このアプローチによって、パフォーマンスが大幅に向上する可能性があります。

前述の考慮事項に加え、同じ領域に対して多くの異なる解像度レベルが含まれる問合せの詳細は、「MIN_X_RES$およびMAX_X_RES$を使用した問合せパフォーマンスの向上」を参照してください。

5.16.5.1 MIN_X_RES$およびMAX_X_RES$を使用した問合せパフォーマンスの向上

同じ領域に多くの異なる解像度レベルが含まれる場合に(複数の仮想モザイクを定義すること以外で)仮想モザイクの問合せを高速化するより一般的なソリューションは、GeoRaster表またはビューのMIN_X_RES$およびMAX_X_RES$列を使用することです。仮想モザイクのGeoRaster表でこれらの列(NUMBERデータ型)を定義して、ソースGeoRasterオブジェクトの最小および最大の空間解像度の値をそれぞれ指定する必要があります。これらの列を追加して適切な解像度データを移入したら、SDO_GEOR_AGGR.getMosaicSubsetプロシージャによって、これらの列に格納されている解像度の範囲を使用して(georasterTableNamesパラメータ付きの形式を使用している場合)、outResolutionsパラメータで指定されているリクエストされた解像度ではないソースGeoRasterオブジェクトを除外します。これによって、cropAreaの各GeoRasterオブジェクトのメタデータの解析が回避されるため、パフォーマンスが大幅に向上します。

このアプローチを使用するには、次の手順を実行します。

1. 列MIN_X_RES$およびMAX_X_RES$をGeoRaster表に追加します。次に例を示します。

ALTER TABLE georaster_table ADD (MIN_X_RES$ number, MAX_X_RES$ number);

2. MIN_X_RES$列に移入します。次に例を示します。

UPDATE georaster_table t
SET min_x_res$ = (select column_value from the
(select sdo_geor.generateSpatialResolutions(t.georaster, null,
t.georaster.spatialextent.sdo_srid) from dual)
WHERE rownum=1);

3. MAX_X_RES$列に移入します。次に例を示します。

UPDATE georaster_table t
max_x_res$ = min_x_res$ * power(2, sdo_geor.getPyramidMaxLevel(t.georaster));

仮想モザイクをビューとして定義する場合、ビューにも2つの列を含める必要があります。たとえば、例5-25のビュー定義を次のように変更する必要があります。

Create or replace view grview as select * from (
Select grobj, min_x_res$, max_x_res$, last_update from grtab1 where cloud_cover=0 union all
Select grobj, min_x_res$, max_x_res$, last_update from grtab2 where cloud_cover=0 union all
Select grobj, min_x_res$, max_x_res$, last_update from grtab3 )
order by last_update;

この項の説明に従って仮想モザイクを定義した後、アプリケーションでは、他のすべての仮想モザイクと同じ方法でそれを問い合せて使用できますが、多くの解像度レベルを含む大規模な仮想モザイクではパフォーマンスが向上します。詳細は、SDO_GEOR_AGGR.getMosaicSubsetおよびSDO_GEOR_AGGR.mosaicSubsetのリファレンスの項を参照してください。

5.17 イメージの提供

イメージおよびラスター・データのクライアントまたはアプリケーションへの提供は、GeoRaster PL/SQLおよびJava APIの多くの機能を通じてサポートされます。

直接イメージ提供には、ラスターの検索とそれに続くサブセット化またはクロッピング(SDO_GEOR.getRasterSubset)、イメージのクロッピング中の再投影および幾何補正のオンザフライでの適用(SDO_GEOR.reprojectおよびSDO_GEOR.rectify)、およびファイルへの直接エクスポート(SDO_GEOR.exportTo)が含まれます。

仮想モザイクは、特に大規模な物理モザイクの作成を希望しない場合に、様々なアプリケーションにイメージ・データベースを提供するために主として(効率的に)使用されます。仮想モザイクでは、ソース・イメージを事前処理したり、前もってモザイク処理する必要はありません。かわりに、すべてのイメージは現状のまま格納され、イメージ・データ・セット全体を1回のコール(SDO_GEOR_AGGR.getMosaicSubset)を使用して小さい対象領域に基づいてサーバーに提供できます。

通常、1つまたは一連の事前処理操作が複数のGeoRasterオブジェクトに適用され、結果のGeoRasterオブジェクトが作成されて、アプリケーションにラスター・データを直接提供するために、この項で説明されている機能が結果のGeoRasterオブジェクトに対して使用されます。つまり、GeoRasterイメージ操作とラスター代数機能の豊富なセット(「基本的なGeoRaster操作」、「ラスター代数および分析」およびこの章を参照)を、複雑なイメージ提供要件を満たすためにワークフローに統合できます。

6 SDO_GEORパッケージのリファレンス

SDO_GEORパッケージには、GeoRasterオブジェクトに関する情報の作成、変更および取得を行うサブプログラム(ファンクションおよびプロシージャ)が含まれています。この章では、そのサブプログラムのリファレンス情報を、例を使用して説明します。

この章では、サブプログラムをアルファベット順に記載しています。これらは、いくつかの論理カテゴリに分類できます(「GeoRaster PL/SQL API」を参照)。サブプログラムについては、「基本的なGeoRaster操作」も参照してください。

この章の複数の例では、GEORASTER_TABLEという名前の表を参照します。この表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

すべてのSDO_GEORサブプログラムは、現行の接続スキーマ以外のスキーマに定義されているGeoRasterオブジェクトに対して機能できます。

6.1 SDO_GEOR.addNODATA

構文

SDO_GEOR.addNODATA(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
nodata           IN NUMBER);

または

SDO_GEOR.addNODATA(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
nodata           IN SDO_RANGE_ARRAY);

説明

GeoRasterオブジェクト内の1つのレイヤーまたはすべてのレイヤーに含まれるNODATAセルを表すために、NODATA値またはその値の範囲を1つ以上追加します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

GeoRasterオブジェクト内のレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

nodata

単一の数値か、数字または数字の範囲の配列を1つ指定します。NODATA値の範囲には下限が含まれ、上限は含まれません。

SDO_RANGE_ARRAY型の詳細は、「NODATA値および値の範囲」を参照してください

使用上の注意

GeoRasterオブジェクトの一部のセルでは、有効な値が割り当てられていないか、または収集されていない場合があります。このようなNODATA値を含むセルは、NODATAセルと呼ばれ、それらのセルが有効に定義されていないことを意味します。NODATAセルとして識別されたセルの意味または重要度の定義は、アプリケーションが行います。NODATA値およびその値の範囲の詳細は、「NODATA値および値の範囲」を参照してください。

オブジェクト・レイヤーに関連付けられたNODATA値またはその値の範囲は、すべてのサブレイヤーに適用されます。レイヤー、オブジェクト・レイヤーおよびサブレイヤーの詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。

NODATA値は、有効なセル値の範囲内にあることが必要です。NODATA値の範囲の下限および上限は両方とも、セル深度で指定された有効なセル値である必要があります。NODATA値の範囲の上限は範囲に含まれないため、セルの有効最大値をNODATAとして指定する場合は、セルの有効最大値を単一数値のNODATA値として指定する必要があります。

このプロシージャは、NODATA値または値範囲をラスター・レイヤーに付加的に関連付けます。重複する値または値の範囲を削除して隣接する値または値の範囲を結合できる場合は、削除と結合が行われメタデータ内の表現が簡潔になります。ただし、単一の数値のNODATA値がNODATA値範囲の上限と等しい場合、単一の値は値範囲と結合されません(これは、新しい排他的な上限を常に計算可能とは限らないためです)。

1つ以上のNODATA値またはその値の範囲を削除するには、SDO_GEOR.deleteNODATAプロシージャを使用します。GeoRasterオブジェクトのNODATA値を戻すには、SDO_GEOR.getNODATAファンクションを使用します。

例

次の例では、セル値が5以上7未満または9のセルを、指定したGeoRasterオブジェクトのオブジェクト・レイヤー(およびすべてのサブレイヤー)のNODATAセルとみなすように指定します。

DECLARE
gr sdo_georaster;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=1 FOR UPDATE;
SDO_GEOR.addNODATA(gr, 0, sdo_range_array(sdo_range(5,7), sdo_range(9,null)));
UPDATE georaster_table SET georaster=gr WHERE georid=1;
COMMIT;
END;
/

6.2 SDO_GEOR.addSourceInfo

構文

SDO_GEOR.addSourceInfo(
georaster   IN OUT SDO_GEORASTER,
sourceInfo  IN VARCHAR2);

説明

GeoRasterオブジェクトのソース情報を追加します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

sourceInfo

ソース情報を文字列で指定します。最大4096文字です。

使用上の注意

指定したsourceInfo文字列は、GeoRasterオブジェクトのメタデータの<sourceInfo>要素に追加されます(「GeoRasterメタデータのXMLスキーマ」を参照)。このプロシージャを必要な回数コールして、<sourceInfo>要素に複数の文字列値を指定したり、既存の任意の値に文字列値を追加することができます。

既存のソース情報の値を置き換える場合は、SDO_GEOR.setSourceInfoプロシージャを使用します。

例

次の例では、指定したGeoRasterオブジェクトに複数のソース情報を設定および追加し、その後でソース情報を取得します。

declare
gr sdo_georaster;
begin
select georaster into gr from georaster_table where georid=1 for update;
sdo_geor.setSourceInfo(gr, 'Copyright (c) 2002, 2007, Oracle Corporation.');
sdo_geor.addSourceInfo(gr, 'All rights reserved.');
update georaster_table set georaster=gr where georid=1;
end;
/

select * from table(select sdo_geor.getSourceInfo(georaster) from georaster_table where id=1);

COLUMN_VALUE
--------------------------------------------------------------------------------
Copyright (c) 2002, 2007, Oracle Corporation.
All rights reserved.

6.3 SDO_GEOR.calcCompressionRatio

構文

SDO_GEOR.calcCompressionRatio(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

指定されたGeoRasterオブジェクトの圧縮率を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

圧縮率は、圧縮されていないGeoRasterオブジェクト内の(ピラミッドを含めた)すべてのラスター・ブロックの合計サイズを、このオブジェクトの圧縮形式の合計サイズで除算したものです。入力されたGeoRasterオブジェクトが圧縮されていない場合は、圧縮率は1 (つまり1:1)になります。

ある(元の)GeoRasterオブジェクトに対して、圧縮率が大きくなると、圧縮されたGeoRasterオブジェクトは小さくなります。たとえば、圧縮率が20 (つまり20:1)の場合、データは元のサイズの5%に圧縮されています。

GeoRasterの圧縮の詳細は、「圧縮と解凍」を参照してください。

例

次の例では、GEORASTER_TABLE表のGEORASTER列内のGeoRasterオブジェクトについて圧縮タイプと圧縮率を戻します。ここでGEORID列の値は1とします。

SELECT sdo_geor.getCompressionType(georaster) compType,
sdo_geor.calcCompressionRatio(georaster) compRatio
FROM georaster_table WHERE georid=1;

6.4 SDO_GEOR.changeCellValue

構文

SDO_GEOR.changeCellValue(
georaster         IN OUT SDO_GEORASTER,
window             IN SDO_NUMBER_ARRAY,
bandNumbers  IN VARCHAR2,
newCellValue   IN NUMBER,
bgValues          IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.changeCellValue(
georaster         IN OUT SDO_GEORASTER,
window            IN SDO_GEOMETRY,
layerNumbers  IN VARCHAR2,
newCellValue   IN NUMBER,
bgValues          IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

GeoRasterオブジェクトの指定されたウィンドウで、ラスター・セルの値を1つの新しい値に変更します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

window

すべてのセルの値をnewCellValueに変更するウィンドウを指定します。データ型はSDO_NUMBER_ARRAYまたはSDO_GEOMETRYのいずれかです。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合は、SDO_SRID要件の「使用上の注意」およびその他の情報を参照してください。

bandNumbers

処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、1-3はバンド1、2および3を示します)。

layerNumbers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。

newCellValue

指定したバンドまたはレイヤーのウィンドウ内の各セルに対する新しいセル値を指定します。値は、GeoRasterオブジェクトのcellDepth値で指定された範囲内である必要があります。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上の注意

このプロシージャは、入力されたGeoRasterオブジェクトのデータを上書きするため、元のGeoRasterオブジェクトをコピーし、そのコピーしたオブジェクトに対してこのプロシージャを使用してください。このプロシージャの結果を確認してから、必要に応じて元のGeoRasterオブジェクトを廃棄します。

このプロシージャは、イメージの一部をマスクする(隠す)ために使用できます。たとえば、イメージの必要な部分のみを強調するために、事前に関係ない部分をめだたない色に変更しておくことができます。

windowパラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は次のいずれかの値である必要があります。

- NULL (ラスター空間を指定)

- MDSYS.CS_SRS表のSRID列の値
windowパラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、windowパラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)

windowパラメータで矩形以外のSDO_GEOMETRYオブジェクトを指定すると、このファンクションによってジオメトリのMBRが計算され、そのMBR内のセルが(MBRの境界上のセルも含め)更新されます。

windowパラメータで測地MBRを指定する場合、日付変更線をまたぐMBRは指定できません。測地MBRについては、『Oracle Spatial and Graph開発者ガイド』を参照してください。

georasterが空白のGeoRasterオブジェクトで、領域全体が更新される場合、blankCellValue値がnewCellValueに設定された空白のGeoRasterオブジェクトが戻されます。

georasterが空白のGeoRasterオブジェクトで、部分的にのみ更新される場合、元のblankCellValue値およびnewCellValue値がwindowパラメータおよびbandNumbersまたはlayerNumbersパラメータに従って設定された、空白ではないGeoRasterオブジェクトが戻されます。

georasterが空白のGeoRasterオブジェクトでない場合、すべてのセルがnewCellValue値に設定される場合でも、空白ではないGeoRasterオブジェクトが戻されます。

georasterがNULLの場合、このプロシージャは処理を実行しません。georasterが無効な場合、例外が発生します。

GeoRasterオブジェクトでピラミッドが定義されている場合、ピラミッドの対応するセル値が更新されます。

GeoRasterオブジェクトの任意の位置にある単一のセルの値を戻すには、SDO_GEOR.getCellValueファンクションを使用します。

例

次の例では、バンド番号1の指定されたウィンドウ内のすべてのセルの値を151に変更します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr sdo_georaster;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=110 FOR UPDATE;
sdo_geor.changeCellValue(gr, sdo_number_array(100,67,134,113), '1', 151);
UPDATE georaster_table SET georaster=gr WHERE georid=110;
COMMIT;
END;
/

6.5 SDO_GEOR.changeFormatCopy

構文

SDO_GEOR.changeFormatCopy(
inGeoRaster      IN SDO_GEORASTER,
storageParam  IN VARCHAR2,
outGeoRaster    IN OUT SDO_GEORASTER,
bgValues          IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.changeFormatCopy(
inGeoRaster      IN SDO_GEORASTER,
pyramidLevel    IN NUMBER,
storageParam  IN VARCHAR2,
outGeoRaster    IN OUT SDO_GEORASTER,
bgValues          IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

(たとえば、ブロック、セル深度またはインターリーブを変更した)別の記憶域形式を使用して、既存のGeoRasterオブジェクトのコピーを作成します。

パラメータ

inGeoRaster

形式をコピーするSDO_GEORASTERオブジェクトを指定します。

pyramidLevel

ソースGeoRasterオブジェクトのピラミッド・レベルを示す番号を指定します。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

outGeoRaster

コピーを格納するSDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)inGeoRasterと同じGeoRasterオブジェクトは指定できません。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上の注意

このプロシージャは、元のGeoRasterオブジェクトまたは元のGeoRasterオブジェクトに指定したピラミッド・レベルに基づき、指定した変更が反映された新しいGeoRasterオブジェクトを作成します。このプロシージャを使用した後、希望どおり変更されているかをコピーで確認し、必要に応じて元のGeoRasterオブジェクトを破棄します。

pyramidLevelパラメータを含まない構文を使用すると、元のGeoRasterオブジェクト(pyramidLevel=0)を基にコピーが作成されます。

元のGeoRasterオブジェクトのピラミッド(pyramidLevel > 0)からコピーが作成されており、元のGeoRasterオブジェクトが地理参照されている場合、変換後のGeoRasterオブジェクトに地理参照情報が生成されるのは、有効な多項式変換で地理参照されている場合のみです。変換後のオブジェクトの行および列のultCoordinatesは(0,0)に設定されます。

GeoRasterオブジェクトを圧縮または解凍するには、storageParamパラメータでcompressionキーワードを使用します。(GeoRasterオブジェクトを圧縮または解凍するための個別のGeoRasterファンクションまたはプロシージャはありません。)

inGeoRasterがNULLの場合、このプロシージャは処理を実行しません。

storageParamがNULLの場合、inGeoRasterはoutGeoRasterにコピーされます。

outGeoRasterがラスター・データを持つ場合、コピー処理の前に削除されます。

inGeoRasterとoutGeoRasterには異なるGeoRasterオブジェクトを指定する必要があります。

inGeoRasterにピラミッド・データが存在する場合、上位レベルのピラミッド・データがoutGeoRasterにコピーされます。ただし、storageParam文字列にpyramid=FALSEが含まれる場合は除きます。

次の1つ以上の条件に該当する場合、例外が発生します。

- inGeoRasterが無効である。

- outGeoRasterが初期化されていない。

- outGeoRasterに対するラスター・データ表が存在せず、outGeoRasterが空白のGeoRasterオブジェクトではない。

例

次の例では、両方の次元のブロック・サイズを2048に設定すること以外は、入力オブジェクトと同じGeoRasterオブジェクトを作成します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
SELECT georaster INTO gr2 from georaster_table WHERE georid=11 FOR UPDATE;
SELECT georaster INTO gr1 from georaster_table WHERE georid=1;

sdo_geor.changeFormatCopy(gr1, 'blocksize=(2048,2048)', gr2);
UPDATE georaster_table SET georaster=gr2 WHERE georid=11;
COMMIT;
END;
/

6.6 SDO_GEOR.copy

構文

SDO_GEOR.copy(
inGeoRaster    IN SDO_GEORASTER,
outGeoRaster  IN OUT SDO_GEORASTER);

説明

既存のGeoRasterオブジェクトのコピーを作成します。

パラメータ

inGeoRaster

コピーするGeoRasterオブジェクトを指定します。

outGeoRaster

コピー操作の結果を格納するGeoRasterオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)inGeoRasterと同じGeoRasterオブジェクトは指定できません。

使用上の注意

outGeoRasterオブジェクトは、inGeoRasterオブジェクトの正確なコピーになります。コピー操作中、出力されるGeoRasterオブジェクトを変更するには、SDO_GEOR.changeFormatCopyプロシージャを使用します。

inGeoRasterがNULLの場合、このプロシージャは処理を実行しません。

outGeoRasterがラスター・データを持つ場合、コピー処理の前に削除されます。

inGeoRasterとoutGeoRasterには異なるGeoRasterオブジェクトを指定する必要があります。

inGeoRasterにピラミッド・データが存在する場合、ピラミッド・データはoutGeoRasterにコピーされます。

次の1つ以上の条件に該当する場合、例外が発生します。

- inGeoRasterが無効である。

- outGeoRasterが初期化されていない。

- outGeoRasterに対するラスター・データ表が存在せず、outGeoRasterが空白のGeoRasterオブジェクトではない。

例

次の例では、初期化されたGeoRasterオブジェクト(gr2)をGEORASTER_TABLE表のGEORASTER列に挿入し、gr2を別のGeoRasterオブジェクト(gr1)の正確なコピーにして、GEORASTER列の値にgr2を指定して挿入された行を更新します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
INSERT INTO georaster_table VALUES (11, sdo_geor.init('RDT_11', 1))
RETURNING georaster INTO gr2;
SELECT georaster INTO gr1 from georaster_table WHERE georid=1;

sdo_geor.copy(gr1, gr2);
UPDATE georaster_table SET georaster=gr2 WHERE georid=11;
COMMIT;
END;
/

6.7 SDO_GEOR.createBlank

構文

SDO_GEOR.createBlank(
rasterType           IN INTEGER,
ultCoord               IN SDO_NUMBER_ARRAY,
dimSizes              IN SDO_NUMBER_ARRAY,
cellValue              IN NUMBER,
rasterDataTable  IN VARCHAR2 DEFAULT NULL,
rasterID               IN NUMBER DEFAULT NULL
) RETURN SDO_GEORASTER;

説明

空白のGeoRasterオブジェクトを作成します。このオブジェクトのすべてのセルには同じ値が含まれます。作成後に、オブジェクトをxxx_SDO_GEOR_SYSDATAビューに登録する必要があります(「使用上の注意」を参照)。

パラメータ

rasterType

5桁のrasterType属性値を指定します(「rasterType属性」を参照)。

ultCoord

GeoRasterオブジェクトの左上の座標を示す整数値の配列を指定します。デフォルト値は、バンド次元を持たないGeoRasterオブジェクトでは(0,0)、バンド次元を持つGeoRasterオブジェクトでは(0,0,0)です。このパラメータがNULLの場合、デフォルト値の0が各次元に使用されます。指定した配列の値がNULLの場合、デフォルト値の0が対応する次元に使用されます。バンド次元の値は0である必要があるため、指定する必要はありません。(値の配列を指定する場合、値の数は空間次元数以上か、または次元の合計数以下である必要があります。)

dimSizes

各次元のセルの数を指定します。配列の値の数を次元の合計数と同じにして、各次元のサイズを明示的に指定する必要があります。行および列の次元サイズは、1より大きい値である必要があります。

cellValue

作成されたGeoRasterオブジェクトのすべてのラスター・セルのセル値を指定します。作成されたGeoRasterオブジェクトのセル深度は8BIT_UNSIGNEDであるため、値の範囲は0から255である必要があります。

rasterDataTable

セル・データ・ブロックを格納するSDO_RASTER型のオブジェクト表の名前を指定します。空白、ピリオド、または大/小文字が混在する文字列を引用符で囲んだ値は使用できません(名前は、SDO_GEORASTERオブジェクトに格納される際に常に大文字に変換されます)RDTは、GeoRaster表に関連付けられるため、同じスキーマである必要があります。このパラメータを指定しない場合、GeoRasterはラスター・データ表に使用される一意の表名を生成します。このパラメータで指定した表がすでに存在しており、SDO_RASTER型のオブジェクト表ではない場合、例外が発生します。

rasterID

ラスター・データ表で、このGeoRasterオブジェクトのセル・ブロックを一意に識別する番号を指定します。このパラメータを指定しない場合、ID用に一意の順序番号が生成されます。

使用上の注意

空白のGeoRasterオブジェクトを作成したら、オブジェクトに対して操作を実行する前に、空白のGeoRasterオブジェクトをGeoRaster表に挿入してオブジェクトをxxx_SDO_GEOR_SYSDATAビューに登録する必要があります。(xxx_SDO_GEOR_SYSDATAビューの詳細は、「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」を参照してください。GeoRasterの操作は「基本的なGeoRaster操作」を参照してください。)

作成されたGeoRasterオブジェクトは空間参照情報を持たないため、空間エクステント・ジオメトリのSRID (座標系)値はNULLです。空間エクステント・ジオメトリには、ultCoord値およびdimSizes値が反映されます。

このファンクションでは、指定されたラスター・データ表が存在する必要はありません。ただし、ラスター・データを表に挿入するには、表が存在している必要があります。

作成されたGeoRasterオブジェクトのセル深度は8BIT_UNSIGNEDですが、SDO_GEOR.changeFormatCopyプロシージャをコールして空白のGeoRasterオブジェクトを作成すると、セル深度を変更できます。その後で、SDO_GEOR.setBlankCellValueプロシージャをコールして、別の範囲でセル値をリセットできます。

表に複数のGeoRasterオブジェクト列が定義されている場合、SDO_GEOR.createBlankおよびSDO_GEOR.initファンクションに適用するガイドラインについては、SDO_GEOR.initファンクションの「使用上の注意」を参照してください。

入力パラメータの値が無効な場合、例外が発生します。

例

次の例では、空白のGeoRasterオブジェクト含む行を表に挿入します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

INSERT INTO georaster_table (georid, georaster) VALUES (
1,
sdo_geor.createBlank(20001, SDO_NUMBER_ARRAY(0,0),
SDO_NUMBER_ARRAY(1024,1024), 255, 'RDT_1')
);

6.8 SDO_GEOR.createTemplate

構文

SDO_GEOR.createTemplate(
georaster       IN OUT SDO_GEORASTER,
rasterType     IN INTEGER,
rasterSpec     IN VARCHAR2,
maskLayers    IN VARCHAR2 DEFAULT NULL,
initRDTEntry  IN VARCHAR2 DEFAULT NULL
) ;

説明

GeoRasterオブジェクトに汎用パターンのメタデータを移入します。また、オプションで、空のラスター・ブロックを含むエントリをラスター・データ表に挿入します。

パラメータ

georaster

更新するGeoRasterオブジェクトを指定します。

rasterType

5桁のrasterType属性値を指定します(「rasterType属性」を参照)。

rasterSpec

ラスター仕様パラメータを示す文字列を指定します(「使用上の注意」を参照)。

maskLayers

ビットマップ・マスクが関連付けられた論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。

initRDTEntry

文字列TRUEを指定すると、ラスター・データ表にデータが移入されますが、文字列FALSEを指定すると、ラスター・データ表にデータは移入されません。このパラメータを指定しない場合、ラスター・データ表にデータは移入されません。

使用上の注意

このファンクションは、GeoRasterオブジェクトに汎用パターンのメタデータを移入し、オプションで、空のラスター・ブロックを含む適切な行をラスター・データ表に挿入します。ラスター・データ表にデータを移入する場合は、ラスター・データ表が存在し、GeoRasterオブジェクトがGeoRaster SYSDATA表に登録されている必要があります。

通常、空のGeoRasterオブジェクトにこのプロシージャを使用すると、XMLメタデータとラスター・ブロックが移入されるだけです。既存の(適切な)GeoRasterオブジェクトを使用すると、GeoRasterオブジェクトは更新時に新しいテンプレート・オブジェクトに置き換えられます。

rasterSpecパラメータには、キーワードと値の組合せから1つ以上を選択し、引用符で囲んだ文字列として指定する必要があります。このパラメータでは次のキーワードがサポートされます。

- blocking (blocking=TRUEなど)。このキーワードの詳細は、「記憶域パラメータ」の表1-1を参照してください。

- blocksize (blocksize=(128,128,3)など)。このキーワードの詳細は、「記憶域パラメータ」の表1-1を参照してください。

- cellDepth (cellDepth=8BIT_Sなど)。このキーワードの詳細は、「記憶域パラメータ」の表1-1を参照してください。

- compression (compression=JPEG-Fなど)。このキーワードの詳細は、「記憶域パラメータ」の表1-1を参照してください。

- dimSize (dimSize=(256,256,3)など): 行、列およびバンド次元のサイズを指定します。このキーワードの指定は必須であり、rasterTypeパラメータと一致している必要があります。

- interleaving (interleaving=BIPなど)。このキーワードの詳細は、「記憶域パラメータ」の表1-1を参照してください。

- quality (quality=75など)。このキーワードの詳細は、「記憶域パラメータ」の表1-1を参照してください。

- resampling (resampling=NNなど): リサンプリング・メソッドを指定します。NN、BILINEAR、BIQUADRATIC、CUBIC、AVERAGE4、AVERAGE16のいずれかを指定する必要があります。詳細は、「リサンプリングおよび内挿」を参照してください。
rLevelが設定されていない場合、resamplingキーワードは無視されます。

- rLevel (rLevel=2など): ピラミッドの最大縮小レベルを指定します。正の整数にする必要があります。このキーワードを指定すると、メタデータのピラミッド・タイプがDECREASEに設定され、指定しない場合はピラミッド・タイプがNONEに設定されます。

- ultCoord (ultCoord=(0,0,0)など): GeoRasterオブジェクトの左上の座標を示す整数値を指定します。すべての次元で、デフォルト値は0 (ゼロ)です。バンド次元の値には、0 (ゼロ)を指定する必要があります。

(「記憶域パラメータ」の表1-1のbitmapmaskおよびpyramidキーワードは、rasterSpecパラメータではサポートされないことに注意してください。)

このファンクションを使用してGeoRasterアプリケーションを開発する方法については、「テンプレート関連のサブプログラムを使用したGeoRasterアプリケーションの開発」を参照してください。

例

次の例では、GeoRasterオブジェクトにメタデータとラスター・データ表の最初の行を移入します。

DECLARE
gr sdo_georaster;
BEGIN
INSERT INTO georaster_table (georid, georaster)
VALUES (1, sdo_geor.init('RDT_1'))
RETURNING georaster into gr;
sdo_geor.createTemplate(gr, 21001,
'dimSize=(128,128,3) blocking=false rlevel=2',
null, 'TRUE');
UPDATE georaster_table set georaster=gr where georid=1;
COMMIT;
END;
/

6.9 SDO_GEOR.deleteControlPoint

構文

SDO_GEOR.deleteControlPoint (
inGeoraster      IN SDO_GEORASTER,
controlPointID  IN VARCHAR2);

説明

指定した基準点ID値を持つ地上基準点(GCP)を削除します。

パラメータ

inGeoraster

GeoRasterオブジェクトを指定します。

controlPointID

inGeorasterの基準点IDを指定します。32文字以下の文字列である必要があります。

使用上の注意

GCPを使用する地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

GeoRasterオブジェクト・メタデータに格納された既存のGCPでcontrolPointIDがNULLであるか、空であるか、または検出されない場合、例外が発生します。指定した点IDを持つGCPが検出された場合、そのGCPは地理参照モデルから削除されます。

例

次の例では、指定したGeoRasterオブジェクトでID値が23のGCPを削除します。

DECLARE
gr1  sdo_georaster;
BEGIN
SELECT georaster INTO gr1 from herman.georaster_table WHERE georid=10 FOR UPDATE;
sdo_geor.deleteControlPoint(gr1, '23');
UPDATE georaster_table SET georaster=gr1 WHERE georid=10;
COMMIT;
END;
/

6.10 SDO_GEOR.deleteNODATA

構文

SDO_GEOR.deleteNODATA(title
georaster       IN OUT SDO_GEORASTER
layerNumber  IN NUMBER
nodata           IN NUMBER);

または

SDO_GEOR.deleteNODATA(
georaster       IN OUT SDO_GEORASTER
layerNumber  IN NUMBER
nodata           IN SDO_RANGE_ARRAY);

説明

1つ以上のNODATA値またはその値の範囲を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

GeoRasterオブジェクト内のレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

nodata

単一の数値か、数字または数字の範囲の配列を1つ指定します。NODATA値の範囲には下限が含まれ、上限は含まれません。

SDO_RANGE_ARRAY型の詳細は、「NODATA値および値の範囲」を参照してください

使用上の注意

NODATA値またはその値の範囲が削除された場合、GeoRasterオブジェクトのセル深度を使用して正しい範囲が新しく生成されます。セル深度に浮動セル値が指定されている場合、削除が可能なのは、既存の単一数値のNODATA値か、または既存のNODATA値の範囲の部分的な範囲のみです。

NODATA値およびその値の範囲の詳細は、「NODATA値および値の範囲」を参照してください。

1つ以上のNODATA値またはその値の範囲を追加するには、SDO_GEOR.addNODATAプロシージャを使用します。GeoRasterオブジェクトのNODATA値を戻すには、SDO_GEOR.getNODATAファンクションを使用します。

例

次の例では、オブジェクト・レイヤーに関連付けられたNODATAのメタデータからセル値9を削除します。

DECLARE
gr sdo_georaster;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=0 FOR UPDATE;
SDO_GEOR.deleteNODATA(gr, 0, 9);
UPDATE georaster_table SET georaster=gr WHERE georid=0;
COMMIT;
END;
/

6.11 SDO_GEOR.deletePyramid

構文

SDO_GEOR.deletePyramid(
georaster            IN OUT SDO_GEORASTER);

説明

GeoRasterオブジェクトのピラミッド・データを削除します。

パラメータ

georaster

ピラミッド・データを削除するGeoRasterオブジェクトを指定します。

使用上の注意

ピラミッド・データの詳細は、「ピラミッド」を参照してください。

georasterがNULLか、またはピラミッド・データを持たない場合、このプロシージャは処理を実行しません。

georasterが無効な場合、例外が発生します。

例

次の例では、GeoRasterオブジェクトのピラミッド・データを削除します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr1 sdo_georaster;
BEGIN
SELECT georaster INTO gr1 FROM georaster_table WHERE georid=21;

sdo_geor.deletePyramid(gr1);
UPDATE georaster_table SET georaster=gr1 WHERE georid=21;
COMMIT;
END;
/

6.12 SDO_GEOR.evaluateDouble

構文

SDO_GEOR.evaluateDouble(
georaster                 IN SDO_GEORASTER,
pyramidLevel           IN NUMBER,
row                          IN NUMBER,
collumn                    IN NUMBER,
bands                       IN VARCHAR2,
interpolationMethod IN VARCHAR2
) RETURN SDO_NUMBER_ARRAY;

または

SDO_GEOR.evaluateDouble(
georaster                 IN SDO_GEORASTER,
pyramidLevel           IN NUMBER,
ptGeom                    IN SDO_GEOMETRY,
layers                       IN VARCHAR2,
interpolationMethod IN VARCHAR2
) RETURN SDO_NUMBER_ARRAY;

説明

指定された内挿方法を使用することで直接の場所を評価し、その場所に指定されたバンドまたはレイヤーのラスター値(倍精度の数値)を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

ラスター値を戻す場所を含むピラミッド・レベルを指定します。

row

ラスター値を戻す場所の行座標を指定します。これは浮動小数点数にすることができます。

column

ラスター値を戻す場所の列座標を指定します。これは浮動小数点数にすることができます。

bands

処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、1-3はバンド1、2および3を示します)。

ptGeom

ラスター値を戻す直接の場所を識別する点ジオメトリを指定します。

layers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。(「バンド、レイヤーおよびメタデータ」で説明したように、論理レイヤー番号は、物理バンドの座標番号に1を足した値です。)

interpolationMethod

それぞれ適切な値を持つ1つ以上のキーワードを含む引用符で囲んだ文字列を指定します。使用可能なキーワードおよび値については、「使用上の注意」を参照してください。

使用上の注意

このファンクションは、内挿された倍精度のラスター値を戻します。GeoRasterでは、セル座標系タイプが中心を基準とするか、左上を基準とするかにかかわらず、元のセル値は常にセルの中心に関連付けられます。

GeoRasterオブジェクトの場所は、セル座標空間でその行、列およびバンド番号を指定するか、モデル座標空間またはセル座標空間で点ジオメトリを指定して識別します。

interpolationMethodには、次の1つ以上のキーワードにそれぞれ適切な値を指定して、それらを引用符で囲んだ文字列を指定する必要があります。

- interpolationMethod (interpolationMethod=NNなど): 内挿方法を指定します。NN、BILINEAR、BIQUADRATIC、CUBIC、AVERAGE4、AVERAGE16のいずれかを指定する必要があります。詳細は、「リサンプリングおよび内挿」を参照してください。

- nodata (nodata=TRUEなど): プロシージャでの処理中にNODATA値およびその値の範囲を考慮するかどうかを指定します。TRUE (NODATA値およびその値の範囲を考慮する)またはFALSE (NODATA値およびその値の範囲を考慮しない)のいずれかを指定します。デフォルト値はFALSEです。この値がTRUEで、内挿方法がBILINEAR、BIQUADRATIC、CUBIC、AVERAGE4またはAVERAGE16の場合、内挿の計算に含まれるセル値がNODATA値であると、内挿の結果も常にNODATA値になります。複数のNODATA値または値の範囲が存在する場合、結果のNODATA値は、現行のラスター・レイヤーに関連付けられているNODATA値の最小値になります。

interpolationMethodを'interpolationMethod=NN'に指定した場合、このファンクションはSDO_GEOR.getCellValueファンクションをコールした場合と同じになります。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が21である行に含まれているGeoRasterオブジェクト(GEORASTER列)の指定した場所のラスター値を戻します(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています)。

次の例では、セル空間またはモデル空間で指定された同じ場所の同じ値を戻す2つのファンクション構文を示します。

SELECT SDO_GEOR.evaluateDouble(a.georaster, 0,
10.2, 10.3,
'0-2',
'interpolationMethod=BILINEAR')
FROM georaster_table a WHERE georid=21;

SDO_GEOR.EVALUATEDOUBLE(A.GEORASTER,0,10.2,10.3,'0-2','interpolationMethod=BILINEAR')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(86.68, 135.68, 31.72)

1 row selected.

SELECT SDO_GEOR.evaluateDouble(a.georaster, 0,
SDO_GEOMETRY(2001, 82394, SDO_POINT_TYPE(18492.775, 1012881.9, NULL),
NULL, NULL),
'1-3',
'interpolationMethod=BILINEAR')
FROM georaster_table a WHERE georid=21;

SDO_GEOR.EVALUATEDOUBLE(A.GEORASTER,0,SDO_GEOR.GETMODELCOORDINATE(A.GEORASTER,0,
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(86.68, 135.68, 31.72)

1 row selected.

6.13 SDO_GEOR.exportTo

構文

SDO_GEOR.exportTo(
georaster        IN SDO_GEORASTER,
subsetParam  IN VARCHAR2,
r_destFormat  IN VARCHAR2,
r_destType      IN VARCHAR2,
r_destName    IN VARCHAR2,
h_destFormat  IN VARCHAR2 DEFAULT NULL,
h_destType      IN VARCHAR2 DEFAULT NULL,
h_destName   IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.exportTo(
georaster        IN SDO_GEORASTER,
subsetParam  IN VARCHAR2,
r_destFormat  IN VARCHAR2,
r_destBLOB    IN  OUT NOCOPY BLOB);

または

SDO_GEOR.exportTo(
georaster         IN SDO_GEORASTER,
subsetParam   IN VARCHAR2,
r_destFormat   IN VARCHAR2,
r_destBLOB     IN  OUT NOCOPY BLOB,
h_destFormat  IN VARCHAR2 DEFAULT NULL,
h_destCLOB    IN  OUT NOCOPY CLOB DEFAULT NULL);

説明

GeoRasterオブジェクトまたはGeoRasterオブジェクトのサブセットを、ファイルまたはBLOBオブジェクトにエクスポートします。

パラメータ

georaster

エクスポートするGeoRasterオブジェクトを指定します。

subsetParam

サブセット・パラメータを含む文字列(GeoRasterオブジェクトのサブセットのエクスポート用)を指定します。形式および使用方法については「記憶域パラメータ」を参照してください(ただし、その項で示すキーワードの中には、このプロシージャには適用されないものもあります)。サポートされているキーワードは、次のとおりです。

- pLevel: エクスポートするピラミッド・レベルを指定します。デフォルト値は0 (ゼロ)です。

- cropArea: cropArea = (startRow, startCol, endRow, endCol)という形式でエクスポートする領域を指定します。これは、エクスポートする矩形ウィンドウの左上の座標(startRow、startCol)と右下の座標(endRow、endCol)を識別することで、ラスター空間が想定されます。cropAreaを指定しない場合は、イメージ全体がエクスポートされます。

- layerNumber: エクスポートするレイヤーのレイヤー番号を指定します。たとえば、layerNumber=(3-5)の場合はレイヤー3、4および5がエクスポートされ、layerNumber=(1,3,5)の場合はレイヤー1、3および5がエクスポートされます。

r_destFormat

ラスターの宛先の形式を指定します。TIFF、BMP、GeoTIFFまたはPNGのいずれかを指定する必要があります。(JPEGおよびGIFは、このプロシージャではサポートされていません。)

r_destType

エクスポート操作の宛先のタイプを指定します。FILEを指定する必要があります。

r_destName

destTypeがFILEの場合、宛先ファイル名をフルパスで指定します。ファイル拡張子は指定しないでください。ワールド・ファイルのエクスポートのみにこのプロシージャを使用する場合は、このパラメータにNULL値を指定します。

r_destBLOB

エクスポート操作の結果のイメージ・ファイルを格納するBLOBオブジェクトを指定します。

h_destFormat

ジオヘッダーの宛先の形式を指定します。WORLDFILEを指定する必要があります。

h_destType

エクスポート操作の宛先のジオヘッダー・タイプを指定します。FILEを指定する必要があります。

h_destName

h_destTypeがFILEの場合、ジオヘッダーの宛先ファイル名をフルパスで指定します。ファイル拡張子は指定しないでください。

h_destCLOB

エクスポート操作の結果のジオヘッダー・ファイルを格納するCLOBオブジェクトを指定します。

使用上の注意

ラスター・イメージとジオヘッダーが別々のファイルに存在する場合にのみ、r_xxx パラメータとh_xxx パラメータの両方を含む形式を使用してください。

このプロシージャは、宛先ファイル形式としてJPEGまたはGIFをサポートしていません。JPEGファイルにエクスポートするには、クライアント側のGeoRasterエクスポータ・ツールを使用します(「GeoRasterツール: ローダー、ビューア、エクスポータ」を参照)。

このプロシージャは、cellDepth値が2BITのGeoRasterオブジェクトをサポートしていません。

BSQまたはBILインターリーブ形式で8ビット以上のセル深度を持つGeoRasterオブジェクトは、BIPインターリーブ形式でエクスポートされます。

GeoTIFF PixelIsAreaラスター空間は、左上角を基準とするGeoRasterのセル座標系と同じです。GeoTiffへのエクスポートは、常にPixelIsAreaラスター空間が対象となります(GeoRasterオブジェクトが中央を基準とするセル座標系の場合は、アフィン変換で2分の1ピクセル単位の調整が行われます)。

SDO_GEOR.importFromプロシージャを使用してGeoTIFFイメージをロードする場合は、xtiff-jai.jarおよびgeotiff-jai.jarライブラリが必要になります。これらのGeoTIFFライブラリの詳細は、「GeoRasterオブジェクトの地理参照」を参照してください。

このプロシージャをコールするには、出力ファイルまたはファイルを含めるディレクトリに対する書込み権限が必要です。次の例(ユーザーSYSTEMとして実行)では、指定したファイルに対する書込み権限をユーザーHERMANに付与します。

call dbms_java.grant_permission('HERMAN','SYS:java.io.FilePermission',
'/mydirectory/myimages/img1.tif', 'write' );

1回の操作でエクスポートできるGeoRasterデータの最大容量は、67メガバイト(MB)です。したがって、1回でエクスポートできるGeoRasterオブジェクトの最大次元は、width*height*bands*cellDepth/8 <= 67 MBおよびrowBlockSize*columnBlockSize*bands*cellDepth/8 <= 67 MBになります。たとえば、widthとheightが等しい、3バンド、8ビットのGeoRasterオブジェクトの場合は次のようになります。

- エクスポートできる最大のwidthとheightは4728x4728。

- エクスポートできる最大のブロック次元は4096x4096。

例

次の例では、2つのエクスポート操作を示します。最初の操作では、GeoRasterオブジェクト全体(地理参照情報以外)をBMP形式のファイルにエクスポートします。2番目の操作では、GeoRasterオブジェクトのサブセットを、ESRIワールド・ファイルを持つファイルにエクスポートします。

DECLARE
geor SDO_GEORASTER;
fileName VARCHAR2(1024);
tfwName VARCHAR2(1024);

BEGIN

SELECT georaster INTO geor FROM georaster_table WHERE georid = 1;

-- Export the whole GeoRaster object into a BMP file, excluding any
-- georeferencing information.
sdo_geor.exportTo(geor, NULL, 'BMP', 'file',
'/mydirectory/myimages/img1_export');

-- Export a subset to a file with a world file.
fileName := '/mydir/parrotExported';
tfwName := '/mydir/parrotWorldFile';
SELECT georaster INTO geor FROM georaster_table WHERE georid = 8;
sdo_geor.exportTo(geor, 'cropArea=(0,0,500,500)',
'TIFF', 'file', fileName, 'WORLDFILE', 'FILE', tfwName);

END;
/

次の例では、GeoRasterオブジェクトをBLOBオブジェクトおよびCLOBオブジェクトにエクスポートします。

CREATE TABLE blob_table (blob_col BLOB, blobid NUMBER unique, clob_col CLOB);
INSERT INTO blob_table values (empty_blob(), 3, null);
INSERT INTO blob_table VALUES (empty_blob(), 4, empty_clob());

DECLARE
lobd1 BLOB;
lobd2 BLOB;
lobd3 CLOB;
geor1 SDO_GEORASTER;
geor2 SDO_GEORASTER;

BEGIN

-- Example 1: Export to BLOB.
SELECT blob_col INTO lobd1 FROM blob_table WHERE blobid=3 for update;
SELECT georaster INTO geor1 FROM georaster_table WHERE georid = 13;
sdo_geor.exportTo(geor1, '', 'TIFF', lobd1);
UPDATE blob_table set blob_col = lobd1 WHERE blobid=3;
COMMIT;

-- Example 2: Export GeoRaster to BLOB with world file exported to CLOB.
SELECT blob_col INTO lobd2 FROM blob_table WHERE blobid=4 for update;
SELECT clob_col INTO lobd3 FROM blob_table WHERE blobid=4 for update;
SELECT georaster INTO geor2 FROM georaster_table WHERE georid = 8;
sdo_geor.exportTo(geor2, 'cropArea=(0,0,500,500)', 'TIFF', lobd2,
'WORLDFILE', lobd3);
UPDATE blob_table set blob_col = lobd2, clob_col = lobd3 WHERE blobid = 4;
COMMIT;

END;
/

6.14 SDO_GEOR.generateBlockMBR

構文

SDO_GEOR.generateBlockMBR(
georaster  IN SDO_GEORASTER);

説明

GeoRasterオブジェクトの各ブロックの最小境界矩形(MBR)を算出し、ラスター・データ表内の各ラスター・ブロックのblockMBR属性を設定します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このプロシージャは、GeoRasterオブジェクトの変更は行いません。GeoRasterオブジェクトに関連付けられたラスター・データ表に含まれる各行のblockMBR属性(「blockMBR属性」を参照)に値が設定されます。

「新しいGeoRasterオブジェクトの作成」の説明に従ってGeoRasterオブジェクトを作成した場合はblockMBR属性値が自動計算されるため、この属性値を検証したり生成する必要はありません。ただし、サード・パーティによって生成されたGeoRasterオブジェクトの場合は、SDO_GEOR.validateBlockMBRファンクションを使用してblockMBR属性値を検証する必要があり、無効な値が含まれている場合は、SDO_GEOR.generateBlockMBRプロシージャをコールします。

例

次の例では、指定したGeoRasterオブジェクトのMBRを算出し、そのオブジェクトのblockMBR属性値を設定します。

DECLARE
gr sdo_georaster;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=1 FOR UPDATE;
sdo_geor.generateBlockMBR(gr);
COMMIT;
END;
/

6.15 SDO_GEOR.generatePyramid

構文

SDO_GEOR.generatePyramid(
georaster           IN OUT SDO_GEORASTER,
pyramidParams  IN VARCHAR2,
bgValues            IN SDO_NUMBER_ARRAY DEFAULT NULL,
parallelParam     IN VARCHAR2 DEFAULT NULL);

説明

ピラミッド・データを生成して、元のデータとともに格納します。

パラメータ

georaster

ピラミッド・データを生成して格納するGeoRasterオブジェクトを指定します。

pyramidParams

ピラミッド・パラメータを含む文字列を指定します。使用可能なキーワードおよび値については、「使用上の注意」を参照してください。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

parallelParam

操作の並列度を指定します。指定する場合、parallel=nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)

使用上の注意

ピラミッド・データの詳細は、「ピラミッド」を参照してください。

pyramidParamsには、次の1つ以上のキーワードにそれぞれ適切な値を指定して、それらを引用符で囲んだ文字列を指定する必要があります。

- rLevel (rLevel=2など): 最大縮小レベルを指定します。元のオブジェクトより小さい(縮小した)サイズで作成する場合に使用するピラミッド・レベルの数値を指定します。このキーワードを指定しない場合、ピラミッド・レベルは、行または列の数の少ない方が64から128になるまで生成されます。低い解像度レベルでの各次元サイズは、その次に高い解像度レベルでの次元サイズを2で割って切り捨てた整数値と同じになります。

- resampling (resampling=NNなど): リサンプリング・メソッドを指定します。NN、BILINEAR、BIQUADRATIC、CUBIC、AVERAGE4、AVERAGE16のいずれかを指定する必要があります。詳細は、「リサンプリングおよび内挿」を参照してください。
このプロシージャでは、BILINEARとAVERAGE4は同じ効果があることに注意してください。

- nodata (nodata=TRUEなど): プロシージャでの処理中にNODATA値およびその値の範囲を考慮するかどうかを指定します。TRUE (NODATA値およびその値の範囲を考慮する)またはFALSE (NODATA値およびその値の範囲を考慮しない)のいずれかを指定します。デフォルト値はFALSEです。この値がTRUEで、リサンプリング・メソッドがBILINEAR、BIQUADRATIC、CUBIC、AVERAGE4またはAVERAGE16の場合、リサンプリングの計算に含まれるセル値がNODATA値であると、リサンプリングの結果も常にNODATA値になります。複数のNODATA値または値の範囲が存在する場合、結果のNODATA値は、現行のラスター・レイヤーに関連付けられているNODATA値の最小値になります。

georasterがNULLまたは空白のGeoRasterオブジェクトである場合、またはgeorasterのピラミッド・データは存在しているが、pyramidParamsで指定されたピラミッド・パラメータと同じパラメータで作成されている場合、このプロシージャは処理を実行しません。

georasterのピラミッド・データが存在し、pyramidParamsで指定されたものとは異なるresampling値を使用して作成されている場合、古いピラミッド・データは削除され、新しいピラミッド・データが生成されます。ただし、pyramidParamsに異なるnodataを指定しても、ピラミッド・データは再生成されません。新しいnodata値を有効にするには、古いピラミッド・データを削除してそれを再生成する必要があります。

rLevel値を指定しない場合、rLevel値はデフォルト値に設定されます。デフォルト値は次のように計算されます。

(int)(log2(a / 64))

式の各変数の意味は、次のとおりです。

- log2: 底が2の対数関数です。

- a: 元の次元サイズの行または列の小さい方。

デフォルトの場合、最上位レベルの全体像(最上位レベルの最小ピラミッド)では、行次元と列次元のいずれか小さい方のサイズは64から128です。rLevel値を低解像度の最大レベルより大きい値に指定した場合、rLevel値は低解像度の最大レベルに設定されます。最大レベルは次のように計算されます。

(int)(log2(a))

この場合、最上位レベルの全体像では、その行次元と列次元のいずれか小さい方のサイズは1になります。

georasterが無効な場合、例外が発生します。

例

次の例では、GeoRasterオブジェクトのピラミッド・データを作成します。

DECLARE
gr sdo_georaster;
BEGIN

SELECT georaster INTO gr
FROM georaster_table WHERE georid = 6 FOR UPDATE;

-- Generate pyramids.
sdo_geor.generatePyramid(gr, 'rLevel=5, resampling=NN');

-- Update the original GeoRaster object.
UPDATE georaster_table SET georaster = gr WHERE georid = 6;

COMMIT;
END;
/

6.16 SDO_GEOR.generateSpatialExtent

構文

SDO_GEOR.generateSpatialExtent(
georaster  IN SDO_GEORASTER,
height        IN NUMBER DEFAULT NULL
) RETURN SDO_GEOMETRY;

説明

GeoRasterオブジェクトの空間エクステント(フットプリント)を含む空間ジオメトリを生成します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

height

3次元(X, Y, Z)の地理参照で使用するZの値を指定します。

使用上の注意

戻されるSDO_GEOMETRYオブジェクトは、GeoRasterオブジェクトのモデル座標系に基づいています。GeoRasterオブジェクトが地理参照されていない場合、SDO_GEOMETRYオブジェクトのSDO_SRID値はNULLであり(つまり、フットプリント・ジオメトリはセル空間にある)、地理参照されている場合は、SDO_GEOMETRYオブジェクトのSDO_SRID値はモデルSRIDになります。具体的には次のようになります。

- GeoRasterオブジェクトが地理参照されていない場合、またはモデル座標系が投影座標の場合、空間エクステント・オブジェクトは8つの境界点から導出される単一のポリゴンです。

- モデル座標系が測地座標系の場合、空間エクステントはオブジェクトの空間フットプリントに応じて圧縮されます。フットプリントの領域が地表面積の半分以下の場合、結果は単一の測地ポリゴンです。それ以外の場合、生成された空間エクステント・オブジェクトとして測地MBRが戻され、この戻されたオブジェクトはOracle Spatial and Graphの検証ルールに従って無効なジオメトリになりますが、索引および問合せ操作はこの戻されたオブジェクトで動作します。

フットプリントは、モデル空間の領域全体を含むように、GeoRasterオブジェクトのモデル座標の位置(CENTERまたはUPPERLEFT)に基づいて自動的に調整されます。地理参照ではない場合、CENTERがモデル座標の位置のデフォルトです。

モデル座標系が3次元の場合、生成される空間エクステントは3次元のジオメトリです。生成された値に基づいて空間索引を作成するには、索引をGeoRasterオブジェクトのspatialExtent属性に保存する前に、2次元のジオメトリに変換する必要があります。異なる次元間の変換については、『Oracle Spatial and Graph開発者ガイド』を参照してください。

このファンクションはGeoRasterオブジェクトの空間エクステントを設定しません(「spatialExtent属性」に示すspatialExtent属性を参照)。空間エクステントの設定の詳細は、「空間エクステントの生成と設定」を参照してください。

georasterがNULLの場合、このファンクションはNULLのSDO_GEOMETRYオブジェクトを戻します。georasterが無効な場合、例外が発生します。

例

次の例では、Z次元(高さ)の値が10の3次元空間エクステントが、地理3D座標系4327 (モデルSRID)内に生成されます。(出力形式は多少変更されています。)

SELECT SDO_GEOR.generateSpatialExtent(georaster,10) spatialExtent
FROM georaster_table where georid=10;

SPATIALEXTENT(A.GEORASTER,10)(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_IN
----------------------------------------------------------------------------------
SDO_GEOMETRY(3003, 4327, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(.181818182, 1.1627907, 10, 12.1228111, 1.07010227, 10, 19.3902574, 1.07010229, 10, 25.1482989, 1.07010229, 10, 30.0714774, 1.07010229,
10, 34.4500035, 1.07010229, 10, 38.3920079, 1.07010229, 10, 42.0490801,
1.07010229, 10, 45.4612165, 1.07010229, 10, 48.6719786, 1.07010229, 10,
53.6193472, 1.07010229, 10, 53.6193472, 12.346373, 10, 53.6178888, 15.3903048,
10, 53.6178888, 18.3032341, 10, 50.6322061, 18.3032341, 10, 47.5331761,
18.3032341, 10, 44.2541078, 18.3032341, 10, 40.7594212, 18.3032341, 10, 37,
18.3032341, 10, 32.9046537, 18.3032341, 10, 28.3630834, 18.3032341, 10,
23.1869539, 18.3032341, 10, 17, 18.3032341, 10, -2.220E-16, 18.3032341, 10, 0,
16.3247208, 10, -2.220E-16, 13.6133114, 10, .181818182, 1.1627907, 10))

次の例では、GEORASTER_TABLE表のGEORASTER列に含まれているGeoRasterオブジェクトの空間エクステント・ジオメトリを戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT sdo_geor.generateSpatialExtent(georaster) spatialExtent
FROM georaster_table WHERE georid=2;

SPATIALEXTENT(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINA
--------------------------------------------------------------------------------

SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARR
AY(0, 0, 256, 0, 511, 0, 511, 256, 511, 511, 256, 511, 0, 511, 0, 256, 0, 0))

SET NUMWIDTH 20
SELECT sdo_geor.generateSpatialExtent(georaster) spatialExtent
FROM georaster_table WHERE georid=4;

SPATIALEXTENT(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO,
SDO_ORDINA
--------------------------------------------------------------------------------

SDO_GEOMETRY(2003, 82263, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_AR
RAY(1828466.0909315, 646447.1932945, 1828466.0909315, 644479.85524, 1828466.0909
315, 642512.5171855, 1830433.428986, 642512.5171855, 1832400.7670405, 642512.517
1855, 1832400.7670405, 644479.85524, 1832400.7670405, 646447.1932945, 1830433.42
8986, 646447.1932945, 1828466.0909315, 646447.1932945))

6.17 SDO_GEOR.generateSpatialResolutions

構文(プロシージャ)

SDO_GEOR.generateSpatialResolutions(     georaster        IN OUT SDO_GEORASTER,      outResolution  OUT SDO_NUMBER_ARRAY;

構文(ファンクション)

SDO_GEOR.generateSpatialResolutions(     georaster        IN SDO_GEORASTER,      pyramidLevel   IN NUMBER DEFAULT NULL,      SRID               IN NUMBER DEFAULT NULL,      resolutionUnit  IN VARCHAR2 DEFAULT NULL,      ) RETURN SDO_NUMBER_ARRAY;

説明

GeoRasterオブジェクトの各空間次元に沿って空間解像度の値を生成します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

outResolution

GeoRasterオブジェクトの生成される空間解像度を指定します。これは、それぞれX軸とY軸の空間解像度を表す2つの数値の配列です。

pyramidLevel

戻される解像度の値のピラミッド・レベルを指定します。デフォルトはピラミッド・レベル0です。

SRID

座標系を指定します。MDSYS.CS_SRS表のSRID列の値を指定する必要があります。srid値に0 (ゼロ)を指定することはできません。指定しない場合、デフォルトはgeorasterに関連付けられたSRIDです。

resolutionUnit

測定単位(unit=を含む引用符で囲まれた文字列)を指定します。指定しない場合、SRIDに関連付けられた単位が使用されます。

使用上の注意

SDO_GEOR.generateSpatialResolutionsには2つの構文があります。

- プロシージャ構文では、生成される空間解像度をGeoRasterオブジェクトのメタデータに設定します。GeoRasterオブジェクトのメタデータは更新されます。生成された空間解像度を取得するためには、GeoRasterオブジェクトを地理参照する必要があります。

- ファンクションの構文では、GeoRasterオブジェクトのメタデータの地理参照情報に基づいて空間解像度を生成して戻します。GeoRasterオブジェクトのメタデータは更新されません。

GeoRasterオブジェクトを地理参照する必要があります。生成される空間解像度は、GeoRasterオブジェクトの中央のセルの解像度になります。

戻される数値の配列で、各値は、ピクセルの空間次元によって表現されるデータ領域に関連付けられた測定単位の数を示します。たとえば、空間解像度の値が(10,10)で、地上データの測定単位がmである場合、各ピクセルは10m×10mの領域を示します。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

SDO_GEOR.getSpatialResolutionsファンクションの「使用上の注意」も参照してください。

例

次の例では、指定したGeoRasterオブジェクトのピラミッド・レベル2で各空間次元に沿って空間解像度の値を生成します。

SELECT sdo_geor.generateSpatialResolutions(georaster, 2, 4326, null) FROM georaster_table WHERE georid=2;

SDO_GEOR.GENERATESPATIALRESOLUTIONS(GEORASTER,2,4326,NULL)
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(.000024266, .000018006)

6.18 SDO_GEOR.generateStatistics

構文(メタデータに格納する)

SDO_GEOR.generateStatistics(
georaster            IN OUT SDO_GEORASTER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_NUMBER_ARRAY,
histogram            IN VARCHAR2,
layerNumbers     IN VARCHAR2 DEFAULT NULL,
useBin                 IN VARCHAR2 DEFAULT 'TRUE',
binFunction         IN SDO_NUMBER_ARRAY DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE'
) RETURN VARCHAR2;

または

SDO_GEOR.generateStatistics(
georaster            IN OUT SDO_GEORASTER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_GEOMETRY,
histogram            IN VARCHAR2,
layerNumbers     IN VARCHAR2 DEFAULT NULL,
useBin                 IN VARCHAR2 DEFAULT 'TRUE',
binFunction         IN SDO_NUMBER_ARRAY DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE'
) RETURN VARCHAR2;

構文(メタデータに格納しない)

SDO_GEOR.generateStatistics(
georaster            IN OUT SDO_GEORASTER,
pyramidLevel       IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_NUMBER_ARRAY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE'
) RETURN SDO_NUMBER_ARRAY;

または

SDO_GEOR.generateStatistics(
georaster            IN OUT SDO_GEORASTER,
pyramidLevel       IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_GEOMETRY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE',
polygonClip         IN VARCHAR2 DEFAULT NULL'
) RETURN SDO_NUMBER_ARRAY;

説明

1つ以上のレイヤーまたは1つ以上のレイヤーとピラミッド・レベルに関連付けられた統計データを計算します。ファンクション構文の2つのセットには、使用上の大きな違いがあります。

- メタデータに格納する構文では、指定した各レイヤー(オプションでラスター全体)のGeoRasterオブジェクト・メタデータに統計データも設定します。これらの構文は、操作の成功または失敗を示す文字列TRUEまたはFALSEを戻します。

- メタデータに格納しない構文では、GeoRasterオブジェクト・メタデータを設定せず、1つのレイヤーまたは指定したレイヤーの集計に関する統計を計算します。これらの構文は、集計された最小値、最大値、平均値、中央値、最頻値および標準偏差値を表す6つの数値を持つSDO_NUMBER_ARRAYオブジェクトを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

操作を実行するピラミッド・レベルを指定します。

samplingFactor

サンプリング係数として、1/(n*n)の分母nを'samplingFactor=n'の書式で指定します。この値は、統計の算出時に行次元と列次元の両方でスキップするセルの数を表します。たとえば、samplingFactorが4の場合はセルの16分の1が統計の算出に使用されますが、samplingFactorが1の場合はすべてのセルが統計の算出に使用されます。この数値が大きくなるほど統計の精度は下がる可能性がありますが、統計算出の速度は速くなります。

samplingWindow

数値配列またはSDO_GEOMETRYオブジェクトとして指定される、統計を生成するサンプリング・ウィンドウを指定します。データ型が(VARRAY(1048576) OF NUMBERとして定義された) SDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、それはモデル空間にあるとラスター空間に変換され、ラスター空間のジオメトリ・オブジェクトの最小境界矩形(MBR)がウィンドウとして使用されます。デフォルト値はイメージ全体です。どちらの場合も、ラスター空間のサンプリング・ウィンドウのMBRとラスター空間のGeoRasterオブジェクトのMBRの共通部分が統計の計算に使用されます。

histogram

ヒストグラムの算出と格納を行う場合はTRUEを指定し、ヒストグラムの算出と格納を行わない場合はFALSEを指定します。ヒストグラムの詳細は、「SDO_GEOR_HISTOGRAMオブジェクト型」を参照してください。<histogram>要素のXML定義およびhistogramType複合型は、「GeoRasterメタデータのXMLスキーマ」に含まれています。

layerNumbers

統計を算出するレイヤーの番号を指定します。このパラメータは文字列で指定し、数値、ハイフン(-)で示した数値の範囲、および数値と数値の範囲を区切るカンマを使用できます。たとえば、'1,3-5,7'はレイヤー1、3、4、5および7を示します。レイヤー0 (ゼロ)はオブジェクト・レイヤーを示します。

bandNumbers

値が統計の計算に使用されるレイヤーのバンド座標番号を指定します。このパラメータは文字列で指定し、数値、ハイフン(-)で示した数値の範囲、および数値と数値の範囲を区切るカンマを使用できます。たとえば、'0,1,3-5,7'はレイヤー1、2、4、5、6および8を指定します。bandNumbersがNULLの場合、統計の計算にすべてのバンドが使用されます。

useBin

統計の生成時に、指定されたビン・ファンクション(binFunctionパラメータで指定)を使用するかどうかを指定します。TRUE (デフォルト)の場合、使用されるビン・ファンクションは次の順序で決定されます。(1)binFunctionパラメータで指定されたビン・ファンクション(NULLでない場合)、(2)GeoRaster XMLメタデータの<binFunction>要素で指定されたビン・ファンクション(指定されている場合)、(3)動的に生成されたビン・ファンクション(「使用上の注意」を参照)。FALSEの場合、使用されるビン・ファンクションは動的に生成され、binFunctionパラメータおよび<binFunction>要素は無視されます。

ビン・ファンクションについては、SDO_GEOR.setBinFunctionプロシージャの「使用上の注意」を参照してください。

binFunction

ビン・タイプ、ビンの合計数、最初のビン番号、最小セル値および最大セル値を指定する要素を含む配列として、ビン・ファンクションを指定します。SDO_NUMBER_ARRAY型はVARRAY(1048576) OF NUMBERとして定義されます。SQO_GEOR.generateStatisticsのビン・ファンクションの詳細は、「使用上の注意」を参照してください。ビン・ファンクションおよび例については、SDO_GEOR.setBinFunctionプロシージャの「使用上の注意」を参照してください。

nodata

各セル値と、メタデータに定義されたNODATA値を、統計算出時に比較するかどうかを指定します。TRUEを指定した場合は、NODATA値を持つピクセルはすべて考慮されず、FALSE (デフォルト)を指定した場合は、NODATA値を持つピクセルは通常のピクセルとみなされます。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

polygonClip

文字列TRUEでは、samplingWindowジオメトリ・オブジェクトが操作で使用されますが、文字列FALSEまたはNULL値では、samplingWindowジオメトリ・オブジェクトの最小境界矩形(MBR)が操作で使用されます。

使用上の注意

このファンクションは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)の<statisticDatasetType>要素によって記述された統計データを算出して設定できます。

histogramがTRUEの場合、このファンクションは使用するビン・ファンクションに基づいて各ビンの範囲を決定し、各範囲内で各ピクセル値の合計を算出します。ヒストグラムとそのビン・ファンクションとは、各ビンがヒストグラムの(value, count)ペアにマップされると、その下限がヒストグラムの(value, count)ペアの対応する値にマップされるという関係になります。ただし、次のような例外があります。

- Min_r < Minの場合は、ヒストグラムの最初のペアとして、もう1つのペア(Min_r, count)が追加されます。(Min_rはこのファンクションによって算出されたデータセットの実際の最小値であり、Minはビン・ファンクションに指定されたmin値です。)

- Max_r > Maxの場合は、ヒストグラムの最後のペアとして、もう1つのペア(Max_r, count)が追加されます。(Max_rはこのファンクションによって算出されたデータセットの実際の最大値であり、Maxはビン・ファンクションに指定されたmax値です。)

- 先頭および末尾のペアのうちcountが0のペアは、表示されません。次に例を示します。

(1,0) (2,0) (3,11) (4,12) becomes (3,11) (4,12)
(1,11) (2,12) (3,0) (4,0) becomes (1,11) (2,12)

histogramがTRUEの場合、XMLメタデータ内の既存のヒストグラムは新しく生成されたヒストグラムに置き換えられます。

SQO_GEOR.generateStatisticsがサポートするのはLINEARビン・ファンクション(binType = 0)のみであり、LOGARITHMまたはEXPLICITビン・ファンクションはサポートされません。(すべてのビン・ファンクションが他のXML定義の詳細は、「GeoRasterメタデータのXMLスキーマ」を参照してください。)useBinパラメータ値がFALSEの場合、このファンクションではbinFunctionパラメータ値およびGeoRaster XMLメタデータの<binFunction>要素は無視され、LINEARビン・ファンクションが使用されます。LINEARビン・ファンクションのmin値およびmax値は、そのデータ・セットにおける実際の最小値および最大値であり、numbins値はセル深度によって次のようになります。

- cellDepth = 1の場合、numbins = 2

- cellDepth = 2の場合、numbins = 4

- cellDepth = 4の場合、numbins = 8

- cellDepth >= 8の場合、numbins = 256

useBinパラメータ値がTRUEの場合、このファンクションでは次のようにビン・ファンクションが使用されます。

1. binFunctionパラメータで有効なビン・ファンクションが指定されている場合は、そのファンクションが使用されます。

2. それ以外の場合で、GeoRasterメタデータに有効なビン・ファンクションが定義されていれば、そのファンクションが使用されます。

3. 前述のいずれでもない場合、useBinパラメータ値がFALSEであるときに使用されるものと同じビン・ファンクションが使用されます。

このファンクションはGeoRasterで統計を算出して(オプションで)設定しますが、設定する統計を指定する場合には、SDO_GEOR.setStatisticsプロシージャを使用します。

レイヤーに関連付けられた統計データを取得するには、SDO_GEOR.getStatisticsファンクションを使用します。

例

次の例では、統計データおよびヒストグラムを生成します。

DECLARE
gr SDO_GEORASTER;
ret VARCHAR2(256);
window SDO_NUMBER_ARRAY := SDO_NUMBER_ARRAY(20,10,50,50);
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=1 FOR UPDATE;
SDO_GEOR.setBinFunction(gr,1,sdo_number_array(0,10,1,50,200));
ret := SDO_GEOR.generateStatistics(gr, 'samplingFactor=5', window, 'TRUE',
'1-1', 'TRUE');
UPDATE georaster_table SET georaster=gr WHERE georid=1;
COMMIT;
END;
/

次の例では、ピラミッド・レベル1ですべてのバンドの統計データを生成しますが、ヒストグラムを作成したり、GeoRasterオブジェクト・メタデータを変更することはありません。

DECLARE
gr sdo_georaster;
window  sdo_geometry;
stat   sdo_number_array;
BEGIN
SELECT tmimage INTO gr FROM landsat WHERE id=2021;
stat:=sdo_geor.generateStatistics(gr,1,'samplingFactor=7',window,null,'false');
dbms_output.put_line('min='||stat(1));
dbms_output.put_line('max='||stat(2));
dbms_output.put_line('mean='||stat(3));
dbms_output.put_line('median='||stat(4));
dbms_output.put_line('mode='||stat(5));
dbms_output.put_line('std='||stat(6));
END;
/

6.19 SDO_GEOR.generateStatisticsMax

構文

SDO_GEOR.generateStatisticsMax(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_NUMBER_ARRAY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE'
) RETURN NUMBER;

または

SDO_GEOR.generateStatisticsMax(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_GEOMETRY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE',
polygonClip      IN VARCHAR2 DEFAULT NULL
) RETURN NUMBER;

説明

指定されたピラミッド・レベルで1つ以上のレイヤーに関連付けられた統計データを計算して、最大値を戻します。(GeoRasterオブジェクトのメタデータは変更されません。)

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

戻される解像度の値のピラミッド・レベルを指定します。デフォルトはピラミッド・レベル0です。

samplingFactor

サンプリング係数として、1/(n*n)の分母nを'samplingFactor=n'の書式で指定します。この値は、統計の算出時に行次元と列次元の両方でスキップするセルの数を表します。たとえば、samplingFactorが4の場合はセルの16分の1が統計の算出に使用されますが、samplingFactorが1の場合はすべてのセルが統計の算出に使用されます。この数値が大きくなるほど統計の精度は下がる可能性がありますが、統計算出の速度は速くなります。

samplingWindow

統計の生成元となる矩形ウィンドウまたはポリゴンのジオメトリ・オブジェクトを指定します。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、それはモデル空間にあるとラスター空間に変換され、polygonClip値がFALSEの場合はジオメトリ・オブジェクトのMBRがウィンドウとして使用されますが、polygonClip値がTRUEの場合はポリゴンのジオメトリ・オブジェクト(有効な場合)がウィンドウとして使用されます。データ型がSDO_GEOMETRYの場合は、SDO_SRID要件についてSDO_GEOR.generateStatisticsファンクションの「使用上の注意」も参照してください。

bandNumbers

統計を算出するレイヤーのバンド座標番号を指定します。このパラメータは文字列で指定し、数値、ハイフン(-)で示した数値の範囲、および数値と数値の範囲を区切るカンマを使用できます。たとえば、'1,3-5,7'はレイヤー2、4、5、6および8を指定します。bandNumbersがNULLの場合、統計の計算にすべてのバンドが使用されます。

nodata

各セル値と、メタデータに定義されたNODATA値を、統計算出時に比較するかどうかを指定します。TRUEを指定した場合は、NODATA値を持つピクセルはすべて考慮されず、FALSE (デフォルト)を指定した場合は、NODATA値を持つピクセルは通常のピクセルとみなされます。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

polygonClip

文字列TRUEでは、samplingWindowジオメトリ・オブジェクトが操作で使用されますが、文字列FALSEまたはNULL値では、samplingWindowジオメトリ・オブジェクトの最小境界矩形(MBR)が操作で使用されます。

使用上の注意

このファンクションは、統計データを計算してMAX値を戻します。(統計データは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)の<statisticDatasetType> 要素によって記述されますが、このファンクションではメタデータは更新されません。)

SDO_GEOR.generateStatisticsファンクションも参照してください。

例

次の例では、ピラミッド・レベル1ですべてのバンドの統計データを計算して、最大値を戻します。

DECLARE
gr sdo_georaster;
window sdo_geometry;
max number;
BEGIN
SELECT tmimage INTO gr FROM landsat WHERE id=2021;
max:=sdo_geor.generateStatisticsMax(gr,1,'samplingFactor=7',window,null,'false');
END;
/

6.20 SDO_GEOR.generateStatisticsMean

構文

SDO_GEOR.generateStatisticsMean(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_NUMBER_ARRAY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE'
) RETURN NUMBER;

または

SDO_GEOR.generateStatisticsMean(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_GEOMETRY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE',
polygonClip      IN VARCHAR2 DEFAULT NULL
) RETURN NUMBER;

説明

指定されたピラミッド・レベルで1つ以上のレイヤーに関連付けられた統計データを計算して、平均値を戻します。(GeoRasterオブジェクトのメタデータは変更されません。)

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

戻される解像度の値のピラミッド・レベルを指定します。デフォルトはピラミッド・レベル0です。

samplingFactor

サンプリング係数として、1/(n*n)の分母nを'samplingFactor=n'の書式で指定します。この値は、統計の算出時に行次元と列次元の両方でスキップするセルの数を表します。たとえば、samplingFactorが4の場合はセルの16分の1が統計の算出に使用されますが、samplingFactorが1の場合はすべてのセルが統計の算出に使用されます。この数値が大きくなるほど統計の精度は下がる可能性がありますが、統計算出の速度は速くなります。

samplingWindow

統計の生成元となる矩形ウィンドウまたはポリゴンのジオメトリ・オブジェクトを指定します。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、それはモデル空間にあるとラスター空間に変換され、polygonClip値がFALSEの場合はジオメトリ・オブジェクトのMBRがウィンドウとして使用されますが、polygonClip値がTRUEの場合はポリゴンのジオメトリ・オブジェクト(有効な場合)がウィンドウとして使用されます。データ型がSDO_GEOMETRYの場合は、SDO_SRID要件についてSDO_GEOR.generateStatisticsファンクションの「使用上の注意」も参照してください。

bandNumbers

統計を算出するレイヤーのバンド座標番号を指定します。このパラメータは文字列で指定し、数値、ハイフン(-)で示した数値の範囲、および数値と数値の範囲を区切るカンマを使用できます。たとえば、'1,3-5,7'はレイヤー2、4、5、6および8を指定します。bandNumbersがNULLの場合、統計の計算にすべてのバンドが使用されます。

nodata

各セル値と、メタデータに定義されたNODATA値を、統計算出時に比較するかどうかを指定します。TRUEを指定した場合は、NODATA値を持つピクセルはすべて考慮されず、FALSE (デフォルト)を指定した場合は、NODATA値を持つピクセルは通常のピクセルとみなされます。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

polygonClip

文字列TRUEでは、samplingWindowジオメトリ・オブジェクトが操作で使用されますが、文字列FALSEまたはNULL値では、samplingWindowジオメトリ・オブジェクトの最小境界矩形(MBR)が操作で使用されます。

使用上の注意

このファンクションは、統計データを計算してMEAN値を戻します。(統計データは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)の<statisticDatasetType> 要素によって記述されますが、このファンクションではメタデータは更新されません。)

SDO_GEOR.generateStatisticsファンクションも参照してください。

例

次の例では、ピラミッド・レベル1ですべてのバンドの統計データを計算して、平均値を戻します。

DECLARE
gr sdo_georaster;
window sdo_geometry;
mean number;
BEGIN
SELECT tmimage INTO gr FROM landsat WHERE id=2021;
mean:=sdo_geor.generateStatisticsMean(gr,1,'samplingFactor=7',window,null,'false');
END;
/

6.21 SDO_GEOR.generateStatisticsMedian

構文

SDO_GEOR.generateStatisticsMedian(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_NUMBER_ARRAY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE'
) RETURN NUMBER;

または

SDO_GEOR.generateStatisticsMedian(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_GEOMETRY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE',
polygonClip      IN VARCHAR2 DEFAULT NULL
) RETURN NUMBER;

説明

指定されたピラミッド・レベルで1つ以上のレイヤーに関連付けられた統計データを計算して、中央値を戻します。(GeoRasterオブジェクトのメタデータは変更されません。)

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

戻される解像度の値のピラミッド・レベルを指定します。デフォルトはピラミッド・レベル0です。

samplingFactor

サンプリング係数として、1/(n*n)の分母nを'samplingFactor=n'の書式で指定します。この値は、統計の算出時に行次元と列次元の両方でスキップするセルの数を表します。たとえば、samplingFactorが4の場合はセルの16分の1が統計の算出に使用されますが、samplingFactorが1の場合はすべてのセルが統計の算出に使用されます。この数値が大きくなるほど統計の精度は下がる可能性がありますが、統計算出の速度は速くなります。

samplingWindow

統計の生成元となる矩形ウィンドウまたはポリゴンのジオメトリ・オブジェクトを指定します。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、それはモデル空間にあるとラスター空間に変換され、polygonClip値がFALSEの場合はジオメトリ・オブジェクトのMBRがウィンドウとして使用されますが、polygonClip値がTRUEの場合はポリゴンのジオメトリ・オブジェクト(有効な場合)がウィンドウとして使用されます。データ型がSDO_GEOMETRYの場合は、SDO_SRID要件についてSDO_GEOR.generateStatisticsファンクションの「使用上の注意」も参照してください。

bandNumbers

統計を算出するレイヤーのバンド座標番号を指定します。このパラメータは文字列で指定し、数値、ハイフン(-)で示した数値の範囲、および数値と数値の範囲を区切るカンマを使用できます。たとえば、'1,3-5,7'はレイヤー2、4、5、6および8を指定します。bandNumbersがNULLの場合、統計の計算にすべてのバンドが使用されます。

nodata

各セル値と、メタデータに定義されたNODATA値を、統計算出時に比較するかどうかを指定します。TRUEを指定した場合は、NODATA値を持つピクセルはすべて考慮されず、FALSE (デフォルト)を指定した場合は、NODATA値を持つピクセルは通常のピクセルとみなされます。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

polygonClip

文字列TRUEでは、samplingWindowジオメトリ・オブジェクトが操作で使用されますが、文字列FALSEまたはNULL値では、samplingWindowジオメトリ・オブジェクトの最小境界矩形(MBR)が操作で使用されます。

使用上の注意

このファンクションは、統計データを計算してMEDIAN値を戻します。(統計データは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)の<statisticDatasetType> 要素によって記述されますが、このファンクションではメタデータは更新されません。)

SDO_GEOR.generateStatisticsファンクションも参照してください。

例

次の例では、ピラミッド・レベル1ですべてのバンドの統計データを計算して、中央値を戻します。

DECLARE
gr sdo_georaster;
window sdo_geometry;
median number;
BEGIN
SELECT tmimage INTO gr FROM landsat WHERE id=2021;
median:=sdo_geor.generateStatisticsMedian(gr,1,'samplingFactor=7',window,null,'false');
END;
/

6.22 SDO_GEOR.generateStatisticsMin

構文

SDO_GEOR.generateStatisticsMin(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_NUMBER_ARRAY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE'
) RETURN NUMBER;

または

SDO_GEOR.generateStatisticsMin(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_GEOMETRY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE',
polygonClip      IN VARCHAR2 DEFAULT NULL
) RETURN NUMBER;

説明

指定されたピラミッド・レベルで1つ以上のレイヤーに関連付けられた統計データを計算して、最小値を戻します。(GeoRasterオブジェクトのメタデータは変更されません。)

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

戻される解像度の値のピラミッド・レベルを指定します。デフォルトはピラミッド・レベル0です。

samplingFactor

サンプリング係数として、1/(n*n)の分母nを'samplingFactor=n'の書式で指定します。この値は、統計の算出時に行次元と列次元の両方でスキップするセルの数を表します。たとえば、samplingFactorが4の場合はセルの16分の1が統計の算出に使用されますが、samplingFactorが1の場合はすべてのセルが統計の算出に使用されます。この数値が大きくなるほど統計の精度は下がる可能性がありますが、統計算出の速度は速くなります。

samplingWindow

統計の生成元となる矩形ウィンドウまたはポリゴンのジオメトリ・オブジェクトを指定します。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、それはモデル空間にあるとラスター空間に変換され、polygonClip値がFALSEの場合はジオメトリ・オブジェクトのMBRがウィンドウとして使用されますが、polygonClip値がTRUEの場合はポリゴンのジオメトリ・オブジェクト(有効な場合)がウィンドウとして使用されます。データ型がSDO_GEOMETRYの場合は、SDO_SRID要件についてSDO_GEOR.generateStatisticsファンクションの「使用上の注意」も参照してください。

bandNumbers

統計を算出するレイヤーのバンド座標番号を指定します。このパラメータは文字列で指定し、数値、ハイフン(-)で示した数値の範囲、および数値と数値の範囲を区切るカンマを使用できます。たとえば、'1,3-5,7'はレイヤー2、4、5、6および8を指定します。bandNumbersがNULLの場合、統計の計算にすべてのバンドが使用されます。

nodata

各セル値と、メタデータに定義されたNODATA値を、統計算出時に比較するかどうかを指定します。TRUEを指定した場合は、NODATA値を持つピクセルはすべて考慮されず、FALSE (デフォルト)を指定した場合は、NODATA値を持つピクセルは通常のピクセルとみなされます。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

polygonClip

文字列TRUEでは、samplingWindowジオメトリ・オブジェクトが操作で使用されますが、文字列FALSEまたはNULL値では、samplingWindowジオメトリ・オブジェクトの最小境界矩形(MBR)が操作で使用されます。

使用上の注意

このファンクションは、統計データを計算してMIN値を戻します。(統計データは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)の<statisticDatasetType> 要素によって記述されますが、このファンクションではメタデータは更新されません。)

SDO_GEOR.generateStatisticsファンクションも参照してください。

例

次の例では、ピラミッド・レベル1ですべてのバンドの統計データを計算して、最小値を戻します。

DECLARE
gr sdo_georaster;
window sdo_geometry;
min number;
BEGIN
SELECT tmimage INTO gr FROM landsat WHERE id=2021;
min:=sdo_geor.generateStatisticsMin(gr,1,'samplingFactor=7',window,null,'false');
END;
/

6.23 SDO_GEOR.generateStatisticsMode

構文

SDO_GEOR.generateStatisticsMode(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_NUMBER_ARRAY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE'
) RETURN NUMBER;

または

SDO_GEOR.generateStatisticsMode(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_GEOMETRY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE',
polygonClip      IN VARCHAR2 DEFAULT NULL
) RETURN NUMBER;

説明

指定されたピラミッド・レベルで1つ以上のレイヤーに関連付けられた統計データを計算して、最頻値(最も頻繁に出現する値)を戻します。(GeoRasterオブジェクトのメタデータは変更されません。)

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

戻される解像度の値のピラミッド・レベルを指定します。デフォルトはピラミッド・レベル0です。

samplingFactor

サンプリング係数として、1/(n*n)の分母nを'samplingFactor=n'の書式で指定します。この値は、統計の算出時に行次元と列次元の両方でスキップするセルの数を表します。たとえば、samplingFactorが4の場合はセルの16分の1が統計の算出に使用されますが、samplingFactorが1の場合はすべてのセルが統計の算出に使用されます。この数値が大きくなるほど統計の精度は下がる可能性がありますが、統計算出の速度は速くなります。

samplingWindow

統計の生成元となる矩形ウィンドウまたはポリゴンのジオメトリ・オブジェクトを指定します。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、それはモデル空間にあるとラスター空間に変換され、polygonClip値がFALSEの場合はジオメトリ・オブジェクトのMBRがウィンドウとして使用されますが、polygonClip値がTRUEの場合はポリゴンのジオメトリ・オブジェクト(有効な場合)がウィンドウとして使用されます。データ型がSDO_GEOMETRYの場合は、SDO_SRID要件についてSDO_GEOR.generateStatisticsファンクションの「使用上の注意」も参照してください。

bandNumbers

統計を算出するレイヤーのバンド座標番号を指定します。このパラメータは文字列で指定し、数値、ハイフン(-)で示した数値の範囲、および数値と数値の範囲を区切るカンマを使用できます。たとえば、'1,3-5,7'はレイヤー2、4、5、6および8を指定します。bandNumbersがNULLの場合、統計の計算にすべてのバンドが使用されます。

nodata

各セル値と、メタデータに定義されたNODATA値を、統計算出時に比較するかどうかを指定します。TRUEを指定した場合は、NODATA値を持つピクセルはすべて考慮されず、FALSE (デフォルト)を指定した場合は、NODATA値を持つピクセルは通常のピクセルとみなされます。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

polygonClip

文字列TRUEでは、samplingWindowジオメトリ・オブジェクトが操作で使用されますが、文字列FALSEまたはNULL値では、samplingWindowジオメトリ・オブジェクトの最小境界矩形(MBR)が操作で使用されます。

使用上の注意

このファンクションは、統計データを計算してMODEVALUE値を戻します。(統計データは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)の<statisticDatasetType> 要素によって記述されますが、このファンクションではメタデータは更新されません。)

SDO_GEOR.generateStatisticsファンクションも参照してください。

例

次の例では、ピラミッド・レベル1ですべてのバンドの統計データを計算して、最頻値を戻します。

DECLARE
gr sdo_georaster;
window sdo_geometry;
mode number;
BEGIN
SELECT tmimage INTO gr FROM landsat WHERE id=2021;
mode:=sdo_geor.generateStatisticsMode(gr,1,'samplingFactor=7',window,null,'false');
END;
/

6.24 SDO_GEOR.generateStatisticsSTD

構文

SDO_GEOR.generateStatisticsSTD(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_NUMBER_ARRAY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE'
) RETURN NUMBER;

または

SDO_GEOR.generateStatisticsSTD(
georaster            IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
samplingFactor   IN VARCHAR2,
samplingWindow IN SDO_GEOMETRY,
bandNumbers     IN VARCHAR2 DEFAULT NULL,
nodata                IN VARCHAR2 DEFAULT 'FALSE',
polygonClip      IN VARCHAR2 DEFAULT NULL
) RETURN NUMBER;

説明

指定されたピラミッド・レベルで1つ以上のレイヤーに関連付けられた統計データを計算して、標準偏差値を戻します。(GeoRasterオブジェクトのメタデータは変更されません。)

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

戻される解像度の値のピラミッド・レベルを指定します。デフォルトはピラミッド・レベル0です。

samplingFactor

サンプリング係数として、1/(n*n)の分母nを'samplingFactor=n'の書式で指定します。この値は、統計の算出時に行次元と列次元の両方でスキップするセルの数を表します。たとえば、samplingFactorが4の場合はセルの16分の1が統計の算出に使用されますが、samplingFactorが1の場合はすべてのセルが統計の算出に使用されます。この数値が大きくなるほど統計の精度は下がる可能性がありますが、統計算出の速度は速くなります。

samplingWindow

統計の生成元となる矩形ウィンドウまたはポリゴンのジオメトリ・オブジェクトを指定します。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、それはモデル空間にあるとラスター空間に変換され、polygonClip値がFALSEの場合はジオメトリ・オブジェクトのMBRがウィンドウとして使用されますが、polygonClip値がTRUEの場合はポリゴンのジオメトリ・オブジェクト(有効な場合)がウィンドウとして使用されます。データ型がSDO_GEOMETRYの場合は、SDO_SRID要件についてSDO_GEOR.generateStatisticsファンクションの「使用上の注意」も参照してください。

bandNumbers

統計を算出するレイヤーのバンド座標番号を指定します。このパラメータは文字列で指定し、数値、ハイフン(-)で示した数値の範囲、および数値と数値の範囲を区切るカンマを使用できます。たとえば、'1,3-5,7'はレイヤー2、4、5、6および8を指定します。bandNumbersがNULLの場合、統計の計算にすべてのバンドが使用されます。

nodata

各セル値と、メタデータに定義されたNODATA値を、統計算出時に比較するかどうかを指定します。TRUEを指定した場合は、NODATA値を持つピクセルはすべて考慮されず、FALSE (デフォルト)を指定した場合は、NODATA値を持つピクセルは通常のピクセルとみなされます。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

polygonClip

文字列TRUEでは、samplingWindowジオメトリ・オブジェクトが操作で使用されますが、文字列FALSEまたはNULL値では、samplingWindowジオメトリ・オブジェクトの最小境界矩形(MBR)が操作で使用されます。

使用上の注意

このファンクションは、統計データを計算してSTD値を戻します。(統計データは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)の<statisticDatasetType> 要素によって記述されますが、このファンクションではメタデータは更新されません。)

SDO_GEOR.generateStatisticsファンクションも参照してください。

例

次の例では、ピラミッド・レベル1ですべてのバンドの統計データを計算して、標準偏差値を戻します。

DECLARE
gr sdo_georaster;
window sdo_geometry;
std number;
BEGIN
SELECT tmimage INTO gr FROM landsat WHERE id=2021;
std:=sdo_geor.generateStatisticsSTD(gr,1,'samplingFactor=7',window,null,'false');
END;
/

6.25 SDO_GEOR.georeference

構文(プロシージャ)

SDO_GEOR.georeference(
georaster                           IN OUT SDO_GEORASTER,
srid                                     IN NUMBER,
modelCoordinateLocation  IN NUMBER,
xCoefficients                        IN SDO_NUMBER_ARRAY,
yCoefficients                        IN SDO_NUMBER_ARRAY);

構文(ファンクション)

SDO_GEOR.georeference(
georaster                          IN OUT SDO_GEORASTER,
FFMethodType                 IN VARCHAR2,
nGCP                                IN NUMBER,
GCPs                                IN SDO_GEOR_GCP_COLLECTION,
storeGCP                          IN VARCHAR2 DEFAULT 'TRUE',
srid                                    IN NUMBER DEFAULT NULL,
modelCoordinateLocation IN NUMBER DEFAULT NULL,
setResolution                    IN VARCHAR2 DEFAULT NULL
) RETURN SDO_NUMBER_ARRAY;

または

SDO_GEOR.georeference(
georaster                          IN OUT SDO_GEORASTER,
gcpGeorefModel               IN SDO_GEOR_GCPGEOREFTYPE,
storeGCP                          IN VARCHAR2 DEFAULT 'TRUE',
srid                                    IN NUMBER DEFAULT NULL,
modelCoordinateLocation IN NUMBER DEFAULT NULL,
setResolution                    IN VARCHAR2 DEFAULT NULL
) RETURN SDO_NUMBER_ARRAY;

または

SDO_GEOR.georeference(
georaster                          IN OUT SDO_GEORASTER,
FFMethodType                 IN VARCHAR2 DEFAULT NULL,
srid                                    IN NUMBER DEFAULT NULL,
modelCoordinateLocation IN NUMBER DEFAULT NULL,
setResolution                    IN VARCHAR2 DEFAULT NULL
) RETURN SDO_NUMBER_ARRAY;

説明

プロシージャとして、アフィン変換の指定された係数を使用してセルからモデルへ変換し、GeoRasterオブジェクトを地理参照します。ファンクションとして、データベースに格納されているか、パラメータに指定された地上基準点(GCP)を使用して、サポートされるジオメトリ・モデルのいずれかのソリューションを戻します。

パラメータ

georaster

地理参照するSDO_GEORASTERオブジェクトを指定します。

srid

モデル座標系を指定します。プロシージャではNULLまたは0 (ゼロ)にすることはできず、ファンクションではNULLにできます。MDSYS.CS_SRS表のSRID列の値を指定できます。MDSYS.CS_SRS表のSRID列の値を指定しない場合、Oracle Spatial and GraphでSRIDがサポートされず、SRID関連の一部の操作もサポートされない場合があります。

modelCoordinateLocation

セルによって表現される領域のベースのモデル位置を示す値を指定します。CENTERの場合は0、UPPERLEFTの場合は1を指定します。

xCoefficients

計算の係数値A、BおよびCを示す配列を指定します(「使用上の注意」を参照)。

yCoefficients

計算の係数値D、EおよびFを示す配列を指定します(「使用上の注意」を参照)。

FFMethodType

地理参照ジオメトリ・モデルとして使用される多項式または有理多項式関数を指定します。Affine、QuadraticPolynomial、CubicPolynomial、DLT、QuadraticRationalまたはRPCのいずれかのいずれかの文字列値を指定する必要があります。

gcpGeorefModel

FFMethodType、nGCP、GCPs、solutionAccuracyを含むオブジェクトを指定します。

nGCP

GCPコレクション内の地上基準点の数(GCPsパラメータ)。

GCPs

SDO_GEOR_GCP_COLLECTION型のGCPコレクション(「SDO_GEOR_GCP_ COLLECTIONオブジェクト型」を参照)。

storeGCP

GCPをGeoRasterメタデータに格納する必要があるかどうかを示すフラグを指定します。文字列TRUE (デフォルト)では、GeoRasterメタデータに点が格納されますが、文字列FALSEではGeoRasterメタデータに点が格納されません。

setResolution

空間解像度を計算してGeoRasterメタデータに格納するかどうかを示すフラグを指定します。文字列FALSEまたはNULL値では、GeoRasterメタデータに空間解像度が格納されませんが、文字列TRUEではGeoRasterメタデータに空間解像度が格納されます。

使用上の注意

プロシージャ構文の注意

このプロシージャは、既存のアフィン変換に基づいてGeoRasterオブジェクトを地理参照する場合に使用します。地理参照の詳細は、「地理参照」および「GeoRasterオブジェクトの地理参照」を参照してください。

このプロシージャでは、ソース・データ(ESRIワールド・ファイルなど)に含まれる元の地理参照情報内では、変換計算式が次のようになると想定しています。

x = A * column + B * row + C
y = D * column + E * row + F

前述のA、B、C、D、EおよびF係数を、SDO_GEOR.georeferenceプロシージャに指定します。これらの係数は内部で自動調整され、適切な地理参照結果の係数a、b、c、d、eおよびfが生成されます。計算式は次のとおりです。

row    = a + b * x + c * y
column = d + e * x + f * y

計算式の各変数の意味は、次のとおりです。

- rowは、ラスター空間内のセルの行索引です。

- columnは、ラスター空間内のセルの列索引です。

- xは、地上またはモデル空間内の点の東西方向の位置です。

- yは、地上またはモデル空間内の点の南北方向の位置です。

- a、b、c、d、eおよびfは係数で、GeoRaster SRSメタデータに格納されます。

- b*f – c*eは、0 (ゼロ)以外である必要があります。

これらの計算式において、b = 0、f = 0、c = -eで、cとeの両方が0 (ゼロ)以外の場合、ラスター・データは幾何補正されます。この場合の計算式は次のようになります。

row    = a + c * y
column = d - c * x

このプロシージャは、GeoRasterオブジェクトの空間解像度を設定します。

次のプロシージャおよびツールも、地理参照に関連する処理を実行します。

- SDO_GEOR.setSRSプロシージャ: 地理参照情報を設定または削除します。

- SDO_GEOR.importFromプロシージャ: ファイルまたはCLOBオブジェクトから、ESRIワールド・ファイルまたはDigital Globe RPCファイルをロードできます。また、GeoTIFFファイルからの地理メタデータのロードも行われます。

- GeoRasterローダー・ツール(「GeoRasterツール: ローダー、ビューア、エクスポータ」を参照): ESRIワールド・ファイル、Digital Globe RPCファイルまたはGeoTIFFファイルをロードできます。

ファンクション構文の注意(GCPとともに使用する場合)

このファンクションは、データベースに格納されているか、パラメータに指定されたGCPを使用して、特定のジオメトリ・モデル(FFMethodType)のソリューションを計算し、そのソリューションをGeoRaster関数フィッティング・モデルに格納します。

戻される配列には、RMS値と残差が含まれ、その順序は、基準点を使用して計算されたソリューションの精度(rowRMS, colRMS, totalRMS)、チェック・ポイントを使用して計算された地上位置決めの精度(xRMS, yRMS, zRMS, modelTotalRMS)、基準点を使用して計算された地上位置決めの精度(xRMS, yRMS, zRMS, modelTotalRMS)および(チェック・ポイントではなく)基準点ごとの(xResidual, yResidual)です。残差の順序は、XMLメタデータに格納されている基準点と同じです(ID値が数値の場合、必ずしも基準点のID値の順番ではありません)。

戻される値は常に17以上あります(3つ以上の基準点があると仮定)。–1.0の位置精度(RMS)は、その値が存在しないことを意味します。2次元ジオメトリ・モデルでは、zRMS値は常に–1.0で、それ以外の場合、zRMS値は現在のリリースでは常に0です。

GCPは、GeoRasterメタデータから取得するか、GCP関連のオブジェクト型を使用して提供できます。

GCP情報のないインタフェースでは(gcpGeorefModelパラメータなしの形式)、GCPがGeoRasterオブジェクトのメタデータに格納されると仮定されます。GCPが格納されていない場合、または指定したモデルにとって十分なGCPが格納されていない場合、例外が発生します。

このファンクション・コールの後、GeoRasterオブジェクトが地理参照され、関数フィッティング・モデルの係数がGeoRaster SRSメタデータ構成要素に設定されます。

GCPを使用した地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

例

次の例では、アフィン変換の係数を直接使用してセルからモデルへ変換し、GeoRasterオブジェクトを地理参照します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr sdo_georaster;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid = 1 FOR UPDATE;
sdo_geor.georeference(gr, 82394, 0,
sdo_number_array(28.5, 0, 1232804.04),
sdo_number_array(0, -28.5, 13678.09));
UPDATE georaster_table SET georaster = gr WHERE georid = 1;
COMMIT;
END;
/

PL/SQL procedure successfully completed.

SET NUMWIDTH 20
SELECT georid, sdo_geor.getSRS(georaster) SRS FROM georaster_table
WHERE georid = 1;

GEORID
--------------------
SRS(ISREFERENCED, ISRECTIFIED, ISORTHORECTIFIED, SRID,
SPATIALRESOLUTION, SPATIA
--------------------------------------------------------------------------------

1
SDO_GEOR_SRS('TRUE', 'TRUE', NULL, 82394, SDO_NUMBER_ARRAY(28.5, 28.5), NULL, NU
LL, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, NULL, NULL, NULL, SDO_NUMBER_ARRAY(1, 2, 1, 3,
479.93298245614, 0, -.0350877192982456), SDO_NUMBER_ARRAY(1, 0, 0, 1, 1), SDO_N
UMBER_ARRAY(1, 2, 1, 3, -43256.2821052632, .0350877192982456, 0), SDO_NUMBER_ARR
AY(1, 0, 0, 1, 1))

元のラスター・データが幾何補正される場合、および左上角のセルの中心点のモデル座標が(x0, y0)で、その空間解像度がsである場合、前述の例のコードを直接使用して、28.5をsに、1232804.04をx0に、13678.09をy0に置換することで、GeoRasterオブジェクトを地理参照できます。ラスターの適切に定義された正確なエンベロープや中心点のモデル座標など、GeoRasterオブジェクトに関する他の情報がある場合、(x0, y0)および空間解像度sを計算し、同じアプローチを使用してオブジェクトを地理参照できます。

次の例では、地上基準点(GCP)の情報を使用してGeoRasterオブジェクトを地理参照します。

DECLARE
gr1                 sdo_georaster;
gr2                  sdo_georaster;
georefModel   SDO_GEOR_GCPGEOREFTYPE;
GCPs              SDO_GEOR_GCP_COLLECTION;
rms                  sdo_number_array;
BEGIN
SELECT georaster INTO gr1 from georaster_table WHERE georid=10 FOR UPDATE;

GCPs := SDO_GEOR_GCP_COLLECTION(
SDO_GEOR_GCP('1', '', 1,
2, sdo_number_array(25.625000, 73.875000),
2, sdo_number_array(237036.937500, 897987.187500),
NULL, NULL),
SDO_GEOR_GCP('2', '', 1,
2, sdo_number_array(100.625000, 459.125000),
2, sdo_number_array(237229.562500, 897949.687500),
NULL, NULL),
SDO_GEOR_GCP('3', '', 1,
2, sdo_number_array(362.375000, 77.875000),
2, sdo_number_array(237038.937500, 897818.812500),
NULL, NULL),
SDO_GEOR_GCP('4', '', 1,
2, sdo_number_array(478.875000, 402.125000),
2, sdo_number_array(237201.062500, 897760.562500),
NULL, NULL),
SDO_GEOR_GCP('5', '', 2,
2, sdo_number_array(167.470583,  64.030686),
2, sdo_number_array(237032.015343, 897916.264708),
NULL, NULL),
SDO_GEOR_GCP('6', '', 2,
2, sdo_number_array(101.456177,  257.915534),
2, sdo_number_array(237128.957767, 897949.271912),
NULL, NULL)
);

georefModel := SDO_GEOR_GCPGEOREFTYPE('Affine',
GCPs.count, GCPs, NULL);

rms := sdo_geor.georeference(gr1, georefModel, 'FALSE', 26986, 1);
UPDATE georaster_table SET georaster=gr1 WHERE georid=10;
COMMIT;
END;
/

6.26 SDO_GEOR.getBandDimSize

構文

SDO_GEOR.getBandDimSize(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトのバンド数を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

バンドの詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。

georasterまたはそのメタデータがNULLの場合、このファンクションはNULL値を戻します。

例

次の例では、GeoRasterオブジェクトの空間次元サイズおよびバンド数(この例では1)を戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。結果は、読みやすいように形式を変更しています。)

SELECT sdo_geor.getSpatialDimSizes(georaster) spatialDimSizes,
sdo_geor.getBandDimSize(georaster) bandDimSize
FROM georaster_table WHERE georid=21;

SPATIALDIMSIZES                  BANDDIMSIZE
--------------------------       -----------
SDO_NUMBER_ARRAY(512, 512)           1

6.27 SDO_GEOR.getBeginDateTime

構文

SDO_GEOR.getBeginDateTime(
georaster  IN SDO_GEORASTER
) RETURN TIMESTAMP WITH TIME ZONE;

説明

GeoRasterオブジェクトのメタデータから、ラスター・データ収集の開始日時を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

GeoRasterオブジェクトのメタデータで、ラスター・データ収集の開始日時を設定するには、SDO_GEOR.setBeginDateTimeプロシージャを使用します。

georasterまたはそのメタデータがNULLの場合、このファンクションはNULL値を戻します。

例

次の例では、GEORASTER_TABLEという表で、値4のGEORID列に含まれているGeoRasterオブジェクトのメタデータから、ラスター・データ収集の開始日時および終了日時を戻します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT sdo_geor.getBeginDateTime(georaster) beginDateTime,
sdo_geor.getEndDateTime(georaster) endDateTime
FROM georaster_table WHERE georid=4;

BEGINDATETIME
---------------------------------------------------------------------------
ENDDATETIME
---------------------------------------------------------------------------
01-JAN-00 05.00.00.000000000 AM +00:00
15-NOV-02 08.00.00.000000000 PM +00:00

6.28 SDO_GEOR.getBinFunction

構文

SDO_GEOR.getBinFunction(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER      ) RETURN SDO_NUMBER_ARRAY;

説明

レイヤーに関連付けられたビン・ファンクションを取得します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

ビン・タイプを戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、ビン・タイプ、ビンの合計数、最初のビン番号、最小セル値および最大セル値を指定する要素を含む配列として、ビン・ファンクションを戻します。SDO_NUMBER_ARRAY型はVARRAY(1048576) OF NUMBERとして定義されます。

ビン・タイプがEXPLICITの場合、外部ビン表が使用され、このファンクションではNULL値が戻されます。

ビン・ファンクションの構文については、SDO_GEOR.setBinFunctionプロシージャの「使用上の注意」を参照してください。

layerNumberがNULL、負、またはレイヤーの最大番号より大きい値の場合、例外が発生します。

例

次の例では、指定したGeoRasterオブジェクトのレイヤー3のビン・ファンクションを取得します。

SELECT sdo_geor.getBinFunction(georaster,3) FROM georaster_table WHERE georid=4;

SDO_GEOR.GETBINFUNCTION(GEORASTER,3)
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(0, 10, 1, 0, 511)

6.29 SDO_GEOR.getBinTable

構文

SDO_GEOR.getBinTable(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

レイヤーに関連付けられたビン表の名前を戻します。

注意:

今回のリリースのGeoRasterでは、ビン表を使用した操作は実行されません。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

ビン表の名前を戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、ビン・タイプがEXPLICITの場合にのみ有効です。ビン・タイプを取得するには、SDO_GEOR.getBinTypeファンクションを使用します。

レイヤーにビン表を指定するには、SDO_GEOR.setBinTableプロシージャを使用します。

SDO_GEOR.getBinTypeファンクションの「使用上の注意」も参照してください。

georasterまたはそのメタデータがNULLの場合、このファンクションはNULL値を戻します。

layerNumberがNULL、負、またはレイヤーの最大番号より大きい値の場合、例外が発生します。

例

次の例では、GEORASTER_TABLEという表で、指定されたGeoRasterオブジェクトのレイヤー番号4のビン表の名前を戻します。GEORASTER_TABLE表の定義は「記憶域パラメータ」の例1-1の次に説明されています。

SELECT sdo_geor.getBinTable(georaster, 4) FROM georaster_table WHERE georid=4;

6.30 SDO_GEOR.getBinType

構文

SDO_GEOR.getBinType(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

レイヤーに関連付けられたビン・タイプを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

ビン・タイプを戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、LINEAR、LOGARITHMまたはEXPLICITのいずれかのビン・タイプ値を戻します。

LINEARビン・タイプの定義は次のとおりです。

binNumber = numbins * (cellValue - min) / (max - min) + firstBinNumber
if (binNumber less than 0) binNumber =  firstBinNumber
if (binNumber greater than or equal to numbins) binNumber = numbins + firstBinNumber - 1

LOGARITHMビン・タイプの定義は次のとおりです。

binNumber = numbins * (ln (1.0 + ((cellValue - min)/(max - min)))/ ln (2.0)) + firstBinNumber
if (binNumber less than 0) binNumber =  firstBinNumber
if (binNumber greater than or equal to numbins) binNumber = numbins + firstBinNumber - 1

EXPLICITビン・タイプの場合、各ビンの値(または値の範囲)はビン表に格納されます(この表は、SDO_GEOR.setBinTableプロシージャで設定し、SDO_GEOR.getBinTableファンクションで取得できます)。

ビン・ファンクションは、GeoRasterセルの値または値の範囲を、特定のビン番号にマップします。ビン番号はすべて整数です。GeoRasterでは、ビン・ファンクションの操作および処理を行うインタフェースは提供されません。

georasterまたはそのメタデータがNULLの場合、このファンクションはNULL値を戻します。

layerNumberがNULL、負、またはレイヤーの最大番号より大きい値の場合、例外が発生します。

例

次の例では、GeoRasterオブジェクトのレイヤー0および1のビン・タイプを戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。結果は、読みやすいように形式を変更しています。)

SELECT substr(sdo_geor.getBinType(georaster, 0),1,20) binType0,
substr(sdo_geor.getBinType(georaster, 1),1,20) binType1
FROM georaster_table WHERE georid=4;

BINTYPE0        BINTYPE1
--------------- ---------------
EXPLICIT        LINEAR

6.31 SDO_GEOR.getBitmapMask

構文

SDO_GEOR.getBitmapMask(
georaster         IN SDO_GEORASTER,
layerNumber    IN NUMBER,
storageParam  IN VARCHAR2,
mask                IN OUT SDO_GEORASTER);

説明

GeoRasterオブジェクトまたはGeoRasterオブジェクト内のレイヤーに関連付けられたビットマップ・マスクを取得します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

操作を実行するレイヤー・レベルを指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

mask

ビットマップ・マスクを格納する結果のGeoRasterオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)入力されたGeoRasterオブジェクト(georasterパラメータ)と同じGeoRasterオブジェクトは指定できません。

使用上の注意

指定したGeoRasterオブジェクトのレイヤーにビットマップ・マスクが関連付けられていない場合、結果のGeoRasterオブジェクトは更新されません。

storageParamパラメータがNULLの場合、結果のGeoRasterオブジェクトのcelldepth値は1BITセル深度になり、圧縮タイプはDEFLATEになり(入力されたGeoRasterオブジェクトが圧縮されている場合)、インターリーブ・タイプおよびブロック・サイズは入力されたGeoRasterオブジェクトと同じになります。また、入力されたGeoRasterオブジェクトにピラミッドが作成されている場合は、すべてのビットマップ・マスク・ピラミッドも含まれます。

ビットマップ・マスクには、空のラスター・ブロック(「空のラスター・ブロック」を参照)が含まれる場合があります。再ブロック化により部分的に空のラスター・ブロックが発生する場合、空のラスター・ブロックから導出されて部分的に空になるブロックのセルには、値0 (ゼロ)が埋め込まれます。

ビットマップ・マスクの詳細は、「ビットマップ・マスク」を参照してください。

例

次の例では、指定したGeoRasterオブジェクトのオブジェクト・レイヤーに関連付けられたビットマップ・マスクを取得します。

DECLARE
gr sdo_georaster;
mk sdo_georaster;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=4;
INSERT INTO georaster_table (georid, georaster)
VALUES (100, sdo_geor.init('rdt_1', 100))
RETURNING georaster INTO mk;
sdo_geor.getBitmapMask(gr, 0, 'compression=none', mk);
UPDATE georaster_table SET georaster=mk WHERE georid=100;
COMMIT;
END;
/

6.32 SDO_GEOR.getBitmapMaskSubset

構文

SDO_GEOR.getBitmapMaskSubset(
georaster        IN SDO_GEORASTER,
layerNumber   IN NUMBER,
pyramidLevel   IN VARCHAR2,
window            IN SDO_NUMBER_ARRAY,
rasterBlob       IN OUT NOCOPY BLOB,
storageParam IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.getBitmapMaskSubset(
georaster        IN SDO_GEORASTER,
layerNumber   IN NUMBER,
pyramidLevel   IN VARCHAR2,
inWindow        IN SDO_NUMBER_ARRAY,
rasterBlob       IN OUT NOCOPY BLOB,
outWindow      OUT SDO_NUMBER_ARRAY,
storageParam IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.getBitmapMaskSubset(
georaster        IN SDO_GEORASTER,
layerNumber   IN NUMBER,
pyramidLevel   IN VARCHAR2,
window            IN SDO_GEOMETRY,
rasterBlob       IN OUT NOCOPY BLOB,
storageParam IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.getBitmapMaskSubset(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER,
pyramidLevel  IN VARCHAR2,
inWindow        IN SDO_GEOMETRY,
rasterBlob       IN OUT NOCOPY BLOB,
outWindow      OUT SDO_NUMBER_ARRAY,
storageParam IN VARCHAR2 DEFAULT NULL);

説明

ビットマップ・マスクのサブセットを取得します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

操作を実行するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

pyramidLevel

指定したセルを含むピラミッド・レベルを指定します。

window, inWindow

サブセットに対する矩形ウィンドウを指定します。左下と右上の座標を含む数値配列か、SDO_GEOMETRYオブジェクトとして指定します。SDO_NUMBER_ARRAY型はVARRAY(1048576) OF NUMBERとして定義されます。

rasterBlob

出力内容(結果のサブセット)を格納するBLOBを指定します。

outWindow

セル空間内で出力ウィンドウの左上角および右下角の座標を指定するSDO_NUMBER_ARRAYオブジェクトを指定します。

storageParam

rasterBlobの作成時に適用される記憶域パラメータを示す文字列を指定します。このプロシージャでサポートされているstorageParamキーワードはcelldepth、compression、interleavingおよびqualityのみで、他のキーワードはすべて無視されます。記憶域パラメータについては、「記憶域パラメータ」を参照してください。

storageParamパラメータがNULLの場合、結果のGeoRasterオブジェクトのcelldepth値は1BITセル深度になり、圧縮タイプはDEFLATEになり(入力されたGeoRasterオブジェクトが圧縮されている場合)、インターリーブ・タイプは入力されたGeoRasterオブジェクトと同じになります。

使用上の注意

指定したラスター・レイヤーに指定のGeoRasterオブジェクトに関連付けられたビットマップが存在しない場合、または指定した入力ウィンドウがGeoRasterオブジェクトの空間エクステントと交差しない場合、このプロシージャは、長さが0 (ゼロ)に切り捨てられたrasterBlobとNULL値が設定されたoutWindowを戻します。

このプロシージャの処理は、単一のGeoRasterオブジェクト上で行われます。このプロシージャの構文は4種類あり、入力ウィンドウの指定がジオメトリ・オブジェクトによるものとウィンドウの左上角および右下角によるもののいずれであるか、およびoutWindowパラメータを使用して出力ウィンドウの座標を戻すかどうかによって異なります。

windowまたはinWindowパラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は、NULL (ラスター空間を指定する)またはMDSYS.CS_SRS表のSRID列の値のいずれかである必要があります。

windowまたはinWindowパラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、ジオメトリ・パラメータは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)

windowパラメータで測地MBRを指定する場合、日付変更線をまたぐMBRは指定できません。測地MBRについては、『Oracle Spatial and Graph開発者ガイド』を参照してください。

プロシージャが完了すると、rasterBLOBパラメータには、タイル処理されていないクロッピング済のウィンドウのセル(ピクセル)データが含まれます。クロッピング済のウィンドウとは、処理対象として指定したウィンドウとソースGeoRasterオブジェクトの空間エクステントが重複する部分のことです。outWindowパラメータを指定した場合は、プロシージャが完了すると、セル空間内のクロッピング済のウィンドウの座標がそのパラメータに含まれます。

ビットマップ・マスクには、空のラスター・ブロック(「空のラスター・ブロック」を参照)が含まれる場合があります。空のラスター・ブロックから導出される出力ウィンドウ内のすべてのセルは、出力のBLOBでは値0 (ゼロ)が埋め込まれます。

BLOBには埋込みがありません。ただし、セル深度が8ビットより小さく、出力に必要なビット数の合計が8で除算できない場合を除きます。このような場合は、通常の埋込みとは異なり、結果の最後のバイトでのみ、後続のビットに対し0 (ゼロ)が埋め込まれます。

入力されたGeoRasterオブジェクトが圧縮されているかどうかに関係なく、圧縮を指定できます。圧縮済の入力されたGeoRasterオブジェクトに対して、解凍された出力を得るには、storageParamパラメータでcompression=NONEを指定します。GeoRasterの圧縮および解凍の詳細は、「圧縮と解凍」を参照してください。

ビットマップ・マスクの詳細は、「ビットマップ・マスク」を参照してください。

例

次の例では、指定したGeoRasterオブジェクトのオブジェクト・レイヤーに関連付けられたビットマップ・マスクのサブセットを取得します。

DECLARE
gr sdo_georaster;
lb blob;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=4;
dbms_lob.createTemporary(lb, TRUE);
sdo_geor.getBitmapMaskSubset(gr, 0, 0, sdo_number_array(0,0,99,99), lb, 'compression=none');
dbms_lob.freeTemporary(lb);
END;
/

6.33 SDO_GEOR.getBitmapMaskValue

構文

SDO_GEOR.getBitmapMaskValue(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER,
pyramidLevel  IN VARCHAR2,
rowNumber   IN NUMBER,
colNumber     IN NUMBER
) RETURN NUMBER;

または

SDO_GEOR.getBitmapMaskValue(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER,
pyramidLevel  IN VARCHAR2,
ptGeom          IN SDO_GEOMETRY
) RETURN NUMBER;

説明

ビットマップ・マスクから単一のセルの値を取得します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

操作を実行するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

pyramidLevel

指定したセルを含むピラミッド・レベルを指定します。

rowNumber

セル空間内の行番号を指定します。

colNumber

セル空間内の列番号を指定します。

ptGeom

セル空間またはモデル空間内の点ジオメトリを指定します。

使用上の注意

セルを指定するには、行番号と列番号を使用するか、点ジオメトリ・オブジェクトを使用します。

指定したラスター・レイヤーに指定のGeoRasterオブジェクトに関連付けられたビットマップ・マスクがない場合、または指定したセルが空のラスター・ブロックに存在する場合、このファンクションはNULL値を戻します。

ビットマップ・マスクの詳細は、「ビットマップ・マスク」を参照してください。

例

次の例では、指定したGeoRasterオブジェクトに関連付けられたビットマップ・マスクから、4つのセルの値を取得します。

SELECT sdo_geor.getBitmapMaskValue(georaster,0,0,0,0) c1,
sdo_geor.getBitmapMaskValue(georaster,0,0,9,9) c2,
sdo_geor.getBitmapMaskValue(georaster,0,0,9,10) c3,
sdo_geor.getBitmapMaskValue(georaster,0,0,10,9) c4
FROM georaster_table WHERE georid=0;

6.34 SDO_GEOR.getBlankCellValue

構文

SDO_GEOR.getBlankCellValue(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

指定されたGeoRasterオブジェクトが空白のGeoRasterオブジェクトである場合に、すべてのセルのセル値を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

空白のGeoRasterオブジェクトでは、すべてのセルが同じセル値を持ちます。このファンクションは、指定されたGeoRasterオブジェクトが空白のGeoRasterオブジェクトである場合に、すべてのセルのセル値を戻します。

指定したGeoRasterオブジェクトが空白のGeoRasterオブジェクトである場合に使用されるセル値を設定するには、SDO_GEOR.setBlankCellValueプロシージャを使用します。指定したGeoRasterオブジェクトが空白のGeoRasterオブジェクトかどうかを確認するには、SDO_GEOR.isBlankファンクションを使用します。

georasterがNULLか無効であるか、または空白のGeoRasterオブジェクトではない場合は、SDO_GEOR.getBlankCellValueファンクションはNULL値を戻します。

例

次の例では、表GEORASTER_TABLEのGEORASTER列に含まれているすべての空白のGeoRasterオブジェクトの空白のセル値を戻します。

SELECT georid, sdo_geor.getBlankCellValue(georaster) blankValue
FROM georaster_table WHERE sdo_geor.isBlank(georaster)='TRUE';

GEORID BLANKVALUE
---------- ----------
1        255
2        155

6.35 SDO_GEOR.getBlockingType

構文

SDO_GEOR.getBlockingType(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのブロック・タイプを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、NONEまたはREGULARのいずれかの値を戻します。

- NONE: GeoRasterオブジェクトはブロック化されていませんが、単一のBLOBオブジェクトです。

- REGULAR: GeoRasterオブジェクトは通常のブロックを使用しています(各ブロックが同じ次元サイズを持ちます)。

georasterまたはそのメタデータがNULLの場合、このファンクションはNULL値を戻します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が21である行に含まれているGeoRasterオブジェクト(GEORASTER列)のセル深度、インターリーブ・タイプ、およびブロック・タイプを戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT sdo_geor.getCellDepth(georaster) CellDepth,
substr(sdo_geor.getInterleavingType(georaster),1,8) interleavingType,
substr(sdo_geor.getBlockingType(georaster),1,8) blocking
FROM georaster_table WHERE georid=21;

CELLDEPTH INTERLEA BLOCKING
---------- -------- --------
8 BSQ      REGULAR

6.36 SDO_GEOR.getBlockSize

構文

SDO_GEOR.getBlockSize(
georaster  IN SDO_GEORASTER
) RETURN SDO_NUMBER_ARRAY;

説明

GeoRasterオブジェクトの各ブロックに含まれる各次元のセル数を配列で戻します。配列には、各行、列、およびバンド(関連する場合)のセル数が示されます。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

georasterまたはそのメタデータがNULLの場合、あるいはgeorasterがブロック化されていない場合、このファンクションはNULL値を戻します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が21である行に含まれているGeoRasterオブジェクト(GEORASTER列)の各ブロックのセル数(各次元で512)を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」項の例1-1の次に説明されています。

SELECT sdo_geor.getBlockSize(georaster) blockSize
FROM georaster_table WHERE georid=21;

BLOCKSIZE
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(512, 512)

6.37 SDO_GEOR.getCellCoordinate

構文

SDO_GEOR.getCellCoordinate(
georaster              IN SDO_GEORASTER,
pyramidLevel        IN NUMBER,
modelCoordinate  IN SDO_GEOMETRY,
subCell                  IN VARCHAR2 DEFAULT NULL,
height                    IN NUMBER DEFAULT NULL,
vert_id                   IN NUMBER DEFAULT NULL,
ellipsoidal               IN VARCHAR2 DEFAULT NULL
) RETURN SDO_NUMBER_ARRAY;

または

SDO_GEOR.getCellCoordinate(
georaster              IN SDO_GEORASTER,
pyramidLevel        IN NUMBER,
modelCoordinate  IN SDO_GEOMETRY,
cellCoordinate       OUT SDO_GEOMETRY,
subCell                  IN VARCHAR2 DEFAULT NULL,
height                    IN NUMBER DEFAULT NULL,
vert_id                   IN NUMBER DEFAULT NULL,
ellipsoidal               IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.getCellCoordinate(
georaster                     IN SDO_GEORASTER,
sourcePyramidLevel     IN NUMBER,
sourceCellCoordinate  IN SDO_NUMBER_ARRAY,
targetPyramidLevel      IN NUMBER,
subCell                         IN VARCHAR2 DEFAULT NULL,
) RETURN SDO_NUMBER_ARRAY;

または

SDO_GEOR.getCellCoordinate(
georaster                     IN SDO_GEORASTER,
sourcePyramidLevel     IN NUMBER,
sourceCellCoordinate  IN SDO_GEOMETRY,
targetPyramidLevel      IN NUMBER,
subCell                         IN VARCHAR2 DEFAULT NULL,
) RETURN SDO_GEOMETRY;

説明

最初の2つの構文を使用すると、指定したモデル(地上)座標のジオメトリに関連付けられたセル(ラスター)座標系の座標が戻されます。最後の2つの構文を使用すると、ピラミッド・レベル間のセル座標変換が行われます。

2つ目の構文はプロシージャであり、それ以外の構文はファンクションであることに注意してください。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

modelCoordinateで指定するセルを含むピラミッド・レベルを指定します。

modelCoordinate

変換するジオメトリを指定します。

cellCoordinate

GeoRasterオブジェクトのセル空間内の出力ジオメトリを指定します。

sourcePyramidLevel (最後の2つの構文の場合)

入力セルの座標が関連付けられているピラミッド・レベルを指定します。

sourceCellCoordinate (最後の2つの構文の場合)

変換する入力セルの座標を指定します。2次元ジオメトリを指定してください(このセルのSDO_SRID値はNULLである必要があります)。

targetPyramidLevel (最後の2つの構文の場合)

戻される(ターゲットの)GeoRasterオブジェクトのピラミッド・レベルを指定します。

subCell

サブピクセル(浮動)値でセル座標を戻すかどうかを指定する文字列(TRUEまたはFALSE)を指定します。

height

3次元(X, Y, Z)の地理参照で使用するZの値を指定します。

vert_id

垂直参照IDを指定する番号を指定します。

ellipsoidal

垂直参照系が楕円体であるか(TRUE)、楕円体でないか(FALSE)を指定する文字列を指定します。

使用上の注意

このファンクションの最初の2つの構文は、指定されたモデル(地上)座標のジオメトリに関連付けられたセル(ラスター)座標系の座標を戻します。

- 最初の(cellCoordinateパラメータを指定しないファンクション)構文は、地上座標系の点(経度と緯度のペア)を、GeoRasterイメージ上の点の位置に変換する場合に使用します。

- 2つ目の(cellCoordinateパラメータを指定するプロシージャ)構文は、地上座標系のジオメトリを、GeoRasterオブジェクトのラスター空間に存在するジオメトリの位置に変換する場合に使用します。変換は、入力されたジオメトリの各頂点の座標を、地上座標系からGeoRasterオブジェクトのラスター空間に変換することで行われます。

このファンクションの最後の2つの構文を使用すると、ピラミッド・レベル間でセル座標の変換が行われます。sourceCellCoordinateパラメータがSDO_NUMBER_ARRAY型の場合、このパラメータで指定されるのは、ソース・ピラミッド・レベルでのセル空間内にある点の<行,列>のペアです。sourceCellCoordinateパラメータがSDO_GEOMETRY型の場合、このパラメータで指定されるのは、ソース・ピラミッド・レベルでのセル空間内にあるジオメトリです。入力されたジオメトリの各頂点の座標は、指定したピラミッド・レベルに従って変換されます。

- 最初の(cellCoordinateパラメータを指定しない)構文は、地上座標系の点(経度と緯度のペア)を、GeoRasterイメージ上の点の位置に変換する場合に使用します。

- 2つ目の(cellCoordinateパラメータを指定する)構文は、地上座標系のジオメトリを、GeoRasterオブジェクトのラスター空間に存在するジオメトリの位置に変換する場合に使用します。変換は、入力されたジオメトリの各頂点の座標を、地上座標系からGeoRasterオブジェクトのラスター空間に変換することで行われます。

modelCoordinateジオメトリのSDO_SRID値がNULLの場合、このパラメータで指定されるのはラスター空間のジオメトリであり、NULL以外の場合は、地上座標系の点が指定されます。地上座標系がモデル座標系とは異なる場合は、処理が実行される前に、modelCoordinateパラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。

このファンクションは、指定されたセル座標の点に関連付けられたモデル(地上)座標系の座標を含む点ジオメトリを戻すSDO_GEOR.getModelCoordinateと対照的です。

例

次の例では、指定したGeoRasterオブジェクトのモデル座標値(32343.64,7489527.23)に関連付けられたラスター・イメージのセル座標を戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT sdo_geor.getCellCoordinate(georaster, 0, sdo_geometry(2001,82394,
sdo_point_type(32343.64,7489527.23,null), null,null)) coord
FROM georaster_table WHERE georid=4;

COORD
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(100, 100)

次の例では、指定したジオメトリのピラミッド・レベル2と関連付けられたピラミッド・レベル0のジオメトリを戻します。この例では、ジオメトリが地理参照されておらず(モデル座標の位置がCENTER)、ultCoordinateが(100,-100,0)であることを想定しています。

SELECT sdo_geor.getCellCoordinate(georaster, 2,
sdo_geometry(2003,NULL,NULL,sdo_elem_info_array(1,1003,3),
sdo_ordinate_array(100.8,-100.2,220.15,0.3)),
0, 'true') coord
FROM georaster_table WHERE georid=1;

COORD
--------------------------------------------------------------------------------
SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(104.7, -99.3, 582.1, 302.7))

6.38 SDO_GEOR.getCellDepth

構文

SDO_GEOR.getCellDepth(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

セル深度をビット単位で戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

セル深度によって、イメージの精度およびデータ・サイズが決定されます。セル深度の値が小さくなると、イメージの格納に必要なディスク領域は減少し、セル深度の値が大きくなると、イメージの格納に必要なディスク領域は増加します。

セル深度を、番号のかわりに文字列(32BIT_Sなど)として戻すには、PL/SQLのXMLTypeインタフェースextractを使用します。使用可能な文字列値は、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)のcellDepthType定義に示されています。次の例では、GEORASTER_TABLE表でGEORID列の値が21であるGeoRasterオブジェクトのセル深度の文字列の値を戻します。

SELECT t.georaster.metadata.extract(
'/georasterMetadata/rasterInfo/cellDepth/text()',
'xmlns=http://xmlns.oracle.com/spatial/georaster')
FROM georaster_table t WHERE t.georid=21;

例

次の例では、GEORASTER_TABLE表で、GEORID列値が21である行に含まれているGeoRasterオブジェクト(GEORASTER列)のセル深度、インターリーブ・タイプ、およびブロック・タイプを戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT sdo_geor.getCellDepth(georaster) CellDepth,
substr(sdo_geor.getInterleavingType(georaster),1,8) interleavingType,
substr(sdo_geor.getBlockingType(georaster),1,8) blocking
FROM georaster_table WHERE georid=21;

CELLDEPTH INTERLEA BLOCKING
---------- -------- --------
8 BSQ      REGULAR

6.39 SDO_GEOR.getCellValue

構文

SDO_GEOR.getCellValue(
georaster       IN SDO_GEORASTER,
pyramidLevel IN NUMBER,
rowNumber   IN NUMBER,
colNumber     IN NUMBER,
bandNumber  IN NUMBER
) RETURN NUMBER;

または

SDO_GEOR.getCellValue(
georaster       IN SDO_GEORASTER,
pyramidLevel IN NUMBER,
rowNumber   IN NUMBER,
colNumber     IN NUMBER,
bands             IN VARCHAR2
) RETURN SDO_NUMBER_ARRAY;

または

SDO_GEOR.getCellValue(
georaster       IN SDO_GEORASTER,
pyramidLevel IN NUMBER,
ptGeom          IN SDO_GEOMETRY,
layerNumber  IN NUMBER
) RETURN NUMBER;

または

SDO_GEOR.getCellValue(
georaster       IN SDO_GEORASTER,
pyramidLevel IN NUMBER,
ptGeom          IN SDO_GEOMETRY,
layers             IN VARCHAR2
) RETURN SDO_NUMBER_ARRAY;

説明

GeoRasterオブジェクトの任意の位置にある単一のセルの値を戻します。セル座標系の行、列および1つ以上のバンド番号を指定するか、またはモデル座標系の点ジオメトリおよび1つ以上の論理レイヤー番号を指定します。

指定したセルが空のラスター・ブロックに存在する場合、このファンクションはNULL値を戻します。

GeoRasterオブジェクトの指定したウィンドウで、ラスター・データ・セルの値を変更するには、SDO_GEOR.changeCellValueプロシージャを使用します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

値を戻すセルを含むピラミッド・レベルを指定します。

rowNumber

値を戻すセルを含む行の番号を指定します。

colNumber

値を戻すセルを含む列の番号を指定します。

bandNumber

値を戻すセルを含む物理バンドの番号を指定します。

bands

処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、1-3はバンド1、2および3を示します)。

ptGeom

値を戻すセルを示す点ジオメトリを指定します。

layerNumber

値を戻すセルを含む論理レイヤーの番号を指定します。(「バンド、レイヤーおよびメタデータ」で説明したように、論理レイヤー番号は、物理バンドの座標番号に1を足した値です。)

layers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。(「バンド、レイヤーおよびメタデータ」で説明したように、論理レイヤー番号は、物理バンドの座標番号に1を足した値です。)

使用上の注意

このファンクションは、ラスター・オブジェクトに格納されている元のセル値を戻します。このファンクションではセル値を使用した内挿は行われません。(内挿方法を使用して点の位置を評価するには、SDO_GEOR.evaluateDoubleファンクションを使用します。)このファンクションは、メタデータに定義されているスケール変更ファンクション(通常は、元のセル・データを希望する値または値の範囲にスケール変更するために使用)を適用しません。また、ビン・ファンクションも適用しません。スケール変更されたセル値を取得するには、次の手順を実行します。

1. SDO_GEOR.getCellValueファンクションをコールして元のセル値を戻します。

2. SDO_GEOR.getScalingファンクションをコールして、スケール変更ファンクションの係数(a_0、a_1、b_0、b_1)を戻します。

3. PL/SQLまたはその他のプログラミング言語で次の式を使用して、結果を計算します。

value = (a_0 + a_1 * cellvalue) / (b_0 + b_1 * cellvalue)

例

次の例では、GEORASTER_TABLE表で、GEORID列値が21である行に含まれているGeoRasterオブジェクト(GEORASTER列)の4つのセルの値を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT sdo_geor.getCellValue(georaster,0,383,47,0) V383_47,
sdo_geor.getCellValue(georaster,0,47,383,0) V47_383,
sdo_geor.getCellValue(georaster,0,128,192,0) V128_192,
sdo_geor.getCellValue(georaster,0,320,256,0) V320_256
FROM georaster_table WHERE georid=21;

V383_47    V47_383   V128_192   V320_256
---------- ---------- ---------- ----------
48         55         52         53

次の例では、GEORASTER_TABLE表で、GEORID列値が1である行に含まれているGeoRasterオブジェクト(GEORASTER列)の行番号10、列番号10のバンド0、1、2のセルの値を戻します(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています)。

SELECT sdo_geor.getcellvalue(a.georaster,0,10,10,'0-2')
FROM georaster_table a WHERE georid=1;

SDO_GEOR.GETCELLVALUE(A.GEORASTER,0,10,10,'0-2')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 137, 32)

6.40 SDO_GEOR.getColorMap

構文

SDO_GEOR.getColorMap(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN SDO_GEOR_COLORMAP;

説明

GeoRasterオブジェクトのレイヤーの疑似カラー表示のカラーマップを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

カラーマップを戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、SDO_GEOR_COLORMAP型のオブジェクトを戻します。カラーマップおよびこのオブジェクト型については、「SDO_GEOR_COLORMAPオブジェクト型」で説明しています。

GeoRasterオブジェクトのレイヤーにカラーマップを設定するには、SDO_GEOR.setColorMapプロシージャを使用します。

georasterまたはそのメタデータがNULLの場合、このファンクションはNULL値を戻します。

layerNumberがNULL、負、またはレイヤーの最大番号より大きい値の場合、例外が発生します。

例

次の例では、GeoRasterオブジェクトのレイヤー1のカラーマップを戻します。(一部の出力は省略します。)

SELECT sdo_geor.getColorMap(georaster, 1) FROM georaster_table
WHERE georid = 4;

SDO_GEOR.GETCOLORMAP(GEORASTER,1)(CELLVALUE, RED, GREEN, BLUE, ALPHA)
--------------------------------------------------------------------------------
SDO_GEOR_COLORMAP(SDO_NUMBER_ARRAY(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
255), SDO_NUMBER_ARRAY(180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 18
0, 127, 127, 100, 50, 50, 127, 159, 191, 223, 255, 255, 255, 255, 218, 182, 145,
109, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 36, 72, 109, 145, 182, 218, 255, 200, 206, 212, 218, 224, 230, 236, 242,
248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255), SDO_NUMBER_ARRAY(127, 127,
127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 180, 127, 50, 100, 50, 127,
159, 191, 223, 255, 200, 150, 100, 122, 144, 166, 188, 210, 232, 255, 255, 255,
248, 241, 234, 227, 220, 213, 206, 200, 150, 100, 87, 75, 62, 50, 37, 25, 12, 0,
200, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 56, 85, 113, 141, 170, 198, 226, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255), SDO_NUMBER_ARRAY(127, 127, 127, 127,
127, 127, 127, 127, 127, 127, 127, 127, 127, 180, 50, 50, 100, 127, 95, 63, 31,
0, 0, 0, 0, 18, 36, 54, 72, 90, 108, 127, 100, 50, 43, 37, 31, 25, 18, 12, 6, 0,
0, 0, 31, 63, 95, 127, 159, 191, 223, 255, 255, 255, 127, 108, 90, 72, 54, 36,
18, 0, 0, 28, 56, 85, 113, 141, 170, 198, 226, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255), SDO_NUMBER_ARRAY(255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255))

6.41 SDO_GEOR.getColorMapTable

構文

SDO_GEOR.getColorMapTable(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのレイヤーの疑似カラー表示のカラーマップ表を戻します。

注意:

今回のリリースのGeoRasterでは、カラーマップ表を使用した操作は実行されません。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

カラーマップ表を戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、ユーザー定義のカラーマップ表の名前を戻します。カラーマップの詳細は、「SDO_GEOR_COLORMAPオブジェクト型」を参照してください。

GeoRasterオブジェクトのレイヤーにカラーマップ表を設定するには、SDO_GEOR.setColorMapTableプロシージャを使用します。

georasterまたはそのメタデータがNULLの場合、このファンクションはNULL値を戻します。

layerNumberがNULL、負、またはレイヤーの最大番号より大きい値の場合、例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー2のカラーマップ表を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT sdo_geor.getColorMapTable(georaster, 2) FROM georaster_table WHERE georid=4;

SDO_GEOR.GETCOLORMAPTABLE(GEORASTER,2)
--------------------------------------------------------------------------------
CMT1

1 row selected.

6.42 SDO_GEOR.getCompressionType

構文

SDO_GEOR.getCompressionType(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトの圧縮タイプを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、DEFLATE、JPEG-F、またはGeoRasterオブジェクトが圧縮されていないことを示すNONEを戻します。GeoRasterの圧縮の詳細は、「圧縮と解凍」を参照してください。

例

次の例では、GEORASTER_TABLE表のGeoRasterオブジェクト(GEORASTER列)の圧縮タイプを戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT georid, substr(sdo_geor.getCompressionType(georaster),1,20) compressionType
FROM georaster_table;

GEORID COMPRESSIONTYPE
---------- --------------------
2 DEFLATE
4 JPEG-F

6.43 SDO_GEOR.getControlPoint

構文

SDO_GEOR.getControlPoint (
inGeoraster      IN SDO_GEORASTER,
controlPointID  IN VARCHAR2
) RETURN SDO_GEOR_GCP;

説明

指定した基準点ID値を持つ地上基準点(GCP)を戻します。

パラメータ

inGeoraster

GeoRasterオブジェクトを指定します。

controlPointID

inGeorasterの基準点IDを指定します。32文字以下の文字列である必要があります。

使用上の注意

GCPを使用する地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

このファンクションは、SDO_GEOR_GCP型のオブジェクトを戻します(「SDO_GEOR_GCPオブジェクト型」を参照)。

基準点IDがinGeorasterでNULLであるか、空であるか、または存在しない場合、例外が発生します。

例

次の例では、指定したGeoRasterオブジェクトでID値が25のGCPを戻します。

SELECT sdo_geor.getControlPoint(georaster, '25') FROM georaster_table
WHERE georid =10;

SDO_GEOR.GETCONTROLPOINT(GEORASTER,'25')(POINTID, DESCRIPTION, POINTTYPE, CELLDI
--------------------------------------------------------------------------------
SDO_GEOR_GCP('25', NULL, 2, 2, SDO_NUMBER_ARRAY(167.470583, 64.030686), 2, SDO_N
UMBER_ARRAY(237032.015, 897916.265), NULL, NULL)

6.44 SDO_GEOR.getDefaultAlpha

構文

SDO_GEOR.getDefaultAlpha(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトを表示する際に、(RGBA色空間の)アルファの色構成要素に使用されるレイヤー番号を戻します。この値がメタデータに設定されていない場合、NULL値が戻されます。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

デフォルトの赤、緑、青およびアルファの値は、疑似カラー表示またはグレースケール表示ではなく、トゥルーカラー表示に使用されます。これらの値はオプションで、マルチレイヤーまたはハイパースペクトルのGeoRasterオブジェクトを視覚化する場合にのみ使用されます。

SDO_GEOR.getDefaultColorLayerファンクションを使用すると、4つすべての色構成要素(RGBA)のレイヤー番号を戻すことができます。

例

次の例では、GEORASTER_TABLEという表でGeoRasterオブジェクトを表示する際に赤、緑、青およびアルファの色構成要素に使用されるレイヤー番号を戻します(GEORASTER_TABLE表の定義は「記憶域パラメータ」の例1-1の次に説明されています)。

SELECT georid, sdo_geor.getDefaultRed(georaster) red,
sdo_geor.getDefaultGreen(georaster) green,
sdo_geor.getDefaultBlue(georaster) blue,
sdo_geor.getDefaultAlpha(georaster) alpha
FROM georaster_table;

GEORID        RED      GREEN       BLUE      ALPHA
---------- ---------- ---------- ---------- ----------
1          1          2          3          4
2
3         31         20         13         10

6.45 SDO_GEOR.getDefaultBlue

構文

SDO_GEOR.getDefaultBlue(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトを表示する際に、(RGB色空間の)青の色構成要素に使用されるレイヤー番号を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

デフォルトの赤、緑および青の値は、疑似カラー表示またはグレースケール表示ではなく、トゥルーカラー表示に使用されます。これらの値はオプションで、マルチレイヤーまたはハイパースペクトルのGeoRasterオブジェクトを視覚化する場合にのみ使用されます。

SDO_GEOR.getDefaultColorLayerファンクションを使用すると、3つすべての色構成要素(RGB)のレイヤー番号を戻すことができます。

例

次の例では、GEORASTER_TABLEという表でGeoRasterオブジェクトを表示する際に赤、青および緑の色構成要素に使用されるレイヤー番号を戻します。GEORASTER_TABLE表の定義は「記憶域パラメータ」の例1-1の次に説明されています。

SELECT georid, sdo_geor.getDefaultRed(georaster) red,
sdo_geor.getDefaultGreen(georaster) green,
sdo_geor.getDefaultBlue(georaster) blue
FROM georaster_table;

GEORID        RED      GREEN       BLUE
---------- ---------- ---------- ----------
1          1          2          3
2
3         31         20         13

6.46 SDO_GEOR.getDefaultColorLayer

構文

SDO_GEOR.getDefaultColorLayer(
georaster  IN SDO_GEORASTER
) RETURN SDO_NUMBER_ARRAY;

説明

GeoRasterオブジェクトを表示する際に、赤、緑、青およびアルファの各色構成要素に使用されるデフォルトのレイヤー番号を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

戻されるRGBレイヤー番号は、疑似カラー表示またはグレースケール表示ではなく、トゥルーカラー表示に使用されます。

SDO_GEOR.getDefaultRed、SDO_GEOR.getDefaultGreen、SDO_GEOR.getDefaultBlueおよびSDO_GEOR.getDefaultAlphaファンクションを使用すると、各色構成要素(RGBA)のレイヤー番号を戻すことができます。

アルファの色構成要素は、オプションです。デフォルトのアルファの色構成要素がメタデータに存在する場合、このファンクションは、それぞれ赤、緑、青およびアルファの色構成要素を識別する4つの数値の配列を戻します。デフォルトの赤、緑および青の色構成要素のみがメタデータに存在する場合、このファンクションは、それぞれ赤、緑および青の色構成要素を識別する3つの数値の配列を戻します。

例

次の例では、GEORASTER_TABLE表に含まれるGeoRasterオブジェクト(GEORASTER列)のデフォルトの赤、緑および青の色レイヤーを設定して、それらのGeoRasterオブジェクトを表示する際に赤、緑および青の色構成要素に使用されるレイヤー番号の配列を戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setDefaultRed(grobj, 2);
sdo_geor.setDefaultGreen(grobj, 3);
sdo_geor.setDefaultBlue(grobj, 1);
sdo_geor.setDefaultAlpha(grobj, 4);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

SELECT sdo_geor.getDefaultColorLayer(georaster) FROM georaster_table WHERE georid=4;

SDO_GEOR.GETDEFAULTCOLORLAYER(GEORASTER)
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(2, 3, 1)
SDO_NUMBER_ARRAY(2, 3, 1, 4)

1 row selected.

6.47 SDO_GEOR.getDefaultGreen

構文

SDO_GEOR.getDefaultGreen(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトを表示する際に、(RGB色空間の)緑の色構成要素に使用されるレイヤー番号を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

デフォルトの赤、緑および青の値は、疑似カラー表示またはグレースケール表示ではなく、トゥルーカラー表示に使用されます。これらの値はオプションで、マルチレイヤーまたはハイパースペクトルのGeoRasterオブジェクトを視覚化する場合にのみ使用されます。

SDO_GEOR.getDefaultColorLayerファンクションを使用すると、3つすべての色構成要素(RGB)のレイヤー番号を戻すことができます。

例

次の例では、GEORASTER_TABLEという表でGeoRasterオブジェクトを表示する際に赤、青および緑の色構成要素に使用されるレイヤー番号を戻します。GEORASTER_TABLE表の定義は「記憶域パラメータ」の例1-1の次に説明されています。

SELECT georid, sdo_geor.getDefaultRed(georaster) red,
sdo_geor.getDefaultGreen(georaster) green,
sdo_geor.getDefaultBlue(georaster) blue
FROM georaster_table;

GEORID        RED      GREEN       BLUE
---------- ---------- ---------- ----------
1          1          2          3
2
3         31         20         13

6.48 SDO_GEOR.getDefaultPyramidLevel

構文

SDO_GEOR.getDefaultPyramidLevel(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトを表示するためのデフォルトのピラミッド・レベルの数を戻します。この値がメタデータに設定されていない場合、NULL値が戻されます。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

ピラミッド・レベルは、必要な記憶域が小さくなる低解像度イメージ、または必要な記憶域が大きくなる高解像度イメージを表します。ピラミッドおよびピラミッド・レベルの詳細は、「ピラミッド」を参照してください。

SDO_GEOR.setDefaultPyramidLevelプロシージャを使用して、デフォルトのピラミッド・レベルを設定できます。

例

次の例では、GEORASTER_TABLE表に含まれている指定されたGeoRasterオブジェクトを表示するためのデフォルトのピラミッド・レベルを戻します(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています)。

SELECT georid, sdo_geor.getDefaultPyramidLevel(georaster) plevel,
FROM georaster_table WHERE georid = 6;

GEORID       PLEVEL
---------- ----------
6          3

6.49 SDO_GEOR.getDefaultRed

構文

SDO_GEOR.getDefaultRed(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトを表示する際に、(RGB色空間の)赤の色構成要素に使用されるレイヤー番号を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

デフォルトの赤、緑および青の値は、疑似カラー表示またはグレースケール表示ではなく、トゥルーカラー表示に使用されます。これらの値はオプションで、マルチレイヤーまたはハイパースペクトルのGeoRasterオブジェクトを視覚化する場合にのみ使用されます。

SDO_GEOR.getDefaultColorLayerファンクションを使用すると、3つすべての色構成要素(RGB)のレイヤー番号を戻すことができます。

例

次の例では、GEORASTER_TABLEという表でGeoRasterオブジェクトを表示する際に赤、青および緑の色構成要素に使用されるレイヤー番号を戻します。GEORASTER_TABLE表の定義は「記憶域パラメータ」の例1-1の次に説明されています。

SELECT georid, sdo_geor.getDefaultRed(georaster) red,
sdo_geor.getDefaultGreen(georaster) green,
sdo_geor.getDefaultBlue(georaster) blue
FROM georaster_table;

GEORID        RED      GREEN       BLUE
---------- ---------- ---------- ----------
1          1          2          3
2
3         31         20         13

6.50 SDO_GEOR.getEndDateTime

構文

SDO_GEOR.getEndDateTime(     georaster  IN SDO_GEORASTER      ) RETURN TIMESTAMP WITH TIME ZONE;

説明

GeoRasterオブジェクトのメタデータから、ラスター・データ収集の終了日時を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

GeoRasterオブジェクトのメタデータで、ラスター・データ収集の終了日時を設定するには、SDO_GEOR.setEndDateTimeプロシージャを使用します。

georasterまたはそのメタデータがNULLの場合、このファンクションはNULL値を戻します。

例

次の例では、GEORASTER_TABLEという表で、値4のGEORID列に含まれているGeoRasterオブジェクトのメタデータから、ラスター・データ収集の開始日時および終了日時を戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT sdo_geor.getBeginDateTime(georaster) beginDateTime,
sdo_geor.getEndDateTime(georaster) endDateTime
FROM georaster_table WHERE georid=4;

BEGINDATETIME
---------------------------------------------------------------------------
ENDDATETIME
---------------------------------------------------------------------------
01-JAN-00 05.00.00.000000000 AM +00:00
15-NOV-02 08.00.00.000000000 PM +00:00

6.51 SDO_GEOR.getGCPGeorefMethod

構文

SDO_GEOR.getGCPGeorefMethod(
inGeoraster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトの地上基準点(GCP)ベースの地理参照ジオメトリ・モデル・タイプを戻します。

パラメータ

inGeoraster

GeoRasterオブジェクトを指定します。

使用上の注意

GCPを使用する地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

inGeorasterに有効な地理参照モデル情報が含まれる場合、Affine、QuadraticPolynomial、CubicPolynomial、DLT、QuadraticRationalまたはRPCのいずれかが戻されます。

inGeorasterに地理参照モデル情報が含まれない場合、このファンクションではNULL値が戻されます。

例

次の例では、指定したGeoRasterオブジェクトのGCPベースの地理参照モデル情報が戻されます。(出力は、読みやすくするために変更が加えられています。)

SELECT sdo_geor.getGCPGeorefMethod(georaster) FROM georaster_table
WHERE georid =10;

SDO_GEOR.GETGCPGEOREFMETHOD(GEORASTER)
--------------------------------------------------------------------------------
Affine

6.52 SDO_GEOR.getGCPGeorefModel

構文

SDO_GEOR.getGCPGeorefModel(
inGeoraster  IN SDO_GEORASTER
) RETURN SDO_GEOR_GCPGEOREFTYPE;

説明

GeoRasterオブジェクトの地上基準点(GCP)ベースの地理参照モデルに関するすべての情報を戻します。

パラメータ

inGeoraster

GeoRasterオブジェクトを指定します。

使用上の注意

GCPを使用する地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

SDO_GEOR_GCPGEOREFTYPEオブジェクト型は、「SDO_GEOR_GCPGEOREFTYPEオブジェクト型」で定義されています。

inGeorasterに地理参照モデル情報が含まれない場合、このファンクションではNULL値が戻されます。

例

次の例では、指定したGeoRasterオブジェクトのGCPベースの地理参照モデル情報が戻されます。(出力は、読みやすくするために変更が加えられています。)

SELECT sdo_geor.getGCPGeorefModel(georaster) FROM georaster_table WHERE georid=10;

SDO_GEOR.GETGCPGEOREFMODEL(GEORASTER)(FFMETHODTYPE,
NUMBERGCP, GCPS(POINTID, DES...
--------------------------------------------------------------------------------
SDO_GEOR_GCPGEOREFTYPE('Affine', 6,
SDO_GEOR_GCP_COLLECTION(
SDO_GEOR_GCP('21', NULL, 1, 2,SDO_NUMBER_ARRAY(25.625, 73.875), 2, SDO_NUMBER_ARRAY(237036.938,897987.188), NULL, NULL),
SDO_GEOR_GCP('22', NULL, 1, 2,SDO_NUMBER_ARRAY(100.625, 459.125), 2,SDO_NUMBER_ARRAY(237229.563, 897949.688), NULL, NULL),
SDO_GEOR_GCP('23', NULL, 1, 2, SDO_NUMBER_ARRAY(362.375, 77.875), 2,
SDO_NUMBER_ARRAY(237038.938, 897818.813), NULL, NULL),
SDO_GEOR_GCP('24', NULL, 1, 2, SDO_NUMBER_ARRAY(478.875, 402.125), 2,
SDO_NUMBER_ARRAY(237201.063, 897760.563), NULL, NULL),
SDO_GEOR_GCP('25', NULL, 2, 2, SDO_NUMBER_ARRAY(167.470583,
64.030686), 2, SDO_NUMBER_ARRAY(237032.015, 897916.265), NULL, NULL),
SDO_GEOR_GCP('26', NULL, 2, 2, SDO_NUMBER_ARRAY(101.456177,
257.915534), 2, SDO_NUMBER_ARRAY(237128.958, 897949.272), NULL, NULL)),
NULL)

6.53 SDO_GEOR.getGeoreferenceType

構文

SDO_GEOR.getGeoreferenceType(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトの地理参照タイプを示す番号を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションでは、地理参照タイプを示す次のいずれかの番号が戻されます。種類が不明かNULLのGeoRasterオブジェクトの場合は1、アフィン変換の場合は2、DLT (Direct Linear Transform)の場合は3、RPC (Rational Polynomial Coefficient)の場合は4、三次多項式の場合は5、二次有理多項式の場合は6、二次多項式の場合は7です。

地理参照の詳細は、「地理参照」を参照してください。

例

次の例では、GEORASTER_TABLEという表名のGeoRasterオブジェクトの地理参照タイプを戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT georid,sdo_geor.getGeoreferenceType(a.georaster)
FROM georaster_table a ORDER BY georid;

GEORID SDO_GEOR.GETGEOREFERENCETYPE(A.GEORASTER)
---------- -----------------------------------------
1                                         1
2                                         1
3                                         1
4                                         1
5                                         1
7                                         1
8                                         2
9                                         1
10                                         1
12                                         1
13                                         1
14                                         2
15                                         1
16                                         1
17                                         1
18                                         1
19                                         2
20                                         2
21                                         4
22                                         4

6.54 SDO_GEOR.getGrayScale

構文

SDO_GEOR.getGrayScale(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN SDO_GEOR_GRAYSCALE;

説明

GeoRasterオブジェクトのレイヤーのグレースケール・マッピングを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

グレースケール・マッピングを戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、SDO_GEOR_GRAYSCALE型のオブジェクトを戻します。グレースケール表示およびこのオブジェクト型については、「SDO_GEOR_GRAYSCALEオブジェクト型」で説明しています。

GeoRasterオブジェクトのレイヤーにグレースケール・マッピングを設定するには、SDO_GEOR.setGrayScaleプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が0である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー0のグレースケール・マッピングを戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT sdo_geor.getGrayScale(georaster, 0) FROM georaster_table WHERE georid=0;

SDO_GEOR.GETGRAYSCALE(GEORASTER,0)(CELLVALUE, GRAY)
--------------------------------------------------------------------------------
SDO_GEOR_GRAYSCALE(SDO_NUMBER_ARRAY(10, 20, 30, 255), SDO_NUMBER_ARRAY(180, 210,
230, 250))

6.55 SDO_GEOR.getGrayScaleTable

構文

SDO_GEOR.getGrayScaleTable(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのレイヤーのグレースケール・マッピング表を戻します。

注意:

今回のリリースのGeoRasterでは、グレースケール・マッピング表を使用した操作は実行されません。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

グレースケール・マッピング表を戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、ユーザー定義のグレースケール表の名前を戻します。グレースケール表示の詳細は、「SDO_GEOR_GRAYSCALEオブジェクト型」を参照してください。

GeoRasterオブジェクトのレイヤーにグレースケール・マッピング表を設定するには、SDO_GEOR.setGrayScaleTableプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー0、1、2および3のグレースケール・マッピング表を戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。結果は、読みやすいように形式を変更しています。)

SELECT substr(sdo_geor.getGrayScaleTable(georaster, 0),1,20) grayScaleTable0,
substr(sdo_geor.getGrayScaleTable(georaster, 1),1,20) grayScaleTable1,
substr(sdo_geor.getGrayScaleTable(georaster, 2),1,20) grayScaleTable2,
substr(sdo_geor.getGrayScaleTable(georaster, 3),1,20) grayScaleTable3
FROM georaster_table WHERE georid=4;

GRAYSCALETABLE0      GRAYSCALETABLE1      GRAYSCALETABLE2      GRAYSCALETABLE3
-------------------- -------------------- -------------------- -----------------
SCL0                 SCL1                 SCL2                 SCL3

6.56 SDO_GEOR.getHistogram

構文

SDO_GEOR.getHistogram(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN SDO_GEOR_HISTOGRAM;

説明

GeoRasterオブジェクトのレイヤーのヒストグラムを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

ヒストグラムを戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、SDO_GEOR_HISTOGRAM型のオブジェクトを戻します。このオブジェクト型およびヒストグラムの概要は、「SDO_GEOR_HISTOGRAMオブジェクト型」で説明しています。

例

次の例では、GEORASTER_TABLE表に含まれている、4ビットGeoRasterオブジェクトのレイヤー1のヒストグラムを戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT sdo_geor.getHistogram(georaster, 1) layer1
FROM georaster_table WHERE georid=17;

LAYER1(CELLVALUE, COUNT)
--------------------------------------------------------------------------------
SDO_GEOR_HISTOGRAM(SDO_NUMBER_ARRAY(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12, 13,
14, 15), SDO_NUMBER_ARRAY(10, 18, 10, 110, 200, 120, 130, 150, 160, 103, 106,
190, 12, 17, 10, 5))

6.57 SDO_GEOR.getHistogramTable

構文

SDO_GEOR.getHistogramTable(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのレイヤーのヒストグラム表を戻します。

注意:

今回のリリースのGeoRasterでは、ヒストグラム表を使用した操作は実行されません。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

ヒストグラム表の名前を戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、ユーザー定義のヒストグラム表を戻します。このオブジェクト型およびヒストグラムの概要は、「SDO_GEOR_HISTOGRAMオブジェクト型」で説明しています。

レイヤーにヒストグラム表の名前を設定するには、SDO_GEOR.setHistogramTableプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー0 (オブジェクト全体)、1、2および3のヒストグラム表を戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。結果は、読みやすいように形式を変更しています。)

SELECT substr(sdo_geor.getHistogramTable(georaster, 0),1,20) histogramTable0,
substr(sdo_geor.getHistogramTable(georaster, 1),1,20) histogramTable1,
substr(sdo_geor.getHistogramTable(georaster, 2),1,20) histogramTable2,
substr(sdo_geor.getHistogramTable(georaster, 3),1,20) histogramTable3
FROM georaster_table WHERE georid=4;

HISTOGRAMTABLE0      HISTOGRAMTABLE1      HISTOGRAMTABLE2      HISTOGRAMTABLE3
-------------------- -------------------- -------------------- -----------------
HIST0                HIST1                HIST2                HIST3

6.58 SDO_GEOR.getID

構文

SDO_GEOR.getID(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトに関連付けられたユーザー定義の識別子の値を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

GeoRasterオブジェクトにユーザー定義の識別子の値を設定するには、SDO_GEOR.setIDプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表のGeoRasterオブジェクト(GEORASTER列)のユーザー定義の識別子の値を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT georid, substr(sdo_geor.getID(georaster),1,50) GEOR_ID
FROM georaster_table;

GEORID GEOR_ID
---------- --------------------------------------------------
2 TM_102
4 TM_104

6.59 SDO_GEOR.getInterleavingType

構文

SDO_GEOR.getInterleavingType(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのインターリーブ・タイプを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、BSQ (順次バンド)、BIL (ライン単位のバンドのインターリーブ)またはBIP (ピクセル単位のバンドのインターリーブ)のいずれかの値を戻します。

GeoRasterオブジェクトのインターリーブ・タイプを変更するには、SDO_GEOR.changeFormatCopyプロシージャを使用し、storageParamパラメータ文字列でinterleavingキーワードを使用します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が21である行に含まれているGeoRasterオブジェクト(GEORASTER列)のセル深度、インターリーブ・タイプ、およびブロック・タイプを戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT sdo_geor.getCellDepth(georaster) CellDepth,
substr(sdo_geor.getInterleavingType(georaster),1,8) interleavingType,
substr(sdo_geor.getBlockingType(georaster),1,8) blocking
FROM georaster_table WHERE georid=21;

CELLDEPTH INTERLEA BLOCKING
---------- -------- --------
8 BSQ      REGULAR

6.60 SDO_GEOR.getLayerDimension

構文

SDO_GEOR.getLayerDimension(
georaster  IN SDO_GEORASTER
) RETURN SDO_STRING_ARRAY;

説明

GeoRasterオブジェクトの論理レイヤー次元としてマップされた次元を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

レイヤー次元とは、論理的な概念であるレイヤーに関連付けられた物理エンティティを指します。今回のリリースでサポートされているレイヤー次元は、BANDのみです。つまり、論理的な概念であるレイヤーは、物理的な用語であるバンドに関連付けられています(「バンド、レイヤーおよびメタデータ」の図1-5を参照)。この場合、レイヤーはBAND次元にマップされるため、最初のレイヤーはバンド0、2番目のレイヤーはバンド1のようになります。

例

次の例では、GEORASTER_TABLE表の各GeoRasterオブジェクト(GEORASTER列)のレイヤー次元を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。(出力は、読みやすくするために変更が加えられています。)

SELECT georid, sdo_geor.getLayerDimension(georaster) FROM georaster_table;

GEORID SDO_GEOR.GETLAYERDIMENSION(GEORASTER)
---------- ------------------------------------------------------------------
2 SDO_STRING_ARRAY('BAND')
4 SDO_STRING_ARRAY('BAND')

6.61 SDO_GEOR.getLayerID

構文

SDO_GEOR.getLayerID(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのレイヤーに関連付けられたユーザー定義の識別子の値を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

ユーザー定義の識別子の値を戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

GeoRasterオブジェクトのレイヤーにユーザー定義の識別子の値を設定するには、SDO_GEOR.setLayerIDプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー0、1、2および3のユーザー定義の識別子の値を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT substr(sdo_geor.getLayerID(georaster, 0),1,12) layerID0,
substr(sdo_geor.getLayerID(georaster, 1),1,12) layerID1,
substr(sdo_geor.getLayerID(georaster, 2),1,12) layerID2,
substr(sdo_geor.getLayerID(georaster, 3),1,12) layerID3
FROM georaster_table WHERE georid=4;

LAYERID0     LAYERID1     LAYERID2     LAYERID3
------------ ------------ ------------ ------------
TM543        TM3          TM4          TM5

6.62 SDO_GEOR.getLayerOrdinate

構文

SDO_GEOR.getLayerOrdinate(     georaster       IN SDO_GEORASTER,      layerNumber  IN NUMBER      ) RETURN NUMBER;

説明

GeoRasterオブジェクトのレイヤーのバンド座標を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

物理バンドの座標を戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

戻される番号は、レイヤー(layerNumberパラメータ値)が関連付けられている物理バンドを指します。今回のリリースのデフォルトでは、関連付けは、レイヤー1がバンド0、レイヤー2がバンド1のようになります(「バンド、レイヤーおよびメタデータ」の図1-5を参照)。

レイヤーにバンド座標の値を設定するには、SDO_GEOR.setLayerOrdinateプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー0、1、2および3に関連付けられているバンド番号を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT sdo_geor.getLayerOrdinate(georaster, 0) layerOrdinate0,
sdo_geor.getLayerOrdinate(georaster, 1) layerOrdinate1,
sdo_geor.getLayerOrdinate(georaster, 2) layerOrdinate2,
sdo_geor.getLayerOrdinate(georaster, 3) layerOrdinate3
FROM georaster_table WHERE georid=4;

LAYERORDINATE0 LAYERORDINATE1 LAYERORDINATE2 LAYERORDINATE3
-------------- -------------- -------------- --------------
0              1              2

6.63 SDO_GEOR.getModelCoordinate

構文

SDO_GEOR.getModelCoordinate(
georaster          IN SDO_GEORASTER,
pyramidLevel    IN NUMBER,
cellCoordinate  IN SDO_NUMBER_ARRAY,
height               IN NUMBER DEFAULT NULL,
) RETURN SDO_GEOMETRY;

または

SDO_GEOR.getModelCoordinate(
georaster             IN SDO_GEORASTER,
pyramidLevel        IN NUMBER,
cellCoordinate      IN SDO_GEOMETRY,
modelCoordinate OUT SDO_GEOMETRY,
height                   IN NUMBER DEFAULT NULL);

説明

指定したピラミッド・レベルの指定したセル(ラスター)座標に関連付けられたジオメトリを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

cellCoordinateで指定するセルを含むピラミッド・レベルを指定します。

cellCoordinate

SDO_NUMBER_ARRAY型の場合、cellCoordinateにはセル座標系の点を示す2つの座標の配列を指定します(2つの座標とは、点の行番号と列番号のことです)。SDO_GEOMETRY型の場合、cellCoordinateでセル座標系内のジオメトリを指定します。

modelCoordinate

出力されるジオメトリを指定します。

height

3次元(X, Y, Z)の地理参照で使用するZの値を指定します。

使用上の注意

SDO_GEOR.getModelCoordinateには2つの構文があります。

- 最初の(modelCoordinateパラメータを指定しないファンクション)構文は、GeoRasterオブジェクトのラスター空間に存在する点の位置を変換する場合に使用します。

- 2つ目の(modelCoordinateパラメータを指定するプロシージャ)構文は、GeoRasterオブジェクトのラスター空間に存在するジオメトリを変換する場合に使用します。変換は、入力されたジオメトリの各頂点の座標を変換することで行われます。出力されるジオメトリが有効なものになるように、適切な入力ジオメトリを使用してください。たとえば、モデル座標系が測地座標系である場合、入力ジオメトリには円弧が含まれないようにします。

SDO_GEOR.getModelCoordinateは、GeoRasterオブジェクト上の点の位置を、地上座標系の対応する点の経度と緯度の座標に変換する場合に使用します。

GeoRasterオブジェクトが地理参照されている場合は、出力されるジオメトリにモデル(地上)座標系の座標が含まれます。GeoRasterオブジェクトが地理参照されていない場合は、出力されるジオメトリに元のイメージ・レベルのセル座標が含まれます。

GeoRasterオブジェクトが地理参照されている場合、出力されるジオメトリのSDO_SRID値はGeoRasterオブジェクトのモデルSRIDと同じです。

SDO_GEOR.getModelCoordinateは、指定されたモデル(地上)座標の点に関連付けられたセル(ラスター)座標系の座標を戻すSDO_GEOR.getCellCoordinateと対照的です。

例

次の例では、指定したGeoRasterオブジェクトのセル座標(100,100)に関連付けられたモデル座標を含む点ジオメトリ・オブジェクトを戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

SET NUMWIDTH 20
SELECT sdo_geor.getModelCoordinate(georaster, 0,
sdo_number_array(100,100)) mcoord
FROM georaster_table WHERE georid=4;

MCOORD(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
--------------------------------------------------------------------------------

SDO_GEOMETRY(2001, 82394, SDO_POINT_TYPE(347.666315789474, 43274.9052631579, NUL
L), NULL, NULL)

6.64 SDO_GEOR.getModelCoordLocation

構文

SDO_GEOR.getModelCoordLocation(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのモデル座標の位置を示す値を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

GeoRasterオブジェクトが地理参照されていない場合、またはmodelCoordinateLocation要素がSRSメタデータに指定されていない場合、このファンクションはNULL値を戻します。それ以外の場合は、SRSメタデータに指定されたmodelCoordinateLocation要素の値を戻します。

戻された値がNULLまたはCENTERの場合は、中心を基準にしたセル座標系であることを示します。値がUPPERLEFTの場合は、左上角を基準にしたセル座標系であることを示します。

GeoRasterオブジェクトのモデル座標の位置の値を設定または削除するには、SDO_GEOR.setModelCoordLocationプロシージャを使用します。

GCPを使用する地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

例

次の例では、指定したGeoRasterオブジェクトのモデル座標位置を戻します。

SELECT sdo_geor.getModelCoordLocation(georaster) modelCoordLocation
FROM georaster_table
WHERE georid = 1;

6.65 SDO_GEOR.getModelSRID

構文

SDO_GEOR.getModelSRID(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトのモデル(地上)空間に関連付けられた座標系(SDO_SRID値)を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

座標系がモデル空間に関連付けられていない場合、このファンクションはNULL値を戻します。

モデル空間に関連付けられた座標系(SDO_SRID値)を設定するには、SDO_GEOR.setModelSRIDプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表のGeoRasterオブジェクト(GEORASTER列)に関連付けられているSDO_SRID値を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT georid, sdo_geor.getModelSRID(georaster) SRID FROM georaster_table;

GEORID       SRID
---------- ----------
2       82394
4       82394

6.66 SDO_GEOR.getNODATA

構文

SDO_GEOR.getNODATA(
georaster      IN SDO_GEORASTER,
layerNumber IN NUMBER
) RETURN SDO_RANGE_ARRAY;

説明

GeoRasterオブジェクト内のNODATAセルを表す値または値の範囲を(重複値を除いて昇順に)戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

GeoRasterオブジェクト内のレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

GeoRasterオブジェクトの一部のセルでは、有効な値が割り当てられていないか、または収集されていない場合があります。このようなNODATA値を含むセルは、NODATAセルと呼ばれ、それらのセルが有効に定義されていないことを意味します。NODATAセルとして識別されたセルの意味または重要度の定義は、アプリケーションが行います。NODATA値およびその値の範囲の詳細は、「NODATA値および値の範囲」を参照してください。

このファンクションは、指定したGeoRasterオブジェクトの指定したラスター・レイヤーに関連付けられたすべてのNODATA値およびその値の範囲を、重複を除いた簡潔な形式で昇順で戻します。サブレイヤー(layerNumber > 0)に関連付けられたNODATA値およびその値の範囲のセットは、常にオブジェクト・レイヤー(layerNumber = 0)の値およびその値の範囲のスーパーセットになります。サブレイヤーの結果は、指定したサブレイヤー、オブジェクト・レイヤー、およびラスター定義情報の一部として格納されたリリース11g より前のすべてのNODATAメタデータに対するNODATAメタデータ・エントリを組み合せたものになります。

指定したGeoRasterオブジェクトまたはレイヤーに複数のNODATA値が含まれる場合は、SDO_RANGE_ARRAYオブジェクトを戻すファンクション構文を使用してください。SDO_RANGE_ARRAY型の詳細は、「NODATA値および値の範囲」を参照してください。

このファンクションがNULL値を戻す場合、GeoRasterオブジェクトまたは指定したレイヤーのすべてのセルが定義済であり、有効なセル値を持つことを示します。

GeoRasterオブジェクトにNODATA値を指定するには、SDO_GEOR.addNODATAプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表のGeoRasterオブジェクト(GEORASTER列)のNODATAセルで使用されている値を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT SDO_GEOR.getNODATA(georaster, 0) NODATA FROM georaster_table WHERE georid=0;

NODATA
------------
SDO_RANGE_ARRAY(SDO_RANGE(5,7))

6.67 SDO_GEOR.getPyramidMaxLevel

構文

SDO_GEOR.getPyramidMaxLevel(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトのピラミッドの最上位レベルの番号を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

ピラミッドの詳細は、「ピラミッド」を参照してください。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が21である行に含まれているGeoRasterオブジェクト(GEORASTER列)のピラミッド・タイプおよびピラミッドの最上位レベル番号を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT substr(sdo_geor.getPyramidType(georaster),1,10) pyramidType,
sdo_geor.getPyramidMaxLevel(georaster) maxLevel
FROM georaster_table WHERE georid=21;

PYRAMIDTYP   MAXLEVEL
---------- ----------
DECREASE            3

6.68 SDO_GEOR.getPyramidType

構文

SDO_GEOR.getPyramidType(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのピラミッド・タイプを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

ピラミッド・タイプは、NONE (ピラミッドが存在しない)またはDECREASEのいずれかです。

ピラミッドの詳細は、「ピラミッド」を参照してください。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が21である行に含まれているGeoRasterオブジェクト(GEORASTER列)のピラミッド・タイプおよびピラミッドの最上位レベル番号を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT substr(sdo_geor.getPyramidType(georaster),1,10) pyramidType,
sdo_geor.getPyramidMaxLevel(georaster) maxLevel
FROM georaster_table WHERE georid=21;

PYRAMIDTYP   MAXLEVEL
---------- ----------
DECREASE            3

6.69 SDO_GEOR.getRasterBlockLocator

構文

SDO_GEOR.getRasterBlockLocator(
georaster                  IN SDO_GEORASTER,
pyramidLevel             IN NUMBER,
bandBlockNumber    IN NUMBER,
rowBlockNumber       IN NUMBER,
columnBlockNumber IN NUMBER,
loc                              IN OUT NOCOPY BLOB,
isBitmapMask            IN VARCHAR2 DEFAULT NULL,
lock_for_write            IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.getRasterBlockLocator(
georaster        IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
rowNumber    IN NUMBER,
colNumber      IN NUMBER,
bandNumber  IN NUMBER,
offset              OUT NUMBER,
loc                   IN OUT NOCOPY BLOB,
isBitmapMask  IN VARCHAR2 DEFAULT NULL,
lock_for_write  IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.getRasterBlockLocator(
georaster        IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
ptGeom          IN SDO_GEOMETRY,
layerNumber  IN NUMBER,
offset              OUT NUMBER,
loc                   IN OUT NOCOPY BLOB,
isBitmapMask  IN VARCHAR2 DEFAULT NULL,
lock_for_write  IN VARCHAR2 DEFAULT NULL);

説明

このプロシージャには3つの構文があります。

- 最初にリストされている構文は、pyramidLevel、bandBlockNumber、rowBlockNumberおよびcolumnBlockNumberパラメータの指定によってラスター・ブロックのLOBロケータを戻します。

- 2番目と3番目にリストされている構文は、特定の単一セルを含むラスター・ブロックのLOBロケータおよびラスター・ブロック内のセルのオフセットを戻します。特定の単一セルは、pyramidLevel、rowNumber、columnNumberおよびbandNumberパラメータによって、またはセル座標空間かモデル座標空間の点ジオメトリ・パラメータ(ptGeom)によって識別されます。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

ブロックのピラミッド・レベルを指定します。

bandBlockNumber

ブロックのバンド番号を指定します。

bandNumber

セルのバンド番号を指定します。

rowBlockNumber

ブロックの行番号を指定します。

rowNumber

セルの行番号を指定します。

columnBlockNumber

ブロックの列番号を指定します。

columnNumber

セルの列番号を指定します。

ptGeom

セルの位置を特定する点ジオメトリを指定します。

layerNumber

値を戻すセルを含む論理レイヤーの番号を指定します。(「バンド、レイヤーおよびメタデータ」で説明したように、論理レイヤー番号は、物理バンドの座標番号に1を足した値です。)

offset

検索されるラスター・ブロック内のセルのオフセット(バイト単位)を含める出力パラメータを指定します。ラスター・ブロックが圧縮される場合、それは常にブロックの解凍バージョンに含まれるセルのオフセットを示します。

loc

LOBロケータを指定します。

isBitmapMask

ビットマップ・マスク・ブロックにアクセスする場合は文字列TRUEを指定します。通常のラスター・ブロックにアクセスする場合は文字列FALSEを指定します。このパラメータを指定しない場合は、通常のラスター・ブロックにアクセスします。ビットマップ・マスクの詳細は、「ビットマップ・マスク」を参照してください。

lockForWrite

文字列TRUEを指定すると、ラスター・データ表の行がロックされ、現行のトランザクションが終了するまで、他のユーザーはその行をロックしたり更新することができなくなります。文字列FALSEを指定すると、ラスター・データ表の行はロックされません。このパラメータを指定しない場合、行はロックされません。

使用上の注意

このプロシージャは、指定されたパラメータを使用してラスター・ブロック・ロケータ(および一部の構文ではオフセット)を取得します。LOBロケータはオープンされず、データの読取りや処理は行われません。LOBロケータのオープンおよびクローズ、LOBロケータからのデータの読取りおよびLOBロケータへのデータの書込みには、標準のLOB操作を使用する必要があります。

データの読取りまたは書込みが正しく行われるようにするには、ラスター・データの物理記憶域(「GeoRasterの物理記憶域」を参照)を理解しておく必要があります。また、必要に応じてラスター・データを圧縮および解凍する必要があります。

LOBロケータについては、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

例

次の例では、2つのラスター・ブロックのLOBロケータを取得します。1つ目は通常のラスター・ブロックで、2つ目はビットマップ・マスク・ブロックです。SDO_GEOR.getRasterBlockLocatorプロシージャへのいずれのコールも、ラスター・データ表の行がロックされます。

DECLARE
gr sdo_georaster;
lb blob;
offset number;
BEGIN
select georaster into gr from georaster_table where georid=1;
sdo_geor.getRasterBlockLocator(gr, 0, 0, 0, 0, offset,lb, null, 'TRUE');
sdo_geor.getRasterBlockLocator(gr, 0, 0, 0, 0, offset,lb, 'TRUE', 'TRUE');
END;
/

6.70 SDO_GEOR.getRasterBlocks

構文

SDO_GEOR.getRasterBlocks(
georaster        IN SDO_GEORASTER,
pyramidLevel  IN NUMBER,
window           IN SDO_NUMBER_ARRAY
) RETURN SDO_RASTERSET;

または

SDO_GEOR.getRasterBlocks(
georaster        IN SDO_GEORASTER,
pyramidLevel  IN NUMBER,
window           IN SDO_GEOMETRY
) RETURN SDO_RASTERSET;

説明

指定されたピラミッド・レベルで、指定されたウィンドウと空間的に相互作用するすべてのブロックを識別する、SDO_RASTERSETコレクション型のオブジェクトを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

指定したウィンドウと空間的に相互作用するブロックを戻すピラミッド・レベルを指定します。

window

pyramidLevelで指定したレベル内のブロックを戻すウィンドウを指定します。データ型はSDO_NUMBER_ARRAYまたはSDO_GEOMETRYのいずれかです。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合は、SDO_SRID要件の「使用上の注意」を参照してください。

使用上の注意

SDO_RASTERSETコレクション型の詳細は、「SDO_RASTERSETコレクション型」を参照してください。

windowパラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は次のいずれかの値である必要があります。

- NULL (ラスター空間を指定)

- MDSYS.CS_SRS表のSRID列の値
windowパラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、windowパラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)

例

次の例では、指定したウィンドウと空間的に相互作用するすべてのラスター・ブロックを識別するコレクション・セットを戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr sdo_georaster;
ds sdo_rasterset;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=2;
ds := sdo_geor.getRasterBlocks(gr, 0, sdo_number_array(11,65,192,244));
COMMIT;
END;
/

6.71 SDO_GEOR.getRasterData

構文

SDO_GEOR.getRasterData(
georaster         IN SDO_GEORASTER,
pyramidLevel    IN NUMBER,
rasterBlob        IN OUT NOCOPY BLOB,
storageParam  IN VARCHAR2 DEFAULT NULL,
bgValues          IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

指定されたピラミッド・レベルで、入力されたGeoRasterオブジェクトのすべてのラスター・データを含む単一のBLOBオブジェクトを作成します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

操作を実行するピラミッド・レベルを指定します。

rasterBlob

結果を格納するBLOBオブジェクトを指定します。

storageParam

rasterBlobの作成時に適用される記憶域パラメータを示す文字列を指定します。このプロシージャでサポートされているstorageParamキーワードはcelldepth、compression、interleavingおよびqualityのみで、他のキーワードはすべて無視されます。記憶域パラメータについては、「記憶域パラメータ」を参照してください。

storageParamがNULLの場合、または指定されない場合は、セル深度、インターリーブ、圧縮タイプ(および該当する場合は圧縮品質)は、入力されたGeoRasterオブジェクトと同じになります。

bgValues

スパース・データに入力する背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

このパラメータは、空のラスター・ブロック(「空のラスター・ブロック」を参照)がソースに含まれる場合に有効です。このパラメータを指定しない場合、空のラスター・ブロックから導出されるすべてのセルは、出力のBLOBでは値0 (ゼロ)が埋め込まれます。

使用上の注意

GeoRasterオブジェクトがブロック化されている場合、指定したピラミッド・レベルのすべてのブロックのモザイクが戻されます。

プロシージャが完了すると、rasterBlobオブジェクトには、タイル処理されていないセル(ピクセル)データが含まれます。

入力されたGeoRasterオブジェクトが圧縮されていない場合、またはstorageParamパラメータで指定した以外の形式で圧縮されている場合でも、圧縮を指定できます。圧縮済の入力されたGeoRasterオブジェクトに対して、解凍された出力を得るには、storageParamパラメータでcompression=NONEを指定します。GeoRasterの圧縮および解凍の詳細は、「圧縮と解凍」を参照してください。

例

次の例では、フルフォーマット基準のJPEG (JPEG-F)圧縮を使用して、GEORASTER_TABLE表内でID値が2のGeoRasterオブジェクトのすべてのラスター・データからBLOBオブジェクトを作成します。この表の定義は、「記憶域パラメータ」の例1-1の次に示されています。

DECLARE
gr sdo_georaster;
lb blob;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=2;
dbms_lob.createTemporary(lb, FALSE);
sdo_geor.getRasterData(gr, 0, lb, 'compress=JPEG-F');
dbms_lob.freeTemporary(lb);
END;
/

6.72 SDO_GEOR.getRasterRange

構文

SDO_GEOR.getRasterRange(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER DEFAULT 0
) RETURN SDO_NUMBER_ARRAY;

説明

GeoRasterオブジェクトの指定したレイヤーまたはGeoRasterオブジェクト自体(オブジェクト・レイヤー)の最小および最大のセル値を計算して戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

セル値の範囲を戻すレイヤーの番号を指定します。値が0 (ゼロ、デフォルト)の場合、オブジェクト・レイヤーが指定されます。(「バンド、レイヤーおよびメタデータ」で説明したように、論理レイヤー番号は、物理バンドの座標番号に1を足した値です。)

使用上の注意

このファンクションは、GeoRasterオブジェクトの指定したレイヤーのすべてのセル値を処理し、2つの値(セルの最小値と最大値)とともにSDO_NUMBER_ARRAYオブジェクトを戻します。

GeoRasterオブジェクトに、生成された統計メタデータがある場合、SDO_GEOR.getStatisticsファンクションをコールして、そのラスター範囲の最大値と最小値を簡単に直接取り出すことができます。

バンドおよびレイヤーの詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。

例

次の例では、GeoRasterオブジェクト全体のラスター範囲を計算して戻します。

DECLARE
gr sdo_georaster;
range sdo_number_array;
BEGIN
select georaster into gr from georaster_table where georid=1;
range:=sdo_geor.getRasterRange(gr, 0);
END;
/

6.73 SDO_GEOR.getRasterSubset

構文

SDO_GEOR.getRasterSubset(
georaster         IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
window            IN SDO_NUMBER_ARRAY,
bandNumbers  IN VARCHAR2,
rasterBlob        IN OUT NOCOPY BLOB,
storageParam  IN VARCHAR2 DEFAULT NULL,
bgValues          IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.getRasterSubset(
georaster         IN SDO_GEORASTER,
pyramidLevel    IN NUMBER,
inWindow         IN SDO_NUMBER_ARRAY,
bandNumbers  IN VARCHAR2,
rasterBlob        IN OUT NOCOPY BLOB,
outWindow       OUT SDO_NUMBER_ARRAY,
storageParam  IN VARCHAR2 DEFAULT NULL,
bgValues          IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.getRasterSubset(
georaster         IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
window            IN SDO_GEOMETRY,
layerNumbers  IN VARCHAR2,
rasterBlob        IN OUT NOCOPY BLOB,
storageParam  IN VARCHAR2 DEFAULT NULL,
bgValues          IN SDO_NUMBER_ARRAY DEFAULT NULL,
polygonClip      IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.getRasterSubset(
georaster         IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
inWindow         IN SDO_GEOMETRY,
layerNumbers  IN VARCHAR2,
rasterBlob        IN OUT NOCOPY BLOB,
outWindow       OUT SDO_NUMBER_ARRAY,
storageParam  IN VARCHAR2 DEFAULT NULL,
bgValues          IN SDO_NUMBER_ARRAY DEFAULT NULL,
polygonClip      IN VARCHAR2 DEFAULT NULL);

説明

指定されたピラミッド・レベルで、指定された矩形ウィンドウまたはポリゴンのジオメトリ・オブジェクトの境界内または境界上に存在するすべてのセルを含む単一のBLOBオブジェクトを作成します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

操作を実行するピラミッド・レベルを指定します。

window, inWindow

セルのクロッピング元となる矩形ウィンドウまたはポリゴンのジオメトリ・オブジェクトを指定します。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYでpolygonClip値がFALSEの場合、ジオメトリ・オブジェクトのMBRがウィンドウとして使用されますが、データ型がSDO_GEOMETRYでpolygonClip値がTRUEの場合、ポリゴンのジオメトリ・オブジェクト(有効な場合)がウィンドウとして使用されます。データ型がSDO_GEOMETRYの場合は、SDO_SRID要件の「使用上の注意」も参照してください。

windowまたはinWindowがSDO_NUMBER_ARRAY型の場合は、bandNumbersパラメータを使用して、1つ以上のバンド番号を指定します。windowまたはinWindowがSDO_GEOMETRY型の場合は、layerNumbersパラメータを使用して、1つ以上のレイヤー番号を指定します。

layerNumbers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。このパラメータにNULL値を指定した場合、すべてのレイヤーで処理が実行されます。

bandNumbers

処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、1-3はバンド1、2および3を示します)。このパラメータにNULL値を指定した場合、すべてのバンドで処理が実行されます。

rasterBlob

処理の結果(モザイク処理されたラスター・サブセット)を格納するBLOBオブジェクトを指定します。処理の前に、存在しているか、または初期化されている必要があります。

outWindow

セル空間内で出力ウィンドウの左上角および右下角の座標を指定するSDO_NUMBER_ARRAYオブジェクトを指定します。

storageParam

rasterBlobの作成時に適用される記憶域パラメータを示す文字列を指定します。このプロシージャでサポートされているstorageParamキーワードはcelldepth、compression、interleavingおよびqualityのみで、他のキーワードはすべて無視されます。記憶域パラメータについては、「記憶域パラメータ」を参照してください。

storageParamがNULLの場合、または指定されない場合は、セル深度、インターリーブ、圧縮タイプ(および該当する場合は圧縮品質)は、入力されたGeoRasterオブジェクトと同じになります。

bgValues

スパース・データに入力する背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

このパラメータは、空のラスター・ブロック(「空のラスター・ブロック」を参照)がソースに含まれる場合、および出力ウィンドウが空のラスター・ブロックと交差する場合に有効です。このパラメータを指定しない場合は、空のラスター・ブロックから導出される出力ウィンドウ内のすべてのセルは、出力のBLOBでは値0 (ゼロ)が埋め込まれます。

polygonClip

文字列TRUEでは、windowまたはinWindowジオメトリ・オブジェクトがサブセット操作で使用されますが、文字列FALSEまたはNULL値では、windowまたはinWindowジオメトリ・オブジェクトの最小境界矩形(MBR)がサブセット操作で使用されます。

使用上の注意

このプロシージャの構文は4種類あり、入力ウィンドウの指定がジオメトリ・オブジェクトによるものとウィンドウの左上角および右下角によるもののいずれであるか、およびoutWindowパラメータを使用して出力ウィンドウの座標を戻すかどうかによって異なります。

windowまたはinWindowパラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は次のいずれかの値である必要があります。

- NULL (ラスター空間を指定)

- MDSYS.CS_SRS表のSRID列の値
windowパラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、windowパラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)

windowまたはinWindowパラメータで測地MBRを指定する場合は、日付変更線をまたぐMBRは指定できません。測地MBRについては、『Oracle Spatial and Graph開発者ガイド』を参照してください。

プロシージャが完了すると、rasterBLOBパラメータには、タイル処理されていないクロッピング済のウィンドウのセル(ピクセル)データが含まれます。クロッピング済のウィンドウとは、処理対象として指定したウィンドウとソースGeoRasterオブジェクトの空間エクステントが重複する部分のことです。outWindowパラメータを指定した場合は、プロシージャが完了すると、セル空間内のクロッピング済のウィンドウの座標がそのパラメータに含まれます。

BLOBには埋込みがありません。ただし、セル深度が8ビットより小さく、出力に必要なビット数の合計が8で除算できない場合を除きます。このような場合は、通常の埋込みとは異なり、結果の最後のバイトでのみ、後続のビットに対し0 (ゼロ)が埋め込まれます。

polygonClipがTRUEで、このプロシージャによって矩形イメージのサブセットが作成されるが、ジオメトリは矩形ではない場合、SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTファンクションでinWindowジオメトリ・オブジェクトの妥当性を確認してください。無効なジオメトリに対しては、このプロシージャは、polygonClip値がFALSEまたはNULL値の場合のように動作します。

入力されたGeoRasterオブジェクトが圧縮されていない場合、またはstorageParamパラメータで指定した以外の形式で圧縮されている場合でも、圧縮を指定できます。圧縮済の入力されたGeoRasterオブジェクトに対して、解凍された出力を得るには、storageParamパラメータでcompression=NONEを指定します。GeoRasterの圧縮および解凍の詳細は、「圧縮と解凍」を参照してください。

サブセットを取得してそれを別の座標系に再投影する場合、このプロシージャは使用せず、かわりにrasterBlobパラメータを含む構文でSDO_GEOR.reprojectプロシージャを使用して、このBLOBに目的のサブセットが含まれるようにします。

例

次の例では、指定したウィンドウ内の指定したピラミッド・レベルのラスター・データを取得します。(GEORASTER_TABLE表を参照します。この表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr sdo_georaster;
lb blob;
win sdo_number_array;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=4;
dbms_lob.createTemporary(lb, TRUE);
win := sdo_number_array(-21,100,100,200);
sdo_geor.getRasterSubset(gr, 0, win, null, lb);
dbms_lob.freeTemporary(lb);
END;
/

次の例は、クロッピングの対象とするウィンドウの取得方法を示しています。(GEORASTER_TABLE表を参照します。この表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr sdo_georaster;
lb blob;
win1 sdo_geometry;
win2 sdo_number_array;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=4;
dbms_lob.createTemporary(lb, TRUE);
win1 := sdo_geometry(2003,82263,null,sdo_elem_info_array(1,1003,3),
sdo_ordinate_array(1828466,646447,1823400,642512));
sdo_geor.getRasterSubset(gr, 0, win1, '1-3', lb, win2, 'compression=NONE');
dbms_lob.freeTemporary(lb);
IF win2 IS NOT NULL THEN
dbms_output.put_line('output window: (' || win2(1) || ',' ||
win2(2) || ',' || win2(3) || ',' || win2(4) || ')');
END IF;
END;
/

次の例は、ポリゴンを使用してサブセットを問い合せる際にクリップを実行する方法を示しています。

DECLARE
gr sdo_georaster;
lb blob;
win1 sdo_geometry;
win2 sdo_number_array;
BEGIN
dbms_lob.createTemporary(lb, TRUE);
SELECT georaster INTO gr FROM rstpoly_table WHERE georid=1;
-- querying/clipping polygon
win1 := sdo_geometry(2003, 26986, null, sdo_elem_info_array(1,1003,1),
sdo_ordinate_array(237040,   897924,
237013.3, 897831.6,
237129,   897840,
237182.5, 897785.5,
237239.9, 897902.7,
237223,   897954,
237133,   897899,
237040,   897924));
sdo_geor.getRasterSubset(gr, 0, win1, '1-3',
lb, win2, NULL, NULL, 'TRUE');
-- Then work on the resulting subset stored in lb.
END;
/

6.74 SDO_GEOR.getScaling

構文

SDO_GEOR.getScaling(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN SDO_NUMBER_ARRAY;

説明

GeoRasterオブジェクトのレイヤーに対するスケール変更ファンクションの係数を戻します。

注意:

今回のリリースのGeoRasterでは、スケール変更ファンクションを使用した操作は実行されません。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

係数を戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

スケール変更ファンクションは、次のとおりです。

value = (a_0 + a_1 * cellvalue) / (b_0 + b_1 * cellvalue)

係数の順序は、a_0、a_1、b_0、b_1です。

例

次の例では、GEORASTER_TABLEという表で、指定されたGeoRasterオブジェクトのレイヤー番号が0 (オブジェクト全体)のスケール変更係数を戻します。GEORASTER_TABLE表の定義は「記憶域パラメータ」の例1-1の次に説明されています。ここでは、元の値の範囲0.0から1000.0を、0.0から250.0の範囲内にスケール変更します。

SELECT sdo_geor.getScaling(georaster, 0) FROM georaster_table WHERE georid=0;

SDO_GEOR.GETSCALING(GEORASTER,0)
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(0.0, 0.25, 1, 0.0)

6.75 SDO_GEOR.getSourceInfo

構文

SDO_GEOR.getSourceInfo(
georaster   IN OUT SDO_GEORASTER,
) RETURN SDO_STRING2_ARRAY;

説明

GeoRasterオブジェクトのソース情報を取得します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、GeoRasterオブジェクトのメタデータの<sourceInfo>要素(「GeoRasterメタデータのXMLスキーマ」を参照)に格納されたソース情報を戻します。

SDO_STRING2_ARRAY型はVARRAY(2147483647) OF VARCHAR2(4096)として定義されます。

ソース情報を置換または削除する場合は、SDO_GEOR.setSourceInfoプロシージャを使用します。ソース情報を追加する場合は、SDO_GEOR.addSourceInfoプロシージャを使用します。

例

次の例では、指定したGeoRasterオブジェクトに複数のソース情報を設定および追加し、その後でソース情報を取得します。

declare
gr sdo_georaster;
begin
select georaster into gr from georaster_table where georid=1 for update;
sdo_geor.setSourceInfo(gr, 'Copyright (c) 2002, 2007, Oracle Corporation.');
sdo_geor.addSourceInfo(gr, 'All rights reserved.');
update georaster_table set georaster=gr where georid=1;
end;
/

select * from table(select sdo_geor.getSourceInfo(georaster) from georaster_table where id=1);

COLUMN_VALUE
--------------------------------------------------------------------------------
Copyright (c) 2002, 2007, Oracle Corporation.
All rights reserved.

6.76 SDO_GEOR.getSpatialDimNumber

構文

SDO_GEOR.getSpatialDimNumber(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトの空間次元数を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

今回のリリースでは、このファンクションは常に2を戻します。

GeoRasterオブジェクトの各空間次元のセル数を戻すには、SDO_GEOR.getSpatialDimSizesファンクションを使用します。

例

次の例では、GEORASTER_TABLEという表で、GeoRasterオブジェクトの各空間次元のGEORID列値、空間次元数およびセル数を戻します。GEORASTER_TABLE表の定義は「記憶域パラメータ」の例1-1の次に説明されています。(出力は、読みやすくするために変更が加えられています。)

SELECT georid, sdo_geor.getSpatialDimNumber(georaster) spatialDim,
sdo_geor.getSpatialDimSizes(georaster) spatialDimSizes
FROM georaster_table;

GEORID SPATIALDIM SPATIALDIMSIZES
---------- ---------- --------------------------------------------------------
0          2 SDO_NUMBER_ARRAY(1024, 1024)

1          2 SDO_NUMBER_ARRAY(384, 251)

2          2 SDO_NUMBER_ARRAY(512, 512)

4          2 SDO_NUMBER_ARRAY(512, 512)

11          2 SDO_NUMBER_ARRAY(7957, 5828)

6.77 SDO_GEOR.getSpatialDimSizes

構文

SDO_GEOR.getSpatialDimSizes(
georaster  IN SDO_GEORASTER
) RETURN SDO_NUMBER_ARRAY;

説明

GeoRasterオブジェクトの各空間次元のセル数を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

GeoRasterオブジェクトの空間次元数を戻すには、SDO_GEOR.getSpatialDimNumberファンクションを使用します。

例

次の例では、GeoRasterオブジェクトの空間次元サイズおよびバンド数を戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。結果は、読みやすいように形式を変更しています。)

SELECT sdo_geor.getSpatialDimSizes(georaster) spatialDimSizes,
sdo_geor.getBandDimSize(georaster) bandDimSize
FROM georaster_table WHERE georid=21;

SPATIALDIMSIZES                  BANDDIMSIZE
--------------------------       -----------
SDO_NUMBER_ARRAY(512, 512)           1

6.78 SDO_GEOR.getSpatialResolutions

構文

SDO_GEOR.getSpatialResolutions(
georaster  IN SDO_GEORASTER
) RETURN SDO_NUMBER_ARRAY;

説明

GeoRasterオブジェクトの各空間次元の空間解像度の値を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

各値は、ピクセルの空間次元によって表現されるデータ領域に関連付けられた測定単位の数を示します。たとえば、空間解像度の値が(10,10)で、地上データの測定単位がmである場合、各ピクセルは10m×10mの領域を示します。

空間解像度は、特にGeoRasterオブジェクトが幾何補正されていない場合、地理参照情報との一貫性がない場合があります。SDO_GEOR.setSpatialResolutionsプロシージャを使用すると、空間解像度を、イメージの平均解像度またはデータ収集時の解像度に設定できます。この場合、精密な測定には地理参照情報を使用する必要があります。

例

次の例では、GeoRasterオブジェクトの列次元および行次元(X次元およびY次元)の空間解像度の値を戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT sdo_geor.getSpatialResolutions(georaster) spatialResolution
FROM georaster_table WHERE georid=42;

SPATIALRESOLUTION
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(28.5, 28.5)

6.79 SDO_GEOR.getSpectralResolution

構文

SDO_GEOR.getSpectralResolution(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトがハイパースペクトルまたはマルチバンド・イメージである場合、そのスペクトル解像度を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

バンドの波長幅は、スペクトル単位とスペクトル解像度を組み合せて示します。たとえば、スペクトル解像度の値が2で、スペクトル単位の値がMILLIMETERである場合、バンドの波長幅は2mmです。

GeoRasterオブジェクトのスペクトル解像度を設定するには、SDO_GEOR.setSpectralResolutionプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表に含まれている、空間参照されるすべてのGeoRasterオブジェクト(GEORASTER列)のスペクトル単位およびスペクトル解像度を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT georid, substr(sdo_geor.getSpectralUnit(georaster),1,20) spectralUnit,
sdo_geor.getSpectralResolution(georaster) spectralResolution
FROM georaster_table
WHERE sdo_geor.isSpatialReferenced(georaster)='TRUE';

GEORID SPECTRALUNIT         SPECTRALRESOLUTION
---------- -------------------- ------------------
4 MILLIMETER                        0.075

6.80 SDO_GEOR.getSpectralUnit

構文

SDO_GEOR.getSpectralUnit(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

バンドの波長幅を示す測定単位を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、METER、MILLIMETER、MICROMETERまたはNANOMETERのいずれかの値を戻します。

バンドの波長幅は、スペクトル単位とスペクトル解像度を組み合せて示します。たとえば、スペクトル解像度の値が2で、スペクトル単位の値がMILLIMETERである場合、バンドの波長幅は2mmです。

GeoRasterオブジェクトのスペクトル単位を設定するには、SDO_GEOR.setSpectralUnitプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表に含まれている、空間参照されるすべてのGeoRasterオブジェクト(GEORASTER列)のスペクトル単位およびスペクトル解像度を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT georid, substr(sdo_geor.getSpectralUnit(georaster),1,20) spectralUnit,
sdo_geor.getSpectralResolution(georaster) spectralResolution
FROM georaster_table
WHERE sdo_geor.isSpatialReferenced(georaster)='TRUE';

GEORID SPECTRALUNIT         SPECTRALRESOLUTION
---------- -------------------- ------------------
4 MILLIMETER                        0.075

6.81 SDO_GEOR.getSRS

構文

SDO_GEOR.getSRS(
georaster  IN SDO_GEORASTER
) RETURN SDO_GEOR_SRS;

説明

GeoRasterオブジェクトの空間参照に関連する情報を含むSDO_GEOR_SRS型のオブジェクトを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

SDO_GEOR_SRS型の詳細は、「SDO_GEOR_SRSオブジェクト型」を参照してください。

例

次の例では、GEORASTER_TABLE表に含まれている、空間参照されるすべてのGeoRasterオブジェクト(GEORASTER列)の空間参照に関連する情報を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT georid, sdo_geor.getSRS(georaster) SRS
FROM georaster_table
WHERE sdo_geor.isSpatialReferenced(georaster)='TRUE';

GEORID
----------
SRS(ISREFERENCED, ISRECTIFIED, ISORTHORECTIFIED, SRID, SPATIALRESOLUTION, SPATIA
--------------------------------------------------------------------------------
4
SDO_GEOR_SRS('TRUE', 'TRUE', NULL, 82262, SDO_NUMBER_ARRAY(28.5, 28.5), NULL, NU
LL, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, NULL, NULL, NULL, SDO_NUMBER_ARRAY(1, 2, 1, 3,
32631.5614, 0, -.03508772), SDO_NUMBER_ARRAY(1, 0, 0, 1, 1), SDO_NUMBER_ARRAY(1
, 2, 1, 3, -7894.7544, .035087719, 0), SDO_NUMBER_ARRAY(1, 0, 0, 1, 1) , NULL,
NULL, NULL, NULL, NULL)

6.82 SDO_GEOR.getStatistics

構文

SDO_GEOR.getStatistics(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN SDO_NUMBER_ARRAY;

説明

レイヤーに関連付けられた統計データを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

統計を戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)の<statisticDatasetType>要素によって記述された統計データを戻します。このファンクションは、MIN、MAX、MEAN、MEDIAN、MODEVALUEおよびSTDの値の配列を戻します。

レイヤーに関連する統計データを設定するには、SDO_GEOR.setStatisticsプロシージャを使用します。

例

次の例では、GeoRasterオブジェクトのレイヤー1の統計データを戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT sdo_geor.getStatistics(georaster, 1) layer1
FROM georaster_table WHERE georid=4;

LAYER1
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(0, 255, 100, 127, 95, 25)

6.83 SDO_GEOR.getTotalLayerNumber

構文

SDO_GEOR.getTotalLayerNumber(
georaster  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトのレイヤーの合計数を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

レイヤーの詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。

例

次の例では、GEORASTER_TABLE表の各GeoRasterオブジェクト(GEORASTER列)のレイヤー合計数を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。

SELECT georid, sdo_geor.getTotalLayerNumber(georaster) totalLayerNumber
FROM georaster_table;

GEORID TOTALLAYERNUMBER
---------- ----------------
2                1
4                3

6.84 SDO_GEOR.getULTCoordinate

構文

SDO_GEOR.getULTCoordinate(
georaster  IN SDO_GEORASTER
) RETURN SDO_NUMBER_ARRAY ;

説明

GeoRasterオブジェクトの左上角のセル座標を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、2つまたは3つの数値を戻します。2つの数値が戻される場合、それらは行および列の座標です。3つの数値が戻される場合、それらは行、列およびバンドの座標です。

例

次の例では、GeoRasterオブジェクトの左上角の行、列およびバンドの座標を戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT sdo_geor.getULTCoordinate(georaster) FROM georaster_table WHERE georid=23;

SDO_GEOR.GETULTCOORDINATE(GEORASTER)
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(256, 0, 0)

6.85 SDO_GEOR.getVAT

構文

SDO_GEOR.getVAT(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのレイヤーに関連付けられた値属性表(VAT)の名前を戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

VATを戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

値属性表の詳細は、「地理情報システム」を参照してください。

GeoRasterオブジェクトのレイヤーに関連付ける値属性表の名前を設定するには、SDO_GEOR.setVATプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー0、1、2および3の値属性表を戻します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。結果は、読みやすいように形式を変更しています。)

SELECT substr(sdo_geor.getVAT(georaster, 0),1,20) vatTable0,
substr(sdo_geor.getVAT(georaster, 1),1,20) vatTable1,
substr(sdo_geor.getVAT(georaster, 2),1,20) vatTable2,
substr(sdo_geor.getVAT(georaster, 3),1,20) vatTable3
FROM georaster_table WHERE georid=4;

VATTABLE0            VATTABLE1            VATTABLE2            VATTABLE3
-------------------- -------------------- -------------------- ----------------
VAT0                 VAT1                 VAT2                 VAT1

6.86 SDO_GEOR.getVersion

構文

SDO_GEOR.getVersion(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのユーザー指定のバージョンを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

バージョンは、「メジャー・バージョン番号.マイナー・バージョン番号」の形式で戻されます。

GeoRasterオブジェクトのユーザー指定のバージョンを設定するには、SDO_GEOR.setVersionプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表に含まれているGeoRasterオブジェクト(GEORASTER列)のユーザー指定のバージョンを戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。(出力は、読みやすくするために変更が加えられています。)

SELECT georid, sdo_geor.getVersion(georaster) version FROM georaster_table;

GEORID VERSION
---------- --------------------------------------------------------------------
2  10.1
4  9i.2

6.87 SDO_GEOR.hasBitmapMask

構文

SDO_GEOR.hasBitmapMask(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトまたはレイヤーにビットマップ・マスクが関連付けられているかどうかを確認します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

確認するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、GeoRasterオブジェクトまたはレイヤーにビットマップ・マスクが関連付けられている場合は文字列TRUEを戻し、ビットマップ・マスクが関連付けられていない場合は文字列FALSEを戻します。

ビットマップ・マスクの詳細は、「ビットマップ・マスク」を参照してください。

例

次の例では、指定したGeoRasterオブジェクトのレイヤー0から4にビットマップ・マスクが関連付けられているかどうかを確認します。

SELECT substr(sdo_geor.hasBitmapMask(georaster,0),1,12) BM0,
substr(sdo_geor.hasBitmapMask(georaster,1),1,12) BM1,
substr(sdo_geor.hasBitmapMask(georaster,2),1,12) BM2,
substr(sdo_geor.hasBitmapMask(georaster,3),1,12) BM3
FROM georaster_table WHERE georid=0;

6.88 SDO_GEOR.hasGrayScale

構文

SDO_GEOR.hasGrayScale(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのレイヤーにグレースケール情報が含まれているかどうかを確認します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

確認するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、レイヤーにグレースケール情報が含まれる場合は文字列TRUEを戻し、レイヤーでグレースケール表現が使用されていない場合はFALSEを戻します。グレースケール表示の詳細は、「SDO_GEOR_GRAYSCALEオブジェクト型」を参照してください。

レイヤーにグレースケール情報が含まれる場合、グレースケール・マッピングとグレースケール・マッピング表名を取得および設定できます。SDO_GEOR.getGrayScaleファンクションとSDO_GEOR.getGrayScaleTableファンクション、およびSDO_GEOR.setGrayScaleプロシージャとSDO_GEOR.setGrayScaleTableプロシージャを参照してください。

例

次の例では、指定したGeoRasterオブジェクト(GEORASTER列)のレイヤー0および1に、グレースケール情報が含まれているかどうかを確認します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT substr(sdo_geor.hasGrayScale(georaster, 0),1,15) hasGrayScale0,
substr(sdo_geor.hasGrayScale(georaster, 1),1,15) hasGrayScale1
FROM georaster_table WHERE georid=4;

HASGRAYSCALE0   HASGRAYSCALE1
--------------- ---------------
TRUE            FALSE

6.89 SDO_GEOR.hasNODATAMask

構文

SDO_GEOR.hasNODATAMask(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトまたはレイヤーにNODATAビットマップ・マスクが関連付けられているかどうかを確認します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

確認するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、GeoRasterオブジェクトまたはレイヤーにNODATAビットマップ・マスクが関連付けられている場合は文字列TRUEを戻し、NODATAビットマップ・マスクが関連付けられていない場合は文字列FALSEを戻します。

ビットマップ・マスクの詳細は、「ビットマップ・マスク」を参照してください。

例

次の例では、指定したGeoRasterオブジェクトのレイヤー0から4にNODATAビットマップ・マスクが関連付けられているかどうかを確認します。

SELECT substr(sdo_geor.hasNODATAMask(georaster,0),1,12) BM0,
substr(sdo_geor.hasNODATAMask(georaster,1),1,12) BM1,
substr(sdo_geor.hasNODATAMask(georaster,2),1,12) BM2,
substr(sdo_geor.hasNODATAMask(georaster,3),1,12) BM3
FROM georaster_table WHERE georid=0;

6.90 SDO_GEOR.hasPseudoColor

構文

SDO_GEOR.hasPseudoColor(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのレイヤーに疑似カラー情報が含まれているかどうかを確認します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

確認するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

使用上の注意

このファンクションは、レイヤーに疑似カラー情報が含まれる場合は文字列TRUEを戻し、レイヤーに疑似カラー情報が含まれていない(つまり疑似カラー表現を使用していない)場合はFALSEを戻します。カラーマップおよび疑似カラー表示については、「SDO_GEOR_COLORMAPオブジェクト型」で説明しています。

レイヤーに疑似カラー情報が含まれる場合、カラーマップとカラーマップ表名を取得および設定できます。SDO_GEOR.getColorMapファンクションとSDO_GEOR.getColorMapTableファンクション、およびSDO_GEOR.setColorMapプロシージャとSDO_GEOR.setColorMapTableプロシージャを参照してください。

例

次の例では、指定したGeoRasterオブジェクト(GEORASTER列)のレイヤー0および1に、疑似カラー情報が含まれるかどうかを確認します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT substr(sdo_geor.hasPseudoColor(georaster, 0),1,15) hasPseudoColor0,
substr(sdo_geor.hasPseudoColor(georaster, 1),1,15) hasPseudoColor1
FROM georaster_table WHERE georid=4;

HASPSEUDOCOLOR0 HASPSEUDOCOLOR1
--------------- ---------------
FALSE           TRUE

6.91 SDO_GEOR.importFrom

構文

SDO_GEOR.importFrom(
georaster             IN OUT SDO_GEORASTER,
storageParam      IN VARCHAR2,
r_sourceFormat   IN VARCHAR2,
r_sourceType       IN VARCHAR2,
r_sourceName     IN VARCHAR2,
h_sourceFormat  IN VARCHAR2 DEFAULT NULL,
h_sourceType      IN VARCHAR2 DEFAULT NULL,
h_sourceName    IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.importFrom(
georaster             IN OUT SDO_GEORASTER,
storageParam      IN VARCHAR2,
r_sourceFormat   IN VARCHAR2,
r_sourceBLOB     IN BLOB,
h_sourceFormat  IN VARCHAR2 DEFAULT NULL,
h_sourceCLOB    IN CLOB DEFAULT NULL);

説明

イメージ・ファイルまたはBLOBオブジェクトを、データベースに格納されたGeoRasterオブジェクトにインポートします。

パラメータ

georaster

操作の結果を格納するGeoRasterオブジェクトを指定します。

storageParam

記憶域パラメータを含む文字列を指定します。形式および使用方法の詳細は、「記憶域パラメータ」を参照してください。この操作で現在サポートされているキーワードは、次のとおりです。

- blocking: FALSEを指定すると、イメージは単一のブロックとして格納されます。blocksizeパラメータを指定しない場合にTRUEを指定すると、イメージは、デフォルトの再ブロック・パラメータ値(256,256,B)で再ブロック化されます。Bは、イメージに含まれるバンドの合計数です。blocksizeパラメータを指定した場合、blockingは自動的にTRUEとして解釈されます。

- blocksize: (詳細は「記憶域パラメータ」の表1-1を参照してください。)

- compression: (詳細は「記憶域パラメータ」の表1-1を参照してください。)デフォルト値はNONEで、RAWデータは圧縮せずにロードされます。

- quality: (詳細は「記憶域パラメータ」の表1-1を参照してください。)

- raster: TRUE (デフォルト)を指定すると、GeoTIFF形式ファイルのラスター・イメージ・データが地理参照情報とともにロードされます。FALSEを指定すると、GeoTIFF形式ファイルからラスター・イメージ・データを除く地理参照情報のみが既存のGeoRasterオブジェクトにロードされます。

- spatialExtent: デフォルトのFALSEを指定すると、空間エクステントが生成されません。TRUEを指定すると、SRIDが0 (ゼロ)以外で、既存のいずれかの空間エクステント索引のSRIDと一致した場合に空間エクステントが生成されます。

- srid: 座標系のSRIDの数値を指定します。これは、GeoTIFF形式ファイルのロード時のバックアップSRIDをオプションで指定するものです。このSRID値は、GeoTIFF構成値がOracle Spatial and Graphで認識されるSRID値のいずれとも一致しない場合に使用されます。

r_sourceFormat

ラスターのソースの形式を指定します。TIFF、GIF、BMP、GeoTIFFまたはPNGのいずれかを指定する必要があります。(JPEGはこのプロシージャではサポートされていません。ただし、クライアント側のGeoRasterローダー・ツールを使用すると、JPEGファイルをインポートできます。「GeoRasterツール: ローダー、ビューア、エクスポータ」を参照してください。)

r_sourceType

インポート操作のソースのタイプを指定します。FILEを指定する必要があります。

r_sourceName

r_sourceTypeがFILEの場合、ソース・ファイル名をフルパスで指定します。既存のGeoRasterオブジェクトへのワールド・ファイルのロードのみに、このプロシージャを使用する場合は、このパラメータにNULL値を指定します。

r_sourceBLOB

ラスターのBLOB型のソース・オブジェクトを指定します。

h_sourceFormat

ジオヘッダーのソースの形式を指定します。WORLDFILEを指定する必要があります。

h_sourceType

インポート操作のソースのジオヘッダー・タイプを指定します。FILEを指定する必要があります。

h_sourceName

h_sourceTypeがFILEの場合、ジオヘッダーのソース・ファイル名をフルパスで指定し、オプションでSRID値を指定します。SRID値を指定するには、ファイル名の後をカンマで区切り、SRID値を追加します。たとえば、'/mypath/mydir/worldfile.tfw,82934' (UNIXまたはLinuxの場合)や、'C:\mypath\mydir\worldfile.tfw,82934' (Windowsの場合)のようになります。

h_sourceCLOB

ジオヘッダーのソースをCLOB型のオブジェクトとして指定します。

使用上の注意

このプロシージャの使用方法、またはGeoRasterローダー・ツールを使用してラスター・データをロードする方法の詳細は、「ラスター・データのロード」を参照してください。

非常に大きいイメージをロードする際にメモリー不足のエラーが発生した場合は、「ロード前のソース・ラスターの再フォーマット」を参照してください。

イメージをGeoRasterデータベースにロードする場合、常にブロック・サイズを指定する必要があります(通常は256x256以上にします)。

ラスター・イメージとジオヘッダーが別々のファイルまたはオブジェクトに存在する場合にのみ、名前の先頭にr_が付くパラメータおよびh_が付くパラメータに値を指定してください。

このプロシージャを使用すると、ファイルまたはCLOBオブジェクトから、ESRIワールド・ファイルをロードできます。

このプロシージャは、ソース・ファイル形式としてJPEGをサポートしていません。JPEGファイルをインポートするには、クライアント側のGeoRasterローダー・ツールを使用します(「GeoRasterツール: ローダー、ビューア、エクスポータ」を参照)。

GeoTIFF PixelIsAreaラスター空間は、左上角を基準とするGeoRasterのセル座標系と同じです。GeoTIFFからのインポートは、常に中央を基準とするGeoRasterのセル座標系が対象となります(GeoTIFFファイルがPixelIsAreaラスター空間で指定されている場合は、アフィン変換で2分の1ピクセル単位の調整が行われます)。

SDO_GEOR.importFromプロシージャを使用してGeoTIFFイメージをロードする場合は、xtiff-jai.jarおよびgeotiff-jai.jarライブラリが必要になります。これらのGeoTIFFライブラリの詳細は、「GeoRasterオブジェクトの地理参照」を参照してください。

このプロシージャは、セル深度値が2BITのラスター・データ、またはBILおよびBSQインターリーブ・タイプのソース・マルチバンド・ラスター・データをサポートしていません。

インポートされたGeoRasterオブジェクトは、BIPインターリーブ・タイプになります。

このプロシージャをコールするには、インポートされるファイルまたはファイルを含むディレクトリに対する読取り権限が必要です。次の例(ユーザーSYSTEMとして実行)では、ファイルに対する読取り権限をユーザーHERMANに付与します。

call dbms_java.grant_permission('HERMAN','SYS:java.io.FilePermission',
'/mydirectory/myimages/img1.tif', 'read' );

例

次の例では、TIFF形式の外部イメージをインポートする空のGeoRasterオブジェクトを初期化して、イメージをインポートします。

DECLARE
geor SDO_GEORASTER;
BEGIN
-- Initialize an empty GeoRaster object into which the external image
-- is to be imported.
INSERT INTO georaster_table
values( 1, 'TIFF', sdo_geor.init('rdt_1') );

-- Import the TIFF image.
SELECT georaster INTO geor FROM georaster_table
WHERE georid = 1 FOR UPDATE;
sdo_geor.importFrom(geor, NULL, 'TIFF', 'file',
'/mydirectory/myimages/img1.tif');
UPDATE georaster_table SET georaster = geor WHERE georid = 1;
COMMIT;
END;/

次の例では、BLOBからイメージを、CLOBからESRIワールド・ファイルをインポートします。

CREATE TABLE blob_table (blob_col BLOB, blobid NUMBER unique, clob_col CLOB);
INSERT INTO blob_table VALUES (empty_blob(), 1, null);
INSERT INTO blob_table VALUES (empty_blob(), 2, empty_clob());
COMMIT;

DECLARE
geor1 SDO_GEORASTER;
lobd1 BLOB;
lobd2 CLOB;
fileName VARCHAR2(1024);
file BFILE;
wfile BFILE;
wfname VARCHAR2(1024);
amt INTEGER;
amt1 INTEGER;

BEGIN
-- Import BLOB into GeoRaster object.
-- First, if appropriate, load an existing image file into a BLOB object.
EXECUTE IMMEDIATE 'CREATE DIRECTORY  blob_test_one AS '''/xyz'''';
fileName := '/parrot.tif';
file := BFILENAME('BLOB_TEST_ONE', fileName);
wfname := '/parrot.tfw';
wfile := BFILENAME('BLOB_TEST_ONE', wfname);
SELECT clob_col into lobd2 from blob_table WHERE blobid = 2 for update;
SELECT blob_col into lobd1 from blob_table WHERE blobid = 2 for update;
dbms_lob.fileopen(file, dbms_lob.file_readonly);
dbms_lob.fileopen(wfile, dbms_lob.file_readonly);
amt1 := dbms_lob.getLength(wfile);
dbms_lob.loadfromfile(lobd1, file, amt);
dbms_lob.loadfromfile(lobd2, wfile, amt1);
COMMIT;
dbms_lob.fileclose(file);
dbms_lob.fileclose(wfile);

-- Then, import this BLOB into a GeoRaster object.
SELECT georaster INTO geor1 from georaster_table WHERE georid = 14 for update;
sdo_geor.importFrom(geor1,'', 'TIFF', lobd1, 'WORLDFILE', lobd2);
sdo_geor.setModelSRID(geor1, 82394);
UPDATE georaster_table SET georaster = geor1 WHERE georid = 14;
COMMIT;
END;
/

6.92 SDO_GEOR.init

構文

SDO_GEOR.init(
rasterDataTable  IN VARCHAR2 DEFAULT NULL,
rasterID               IN NUMBER DEFAULT NULL
) RETURN SDO_GEORASTER;

説明

空のGeoRasterオブジェクトを初期化します。このオブジェクトは初期化の後でxxx_SDO_GEOR_SYSDATAビューに登録する必要があります(「使用上の注意」を参照)。

パラメータ

rasterDataTable

セル・データ・ブロックを格納するSDO_RASTER型のオブジェクト表の名前を指定します。空白、ピリオド、または大/小文字が混在する文字列を引用符で囲んだ値は使用できません(名前は、SDO_GEORASTERオブジェクトに格納される際に常に大文字に変換されます)RDTは、GeoRaster表に関連付けられるため、同じスキーマである必要があります。このパラメータを指定しない場合、GeoRasterはラスター・データ表に使用される一意の表名を生成します。このパラメータで指定した表がすでに存在しており、SDO_RASTER型のオブジェクト表ではない場合、例外が発生します。

rasterID

ラスター・データ表で、このGeoRasterオブジェクトのブロックを一意に識別する番号を指定します。このパラメータを指定しない場合、ID用に一意の順序番号が生成されます。

使用上の注意

空のGeoRasterオブジェクトを初期化したら、オブジェクトに対して操作を実行する前に、空のGeoRasterオブジェクトをGeoRaster表に挿入してオブジェクトをxxx_SDO_GEOR_SYSDATAビューに登録する必要があります。(xxx_SDO_GEOR_SYSDATAビューの詳細は、「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」を参照してください。GeoRasterの操作は「基本的なGeoRaster操作」を参照してください。)

このファンクションは、rasterDataTable属性およびrasterID属性が設定された空のSDO_GEORASTERオブジェクトを戻します。SDO_GEORASTERオブジェクトの他のすべての属性は、NULLです。

このファンクションでは、指定されたラスター・データ表が存在する必要はありません。ただし、データを表に挿入するには表が存在している必要があるため、表を作成する必要があります。

複数のGeoRasterオブジェクト列が表に含まれていて、各列に対して、NULLのrasterDataTableまたはrasterIDパラメータ値を含む同一のパラメータ値を使用して、SDO_GEOR.initまたはSDO_GEOR.createBlankファンクションをコールする場合は、単一のINSERT文またはUPDATE文でこのようなすべての列に対してSDO_GEOR.initまたはSDO_GEOR.createBlankファンクションを使用しないでください。たとえば、georid NUMBER、type VARCHAR2(32)、image_date VARCHAR2(32)、image_15m SDO_GEORASTER、image_30m SDO_GEORASTER、image_60m SDO_GEORASTERという列が含まれているLSAT_TABLE表がある場合、次のような文は使用しないでください。

INSERT INTO lsat_table VALUES(1, 'L1G', '2004-02-25',
sdo_geor.init('RDT_1'), sdo_geor.init('RDT_1'),
sdo_geor.init('RDT_1'));

このような場合は、かわりに次のいずれかを使用します。

- ファンクションをコールする際に、必ずrasterIDパラメータ値を指定します。次の例では、最後の3列に挿入されるGeoRasterオブジェクトに対して1、2および3のラスターID値を指定します。

INSERT INTO lsat_table VALUES(1, 'L1G', '2004-02-25',
sdo_geor.init('RDT_1', 1), sdo_geor.init('RDT_1', 2),
sdo_geor.init('RDT_1', 3));

- 各INSERT文またはUPDATE文で、1つのGeoRasterオブジェクトのみを含むファンクションを使用します。次の例は、1つのGeoRasterオブジェクト列を初期化し、他の2つにNULLを指定する1行を挿入して、2列目および3列目のGeoRasterオブジェクト列を初期化するために行を2回更新します。

INSERT INTO lsat_table VALUES(1, 'L1G', '2004-02-25',
sdo_geor.init('RDT_1'), null, null);
UPDATE lsat_table SET image_30m = sdo_geor.init('RDT_1')
WHERE georid = 1;
UPDATE lsat_table SET image_60m = sdo_geor.init('RDT_1')
WHERE georid = 1;

例

次の例では、初期化したGeoRasterオブジェクトをGEORASTER_TABLE表に挿入します。GeoRasterオブジェクトに関連付けられたラスター・データ表は、RDT_1です。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

INSERT INTO georaster_table (georid, georaster)
VALUES (1, sdo_geor.init('RDT_1'));

6.93 SDO_GEOR.isBlank

構文

SDO_GEOR.isBlank(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトが空白のGeoRasterオブジェクトの場合は文字列TRUEを戻し、空白のGeoRasterオブジェクトでない場合は文字列FALSEを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

空白のGeoRasterオブジェクトでは、すべてのセルが同じセル値を持ちます。

既存の空白のGeoRasterオブジェクトのセル値を変更するには、SDO_GEOR.setBlankCellValueプロシージャを使用します。指定されたGeoRasterオブジェクトのセル値を戻すには、SDO_GEOR.getBlankCellValueファンクションを使用します。

例

次の例では、GEORASTER_TABLE表のGEORASTER列に含まれている各GeoRasterオブジェクトが空白のGeoRasterオブジェクトかどうかを判断します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT georid, substr(sdo_geor.isBlank(georaster),1,7) isBlank
FROM georaster_table;

GEORID ISBLANK
---------- -------
2 FALSE
4 FALSE

6.94 SDO_GEOR.isOrthoRectified

構文

SDO_GEOR.isOrthoRectified(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトがオルソ補正済であると識別される場合は文字列TRUEを戻し、オルソ補正済であると識別されない場合は文字列FALSEを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、オブジェクトのGeoRasterメタデータを確認して、オルソ補正済であると指定されているかどうかを確認します。オブジェクトが実際にオルソ補正されているかどうかは確認しません。GeoRasterオブジェクトの検証と、オルソ補正の実行の確認は、ユーザーが行います。

GeoRasterオブジェクトがオルソ補正済であると指定するには、SDO_GEOR.setOrthoRectifiedプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表のGeoRasterオブジェクト(GEORASTER列)が、空間参照、幾何補正およびオルソ補正済であると指定されているかどうかを確認します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT georid, substr(sdo_geor.isSpatialReferenced(georaster),1,20)
isSpatialReferenced,
substr(sdo_geor.isRectified(georaster),1,20) isRectified,
substr(sdo_geor.isOrthoRectified(georaster),1,20) isOrthoRectified
FROM georaster_table;

GEORID ISSPATIALREFERENCED  ISRECTIFIED          ISORTHORECTIFIED
---------- -------------------- -------------------- --------------------
2 TRUE                 TRUE                 TRUE
4 TRUE                 TRUE                 FALSE

6.95 SDO_GEOR.isRectified

構文

SDO_GEOR.isRectified(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトが幾何補正済であると識別される場合は文字列TRUEを戻し、幾何補正済であると識別されない場合は文字列FALSEを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、オブジェクトのGeoRasterメタデータを確認して、幾何補正済であると指定されているかどうかを確認します。GeoRasterオブジェクトの検証と、幾何補正の実行の確認は、ユーザーが行います。

GeoRasterオブジェクトが幾何補正済であると指定するには、SDO_GEOR.setRectifiedプロシージャを使用します。

例

次の例では、GEORASTER_TABLE表のGeoRasterオブジェクト(GEORASTER列)が、空間参照、幾何補正およびオルソ補正済であると指定されているかどうかを確認します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT georid, substr(sdo_geor.isSpatialReferenced(georaster),1,20)
isSpatialReferenced,
substr(sdo_geor.isRectified(georaster),1,20) isRectified,
substr(sdo_geor.isOrthoRectified(georaster),1,20) isOrthoRectified
FROM georaster_table;

GEORID ISSPATIALREFERENCED  ISRECTIFIED          ISORTHORECTIFIED
---------- -------------------- -------------------- --------------------
2 TRUE                 TRUE                 TRUE
4 TRUE                 TRUE                 FALSE

6.96 SDO_GEOR.isSpatialReferenced

構文

SDO_GEOR.isSpatialReferenced(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトが空間参照されている場合は文字列TRUEを戻し、空間参照されていない場合は文字列FALSEを戻します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

GeoRasterオブジェクトを検証しておく必要があります。

例

次の例では、GEORASTER_TABLE表のGeoRasterオブジェクト(GEORASTER列)が、空間参照、幾何補正およびオルソ補正済であると指定されているかどうかを確認します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

SELECT georid, substr(sdo_geor.isSpatialReferenced(georaster),1,20)
isSpatialReferenced,
substr(sdo_geor.isRectified(georaster),1,20) isRectified,
substr(sdo_geor.isOrthoRectified(georaster),1,20) isOrthoRectified
FROM georaster_table;

GEORID ISSPATIALREFERENCED  ISRECTIFIED          ISORTHORECTIFIED
---------- -------------------- -------------------- --------------------
2 TRUE                 TRUE                 TRUE
4 TRUE                 TRUE                 FALSE

次の例では、地理参照されていないすべての空のGeoRasterオブジェクトを検索します。

SELECT georid FROM georaster_table a
WHERE sdo_geor.isSpatialReferenced(a.georaster) IS NULL OR
sdo_geor.isSpatialReferenced(a.georaster) = 'FALSE';

6.97 SDO_GEOR.mask

構文

SDO_GEOR.mask(
inGeoRaster   IN SDO_GEORASTER,
bandNumbers   IN VARCHAR2,
mask          IN SDO_GEORASTER,
storageParam  IN VARCHAR2,
outGeoraster  IN OUT SDO_GEORASTER,
zeroMapping   IN NUMBER DEFAULT 0,
oneMapping    IN NUMBER DEFAULT 1,
bgValues      IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

既存の(入力) GeoRasterオブジェクトの指定したレイヤーにマスクを適用します。マスクGeoRasterオブジェクトと入力GeoRasterオブジェクトは、同じ記憶域形式または異なる記憶域形式を持つことが可能で、出力GeoRasterオブジェクトの記憶域形式オプションを指定できます(ブロック化、セル深度またはインターリーブを変更するなど)。

使用するマスク値を決定する方法の詳細は、「使用上の注意」を参照してください。

パラメータ

inGeoRaster

新しいオブジェクトを作成するためにマスク処理を実行するSDO_GEORASTERオブジェクトを指定します。

bandNumbers

処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、1-3は2、3、4番目のレイヤーを示します)。

mask

出力GeoRasterオブジェクトを生成するために入力GeoRasterオブジェクトに対してマスクとして使用するSDO_GEORASTERオブジェクトを指定します。このパラメータをNULLとして指定すると、入力GeoRasterオブジェクトの使用可能なアタッチ済マスクが、指定したレイヤーに適用されます。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

outGeoRaster

マスク操作の結果を反映させる新しいSDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)inGeoRasterと同じGeoRasterオブジェクトは指定できません。

出力GeoRasterオブジェクトに既存のラスター・データが含まれる場合、マスク操作が実行される前に削除されます。出力GeoRasterオブジェクトは、このファンクションの結果として上書きされます。

zeroMapping

マスク・セル値0 (ゼロ)に使用する値を指定します。デフォルト値は0(ゼロ)です。

oneMapping

マスク・セル値1に使用する値を指定します。デフォルト値は1です。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのレイヤーに同じ入力値を使用)またはバンド次元のサイズ(各レイヤーにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のレイヤーに1、2番目のレイヤーに5、3番目のレイヤーに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上の注意

maskパラメータと組み合せて使用するマスク値を決定するには、次のロジックを適用します。

If(cellValue_mask==0)
cellValue_target=cellValue_source * zeroMapping;
else
cellValue_target=cellValue_source * oneMapping;

内容は次のとおりです。

- cellValue_sourceは、座標(x,y)でのinGeorasterのセル値です。

- cellValue_targetは、座標(x,y)でのoutGeorasterのセル値です。

- cellValue_maskは、座標(x,y)でのmaskのセル値です。

inGeoRasterがNULLの場合、操作は実行されません。

inGeoRasterにピラミッド・データが存在する場合、mask GeoRasterオブジェクトに、inGeoRasterと同じ数以上のピラミッド・レベルが含まれる必要があります。

maskがNULLではない場合、その次元(列および行)サイズはinGeoRasterのものと等しく、また、maskはinGeoRasterと重複する必要があります。(重複はSDO_GEOR_RA.isOverlapファンクションを使用して確認できます。)

maskがNULLで、指定したレイヤーで使用できるアタッチ済マスクがない場合、inGeoRasterは、(storageParamの指定に従って変更される) outGeoRasterにコピーされます。

このファンクションとSDO_GEOR.setBitmapMaskファンクションの対比: SDO_GEOR.maskはレイヤーのセル値を計算してそれらをターゲットGeoRasterオブジェクトに格納しますが、SDO_GEOR.setBitmapMaskはマスク・データをソースGeoRasterオブジェクトの指定したレイヤーに関連付けます。

次の1つ以上の条件に該当する場合、例外が発生します。

- inGeoRasterが無効である。

- outGeoRasterが初期化されていない。

- outGeoRasterに対するラスター・データ表が存在せず、outGeoRasterが空白のGeoRasterオブジェクトではない。

例

次の例では、マスクGeoRasterオブジェクトgr2をソースGeoRasterオブジェクトgr1に適用します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
gr3 sdo_georaster;
BEGIN
select tmimage into gr1 from landsat where id=103;
select tmimage into gr3 from landsat where id=1015;
select grobj into gr2 from grtab where id=1;
SDO_GEOR.mask(gr1,null,gr2,'blocksize=(100,100,3)',gr3,0.1,0.9,null);
update landsat set tmimage=gr3 where id=1007;
END;
/

次の例では、ソースGeoRasterオブジェクトgr1のアタッチ済マスクをその2番目のレイヤーに適用します。

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
gr3 sdo_georaster;
BEGIN
select tmimage into gr1 from landsat where id=103;
select tmimage into gr3 from landsat where id=1015;
gr2:=null;
SDO_GEOR.mask(gr1,'1',gr2,'blocksize=(100,100,3)',gr3,0.1,0.9,null);
update landsat set tmimage=gr3 where id=1007;
END;
/

6.98 SDO_GEOR.mergeLayers

構文

SDO_GEOR.mergeLayers(
targetGeoRaster    IN OUT SDO_GEORASTER,
sourceGeoRaster    IN SDO_GEORASTER,
sourceLayerNumbers IN VARCHAR2 DEFAULT NULL,
bgValues           IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.mergeLayers(
source1GeoRaster    IN SDO_GEORASTER,
source1LayerNumbers IN VARCHAR2,
source2GeoRaster    IN SDO_GEORASTER,
source2LayerNumbers IN VARCHAR2,
storageParam        IN VARCHAR2,
outGeoRaster        IN OUT SDO_GEORASTER,
bgValues            IN SDO_NUMBER_ARRAY DEFAULT NULL,
pyramidLevel        IN NUMBER DEFAULT NULL);

説明

2つのGeoRasterオブジェクトのレイヤーをマージします。マージ処理には、ソース・レイヤーをターゲットGeoRasterオブジェクトに追加する方法(最初の構文)か、和演算を実行する方法(2番目の構文)のいずれかを使用します。

パラメータ

targetGeoRaster

sourceGeoRasterに含まれるレイヤーの追加先となるGeoRasterオブジェクトを指定します。sourceGeoRasterと同じGeoRasterオブジェクトは指定できません。(このプロシージャをコールする前に、このオブジェクトのコピーを作成しておいてください。)

sourceGeoRaster

targetGeoRasterに追加する特定のレイヤーを含むGeoRasterオブジェクトを指定します。

sourceLayerNumbers

sourceGeoRasterからtargetGeoRasterに追加するレイヤーを示す1つ以上のレイヤー番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'1,3-5,7'はレイヤー1、3、4、5および7を示します。

source1GeoRaster

和演算で出力GeoRasterオブジェクトoutGeoRaster内のsource2GeoRasterのレイヤーと結合する特定のレイヤーを持つGeoRasterオブジェクトを1つ指定します。

source1LayerNumbers

和演算で出力GeoRasterオブジェクトoutGeoRaster内のsource2GeoRasterのレイヤーと結合するsource1GeoRaster内のレイヤーを示す1つ以上のレイヤー番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'1,3-5,7'はレイヤー1、3、4、5および7を示します。

source2GeoRaster

和演算で出力GeoRasterオブジェクトoutGeoRaster内のsource1GeoRasterのレイヤーと結合する特定のレイヤーを持つGeoRasterオブジェクトを1つ指定します。

source2LayerNumbers

和演算で出力GeoRasterオブジェクトoutGeoRaster内のsource1GeoRasterのレイヤーと結合するsource2GeoRaster内のレイヤーを示す1つ以上の番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'1,3-5,7'はレイヤー1、3、4、5および7を示します。

storageParam

outGeoRasterの作成時に適用される記憶域パラメータを示す文字列を指定します。記憶域パラメータについては、「記憶域パラメータ」を参照してください。

outGeoRaster

和演算の結果を反映させる新しいSDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)source1GeoRasterまたはsource2GeoRasterと同じGeoRasterオブジェクトは指定できません。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

pyramidLevel

ソースGeoRasterオブジェクトがマージされるピラミッド・レベルを示す番号を指定します。指定しない場合、ピラミッド・レベル0が使用されます。

使用上の注意

注意:

targetGeoRasterに指定したGeoRasterオブジェクトへの変更は、このプロシージャが完了した後では元に戻せない場合があるため、このプロシージャをコールする前にtargetGeoRasterオブジェクトのコピーを作成しておいてください。

georasterまたはoutGeoRasterパラメータで指定する結果のGeoRasterオブジェクトには、sourceGeoRaster、source1GeoRasterまたはsource2GeoRasterとして指定したGeoRasterオブジェクトと同じオブジェクトを指定できません。

追加または結合する2つのGeoRasterオブジェクトは、同じ空間次元サイズで、同じ領域を覆っている必要があります。いずれかのGeoRasterオブジェクトが地理参照されている場合は、もう一方のオブジェクトも地理参照されている必要があり、モデルSRIDおよび空間解像度が同じで、モデル空間内の同じ領域を覆っている必要があります。いずれのGeoRasterオブジェクトも地理参照されていない場合は、それぞれのultCoordinatesが同一であることが必要です。

例

次の例では、2つのGeoRasterオブジェクト内の指定したレイヤーをマージして3つ目のGeoRasterオブジェクトに出力します。マージ処理には和演算を使用します。

declare
gr1 sdo_georaster;
gr2 sdo_georaster;
gr3 sdo_georaster;
begin
select georaster into gr1 from georaster_table where georid=1;
select georaster into gr2 from georaster_table where georid=2;
insert into georaster_table(georid, georaster) values (3, sdo_geor.init('RDT_1'))
returning georaster into gr3;
sdo_geor.mergeLayers(gr1, '3', gr2, '2,1', 'blocking=false', gr3);
update georaster_table set georaster=gr3 where georid=3;
commit;
end;
/

6.99 SDO_GEOR.mosaic

構文

SDO_GEOR.mosaic(
georasterTableName  IN VARCHAR2,
georasterColumnName IN VARCHAR2,
georaster           IN OUT SDO_GEORASTER,
storageParam        IN VARCHAR2,
bgValues            IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

幾何補正され、同じSRIDに基づいて地理空間的に配置され、同じ解像度を持つソースGeoRasterオブジェクトのセットをモザイク処理します。

パラメータ

georasterTableName

ソースとなるすべてのGeoRasterオブジェクトを含む表またはビューの名前を指定します。

georasterColumnName

georasterTableNameで指定した表のSDO_GEORASTER型の列を指定します。

georaster

モザイク処理の結果を格納するGeoRasterオブジェクトを指定します。georasterTableName内のgeorasterColumnNameに含まれるいずれのGeoRasterオブジェクトと同じGeoRasterオブジェクトは指定できません。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。このパラメータがNULLの場合、結果のGeoRasterオブジェクトは、モデル空間(存在する場合)またはセル空間の左上角の、ソースとなるGeoRasterオブジェクトと同じ記憶域パラメータ(blockSize、cellDepth、interleavingおよびcompression)を持ちます。ただし、モザイク処理する左上角のGeoRasterオブジェクトと同じ記憶域パラメータをモザイクに設定する場合を除き、出力モザイクのサイズに応じて記憶域パラメータ(特にブロック化サイズ)を指定することをお薦めします。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。これは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれているか、ソースGeoRasterオブジェクトが領域全体を覆っていない場合に発生する可能性があります。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上の注意

このプロシージャは、限定されたモザイク処理機能を持ち、事前処理されて完全に配置されたソースGeoRasterオブジェクトに対してのみ適切に動作します。これは、幾何補正されていないラスターに対しては動作せず、パラレル処理もサポートしていません。パラレル処理などの高度なモザイク処理機能では、SDO_GEOR_AGGR.mosaicSubsetプロシージャを使用します。詳細は、「大規模イメージのモザイク処理」を参照してください。

このプロシージャでは、ソースGeoRasterオブジェクトは、モザイク処理を直接実行できるように、イメージまたはラスター・データとして準備しておく必要があります。モザイク処理されるGeoRasterオブジェクトは、次の条件を満たしている必要があります。

- 地理参照されているオブジェクトと地理参照されていないオブジェクトを混在させないこと。すべてのオブジェクトが地理参照されているか、地理参照されているオブジェクトが1つもないこと。

- オブジェクトが地理参照されている場合はSRID値が同じであり、地理参照の方法はアフィン変換である必要がある。GeoRasterオブジェクトのアフィン変換では、係数のセット(A、B、DおよびE)または(b、c、e、f)は同じである必要がある。つまり、イメージは、同じX解像度とY解像度(ただし、XとYの解像度は同じである必要はない)、同じ回転角度、同じひずみ係数を持つ必要がある(言い換えると、イメージは、同じ解像度を持ち、イメージが回転してひずんでいる場合は同じように回転してひずんでいる必要がある)。

- 同じレイヤー数またはバンド数を持つ。 ソース・オブジェクトの行および列の次元サイズに制限はない。たとえば、2の累乗値である必要はない。

- バンド番号とレイヤー間のマッピングが同じである。

モザイク処理されるGeoRasterオブジェクトが地理参照される場合、これらのオブジェクトはその地理参照情報に従ってともに配置されます。GeoRasterオブジェクトが地理参照されない場合、これらのオブジェクトはULTCoordinate値に従ってともに配置されます。(ULTCoordinateの詳細は、「GeoRasterデータ・モデル」を参照してください。)

これらの条件を満たしている場合、結果のGeoRasterオブジェクトは、モデル空間の左上角の、ソースとなるGeoRasterオブジェクトから空間参照メタデータ情報を取得します。また、モデル空間の左上角のソースGeoRasterオブジェクトから、セル空間およびデフォルトの記憶域属性を取得します。

ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれるか、ソースGeoRasterオブジェクトが領域全体を覆っていない場合、モザイク処理された結果のGeoRasterオブジェクトには、空のラスター・ブロックまたは部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が含まれます。いずれのソースGeoRasterオブジェクトにも含まれない結果のラスター・ブロックは、空のままです。部分的に空のラスター・ブロックにはbgValuesパラメータに指定した値が入力されます。bgValuesパラメータを指定しない場合は0 (ゼロ)が入力されます。

ソースGeoRasterオブジェクトが重複する場合、ソース・オブジェクトのデータが、その領域のデータになります。この場合のソース・オブジェクトは、重複している領域を覆い、かつすべてのソース・オブジェクトがともに配置されているセル空間で最大のultCoordinateを持ちます。

ソースのGeoRasterオブジェクトに関連したビットマップ・マスクは考慮されません。bitmapmaskパラメータは、storageParam文字列で指定されている場合でも無視されます。

ソースとなるすべてのGeoRasterオブジェクトが空白で、同じblankCellValue値を持つ場合、結果のGeoRasterオブジェクトも空白になり、そのblankCellValue値を持ちます。そうでない場合、結果のGeoRasterオブジェクトは空白にはなりません。

モザイク処理の結果を含めるGeoRasterオブジェクト(georasterパラメータ)には、ソースGeoRasterオブジェクト(モザイク処理を行う対象となるオブジェクト)を指定することはできません。

モザイク処理では、一定の間隔で内部コミット操作が実行されるため、ロールバックできません。処理が中断された場合、ダングリング・ラスター・ブロックがラスター・データ表に存在する可能性があります。ダングリング・ラスター・ブロックは、GeoRasterオブジェクトおよびシステム・データをデータベースでメンテナンスすることにより処理できます(「データベースのGeoRasterオブジェクトおよびシステム・データのメンテナンス」を参照)。

例

次の例では、初期化されたGeoRasterオブジェクトをGEORASTER_TABLE表に挿入し、そのGeoRasterオブジェクトをgrという変数に戻します。GRTABという表のGROBJ列のすべてのGeoRasterオブジェクトをモザイク処理して、モザイク処理によって生成されたGeoRasterオブジェクトを同じ変数に格納します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)GRTAB表の定義はこの例では重要ではないため、ここでは示していません。)

DECLARE
gr sdo_georaster;
BEGIN
INSERT INTO georaster_table (georid, georaster)
VALUES (12, sdo_geor.init('rdt_1'))
RETURNING georaster INTO gr;
sdo_geor.mosaic('grtab', 'grobj', gr, 'blocksize=(512,512,1)');
UPDATE georaster_table SET georaster=gr WHERE id=12;
END;
/

6.100 SDO_GEOR.rectify

構文

SDO_GEOR.rectify(
inGeoRaster      IN SDO_GEORASTER,
pyramidLevel     IN NUMBER,
elevationParam   IN VARCHAR2,
DEM              IN SDO_GEORASTER,
outSRID         IN NUMBER,
outModelCoordLoc IN NUMBER,
cropArea         IN SDO_GEOMETRY,
polygonClip      IN VARCHAR2,
layerNumbers     IN VARCHAR2,
outResolutions   IN SDO_NUMBER_ARRAY,
resolutionUnit   IN VARCHAR2,
referencePoint   IN SDO_GEOMETRY,
resampleParam    IN VARCHAR2,
storageParam     IN VARCHAR2,
outGeoRaster     IN OUT SDO_GEORASTER,
bgValues         IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.rectify(
inGeoRaster      IN SDO_GEORASTER,
pyramidLevel     IN NUMBER,
elevationParam   IN VARCHAR2,
DEM              IN SDO_GEORASTER,
outSRID         IN NUMBER,
outModelCoordLoc IN NUMBER,
cropArea         IN SDO_GEOMETRY,
polygonClip      IN VARCHAR2,
layerNumbers     IN VARCHAR2,
outResolutions   IN SDO_NUMBER_ARRAY,
resolutionUnit   IN VARCHAR2,
referencePoint   IN SDO_GEOMETRY,
mosaicParam      IN VARCHAR2,
storageParam     IN VARCHAR2,
rasterBlob       IN OUT NOCOPY BLOB,
outArea          OUT SDO_GEOMETRY,
outWindow        OUT SDO_NUMBER_ARRAY,
bgValues         IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

地理参照されたGeoRasterオブジェクトの全部または一部に対して幾何補正を実行します。結果のオブジェクトは、新しいGeoRasterオブジェクト(永続記憶域目的)またはBLOB (一時使用目的)のいずれかです。入力モデル座標系(SRID)が3次元の場合、平均の標高または数値標高モデル(DEM)は、オルソ補正を実行するために使用できます。

パラメータ

inGeoRaster

操作を実行するGeoRasterオブジェクトを指定します。これは、地理参照される必要があります(SDO_GEOR.georeferenceサブプログラムを参照)。

pyramidLevel

操作用のソースGeoRasterオブジェクトのピラミッド・レベルを指定します。

- BLOB出力では、このパラメータが必須です。

- SDO_GEORASTER出力では、このパラメータがNULLで、storageParam pyramid値がFALSEの場合、ピラミッド・レベル0のみが幾何補正され、出力にはレベル0のみが含まれます。このパラメータがNULLで、storageParam pyramid値がTRUEの場合、入力のすべてのピラミッド・レベルが幾何補正されます。

- 0以上の数値を指定すると、そのピラミッド・レベルのみが幾何補正に使用され、そのピラミッド・レベル・イメージに基づいてスケールの結果が生成されます。

elevationParam

標高パラメータのaverage (平均表面高度)、scale (すべてのDEM値に適用されるスケール値)およびoffset (すべてのDEM値に適用されるオフセット)を1つ以上含む文字列を指定します(新しい値は、(value + offset) * scaleです)。このパラメータは、引用符で囲まれた文字列で、1つ以上のキーワード=値のペア('average=800 scale=3.2808399 offset=10'など)を含める必要があります。このパラメータがNULLの場合、averageおよびoffsetには0が、scaleには1が使用されます。DEMが指定されていない場合、scaleおよびoffset値は無視されます。

elevationParamパラメータを使用する場合、入力GeoRasterオブジェクトには3DモデルSRIDが含まれる必要があります。

入力GeoRasterオブジェクトに3DモデルSRIDが含まれる場合、出力イメージのエクステントを定義するために、平均の標高が重要になります。DEMを指定していても、この情報が使用可能である場合は指定する必要があります。平均の標高を指定しない場合、プロシージャによって、平均の標高の近似値が計算されます。

注意:

GeoRasterのサブプログラムに対する文字列(VARCHAR2)パラメータの中に数値がある場合は、ロケールにかかわらず、小数点にはピリオド(.)を使用する必要があります。

DEM

オルソ補正を実行するために使用する数値標高モデル(DEM)を含むGeoRasterオブジェクトを指定します(「使用上の注意」を参照)。outGeoRasterと同じSRIDを持つ必要があります。DEM領域は、outGeoRaster領域全体またはcropArea (使用する場合)を対象とする必要があります。標高データは、DEM GeoRasterオブジェクトの1番目のレイヤーに存在すると仮定されます。このパラメータがNULLの場合、elevationParam値が使用されます。最適な結果を得るには、DEM GeoRasterオブジェクトの解像度を入力GeoRasterオブジェクトの解像度に近づける必要があります。

DEMパラメータを使用する場合、入力GeoRasterオブジェクトには3DモデルSRIDが含まれる必要があります。

入力GeoRasterオブジェクトに3DモデルSRIDが含まれる場合、出力イメージのエクステントを定義するために、平均の標高が重要になります。DEMを指定していても、この情報が使用可能である場合はelevationParamパラメータに指定する必要があります。平均の標高を指定しない場合、プロシージャによって、平均の標高の近似値が計算されます。

outSRID

出力GeoRasterオブジェクトの座標系を指定します。NULLか、またはMDSYS.CS_SRS表のSRID列の値を指定する必要があります。NULLの場合、出力GeoRasterオブジェクトには入力GeoRasterオブジェクトと同じSRIDが含まれます。

outModelCoordLoc

セルによって表現される領域のベースのモデル位置を示す値を指定します。CENTERの場合は0、UPPERLEFTの場合は1を指定します。NULLの場合、CENTERが使用されます。

cropArea

クロッピング領域を定義します。NULLの場合、クロッピングは実行されず、polygonClipは無視されます。

polygonClipがFALSEの場合、cropAreaのMBRが出力イメージをクロッピングするために使用されます。polygonClipがTRUEの場合、cropAreaのジオメトリが出力イメージをクロッピングするために使用されます。クロッピング領域の外側の領域には、背景値が入力されます。

polygonClip

cropAreaがNULLの場合は無視されます。それ以外の場合、文字列TRUEではモザイク処理されたデータをクロッピングするためにcropArea値が使用され、文字列FALSEまたはNULL値では出力イメージをクロッピングするためにcropAreaのMBRが使用されます。

layerNumbers

幾何補正およびoutGeoRasterへの出力のための論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。

outResolutions

空間次元ごとに1つの値を指定した、数値の配列を指定します。各値は、ピクセルの空間次元によって表現されるデータ領域に関連付けられた測定単位の数を示します。たとえば、空間解像度の値が(10,10)で、地上データの測定単位がmである場合、各ピクセルは10m×10mの領域を示します。NULLの場合、デフォルトは、指定したピラミッド・レベルのソース・データの解像度です。

resolutionUnit

outResolutionsパラメータの単位を指定します。resolutionUnitがoutGeoRaster SRIDの単位と異なる場合、適切な変換が計算されます(出力解像度の値は、resolutionUnitのoutResolutions値を出力SRIDの単位に変換することによって計算されます)。resolutionUnitがNULLの場合、デフォルトは出力SRIDの単位です。指定する場合、unit=valueという形式で、引用符で囲んだ文字列にする必要があります(valueは単位名)。このパラメータは、outResolutionsがNULLである場合は無視されます。

referencePoint

referencePointと出力の左上角の距離がピクセルの整数になるように、outGeoRasterオブジェクトを配置する必要のある場所への参照を示すSDO_GEOMETRY型の点を指定します。

resampleParam

リサンプリング・パラメータを指定するため、キーワード=値のペアのカンマで区切られた引用符付き文字列を指定します。詳細は、「使用上の注意」を参照してください。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

outGeoRaster

操作の結果を格納するGeoRasterオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)inGeoRasterと同じGeoRasterオブジェクトは指定できません。

rasterBlob

幾何補正を反映した出力を保持するBLOBを指定します。処理の前に、存在しているか、または初期化されている必要があります。

outArea

結果のオブジェクトのモデル座標系の最小境界矩形(MBR)を含むSDO_GEOMETRYオブジェクトを指定します。

outWindow

セル空間内で出力ウィンドウの左上角および右下角の座標を指定するSDO_NUMBER_ARRAYオブジェクトを指定します。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上の注意

このプロシージャには2つの構文があります。

- 一方の構文では、データベースへの永続的な格納のためにGeoRasterオブジェクトが生成されます。

- 他方の構文では、一時的な格納または即座の使用(画面へのデータの表示など)のためにBLOBが生成されます。

このプロシージャでは、入力GeoRasterオブジェクトから地理参照多項式を取得するパラメータなしの幾何補正メソッドを使用して、元のイメージ空間をターゲットのイメージ空間に変換します。したがって、入力GeoRasterオブジェクトを地理参照する必要があります(SDO_GEOR.georeferenceサブプログラムを参照)。

オルソ補正は、入力GeoRasterオブジェクトに3DモデルSRIDが含まれる場合に実行できます。数値標高モデル(DEM) GeoRasterオブジェクトは、オルソ補正の精度を向上するために使用できます。DEMパラメータを指定しない場合、elevationParam average値がターゲット領域全体の高さとして使用されます。elevationParam average値を指定しない場合、SRSおよびDEM情報に基づいて評価されます(「イメージのオルソ補正」を参照)。

resampleParamは、指定する場合、それぞれ適切な値を指定した次の1つ以上のキーワードを含む引用符で囲んだ文字列にする必要があります。

- resampling (resampling=NNなど): リサンプリング・メソッドを指定します。NN、BILINEAR、BIQUADRATIC、CUBIC、AVERAGE4またはAVERAGE16のいずれかを指定する必要があります。詳細は、「リサンプリングおよび内挿」を参照してください。

- nodata (nodata=TRUEなど): プロシージャでの処理中にNODATA値およびその値の範囲を考慮するかどうかを指定します。TRUE (NODATA値およびその値の範囲を考慮する)またはFALSE (NODATA値およびその値の範囲を考慮しない)のいずれかを指定します。デフォルト値はFALSEです。この値がTRUEで、リサンプリング・メソッドがBILINEAR、BIQUADRATIC、CUBIC、AVERAGE4またはAVERAGE16の場合、リサンプリングの計算に含まれるセル値がNODATA値であると、リサンプリングの結果も常にNODATA値になります。複数のNODATA値または値の範囲が存在する場合、結果のNODATA値は、現行のラスター・レイヤーに関連付けられているNODATA値の最小値になります。

例

次の例では、入力GeoRasterオブジェクトが同じSRIDに幾何補正されています。入力GeoRasterオブジェクトは、SRID 32619でGCPを使用して地理参照されています。

layerNumbersパラメータは、入力GeoRasterオブジェクトの7つのバンドのうち、3つのバンドの選択順序を示しており、3つのバンドの出力GeoRasterオブジェクトが生成されます。

DECLARE
gr1   sdo_georaster;
gr2   sdo_georaster;
BEGIN
select raster into gr1 from georaster_table where georid = 1;
insert into georaster_table values(2, 'Rectified image',
sdo_geor.init('georaster_rdt')) returning raster into gr2;
sdo_geor.rectify(inGeoRaster       => gr1,
pyramidLevel      => null,
elevationParam    => null,
dem               => null,
outSRID           => null,
outModelCoordLoc  => null,
cropArea          => null,
polygonClip       => null,
layerNumbers      => '2,4,5',
outResolutions    => null,
resolutionUnit    => null,
referencePoint    => null,
resampleParam     => null,
storageParam      => null,
outGeoraster      => gr2);
update georaster_table set georaster = gr2 where georid = 2;
commit;
END;

次の例では、入力GeoRasterオブジェクトは、SRID 32619で3D GCPを使用して地理参照され、ファンクションによって、SRID 4326でオルソ補正されたGeoRasterが生成されます。

- demパラメータは、オルソ補正用のピクセルごとに高さの値を提供するため、数値標高モデルとしてGeoRasterオブジェクトgr3を指定します。

- resampleParamは、BILINEARとしてリサンプリング・メソッドを指定します。

- storageParamパラメータは、BSQとしてinterleavingを、DEFLATEとしてcompressionを指定します。

- 指定されたoutResolutions値は、resolutionUnitがNULLのため、出力GeoRaster SRIDと同じ測定単位を持ちます。

- referencePointによって指定された点のジオメトリによって、出力イメージの左上角が、それらの間でピクセルの整数(行および列の解像度)を使用してその座標に揃えられます。

DECLARE
gr1   sdo_georaster;
gr2   sdo_georaster;
gr3   sdo_georaster;
pto   sdo_geometry;
BEGIN
pto := sdo_geometry(2001, 4326, sdo_point_type(-71.50,42.0, null));
select raster into gr1 from georaster_table where georid = 1;
select raster into gr1 from georaster_table where georid = 3;
insert into georaster_table values(2, 'Rectified image',
sdo_geor.init('georaster_rdt')) returning raster into gr2;
sdo_geor.rectify(inGeoRaster       => gr1,
pyramidLevel      => 1,
elevationParam    => null,
dem               => gr3,
outSRID           => 4326,
outModelCoordLoc  => null,
cropArea          => null,
polygonClip       => null,
layerNumbers      => null,
outResolutions    => sdo_number_array(0.0025,0.0025),
resolutionUnit    => null,
referencePoint    => pto,
resampleParam     => 'resampling=BILINEAR',
storageParam      => 'interleaving=BSQ compress=DEFLATE',
outGeoraster      => gr2);
update georaster_table set georaster = gr2 where georid = 2;
commit;
END;

次の例では、入力GeoRasterオブジェクトは、SRID 32619でGCPを使用して地理参照され、出力GeoRasterオブジェクトは、SRID 4326に投影されます。

- resampleParamは、CUBICとしてリサンプリング・メソッドを指定します。

- storageParamパラメータは、blockSizeを(512,512,3)に指定します。interleavingが指定されていないため、inGeoRasterのインターリーブ・メソッドが使用されます。

- outResolutionsおよびresolutionUnitは、outSRID 4316とは異なる単位のmで指定されています。この場合、SDO_NUMBER_ARRAY値の(30,30)は度数に変換されます。

- cropAreaで指定されているSDO_GEOMETRYポリゴンは、そのポリゴンの範囲まで出力領域をクロッピングするために使用され、polygonClipがTRUEであるため、ポリゴンの外側のイメージ領域は背景値に設定されます。

- outModelCoordLocが1に指定されているため、出力オブジェクトのモデル座標の場所は、UpperLeftになります。

DECLARE
gr1   sdo_georaster;
gr2   sdo_georaster;
pol   sdo_geometry;
BEGIN
pol := sdo_geometry(2003,4326,NULL,sdo_elem_info_array(1,1003,1),
sdo_ordinate_array(-70.869495075803073, 42.349420282160885,
-70.468523716196913, 42.813138293441916,
-70.957334345349082, 43.218053058782452,
-71.350984405166344, 42.736563729419181,
-70.869495075803073, 42.349420282160885));
select raster into gr1 from georaster_table where georid = 1;
insert into georaster_table values(2, 'Rectified image',
sdo_geor.init('georaster_rdt')) returning raster into gr2;
sdo_geor.rectify(inGeoRaster       => gr1,
pyramidLevel      => 0,
elevationParam    => null,
dem               => null,
outSRID           => 4326,
outModelCoordLoc  => 1,
cropArea          => pol,
polygonClip       => 'true',
layerNumbers      => null,
outResolutions    => sdo_number_array(30,30),
resolutionUnit    => 'unit=meter',
referencePoint    => null,
resampleParam     => 'resampling=CUBIC',
storageParam      => 'blockSize=(512,512,3)',
outGeoraster      => gr2);
update georaster_table set georaster = gr2 where georid = 2;
commit;
END;

6.101 SDO_GEOR.reproject

構文

SDO_GEOR.reproject(
inGeoRaster     IN SDO_GEORASTER,
resampleParam   IN VARCHAR2,
storageParam    IN VARCHAR2,
outSRID         IN NUMBER,
outGeoraster    IN OUT SDO_GEORASTER,
bgValues        IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.reproject(
inGeoRaster     IN SDO_GEORASTER,
pyramidLevel    IN NUMBER,
cropArea        IN SDO_GEOMETRY,
layerNumbers    IN VARCHAR2,
resampleParam   IN VARCHAR2,
storageParam    IN VARCHAR2,
outSRID         IN NUMBER,
outGeoraster    IN OUT SDO_GEORASTER,
bgValues        IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.reproject(
inGeoRaster     IN SDO_GEORASTER,
pyramidLevel    IN NUMBER,
cropArea        IN SDO_NUMBER_ARRAY,
bandNumbers     IN VARCHAR2,
resampleParam   IN VARCHAR2,
storageParam    IN VARCHAR2,
outSRID         IN NUMBER,
outGeoraster    IN OUT SDO_GEORASTER,
bgValues        IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.reproject(
inGeoRaster     IN SDO_GEORASTER,
pyramidLevel    IN NUMBER,
cropArea        IN SDO_GEOMETRY,
layerNumbers    IN VARCHAR2,
resampleParam   IN VARCHAR2,
storageParam    IN VARCHAR2,
outSRID         IN NUMBER,
rasterBlob      IN OUT NOCOPY BLOB,
outArea         OUT SDO_GEOMETRY,
outWindow       OUT SDO_NUMBER_ARRAY,
bgValues        IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.reproject(
inGeoRaster     IN SDO_GEORASTER,
pyramidLevel    IN NUMBER,
cropArea        IN SDO_NUMBER_ARRAY,
bandNumbers     IN VARCHAR2,
resampleParam   IN VARCHAR2,
storageParam    IN VARCHAR2,
outSRID         IN NUMBER,
rasterBlob      IN OUT NOCOPY BLOB,
outArea         OUT SDO_GEOMETRY,
outWindow       OUT SDO_NUMBER_ARRAY,
bgValues        IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

GeoRasterオブジェクトの全部または一部を、(outSRIDパラメータで指定された)異なるOracle Spatial and Graph座標系に再投影します。結果のオブジェクトは、新しいGeoRasterオブジェクト(永続記憶域目的)またはBLOB (一時使用目的)のいずれかです。

パラメータ

inGeoRaster

新しいオブジェクトを作成するために再投影処理を実行するSDO_GEORASTERオブジェクトを指定します。

pyramidLevel

ソースGeoRasterオブジェクトのピラミッド・レベルを示す番号を指定します。

cropArea

クロッピング領域を定義します。cropAreaがSDO_GEOMETRY型の場合は、layerNumbersパラメータを使用して1つ以上のレイヤー番号を指定します。cropAreaがSDO_NUMBER_ARRAY型の場合は、bandNumbersパラメータを使用して、1つ以上のバンド番号を指定します。

データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)がクロッピング領域として使用されます(SDO_SRID要件の「使用上の注意」も参照してください)。

layerNumbers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。

bandNumbers

処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、1-3はバンド1、2および3を示します)。

resampleParam

リサンプリング・パラメータを含む文字列を指定します。使用可能なキーワードおよび値については、「使用上の注意」を参照してください。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

outGeoRaster

スケール変更処理の結果を反映させる新しいSDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)inGeoRasterと同じGeoRasterオブジェクトは指定できません。

rasterBlob

新しい座標系を反映した出力を保持するBLOBを指定します。再投影処理の前に、これが存在しているか、または初期化されている必要があります。

outArea

結果のオブジェクトのモデル座標系の最小境界矩形(MBR)を含むSDO_GEOMETRYオブジェクトを指定します。

outWindow

セル空間内で出力ウィンドウの左上角および右下角の座標を指定するSDO_NUMBER_ARRAYオブジェクトを指定します。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上の注意

このプロシージャには2つの一般的な種類のインタフェースがあります。

- 最初の3つの構文では、データベースに格納するための永続GeoRasterオブジェクトが生成されます。

- 残りの構文では、即座に使用するための一時的な格納(画面へのデータの表示など)のためにBLOBが生成されます。

inGeoRasterは、地理参照され、MDSYS.CS_SRS表のSRID列のSRID値を持つ必要があります。outSRIDは、inGeoRasterのSRIDとは異なる必要があります。再投影が不適切な場合もあります(たとえば、NAD83, Massachusetts Mainland (SRID = 26986)のGeoRasterオブジェクトを座標系NAD 27, UTMゾーン49N (SRID = 2032649)に再投影するなど)。この場合、再投影すると大規模なひずみが発生するため、実行されません。

inGeoRasterとoutGeoRasterには異なるGeoRasterオブジェクトを指定する必要があります。操作後に、結果のGeoRasterオブジェクトのULT座標は、0 (ゼロ)に設定されます。

ソースまたは宛先オブジェクトに3次元座標系が含まれる場合、高さ(Z)の値は0 (ゼロ)に設定されます。

pyramidLevelパラメータを含む構文を使用して0 (ゼロ)より大きい値を指定した場合、再投影はソースGeoRasterオブジェクトの指定したピラミッド・レベルに基づきますが、それ以外の場合、再投影は、元のGeoRasterオブジェクト(pyramidLevel=0)に基づきます。出力GeoRasterオブジェクトにはピラミッド・データが含まれません。

cropAreaパラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は、MDSYS.CS_SRS表のSRID列の値である必要があります。cropAreaパラメータ・ジオメトリとinGeorasterオブジェクト・モデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、cropAreaパラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)

cropAreaパラメータで測地MBRを指定する場合、日付変更線をまたぐMBRは指定できません。(測地MBRについては、『Oracle Spatial and Graph開発者ガイド』を参照してください。)指定したクロッピング領域とソースGeoRasterオブジェクトの空間エクステントが重複する部分のみが再投影されます。

resampleParamには、次の1つ以上のキーワードにそれぞれ適切な値を指定して、それらを引用符で囲んだ文字列を指定する必要があります。

- resampling (resampling=NNなど): リサンプリング・メソッドを指定します。NN、BILINEAR、CUBIC、AVERAGE4、AVERAGE16のいずれかを指定する必要があります。詳細は、「リサンプリングおよび内挿」を参照してください。

- nodata (nodata=TRUEなど): プロシージャでの処理中にNODATA値およびその値の範囲を考慮するかどうかを指定します。TRUE (NODATA値およびその値の範囲を考慮する)またはFALSE (NODATA値およびその値の範囲を考慮しない)のいずれかを指定します。デフォルト値はFALSEです。この値がTRUEで、リサンプリング・メソッドがBILINEAR、CUBIC、AVERAGE4またはAVERAGE16の場合、リサンプリングの計算に含まれるセル値がNODATA値であると、リサンプリングの結果も常にNODATA値になります。複数のNODATA値または値の範囲が存在する場合、結果のNODATA値は、現行のラスター・レイヤーに関連付けられているNODATA値の最小値になります。

例

次の例では、SRID 32618によって定義された座標系にGeoRasterオブジェクトを再投影します。結果は、別のGeoRasterオブジェクトです。

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
SELECT georaster INTO gr1 from georaster_table WHERE georid=10;
INSERT INTO reproject_table VALUES (21, 'WGS 84 / UTM zone 18N',
SDO_GEOR.init('rdt_5', 21))
RETURNING georaster INTO gr2;
sdo_geor.Reproject(gr1, 0, 0, SDO_NUMBER_ARRAY(0, 0, 517, 517),
null, null, 'blocking=true, blocksize=(256,256,3),
interleaving=BSQ', 32618, gr2);
UPDATE georaster_table SET georaster=gr2 WHERE georid=21;
COMMIT;
END;
/

次の例では、SRID 32618によって定義された座標系にGeoRasterオブジェクトを再投影します。結果は、JPEG-F形式のデータを含む一時BLOBです。

DECLARE
gr1 sdo_georaster;
lob1 BLOB;
outArea SDO_Geometry;
outWindow SDO_NUMBER_ARRAY;
BEGIN
SELECT georaster INTO gr1 from georaster_table WHERE georid=10;
dbms_lob.createTemporary(lob1, TRUE);
sdo_geor.Reproject(gr1, 0, SDO_NUMBER_ARRAY(0, 0, 120, 300),
'0',  null, 'compression = JPEG-F', 32618,
lob1, outArea, outWindow);

dbms_lob.freeTemporary(lob1);
COMMIT;
END;
/

6.102 SDO_GEOR.scaleCopy

構文

SDO_GEOR.scaleCopy(
inGeoRaster    IN SDO_GEORASTER,
scaleParam     IN VARCHAR2,
resampleParam  IN VARCHAR2,
storageParam   IN VARCHAR2,
outGeoRaster   IN OUT SDO_GEORASTER,
bgValues       IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.scaleCopy(
inGeoRaster    IN SDO_GEORASTER,
pyramidLevel   IN NUMBER,
scaleParam     IN VARCHAR2,
resampleParam  IN VARCHAR2,
storageParam   IN VARCHAR2,
outGeoRaster   IN OUT SDO_GEORASTER,
bgValues       IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

行次元および列次元に沿ってイメージを拡大または縮小して、GeoRasterオブジェクトをスケール変更し、そのスケール変更が反映された結果を新しいオブジェクトに格納します。

パラメータ

inGeoRaster

新しいオブジェクト(outGeoRaster)を作成するためにスケール変更処理を実行するSDO_GEORASTERオブジェクトを指定します。

pyramidLevel

ソースGeoRasterオブジェクトのピラミッド・レベルを示す番号を指定します。

scaleParam

スケール変更パラメータ・キーワード、およびその関連する値を示す文字列を指定します。キーワードは次のいずれかである必要があります。

注意:

GeoRasterのサブプログラムに対する文字列(VARCHAR2)パラメータの中に数値がある場合は、ロケールにかかわらず、小数点にはピリオド(.)を使用する必要があります。

- scaleFactor: 元のサイズに乗算して縮小または拡大を実行します。このキーワードには、0 (ゼロ)より大きい数値を指定する必要があります('scaleFactor=0.75'など)。値が1.0の場合、現行のサイズは変更されません。値が1より小さい場合はイメージは縮小され、1より大きい場合はイメージは拡大されます。各次元のセル数は、元の数にscaleFactorを掛けた値になります。たとえば、scaleFactor値が2で、GeoRasterオブジェクトがXおよびY次元を持つ場合、各次元のセル数は2倍になります。

- maxDimSize: 各次元のセルの最大数によってサイズを指定します。このキーワードには、次元ごとの数値を指定する必要があります('maxDimSize=(512,512)'など)。アスペクト比は変更されません。

resampleParam

リサンプリング・パラメータを含む文字列を指定します。使用可能なキーワードおよび値については、「使用上の注意」を参照してください。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

outGeoRaster

スケール変更処理の結果を反映させる新しいSDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)inGeoRasterと同じGeoRasterオブジェクトは指定できません。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上の注意

このプロシージャは、元のGeoRasterオブジェクトまたは元のGeoRasterオブジェクトに指定したピラミッド・レベルに基づき、指定したスケール変更が反映された新しいGeoRasterオブジェクトを作成する場合に使用します。このプロシージャを使用した後、元のGeoRasterオブジェクトのコピーで希望どおり変更されているかを確認し、必要に応じて元のGeoRasterオブジェクトを破棄します。

pyramidLevelパラメータを含まない構文を使用すると、元のGeoRasterオブジェクト(pyramidLevel=0)を基にスケール変更が行われます。

スケール変更されたセル値を取得する必要がある場合は、SDO_GEOR.getCellValueファンクションの「使用上の注意」に示すプロシージャを使用します。

inGeoRasterとoutGeoRasterには異なるGeoRasterオブジェクトを指定する必要があります。

resampleParamには、次の1つ以上のキーワードにそれぞれ適切な値を指定して、それらを引用符で囲んだ文字列を指定する必要があります。

- resampling (resampling=NNなど): リサンプリング・メソッドを指定します。NN、BILINEAR、BIQUADRATIC、CUBIC、AVERAGE4、AVERAGE16のいずれかを指定する必要があります。詳細は、「リサンプリングおよび内挿」を参照してください。

- nodata (nodata=TRUEなど): プロシージャでの処理中にNODATA値およびその値の範囲を考慮するかどうかを指定します。TRUE (NODATA値およびその値の範囲を考慮する)またはFALSE (NODATA値およびその値の範囲を考慮しない)のいずれかを指定します。デフォルト値はFALSEです。この値がTRUEで、リサンプリング・メソッドがBILINEAR、BIQUADRATIC、CUBIC、AVERAGE4またはAVERAGE16の場合、リサンプリングの計算に含まれるセル値がNODATA値であると、リサンプリングの結果も常にNODATA値になります。複数のNODATA値または値の範囲が存在する場合、結果のNODATA値は、現行のラスター・レイヤーに関連付けられているNODATA値の最小値になります。

この処理中には、入力されるGeoRasterオブジェクトの上位レベルのピラミッド・データは考慮されず、出力されるGeoRasterオブジェクトにはピラミッド・データは含まれません。

スケールが変更されなかった場合(scaleFactor=1の場合)でも、処理後、行と列のULT座標は常に0 (ゼロ)に設定されます。

このプロシージャは、バンド次元のスケール変更は行いません。

ソースGeoRasterオブジェクトが有効な多項式変換を使用して地理参照される場合、それとともに結果のGeoRasterオブジェクトの地理参照情報が生成されます。それ以外の場合、結果のGeoRasterオブジェクトには空間参照情報は含まれません。

次の1つ以上の条件に該当する場合、例外が発生します。

- inGeoRasterが無効である。

- outGeoRasterが初期化されていない。

- outGeoRasterに対するラスター・データ表が存在せず、outGeoRasterが空白のGeoRasterオブジェクトではない。

例

次の例では、イメージを4分の3 (0.75)のサイズに縮小して、AVERAGE4リサンプリングを指定し、記憶域パラメータで各次元のブロック・サイズを32に指定します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
INSERT INTO georaster_table (georid, georaster)
VALUES (21, sdo_geor.init('RDT_1'))
RETURNING georaster INTO gr2;

SELECT georaster INTO gr1 FROM georaster_table WHERE georid=2;

sdo_geor.scaleCopy(gr1, 'scaleFactor=0.75', 'resampling=AVERAGE4',
'blocksize=(32,32)', gr2);
UPDATE georaster_table SET georaster=gr2 WHERE georid=21;
COMMIT;
END;
/

6.103 SDO_GEOR.schemaValidate

構文

SDO_GEOR.schemaValidate(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのメタデータを、GeoRasterのXMLスキーマに対して検証します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、文字列TRUE (メタデータが有効な場合)か、NULL値(GeoRasterオブジェクトまたはそのメタデータがNULLの場合)、あるいはメタデータが無効である理由とエラーの正確な位置を示す1つ以上のOracleエラー・コードを戻します。

このファンクションは、SDO_GEOR.validateGeoRasterファンクションとともに使用します。SDO_GEOR.validateGeoRasterファンクションによってGeoRasterオブジェクトが無効であると判断され、エラー・コード13454が戻された場合、そのオブジェクトのメタデータはGeoRasterのXMLスキーマに対して無効です。この場合、SDO_GEOR.schemaValidateファンクションをコールして、エラーに関する特定の情報(メタデータ内での位置を含む)を取得します。

例

次の例では、GeoRasterオブジェクトのメタデータを検証します。

SELECT t.georid,
sdo_geor.schemavalidate(t.georaster)
FROM georaster_table t
WHERE t.georid = 1;

6.104 SDO_GEOR.setBeginDateTime

構文

SDO_GEOR.setBeginDateTime(
georaster   IN OUT SDO_GEORASTER,
beginTime  TIMESTAMP WITH TIME ZONE);

説明

GeoRasterオブジェクトのメタデータで、ラスター・データ収集の開始日時を設定します。または、beginTimeパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

beginTime

日時を指定します。

使用上の注意

GeoRasterオブジェクトのメタデータで、現行の開始日時(存在する場合)を確認するには、SDO_GEOR.getBeginDateTimeファンクションを使用します。

beginTimeが、GeoRasterオブジェクトのメタデータで指定された終了日時(SDO_GEOR.setEndDateTimeプロシージャを参照)より後の日時に設定された場合、例外が発生します。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

例

次の例では、GeoRasterオブジェクトのメタデータで、ラスター・データ収集の開始日時および終了日時を設定します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setBeginDateTime(grobj, timestamp '2002-11-15 15:00:00');
sdo_geor.setEndDateTime(grobj, timestamp '2002-11-15 15:00:10');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.105 SDO_GEOR.setBinFunction

構文

SDO_GEOR.setBinFunction(
georaster       IN SDO_GEORASTER,
layerNumber  IN NUMBER
binFunction    IN SDO_NUMBER_ARRAY);

説明

レイヤーに関連付けられたビン・ファンクションを設定します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

ビン・タイプを戻すレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

binFunction

ビン・タイプ、ビンの合計数、最初のビン番号、最小セル値および最大セル値を指定する要素を含む配列として、ビン・ファンクションを指定します。SDO_NUMBER_ARRAY型はVARRAY(1048576) OF NUMBERとして定義されます。詳細および例については、「使用上の注意」を参照してください。

使用上の注意

ビン・ファンクションは、GeoRasterセルの値または値の範囲を、特定のビン番号にマップします。ビン番号はすべて整数です。タイプがLINEARのビン・ファンクションが定義されている場合、このファンクションはSDO_GEOR.generateStatisticsファンクションでセル値に対する統計を算出するために使用されます。GeoRasterでは、ビン・ファンクションの操作および処理を行うインタフェースは提供されません。

binFunctionパラメータには、5つの数字からなる配列を指定します。各数字の意味は次のとおりです。

- 1番目の数字はビン・タイプを示します。0 (LINEAR)または1 (LOGARIGHM)を指定する必要があります。

- 2番目の数字はビンの合計数を示します。

- 3番目の数字は最初のビンの番号を示します。

- 4番目の数字は範囲に含まれる最小セル値です。

- 5番目の数字は範囲に含まれる最大セル値です。

たとえば、binFunctionがSDO_NUMBER_ARRAY(0,10,1,0,511)の場合、ビン・タイプはLINEARで、1から10までの番号が付けられた(1から始まる)10個のビンがあり、0から511のセル値がビン1からビン10に均一に分散されています。

layerNumberがNULL、負、またはレイヤーの最大番号より大きい値の場合、例外が発生します。

例

次の例では、「使用上の注意」で説明したbinFunctionパラメータ値を使用して、指定したGeoRasterオブジェクトのレイヤー3のビン・ファンクションを設定します。

DECLARE
gr sdo_georaster;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setBinFunction(gr, 3, sdo_number_array(0,10,1,0,511));
UPDATE georaster_table SET georaster=gr WHERE georid=4;
END;
/

6.106 SDO_GEOR.setBinTable

構文

SDO_GEOR.setBinTable(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
tableName     IN VARCHAR2);

説明

レイヤーに関連付けられたビン表の名前を設定します。または、tableNameパラメータにNULLが指定された場合、既存の値を削除します。

注意:

今回のリリースのGeoRasterでは、ビン表を使用した操作は実行されません。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

ビン表の名前を設定するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

tableName

レイヤーに関連付けられたビン表の名前を指定します。

使用上の注意

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

このプロシージャは、ビン・タイプがEXPLICITの場合にのみ有効です。ビン・タイプを取得するには、SDO_GEOR.getBinTypeファンクションを使用します。

レイヤーのビン表を戻すには、SDO_GEOR.getBinTableファンクションを使用します。

SDO_GEOR.getBinTypeファンクションの「使用上の注意」も参照してください。

layerNumberがNULLか、GeoRasterオブジェクトに対して無効な場合、またはtableNameが空の文字列('')の場合は例外が発生します。

例

次の例では、GEORASTER_TABLE表の指定したGeoRasterオブジェクトで、レイヤー番号3のビン表の名前をBINT1に設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setBinTable(grobj, 3, 'BINT1');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.107 SDO_GEOR.setBitmapMask

構文

SDO_GEOR.setBitmapMask(
georaster         IN OUT SDO_GEORASTER,
layerNumber    IN NUMBER,
mask                IN SDO_GEORASTER,
NODATAMask  IN VARCHAR2 DEFAULT NULL);

説明

GeoRasterオブジェクトにビットマップ・マスクをアタッチするか、現行のビットマップ・マスクを置換または削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

ビットマップ・マスクを関連付けるレイヤーを指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

mask

GeoRasterオブジェクトにアタッチするビットマップ・マスクを指定します。このパラメータがNULLの場合は、指定したGeoRasterオブジェクト・レイヤーに関連付けられた既存のビットマップ・マスクがすべて削除されます。

NODATAMask

maskをNODATAマスクとして解釈するかどうかを指定します。文字列TRUEでは、maskはNODATAマスクとして解釈されますが、NULLを含む他の値では、maskはNODATAマスクとして解釈されません。

使用上の注意

このプロシージャは、指定したGeoRasterオブジェクトまたはレイヤーにビットマップ・マスクがすでに関連付けられている場合、指定したマスクとの置換または削除(maskパラメータにNULL値が指定されている場合)を行います。

maskパラメータ値がNULLでない場合、ビットマップ・マスクは1つのバンドのみを持つ有効な1BITのGeoRasterオブジェクトであることが必要です。また、ビットマップ・マスクの行および列次元のサイズは、ターゲットのGeoRasterオブジェクトの行および列次元と同じであることが必要です。入力されたGeoRasterオブジェクト(georasterパラメータ)と同じGeoRasterオブジェクトは指定できません。

ターゲットのGeoRasterオブジェクトが空白のGeoRasterオブジェクトの場合、このプロシージャでは例外が発生します。

ビットマップ・マスクの詳細は、「ビットマップ・マスク」を参照してください。

例

次の例では、GRTAB表にあるid=1のGeoRasterオブジェクトをビットマップ・マスクとして使用し、GEORASTER_TABLEにあるgeorid=1のGeoRasterオブジェクトの1番レイヤーにアタッチします。ビットマップ・マスクはNODATAマスクと解釈されます。

declare
gr sdo_georaster;
mk sdo_georaster;
begin
select georaster into gr from georaster_table where georid=1 for update;
select grobj into mk from grtab where id=1;
sdo_geor.setBitmapMask(gr, 1, mk, 'true');
update georaster_table set georaster=gr where georid=0;
commit;
end;
/

6.108 SDO_GEOR.setBlankCellValue

構文

SDO_GEOR.setBlankCellValue(
georaster  IN OUT SDO_GEORASTER,
value         IN NUMBER);

説明

指定されたGeoRasterオブジェクトが空白のGeoRasterオブジェクトである場合に、すべてのセルに使用されるセル値を設定(変更)します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

value

空白のGeoRasterオブジェクトに使用するセル値を指定します。NULL値は指定できません。

使用上の注意

空白のGeoRasterオブジェクトでは、すべてのセルが同じセル値を持ちます。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

空白のGeoRasterオブジェクトの空白のセル値を戻すには、SDO_GEOR.getBlankCellValueファンクションを使用します。指定したGeoRasterオブジェクトが空白のGeoRasterオブジェクトかどうかを確認するには、SDO_GEOR.isBlankファンクションを使用します。

valueがNULLか、またはcellDepthの指定と一貫性がない場合、あるいはGeoRasterオブジェクトが空白以外の場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が1である行に含まれているGeoRasterオブジェクト(GEORASTER列)のすべてのセルで使用する値に、255を指定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=1 FOR UPDATE;
sdo_geor.setBlankCellValue(grobj, 255);
UPDATE georaster_table SET georaster = grobj WHERE georid=1;
COMMIT;
END;
/

6.109 SDO_GEOR.setColorMap

構文

SDO_GEOR.setColorMap(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
colorMap        IN SDO_GEOR_COLORMAP);

説明

GeoRasterオブジェクトのレイヤーのカラーマップを設定します。または、colorMapパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

操作を実行するレイヤーの番号を指定します。

colorMap

SDO_GEOR_COLORMAP型のカラーマップ・オブジェクトを指定します(「SDO_GEOR_COLORMAPオブジェクト型」を参照)。

使用上の注意

指定するカラーマップ・オブジェクトは、次の条件に該当する必要があります。

- cellValue値は、GeoRasterオブジェクトのcellDepth値と一貫性があり、その値の範囲内にある。

- 赤、緑、青およびアルファ値が、0から255の整数である。

- cellValue配列に含まれるエントリが重複していない。

- cellValue配列のエントリが、昇順である。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

カラーマップを作成するか、または既存のGeoRasterオブジェクトからカラーマップを取得して使用できます。GeoRasterオブジェクトのレイヤーのカラーマップを戻すには、SDO_GEOR.getColorMapファンクションを使用します。

layerNumberがNULLか、GeoRasterオブジェクトに対して無効である場合、colorMapの中に赤、緑、青のいずれかが存在する場合、アルファ値がNULLか、範囲外である場合、cellValue配列の中に重複値が存在する場合、cellValue値のいずれかがNULL、範囲外または順序が適切でない場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー2のカラーマップを設定します。ここでは、GeoRasterオブジェクトがビットマップであると想定しています。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
cmobj sdo_geor_colormap;
BEGIN
cmobj := sdo_geor_colormap(sdo_number_array(0, 1),
sdo_number_array(0, 255),
sdo_number_array(0, 0),
sdo_number_array(0, 0),
sdo_number_array(255, 255));

SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setColorMap(grobj, 2, cmobj);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.110 SDO_GEOR.setColorMapTable

構文

SDO_GEOR.setColorMapTable(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
tableName     IN VARCHAR2);

説明

GeoRasterオブジェクトのレイヤーのカラーマップ表を設定します。または、tableNameパラメータにNULLが指定された場合、既存の値を削除します。

注意:

このプロシージャは、カラーマップ表の名前をGeoRasterに登録します。ただし、今回のリリースのGeoRasterでは、カラーマップ表を使用した操作は実行されません。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

操作を実行するレイヤーの番号を指定します。

tableName

ユーザー定義のカラーマップ表の名前を指定します。カラー・マップの詳細は、「SDO_GEOR_COLORMAPオブジェクト型」を参照してください。

使用上の注意

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

GeoRasterオブジェクトのレイヤーのカラーマップ表を戻すには、SDO_GEOR.getColorMapTableファンクションを使用します。

layerNumberがNULLか、GeoRasterオブジェクトに対して無効な場合、またはtableNameが空の文字列('')の場合は例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー2のカラーマップ表をNULLに設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setColorMapTable(grobj, 2, null);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.111 SDO_GEOR.setControlPoint

構文

SDO_GEOR.setControlPoint (
inGeoraster  IN OUT SDO_GEORASTER,
controlPoint  IN SDO_GEOR_GCP);

説明

GeoRasterオブジェクトの地上基準点(GCP)を追加するか、既存のGCPを置き換えます(入力基準点と同じID値を持つ場合)。

パラメータ

inGeoraster

GeoRasterオブジェクトを指定します。

controlPoint

inGeorasterに追加するGCPを指定します。SDO_GEOR_GCP型のオブジェクトである必要があります(「SDO_GEOR_GCPオブジェクト型」を参照)。

使用上の注意

GCPを使用する地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

controlPointがNULLの場合、ファンクションはアクションを実行せずに戻されます。GCPがcontrolPointで定義されているものと同じ点IDを持つGeoRasterオブジェクト・メタデータで検出されると、そのGCPは置換されますが、それ以外の場合はこのGCPが地理参照モデルに追加されます。

例

次の例では、指定したGeoRasterオブジェクトにGCPを追加します。

DECLARE
gr1            sdo_georaster;
GCP         SDO_GEOR_GCP;
BEGIN
SELECT georaster INTO gr1 from georaster_table WHERE georid=10 FOR UPDATE;

GCP := SDO_GEOR_GCP('21', 'Updated', 1,
2, sdo_number_array(25.625000, 73.875000),
2, sdo_number_array(237036.937500, 897987.187500),
NULL, NULL);
sdo_geor.setControlPoint(gr1, GCP);
UPDATE georaster_table SET georaster=gr1 WHERE georid=10;
COMMIT;
END;
/

6.112 SDO_GEOR.setDefaultAlpha

構文

SDO_GEOR.setDefaultAlpha(
georaster      IN OUT SDO_GEORASTER,
defaultAlpha  IN NUMBER);

説明

GeoRasterオブジェクトを表示する際に、(RGBA色空間の)アルファの色構成要素に使用されるレイヤー番号を設定します。または、defaultAlphaパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

defaultAlpha

指定したGeoRasterオブジェクトを表示する際に、(RGBA色空間の)アルファの色構成要素に使用されるレイヤー番号を指定します。指定する値は0 (ゼロ)より大きく、GeoRasterオブジェクトのレイヤーの最大番号以下である必要があります。

使用上の注意

デフォルトの赤、緑、青およびアルファの値は、疑似カラー表示またはグレースケール表示ではなく、トゥルーカラー表示に使用されます。これらの値はオプションで、マルチレイヤーまたはハイパースペクトルのGeoRasterオブジェクトを視覚化する場合にのみ使用されます。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

アルファの色構成要素のみで使用するレイヤー番号を設定しようとした場合、またはdefaultAlphaが、GeoRasterオブジェクトの有効なレイヤー番号ではない場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表に含まれるGeoRasterオブジェクト(GEORASTER列)のデフォルトの赤、緑、青およびアルファの色レイヤーを設定して、それらのGeoRasterオブジェクトを表示する際に赤、緑、青およびアルファの色構成要素に使用されるレイヤー番号の配列を戻します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setDefaultRed(grobj, 5);
sdo_geor.setDefaultGreen(grobj, 4);
sdo_geor.setDefaultBlue(grobj, 3);
sdo_geor.setDefaultAlpha(grobj, 2);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

SELECT sdo_geor.getDefaultColorLayer(georaster) FROM georaster_table
WHERE georid=4;

SDO_GEOR.GETDEFAULTCOLORLAYER(GEORASTER)
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(5, 4, 3, 2)

1 row selected.

6.113 SDO_GEOR.setDefaultBlue

構文

SDO_GEOR.setDefaultBlue(
georaster    IN OUT SDO_GEORASTER,
defaultBlue  IN NUMBER);

説明

GeoRasterオブジェクトを表示する際に、(RGB色空間の)青の色構成要素に使用されるレイヤー番号を設定します。または、defaultBlueパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

defaultBlue

指定したGeoRasterオブジェクトを表示する際に、(RGB色空間の)青の色構成要素に使用されるレイヤー番号を指定します。指定する値は0 (ゼロ)より大きく、GeoRasterオブジェクトのレイヤーの最大番号以下である必要があります。

使用上の注意

デフォルトの赤、緑および青の値は、疑似カラー表示またはグレースケール表示ではなく、トゥルーカラー表示に使用されます。これらの値はオプションで、マルチレイヤーまたはハイパースペクトルのGeoRasterオブジェクトを視覚化する場合にのみ使用されます。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

青色の構成要素のみで使用するレイヤー番号を設定または削除しようとした場合、またはdefaultBlueが、GeoRasterオブジェクトの有効なレイヤー番号ではない場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表に含まれるGeoRasterオブジェクト(GEORASTER列)のデフォルトの赤、緑および青の色レイヤーを設定して、それらのGeoRasterオブジェクトを表示する際に赤、緑および青の色構成要素に使用されるレイヤー番号の配列を戻します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setDefaultRed(grobj, 5);
sdo_geor.setDefaultGreen(grobj, 4);
sdo_geor.setDefaultBlue(grobj, 3);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

SELECT sdo_geor.getDefaultColorLayer(georaster) FROM georaster_table
WHERE georid=4;

SDO_GEOR.GETDEFAULTCOLORLAYER(GEORASTER)
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(5, 4, 3)

1 row selected.

6.114 SDO_GEOR.setDefaultColorLayer

構文

SDO_GEOR.setDefaultColorLayer(
georaster     IN OUT SDO_GEORASTER,
defaultRGB  IN SDO_NUMBER_ARRAY);

説明

GeoRasterオブジェクトを表示する際に、赤、緑、青およびアルファの各色構成要素に使用されるデフォルトのレイヤー番号を設定します。または、defaultRGBパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

defaultRGB

指定したGeoRasterオブジェクトを表示する際の赤、緑、青およびアルファの各色構成要素を示す3つまたは4つの数値の配列を指定します。各数値は0 (ゼロ)より大きく、GeoRasterオブジェクトのレイヤーの最大番号以下である必要があります。

使用上の注意

指定されたRGBAレイヤー番号は、疑似カラー表示またはグレースケール表示ではなく、トゥルーカラー表示に使用されます。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

SDO_GEOR.setDefaultRed、SDO_GEOR.setDefaultGreen、SDO_GEOR.setDefaultBlueおよびSDO_GEOR.setDefaultAlphaプロシージャを使用すると、それぞれの色構成要素(RGB)のレイヤー番号を設定できます。

デフォルトのRGBAレイヤー番号は、同時に設定または削除する必要があります。デフォルトのアルファ・レイヤー番号はオプションです。デフォルトの赤、緑および青のレイヤー番号を設定する場合、デフォルトのアルファ・レイヤー番号を設定できます。デフォルトの赤、緑および青のレイヤー番号を削除する場合、デフォルトのアルファ・レイヤー番号も削除する必要があります。

デフォルトのアルファ・レイヤーはオプションであるため、(A)このプロシージャに3つの数値を指定してデフォルトの赤、緑および青の色構成要素を設定するか、(B)このプロシージャに4つの数値を指定してデフォルトの赤、緑、青およびアルファの色構成要素を設定できます。defaultRGBが3つの数値の配列である場合、それは赤、緑および青の色構成要素のみを示します。defaultRGBが4つの数値の配列である場合、それは赤、緑、青およびアルファの構成要素を示します。

defaultRGBが不適切なサイズの場合、またはこのパラメータのいずれかの要素がNULLであるか、GeoRasterオブジェクトに対して無効なレイヤー番号である場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が2である行に含まれているGeoRasterオブジェクト(GEORASTER列)を表示する際に、赤、緑、青およびアルファの色構成要素に使用するレイヤー番号として1を指定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=2 FOR UPDATE;
sdo_geor.setDefaultColorLayer(grobj, sdo_number_array(1,1,1,1));
UPDATE georaster_table SET georaster = grobj WHERE georid=2;
COMMIT;
END;
/

6.115 SDO_GEOR.setDefaultGreen

構文

SDO_GEOR.setDefaultGreen(
georaster       IN OUT SDO_GEORASTER,
defaultGreen  IN NUMBER);

説明

GeoRasterオブジェクトを表示する際に、(RGB色空間の)緑の色構成要素に使用されるレイヤー番号を設定します。または、defaultGreenパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

defaultGreen

指定したGeoRasterオブジェクトを表示する際に、(RGB色空間の)緑の色構成要素に使用されるレイヤー番号を指定します。指定する値は0 (ゼロ)より大きく、GeoRasterオブジェクトのレイヤーの最大番号以下である必要があります。

使用上の注意

デフォルトの赤、緑および青の値は、疑似カラー表示またはグレースケール表示ではなく、トゥルーカラー表示に使用されます。これらの値はオプションで、マルチレイヤーまたはハイパースペクトルのGeoRasterオブジェクトを視覚化する場合にのみ使用されます。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

緑色の構成要素のみで使用するレイヤー番号を設定または削除しようとした場合、またはdefaultGreenが、GeoRasterオブジェクトの有効なレイヤー番号ではない場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表に含まれるGeoRasterオブジェクト(GEORASTER列)のデフォルトの赤、緑および青の色レイヤーを設定して、それらのGeoRasterオブジェクトを表示する際に赤、緑および青の色構成要素に使用されるレイヤー番号の配列を戻します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setDefaultRed(grobj, 5);
sdo_geor.setDefaultGreen(grobj, 4);
sdo_geor.setDefaultBlue(grobj, 3);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

SELECT sdo_geor.getDefaultColorLayer(georaster) FROM georaster_table
WHERE georid=4;

SDO_GEOR.GETDEFAULTCOLORLAYER(GEORASTER)
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(5, 4, 3)

1 row selected.

6.116 SDO_GEOR.setDefaultPyramidLevel

構文

SDO_GEOR.setDefaultPyramidLevel(
georaster                 IN OUT SDO_GEORASTER,
defaultPyramidLevel  IN NUMBER);

説明

GeoRasterオブジェクトを表示する際に、デフォルトのピラミッド・レベルに使用されるレイヤー番号を設定します。または、defaultPyramidLevelパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

defaultPyramidLevel

指定したGeoRasterオブジェクトを表示するためのデフォルトのピラミッド・レベルを指定します。0 (ゼロ)以上であり、GeoRasterオブジェクトの最大ピラミッド・レベル以下である必要があります。

使用上の注意

ピラミッド・レベルは、必要な記憶域が小さくなる低解像度イメージ、または必要な記憶域が大きくなる高解像度イメージを表します。ピラミッドおよびピラミッド・レベルの詳細は、「ピラミッド」を参照してください。

デフォルトのピラミッド・レベルの指定は、オプション操作であり、生成されたピラミッドでGeoRasterオブジェクトを視覚化する場合にのみ使用します。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

ピラミッドが他の任意の操作(SDO_GEOR.deletePyramidやSDO_GEOR.subsetなど)によってGeoRasterオブジェクトから削除されると、オブジェクトのデフォルトのピラミッド・レベルもメタデータから削除されます。

GeoRasterオブジェクトに生成されたピラミッドが存在しない場合、またはdefaultPyramidLevelがGeoRasterオブジェクトの有効なピラミッド・レベル番号ではない場合、例外が発生します。

デフォルトのピラミッド・レベルは、SDO_GEOR.getDefaultPyramidLevelファンクションを使用して取得できます。

例

次の例では、ピラミッドを生成し、GEORASTER_TABLE表の指定したGeoRasterオブジェクト(GEORASTER列)にデフォルトのピラミッド・レベルを設定して、GeoRasterオブジェクトに設定したデフォルトのピラミッド・レベルを戻します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=6 FOR UPDATE;
sdo_geor.generatePyramid(grobj, 'rLevel=5, resampling=NN');
sdo_geor.setDefaultPyramidLevel(grobj, 3);
UPDATE georaster_table SET georaster = grobj WHERE georid=6;
COMMIT;
END;
/

SELECT georid, sdo_geor.getDefaultPyramidLevel(georaster) FROM georaster_table
WHERE georid=6;

GEORID   PLEVEL
-------------- ----------
6          3

6.117 SDO_GEOR.setDefaultRed

構文

SDO_GEOR.setDefaultRed(
georaster    IN OUT SDO_GEORASTER,
defaultRed  IN NUMBER);

説明

GeoRasterオブジェクトを表示する際に、(RGB色空間の)赤の色構成要素に使用されるレイヤー番号を設定します。または、defaultRedパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

defaultRed

指定したGeoRasterオブジェクトを表示する際に、(RGB色空間の)赤の色構成要素に使用されるレイヤー番号を指定します。指定する値は0 (ゼロ)より大きく、GeoRasterオブジェクトのレイヤーの最大番号以下である必要があります。

使用上の注意

デフォルトの赤、緑および青の値は、疑似カラー表示またはグレースケール表示ではなく、トゥルーカラー表示に使用されます。これらの値はオプションで、マルチレイヤーまたはハイパースペクトルのGeoRasterオブジェクトを視覚化する場合にのみ使用されます。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

赤色の構成要素のみで使用するレイヤー番号を設定または削除しようとした場合、またはdefaultRedが、GeoRasterオブジェクトの有効なレイヤー番号ではない場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表に含まれるGeoRasterオブジェクト(GEORASTER列)のデフォルトの赤、緑および青の色レイヤーを設定して、それらのGeoRasterオブジェクトを表示する際に赤、緑および青の色構成要素に使用されるレイヤー番号の配列を戻します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setDefaultRed(grobj, 5);
sdo_geor.setDefaultGreen(grobj, 4);
sdo_geor.setDefaultBlue(grobj, 3);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

SELECT sdo_geor.getDefaultColorLayer(georaster) FROM georaster_table
WHERE georid=4;

SDO_GEOR.GETDEFAULTCOLORLAYER(GEORASTER)
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(5, 4, 3)

1 row selected.

6.118 SDO_GEOR.setEndDateTime

構文

SDO_GEOR.setEndDateTime(
georaster  IN OUT SDO_GEORASTER,
endTime   IN TIMESTAMP WITH TIME ZONE);

説明

GeoRasterオブジェクトのメタデータで、ラスター・データ収集の終了日時を設定します。または、endTimeパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

endTime

日時を指定します。

使用上の注意

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

GeoRasterオブジェクトのメタデータで、現行の終了日時(存在する場合)を確認するには、SDO_GEOR.getEndDateTimeファンクションを使用します。

endTimeが、GeoRasterオブジェクトのメタデータで指定された開始日時(SDO_GEOR.setBeginDateTimeプロシージャを参照)より前の日時に設定された場合、例外が発生します。

例

次の例では、GeoRasterオブジェクトのメタデータで、ラスター・データ収集の開始日時および終了日時を設定します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setBeginDateTime(grobj, timestamp '2002-11-15 15:00:00');
sdo_geor.setEndDateTime(grobj, timestamp '2002-11-15 15:00:10');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.119 SDO_GEOR.setGCPGeorefMethod

構文

SDO_GEOR.setGCPGeorefMethod(
inGeoraster           IN OUT SDO_GEORASTER
gcpGeorefMethod IN VARCHAR2);

説明

GeoRasterオブジェクトのGCPベースの地理参照ジオメトリ・モデル・タイプを設定します。

パラメータ

inGeoraster

GeoRasterオブジェクトを指定します。

gcpGeorefMethod

GeoRasterオブジェクトに設定する地理参照ジオメトリ・モデル・タイプを指定します。値には、文字列Affine、QuadraticPolynomial、CubicPolynomial、DLT、QuadraticRationalまたはRPCのいずれかを指定する必要があります。

使用上の注意

GCPを使用する地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

inGeorasterにGCPベースの地理参照情報が含まれない場合、アクションは実行されませんが、それ以外の場合、既存のモデル・タイプが指定したgcpGeorefMethod値に置き換えられます。

プロシージャでは、モデル・タイプ値が設定されるのみで、新しいソリューションは計算されません。新しく設定したモデル・タイプのソリューションを取得するには、SDO_GEOR.georeferenceファンクションを使用します。

例

次の例では、指定したGeoRasterオブジェクトのGCPベースの地理参照ジオメトリ・モデル・タイプを設定し、オブジェクトを更新します。

DECLARE
gr1  sdo_georaster;
BEGIN
SELECT georaster INTO gr1 from georaster_table WHERE georid=10 FOR UPDATE;
sdo_geor.setGCPGeorefMethod(gr1, 'DLT');
UPDATE georaster_table SET georaster=gr1 WHERE georid=10;
COMMIT;
END;
/

6.120 SDO_GEOR.setGCPGeorefModel

構文

SDO_GEOR.setGCPGeorefModel(
inGeoraster          IN OUT SDO_GEORASTER
gcpGeorefModel  IN SDO_GEOR_GCPGEOREFTYPE);

説明

GeoRasterオブジェクトのGCPベースの地理参照モデル情報を設定します。

パラメータ

inGeoraster

GeoRasterオブジェクトを指定します。

gcpGeorefModel

FFMethodType、nGCP、GCPs、solutionAccuracyを含むオブジェクトを指定します。

使用上の注意

GCPを使用する地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

SDO_GEOR_GCPGEOREFTYPEオブジェクト型は、「SDO_GEOR_GCPGEOREFTYPEオブジェクト型」で定義されています。

このプロシージャは、GeoRaster SRSメタデータ構成要素にGCP情報を格納します。gcpGeorefModelがNULLで、GeoRasterオブジェクトに地理参照モデルが含まれる場合、このモデル情報は削除されます。

所定のジオメトリ・モデルに対してgcpGeorefModelに指定されたGCPが十分ではない場合、ファンクションは成功しますが、このGeoRasterオブジェクトを指定してSDO_GEOR.georeferenceをコールすると、例外が発生します。

例

次の例では、指定したGeoRasterオブジェクトのGCPベースの地理参照モデル情報を設定します。

DECLARE
gr1          sdo_georaster;
georefModel  SDO_GEOR_GCPGEOREFTYPE;
GCPs         SDO_GEOR_GCP_COLLECTION;
rms          sdo_number_array;
BEGIN
SELECT georaster INTO gr1 from herman.georaster_table WHERE georid=10 FOR UPDATE;

GCPs:=SDO_GEOR_GCP_COLLECTION(
SDO_GEOR_GCP('21', '', 1,
2, sdo_number_array(25.625000, 73.875000),
2, sdo_number_array(237036.937500, 897987.187500),
NULL, NULL),
SDO_GEOR_GCP('22', '', 1,
2, sdo_number_array(100.625000, 459.125000),
2, sdo_number_array(237229.562500, 897949.687500),
NULL, NULL),
SDO_GEOR_GCP('23', '', 1,
2, sdo_number_array(362.375000, 77.875000),
2, sdo_number_array(237038.937500, 897818.812500),
NULL, NULL),
SDO_GEOR_GCP('24', '', 1,
2, sdo_number_array(478.875000, 402.125000),
2, sdo_number_array(237201.062500, 897760.562500),
NULL, NULL),
SDO_GEOR_GCP('25', '', 2,
2, sdo_number_array(167.470583,  64.030686),
2, sdo_number_array(237032.015343, 897916.264708),
NULL, NULL),
SDO_GEOR_GCP('26', '', 2,
2, sdo_number_array(101.456177,  257.915534),
2, sdo_number_array(237128.957767, 897949.271912),
NULL, NULL)
);

georefModel := SDO_GEOR_GCPGEOREFTYPE('Affine',
GCPs.count, GCPs, rms);
sdo_geor.setGCPGeorefModel(gr1, georefModel);
UPDATE georaster_table SET georaster=gr1 WHERE georid=10;

COMMIT;
END;
/

6.121 SDO_GEOR.setGrayScale

構文

SDO_GEOR.setGrayScale(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
grayScale       IN SDO_GEOR_GRAYSCALE);

説明

GeoRasterオブジェクトのレイヤーのグレースケール・マッピングを設定します。または、grayScaleパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

グレースケール・マッピングを設定するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

grayScale

SDO_GEOR_GRAYSCALE型のオブジェクトを指定します(「SDO_GEOR_GRAYSCALEオブジェクト型」を参照)。

使用上の注意

指定するSDO_GEOR_GRAYSCALEオブジェクトは、次の条件に該当する必要があります。

- cellValue値は、GeoRasterオブジェクトのcellDepth値と一貫性があり、その値の範囲内にある。

- gray値が、0から255の整数である。

- cellValue配列に含まれるエントリが重複していない。

- cellValue配列のエントリが、昇順である。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

GeoRasterオブジェクトのレイヤーのグレースケール・マッピングを戻すには、SDO_GEOR.getGrayScaleファンクションを使用します。

layerNumberがNULLか、GeoRasterオブジェクトに対して無効である場合、いずれかのグレー値がNULLか、範囲外である場合、cellValue配列に重複値が含まれている場合、いずれかのcellValue値がNULL、範囲外または順序が適切でない場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー3のグレースケール・マッピングを設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
gsobj sdo_geor_grayscale;
BEGIN
gsobj := sdo_geor_grayscale(sdo_number_array(1, 10, 20, 30, 255),
sdo_number_array(0, 180, 210, 230, 250));

SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setGrayScale(grobj, 3, gsobj);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.122 SDO_GEOR.setGrayScaleTable

構文

SDO_GEOR.setGrayScaleTable(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
tableName     IN VARCHAR2);

説明

GeoRasterオブジェクトのレイヤーのグレースケール・マッピング表を設定します。または、tableNameパラメータにNULLが指定された場合、既存の値を削除します。

注意:

このプロシージャは、グレースケール・マッピング表の名前をGeoRasterに登録します。ただし、今回のリリースのGeoRasterでは、グレースケール・マッピング表を使用した操作は実行されません。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

グレースケール・マッピング表を設定するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

tableName

指定したGeoRasterオブジェクトのレイヤーのグレースケール・マッピング表の名前を指定します。

使用上の注意

グレースケール表示の詳細は、「SDO_GEOR_GRAYSCALEオブジェクト型」を参照してください。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

GeoRasterオブジェクトのレイヤーのグレースケール・マッピング表を戻すには、SDO_GEOR.getGrayScaleTableファンクションを使用します。

layerNumberがNULLか、GeoRasterオブジェクトに対して無効な場合、またはtableNameが空の文字列('')の場合は例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー3のグレースケール・マッピング表として、GST1を設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setGrayScaleTable(grobj, 3, 'GST1');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.123 SDO_GEOR.setHistogramTable

構文

SDO_GEOR.setHistogramTable(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER
tableName     IN VARCHAR2);

説明

GeoRasterオブジェクトのレイヤーのヒストグラム表を設定します。

注意:

このプロシージャは、ヒストグラム表の名前をGeoRasterに登録します。ただし、今回のリリースのGeoRasterでは、ヒストグラム表を使用した操作は実行されません。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

ヒストグラム表の名前を設定するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

tableName

ヒストグラム表の名前を指定します。このパラメータがNULLの場合、既存のヒストグラム表(実際の表ではない)のメタデータ情報は削除されます。レイヤーの統計情報が存在しない場合、このパラメータはNULLである必要があります。パラメータ値に空の文字列('')を指定することはできません。

使用上の注意

このプロシージャは、ユーザー定義のヒストグラム表を指定します。このオブジェクト型およびヒストグラムの概要は、「SDO_GEOR_HISTOGRAMオブジェクト型」で説明しています。

レイヤーのヒストグラム表の名前を戻すには、SDO_GEOR.getHistogramTableファンクションを使用します。

次の1つ以上の条件に該当する場合、例外が発生します。

- layerNumberがNULLか、またはGeoRasterオブジェクトに対して無効である。

- tableNameが空の文字列('')である。

- 指定されたレイヤーに関連付けられた統計データが設定されていない。
レイヤーに統計データを設定するには、SDO_GEOR.setStatisticsプロシージャをコールします。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー3のヒストグラム表として、HIST1を設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setHistogramTable(grobj, 3, 'HIST1');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.124 SDO_GEOR.setID

構文

SDO_GEOR.setID(
georaster  IN OUT SDO_GEORASTER,
id               IN VARCHAR2);

説明

GeoRasterオブジェクトに関連付けるユーザー定義の識別子を設定します。または、idパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

id

GeoRasterオブジェクトに関連付けるID値を指定します。

使用上の注意

このプロシージャを使用すると、GeoRasterオブジェクトに一意の有効な英数字の識別子を割り当てることができるため、ユーザーおよびアプリケーションがオブジェクトを簡単に識別できます。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

GeoRasterオブジェクトのユーザー定義の識別子の値を戻すには、SDO_GEOR.getIDファンクションを使用します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が2である行に含まれているGeoRasterオブジェクト(GEORASTER列)のユーザー定義の識別子の値として、newidを設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=2 FOR UPDATE;
sdo_geor.setID(grobj, 'newid');
UPDATE georaster_table SET georaster = grobj WHERE georid=2;
COMMIT;
END;
/

6.125 SDO_GEOR.setLayerID

構文

SDO_GEOR.setLayerID(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
id                    IN VARCHAR2);

説明

GeoRasterオブジェクトのレイヤーに関連付けるユーザー定義の識別子を設定します。または、idパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

操作を実行するレイヤーの番号を指定します。

id

GeoRasterオブジェクトの指定したレイヤーに関連付けるID値を指定します。

使用上の注意

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

GeoRasterオブジェクトのレイヤーのユーザー定義の識別子の値を戻すには、SDO_GEOR.getLayerIDファンクションを使用します。

layerNumberがNULLか、GeoRasterオブジェクトに対して無効な場合、またはidはNULLであるが、対応するレイヤー情報が存在する場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー2のユーザー定義の識別子の値として、TM_Band_2を設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setLayerID(grobj, 2, 'TM_Band_2');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.126 SDO_GEOR.setLayerOrdinate

構文

SDO_GEOR.setLayerOrdinate(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
ordinate          IN NUMBER);

説明

GeoRasterオブジェクトの指定されたレイヤーにバンド座標値を設定します。または、ordinateパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

操作を実行するレイヤーの番号を指定します。

ordinate

レイヤーのバンド次元のバンド座標値を指定します。

使用上の注意

レイヤーのバンド座標は、レイヤー(layerNumberパラメータ値)が関連付けられている物理バンドを指します。今回のリリースでは、関連付けは、レイヤー1がバンド0、レイヤー2がバンド1のようになる必要があります(「バンド、レイヤーおよびメタデータ」の図1-5を参照)。

オブジェクト・レイヤーのバンド座標は、GeoRasterでは無視されます。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

レイヤーのバンド座標の値を戻すには、SDO_GEOR.getLayerOrdinateファンクションを使用します。

layerNumberがNULLか、GeoRasterオブジェクトに対して無効な場合、ordinateがNULLの場合、またはlayerNumberがオブジェクト・レイヤーを指定していないときに座標がlayerNumber-1と等しくない場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー1のバンド座標値を0 (ゼロ)に設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setLayerOrdinate(grobj, 1, 0);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.127 SDO_GEOR.setModelCoordLocation

構文

SDO_GEOR.setModelCoordLocation(
georaster            IN OUT SDO_GEORASTER
modelCoordLoc  IN VARCHAR2);

説明

GeoRasterオブジェクトのモデル座標の位置を示す値を設定するか、modelCoordLocパラメータにNULLが指定されている場合、現在のモデル座標の位置を示す値(存在する場合)を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

modelCoordLoc

GeoRasterオブジェクトに設定するモデル座標の位置を指定します。これには、NULLを指定するか(現在のモデル座標の位置を示す値を削除する場合)、文字列値のCENTER (セル座標系が中心を基準とする場合)またはUPPERLEFT (セル座標系が左上角を基準とする場合)のいずれかを指定する必要があります。

使用上の注意

このプロシージャでは、CENTERからUPPERLEFTへ、またはUPPERLEFTからCENTERへセル座標系を変更できます。

このプロシージャは、地理参照されているGeoRasterオブジェクトのみに適用され、変更が適宜反映されるように(セル座標とモデル座標間の関係が変わらないようにするために)、GeoRaster SRSの関数フィッティング係数を自動的に調整します。

GeoRasterオブジェクトのモデル座標の位置を示す値を取得するには、SDO_GEOR.getModelCoordLocationファンクションを使用します。

GCPを使用する地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。

例

次の例では、GeoRasterオブジェクトのセル座標系をCENTERに変更します。

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setModelCoordLocation(grobj, 'CENTER');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.128 SDO_GEOR.setModelSRID

構文

SDO_GEOR.setModelSRID(
georaster  IN OUT SDO_GEORASTER,
srid            IN NUMBER);

説明

GeoRasterオブジェクトのモデル(地上)空間に座標系(SDO_SRID値)を設定します。または、sridパラメータにNULLが指定され、GeoRasterメタデータに空間参照情報が含まれていない場合は、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

srid

座標系を指定します。GeoRasterメタデータに空間参照情報が含まれている場合は、MDSYS.CS_SRS表のSRID列の値にする必要があり、GeoRasterメタデータに空間参照情報が含まれていない場合は、NULLにする(座標系をモデル空間に関連付けないようにする)必要があります。srid値に0 (ゼロ)を指定することはできません。

使用上の注意

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

元のGeoRasterオブジェクトが異なるモデル空間SRID値を持つ場合、このプロシージャではラスター・データ自体は変更されず、したがって地理参照係数も調整されません。そのため、このプロシージャを使用しても、GeoRasterオブジェクトのセル・データの再投影またはリサンプリングは行われないため、ユーザーが正しいSRIDを指定する必要があります。

GeoRasterオブジェクトのモデル空間に関連付けられた座標系(SDO_SRID値)を戻すには、SDO_GEOR.getModelSRIDファンクションを使用します。

例

次の例では、GeoRasterオブジェクトの座標系をLongitude / Latitude (WGS 66)に変更します。これは、MDSYS.CS_SRSシステム表のSRID値82394に関連付けられた座標系です。(この例は、GEORASTER_TABLEという名前の表を参照します。この表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setModelSRID(grobj, 82394);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.129 SDO_GEOR.setNODATAMask

構文

SDO_GEOR.setNODATAMask(
georaster           IN OUT SDO_GEORASTER,
layerNumber      IN NUMBER,
isNODATAMask  IN VARCHAR2);

説明

指定したGeoRasterレイヤーのビットマップ・マスクがNODATAマスクであるかどうかを指定し、それに従ってGeoRasterメタデータを更新します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

関連するビットマップ・マスクがあるレイヤーを指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

mask

GeoRasterオブジェクトにアタッチするビットマップ・マスクを指定します。このパラメータがNULLの場合は、指定したGeoRasterオブジェクト・レイヤーに関連付けられた既存のビットマップ・マスクがすべて削除されます。

isNODATAMask

layerNumberレイヤーのビットマップ・マスクをNODATAマスクとして解釈するかどうかを指定します。文字列TRUEでは、ビットマップ・マスクはNODATAマスクとして解釈されますが、文字列FALSEでは、ビットマップ・マスクはNODATAマスクとして解釈されません。

使用上の注意

特別なタイプのNODATAとして処理されるビットマップ・マスク(1つ以上の不規則な領域をNODATA領域として指定するNODATAマスク)の詳細は、「NODATA値および値の範囲」を参照してください。

例

次の例では、サブレイヤー1のビットマップ・マスクをNODATAマスクに設定します。

declare
gr sdo_georaster;
begin
select georaster into gr from georaster_table where georid=1 for update;
sdo_geor.setNODATAMask(gr, 1, 'true');
update georaster_table set georster=gr where georid=1;
commit;
end;

6.130 SDO_GEOR.setOrthoRectified

構文

SDO_GEOR.setOrthoRectified(
georaster   IN OUT SDO_GEORASTER,
isOrthoRectified  IN VARCHAR2);

説明

GeoRasterオブジェクトがオルソ補正されているかどうかを指定します。または、isOrthoRectifiedパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

isOrthoRectified

GeoRasterオブジェクトがオルソ補正されていると指定する場合はTRUE、オルソ補正されていないと指定する場合はFALSEを指定します。GeoRasterメタデータに空間参照情報が含まれていない場合はNULLを指定します。GeoRasterメタデータに空間参照情報が含まれている場合は、TRUEまたはFALSE (大文字/小文字は区別されません)を指定する必要があります。

使用上の注意

このプロシージャは、オブジェクトのGeoRasterメタデータを変更します。オブジェクトを実際にオルソ補正するわけではありません。また、オルソ補正の実行の確認は、ユーザーが行います。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

GeoRasterオブジェクトをオルソ補正済として設定するには、オブジェクトが空間参照および幾何補正されている必要があります。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)を、オルソ補正済であると設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setOrthoRectified(grobj, 'TRUE');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.131 SDO_GEOR.setRasterType

構文

SDO_GEOR.setRasterType(
georaster    IN OUT SDO_GEORASTER,
rasterType  IN NUMBER);

説明

GeoRasterオブジェクトのラスター型を設定します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

rasterType

GeoRasterオブジェクトのrasterType属性として設定する数値を指定します。「rasterType属性」で説明しているように、有効な5桁の数値の形式である必要があります。

使用上の注意

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

rasterTypeがNULLの場合、または既存のrasterType値の最初の3桁が変更されている場合は、例外が発生します。

例

次の例では、GeoRasterオブジェクトのrasterType属性値を20001に設定します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=2 FOR UPDATE;
sdo_geor.setRasterType(grobj, 20001);
UPDATE georaster_table SET georaster = grobj WHERE georid=2;
COMMIT;
END;
/

6.132 SDO_GEOR.setRectified

構文

SDO_GEOR.setRectified(
georaster   IN OUT SDO_GEORASTER,
isRectified  IN VARCHAR2);

説明

GeoRasterオブジェクトが幾何補正されているかどうかを指定します。または、isRectifiedパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

isRectified

GeoRasterオブジェクトが幾何補正されていると指定する場合はTRUE、幾何補正されていないと指定する場合はFALSEを指定します。GeoRasterメタデータに空間参照情報が含まれていない場合はNULLを指定します。GeoRasterメタデータに空間参照情報が含まれている場合は、TRUEまたはFALSE (大文字/小文字は区別されません)を指定する必要があります。

使用上の注意

このプロシージャは、オブジェクトのGeoRasterメタデータを変更します。オブジェクトを実際に幾何補正するわけではありません。また、幾何補正の実行の確認は、ユーザーが行います。(GeoRasterオブジェクトを幾何補正またはオルソ補正するには、SDO_GEOR.rectifyプロシージャを使用できます。)

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

isRectifiedをTRUEに設定する場合は、GeoRasterオブジェクトが空間参照されている必要があります(SDO_GEOR.setSpatialReferencedプロシージャを参照)。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)を、幾何補正されていないと設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setRectified(grobj, 'false');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.133 SDO_GEOR.setScaling

構文

SDO_GEOR.setScaling(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
scalingFunc    IN SDO_NUMBER_ARRAY);

説明

レイヤーに関連付けられたスケール変更ファンクションを設定します。または、scalingFuncパラメータにNULLが指定された場合、既存の値を削除します。

注意:

今回のリリースのGeoRasterでは、スケール変更ファンクションを使用した操作は実行されません。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

操作を実行するレイヤーの番号を指定します。

scalingFunc

スケール変更ファンクションの係数ごとに1つの値を指定した、数値の配列を指定します。スケール変更ファンクションは、次のとおりです。

value = (a_0 + a_1 * cellvalue) / (b_0 + b_1 * cellvalue)

係数の順序は、a_0、a_1、b_0、b_1です。

使用上の注意

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

layerNumberがNULLか、GeoRasterオブジェクトに対して無効である場合、scalingFuncが不適切な配列サイズである場合、a_0、a_1、b_0および_1のいずれかがNULLの場合、またはb_0と_1の両方が0 (ゼロ)の場合は、例外が発生します。

例

次の例では、GeoRasterオブジェクトのレイヤー2に、スケール変更ファンクションの係数を設定します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setScaling(grobj, 2, sdo_number_array(1, 0.5, 1, 0));
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.134 SDO_GEOR.setSourceInfo

構文

SDO_GEOR.setSourceInfo(
georaster   IN OUT SDO_GEORASTER,
sourceInfo  IN VARCHAR2);

説明

GeoRasterオブジェクトのソース情報を設定します。または、sourceInfoパラメータにNULLが指定された場合は、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

sourceInfo

ソース情報を文字列で指定します。最大4096文字です。

使用上の注意

指定したsourceInfo文字列は、GeoRasterオブジェクトのメタデータの<sourceInfo>要素に格納されます(「GeoRasterメタデータのXMLスキーマ」を参照)。

このプロシージャは、既存のソース情報の値をすべて置き換えます。既存の値を保持したまま1つ以上の値を追加する場合は、SDO_GEOR.addSourceInfoプロシージャを使用します。

例

次の例では、指定したGeoRasterオブジェクトに複数のソース情報を設定および追加し、その後でソース情報を取得します。

declare
gr sdo_georaster;
begin
select georaster into gr from georaster_table where georid=1 for update;
sdo_geor.setSourceInfo(gr, 'Copyright (c) 2002, 2007, Oracle Corporation.');
sdo_geor.addSourceInfo(gr, 'All rights reserved.');
update georaster_table set georaster=gr where georid=1;
end;
/

select * from table(select sdo_geor.getSourceInfo(georaster) from georaster_table where id=1);

COLUMN_VALUE
--------------------------------------------------------------------------------
Copyright (c) 2002, 2007, Oracle Corporation.
All rights reserved.

6.135 SDO_GEOR.setSpatialReferenced

構文

SDO_GEOR.setSpatialReferenced(
georaster        IN OUT SDO_GEORASTER,
isReferenced  IN VARCHAR2);

説明

GeoRasterオブジェクトが空間参照されているかどうかを指定します。または、isReferencedパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

isReferenced

GeoRasterオブジェクトが空間参照されていると指定する場合はTRUE、空間参照されていないと指定する場合はFALSEを指定します。GeoRasterメタデータに空間参照情報が含まれていない場合はNULLを指定します。GeoRasterメタデータに空間参照情報が含まれている場合は、TRUEまたはFALSE (大文字/小文字は区別されません)を指定する必要があります。

使用上の注意

このプロシージャは、GeoRasterオブジェクトが空間参照されているかどうかを設定します。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)を、空間参照されていないと設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setSpatialReferenced(grobj, 'FALSE');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.136 SDO_GEOR.setSpatialResolutions

構文

SDO_GEOR.setSpatialResolutions(
georaster    IN OUT SDO_GEORASTER,
resolutions  IN SDO_NUMBER_ARRAY);

説明

GeoRasterオブジェクトの各空間次元の空間解像度の値を設定します。または、resolutionsパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

resolutions

空間次元ごとに1つの値を指定した、数値の配列を指定します。各値は、ピクセルの空間次元によって表現されるデータ領域に関連付けられた測定単位の数を示します。たとえば、空間解像度の値が(10,10)で、地上データの測定単位がmである場合、各ピクセルは10m×10mの領域を示します。

使用上の注意

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

解像度がNULLではなく、GeoRasterメタデータに空間参照情報が含まれていない場合は、このプロシージャによって、最小のデフォルト値を持つ空間参照情報が追加されます。

SDO_GEOR.getSpatialResolutionsファンクションの「使用上の注意」も参照してください。

例

次の例では、GeoRasterオブジェクトの列次元および行次元(X次元およびY次元)の空間解像度の値を設定します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setSpatialResolutions(grobj, sdo_number_array(28.5,28.5));
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.137 SDO_GEOR.setSpectralResolution

構文

SDO_GEOR.setSpectralResolution(
georaster  IN OUT SDO_GEORASTER,
resolution  IN NUMBER);

説明

GeoRasterオブジェクトがハイパースペクトルまたはマルチバンド・イメージである場合、そのスペクトル解像度を設定します。または、resolutionパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

resolution

スペクトル解像度の値を指定します。GeoRasterメタデータにバンド参照情報が含まれていない場合は、NULLにする必要があります。

使用上の注意

バンドの波長幅は、スペクトル単位とスペクトル解像度を組み合せて示します。たとえば、スペクトル解像度の値が2で、スペクトル単位の値がMILLIMETERである場合、バンドの波長幅は2mmです。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

GeoRasterオブジェクトのスペクトル解像度を戻すには、SDO_GEOR.getSpectralResolutionファンクションを使用します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のスペクトル解像度の値を、0.5に設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setSpectralResolution(grobj, 0.5);
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.138 SDO_GEOR.setSpectralUnit

構文

SDO_GEOR.setSpectralUnit(
georaster  IN OUT SDO_GEORASTER,
unit            IN VARCHAR2);

説明

バンドの波長幅を示す測定単位を設定します。または、unitパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

unit

スペクトル単位を指定します。GeoRasterメタデータにバンド参照情報が含まれている場合は、METER、MILLIMETER、MICROMETER、NANOMETERのいずれかの値にする必要があります。GeoRasterメタデータにバンド参照情報が含まれていない場合は、NULLにする必要があります。

使用上の注意

バンドの波長幅は、スペクトル単位とスペクトル解像度を組み合せて示します。たとえば、スペクトル解像度の値が2で、スペクトル単位の値がMILLIMETERである場合、バンドの波長幅は2mmです。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

GeoRasterオブジェクトのスペクトル単位を戻すには、SDO_GEOR.getSpectralUnitファンクションを使用します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のスペクトル単位を、MICROMETERに設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setSpectralUnit(grobj, 'micrometer');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.139 SDO_GEOR.setSRS

構文

SDO_GEOR.setSRS(
georaster  IN OUT SDO_GEORASTER,
srs             IN SDO_GEOR_SRS);

説明

GeoRasterオブジェクトの空間参照情報を設定します。または、srsパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

srs

SDO_GEOR_SRS型のオブジェクトを指定します。SDO_GEOR_SRSオブジェクト型およびそのコンストラクタの詳細は、「SDO_GEOR_SRSオブジェクト型」を参照してください。

このオブジェクトでは、isReferenced、isRectifiedおよびisOrthoRectifiedは、TRUEまたはFALSEに設定し(大文字/小文字は区別されません)、spatialResolutionは適切なサイズの配列にする必要があります。空間の許容差は負の値にはできません。CoordLocationは0または1に設定する必要があります。多項式パラメータはNULLにはできません。

使用上の注意

このプロシージャを使用して、アフィン変換、DLT、RPCモデルなどの関数フィッティング地理参照モデルにGeoRaster SRSを設定できます。

ストアド・ファンクション(GCP)・モデルの場合のみ、このプロシージャを使用せず、かわりにSDO_GEOR.setGCPGeorefModelプロシージャを使用してストアド・ファンクション(GCP)・モデルを設定した方が有益である可能性があります。

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

GeoRasterオブジェクトのSDO_GEOR_SRS情報を戻すには、SDO_GEOR.getSRSファンクションを使用します。

例

次の例では、GeoRasterオブジェクトの空間参照属性を指定し、GeoRasterオブジェクトを更新します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)例の中で、詳しい処理内容を説明します。

最初の例は、GeoRasterオブジェクトにアフィン変換モデルを設定する方法を示しています。

DECLARE
grobj sdo_georaster;
srs   sdo_geor_srs;

BEGIN

SELECT georaster INTO grobj FROM georaster_table WHERE georid=4;
srs := sdo_geor_srs('TRUE', 'TRUE', null, 82262,
sdo_number_array(28.5, 28.5),0.5,0,
0,0,0,0,0,1,1,1,1,1,0,0,0,
SDO_NUMBER_ARRAY(1, 2, 1, 3, 32631.5614, 0, -.03508772),
SDO_NUMBER_ARRAY(1, 0, 0, 1, 1),
SDO_NUMBER_ARRAY(1, 2, 1, 3, -7894.7544, .03508772, 0),
SDO_NUMBER_ARRAY(1, 0, 0, 1, 1));
sdo_geor.setSRS(grobj, srs);

UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

前述の例では、GeoRasterオブジェクトに次のアフィン変換が設定されています。

row = 32631.5614 + 0 * x + (-0.03508772) * y
col = -7894.7544 + 0.03508772 * x + 0 * y

汎用関数フィッティング地理参照モデル(「関数フィッティング地理参照モデル」を参照)を使用する場合は、SRS属性の値は次のようになります。

xOff=yOff=zOff=0
rowOff=columnOff=0
xScale=yScale=zScale=1
rowScale=columnScale=1
polynomial p : pType=1, nVars=2, order=1, nCoefficients= 3
polynomial q : pType=1, nVars=0, order=0, nCoefficients= 1
polynomial r : pType=1, nVars=2, order=1, nCoefficients= 3
polynomial s : pType=1, nVars=0, order=0, nCoefficients= 1

rowNumerator = 32631.5614, 0, -0.03508772
rowDenominator =  1
columnNumerator = -7894.7544, 0.03508772, 0
columnDenominator = 1

SRS構造では、rowNumerator、rowDenominator、columnNumeratorおよびcolumnDenominator要素を使用してpType、nVars、orderおよびnCoefficientsを指定し、残りの要素を使用して各多項式の係数を指定します。

2つ目の例は、GeoRasterオブジェクトにDLTモデルを設定する方法を示しています。一般的な写真測量アプリケーションでは、標定情報付きデジタル航空写真の内部標定パラメータおよび外部標定パラメータを使用して、DLTモデル(精密なモデルの簡略化および近似値化に広く使用されるモデル)を導出できます。次の例は、標準のフレーム・カメラ・モデルから導出されたDLTモデルの例です。

row = (-46507111.2127784 + 65.81484127*X + 13.13186856*Y - 49.62133265*Z) / (-41.47013322 + 0.00004128*X + 0.00009740*Y - 0.00655704*Z)

col = (-5259855.00453679 - 12.07452653*X + 66.23319061*Y - 49.45792766*Z) / (-41.47013322 + 0.00004128*X + 0.00009740*Y - 0.00655704*Z)

この例の場合、対応するGeoRasterのSRSパラメータおよび係数は、次のとおりです。

rowOff=0, colOff=0; rowScale = colScale = 1;
xOff = 0, yOff = 0, zOff = 0; xScale = yScale = zScale =1;
polynomial p : pType=1, nVars=3, order=1, nCoefficients= 4
polynomial q : pType=1, nVars=3, order=1, nCoefficients= 4
polynomial r : pType=1, nVars=3, order=1, nCoefficients= 4
polynomial s : pType=1, nVars=3, order=1, nCoefficients= 4

rowNumerator = -5259855.00453679, -12.07452653, 66.23319061, -49.45792766
rowDenominator = -41.47013322, 0.00004128, 0.00009740, -0.00655704
columnNumerator = -46507111.2127784, 65.81484127, 13.13186856, -49.62133265
columnDenominator = -41.47013322, 0.00004128, 0.00009740, -0.00655704

次の例では、GeoRasterオブジェクトのDLTモデルを設定します。ここではSDO_GEOR_SRSコンストラクタを使用してSDO_GEOR_SRS型のインスタンスを作成し、適切な属性を設定します。

DECLARE
grobj sdo_georaster;
srs sdo_geor_srs;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid = 101;

-- Initiate the SRS object.
srs:=sdo_geor_srs();

-- Fill the parameters of the SRS object.
srs.isReferenced := 'TRUE';
srs.isRectified := 'FALSE';
srs.isOrthoRectified := 'FALSE';
srs.srid := 7406;
srs.spatialResolution := sdo_number_array(0.07, 0.07);
srs.coordLocation := 1;
srs.rowOff := 0;
srs.columnOff := 0;
srs.xOff := 0;
srs.yOff := 0;
srs.zOff := 0;
srs.rowScale := 1;
srs.columnScale := 1;
srs.xScale := 1;
srs.yScale := 1;
srs.zScale := 1;
srs.rowNumerator := SDO_NUMBER_ARRAY(1, 3, 1, 4, -5259855.00453679,
-12.07452653,66.23319061,-49.45792766);
srs.rowDenominator := SDO_NUMBER_ARRAY(1, 3, 1, 4, -41.4701332195,
0.0000412763, 0.0000974018, -0.0065570398);
srs.columnNumerator := SDO_NUMBER_ARRAY(1, 3, 1, 4,
-46507111.2127784, 65.81484127, 13.13186856, -49.62133265);
srs.columnDenominator := SDO_NUMBER_ARRAY(1, 3, 1, 4,
-41.4701332195, 0.0000412763, 0.0000974018, -0.0065570398);

-- Set the SRS metadata to the GeoRaster object.
sdo_geor.setSRS(grobj,srs);
UPDATE georaster_table SET georaster = grobj WHERE georid= 101;
COMMIT;

END;
/

6.140 SDO_GEOR.setStatistics

構文

SDO_GEOR.setStatistics(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
statistics          IN SDO_NUMBER_ARRAY);

または

SDO_GEOR.setStatistics(
georaster            IN OUT SDO_GEORASTER,
layerNumber       IN NUMBER,
statistics               IN SDO_NUMBER_ARRAY,
histogram            IN SDO_GEOR_HISTOGRAM,
samplingFactor   IN NUMBER DEFAULT 1,
samplingWindow IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.setStatistics(
georaster            IN OUT SDO_GEORASTER,
layerNumber       IN NUMBER,
statistics               IN SDO_NUMBER_ARRAY,
histogram            IN SDO_GEOR_HISTOGRAM,
samplingFactor   IN NUMBER DEFAULT 1,
samplingWindow IN SDO_GEOMETRY DEFAULT NULL);

説明

レイヤーに関連付けられた統計データを設定します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

統計を設定するレイヤーの番号を指定します。値が0 (ゼロ)の場合、オブジェクト・レイヤーが指定されます。

statistics

MIN、MAX、MEAN、MEDIAN、MODEVALUEおよびSTDの数値の配列を指定します。配列のすべての値に、NULL以外の値を指定する必要があります。SDO_NUMBER_ARRAY型はVARRAY(1048576) OF NUMBERとして定義されます。

このパラメータがNULLの場合、レイヤーに関連付けられたすべての統計情報は削除されます。

histogram

SDO_GEOR_HISTOGRAM型のヒストグラムを指定します。このオブジェクト型およびヒストグラムの概要は、「SDO_GEOR_HISTOGRAMオブジェクト型」で説明しています。

samplingFactor

サンプリング係数を指定します。1/nの分母nのことで、統計の算出時に使用するセルの数を表します。たとえば、samplingFactorが4の場合は、セルの4分の1が統計の算出に使用されます。デフォルトは1です。この場合、すべてのセルが使用されます。この数値が大きくなるほど統計の精度は下がる可能性がありますが、統計算出の速度は速くなります。

samplingWindow

サンプリング・ウィンドウ: 統計を設定する矩形ウィンドウを指定します。左下と右上の座標を含む数値配列か、SDO_GEOMETRYオブジェクトとして指定します。SDO_NUMBER_ARRAY型はVARRAY(1048576) OF NUMBERとして定義されます。ウィンドウは、セル空間のエクステント内に収まっている必要があります。このパラメータのデフォルトはイメージ全体です。

使用上の注意

このプロシージャは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)の<statisticDatasetType>要素によって記述された統計データを設定します。

histogramをNULLに指定した場合、および既存のヒストグラムがあり、異なるサンプリング係数またはサンプリング・ウィンドウを使用した統計が設定されている場合、既存のヒストグラムは削除されます。

このプロシージャは、設定する統計を指定する場合に使用しますが、GeoRasterで統計の算出および設定を行う場合はSDO_GEOR.generateStatisticsファンクションを使用します。

レイヤーに関連付けられた統計データを取得するには、SDO_GEOR.getStatisticsファンクションを使用します。

layerNumberがNULLか、GeoRasterオブジェクトに対して無効な場合、またはstatisticsが不適正な配列サイズであるか、NULLの配列要素を含んでいる場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー0の統計データを設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setStatistics(grobj, 0, SDO_NUMBER_ARRAY(0, 255, 100, 127, 95, 25));
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.141 SDO_GEOR.setULTCoordinate

構文

SDO_GEOR.setULTCoordinate(
georaster  IN OUT SDO_GEORASTER,
ultCoord    IN SDO_NUMBER_ARRAY);

説明

GeoRasterオブジェクトの左上角のセル座標値を設定または調整します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

ultCoord

rasterType値が20001の場合は2つの数値の配列(行および列の座標)を、rasterType値が21001の場合は3つの数値の配列(行、列およびバンドの座標)を指定します。3つの数値を指定する場合、3番目の数値(バンド番号)は0である必要があります。ULTCoordinateの詳細は、「GeoRasterデータ・モデル」を参照してください。

使用上の注意

メタデータに空間参照情報が含まれ、GeoRasterオブジェクトが地理参照されている場合、空間参照情報が有効かどうかが確認されます。有効な場合は、地理参照情報を含む空間参照情報は更新され、新しいULT座標に従って調整されますが、有効でない場合は、例外が発生します。

GeoRasterオブジェクトの左上の座標値を戻すには、SDO_GEOR.getULTCoordinateファンクションを使用します。

ultCoordがNULLか、不適切な配列サイズある場合、またはNULLの配列要素を含んでいる場合は、例外が発生します。

例

次の例では、rasterType値が20001または21001のどちらであるかを処理するロジックによって、GeoRasterオブジェクトの左上角の行および列の座標を設定します。(この例は、GEORASTER_TABLEという名前の表を参照します。この表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=1 FOR UPDATE;
if grobj.rasterType = 20001 then
sdo_geor.setULTCoordinate(grobj, sdo_number_array(0, 0));
elsif grobj.rasterType = 21001 then
sdo_geor.setULTCoordinate(grobj, sdo_number_array(0, 0, 0));
end if;
UPDATE georaster_table SET georaster = grobj WHERE georid=1;
COMMIT;
END;
/

6.142 SDO_GEOR.setVAT

構文

SDO_GEOR.setVAT(
georaster       IN OUT SDO_GEORASTER,
layerNumber  IN NUMBER,
vatName        IN VARCHAR2);

説明

GeoRasterオブジェクトのレイヤーに関連付けられた値属性表(VAT)の名前を設定します。または、vatNameパラメータにNULLが指定された場合、既存の値を削除します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

layerNumber

操作を実行するレイヤーの番号を指定します。

vatName

値属性表の名前を指定します。

使用上の注意

処理の完了後、GeoRasterオブジェクトは自動的に検証されます。

値属性表の詳細は、「地理情報システム」を参照してください。

GeoRasterオブジェクトのレイヤーに関連付けられた値属性表の名前を戻すには、SDO_GEOR.getVATファンクションを使用します。

layerNumberがNULLか、GeoRasterオブジェクトに対して無効な場合、またはvatNameが空の文字列('')の場合は、例外が発生します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のレイヤー3に関連付ける値属性表として、VATT1を指定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setVAT(grobj, 3, 'VATT1');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.143 SDO_GEOR.setVersion

構文

SDO_GEOR.setVersion(
georaster        IN OUT SDO_GEORASTER,
majorVersion  IN VARCHAR2,
minorVersion  IN VARCHAR2);

説明

GeoRasterオブジェクトのユーザー指定のバージョンを設定します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

majorVersion

GeoRasterオブジェクトのメジャー・バージョン番号を示す文字列を指定します。たとえば、バージョン全体を示す文字列が15a.beta1の場合、majorVersion値には15aを指定します。

パラメータ値がNULLの場合、GeoRasterオブジェクトの既存のmajorVersion値は削除されます。

minorVersion

GeoRasterオブジェクトのマイナー・バージョン番号を示す文字列を指定します。たとえば、バージョン全体を示す文字列が15a.beta1の場合、minorVersion値にはbeta1を指定します。

パラメータ値がNULLの場合、GeoRasterオブジェクトの既存のminorVersion値は削除されます。

使用上の注意

メジャー・バージョン番号とマイナー・バージョン番号を示す文字列には、任意の方法で指定したバージョンを反映できます。majorVersion値およびminorVersion値には、任意の文字列を指定できますが、いずれの値にも空の文字列('')を指定することはできません。

GeoRasterオブジェクトのバージョンを示す文字列を取得するには、SDO_GEOR.getVersionファンクションを使用します。このファンクションは、「メジャー・バージョン番号.マイナー・バージョン番号」という書式でバージョンを戻します。

例

次の例では、GEORASTER_TABLE表で、GEORID列値が4である行に含まれているGeoRasterオブジェクト(GEORASTER列)のバージョンを、15a.beta1に設定します。(GEORASTER_TABLE表の定義は、「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
grobj sdo_georaster;
BEGIN
SELECT georaster INTO grobj FROM georaster_table WHERE georid=4 FOR UPDATE;
sdo_geor.setVersion(grobj, '15a', 'beta1');
UPDATE georaster_table SET georaster = grobj WHERE georid=4;
COMMIT;
END;
/

6.144 SDO_GEOR.subset

構文

SDO_GEOR.subset(
inGeoRaster       IN SDO_GEORASTER,
cropArea            IN SDO_GEOMETRY,
layerNumbers    IN VARCHAR2,
storageParam    IN VARCHAR2,
outGeoRaster     IN OUT SDO_GEORASTER,
bgValues            IN SDO_NUMBER_ARRAY DEFAULT NULL,
polygonClip        IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.subset(
inGeoRaster       IN SDO_GEORASTER,
pyramidLevel     IN NUMBER,
cropArea            IN SDO_GEOMETRY,
layerNumbers    IN VARCHAR2,
storageParam    IN VARCHAR2,
outGeoRaster     IN OUT SDO_GEORASTER,
bgValues            IN SDO_NUMBER_ARRAY DEFAULT NULL,
polygonClip        IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.subset(
inGeoRaster       IN SDO_GEORASTER,
cropArea            IN SDO_NUMBER_ARRAY,
bandNumbers    IN VARCHAR2,
storageParam    IN VARCHAR2,
outGeoRaster     IN OUT SDO_GEORASTER,
bgValues            IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.subset(
inGeoRaster       IN SDO_GEORASTER,
pyramidLevel     IN NUMBER,
cropArea            IN SDO_NUMBER_ARRAY,
bandNumbers    IN VARCHAR2,
storageParam    IN VARCHAR2,
outGeoRaster     IN OUT SDO_GEORASTER,
bgValues            IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

(1)空間のクロッピング、切取りまたはクリップ、(2)レイヤーまたはバンドのサブセット化または複製のうち、いずれか(あるいは両方)の処理を実行します。

パラメータ

inGeoRaster

処理を実行するSDO_GEORASTERオブジェクトを指定します。

pyramidLevel

ソースGeoRasterオブジェクトのピラミッド・レベルを示す番号を指定します。

cropArea

クロッピング領域を定義します。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)がクロッピング領域として使用されます(SDO_SRID要件の「使用上の注意」も参照してください)。

cropAreaがSDO_GEOMETRY型の場合は、layerNumbersパラメータを使用して1つ以上のレイヤー番号を指定します。cropAreaがSDO_NUMBER_ARRAY型の場合は、bandNumbersパラメータを使用して、1つ以上のバンド番号を指定します。

layerNumbers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。

bandNumbers

処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、1-3はバンド1、2および3を示します)。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

outGeoRaster

新しいSDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)inGeoRasterと同じGeoRasterオブジェクトは指定できません。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

polygonClip

文字列TRUEでは、サブセット操作にクリップ・ウィンドウ(cropAreaジオメトリ・オブジェクト)が使用され、文字列FALSEまたはNULL値では、サブセット操作にクリップ・ウィンドウのMBR (最小境界矩形)が使用されます。

使用上の注意

このプロシージャには、様々な用途があります。たとえば、このプロシージャをコールしてGeoRasterオブジェクトの一部の領域をクロッピングしたり、いくつかのレイヤーのサブセットを取得すること、レイヤーを複製すること、および結果のオブジェクトの記憶域パラメータ(ブロック、インターリーブなど)を指定することもできます。

pyramidLevelパラメータを含む構文を使用して0 (ゼロ)より大きい値を指定した場合、ソースGeoRasterオブジェクトの指定したピラミッド・レベルに基づいてクロッピングが行われます。それ以外の場合は、元のソースGeoRasterオブジェクト(pyramidLevel = 0)に基づいてクロッピングが行われます。

ソースGeoRasterオブジェクトが地理参照されており、pyramidLevelパラメータ値が0 (ゼロ)より大きい場合、変換後のGeoRasterオブジェクトに地理参照情報が生成されるのは、有効な多項式変換で地理参照されている場合のみです。

この処理では、入力されるGeoRasterオブジェクトの上位レベルのピラミッド・データは考慮されず、出力されるGeoRasterオブジェクトにはピラミッド・データは含まれません。

cropAreaパラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は次のいずれかの値である必要があります。

- NULL (ラスター空間を指定)

- MDSYS.CS_SRS表のSRID列の値
cropAreaパラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、windowパラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)

cropAreaパラメータで測地MBRを指定する場合、日付変更線をまたぐMBRは指定できません。測地MBRについては、『Oracle Spatial and Graph開発者ガイド』を参照してください。

クリップ・ウィンドウ・ジオメトリ・オブジェクト自体を使用してGeoRasterオブジェクトをサブセット化するには、ジオメトリ・オブジェクトが2nn3または2nn7という形式のSDO_GTYPE値を持つ有効な2次元ポリゴン・ジオメトリ(単純または複数のポリゴン)である必要があります。他のSDO_GTYPE値には、polygonClipパラメータの値にかかわらず、ジオメトリ・オブジェクトのMBRが使用されます。(SDO_GTYPE値の詳細は、『Oracle Spatial and Graph開発者ガイド』を参照してください。)

クリップ・ウィンドウ・ジオメトリ・オブジェクト自体がサブセット・プロセスに適用される場合、ポリゴン内またはポリゴンのエッジに接しているすべてのセルが戻されますが、ジオメトリ・オブジェクトのMBR内の他のセルはクリップされます(指定した、またはデフォルトのbgValuesパラメータ値が入力されます)。

polygonClipがTRUEで、このプロシージャによって矩形イメージのサブセットが作成されるが、ジオメトリは矩形ではない場合、SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTファンクションでinWindowジオメトリ・オブジェクトの妥当性を確認してください。無効なジオメトリに対しては、このプロシージャは、polygonClip値がFALSEまたはNULL値の場合のように動作します。

inGeoRasterとoutGeoRasterには異なるGeoRasterオブジェクトを指定する必要があります。

処理対象として指定したウィンドウとソースGeoRasterオブジェクトの空間エクステントが重複する部分のみがコピーされます。

出力GeoRasterオブジェクトを異なる座標系に再投影する場合、SDO_GEOR.reprojectプロシージャを使用します。

次の1つ以上の条件に該当する場合、例外が発生します。

- inGeoRasterが無効である。

- outGeoRasterが初期化されていない。

- outGeoRasterに対するラスター・データ表が存在せず、outGeoRasterが空白のGeoRasterオブジェクトではない。

- 処理対象として指定したウィンドウが、GeoRasterオブジェクトの空間エクステントの外にある。

例

次の例では、元のGeoRasterオブジェクトの指定したウィンドウの特定のバンドのみが含まれるGeoRasterオブジェクトを作成します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
INSERT INTO georaster_table (georid, georaster)
VALUES (41, sdo_geor.init('RDT_1'))
RETURNING georaster INTO gr2;

SELECT georaster INTO gr1 FROM georaster_table WHERE georid=4;

sdo_geor.subset(gr1, sdo_geometry(2003, NULL, NULL,
sdo_elem_info_array(1, 1003, 3),
sdo_ordinate_array(0,256,255,511)),
'3,1-2', null, gr2);
UPDATE georaster_table SET georaster=gr2 WHERE georid=41;
COMMIT;
END;
/

次の例は、ポリゴンを使用してGeoRasterオブジェクトをサブセット化する際にクリップを実行する方法を示しています。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)

DECLARE
gr sdo_georaster;
grsub sdo_georaster;
win1 sdo_geometry;
BEGIN
Delete from georaster_table where georid = 111;
INSERT INTO georaster_table VALUES (111, 'ClippedImage',
sdo_geor.init('georaster_RDT', 111))
RETURNING georaster INTO grsub;
SELECT georaster INTO gr FROM georaster_table WHERE georid=1;
win1 := sdo_geometry(2003, 26986, null, sdo_elem_info_array(1,1003,1),
sdo_ordinate_array(237040,   897924,
237013.3, 897831.6,
237129,   897840,
237182.5, 897785.5,
237239.9, 897902.7,
237223,   897954,
237133,   897899,
237040,   897924));
sdo_geor.subset(gr, 0, win1, '1-3',
'interleaving = BIL, compression=DEFLATE',
grsub, NULL, 'TRUE');
UPDATE georaster_table SET georaster=grsub WHERE georid=111;
COMMIT;
END;
/

6.145 SDO_GEOR.updateRaster

構文

SDO_GEOR.updateRaster(
targetGeoRaster           IN OUT SDO_GEORASTER,
targetPyramidLevel      IN NUMBER,
targetLayerNumbers   IN VARCHAR2,
targetArea                   IN SDO_GEOMETRY,
sourceGeoRaster          IN SDO_GEORASTER,
sourcePyramidLevel    IN NUMBER,
sourceLayerNumbers  IN VARCHAR2,
updateUpperPyramids IN VARCHAR2,
bgValues                      IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.updateRaster(
targetGeoRaster           IN OUT SDO_GEORASTER,
targetPyramidLevel      IN NUMBER,
targetBandNumbers    IN VARCHAR2,
targetArea                   IN SDO_NUMBER_ARRAY,
sourceGeoRaster          IN SDO_GEORASTER,
sourcePyramidLevel     IN NUMBER,
sourceBandNumbers   IN VARCHAR2,
updateUpperPyramids IN VARCHAR2,
bgValues                      IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

指定した領域の指定したピラミッド(1つのGeoRasterオブジェクトの重複部分)を、別のGeoRasterオブジェクトの選択したピラミッドと選択したバンドまたはレイヤーで更新できます。

パラメータ

targetGeoRaster

更新するGeoRasterオブジェクトを指定します。(このオブジェクトを更新する前に、オブジェクトのコピーを作成しておいてください。)

targetPyramidLevel

更新するターゲットGeoRasterオブジェクトのピラミッド・レベルを示す番号を指定します。

targetLayerNumbers

targetGeoRaster内の更新するレイヤーを示す1つ以上のレイヤー番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'1,3-5,7'はレイヤー1、3、4、5および7を示します。

targetBandNumbers

targetGeoRaster内の更新するバンドを示す1つ以上のバンド番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'0,3-5,7'はバンド0、3、4、5および7を示します。このパラメータに指定するバンドはすべて、ターゲットGeoRasterオブジェクト内の更新対象のバンドと互換性がある必要があります。

targetArea

targetGeoRaster内の更新対象の領域(矩形ウィンドウ)を指定します。左下と右上の座標を含む数値配列か、SDO_GEOMETRYオブジェクトとして指定します。SDO_NUMBER_ARRAY型はVARRAY(1048576) OF NUMBERとして定義されます。

データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)がターゲット領域として使用されます(SDO_SRID要件の「使用上の注意」も参照してください)。

targetAreaがSDO_GEOMETRY型の場合は、targetLayerNumbersおよびsourceLayerNumbersパラメータを使用して1つ以上のレイヤー番号を指定します。targetAreaがSDO_NUMBER_ARRAY型の場合は、targetBandNumbersおよびsourceBandNumbersパラメータを使用して、1つ以上のバンド番号を指定します。

指定した領域がtargetGeoRasterの空間エクステントと交差しない場合、更新は行われません。このパラメータにNULLを指定した場合は、重複するすべての領域が更新されます。

このパラメータの使用方法の詳細は、「イメージのピラミッド化: パラレル生成および部分更新」を参照してください。

sourceGeoRaster

targetGeoRasterの更新に使用する特定のレイヤーを含むGeoRasterオブジェクトを指定します。

sourcePyramidLevel

sourceGeoRasterオブジェクトのピラミッド・レベルを示す番号を指定します。

sourceLayerNumbers

targetGeoRasterの更新に使用するsourceGeoRaster内のレイヤーを示す1つ以上のレイヤー番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'1,3-5,7'はレイヤー1、3、4、5および7を示します。

このパラメータに指定するレイヤーはすべて、ターゲットGeoRasterオブジェクト内の更新対象のレイヤーと互換性がある必要があります。

sourceBandNumbers

targetGeoRasterの更新に使用するsourceGeoRaster内のバンドを示す1つ以上のバンド番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'0,3-5,7'はバンド0、3、4、5および7を示します。

このパラメータに指定するバンドはすべて、ターゲットGeoRasterオブジェクト内の更新対象のバンドと互換性がある必要があります。

updateUpperPyramids

上位レベルのピラミッドを更新するかどうかを指定する文字列(TRUEまたはFALSE)を指定します。(このパラメータにデフォルト値はありません。このパラメータは常に指定する必要があります。)このパラメータの使用方法の詳細は、「イメージのピラミッド化: パラレル生成および部分更新」を参照してください。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上の注意

注意:

targetGeoRasterに指定したGeoRasterオブジェクトへの変更は、このプロシージャが完了した後では元に戻せない場合があるため、このプロシージャをコールする前にtargetGeoRasterオブジェクトのコピーを作成しておいてください。

両方のGeoRasterオブジェクトが地理参照されている場合は、2つのGeoRasterオブジェクトで使用されている座標系およびセル深度が同じであり、指定したピラミッド・レベルでの空間解像度が同じである必要があります(ただし、targetPyramidLevelとsourcePyramidLevelには異なる値を指定できます)。両方のGeoRasterオブジェクトが地理参照されていない場合は、ULTCoordinatesが考慮されてこれらのオブジェクトが互いに共同配置されます。

2つのGeoRasterオブジェクトの次元およびサイズは、異なっていても構いません。

targetAreaパラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は次のいずれかの値である必要があります。

- NULL (ラスター空間を指定)

- MDSYS.CS_SRS表のSRID列の値
windowパラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、windowパラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)

targetAreaパラメータで測地MBRを指定する場合は、日付変更線をまたぐMBRは指定できません。測地MBRについては、『Oracle Spatial and Graph開発者ガイド』を参照してください。

既存のビットマップ・マスクは更新されません。

ソースGeoRasterオブジェクトにターゲット領域を埋め込むための十分な大きさがない場合は、覆われずに残った領域は更新されません。

ターゲットGeoRasterオブジェクトがピラミッドを持つか圧縮されている場合、またはその両方の場合、ピラミッドおよび圧縮にも更新が反映されます。

上位レベルのピラミッドを更新するには、updateUpperPyramidsパラメータをTRUEに指定する必要があります。(このパラメータにデフォルト値はありません。常に、TRUEまたはFALSEを指定する必要があります。)

例

次の例では、指定したターゲットGeoRasterオブジェクトのバンド1内の指定領域を、別のGeoRasterオブジェクトの同じ領域のバンド0で更新します。

DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
area sdo_number_array := sdo_number_array(-200,-50,201,162);
BEGIN
SELECT georaster INTO gr2 FROM georaster_table WHERE georid=0 FOR UPDATE;
SELECT georaster INTO gr1 FROM georaster_table WHERE georid=1;
SDO_GEOR.updateRaster(gr2, 0, '1', area, gr1, 0, '0', 'true');
UPDATE GEORASTER_TABLE SET georaster=gr2 WHERE georid=0;
COMMIT;
END;
/

6.146 SDO_GEOR.validateBlockMBR

構文

SDO_GEOR.validateBlockMBR(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトの各ブロックのblockMBR属性を検証します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、指定したGeoRasterオブジェクトに関連付けられたラスター・データ表に含まれる各行のblockMBR属性(「blockMBR属性」を参照)をチェックし、ジオメトリが実際にブロックの最小境界矩形(MBR)であるかどうかを確認します。

このファンクションは、blockMBR属性が各ブロックのMBRである場合は文字列TRUEを、GeoRasterオブジェクトがNULLの場合はNULL値を戻します。既知のエラーの場合はOracleエラー・コードを、不明なエラーの場合はFALSEを戻します。

「新しいGeoRasterオブジェクトの作成」の説明に従ってGeoRasterオブジェクトを作成した場合はblockMBR属性値が自動計算されるため、この属性値を検証したり生成する必要はありません。ただし、サード・パーティによって生成されたGeoRasterオブジェクトの場合は、このファンクションを使用してblockMBR属性値を検証する必要があり、無効な値が含まれている場合は、SDO_GEOR.generateBlockMBRプロシージャをコールします。

例

次の例では、指定したGeoRasterオブジェクトの各ブロックのblockMBR属性を検証します。

SELECT sdo_geor.validateBlockMBR(georaster) FROM georaster_table WHERE georid=1;

SDO_GEOR.VALIDATEBLOCKMBR(GEORASTER)
--------------------------------------------------------------------------------
TRUE

6.147 SDO_GEOR.validateGeoRaster

構文

SDO_GEOR.validateGeoRaster(
georaster  IN SDO_GEORASTER
) RETURN VARCHAR2;

説明

GeoRasterオブジェクトのラスター・データおよびメタデータを確認して、GeoRasterオブジェクトを検証します。

パラメータ

georaster

有効かどうかを確認するGeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、GeoRasterオブジェクトが有効な場合は文字列TRUEを戻し、GeoRasterオブジェクトがNULLの場合はNULL値を戻します。既知のエラーの場合はOracleのエラー・コードを戻し、不明なエラーの場合はFALSEを戻します。GeoRasterオブジェクトの作成、ロードまたは変更後は、次の処理を行う前に、このファンクションを使用してオブジェクトが有効であることを確認してください。

このファンクションによって、GeoRasterオブジェクトが無効であると識別され、エラー・コード13454が戻された場合、そのオブジェクトのメタデータは、GeoRasterのXMLスキーマに対して無効です。この場合は、SDO_GEOR.schemaValidateファンクションをコールして、エラーの具体的な位置およびエラーに関するその他の情報を取得します。

このファンクションは、GeoRasterメタデータをGeoRasterのXMLスキーマに基づいて検証するのみでなく、XMLスキーマには記述されていない今回のリリースの制限事項および要件も検証します。次に、このファンクションによって検証される制限事項および要件の一部を示します。

- レイヤー番号は1からn である必要があります。n は、レイヤーの合計数です。

- cellRepresentationType値は、UNDEFINEDである必要があります。

- totalBandBlocksまたはbandBlockSizeがメタデータで指定されている場合、両方を指定する必要があります。バンドが1つのみの場合、バンドのブロック化は実行できません。

- 次元のブロックの合計数とブロック・サイズを掛けた値は、次元サイズと埋込みサイズを足した値と一致する必要があります。また、各セル・データのBLOBオブジェクトのサイズは、ブロック化または非ブロック化(あるいは空であるかどうか)に関するメタデータの記述と一致する必要があります。

- ラスター・データ表に格納されたGeoRasterデータ・ブロックのサイズおよび数は、メタデータの記述と一貫性がある必要があります。セル・データについては、ブロックの数とサイズがチェックされ、ブロックの内容はチェックされません。

- サポートされているピラミッド・タイプは、NONE(ピラミッドが存在しない)およびDECREASEのみです。(ピラミッドの詳細は、「ピラミッド」を参照してください。)

- ラスター・データ表の名前には、空白、ピリオド、または大/小文字が混在する文字列を引用符で囲った値は使用できません。すべての英数字は大文字である必要があります。

- ラスター・データ表は、SDO_RASTER型のオブジェクト表である必要があり、GeoRasterオブジェクトが空白でない場合はラスター・データ表が存在する必要があります。Oracle Workspace ManagerまたはOracle Label Security (OLS)でGeoRasterを使用するには、SDO_RASTER型のオブジェクト・ビューを定義し、そのオブジェクト・ビューをラスター記憶域として使用できます。

- ALL_SDO_GEOR_SYSDATAビューには、GeoRasterオブジェクト用のエントリが存在する必要があります。

- 関連付けられた各ビットマップ・マスクはRDTに適切な行数を保持する必要があります。

- NODATA値およびその値の範囲はすべて、セル深度で設定された有効なセル値の範囲に含まれます。

- 圧縮されていないGeoRasterオブジェクトについては、各ラスター・ブロックのBLOBオブジェクトのサイズは、ブロック・サイズおよびセル深度に基づいてチェックされます。ただし圧縮されているGeoRasterオブジェクトについては、各ラスター・ブロックのBLOBオブジェクトのサイズはチェックされません。このため、圧縮されているGeoRasterオブジェクトを解凍すると、データのサイズが有効でない場合があります。(長さが0 (ゼロ)のBLOBは有効なBLOBです。これは空のラスター・ブロックです。)

- 圧縮されていないGeoRasterオブジェクトについては、各ビットマップ・マスクのラスター・ブロック・サイズは、ブロック・サイズおよび1BITセル深度に基づいてチェックされます。(長さが0 (ゼロ)のBLOBは有効なBLOBです。これは空のビットマップ・マスクのラスター・ブロックです。)

- 汎用関数フィッティング多項式モデルがサポートされています(「関数フィッティング地理参照モデル」を参照)。オフセット、スケール、RMS値、pType、nVars、および多項式の係数の数に関する制限の詳細は、「関数フィッティング地理参照モデル」および「SDO_GEOR_SRSオブジェクト型」の表2-4を参照してください。

- GeoRaster SRSメタデータのSRIDは、CS_SRS表に対してチェックされず、検証されません。SRIDを検証するには、SDO_GEOR.getModelSRIDおよびSDO_CS.VALIDATE_WKTをコールします(後者については、『Oracle Spatial and Graph開発者ガイド』を参照)。今回のリリースでは、verticalSRID値は使用されません。

- StoredFunction地理参照モデルとして地上基準点(GCP)がサポートされます。メタデータのgcpGeoreferenceModelは、SDO_GEOR_GCPGEOREFTYPE型の定義に従う必要があり(「SDO_GEOR_GCPGEOREFTYPEオブジェクト型」を参照)、各GCPは、SDO_GEOR_GCP型の仕様に従う必要があります(「SDO_GEOR_GCPオブジェクト型」を参照)。GCPの数は、FFMethod属性に対して確認されないため、GCPを段階的に追加する柔軟性を得ることができます。

- RigorousModel地理参照モデルはサポートされません。関数多項式の係数を設定する場合、modelType値をFunctionalFittingに設定し、isReferenced値をTRUEに設定する必要があります。GCPをメタデータに格納する場合、modelType値をStoredFunctionに設定する必要があります。両方の条件が満たされる場合、StoredFunctionとFunctionalFittingの両方の値を含むように2つのmodelType値が追加されます。

- GeoRasterオブジェクトが地理参照されている場合、空間解像度はアフィン変換スケールと一貫性がない場合があります。

- GeoRaster時間参照およびバンド参照はサポートされていませんが、時間参照システム(TRS)およびバンド参照システム(BRS)では、開始日時、終了日時、スペクトル解像度、スペクトル単位および関連する記述情報を格納できます。

- 1つのlayerInfo要素のみがサポートされています。レイヤーは、1つの次元のみに沿って定義可能であり、この次元はBANDである必要があります。ただし、layerInfo要素内では、subLayer要素の数は、レイヤーの合計数によってのみ制限されます。objectLayer要素のレイヤー番号は0、subLayer要素のレイヤー番号は1からnであり、nはレイヤーの合計数です。

- スケール変更ファンクション、ビン・ファンクション、および統計データやヒストグラムは、GeoRasterメタデータに格納できます。これらの項目は、XMLスキーマに対して有効である必要がありますが、値の範囲に制限はありません。このメタデータを使用するGeoRasterインタフェースは限られています。アプリケーションで、このオプションのメタデータを使用する前に、メタデータを検証する必要があります。

- カラーマップ値およびグレースケール・マッピング値の数は制限されませんが、カラーマップ値またはグレースケール値が重複しないようにする必要があります。また、各配列の値は、GeoRasterオブジェクトのcellDepth値と一貫性があり、昇順である必要があります。赤、緑、青、アルファおよびグレーの構成要素値の範囲は、0から255の整数である必要があります。

- 複合cellDepth値はサポートされません。

- このファンクションは、外部表(ビン表、ヒストグラム表、グレースケール表、カラーマップ表など)の中で名前がXMLメタデータに登録されているものはチェックしません。

- このファンクションは、空間エクステント・ジオメトリを検証しません。つまり、ジオメトリとラスター・データ間の空間関係が正しいかどうかは検証しません。空間エクステント・ジオメトリを検証するには、SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTまたはSDO_GEOM.VALIDATE_LAYER_WITH_CONTEXTプロシージャを使用します(『Oracle Spatial and Graph開発者ガイド』を参照)。

- このファンクションは、ラスター・データ表のblockMBR属性で指定されたジオメトリを検証しません。つまり、ジオメトリが厳密にラスター・ブロックを囲んでいるかどうかは検証しません。(blockMBR属性の詳細は、「blockMBR属性」を参照してください。)blockMBRジオメトリを検証する場合は、SDO_GEOR.validateBlockMBRファンクションを使用します。

ALL_SDO_GEOR_SYSDATAビュー(「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」を参照)にGeoRasterオブジェクトのエントリがない場合、このプロシージャは、GeoRasterオブジェクトが未登録であることを示すエラーを戻します。このエラーを回避するには、GeoRaster表にGeoRasterオブジェクトが挿入され、必要なGeoRaster DMLトリガーがGeoRaster表に作成されていることを確認してください。クロススキーマ・アクセスを有効にするには、このプロシージャをコールするユーザーが、GeoRaster表および関連するラスター・データ表の両方について適切な権限を持っている必要があります。

例

次の例では、表のGeoRasterオブジェクトを検証します。

SELECT t.georid,
sdo_geor.validategeoraster(t.georaster) isvalid
from georaster_table t order by georid;

GEORID ISVALID
---------- ----------
3 TRUE
4 TRUE

7 SDO_GEOR_ADMINパッケージのリファレンス

SDO_GEOR_ADMINパッケージには、GeoRasterに関連する管理操作を行うためのサブプログラム(ファンクションおよびプロシージャ)が含まれています。この章では、そのサブプログラムのリファレンス情報を、例を使用して説明します。

7.1 SDO_GEOR_ADMIN.checkSysdataEntries

構文

SDO_GEOR_ADMIN.checkSysdataEntries() RETURN SDO_STRING2_ARRAY;

説明

USER_SDO_GEOR_SYSDATAビューで無効なエントリがあるかどうかを確認します。

パラメータ

なし。

使用上の注意

このファンクションは、無効なGeoRasterシステム・データ・エントリのカンマ区切りリストの配列を戻します。このファンクションでは次のようなエラーを確認します。

- RDT名が一意でない。

- GeoRaster表が存在しない。

- GeoRaster列が存在しない。

- GeoRasterオブジェクトが存在しない。

- GeoRasterオブジェクトが空または空白ではないが、RDTが存在しない。

- GeoRasterオブジェクトが重複して存在する(RDTとラスターIDの一意ではない組合せが1つ以上存在する)。

MDSYSユーザーとして接続してこのファンクションをコールすると、USER_SDO_GEOR_METADATAビューのかわりにALL_SDO_GEOR_SYSDATAビューのエントリを確認します。

USER_SDO_GEOR_DATAビューおよびALL_SDO_GEOR_SYSDATAビューの詳細は、「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」を参照してください。

例

次の例では、USER_SDO_GEOR_SYSDATAビューで無効なエントリがあるかどうかを確認します。

SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.checkSysdataEntries FROM DUAL);

COLUMN_VALUE
--------------------------------------------------------------------------------
The RDT name "RDT1" is not unique
The GeoRaster object GEOR_TEST1.TABLE1.GEOR: RDT=RDT2 RID=3 is associated with a
non-existing RDT table!
The specification of GeoRaster column GEOR_TEST1.TABLE1.c1  is not correct.
The GeoRaster object GEOR_TEST1.TABLE1.geor: RDT=dt3 RID=2 doesn't exist!
The GeoRaster table GEOR_TEST1.t1  doesn't exist!

7.2 SDO_GEOR_ADMIN.isRDTNameUnique

構文

SDO_GEOR_ADMIN.isRDTNameUniquer(
rdtName  VARCHAR2)
RETURN  VARCHAR2;

説明

指定したラスター・データ表(RDT)の名前が、データベース内で一意のRDT名であるかどうかを確認します。

パラメータ

rdtName

一意かどうかを確認する名前を指定します。

使用上の注意

このファンクションを使用すると、指定しようとしているRDT名が一意かどうか、RDTを作成する前に確認できます。

このファンクションは、名前が一意の場合は文字列TRUEを戻し、名前が一意でない場合は文字列FALSEを戻します。

例

次の例では、MY_RDTが一意の名前かどうかを確認します。

SELECT SDO_GEOR_ADMIN.IsRDTNameUnique('MY_RDT')  FROM DUAL;

SDO_GEOR_ADMIN.ISRDTNAMEUNIQUE('MY_RDT')
--------------------------------------------------------------------------------
TRUE

7.3 SDO_GEOR_ADMIN.isUpgradeNeeded

構文

SDO_GEOR_ADMIN.isUpgradeNeeded() RETURN SDO_STRING2_ARRAY;

説明

現行のスキーマのGeoRasterシステム・データ・エントリおよびGeoRasterデータを確認します。

パラメータ

なし。

使用上の注意

このファンクションは、無効なGeoRasterシステム・データ・エントリ、無効なGeoRaster列および無効なGeoRasterオブジェクトのカンマ区切りリストの配列を戻します。このファンクションでは次のようなエラーを報告します。

- システム・データ・エントリ・エラー: RDT名が一意でない。

- システム・データ・エントリ・エラー: RDTとRIDのペアが一意でない。

- システム・データ・エントリ・エラー: GeoRaster表が存在しない。

- システム・データ・エントリ・エラー: GeoRaster列が存在しない。

- システム・データ・エントリ・エラー: GeoRasterオブジェクトが存在しない。

- GeoRasterオブジェクトが空または空白ではないが、RDTが存在しない。

- GeoRasterオブジェクトが重複して存在する(RDTとラスターIDの一意ではない組合せが1つ以上存在する)。

- (GeoRaster列、GeoRasterオブジェクト)のペアで、登録されていないものがある。

MDSYSユーザーとして接続してこのファンクションをコールすると、データベース全体のGeoRasterシステム・データ・エントリおよびGeoRasterデータを確認します。

例

次の例では、GeoRasterシステム・データ・エントリおよびGeoRasterデータを確認します。MDSYSユーザーとして接続していることを想定しています。

SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.isUpgradeNeeded FROM DUAL);

COLUMN_VALUE
--------------------------------------------------------------------------------
The following GeoRaster columns aren't registered:
SCHEMA:GEOR_TEST TABLE:TABLE1 COLUMN:GEOR
The following GeoRaster objects aren't registered:
SCHEMA:GEOR_TEST TABLE:TABLE1 COLUMN:GEOR RDT:RDT RID:3
SCHEMA:GEOR_TEST TABLE:TABLE1 COLUMN:GEOR RDT:RDT RID:4

7.4 SDO_GEOR_ADMIN.listGeoRasterColumns

構文

SDO_GEOR_ADMIN.listGeoRasterColumns() RETURN SDO_STRING2_ARRAYSET;

説明

現行のスキーマに定義されているGeoRaster列を示します。

パラメータ

なし。

使用上の注意

このファンクションは、GeoRaster列とその登録ステータスのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。

- スキーマ名(MDSYSユーザーとして接続している場合のみ)

- GeoRaster表の名前

- GeoRaster列の名前

- ステータス: registered (登録済: GeoRaster列にDMLトリガーが作成されている)またはunregistered (未登録: GeoRaster列にDMLトリガーが作成されていない)

MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべてのGeoRaster列が示されます。

例

次の例では、現行のスキーマに定義されているGeoRaster列を示します。

SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listGeoRasterColumns FROM DUAL);

COLUMN_VALUE
---------------------------------------------------------------------------------
SDO_STRING2_ARRAY('TEST_TABLE1', 'GEOR', 'registered')
SDO_STRING2_ARRAY('TEST_TABLE2', 'GEOR', 'registered')

7.5 SDO_GEOR_ADMIN.listGeoRasterObjects

構文

SDO_GEOR_ADMIN.listGeoRasterObjects() RETURN SDO_STRING2_ARRAYSET;

説明

現行のスキーマに定義されているGeoRasterオブジェクトを示します。

パラメータ

なし。

使用上の注意

このファンクションは、GeoRasterオブジェクトとその登録ステータスのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。

- スキーマ名(MDSYSユーザーとして接続している場合のみ)

- GeoRaster表の名前

- GeoRaster列の名前

- RDTの名前

- ラスターID

- ステータス: registered (GeoRasterオブジェクトがSYSDATA表に登録されている)またはunregistered (GeoRasterオブジェクトがSYSDATA表に登録されていない)

MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべてのGeoRasterオブジェクトが示されます。

例

次の例では、現行のスキーマに定義されているGeoRasterオブジェクトを示します。

SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listGeoRasterObjects FROM DUAL);

COLUMN_VALUE
---------------------------------------------------------------------------------
SDO_STRING2_ARRAY('TEST_TABLE1', 'GEOR', 'RDT_REGULAR_01', '1', 'registered')
SDO_STRING2_ARRAY('TEST_TABLE2', 'GEOR', 'RDT_REGULAR_01', '2', 'registered')

7.6 SDO_GEOR_ADMIN.listGeoRasterTables

構文

SDO_GEOR_ADMIN.listGeoRasterTables() RETURN SDO_STRING2_ARRAYSET;

説明

現行のスキーマに定義されているGeoRaster表を示します。

パラメータ

なし。

使用上の注意

このファンクションは、GeoRaster表のカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。

- スキーマ名(MDSYSユーザーとして接続している場合のみ)

- GeoRaster表の名前

MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべてのGeoRaster表が示されます。

例

次の例では、データベースに定義されているGeoRaster表を示します。MDSYSユーザーとして接続していることを想定しています。

SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listGeoRasterTables FROM DUAL);

COLUMN_VALUE
---------------------------------------------------------------------------------
SDO_STRING2_ARRAY('GEOR_TEST', 'TEST_TABLE1')
SDO_STRING2_ARRAY('GEOR_TEST', 'TEST_TABLE2')

7.7 SDO_GEOR_ADMIN.listDanglingRasterData

構文

SDO_GEOR_ADMIN.listDanglingRasterData() RETURN SDO_STRING2_ARRAYSET;

説明

GeoRasterシステム・データ・エントリおよびGeoRasterデータを確認し、すべてのダングリング・ラスター・データを示します。

パラメータ

なし。

使用上の注意

ラスター・データ表(RDT)には、存在しないGeoRasterオブジェクトまたはSYSDATA表で参照されないGeoRasterオブジェクトに対する行が存在することがあります。このような行に関連付けられたラスター・ブロックを、ダングリング・ブロックといいます。ダングリング・ラスター・ブロックが存在すると、RDTに必要な主キーが定義されているかぎり問題は発生しませんが、RDTのディスク領域が無駄に消費されます。現行のスキーマ内またはすべてのスキーマ内にあるダングリング・ブロックを検索するには、SDO_GEOR_ADMIN.listDanglingRasterDataファンクションをコールします。

このファンクションをコールする前に、SDO_GEOR_ADMIN.registerGeoRasterObjectsをコールしてすべての既存のGeoRasterオブジェクトを登録する必要があります。

ダングリング・ラスター・ブロック・データをRDTから削除するには、SDO_GEOR_ADMIN.listDanglingRasterDataファンクションによって検出された問題に関連する行を削除します。

このファンクションは、ダングリング・ラスター・データのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。

- スキーマ名(MDSYSユーザーとして接続している場合のみ)

- RDTの名前

- ラスターID

MDSYSユーザーとして接続してこのファンクションをコールすると、データベース内のすべてのダングリング・ラスター・データが示されます。

例

次の例では、現行のスキーマにあるすべてのダングリング・ラスター・データを示します。

SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listDanglingRasterData FROM DUAL);

COLUMN_VALUE
--------------------------------------------------------------------------------
SDO_STRING2_ARRAY('RDT11', '3')

7.8 SDO_GEOR_ADMIN.listRDT

構文

SDO_GEOR_ADMIN.listRDT() RETURN SDO_STRING2_ARRAYSET;

説明

現行のスキーマに定義されているラスター・データ表(RDT)を示します。

パラメータ

なし。

使用上の注意

このファンクションは、RDTのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。

- スキーマ名(MDSYSユーザーとして接続している場合のみ)

- RDTの名前

MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべてのRDTが示されます。

例

次の例では、現行のスキーマに定義されているRDTを示します。

SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listRDT FROM DUAL);

COLUMN_VALUE
---------------------------------------------------------------------------------
SDO_STRING2_ARRAY('RDT_REGULAR_01')
SDO_STRING2_ARRAY('RDT_REGULAR_02')

7.9 SDO_GEOR_ADMIN.listRegisteredRDT

構文

SDO_GEOR_ADMIN.listRegisteredRDT() RETURN SDO_STRING2_ARRAYSET;

説明

現行のスキーマに定義されている登録済のラスター・データ表(RDT)を示します。SYSDATA表内の1つ以上のエントリから参照されていれば、RDTは登録済です。

パラメータ

なし。

使用上の注意

このファンクションは、RDTのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。

- スキーマ名(MDSYSユーザーとして接続している場合のみ)

- RDTの名前

MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべての登録済のRDTが示されます。

例

次の例では、現行のスキーマに定義されている登録済のRDTを示します。

SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listRegisteredRDT FROM DUAL);

COLUMN_VALUE
---------------------------------------------------------------------------------
SDO_STRING2_ARRAY('RDT1_REGULAR_01')

7.10 SDO_GEOR_ADMIN.listUnregisteredRDT

構文

SDO_GEOR_ADMIN.listUnregusteredRDT() RETURN SDO_STRING2_ARRAYSET;

説明

現行のスキーマに定義されている未登録のラスター・データ表(RDT)を示します。SYSDATA表内のエントリから参照されていない場合、RDTは未登録です。

パラメータ

なし。

使用上の注意

このファンクションは、RDTのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。

- スキーマ名(MDSYSユーザーとして接続している場合のみ)

- RDTの名前

MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべての未登録のRDTが示されます。

例

次の例では、現行のスキーマに定義されている未登録のRDTを示します。

SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listUnregisteredRDT FROM DUAL);

COLUMN_VALUE
---------------------------------------------------------------------------------
SDO_STRING2_ARRAY('RDT_REGULAR_02')

7.11 SDO_GEOR_ADMIN.maintainSysdataEntries

構文

SDO_GEOR_ADMIN.maintainSysdataEntries() RETURN SDO_STRING2_ARRAY;

説明

USER_SDO_GEOR_SYSDATAビューで無効なエントリを確認し、必要に応じて修正処理を行います。

パラメータ

なし。

使用上の注意

このファンクションはSDO_GEOR_ADMIN.checkSysdataEntriesファンクションと同じ確認を実行し、(該当する修正処理がある場合は)適切な修正処理を行います。次の各エラーについて、このファンクションでは次の修正処理を行います。

- RDT名が一意でない。MDSYS以外のユーザーとして接続している場合は何も処理が行われません。ユーザーMDSYSとして接続している場合は、RDT名が一意になるように、重複しているRDTの名前が変更されます。

- GeoRaster表が存在しない。エントリが削除されます。

- GeoRaster列が存在しない。エントリが削除されます。

- GeoRasterオブジェクトが存在しない。エントリが削除されます。

- GeoRasterオブジェクトが空または空白ではないが、RDTが存在しない。エントリが削除されます。

- GeoRasterオブジェクトが重複して存在する(RDTとラスターIDの一意ではない組合せが1つ以上存在する)。エントリが削除されます。

MDSYSユーザーとして接続してこのファンクションをコールすると、USER_SDO_GEOR_METADATAビューのかわりにALL_SDO_GEOR_SYSDATAビューのエントリを確認します。

USER_SDO_GEOR_DATAビューおよびALL_SDO_GEOR_SYSDATAビューの詳細は、「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」を参照してください。

例

次の例では、USER_SDO_GEOR_SYSDATAビューで無効なエントリを確認し、必要に応じて修正処理を行います。

DECLARE
ret SDO_STRING2_ARRAY;
BEGIN
ret:=sdo_geor_admin.MAINTAINSYSDATAENTRIES;
for i in 1..ret.count loop
dbms_output.put_line(ret(i));
end loop;
END;
/
The RDT name GEOR_TEST1.RDT2 is renamed to GEOR_TEST1.RDT1!
The sysdata entry (SCHEMA=GEOR_TEST1 RDT=dt1 RID=1) is deleted!

PL/SQL procedure successfully completed.

7.12 SDO_GEOR_ADMIN.registerGeoRasterColumns

構文

SDO_GEOR_ADMIN.registerGeoRasterColumns;

説明

現行のスキーマに定義されているすべてのGeoRaster列にDMLトリガーを作成します。

パラメータ

なし。

使用上の注意

通常、このプロシージャを実行する必要はありません。なんらかのエラーまたは他の条件により、GeoRaster列とDMLトリガーとの関連付けが失われた場合のみ、このプロシージャを実行するようにしてください。

MDSYSユーザーとして接続してこのプロシージャを実行すると、すべてのスキーマに定義されているすべてのGeoRaster列にDMLトリガーが作成されます。

例

この例では、現行のスキーマに定義されているすべてのGeoRaster列にDMLトリガーを作成します。

EXECUTE sdo_geor_admin.registerGeoRasterColumns;

7.13 SDO_GEOR_ADMIN.registerGeoRasterObjects

構文

SDO_GEOR_ADMIN.registerGeoRasterObjects;

説明

現行のスキーマに定義されているすべてのGeoRasterオブジェクトを登録します。

パラメータ

なし。

使用上の注意

MDSYSユーザーとして接続してこのプロシージャを実行すると、すべてのスキーマに定義されているすべてのGeoRasterオブジェクトが登録されます。

例

次の例では、現行のスキーマに定義されているすべてのGeoRasterオブジェクトを登録します。

EXECUTE sdo_geor_admin.registerGeoRasterObjects;

7.14 SDO_GEOR_ADMIN.upgradeGeoRaster

構文

SDO_GEOR_ADMIN.upgradeGeoRaster() RETURN SDO_STRING2_ARRAY;

説明

現行のスキーマのGeoRasterシステム・データ・エントリおよびGeoRasterデータを確認し、必要に応じて修正処理を実行します。

パラメータ

なし。

使用上の注意

このファンクションはSDO_GEOR_ADMIN.isUpgradeNeededファンクションと同じ確認を実行し、次のエラーに対して(該当する修正処理がある場合は)適切な修正処理を行います。

- システム・データ・エントリ・エラー: RDT名が一意でない。

- システム・データ・エントリ・エラー: RDTとRIDのペアが一意でない。

- システム・データ・エントリ・エラー: GeoRaster表が存在しない。

- システム・データ・エントリ・エラー: GeoRaster列が存在しない。

- システム・データ・エントリ・エラー: GeoRasterオブジェクトが存在しない。

- GeoRasterオブジェクトが空または空白ではないが、RDTが存在しない。

- GeoRasterオブジェクトが重複して存在する(RDTとラスターIDの一意ではない組合せが1つ以上存在する)。

- (GeoRaster列、GeoRasterオブジェクト)のペアで、登録されていないものがある。

MDSYSユーザーとして接続してこのファンクションをコールすると、データベース全体のGeoRasterシステム・データ・エントリおよびGeoRasterデータを確認し、適切な修正処理を行います。

例

次の例では、現行のスキーマのGeoRasterシステム・データ・エントリおよびGeoRasterデータを確認し、必要に応じて修正処理を実行します。

DECLARE
ret SDO_STRING2_ARRAY;
BEGIN
ret:=sdo_geor_admin.upgradeGeoraster;
for i in 1..ret.count loop
dbms_output.put_line(ret(i));
end loop;
END;
/

8 SDO_GEOR_AGGRパッケージのリファレンス

SDO_GEOR_AGGRパッケージには、GeoRasterオブジェクトに対する高度な大規模モザイク処理、追加処理および仮想モザイク処理を実行するためのサブプログラム(ファンクションおよびプロシージャ)が含まれます。この章では、そのサブプログラムのリファレンス情報を、例を使用して説明します。

8.1 SDO_GEOR_AGGR.append

構文

SDO_GEOR_AGGR.append(
targetGeoRaster    IN OUT SDO_GEORASTER,
sourceGeoRaster    IN SDO_GEORASTER,
sourcePyramidLevel IN NUMBER,
appendParam        IN VARCHAR2,
bgValues           IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

ソースGeoRasterオブジェクトをターゲットGeoRasterオブジェクトに追加します。必要に応じて、内部的幾何補正、共通ポイント・ルール、切れ目充填およびカラー・バランスが実行されます。

パラメータ

targetGeoRaster

更新するGeoRasterオブジェクトを指定します。sourceGeoRasterと同じにすることはできません。(このオブジェクトを更新する前に、オブジェクトのコピーを作成しておいてください。)

sourceGeoRaster

targetGeoRasterに追加するGeoRasterオブジェクトを指定します。

sourcePyramidLevel

ターゲットGeoRasterオブジェクトのピラミッド・レベル0で追加するソースGeoRasterオブジェクトのピラミッド・レベルを指定します。NULLの場合、ピラミッド・レベル0が使用されます。

appendParam

操作のパラメータを指定するため、キーワード=値のペアのカンマで区切られた引用符付き文字列を指定します。これには、「SDO_GEOR_AGGR.mosaicSubset」のリファレンスの項にある表8-1のキーワードを1つ以上含めることができます。

colorBalanceのデフォルト以外の値を指定する場合、これは、ターゲットGeoRasterオブジェクトの統計を参照として使用することでソースGeoRasterオブジェクトに対して実行され、キーワードのmaxVal、minVal、stdおよびminは無視されます(指定されている場合)。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上の注意

注意:

targetGeoRasterに指定したGeoRasterオブジェクトへの変更は、このプロシージャが完了した後では元に戻せない場合があるため、このプロシージャをコールする前にtargetGeoRasterオブジェクトのコピーを作成しておいてください。

ソースとターゲットのGeoRasterオブジェクトには、同じ数のバンドまたはレイヤーが含まれる必要があります。ソースとターゲットのGeoRasterオブジェクトのセル深度が同じではない場合、ソースGeoRasterオブジェクトのセル値は、ターゲットGeoRasterオブジェクトのセル深度に拡張されるか、切り捨てられます。

ターゲットGeoRasterオブジェクトのラスター・データは、ブロック化される必要があります。

ターゲットGeoRasterオブジェクトのメタデータに変更はありませんが、ブロックのエクステントおよび数は更新され、統計は削除されます。

ソースGeoRasterオブジェクトは、ターゲットGeoRasterオブジェクトのピラミッド・レベル0に追加されます。ターゲットGeoRasterオブジェクトのピラミッドも更新されます。

ソースおよびターゲットGeoRasterオブジェクトの重複する領域と切れ目は、appendParamパラメータに定義されたルールに従って解決されます。

ソースGeoRasterオブジェクトは、ターゲットGeoRasterオブジェクトのどちらの側にでも配置でき、接することができます(右側または下側に配置する必要はありません)。ターゲットGeoRasterオブジェクトは、それに応じて自動的に拡張されます。

例

次の例では、georid = 2のGeoRasterオブジェクトをgeorid = 1のGeoRasterオブジェクトに追加します。

declare
gr1 sdo_georaster;
gr1 sdo_georaster;
begin
select georaster into gr1 from georaster_table where georid = 1 for update;
select georaster into gr2 from georaster_table where georid = 2;
sdo_geor_aggr.append(gr1, gr2, 0, null);
update georaster_table set georaster = gr1 where georid= 1;
commit;
end;
/

8.2 SDO_GEOR_AGGR.getMosaicExtent

構文

SDO_GEOR_AGGR.getMosaicExtent(
inGeoRasters IN SYS_REFCURSOR,
outSRID     IN NUMBER DEFAULT NULL
) RETURN SDO_GEOMETRY;

または

SDO_GEOR_AGGR.getMosaicExtent(
georasterTableNames  IN VARCHAR2,
georasterColumnNames IN VARCHAR2,
outSRID              IN NUMBER DEFAULT NULL
) RETURN SDO_GEOMETRY;

説明

仮想モザイクまたはGeoRasterオブジェクトのコレクションの空間エクステントの最小境界矩形(MBR)を計算して戻します。

パラメータ

inGeoRasters

カーソルのソースGeoRasterオブジェクトを指定します。

georasterTableNames

ソースGeoRasterオブジェクトを含む表の名前(カンマ区切り)を指定します。

georasterColumnNames

georasterTableNamesの表名に対応する表のSDO_GEORASTER型の列の名前(カンマ区切り)を指定します。

outSRID

出力GeoRasterオブジェクトの座標系を指定します。NULLか、またはMDSYS.CS_SRS表のSRID列の値を指定する必要があります。このパラメータがNULL (デフォルト)の場合、4326 (WGS 84 (経度/緯度)座標系のEPSG SRID値)が使用されます。

使用上の注意

仮想モザイクまたはGeoRasterオブジェクトのコレクションの空間エクステントを計算する場合、このファンクションは、各GeoRasterオブジェクトのspatialExtent属性の使用を試みます。spatialExtent属性がNULLの場合、オブジェクトのメタデータに基づいてGeoRasterオブジェクトのエクステントが計算されます。

例

次の例は、仮想モザイクまたはGeoRasterオブジェクトのコレクションがカーソルの場合に空間エクステントを取得する方法を示しています。

declare
cur sys_refcursor,
begin
open cur for select georaster from georaster_table_1 union all select georaster from georaster_table_2;
extent := sdo_geor_aggr.getMosaicExtent(cur, 26986);
close cur;
end;
/

次の例は、表の列名を指定することでモザイク・エクステントを取得する方法を示しています。

select sdo_geor_aggr.getMosaicExtent('georaster_table_1, georaster_table_2', 'georaster, georaster', 26986) from dual;

8.3 SDO_GEOR_AGGR.getMosaicResolutions

構文

SDO_GEOR_AGGR.getMosaicResolutions(
inGeoRasters    IN SYS_REFCURSOR,
resolutionUnit IN VARCHAR2 DEFAULT NULL
) RETURN  SDO_RANGE_ARRAY;;

または

SDO_GEOR_AGGR.getMosaicResolutions(
georasterTableNames  IN VARCHAR2,
georasterColumnNames IN VARCHAR2,
resolutionUnit      IN VARCHAR2 DEFAULT NULL
) RETURN  SDO_RANGE_ARRAY;

説明

仮想モザイクまたはGeoRasterオブジェクトのコレクションの解像度の範囲を指定した単位で戻します。

パラメータ

inGeoRasters

カーソルのソースGeoRasterオブジェクトを指定します。

georasterTableNames

ソースGeoRasterオブジェクトを含む表の名前(カンマ区切り)を指定します。

georasterColumnNames

georasterTableNamesの表名に対応する表のSDO_GEORASTER型の列の名前(カンマ区切り)を指定します。

resolutionUnit

戻される解像度の範囲の測定単位を指定します。指定する場合、'unit=value'という形式で、引用符で囲んだ文字列にする必要があります(valueは単位名)。指定しないか、NULLの場合、戻される解像度の範囲の単位は、meterです。

使用上の注意

戻される解像度の範囲は、SDO_RANGE_ARRAY(SDO_RANGE(min_x, max_x), SDO_RANGE(min_y, max_y))という形式となり、min_xとmax_xはx次元の最小および最大の解像度で、min_yとmax_yはy次元の最小および最大の解像度です。

SDO_RANGE_ARRAY型は、VARRAY(1048576) OF SDO_RANGEとして定義されます。SDO_RANGE型の定義は次のとおりです。

Name                                      Null?    Type
----------------------------------------- -------- -------
LB                                                 NUMBER
UB                                                 NUMBER

例

次の例では、m単位で戻される値を使用して、仮想モザイクまたはGeoRasterオブジェクトのコレクションの空間解像度を取得します。

SELECT sdo_geor_aggr.getMosaicResolutions('georatser_table_1, georaster_table_2', 'georaster, georaster', 'unit=meter') FROM DUAL;

8.4 SDO_GEOR_AGGR.getMosaicSubset

構文

SDO_GEOR_AGGR.getMosaicSubset(
inGeoRasters     IN SYS_REFCURSOR,
pyramidLevel     IN NUMBER,
outSRID         IN NUMBER,
outModelCoordLoc IN NUMBER,
referencePoint   IN SDO_GEOMETRY,
cropArea         IN SDO_GEOMETRY,
polygonClip      IN VARCHAR2,
boundaryClip     IN VARCHAR2,
layerNumbers     IN VARCHAR2,
outResolutions   IN SDO_NUMBER_ARRAY,
resolutionUnit   IN VARCHAR2,
mosaicParam      IN VARCHAR2,
rasterBlob       IN OUT NOCOPY BLOB,
outArea          OUT SDO_GEOMETRY,
outWindow        OUT SDO_NUMBER_ARRAY,
storageParam     IN VARCHAR2 DEFAULT NULL,
bgValues         IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR_AGGR.getMosaicSubset(
georasterTableNames  IN VARCHAR2,
georasterColumnNames IN VARCHAR2,
pyramidLevel         IN NUMBER,
outSRID              IN NUMBER,
outModelCoordLoc     IN NUMBER,
referencePoint       IN SDO_GEOMETRY,
cropArea             IN SDO_GEOMETRY,
polygonClip          IN VARCHAR2,
boundaryClip         IN VARCHAR2,
layerNumbers         IN VARCHAR2,
outResolutions       IN SDO_NUMBER_ARRAY,
resolutionUnit       IN VARCHAR2,
mosaicParam          IN VARCHAR2,
rasterBlob           IN OUT NOCOPY BLOB,
outArea              OUT SDO_GEOMETRY,
outWindow            OUT SDO_NUMBER_ARRAY,
storageParam         IN VARCHAR2 DEFAULT NULL,
bgValues             IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

仮想モザイクまたはGeoRasterオブジェクトのコレクションに対してサブセット化を実行します。これは、問合せ対象領域のモザイク処理を動的に実行し、必要な結果をBLOBにオンザフライで戻します。必要に応じて、内部的幾何補正、共通ポイント・ルール、切れ目充填およびカラー・バランスが実行されます。

パラメータ

inGeoRasters

カーソルのソースGeoRasterオブジェクトを指定します。

georasterTableNames

ソースGeoRasterオブジェクトを含む表の名前(カンマ区切り)を指定します。

これらの表のMIN_X_RES$およびMAX_X_RES$列の定義と使用の詳細は、「使用上の注意」および「MIN_X_RES$およびMAX_X_RES$を使用した問合せパフォーマンスの向上」を参照してください。

georasterColumnNames

georasterTableNamesの表名に対応する表のSDO_GEORASTER型の列の名前(カンマ区切り)を指定します。

pyramidLevel

操作用のソースGeoRasterオブジェクトのピラミッド・レベルを指定します。このパラメータは、outResolutionsパラメータが指定されていない場合に使用され、それ以外の場合、ソースGeoRasterオブジェクトのピラミッド・レベルはoutResolutionsパラメータによって決定されます。

outSRID

出力GeoRasterオブジェクトの座標系を指定します。NULLか、またはMDSYS.CS_SRS表のSRID列の値を指定する必要があります。

outModelCoordLoc

セルによって表現される領域のベースのモデル位置を示す値を指定します。CENTERの場合は0、UPPERLEFTの場合は1を指定します。NULLの場合、CENTERが使用されます。

referencePoint

モザイクの参照点として使用するSDO_GEOMETRY型の点を指定します。点を指定する場合、モザイク処理されたイメージの左上角が参照点に揃えられます(referencePointと出力の左上角の間の距離がピクセルの整数になります)。このパラメータがNULLの場合、参照点は、cropAreaの左上角または(cropAreaがNULLの場合)出力エクステントの左上角を暗黙的に使用します。

cropArea

クロッピング領域を定義します。SDO_GEOMETRYオブジェクトにNULL以外のSRIDが含まれる場合、ソースGeoRasterオブジェクトは地理参照される必要がありますが、それ以外の場合、ソースGeoRasterオブジェクトは地理参照されても地理参照されなくてもかまいません。polygonClipがFALSEの場合、cropAreaのMBRがモザイク処理されたデータをクロッピングするために使用されます。polygonClipがTRUEの場合、cropAreaのジオメトリがモザイク処理されたデータをクロッピングするために使用されます。

polygonClip

文字列TRUEではモザイク処理されたデータをクロッピングするためにcropArea値が使用され、文字列FALSEまたはNULL値ではモザイク処理されたデータをクロッピングするためにcropAreaのMBRが使用されます。

boundaryClip

文字列TRUEまたはNULL値では、cropAreaをクリップするために仮想モザイクの境界が使用され、文字列FALSEでは、仮想モザイクの外部にあるがcropArea内にある領域に背景値が入力されます。

layerNumbers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。指定しない場合、モザイク結果にはソースGeoRasterオブジェクトと同じ数のバンドが含まれます。

outResolutions

出力GeoRasterデータに対してリクエストされた解像度を指定します。NULLの場合、デフォルトは、最初に出現したGeoRasterオブジェクトの解像度です。詳細は、「使用上の注意」を参照してください。

resolutionUnit

outResolutionsパラメータの単位を指定します。NULLの場合、デフォルトは出力SRIDの単位です。指定する場合、unit=valueという形式で、引用符で囲んだ文字列にする必要があります(valueは単位名)。このパラメータは、outResolutionsがNULLである場合は無視されます。

mosaicParam

モザイク・パラメータを指定するため、キーワード=値のペアのカンマで区切られた引用符付き文字列を指定します。これには、「SDO_GEOR_AGGR.mosaicSubset」のリファレンスの項にある表8-1のキーワードを1つ以上含めることができます。

rasterBlob

操作の結果を格納するバイナリ・ラージ・オブジェクト(BLOB)を指定します。処理が実行される前に、これが存在しているか、または初期化されている必要があります。これは、通常は一時BLOBです。

outArea

出力データのエクステントを記述したジオメトリ・オブジェクトを指定します。

outWindow

セル空間内で出力ウィンドウの左上角および右下角の座標を指定するSDO_NUMBER_ARRAYオブジェクトを指定します。このファンクションの場合、出力ウィンドウの左上角は常に(0,0)です。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。このパラメータがNULLの場合、結果のGeoRasterオブジェクトは、モデル空間(存在する場合)またはセル空間で最初に出現したソースGeoRasterオブジェクトと同じ記憶域パラメータ(blockSize、cellDepth、interleavingおよびcompression)を持ちます。ただし、モザイク処理する最初に出現したGeoRasterオブジェクトと同じ記憶域パラメータをモザイクに設定する場合を除き、出力モザイクのサイズに応じて記憶域パラメータ(特にブロック化サイズ)を指定することをお薦めします。

(pyramid=trueが指定されている場合、このプロシージャでは無視されますが、SDO_GEOR_AGGR.mosaicSubsetでは無視されません。)

bgValues

部分的に空のラスター・ブロックに入力する背景セル値(完全に空のラスター・ブロックは入力なしで空のままになります)。それらは、クリップ・ポリゴンの外にある領域またはソース・イメージに含まれていないギャップ領域など、モザイク処理操作から生じる空の領域を埋めるために使用されます。(「空のラスター・ブロック」も参照してください。)SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上の注意

ソースGeoRasterオブジェクトは、モザイク処理を実行できるように、イメージまたはラスター・データとして準備しておく必要があります。つまり、仮想モザイクのGeoRasterオブジェクトには次の要件があります。

- 地理参照されているオブジェクトと地理参照されていないオブジェクトを混在させないこと。すべてのオブジェクトが地理参照されているか、地理参照されているオブジェクトが1つもないこと。

- 同じレイヤー数またはバンド数を持つ。ソース・オブジェクトの行および列の次元サイズに対する制限はありません。

モザイク処理されるGeoRasterオブジェクトが地理参照される場合、これらのオブジェクトはその地理参照情報に従ってともに配置されます。GeoRasterオブジェクトが地理参照されない場合、これらのオブジェクトはULTCoordinate値に従ってともに配置されます。(ULTCoordinateの詳細は、「GeoRasterデータ・モデル」を参照してください。)

結果のGeoRasterオブジェクトの空間参照メタデータは、outSRIDおよびoutResolutionsパラメータによって決定されます。outSRIDが指定されていない場合、最初に出現したソースGeoRasterオブジェクトのSRIDが使用されます。outResolutionsが指定されていない場合、指定したピラミッド・レベル(pyramidLevelパラメータ)で最初に出現したソースGeoRasterオブジェクトの空間解像度が使用されます。空間解像度は、すべてのソース・イメージのメタデータに設定する必要があります。

pyramidLevelが指定されているがoutResolutionsが指定されていない場合、pyramidLevelパラメータで指定されたピラミッド・レベルのラスター・データを使用してすべてのソースGeoRasterオブジェクトがモザイク処理されます。このパラメータの組合せは、ソースGeoRasterオブジェクトにピラミッド・レベル0の同じ空間解像度が含まれる場合に使用できます。

outResolutionsが指定されている場合、ソースGeoRasterオブジェクトは、outResolutionsパラメータに最も近い解像度を持つピラミッド・レベルのラスター・データを使用してモザイク処理されます。outResolutionsパラメータの値がソースGeoRasterオブジェクトの空間解像度の範囲内に存在しない場合、このソースGeoRasterオブジェクトはモザイクに含まれません。GeoRasterオブジェクトの空間解像度の範囲は、ピラミッド・レベル0の解像度とGeoRasterオブジェクトの最高のピラミッド・レベルの解像度によって決定されます。

ソースGeoRasterオブジェクトがoutSRIDと異なるSRIDを持っているか、幾何補正されていない場合、モザイク処理されたGeoRasterオブジェクトが同一のSRIDおよび空間解像度の値を持つように、動的に再投影または幾何補正されます。

ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれるか、ソースGeoRasterオブジェクトが領域全体を覆っていない場合、モザイク処理された結果のGeoRasterオブジェクトには、空のラスター・ブロックまたは部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が含まれます。いずれのソースGeoRasterオブジェクトにも含まれない結果のラスター・ブロックは、空のままです。部分的に空のラスター・ブロックにはbgValuesパラメータに指定した値が入力されます。bgValuesパラメータを指定しない場合は0 (ゼロ)が入力されます。

ソースGeoRasterオブジェクトが重複している場合、重複する領域のデータは、mosaicParamパラメータで指定されたルールに準拠します。デフォルトでは、最後に出現したソースGeoRasterオブジェクトのセル値が使用されます。指定した解像度で許容可能な重複するGeoRasterオブジェクトの最大数は、8です。

ソースのGeoRasterオブジェクトに関連したビットマップ・マスクは考慮されません。bitmapmaskパラメータは、storageParam文字列で指定されている場合でも無視されます。

mosaicParamでcolorBalanceオプションを使用するには、ソース・イメージのSDO_GEOR.generateStatisticsをコールし、イメージの統計を生成してそれらをソース・イメージのメタデータに格納する必要があります。現在のカラー・バランス・メソッドは、一定のタイプのソース・イメージ(コントラストまたは明るさのみが異なるイメージなど)でのみ適切に動作します。

ソースとなるすべてのGeoRasterオブジェクトが空白で、同じblankCellValue値を持つ場合、結果のGeoRasterオブジェクトも空白になり、そのblankCellValue値を持ちます。そうでない場合、結果のGeoRasterオブジェクトは空白にはなりません。

ソースGeoRasterオブジェクトに異なる空間解像度の範囲が含まれる場合、georasterTableNamesパラメータにリストされている表の列MIN_X_RES$およびMAX_X_RES$ (両方ともNUMBER型)を定義できます(MIN_X_RES$とMAX_X_RES$では、それぞれソースGeoRasterオブジェクトの最小および最大の空間解像度の値を指定します)。プロシージャでは、これらの列に格納されている解像度の範囲を使用して、outResolutionsパラメータに指定されているリクエストされた解像度ではないソースGeoRasterオブジェクトを除外します。これによって、異なる空間解像度の範囲を持つ、多くの重複するソースGeoRasterオブジェクトが存在する場合に、プロシージャのパフォーマンスが向上します。

MIN_X_RES$およびMAX_X_RES$列値を使用するには、次のようにします。

- georasterTableNamesパラメータを含むプロシージャ構文を使用する必要があります。

- outResolutionsパラメータはNULLにしないでください。

- MIN_X_RES$およびMAX_X_RES$列の解像度の値は、outResolutionsパラメータに指定されている解像度の値と同じ単位である必要があります。

詳細は、「仮想モザイク」を参照してください。

例

次の例では、cropAreaウィンドウを指定して、30mの解像度でSRID 32610の仮想モザイク(2つのGeoRaster表として定義される)のサブセットを取得します。NODATAは、リサンプリング・プロセス(存在する場合)およびソース・イメージの重複する領域で考慮されます。

declare
lb blob;
cropArea sdo_geometry;
outArea  sdo_geometry := null;
outWin   sdo_number_array:=null;
resolutions sdo_number_array;
begin
dbms_lob.createTemporary(lb, TRUE);

cropArea :=  sdo_geometry(2003, 26986, null,
sdo_elem_info_array(1, 1003, 3),
sdo_ordinate_array(399180, 4247820,
496140,4353900) );
resolutions := sdo_number_array(30, 30);
sdo_geor_aggr.getMosaicSubset('georaster_table_1, georaster_table_2',
'georaster, georaster',
0, 32610, null, null, cropArea,
null, null, null, resolutions, null,
'nodata=true',
lb, outArea, outWin);
dbms_lob.freeTemporary(lb);
if outWin is not null then
dbms_output.put_line('output window: (' || outWin(1) || ',' || outWin(2) ||', ' || outWin(3) || ', ' || outWin(4) || ')');
end if;
end;

8.5 SDO_GEOR_AGGR.mosaicSubset

構文

SDO_GEOR_AGGR.mosaicSubset(
inGeoRasters     IN SYS_REFCURSOR,
pyramidLevel     IN NUMBER,
outSRID          IN NUMBER,
outModelCoordLoc IN NUMBER,
referencePoint   IN SDO_GEOMETRY,
cropArea         IN SDO_GEOMETRY,
polygonClip      IN VARCHAR2,
boundaryClip     IN VARCHAR2,
layerNumbers     IN VARCHAR2,
outResolutions   IN SDO_NUMBER_ARRAY,
resolutionUnit   IN VARCHAR2,
mosaicParam      IN VARCHAR2,
storageParam     IN VARCHAR2,
outGeoRaster     IN OUT SDO_GEORASTER,
bgValues         IN SDO_NUMBER_ARRAY DEFAULT NULL,
parallelParam    IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR_AGGR.mosaicSubset(
georasterTableNames  IN VARCHAR2,
georasterColumnNames IN VARCHAR2,
pyramidLevel         IN NUMBER,
outSRID             IN NUMBER,
outModelCoordLoc    IN NUMBER,
referencePoint      IN SDO_GEOMETRY,
cropArea            IN SDO_GEOMETRY,
polygonClip         IN VARCHAR2,
boundaryClip        IN VARCHAR2,
layerNumbers        IN VARCHAR2,
outResolutions      IN SDO_NUMBER_ARRAY,
resolutionUnit      IN VARCHAR2,
mosaicParam         IN VARCHAR2,
storageParam        IN VARCHAR2,
outGeoRaster        IN OUT SDO_GEORASTER,
bgValues            IN SDO_NUMBER_ARRAY DEFAULT NULL,
parallelParam       IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR_AGGR.mosaicSubset(
inGeoRasters     IN SYS_REFCURSOR,
pyramidLevel     IN NUMBER,
elevationParam   IN VARCHAR2,
outSRID          IN NUMBER,
outModelCoordLoc IN NUMBER,
referencePoint   IN SDO_GEOMETRY,
cropArea         IN SDO_GEOMETRY,
polygonClip      IN VARCHAR2,
boundaryClip     IN VARCHAR2,
layerNumbers     IN VARCHAR2,
outResolutions   IN SDO_NUMBER_ARRAY,
resolutionUnit   IN VARCHAR2,
mosaicParam      IN VARCHAR2,
storageParam      IN VARCHAR2,
outGeoRaster     IN OUT SDO_GEORASTER,
bgValues         IN SDO_NUMBER_ARRAY DEFAULT NULL,
parallelParam    IN VARCHAR2 DEFAULT NULL,
referenceImage   IN SDO_GEORASTER DEFAULT NULL,
referenceValue1  IN SDO_NUMBER_ARRAY DEFAULT NULL,
referenceValue2  IN SDO_NUMBER_ARRAY DEFAULT NULL,
refHistograms    IN SDO_GEOR_HISTOGRAM_ARRAY DEFAULT NULL);

または

SDO_GEOR_AGGR.mosaicSubset(
georasterTableNames  IN VARCHAR2,
georasterColumnNames IN VARCHAR2,
pyramidLevel        IN NUMBER,
elevationParam      IN VARCHAR2,
outSRID             IN NUMBER,
outModelCoordLoc    IN NUMBER,
referencePoint      IN SDO_GEOMETRY,
cropArea            IN SDO_GEOMETRY,
polygonClip         IN VARCHAR2,
boundaryClip        IN VARCHAR2,
layerNumbers        IN VARCHAR2,
outResolutions      IN SDO_NUMBER_ARRAY,
resolutionUnit      IN VARCHAR2,
mosaicParam         IN VARCHAR2,
storageParam        IN VARCHAR2,
outGeoRaster        IN OUT SDO_GEORASTER,
bgValues            IN SDO_NUMBER_ARRAY DEFAULT NULL,
parallelParam       IN VARCHAR2 DEFAULT NULL,
referenceImage      IN SDO_GEORASTER DEFAULT NULL,
referenceValue1     IN SDO_NUMBER_ARRAY DEFAULT NULL,
referenceValue2     IN SDO_NUMBER_ARRAY DEFAULT NULL,
refHistograms       IN SDO_GEOR_HISTOGRAM_ARRAY DEFAULT NULL);

説明

仮想モザイクまたはGeoRasterオブジェクトのコレクションに基づいて高度な大規模モザイク処理またはサブセット化を実行します。出力データは、永続的な格納または他の処理のためにGeoRasterオブジェクトに書き込まれます。必要に応じて、内部的幾何補正、共通ポイント・ルール、切れ目充填およびカラー・バランスが実行されます。

パラメータ

inGeoRasters

カーソルのソースGeoRasterオブジェクトを指定します。

georasterTableNames

ソースGeoRasterオブジェクトを含む表の名前(カンマ区切り)を指定します。

これらの表のMIN_X_RES$およびMAX_X_RES$列の定義と使用の詳細は、「使用上の注意」および「MIN_X_RES$およびMAX_X_RES$を使用した問合せパフォーマンスの向上」を参照してください。

georasterColumnNames

georasterTableNamesの表名に対応する表のSDO_GEORASTER型の列の名前(カンマ区切り)を指定します。

pyramidLevel

操作用のソースGeoRasterオブジェクトのピラミッド・レベルを指定します。このパラメータは、outResolutionsパラメータが指定されていない場合に使用され、それ以外の場合、モザイクに含まれるソースGeoRasterオブジェクトのピラミッド・レベルはoutResolutionsパラメータによって決定されます。

ピラミッド・レベル0上でソースGeoRasterオブジェクトが同じ解像度を持つ場合は、pyramidLevelパラメータおよびstorageParamパラメータ内のオプションのpyramid=trueのみが有効になります。

outResolutionsパラメータがNULLでない場合、pyramidLevelパラメータは無視されます。

elevationParam

標高パラメータaverage (平均表面高度)を含む文字列。このパラメータは、引用符で囲まれた文字列で、キーワード=値のペア('average=800'など)を含める必要があります。このパラメータは、出力GeoRasterオブジェクトの標高を指定します。このパラメータがNULLである場合、0はaverageであるとみなされます。

elevationParamパラメータを使用する場合、入力GeoRasterオブジェクトには3DモデルSRIDおよび0 (ゼロ)以外の平均表面高度が含まれる必要があります。

outSRID

出力GeoRasterオブジェクトの座標系を指定します。NULLか、またはMDSYS.CS_SRS表のSRID列の値を指定する必要があります。

outModelCoordLoc

セルによって表現される領域のベースのモデル位置を示す値を指定します。CENTERの場合は0、UPPERLEFTの場合は1を指定します。NULLの場合、CENTERが使用されます。

referencePoint

モザイクの参照点として使用するSDO_GEOMETRY型の点を指定します。点を指定する場合、モザイク処理されたイメージの左上角が参照点に揃えられます(referencePointと出力の左上角の間の距離がピクセルの整数になります)。このパラメータがNULLの場合、参照点は、cropAreaの左上角または(cropAreaがNULLの場合)出力エクステントの左上角を暗黙的に使用します。

cropArea

クロッピング領域を定義します。SDO_GEOMETRYオブジェクトにNULL以外のSRIDが含まれる場合、SDO_GEOMETRYオブジェクトで指定される座標はモデル空間内にあり、ソースGeoRasterオブジェクトは地理参照される必要がありますが、それ以外の場合、SDO_GEOMETRYオブジェクトで指定される座標はセル空間内にあり、ソースGeoRasterオブジェクトは地理参照されても地理参照されなくてもかまいません。polygonClipがFALSEの場合、cropAreaのMBRがモザイク処理されたデータをクロッピングするために使用されます。polygonClipがTRUEの場合、cropAreaのジオメトリがモザイク処理されたデータをクロッピングするために使用されます。

polygonClip

文字列TRUEではモザイク処理されたデータをクロッピングするためにcropArea値が使用され、文字列FALSEまたはNULL値ではモザイク処理されたデータをクロッピングするためにcropAreaのMBRが使用されます。

boundaryClip

文字列TRUEまたはNULL値では、cropAreaをクリップするために仮想モザイクの境界が使用され、文字列FALSEでは、仮想モザイクの外部にあるがcropArea内にある領域に背景値が入力されます。

layerNumbers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。指定しない場合、モザイク結果にはソースGeoRasterオブジェクトと同じ数のバンドが含まれます。

outResolutions

出力GeoRasterデータの解像度を指定します。NULLの場合、デフォルトは、最初に出現したGeoRasterオブジェクトの解像度です。詳細は、「使用上の注意」を参照してください。

resolutionUnit

outResolutionsパラメータの単位を指定します。NULLの場合、デフォルトは出力SRIDの単位です。指定する場合、unit=valueという形式で、引用符で囲んだ文字列にする必要があります(valueは単位名で、有効なSDO_UNITS_OF_MEASURE表からの有効なUNIT_OF_MEAS_NAME値)。このパラメータは、outResolutionsがNULLである場合は無視されます。

mosaicParam

モザイク・パラメータを指定するため、キーワード=値のペアのカンマで区切られた引用符付き文字列を指定します。これには、表8-1のキーワードを1つ以上含めることができます。

注意:

GeoRasterのサブプログラムに対する文字列(VARCHAR2)パラメータの中に数値がある場合は、ロケールにかかわらず、小数点にはピリオド(.)を使用する必要があります。

表8-1 mosaicParamキーワード

キーワード

説明

cbreference

(referenceImage、referenceValue1、/referenceValue2、およびrefHistogramsパラメータが含まれるプロシージャ構文でサポートされます。)　　colorBalanceで使用される参照値のソースを指定します。次のいずれかの値を指定できます。

- VALUE: 参照値はreferenceValue1およびreferenceValue2パラメータで指定されます。

- IMAGE: 参照値はreferenceImageパラメータから取得されます。

- OVERLAP: 参照値は、ソース・イメージの重複する領域から取得されます。 (SDO_GEOR_AGGR.appendにappendParamが指定されている場合は常に無視されます。)

colorBalance

カラー・バランスの方法を指定します。次のいずれかの値を指定できます。

- NONE (デフォルト): カラー・バランスは実行されません。

- LINEARSTRETCHING: 線形ストレッチ・メソッドを使用してソース・イメージのセル値をリファンレスの最小値および最大値までストレッチします。
cbreferenceパラメータがVALUEである場合、パラメータreferenceValue1は参照の最小値、パラメータreferenceValue2は参照の最大値を持ちます。referenceValue1またはreferenceValue2がNULLの場合、デフォルト値0と255がそれぞれ使用されます。referenceValue1またはreferenceValue2に値が1つしかない場合、それがすべてのバンドに適用されます。それ以外の場合は、参照値は各バンドに対応します。したがって、SDO_NUMBER_ARRAY内の値の数はソース・イメージ内バンドの数と同じである必要があります。

cbreferenceパラメータがIMAGEである場合、referenceImageの最小値および最大値が参照として使用されます。

cbreferenceパラメータが指定されていない場合、minValおよびmaxValパラメータを使用して最小および最大の参照値がそれぞれ指定されます。

- STATISTICMATCHING: 参照統計と一致するソース・イメージをストレッチします。
cbreferenceパラメータがVALUEである場合、パラメータreferenceValue1は参照の平均値、パラメータreferenceValue2は参照の標準偏差値を持ちます。referenceValue1またはreferenceValue2がNULLの場合、デフォルト値128と100がそれぞれ使用されます。referenceValue1またはreferenceValue2に値が1つしかない場合、それがすべてのバンドに適用されます。それ以外の場合は、参照値は各バンドに対応します。したがって、SDO_NUMBER_ARRAY内の値の数はソース・イメージ内バンドの数と同じである必要があります。

cbreferenceパラメータがIMAGEである場合、一致には参照イメージの平均および標準偏差値が使用されます。

cbreferenceパラメータがOVERLAPである場合、平均および標準偏差値は重複する領域から導出されます。

cbreferenceパラメータが指定されていない場合、stdおよびmeanパラメータを使用して参照統計が指定されます。

- HISTOGRAMMATCHING: 参照ヒストグラムがソース・イメージのヒストグラムとして使用されます。
cbreferenceパラメータがVALUEである場合、パラメータreferenceHistogramで各バンドの参照ヒストグラムが定義されます。参照ヒストグラムが1つしか指定されない場合は、それがすべてのバンドに適用されます。

cbreferenceパラメータがIMAGEである場合、各バンドの参照イメージのヒストグラムが一致に使用されます。

cbreferenceパラメータがOVERLAPである場合、重複する領域にあるヒストグラムを使用して一致が導出されます。

commonPointRule

重複する領域のセル値を取得するための方法を指定します。次のいずれかの値を指定できます。

- START: 最初に出現したGeoRasterオブジェクトの値が使用されます。

- END: 最後に出現したGeoRasterオブジェクトの値が使用されます。

- LATEST: メタデータに最も新しいEndDateTimeが含まれるGeoRasterオブジェクトの値が使用されます。

- OLDEST: メタデータに最も古いEndDateTimeが含まれるGeoRasterオブジェクトの値が使用されます。

- CTC: 出力ウィンドウの中心に最も近いGeoRasterオブジェクトからのコール値が使用されます。

- HIGH: すべての重複するGeoRasterオブジェクトの最大セル値が使用されます。

- LOW: すべての重複するGeoRasterオブジェクトの最小セル値が使用されます。

- AVERAGE: 重複するGeoRasterオブジェクトのすべてのセル値の平均が使用されます。

- HIGHRES: 空間解像度が最も高いGeoRasterオブジェクトの値が使用されます。

fillGap

ソース・イメージ間の狭い切れ目を埋めるかどうかを指定します。TRUEでは、2ピクセル以下の幅の切れ目が最も近くにあるピクセル値で埋められます。FALSEでは、切れ目が0 (ゼロ)またbgValueで埋められます。

maxVal

colorBalanceがLINEARSTRETCHINGでない場合、またはcbreferenceキーワードが指定される場合は無視されますが、それ以外の場合、線形ストレッチ・メソッドの範囲で最も大きい値を指定します。デフォルトは255です。(SDO_GEOR_AGGR.appendにappendParamが指定されている場合は常に無視されます。)

mean

colorBalanceがSTATISTICMATCHINGでない場合、またはcbreferenceキーワードが指定される場合は無視されますが、それ以外の場合、静的一致メソッドの参照平均値を指定します。(SDO_GEOR_AGGR.appendにappendParamが指定されている場合は常に無視されます。)

minVal

colorBalanceがLINEARSTRETCHINGでない場合、またはcbreferenceキーワードが指定される場合は無視されますが、それ以外の場合、線形ストレッチ・メソッドの範囲で最も小さい値を指定します。デフォルトは0です。(SDO_GEOR_AGGR.appendにappendParamが指定されている場合は常に無視されます。)

nodata

重複する領域の処理時、またはリサンプリングにNODATA (NODATA値またはNODATAビットマップ・マスク)を考慮するかどうかを指定します。デフォルト値はFALSEです。

重複する領域を処理する際、nodata=TRUEでは、NODATA値を含むセルは重複する領域の計算に含まれませんが、nodata=FALSEでは、すべての重複するセル値が重複する領域の計算に含まれます。

リサンプリングを実行し、リサンプリング・メソッドがBILINEAR、BIQUADRATIC、CUBIC、AVERAGE4またはAVERAGE16の場合、リサンプリングの計算に含まれるセル値がNODATA値であると、nodata=TRUE句によってリサンプリングの結果もNODATA値になります。

resampling

モザイク操作中に使用するリサンプリング・メソッドを指定します(リサンプリングが含まれるか、幾何補正が必要な場合)。NN (デフォルト)、BILINEAR、BIQUADRATIC、CUBIC、AVERAGE4またはAVERAGE16のいずれかの値を指定できます。詳細は、「リサンプリングおよび内挿」を参照してください。

resamplingTolerance

ソースGeoRasterオブジェクトを完全に揃えられない場合にリサンプリングを実行しない許容差を指定します。値は、0から0.5の間にする必要があり、単位はピクセルまたはセルです(たとえば、0.5は半分のピクセルまたはセルを意味します)。指定しない場合、0.5が使用され、リサンプリングは発生しません。

resFilter

出力解像度の範囲にあるGeoRasterオブジェクトのみを選択するようにソースGeoRasterオブジェクトを絞り込むかどうかを指定します(outResolutionパラメータ)。TRUE (デフォルト)の場合、解像度フィルタリングが有効です。FALSEの場合、解像度フィルタリングが無効になり、すべてのソースGeoRasterオブジェクトがモザイク処理プロセスに含まれます。(SDO_GEOR_AGGR.appendにappendParamが指定されている場合は常に無視されます。)

std

colorBalanceがSTATISTICMATCHINGでない場合、またはcbreferenceキーワードが指定される場合は無視されますが、それ以外の場合、静的一致メソッドの参照標準偏差値を指定します。(SDO_GEOR_AGGR.appendにappendParamが指定されている場合は常に無視されます。)

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。このパラメータがNULLの場合、結果のGeoRasterオブジェクトは、モデル空間(存在する場合)またはセル空間で最初に出現したソースGeoRasterオブジェクトと同じ記憶域パラメータ(blockSize、cellDepth、interleavingおよびcompression)を持ちます。ただし、モザイク処理する最初に出現したGeoRasterオブジェクトと同じ記憶域パラメータをモザイクに設定する場合を除き、出力モザイクのサイズに応じて記憶域パラメータ(特にブロック化サイズ)を指定することをお薦めします。

pyramid=trueを指定すると、outResolutionsパラメータがNULLでpyramidLevelパラメータがNULLでない場合にソースGeoRasterオブジェクトのピラミッドがモザイク処理されます。結果のGeoRasterオブジェクトの最大ピラミッド・レベルは、ソースGeoRasterオブジェクトの最大ピラミッド・レベルの最小値です。デフォルトではpyramid=falseであるため、ピラミッドはモザイク化されません。

bitmapmask=trueが指定されている場合、ソースGeoRasterオブジェクトのビットマップ・マスクもモザイク処理されます。

outGeoRaster

操作の結果を格納するGeoRasterオブジェクトを指定します。ソースGeoRasterオブジェクトと同じにすることはできません。

bgValues

部分的に空のラスター・ブロックに入力する背景セル値(完全に空のラスター・ブロックは入力なしで空のままになります)。それらは、クリップ・ポリゴンの外にある領域またはソース・イメージに含まれていないギャップ領域など、モザイク処理操作から生じる空の領域を埋めるために使用されます。(「空のラスター・ブロック」も参照してください。)SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、ターゲット・セル深度で指定されているように有効なセル値である必要があります。

parallelParam

操作の並列度を指定します。指定する場合、parallel=nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)

並列性が指定されている場合、プロシージャによって内部コミット操作が実行されます。エラーが発生した場合(Oracle Parallel Serverが原因である場合でも)、操作をロールバックするために、モザイク処理された結果のGeoRasterオブジェクトを明示的に削除する必要があります。

referenceImage

カラー・バランス操作中に使用される参照イメージを指定します。NULLの場合、デフォルトは問合せからの最初のイメージです。

referenceValue1

カラー・バランス操作中に使用される1つ以上の参照値を指定します。値の意味はカラー・バランス・メソッドで決定されます。

referenceValue2

カラー・バランス操作中に使用される1つ以上の参照値を指定します。値の意味はカラー・バランス・メソッドで決定されます。

referenceHistograms

カラー・バランス操作中に使用される参照ヒストグラムを指定します。

使用上の注意

プロシージャの最初の2つの形式によって基本カラー・バランス・メソッドが指定され、出力GeoRasterオブジェクトの標高が0(ゼロ)であるとみなされます。プロシージャの最後の2つの形式では、参照値または参照イメージを使用してより高度なカラー・バランス・メソッドが指定され、出力GeoRasterオブジェクトの標高値はユーザーが指定します。

ソースGeoRasterオブジェクトは、モザイク処理を実行できるように、イメージまたはラスター・データとして準備しておく必要があります。つまり、モザイク処理されるGeoRasterオブジェクトは、次の条件を満たしている必要があります。

- 地理参照されているオブジェクトと地理参照されていないオブジェクトを混在させないこと。すべてのオブジェクトが地理参照されているか、地理参照されているオブジェクトが1つもないこと。

- 同じレイヤー数またはバンド数を持つ。ソース・オブジェクトの行および列の次元サイズに対する制限はありません。

モザイク処理されるGeoRasterオブジェクトが地理参照される場合、これらのオブジェクトはその地理参照情報に従ってともに配置されます。GeoRasterオブジェクトが地理参照されない場合、これらのオブジェクトはULTCoordinate値に従ってともに配置されます。(ULTCoordinateの詳細は、「GeoRasterデータ・モデル」を参照してください。)

結果のGeoRasterオブジェクトの空間参照メタデータは、outSRIDおよびoutResolutionsパラメータによって決定されます。outSRIDが指定されていない場合、最初に出現したソースGeoRasterオブジェクトのSRIDが使用されます。outResolutionsが指定されていない場合、指定したピラミッド・レベル(pyramidLevelパラメータ)で最初に出現したソースGeoRasterオブジェクトの空間解像度が使用されます。空間解像度は、すべてのソース・イメージのメタデータに設定する必要があります。

ソースGeoRasterオブジェクトがoutSRIDと異なるSRIDを持っているか、幾何補正されていない場合、モザイク処理されたGeoRasterオブジェクトが同一のSRIDおよび空間解像度の値を持つように、動的に再投影または幾何補正されます。

ソースGeoRasterオブジェクトが重複している場合、重複する領域のデータは、mosaicParamパラメータで指定されたルールに準拠します。デフォルトでは、最後に出現したソースGeoRasterオブジェクトのセル値が使用されます。

出力モザイクに寄与するソースGeoRasterオブジェクトは、空間に関してはcropAreaパラメータによって、解像度に関しては(解像度の選択)、outResolutionsパラメータによって選択されます。

- cropAreaパラメータを使用して、ソースGeoRasterオブジェクトの空間エクステントを問い合せ、cropAreaジオメトリの範囲に含まれるGeoRasterオブジェクトが決定されます。したがって、空間索引はGeoRasterオブジェクトのspatialExtent属性上に構築する必要があります。

- outResolutionsパラメータを使用して、ソースGeoRasterオブジェクトが検索されるため、outResolutions値はソースGeoRasterオブジェクトの解像度の範囲内に含まれます。GeoRasterオブジェクトの空間解像度の範囲は、ピラミッド・レベル0の解像度とGeoRasterオブジェクトの最高のピラミッド・レベルの解像度によって決定されます。それは、ピラミッド・レベル0 (ゼロ)よりも低く、ピラミッド・レベルが最上位のピラミッド・レベルよりも高い半ピラミッドです。たとえば、GeoRasterオブジェクトのピラミッド・レベル0 (ゼロ)のときの解像度が30mで、最上位のピラミッド・レベル5のときの解像度が960mである場合、このGeoRasterオブジェクトの空間解像度の範囲は22.5m ((30 + 30/2)/2)から1440m ((960 + 960*2)/2)の間になります。

outResolutionsパラメータを使用する解像度の選択は、georasterTableNamesパラメータにリストされている表の列MIN_X_RES$およびMAX_X_RES$ (両方ともNUMBER型)を定義することでより迅速に行うことができます(MIN_X_RES$とMAX_X_RES$には、それぞれソースGeoRasterオブジェクトの最小および最大の空間解像度の値を指定します)。(ソースGeoRasterオブジェクトが多数存在する場合は、Bツリー索引はMIN_X_RES$およびMAX_X_RES$列上に作成する必要があります。)この機能を活用するには、georasterTableNamesパラメータを含むプロシージャ構文を使用する必要があります。また、MIN_X_RES$およびMAX_X_RES$列に格納されている解像度の値は、ソースGeoRasterオブジェクトのspatialExtent属性内に格納されているSRIDの単位と同じ単位である必要があります。

解像度の選択は、mosaicParamパラメータでresFilter=falseを設定することでオフすることができます。解像度の選択をオフにすると、ソースGeoRasterオブジェクトは空間でのみフィルタ処理されます。

ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれるか、ソースGeoRasterオブジェクトが領域全体を覆っていない場合、モザイク処理された結果のGeoRasterオブジェクトには、空のラスター・ブロックまたは部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が含まれます。いずれのソースGeoRasterオブジェクトにも含まれない結果のラスター・ブロックは、空のままです。部分的に空のラスター・ブロックにはbgValuesパラメータに指定した値が入力されます。bgValuesパラメータを指定しない場合は0 (ゼロ)が入力されます。

storageParam文字列でbitmapmaskパラメータがtrueに設定されている場合、ビットマップ・マスクはモザイク処理されます。デフォルトでは、ビットマップ・マスクはモザイク処理されません。ビットマップ・マスクもNODATAとみなされる可能性があることに注意してください(その場合、表8-1のNODATAキーワードを参照してください)。

mosaicParamでcolorBalanceオプションを使用するには、ソース・イメージのSDO_GEOR.generateStatisticsをコールし、イメージの統計を生成してそれらをソース・イメージのメタデータに格納する必要があります。

ソースとなるすべてのGeoRasterオブジェクトが空白で、同じblankCellValue値を持つ場合、結果のGeoRasterオブジェクトも空白になり、そのblankCellValue値を持ちます。そうでない場合、結果のGeoRasterオブジェクトは空白にはなりません。

モザイク処理の結果を含めるGeoRasterオブジェクト(georasterパラメータ)には、ソースGeoRasterオブジェクト(モザイク処理を行う対象となるオブジェクト)を指定することはできません。

モザイク処理では、一定の間隔で内部コミット操作が実行されるため、ロールバックできません。処理が中断された場合、ダングリング・ラスター・ブロックがラスター・データ表に存在する可能性があります。ダングリング・ラスター・ブロックは、GeoRasterオブジェクトおよびシステム・データをデータベースでメンテナンスすることにより処理できます(「データベースのGeoRasterオブジェクトおよびシステム・データのメンテナンス」を参照)。

詳細は、「大規模イメージのモザイク処理」および「仮想モザイク」を参照してください。

例

次の例は、線形ストレッチ・メソッド(colorBalance=linearstretching)を使用してソース・イメージをカラー・バランス処理する方法を示しています。ソース・イメージのセル値(cbreference=value)を最小参照値および最大参照値までストレッチします。参照値は、ref_minおよびref_max変数で指定されます。

DECLARE
gr sdo_georaster;
resolutions  sdo_number_array;
ref_min    sdo_number_arrray;
ref_max   sdo_number_array;
BEGIN
insert into georaster_table (georid, georaster)
values (10, sdo_geor.init('RDT_1',10))
returning georaster into gr;

resolutions := sdo_number_array(30, 30);
ref_min := sdo_number_array(10, 10, 10);
ref_max := sdo_number_array(200, 255, 230);

sdo_geor_aggr.mosaicSubset('georaster_table_1, georaster_table_2',
'georaster, georaster',
0, null, 32610, null, null, null,
null, null, null, resolutions, null,
'commonPointRule=average, colorBalance=linearstretching, cbreference=value',
'blocking=optimalpadding, blocksize=(512,512,3)', gr, null, 'parallel=4', null, ref_min, ref_max);

update georaster_table set georaster = gr where georid=10;
commit;
END;
/

次の例では、ヒストグラム一致メソッド(colorBalance=histogramMatching)を使用してソース・イメージをカラー・バランス処理する方法を示しています。各ソース・イメージのヒストグラム(cbreference=image)を参照イメージのヒストグラムと一致させます。

DECLARE
gr sdo_georaster;
resolutions  sdo_number_array;
refgr sdo_georaster;
BEGIN
-- get the reference image
select georaster into refgr from georaster_table where georid = 1;

-- insert new georaster for the mosaic
insert into georaster_table (georid, georaster)
values (10, sdo_geor.init('RDT_1',10))
returning georaster into gr;

resolutions := sdo_number_array(30, 30);

-- mosaic
sdo_geor_aggr.mosaicSubset('georaster_table_1, georaster_table_2',
'georaster, georaster',
0, 32610, null, null, null, null,
null, null, null, resolutions, null,
'commonPointRule=average, colorBalance=histogramMatching, cbreference=image',
'blocking=optimalpadding, blocksize=(512,512,3)', gr, null, 'parallel=4', refgr);

update georaster_table set georaster = gr where georid=10;
commit;
END;
/

次の例は、静的一致メソッド(colorBalance=statisticMatching)を使用してソース・イメージをカラー・バランス処理する方法を示しています。重複する領域(cbreference=overlap)に基づいてソース・イメージの統計を調整します。

DECLARE
gr sdo_georaster;
resolutions  sdo_number_array;
BEGIN
-- get the reference image
select georaster into refgr from georaster_table where georid = 1;

-- insert new georaster for the mosaic
insert into georaster_table (georid, georaster)
values (10, sdo_geor.init('RDT_1',10))
returning georaster into gr;

resolutions := sdo_number_array(30, 30);

-- mosaic
sdo_geor_aggr.mosaicSubset('georaster_table_1, georaster_table_2',
'georaster, georaster',
0, null, 32610, null, null, null,
null, null, null, resolutions, null,
'commonPointRule=average, colorBalance=statisticMatching, cbreference=overlap',
'blocking=optimalpadding, blocksize=(512,512,3)', gr, null, 'parallel=4');

update georaster_table set georaster = gr where georid=10;
commit;
END;
/

8.6 SDO_GEOR_AGGR.validateForMosaicSubset

構文

SDO_GEOR_AGGR.validateForMosaicSubset(
inGeoRasters    IN SYS_REFCURSOR,
outSRID        IN NUMBER,
outResolutions  IN SDO_NUMBER_ARRAY,
resolutionUnit  IN VARCHAR2,
resultTableName IN VARCHAR2);

または

SDO_GEOR_AGGR.validateForMosaicSubset(
georasterTableNames  IN VARCHAR2,
georasterColumnNames IN VARCHAR2,
outSRID              IN NUMBER,
outResolutions       IN SDO_NUMBER_ARRAY,
resolutionUnit       IN VARCHAR2,
resultTableName      IN VARCHAR2);

説明

仮想モザイクまたはGeoRasterオブジェクトの大規模なコレクションに対してモザイク処理またはサブセット問合せ操作を実行可能であるかどうかをチェックします。検証エラーおよび注意は、すべてユーザーが作成した結果表に格納されます。

パラメータ

inGeoRasters

カーソルのソースGeoRasterオブジェクトを指定します。

georasterTableNames

ソースGeoRasterオブジェクトを含む表の名前(カンマ区切り)を指定します。

georasterColumnNames

georasterTableNamesの表名に対応する表のSDO_GEORASTER型の列の名前(カンマ区切り)を指定します。

outSRID

出力GeoRasterオブジェクトの座標系を指定します。NULLか、またはMDSYS.CS_SRS表のSRID列の値を指定する必要があります。

outResolutions

出力GeoRasterデータの解像度を指定します。NULLの場合、デフォルトは、最初に出現したソースGeoRasterオブジェクトの解像度です。

resolutionUnit

outResolutionsパラメータの単位を指定します。NULLの場合、デフォルトは出力SRIDの単位です。指定する場合、unit=valueという形式で、引用符で囲んだ文字列にする必要があります(valueは単位名)。このパラメータは、outResolutionsがNULLである場合は無視されます。

resultTableName

検証の結果表の名前を指定します。この表は、事前に存在する必要があり、次の列定義が含まれる必要があります。

time timestamp,
type varchar2(16),
description varchar2(512),
table_name varchar2(32),
column_name varchar2(1024),
rdt_table_name varchar2(32),
raster_id number

使用上の注意

resultTableNameパラメータ値には次の考慮事項が適用されます。

- 指定した表が存在しない場合、エラーが生成されます。

- パラメータが指定されていないか、NULLに指定されている場合、プロシージャでは、最初の検証エラーの検出時にエラーがスローされますが、それ以外の場合、すべての検証エラーが表に配置され、エラーなしで完了します。

- 指定した表が空ではない場合、プロシージャでは、表の既存のデータに行が追加されますが、いずれかの列に対する一意の制約があり、新しく追加されたデータの値がその制約付きの行に含まれる既存のデータの値と同じである場合、エラーが生成されます。

- 表のTYPE列には、ERROR (修正する必要のある項目)やNOTE (なんらかのアクションを必要とするか、必要としない情報)などの問題のタイプを示す文字列が含まれます。DESCRIPTION列では、問題の詳細が提供されます。

このプロシージャは、次の検証チェックを実行します。

- ソースGeoRasterオブジェクトのバンド次元サイズは、同じである必要があります。

- ソースGeoRasterオブジェクトには、一貫した地理参照ステータス(すべてが地理参照されているか、すべてが地理参照されていないか)が必要です。

- モザイク処理の実行時に、再投影または幾何補正を実行する場合、その操作は実行可能である必要があります。

- 出力空間参照システムは、アフィン変換である必要があります。出力SRSは、入力パラメータ(outSRID、outResolutions、resolutionUnit)または最初のソースGeoRasterオブジェクトによって決定されます。

例

次の例では、モザイク操作が可能であるかどうかをチェックします。検証エラーは、すべて事前定義済のMOSAIC_ERROR表に格納されます。

EXECUTE sdo_geor_aggr.validateForMosaicSubset('georaster_table_1, georaster_table_2', 'georaster, georaster', 26986, sdo_number_array(30, 30), 'unit=meter', 'mosaic_error');

-- Check the validation results:
SELECT table_name table, column_name column, rdt_table_name rdt, raster_id rid, type, description FROM mosaic_error ORDER BY time;

TABLE COLUMN RDT   RID TYPE  DESCRIPTION
---------- -------- ----- --- ----- ----------------------------------------
GEORASTER_1    GEORASTER    RDT_1   2 ERROR The source georaster object is not georeferenced.

9 SDO_GEOR_RAパッケージのリファレンス

SDO_GEOR_RAパッケージには、GeoRasterに関連するラスター代数および分析操作のためのサブプログラム(ファンクションおよびプロシージャ)が含まれます。この章では、そのサブプログラムのリファレンス情報を、例を使用して説明します。

9.1 SDO_GEOR_RA.classify

構文

SDO_GEOR_RA.classify(
inGeoRaster   IN SDO_GEORASTER,
expresssion   IN VARCHAR2,
rangeArray    IN SDO_NUMBER_ARRAY,
valueArray    IN SDO_NUMBER_ARRAY,
storageParam  IN VARCHAR2,
outGeoRaster  IN OUT SDO_GEORASTER,
nodata        IN VARCHAR2 DEFAULT 'FALSE',
nodataValue   IN NUMBER DEFAULT 0,
parallelParam IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR_RA.classify(
georArray     IN SDO_GEORASTER_ARRAY,
expresssion   IN VARCHAR2,
rangeArray    IN SDO_NUMBER_ARRAY,
valueArray    IN SDO_NUMBER_ARRAY,
storageParam  IN VARCHAR2,
outGeoRaster  IN OUT SDO_GEORASTER,
nodata        IN VARCHAR2 DEFAULT 'FALSE',
nodataValue   IN NUMBER DEFAULT 0,
parallelParam IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR_RA.classify(
inGeoRasters  IN SYS_REFCURSOR,
expresssion   IN VARCHAR2,
rangeArray    IN SDO_NUMBER_ARRAY,
valueArray    IN SDO_NUMBER_ARRAY,
storageParam  IN VARCHAR2,
outGeoRaster  IN OUT SDO_GEORASTER,
nodata        IN VARCHAR2 DEFAULT 'FALSE',
nodataValue   IN NUMBER DEFAULT 0,
parallelParam IN VARCHAR2 DEFAULT NULL);

説明

指定した分類操作を1つ以上の入力GeoRasterオブジェクトに対して適用した後に、新しいGeoRasterオブジェクトを生成します。

パラメータ

inGeoRaster

入力GeoRasterオブジェクトを指定します。

georArray

GeoRasterオブジェクトの配列を指定します。データ型はSDO_GEOR_ARRAYで、VARRAY(10485760) OF SDO_GEORASTERとして定義されます。配列のGeoRasterオブジェクトの最大数は8ですが、すべてのGeoRasterオブジェクトのレイヤーの合計数に対する制限はありません。

inGeoRasters

入力GeoRasterオブジェクトのカーソル(SYS_REFCURSOR型)を指定します。カーソルのGeoRasterオブジェクトの最大数は8ですが、すべてのGeoRasterオブジェクトのレイヤーの合計数に対する制限はありません。

expression

セル値を分類するために使用する算術式を指定します。このパラメータの指定方法の詳細は、「使用上の注意」を参照してください。

rangeArray

セル値を分類するための範囲を定義する数値配列を指定します。配列には、1つ以上の要素が含まれている必要があります。

valueArray

各範囲のターゲット・セル値を定義する数値配列を指定します。要素の数は、rangeArrayの要素より1つ多くする必要があります(その長さがrangeArray+1である必要があります)。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

outGeoRaster

出力GeoRasterオブジェクトを指定します。

nodata

文字列TRUEでは、入力GeoRasterオブジェクトの任意のNODATAセルで、出力GeoRasterオブジェクトの対応するセルがnodataValueパラメータで指定された値に設定されます。文字列FALSE (デフォルト)では、NODATA値を含むセルが通常のデータとみなされます。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

nodataValue

nodataパラメータ値が文字列TRUEである場合にNODATAセルを設定するために使用する値を指定します。

parallelParam

操作の並列度を指定します。指定する場合、parallel=nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)

parallelParamを指定すると、このプロシージャの結果をロールバックできません(「使用上の注意」を参照)。

使用上の注意

このプロシージャでは、1つ以上の入力GeoRasterオブジェクトおよびexpressionパラメータ(算術式の文字列)に基づいて、1レイヤーのGeoRasterオブジェクトが生成されます。出力GeoRasterオブジェクトのセルごとに、入力GeoRasterオブジェクトの対応するセル値に対してexpressionが評価され、次のアルゴリズムを使用して出力GeoRasterオブジェクトのセル値が計算されます。

if  (value of expression < rangeArray[0])
cellValue=valueArray[0]
else if (value of expression >= rangeArray[n-1])
cellValue=valueArray[n]
else if rangeArray[m-1] <= value of expression < rangeArray[m]
cellValue=valueArray[m]

expressionの計算:

- rangeArrayの長さはn

- valueArrayの長さはn+1

- 0 < m < n-1

詳細は、「ラスター代数言語」を参照してください。

parallelParamを指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。

例

次の例では、1番目のレイヤーのセル値に基づいてセル値を分類します。

DECLARE
geor       SDO_GEORASTER;
geor1      SDO_GEORASTER;
rangeArray SDO_NUMBER_ARRAY;
valueArray SDO_NUMBER_ARRAY;
BEGIN
rangeArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180);
valueArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180,190);
select georaster into geor from georaster_table where georid = 1;
insert into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1;
sdo_geor_ra.classify(geor,'{0}',rangeArray,valueArray,null,geor1);
update georaster_table set georaster = geor1 where georid = 5;
commit;
END;
/

9.2 SDO_GEOR_RA.findCells

構文

SDO_GEOR_AGGR.findCells(
inGeoRaster   IN SDO_GEORASTER,
condition     IN VARCHAR2,
storageParam  IN VARCHAR2
outGeoRaster  OUT SDO_GEORASTER,
bgValues      IN SDO_NUMBER_ARRAY DEFAULT NULL,
nodata        IN VARCHAR2 DEFAULT 'FALSE',
parallelParam IN VARCHAR2 DEFAULT NULL);

説明

入力GeoRasterオブジェクトに基づいて新しいGeoRasterオブジェクトを生成しますが、conditionパラメータの指定を満たしていないすべてのセルをマスクします。

パラメータ

inGeoRaster

入力GeoRasterオブジェクトを指定します。

condition

セルを除外するために使用する式文字列を指定します。(詳細は、「使用上の注意」を参照してください。)

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

outGeoRaster

出力GeoRasterオブジェクトを指定します。

bgValues

入力GeoRasterオブジェクトの空のラスター・ブロックでセルの値を表す背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

nodata

文字列TRUEでは、GeoRasterオブジェクトのNODATAセルに元の値を維持するように指定します。文字列FALSE (デフォルト)では、NODATA値を含むセルが通常のデータとみなされます。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

parallelParam

操作の並列度を指定します。指定する場合、parallel=nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)

parallelParamを指定すると、このプロシージャの結果をロールバックできません(「使用上の注意」を参照)。

使用上の注意

このプロシージャでは、入力GeoRasterオブジェクトおよびexpressionパラメータ(ブール式文字列のbooleanExpr)に基づいて、新しいGeoRasterオブジェクトが生成されます。出力GeoRasterオブジェクトのセルごとに、入力GeoRasterオブジェクトの対応するセル値に対して条件が評価されます。セルのconditionがTRUEの場合、出力GeoRasterオブジェクトでは元のセル値が維持されますが、それ以外の場合、出力GeoRasterオブジェクトのセルに対してbgValuesが入力されます。

詳細は、「ラスター代数言語」を参照してください。

parallelParamを指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。

例

次の例では、2番目のレイヤーのセル値が200以下の場合に、セル値をデフォルトの背景値0に変更します。

DECLARE
geor  SDO_GEORASTER;
geor1 SDO_GEORASTER;
BEGIN
select georaster into geor from georaster_table where georid = 1;
insert into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1;
sdo_geor_ra.findcells(geor, '{1}>200',null,geor1);
update georaster_table set georaster = geor1 where georid = 5;
commit;
END;
/

9.3 SDO_GEOR_RA.isOverlap

構文

SDO_GEOR.isOverlap(
georaster1 IN SDO_GEORASTER,
georaster2 IN SDO_GEORASTER,
tolerance     IN NUMBER DEFAULT 0.5
) RETURN VARCHAR2;

または

SDO_GEOR_RA.isOverlap(
georArray IN SDO_GEORASTER_ARRAY,
tolerance IN NUMBER DEFAULT 0.5
) RETURN VARCHAR2;

または

SDO_GEOR_RA.isOverlap(
geor_cur  IN SYS_REFCURSOR,
tolerance IN NUMBER DEFAULT 0.5
) RETURN VARCHAR2;

説明

文字列TRUE (2つ以上のGeoRasterオブジェクトが重複している場合)またはFALSE (2つ以上のGeoRasterオブジェクトが重複していない場合)を戻します。(地理参照の有無にかかわらず、2つのGeoRasterオブジェクトの重複を決定するために使用されるロジックについては、「使用上の注意」を参照してください。)

パラメータ

georaster1

GeoRasterオブジェクトを指定します。

georaster2

GeoRasterオブジェクトを指定します。

georArray

GeoRasterオブジェクトの配列を指定します。データ型はSDO_GEOR_ARRAYで、VARRAY(10485760) OF SDO_GEORASTERとして定義されます。

geor_cur

入力GeoRasterオブジェクトのカーソル(SYS_REFCURSOR型)を指定します。

tolerance

セル空間の2つのセルがモデル空間で重複しているかどうかを決定するために使用される許容差の値を指定します。値は、0から1の間である必要があり、単位はセルです。たとえば、0.5 (デフォルト)では、セルの半分、つまり、2つのセル間の距離が0.5セル以下の場合にそれらのセルが重複していることになります。

使用上の注意

重複で比較されるGeoRasterオブジェクトは、すべて地理参照されているか、すべて地理参照されていない必要があります。

2つのGeoRasterオブジェクトが重複しているかどうかを決定するため、次のロジックが適用されます。

1. 2つのGeoRasterオブジェクトの行または列の次元サイズが異なる場合、'FALSE'を戻します。それ以外の場合、次の手順に進みます。

2. 両方のGeoRasterオブジェクトが地理参照されているかどうかをチェックします。

a. 一方が地理参照され、他方が地理参照されていない場合、'FALSE'を戻します。

b. 両方とも地理参照されておらず、両方のGeoRasterオブジェクトのultCoordinateが同じである場合、'TRUE'を戻しますが、それ以外の場合、'FALSE'を戻します。

c. 両方とも地理参照されている場合、次の手順に進みます。

3. p、q、rおよびs多項式のpType、nVars、orderおよびnCoefficientsの値(「関数フィッティング地理参照モデル」を参照)をチェックします。いずれかが異なる場合、'FALSE'を戻しますが、それ以外の場合、次の手順に進みます。

4. セル空間からモデル空間に対して左上、右上、左下および右下の4つの点を計算します。2つのGeoRasterオブジェクトの対応する点の距離が許容差内である場合(セル空間からモデル空間への変換)、'TRUE'を戻しますが、それ以外の場合、'FALSE'を戻します。

GeoRasterのラスター代数ファンクションでは、異なるGeoRasterオブジェクトのラスター・レイヤーが同じサイズで、相互に完全に重複している必要があります。2つ以上のGeoRasterオブジェクトにラスター代数操作を適用するか、他の操作を実行する前に、SDO_GEOR_RA.isOverlapファンクションを使用して、GeoRasterオブジェクトが同じサイズであり、同じ土地を対象範囲としているかどうかを判別できます。

例

次の例では、2つのGeoRasterオブジェクトが重複しているかどうかをチェックします。(ここでは、2つの異なる構文のファンクションを使用しています。)

DECLARE
geor       MDSYS.SDO_GEORASTER;
geor1      MDSYS.SDO_GEORASTER;
BEGIN

SELECT georaster INTO geor FROM georaster_table WHERE georid = 1;
SELECT georaster INTO geor1 FROM georaster_table WHERE georid = 30;
dbms_output.put_line(sdo_geor_ra.isOverlap(geor,geor1,0.5));
END;
/

DECLARE
mycursor  sys_refcursor;
BEGIN
OPEN mycursor FOR
SELECT georaster FROM georaster_table WHERE georid = 1 or georid=30;
dbms_output.put_line(sdo_geor_ra.isOverlap(mycursor,0.5));
END;
/

9.4 SDO_GEOR_RA.rasterMathOp

構文

SDO_GEOR_RA.rasterMathOp(
inGeoRaster   IN SDO_GEORASTER,
operation     IN SDO_STRING2_ARRAY,
storageParam  IN VARCHAR2,
outGeoRaster  IN OUT SDO_GEORASTER,
nodata        IN VARCHAR2 DEFAULT 'FALSE',
nodataValue   IN NUMBER DEFAULT 0,
parallelParam IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR_RA.rasterMathOp(
georArray     IN SDO_GEORASTER_ARRAY,
operation     IN SDO_STRING2_ARRAY,
storageParam  IN VARCHAR2,
outGeoRaster  IN OUT SDO_GEORASTER,
nodata        IN VARCHAR2 DEFAULT 'FALSE',
nodataValue   IN NUMBER DEFAULT 0,
parallelParam IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR_RA.rasterMathOp(
inGeoRasters  IN SYS_REFCURSOR,
operation     IN SDO_STRING2_ARRAY,
storageParam  IN VARCHAR2,
outGeoRaster  IN OUT SDO_GEORASTER,
nodata        IN VARCHAR2 DEFAULT 'FALSE',
nodataValue   IN NUMBER DEFAULT 0,
parallelParam IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR_RA.rasterMathOp(
georaster0    IN SDO_GEORASTER,
georaster1    IN SDO_GEORASTER,
constant      IN NUMBER,
operator      IN PLS_INTEGER,
storageParam  IN VARCHAR2,
outGeoRaster  IN OUT SDO_GEORASTER,
bgValues      IN SDO_NUMBER_ARRAY DEFAULT NULL,
nodata        IN VARCHAR2 DEFAULT 'FALSE',
nodataValue   IN NUMBER DEFAULT 0,
parallelParam IN VARCHAR2 DEFAULT NULL);

説明

最初の3つの構文では、operationパラメータの指定に基づいて、1つ以上の入力GeoRasterオブジェクトのレイヤーから新しいGeoRasterオブジェクトを生成します。最後の構文では、1つまたは2つの入力GeoRasterオブジェクトの各レイヤーの対応するすべてのセルに対して数学的操作を適用します。

パラメータ

inGeoRaster

入力GeoRasterオブジェクトを指定します。

georArray

GeoRasterオブジェクトの配列を指定します。データ型はSDO_GEOR_ARRAYで、VARRAY(10485760) OF SDO_GEORASTERとして定義されます。配列のGeoRasterオブジェクトの最大数は8ですが、すべてのGeoRasterオブジェクトのレイヤーの合計数に対する制限はありません。

inGeoRasters

入力GeoRasterオブジェクトのカーソル(SYS_REFCURSOR型)を指定します。カーソルのGeoRasterオブジェクトの最大数は8ですが、すべてのGeoRasterオブジェクトのレイヤーの合計数に対する制限はありません。

georaster0

左側のオペランドを指定します。

georaster1

右側のオペランドを指定します。

operation

出力GeoRasterオブジェクトのラスター・セル値を計算するために使用されるarithmeticExpr式文字列の配列を指定します。配列の各要素は、出力GeoRasterオブジェクトのレイヤーに対応します。データ型はSDO_STRING2_ARRAYで、VARRAY(2147483647) OF VARCHAR2(4096)として定義されます。

arithmeticExpr式の構文については、「ラスター代数言語」を参照してください。

constant

addConstやdivConstantなどの一部の演算子(operatorパラメータを参照)の定数値を指定します。

operator

SDO_GEOR_RAパッケージに定義されている次の数学演算子のいずれかを指定します。

OPERATOR_ABSOLUTE
OPERATOR_ADD
OPERATOR_ADDCONST
OPERATOR_DIVIDE
OPERATOR_DIVIDECONST
OPERATOR_EXP
OPERATOR_INVERT
OPERATOR_LOG
OPERATOR_MULTIPLY
OPERATOR_MULTIPLYCONST
OPERATOR_SUBTRACT
OPERATOR_SUBTRACTCONST

これらの演算子の定義については、「使用上の注意」を参照してください。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

outGeoRaster

出力GeoRasterオブジェクトを指定します。

bgValues

入力GeoRasterオブジェクトの空のラスター・ブロックでセルの値を表す背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

nodata

文字列TRUEでは、入力GeoRasterオブジェクトの任意のNODATAセルで、出力GeoRasterオブジェクトの対応するセルがnodataValueパラメータで指定された値に設定されます。文字列FALSE (デフォルト)では、NODATA値を含むセルが通常のデータとみなされます。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

nodataValue

nodataパラメータ値が文字列TRUEである場合にNODATAセルを設定するために使用する値を指定します。

parallelParam

操作の並列度を指定します。指定する場合、parallel=nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)

parallelParamを指定すると、このプロシージャの結果をロールバックできません(「使用上の注意」を参照)。

使用上の注意

最初の3つの構文を使用して、operationパラメータに基づいて、1つ以上の入力GeoRasterオブジェクトのレイヤーから新しいGeoRasterオブジェクトを生成します。たとえば、次の例では、3つのレイヤーを持つ新しいGeoRasterオブジェクトを生成します(各レイヤーの値は、入力GeoRasterオブジェクトのセル値から10を引いた値になります)。

sdo_geor_ra.rasterMathOp(geor,SDO_STRING2_ARRAY('{0,0}-10','{0,1}-10','{0,2}-10'),null,geor1);

4番目の構文では、入力GeoRasterオブジェクトの各レイヤーの対応するすべてのセルに対して数学的操作を適用し、最初の入力GeoRasterオブジェクト(geoRaster0)と同じ次元サイズで新しいGeoRasterオブジェクトを生成します。2つの入力GeoRasterオブジェクトの行、列およびバンドの次元サイズは、同じである必要があります。

4番目の構文では、すべてのピラミッドが結果のGeoRasterオブジェクトで削除されますが、最初の入力GeoRasterオブジェクトのマスクは結果のGeoRasterオブジェクトで維持されます。

operatorパラメータでは、演算子は次の定義を持ちます。

OPERATOR_ABSOLUTE  :
if (src[x][y][b] < 0) {
dst[x][y][b] = -src[x][y][b];
} else {
dst[x][y][b] =  src[x][y][b];
}

OPERATOR_ADD
dst[x][y][b]=src1[x][y][b]+src2[x][y][b]
OPERATOR_ADDCONST
dst[x][y][b]=src[x][y][b] +constant   --constant is the third parameter

OPERATOR_DIVIDE
dst[x][y][b]=src1[x][y][b]/src2[x][y][b]

OPERATOR_DIVIDECONST
dst[x][y][b]=src[x][y][b]/constant   --constant is the third parameter

OPERATOR_EXP
dst[x][y][b]=exp(src[x][y][b])

OPERATOR_INVERT        :
Inverts the cell values: dst[x][y][b]=-src[x][y][b]

OPERATOR_LOG           :
dst[x][y][b]=log(src[x][y][b])

OPERATOR_MULTIPLY
dst[x][y][b]=src1[x][y][b]*src2[x][y][b]

OPERATOR_MULTIPLYCONST
dst[x][y][b]=src[x][y][b]*constant   --constant is the third parameter

OPERATOR_SUBTRACT
dst[x][y][b]=src1[x][y][b]-src2[x][y][b]

OPERATOR_SUBTRACTCONST
dst[x][y][b]=src[x][y][b]-constant   --constant is the third parameter

ラスター代数言語の詳細は、「ラスター代数言語」を参照してください。

parallelParamを指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。

例

次の例では、入力GeoRasterオブジェクトのすべてのセル値に定数10を追加します。

DECLARE
geor       SDO_GEORASTER;
geor1      SDO_GEORASTER;
BEGIN

select georaster into geor from georaster_table where georid = 1;
insert into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1;
sdo_geor_ra.rasterMathOp(geor,null,10,sdo_geor_ra.OPERATOR_ADDCONST,null,geor1);
update georaster_table set georaster = geor1 where georid = 5;
commit;
END;
/

次の例では、入力GeoRasterオブジェクトの3つのレイヤーから新しい3レイヤーのGeoRasterオブジェクトを生成します(新しいGeoRasterオブジェクトの各セル値は、対応する古いセル値を2で割った値になります)。

DECLARE
geor       SDO_GEORASTER;
geor1      SDO_GEORASTER;
geo_array  SDO_GEORASTER_ARRAY;
BEGIN
select georaster into geor from georaster_table where georid = 2;
insert into georaster_table values (20, sdo_geor.init('rdt_1', 20)) returning georaster into geor1;
geo_array:=SDO_GEORASTER_ARRAY(geor);
sdo_geor_ra.rasterMathOp(geo_array,SDO_STRING2_ARRAY('{0,0}/2','{0,1}/2','{0,2}/2'),null,geor1);
update georaster_table set georaster = geor1 where georid = 20;
commit;
END;
/

9.5 SDO_GEOR_RA.rasterUpdate

構文

SDO_GEOR_RA.rasterUpdate(
geoRaster     IN OUT SDO_GEORASTER,
pyramidLevel  IN NUMBER,
conditions    IN SDO_STRING2_ARRAY,
vals          IN SDO_STRING2_ARRAYSET,
bgValues      IN SDO_NUMBER_ARRAY DEFAULT NULL,
nodata        IN VARCHAR2 DEFAULT 'FALSE',
parallelParam IN VARCHAR2 DEFAULT NULL);

説明

valsの指定から計算された値を使用して、conditionsの指定がTRUEのすべてのセルを更新します。

パラメータ

geoRaster

入力および出力で使用されるGeoRasterオブジェクトを指定します(更新は指定した条件に基づきます)。

pyramidLevel

更新するピラミッド・レベルを指定します。このパラメータがNULLの場合、すべてのピラミッド・レベルが更新されます。

conditions

セルを選択するために使用するbooleanExpr式文字列の配列を指定します。(詳細は、「使用上の注意」を参照してください。)データ型はSDO_STRING2_ARRAYで、VARRAY(2147483647) OF VARCHAR2(4096)として定義されます。

vals

各条件に対応する外部配列と各レイヤーに対応する内部配列を持つarithmeticExpr式の1つ以上の配列を指定します。データ型はSDO_STRING2_ARRAYSETで、VARRAY(2147483647) OF SDO_STRING2_ARRAYとして定義されます。

bgValues

入力GeoRasterオブジェクトの空のラスター・ブロックでセルの値を表す背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

nodata

文字列TRUEでは、GeoRasterオブジェクトのNODATAセルを更新しないように指定します。文字列FALSE (デフォルト)では、NODATA値を含むセルが通常のセルとみなされるため、更新対象になります。NODATA値およびその値の範囲については、「NODATA値および値の範囲」を参照してください。

parallelParam

操作の並列度を指定します。指定する場合、parallel=nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)

parallelParamを指定すると、このプロシージャの結果をロールバックできません(「使用上の注意」を参照)。

使用上の注意

このプロシージャは、入力されたGeoRasterオブジェクトのデータを上書きするため、元のGeoRasterオブジェクトをコピーし、そのコピーしたオブジェクトに対してこのプロシージャを使用してください。このプロシージャの結果を確認してから、必要に応じて元のGeoRasterオブジェクトを廃棄します。

このプロシージャでは、conditionsパラメータに指定されたbooleanExpr文字列に基づいて、指定されたGeoRasterオブジェクトからセルを選択し、valsパラメータに指定されたarithmeticExpr式文字列を計算して対応するセル値を更新します。たとえば、次の場合を検討します。

conditions = SDO_STRING2_ARRAY('{0}=48','{0}=108')
vals = SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('123','54','89'),SDO_STRING2_ARRAY('98','56','123'))

この場合、次のようになります。

- 1番目のレイヤーの値が48に等しいすべてのセルで、その1番目、2番目、3番目のレイヤーの値がそれぞれ123、54、89に設定されます。

- 1番目のレイヤーの値が108に等しいすべてのセルで、その1番目、2番目、3番目のレイヤーの値がそれぞれ98、56、123に設定されます。

詳細は、「ラスター代数言語」を参照してください。

parallelParamを指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。

例

次の例では、valsの指定から計算された値を使用して、conditionsの指定がTRUEのすべてのセルを更新します。

DECLARE
geor SDO_GEORASTER;
BEGIN
select georaster into geor from georaster_table where georid = 1;
sdo_geor_ra.rasterUpdate(geor,0,SDO_STRING2_ARRAY('(abs({0}-{1})=48)&({2}-{1}=-101)','2*{0}-{1}/3=108'),SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('123','54','89'),SDO_STRING2_ARRAY('98','56','123')));
END;
/

10 SDO_GEOR_UTLパッケージのリファレンス

SDO_GEOR_UTLパッケージには、GeoRasterに関連するユーティリティ操作を行うためのサブプログラム(ファンクションおよびプロシージャ)が含まれています。この章では、そのサブプログラムのリファレンス情報を、例を使用して説明します。

10.1 SDO_GEOR_UTL.calcOptimizedBlockSize

構文

SDO_GEOR_UTL.calcOptimizedBlockSize(
dimensionSize IN SDO_NUMBER_ARRAY,
blockSize     IN OUT SDO_NUMBER_ARRAY,
pyramidLevel  IN number default 0);

説明

GeoRaster次元サイズおよびユーザー指定のブロック・サイズ値に基づいて、最適なblockSize値を計算および設定することで、使用するGeoRasterオブジェクト記憶域の埋込みスペースが少なくなります。

パラメータ

dimensionSize

GeoRasterオブジェクトの次元サイズ配列。

blockSize

ブロック・サイズ配列。この配列には、ユーザー指定のブロック・サイズ値が格納され、プロシージャが調整された最適なブロック・サイズ値を出力します。

pyramidLevel

最大ピラミッド・レベル。デフォルト値は0(ゼロ)です。

使用上の注意

このプロシージャでは、適切なブロック・サイズ値(最適ではない場合があります)を提供して自動的にそれらを調整し、GeoRasterオブジェクト記憶域の埋込みスペースの容量を削減するために最も適した特定のGeoRaster次元サイズ配列のブロック・サイズ配列値を決定します。調整は、常にユーザー指定の値を基準に行われます。詳細は、「記憶域パラメータ」の表1-1に示されているblockingおよびblockSizeキーワードの説明を参照してください。

dimensionSizeおよびblockSizeパラメータ値に、次元の値を行、列、バンドの順で指定します。

入力されたdimensionSizeパラメータまたはblockSizeパラメータに無効な値が含まれている場合、例外が発生します。

例

次の例では、指定した次元サイズ配列の(12371,11261,13)および指定したブロック・サイズ配列の(512,512,5)に基づいて、最適なブロック・サイズ値を計算して表示します。戻された最適なrowBlockSize値は、元の値の512ではなく538であり、戻された最適なbandBlockSize値は、元の値の5ではなく1であることに注意してください。

DECLARE
dimensionSize    sdo_number_array;
blockSize        sdo_number_array;
BEGIN
dimensionSize:=sdo_number_array(12371,11261,13);
blockSize:=sdo_number_array(512,512,5);
sdo_geor_utl.calcOptimizedBlockSize(dimensionSize,blockSize);
dbms_output.put_line('Optimized rowBlockSize = '||blockSize(1));
dbms_output.put_line('Optimized colBlockSize = '||blockSize(2));
dbms_output.put_line('Optimized bandBlockSize = '||blockSize(3));
END;
/
Optimized rowBlockSize = 538
Optimized colBlockSize = 512
Optimized bandBlockSize = 1

10.2 SDO_GEOR_UTL.calcRasterNominalSize

構文

SDO_GEOR_UTL.calcRasterNominalSize(
geor        IN SDO_GEORASTER,
padding     IN VARCHAR2 DEFAULT 'TRUE',
pyramid     IN VARCHAR2 DEFAULT 'TRUE',
bitmapMask  IN VARCHAR2 DEFAULT 'TRUE'
) RETURN NUMBER;

説明

GeoRasterオブジェクトが圧縮されておらず空のラスター・ブロックが含まれていないものとして、GeoRasterオブジェクトのラスター・ブロックの合計長(バイト単位)を戻します。

パラメータ

geor

GeoRasterオブジェクトを指定します。

padding

文字列TRUE (デフォルト)を指定すると、ラスター・ブロック内の埋込みが考慮されます。文字列FALSEを指定すると、ラスター・ブロック内の埋込みは考慮されません。

pyramid

文字列TRUE (デフォルト)を指定すると、ピラミッドのサイズが考慮されます。文字列FALSEを指定すると、ピラミッドのサイズは考慮されません。

bitmapMask

文字列TRUE(デフォルト)を指定すると、関連付けられたビットマップ・マスクが考慮されます。文字列FALSEを指定すると、関連付けられたビットマップ・マスクは考慮されません。ビットマップ・マスクの詳細は、「ビットマップ・マスク」を参照してください。

使用上の注意

このファンクションでは、LOB記憶域のオーバーヘッドが考慮されないため、結果はGeoRasterオブジェクトに実際に必要な記憶域の近似値となります。

このファンクションの結果は、同じGeoRasterオブジェクトでのSDO_GEOR_UTL.calcRasterStorageSizeファンクションの結果と同じか、またはそれ以上の値になります。このファンクションによって、同じGeoRasterオブジェクトのSDO_GEOR_UTL.calcRasterStorageSizeファンクションより大きな値が戻された場合、これらの値の差は、圧縮または空のラスター・ブロック、あるいはその両方を使用することによって節約された領域を反映しています。

GeoRasterの圧縮の詳細は、「圧縮と解凍」を参照してください。

例

次の例では、現行のブロック化方法に基づいて、GeoRasterオブジェクトの名目上のラスター・サイズ(バイト単位)を計算します。戻されるサイズには、(デフォルトで)ラスター・ブロック内の埋込み、関連付けられたビットマップ・マスクおよびピラミッドが含まれています。

SELECT SDO_GEOR_UTL.calcRasterNominalSize(georaster) nsize FROM georaster_table
WHERE georid=1;

NSIZE
----------
289150

10.3 SDO_GEOR_UTL.calcRasterStorageSize

構文

SDO_GEOR_UTL.calcRasterStorageSize(
geor  IN SDO_GEORASTER
) RETURN NUMBER;

説明

GeoRasterオブジェクトのすべてのラスター・ブロックの実際の長さ(バイト単位)を戻します。

パラメータ

geor

GeoRasterオブジェクトを指定します。

使用上の注意

このファンクションは、GeoRasterオブジェクトのすべてのラスター・ブロックの実際の長さを計算します。このファンクションでは、LOB記憶域のオーバーヘッドが考慮されないため、結果はGeoRasterオブジェクトの実際の記憶域サイズの近似値となります。基本的に、このファンクションは次の文を実行します。

EXECUTE IMMEDIATE
'SELECT SUM(DBMS_LOB.getLength(rasterBlock)) FROM ' || geor.rasterDataTable || ' WHERE rasterId=' || geor.rasterId;

このファンクションの結果は、同じGeoRasterオブジェクトのSDO_GEOR_UTL.calcRasterNominalSizeファンクションの結果と同じか、またはそれ以下の値になります。このファンクションによって、同じGeoRasterオブジェクトのSDO_GEOR_UTL.calcRasterNominalSizeファンクションより小さな値が戻された場合、これらの値の差は、圧縮または空のラスター・ブロック、あるいはその両方を使用することによって節約された領域を反映します。

例

次の例では、指定したGeoRasterオブジェクトの実際のサイズと名目上のサイズの比率を(小数として)計算します。この例では、実際のサイズは名目上のサイズの約20分の1 (1/20)です。

SELECT SDO_GEOR_UTL.calcRasterStorageSize(georaster)/
SDO_GEOR_UTL.calcRasterNominalSize(georaster) ratio
FROM georaster_table WHERE georid=1;

RATIO
----------
.056198816

10.4 SDO_GEOR_UTL.clearReportTable

構文

SDO_GEOR_UTL.clearReportTable(
client_id  IN NUMBER DEFAULT NULL);

説明

GeoRaster操作のステータス情報を格納する表のレコードを削除します。

パラメータ

client_id

削除するレコードを含むクライアントのIDを指定します。このパラメータを指定しない場合、表のすべてのレコードが削除されます。

(クライアントIDは、SDO_GEOR_UTL.setClientIDプロシージャを使用して設定できます。)

使用上の注意

このプロシージャは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、レポート表のすべてのレコードを削除します。

EXECUTE SDO_GEOR_UTL.clearReportTable;

10.5 SDO_GEOR_UTL.createDMLTrigger

構文

SDO_GEOR_UTL.createDMLTrigger(
tableName   VARCHAR2,
columnName  VARCHAR2);

説明

GeoRaster表のGeoRaster列に、必要な標準のGeoRasterデータ操作言語(DML)トリガーを作成します。これによって、そのDMLに関連付けられたトリガーが起動された際に、適切な操作が実行されます。

パラメータ

tableName

GeoRaster表(GeoRasterオブジェクト列が1列以上存在する行が含まれる表)の名前を指定します。

columnName

GeoRaster表内のSDO_GEORASTER型の列の名前を指定します。

使用上の注意

注意:

より便利なかわりの方法は、SDO_GEOR_UTL.recreateDMLTriggersプロシージャを使用することで、このプロシージャを1回コールすると、現在のユーザーがアクセス権を持っているすべてのGeoRaster列にDMLトリガーが再作成または作成されます。

「GeoRaster DMLトリガー」に示すとおり、GeoRasterの内部表とデータ構造の一貫性および整合性を保証するために、ユーザーがGeoRaster表(1つ以上のGeoRaster列を含む表)を作成すると、各GeoRaster列に対応する一意のDMLトリガーがGeoRasterにより自動的に作成されます。この場合、SDO_GEOR_UTL.createDMLTriggerプロシージャをコールして、追加した各GeoRaster列に対してDMLトリガーを作成する必要があります。

それ以外の場合、通常はこのプロシージャをコールする必要はありませんが、データベース・アップグレードやデータ移行などの一部の使用例では、DMLトリガーを再作成する場合に役立ちます。

例

次の例では、GEOR_COLという名前のGeoRaster列を含むXYZ_GEOR_TABという名前の表に、標準のGeoRaster DMLトリガーを作成します。

EXECUTE sdo_geor_utl.createDMLTrigger('XYZ_GEOR_TAB', 'GEOR_COL');

10.6 SDO_GEOR_UTL.createReportTable

構文

SDO_GEOR_UTL.createReportTable;

説明

GeoRaster操作のステータス情報を格納する表を作成します。

パラメータ

なし。

使用上の注意

このプロシージャは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、GeoRaster操作のステータス情報を格納する表を作成します。

EXECUTE SDO_GEOR_UTL.createReportTable;

10.7 SDO_GEOR_UTL.disableReport

構文

SDO_GEOR_UTL.disableReport;

説明

現在のセッションでGeoRaster操作のステータス・レポートを無効にします。

パラメータ

なし。

使用上の注意

このプロシージャは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、現在のセッションでGeoRaster操作のステータス・レポートを無効にします。

EXECUTE SDO_GEOR_UTL.disableReport;

10.8 SDO_GEOR_UTL.dropReportTable

構文

SDO_GEOR_UTL.dropReportTable;

説明

GeoRaster操作のステータス情報を格納する表を削除します。

パラメータ

なし。

使用上の注意

このプロシージャは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、GeoRaster操作のステータス情報を格納する表を削除します。

EXECUTE SDO_GEOR_UTL.dropReportTable;

10.9 SDO_GEOR_UTL.emptyBlocks

構文

SDO_GEOR_UTL.emptyBlocks(
georaster IN OUT SDO_GEORASTER,
bgValues  IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

指定した背景値のみを含むすべてのブロックを空のLOBに切り捨てて、それらを空のブロックにします。GeoRaster記憶域に必要とされるディスク領域を削減するために使用できます。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

bgValues

ブロックを空のラスター・ブロックにするかどうかを決定する背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのレイヤーに同じ入力値を使用)またはレイヤー次元のサイズ(各レイヤーにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のレイヤーに1を、2番目のレイヤーに5を、3番目のレイヤーに10を含むブロックが空のブロックになります。このパラメータがNULLの場合、bgValuesがデフォルト値になります(単一要素のSDO_NUMBER_ARRAY(0))。

使用上の注意

georasterがNULLの場合、このプロシージャは処理を実行しません。

このプロシージャは、指定した背景値を使用してすべての空のブロックに入力するSDO_GEOR_UTL.fillEmptyBlocksとは対照的です。

例

次の例では、セル値が背景値(255,0,0)であるブロックを空にします。

DECLARE
geor  SDO_GEORASTER;
BEGIN
SELECT georaster INTO geor FROM georaster_table WHERE georid = 3 FOR UPDATE;
SDO_GEOR_UTL.emptyBlocks(geor, SDO_NUMBER_ARRAY(255,0,0));
UPDATE georaster_table SET georaster = geor WHERE georid = 3;
COMMIT;
END;
/

10.10 SDO_GEOR_UTL.enableReport

構文

SDO_GEOR_UTL.enableReport;

説明

現在のセッションでGeoRaster操作のステータス・レポートを有効にします。

パラメータ

なし。

使用上の注意

このプロシージャは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、現在のセッションでGeoRaster操作のステータス・レポートを有効にします。

EXECUTE SDO_GEOR_UTL.enableReport;

10.11 SDO_GEOR_UTL.fillEmptyBlocks

構文

SDO_GEOR_UTL.fillEmptyBlocks(
georaster IN OUT SDO_GEORASTER,
bgValues  IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

すべての空のブロックに、指定した背景値を入力します。

パラメータ

georaster

空のブロックに埋め込むGeoRasterオブジェクトを指定します。

bgValues

空のラスター・ブロックに入力する背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。このパラメータがNULLの場合、bgValuesは0(ゼロ)になります。

使用上の注意

georasterがNULLの場合、このプロシージャは処理を実行しません。

georasterにピラミッド・データが存在する場合、メタデータに格納されているピラミッド情報に基づいて、ピラミッドが再生成されます。

このプロシージャは、指定した背景値を持つブロックを空のブロックに変更するSDO_GEOR_UTL.emptyBlocksとは対照的です。

例

次の例では、背景値(255,0,0)を持つブロックを空にします。

DECLARE
geor  SDO_GEORASTER;
BEGIN
SELECT georaster INTO geor FROM georaster_table WHERE georid = 3 FOR UPDATE;
SDO_GEOR_UTL.emptyBlocks(geor, SDO_NUMBER_ARRAY(255,0,0));
UPDATE georaster_table SET georaster = geor WHERE georid = 3;
COMMIT;
END;
/

10.12 SDO_GEOR_UTL.getAllStatusReport

構文

SDO_GEOR_UTL.getAllStatusReport() RETURN SDO_STRING2_ARRAYSET;

説明

ステータス表に含まれるすべてのクライアントのすべての操作に対応する現在のステータスを戻します。

パラメータ

なし。

使用上の注意

このファンクションは、ステータス情報のカンマ区切りリストを含む配列(<client_id>, <sequence_id>, <timestamp>, <operation name>, <RDT table name>, <Raster ID>, <progress>, <description>)を戻します。データ型はSDO_STRING2_ARRAYSETで、VARRAY(2147483647) OF SDO_STRING2_ARRAYとして定義されます。

ステータス表が作成されていない場合、ファンクションは'The report table does not exist'を戻します。

このファンクションは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、すべてのクライアントのすべての操作に対応する現在のステータスを戻します。2つのSDO_STRING2_ARRAYオブジェクトが戻されます。

SELECT * from the (SELECT SDO_GEOR_UTL.getAllStatusReport FROM DUAL);

COLUMN_VALUE
-------------------------------------------------------------------------------
SDO_STRING2_ARRAY('Client:23', 'Sequence:1', '24-SEP-12 11.10.42.030169 AM', 'Mosaic', 'RDT:LANDSAT_MOSAIC_RDT', 'RID:1', '100% complete', NULL)
SDO_STRING2_ARRAY('Client:1', 'Sequence:0', '24-SEP-12 11.10.42.379631 AM', 'GeneratePyramid', 'RDT:LANDSAT_MOSAIC_RDT', 'RID:1', '100% complete', 'operation completed')

2 rows selected.

次の例でも、すべてのクライアントのすべての操作に対応する現在のステータスを戻します。この場合、前述の例とは異なるSELECT文の形式を使用して、2つのSDO_STRING2_ARRAYオブジェクトを含む1つのSDO_STRING2_ARRAYSETオブジェクトを戻します。

set linesize 80
SELECT SDO_GEOR_UTL.getAllStatusReport FROM DUAL;

SDO_GEOR_UTL.GETALLSTATUSREPORT()
--------------------------------------------------------------------------------
SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('Client:27', 'Sequence:1', '26-SEP-12 11.
31.03.473087 AM', 'Mosaic', 'RDT:LANDSAT_MOSAIC_RDT', 'RID:1', '100% complete',
NULL), SDO_STRING2_ARRAY('Client:-1', 'Sequence:0', '26-SEP-12 11.31.03.962948 A
M', 'GeneratePyramid', 'RDT:LANDSAT_MOSAIC_RDT', 'RID:1', '100% complete', 'oper
ation completed'))

1 row selected.

10.13 SDO_GEOR_UTL.getProgress

構文

SDO_GEOR_UTL.getProgress(
client_id IN NUMBER,
seq_id    IN NUMBER DEFAULT 0
) RETURN NUMBER;

説明

指定したクライアント(セッション)の操作および指定した操作(オプション)の進行状況を戻します。戻される値は、完了の割合を示す0から1の間の浮動小数点数です。

パラメータ

client_id

セッションを識別する一意の数値を指定します。

seq_id

ステータス情報を戻す操作を識別する(指定したセッション内の)一意の数値を指定します。

使用上の注意

このファンクションは、client_idおよびseq_idで識別される操作の最新の推定進行状況に相当する数値を戻します。必ず適切なclient_id値とseq_id値を使用してください。

ステータス表に特定のclient_idおよびseq_idを持つ指定した操作のレコードが存在しない場合、NULLが戻されます。

ステータス表が作成されていない場合、ファンクションは'The report table does not exist'を戻します。

このファンクションは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、クライアントIDが5で、操作順序IDが3の操作の進行状況を戻します。

SELECT sdo_geor_utl.getgetProgress(5, 3) progress FROM dual;

PROGRESS
--------
.305

10.14 SDO_GEOR_UTL.getStatusReport

構文

SDO_GEOR_UTL.getStatusReport(
client_id IN NUMBER,
seq_id    IN NUMBER DEFAULT 0
) RETURN SDO_STRING2_ARRAY;

説明

指定したクライアント(セッション)のステータス表に含まれる操作および指定した操作(オプション)の現在のステータスを戻します。

パラメータ

client_id

セッションを識別する一意の数値を指定します。

seq_id

ステータス情報を戻す操作を識別する(指定したセッション内の)一意の数値を指定します。

使用上の注意

このファンクションは、指定したセッション(client_id)の現在のステータスを、ステータス情報のカンマ区切りリストの配列(<client_id>, <sequence_id>, <timestamp>, <operation name>, <RDT table name>, <Raster ID>, <progress>, <description>)で戻します。データ型はSDO_STRING2_ARRAYで、VARRAY(2147483647) OF VARCHAR2(4096)として定義されます。

ステータス表が作成されていない場合、ファンクションは'The report table does not exist'を戻します。

このファンクションは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、クライアントIDが5で、操作順序IDが3の操作のステータスを戻します。

SELECT sdo_geor_utl.getStatusReport(5, 3) FROM dual;

SDO_GEOR_UTL.GETSTATUSREPORT(5,3)
--------------------------------------------------------------------------------
SDO_STRING2_ARRAY('24-SEP-12 11.10.43.477804 AM', 'Mosaic', 'RDT:LANDSAT_MOSAIC_
RDT', 'RID:2', '100% complete', 'operation completed')

10.15 SDO_GEOR_UTL.isReporting

構文

SDO_GEOR_UTL.isReporting() RETURN NUMBER;

説明

いずれかのセッションのステータス・レポートが有効になっているかどうかをチェックします。

パラメータ

なし。

使用上の注意

このファンクションは、1つ以上のセッションのステータス・レポートが有効になっている場合は1を、どのセッションもステータス・レポートが有効になっていない場合は0を戻します。

このプロシージャは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、いずれかのセッションのステータス・レポートが有効になっているかどうかをチェックします。

SELECT SDO_GEOR_UTL.isReporting FROM DUAL;

ISREPORTING
-----------
1

10.16 SDO_GEOR_UTL.makeRDTNamesUnique

構文

SDO_GEOR_UTL.makeRDTNamesUnique;

説明

名前が一意でない既存の登録済ラスター・データ表の名前を変更し、データベース内ですべてのラスター・データ表の名前が一意になるようにし、新しい名前が反映されるよう、GeoRasterシステム・データおよび影響を受けるGeoRasterのすべてのオブジェクトを更新します。

パラメータ

なし。

使用上の注意

1つ以上の登録済ラスター・データ表に(異なるスキーマで)同じ名前が定義されている場合は、このプロシージャか、SDO_GEOR_UTL.renameRDTプロシージャ、または両方を使用して重複を解消できます。

DBAロールでデータベースに接続する際に、このプロシージャを実行します。

このプロシージャはトランザクションではないため、結果はロールバックできません。

例

次の例では、名前が一意でない既存の登録済ラスター・データ表の名前を自動的に変更し、データベース内ですべての登録済ラスター・データ表の名前が一意になるようにし、新しい名前が反映されるよう、GeoRasterシステム・データおよび影響を受けるGeoRasterのすべてのオブジェクトを更新します。

EXECUTE sdo_geor_utl.makeRDTNamesUnique;

10.17 SDO_GEOR_UTL.recreateDMLTriggers

構文

SDO_GEOR_UTL.recreateDMLTriggers;

説明

現在のユーザーがアクセス権を持っているすべてのGeoRaster列に対して、必要な標準のGeoRasterデータ操作言語(DML)トリガーを再作成し、トリガーの起動時に適切な操作が実行されるようにします。

パラメータ

(なし)

使用上の注意

「GeoRaster DMLトリガー」に示すとおり、GeoRasterの内部表とデータ構造の一貫性および整合性を保証するために、ユーザーがGeoRaster表(1つ以上のGeoRaster列を含む表)を作成すると、各GeoRaster列に対応する一意のDMLトリガーがGeoRasterにより自動的に作成されます。この場合、これらの追加されたGeoRaster列に対してSDO_GEOR_UTL.createDMLTriggerプロシージャをコールするか、SDO_GEOR_UTL.recreateDMLTriggersプロシージャをコールしてすべてのGeoRaster列に対してDMLトリガーを再作成できます。

通常はこのプロシージャをコールする必要はありませんが、データベース・アップグレードやデータ移行などの一部の使用例では、DMLトリガーを再作成する場合に役立ちます。

例

次の例では、標準のGeoRaster DMLトリガーを再作成します。

EXECUTE sdo_geor_utl.recreateDMLTriggers;

10.18 SDO_GEOR_UTL.renameRDT

構文

SDO_GEOR_UTL.renameRDT(
oldRDTs  VARCHAR2,
newRDTs  VARCHAR2 DEFAULT NULL);

説明

現行ユーザーが所有する1つ以上の既存の登録済ラスター・データ表の名前を変更し、その新しい名前が反映されるように、GeoRasterシステム・データおよび影響を受けるGeoRasterのすべてのオブジェクトを更新します。

パラメータ

oldRDTs

名前を変更する登録済ラスター・データ表の名前を指定します。複数の表を指定する場合は、カンマ区切りリストを使用します。

newRDTs

oldRDTsで指定されたラスター・データ表に割り当てる新しい名前を指定します。複数の表を指定する場合は、カンマ区切りリストを使用します。指定する順序は、oldRDTsで指定した名前と正確に対応するようにします。このパラメータにNULLを指定すると、GeoRasterは入力されたそれぞれのラスター・データ表に対して新しい一意の名前を割り当てます。

使用上の注意

別のユーザーが所有する1つ以上の登録済ラスター・データ表に同じ名前が定義されている場合は、このプロシージャか、SDO_GEOR_UTL.makeRDTNamesUniqueプロシージャ、または両方を使用して重複を解消できます。

このプロシージャを使用する前に、ラスター・データ表の所有者としてデータベースに接続する必要があります。このプロシージャでは、他のユーザーが所有しているラスター・データ表の名前を変更することはできません。

oldRDTsのいずれの表もGeoRasterシステム・データに含まれていない場合、その表は無視されます。

newRDTsのいずれかの表がGeoRasterシステム・データの名前と競合する場合、または現行ユーザーが所有している他のオブジェクトの名前と競合する場合は、例外が発生します。

このプロシージャはトランザクションではないため、結果はロールバックできません。

例

次の例では、登録済ラスター・データ表RDT_1およびRDT_2の名前を、それぞれST_RDT_1およびST_RDT_2に変更します。

EXECUTE sdo_geor_utl.renameRDT('RDT_1,RDT_2','ST_RDT_1,ST_RDT_2');

10.19 SDO_GEOR_UTL.setClientID

構文

SDO_GEOR_UTL.setClientID(
client_id  IN NUMBER);

説明

セッションのクライアントIDを設定します。

パラメータ

client_id

セッションを識別する一意のID値を指定します。

使用上の注意

このプロシージャを使用して、同じユーザーによる異なるセッションを識別できます。クライアントIDには、データベース・セッションIDか、中間層環境のクライアントIDを指定できます。

このプロシージャがコールされない場合、ステータス・レポートのクライアントIDは、デフォルトでデータベース・セッションIDに設定されます。

このプロシージャは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、クライアントIDを1に設定します。

EXECUTE SDO_GEOR_UTL.setClientID(1);

10.20 SDO_GEOR_UTL.setSeqID

構文

SDO_GEOR_UTL.setSeqID(
seq_id  IN NUMBER);

説明

セッションの順序IDを設定します。

パラメータ

seq_id

セッションの操作を識別する一意のID値を指定します。

使用上の注意

このプロシージャを使用して、同じセッションの異なる操作を識別できます。

このプロシージャがコールされない場合、ステータス・レポートの順序IDは、デフォルトで0に設定されます。

このプロシージャは、GeoRaster操作の進行状況の監視およびレポートに使用できるサブプログラムの1つです。この機能の概要については、「GeoRasterでの操作の進行状況のレポート」を参照してください。

例

次の例では、順序IDを1に設定します。

EXECUTE SDO_GEOR_UTL.setSeqID(1);

A GeoRaster メタデータのXMLスキーマ

この付録では、GeoRasterメタデータのXMLスキーマの定義を示します。GeoRasterメタデータのXMLスキーマの定義は次のとおりです。(この定義は、SDO_GEOR_XMLSCHEMA_TABLE表を問い合せても参照できます。「GeoRasterのXMLスキーマ」を参照してください。)

<?xml version="1.0" encoding="UTF-8"?>
<!-- Oracle GeoRaster Metadata Schema -->
<xsd:schema targetNamespace="http://xmlns.oracle.com/spatial/georaster" xmlns="http://xmlns.oracle.com/spatial/georaster" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="0.0">
<xsd:annotation>
<xsd:documentation>====================================================
This is the XML Schema defining the metadata of Oracle GeoRaster object type
It consists of two parts: data type definitions and its element content
Part 1: Data Types
Part 1.1: Data Types for Object Info
Part 1.2: Data Types for Raster Info
Part 1.3: Data Types for Spatial-Temporal-Band Reference Systems
Part 1.3.1: Data Types for Raster Spatial Reference Systems
Part 1.3.2: Data Types for Raster Temporal Reference Systems
Part 1.3.3: Data Types for Raster Band Reference Systems
Part 1.4: Data Types for Layer Metadata
Part 2: GeoRaster Metadata Elements or Content Structure
=============================================================
</xsd:documentation>
</xsd:annotation>
<xsd:annotation>
<xsd:documentation> ===============================================
Part 1:      Data Types
================================================
</xsd:documentation>
</xsd:annotation>
<xsd:annotation>
<xsd:documentation> ==============================
Part 1.1: Data Types for Object Info
=============================
</xsd:documentation>
</xsd:annotation>
<xsd:complexType name="objectDescriptionType">
<xsd:sequence>
<xsd:element name="rasterType" type="xsd:integer"/>
<xsd:element name="ID" type="xsd:string" minOccurs="0"/>
<xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="majorVersion" type="xsd:string" minOccurs="0"/>
<xsd:element name="minorVersion" type="xsd:string" minOccurs="0"/>
<xsd:element name="isBlank" type="xsd:boolean" default="false"/>
<xsd:element name="blankCellValue" type="xsd:double" minOccurs="0"/>
<xsd:element name="defaultRed" type="xsd:positiveInteger" minOccurs="0"/>
<xsd:element name="defaultGreen" type="xsd:positiveInteger" minOccurs="0"/>

<xsd:element name="defaultBlue" type="xsd:positiveInteger" minOccurs="0"/>

<xsd:element name="defaultAlpha" type="xsd:integer" minOccurs="0"/>

<xsd:element name="defaultPyramidLevel" type="xsd:positiveInteger" minOccurs="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:annotation>
<xsd:documentation> ==============================
Part 1.2: Data Types for Raster Info
==============================
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType name="cellRepresentationType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="POINT"/>
<xsd:enumeration value="SEGMENT"/>
<xsd:enumeration value="TRIANGLE"/>
<xsd:enumeration value="SQUARE"/>
<xsd:enumeration value="RECTANGLE"/>
<xsd:enumeration value="CUBE"/>
<xsd:enumeration value="TETRAHEDRON"/>
<xsd:enumeration value="HEXAHEDRON"/>
<xsd:enumeration value="UNDEFINED"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="cellDepthType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="1BIT"/>
<xsd:enumeration value="2BIT"/>
<xsd:enumeration value="4BIT"/>
<xsd:enumeration value="8BIT_U"/>
<xsd:enumeration value="8BIT_S"/>
<xsd:enumeration value="16BIT_U"/>
<xsd:enumeration value="16BIT_S"/>
<xsd:enumeration value="32BIT_U"/>
<xsd:enumeration value="32BIT_S"/>
<xsd:enumeration value="32BIT_REAL"/>
<xsd:enumeration value="64BIT_REAL"/>
<xsd:enumeration value="64BIT_COMPLEX"/>
<xsd:enumeration value="128BIT_COMPLEX"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="supportedDimensionNumber">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="2"/>
<xsd:maxInclusive value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="cellDimensionType">
<xsd:annotation>
<xsd:documentation>
The "Band" dimension can be treated as any other semantic dimension
or any "Layer" if not remote sensing imagery or photographs
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ROW"/>
<xsd:enumeration value="COLUMN"/>
<xsd:enumeration value="VERTICAL"/>
<xsd:enumeration value="BAND"/>
<xsd:enumeration value="TEMPORAL"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="cellDimensionSizeType">
<xsd:sequence>
<xsd:element name="size" type="xsd:positiveInteger" default="1"/>
</xsd:sequence>
<xsd:attribute name="type" type="cellDimensionType" use="required"/>
</xsd:complexType>
<xsd:complexType name="cellCoordinateType">
<xsd:sequence>
<xsd:element name="row" type="xsd:integer" default="0"/>
<xsd:element name="column" type="xsd:integer" default="0"/>
<xsd:element name="vertical" type="xsd:integer" minOccurs="0"/>
<xsd:element name="band" type="xsd:integer" minOccurs="0"/>
<xsd:element name="temporal" type="xsd:integer" minOccurs="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="compressionType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="NONE"/>
<xsd:enumeration value="JPEG-F"/>
<xsd:enumeration value="DEFLATE"/>
<xsd:enumeration value="LT-MG2"/>
<xsd:enumeration value="LT-MG3"/>
<xsd:enumeration value="LT-JP2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="compressionQuality">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="compressionDescriptionType">
<xsd:sequence>
<xsd:element name="type" type="compressionType" default="NONE"/>
<xsd:element name="quality" type="compressionQuality" minOccurs="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="blockingType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="NONE"/>
<xsd:enumeration value="REGULAR"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="blockingDescriptionType">
<xsd:sequence>
<xsd:element name="type" type="blockingType" default="NONE"/>
<xsd:element name="totalRowBlocks" type="xsd:positiveInteger" default="1"/>
<xsd:element name="totalColumnBlocks" type="xsd:positiveInteger" default="1"/>
<xsd:element name="totalBandBlocks" type="xsd:positiveInteger" default="1" minOccurs="0"/>
<xsd:element name="rowBlockSize" type="xsd:positiveInteger"/>
<xsd:element name="columnBlockSize" type="xsd:positiveInteger"/>
<xsd:element name="bandBlockSize" type="xsd:positiveInteger" minOccurs="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="cellInterleavingType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="BSQ"/>
<xsd:enumeration value="BIL"/>
<xsd:enumeration value="BIP"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="pyramidType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="NONE"/>
<xsd:enumeration value="DECREASE"/>
<xsd:enumeration value="INCREASE"/>
<xsd:enumeration value="BIDIRECTION"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="resamplingType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="NN"/>
<xsd:enumeration value="BILINEAR"/>
<xsd:enumeration value="CUBIC"/>
<xsd:enumeration value="AVERAGE4"/>
<xsd:enumeration value="AVERAGE16"/>
<xsd:enumeration value="BIQUADRATIC"/>
<xsd:enumeration value="OTHER"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="pyramidDescriptionType">
<xsd:sequence>
<xsd:element name="type" type="pyramidType" default="NONE"/>
<xsd:element name="resampling" type="resamplingType" default="NN" minOccurs="0"/>
<xsd:element name="maxLevel" type="xsd:nonNegativeInteger" default="0" minOccurs="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="rasterDescriptionType">
<xsd:sequence>
<xsd:element name="cellRepresentation" type="cellRepresentationType" default="UNDEFINED"/>
<xsd:element name="cellDepth" type="cellDepthType" default="8BIT_U"/>
<xsd:element name="NODATA" type="xsd:double" minOccurs="0"/>
<xsd:element name="totalDimensions" type="supportedDimensionNumber" default="2"/>
<xsd:element name="dimensionSize" type="cellDimensionSizeType" maxOccurs="5"/>
<xsd:element name="ULTCoordinate" type="cellCoordinateType"/>
<xsd:element name="blocking" type="blockingDescriptionType"/>
<xsd:element name="interleaving" type="cellInterleavingType" default="BSQ"/>
<xsd:element name="pyramid" type="pyramidDescriptionType"/>
<xsd:element name="compression" type="compressionDescriptionType"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:annotation>
<xsd:documentation>===========================================================
Part 1.3.1: Data Types for GeoRaster Spatial Reference System

Spatial extent (footprint) is recorded as an attribute of GeoRaster object.
ts type is SDO_GEOMETRY. So it is not included in the metadata
The cell space coordinates are named as (row, column, vertical)
The model space coordinates are named as (x, y, z)
Spatial unit information is stored in the WKT of the specified SRID
============================================================
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType name="modelDimensionType">
<xsd:annotation>
<xsd:documentation>
The following "S" means "Spectral" for remote sensing imagery. Any of X, Y,
and Z can be horizontal or vertical or any other spatial direction
(depending on user interpretation in "modelDimensionDescription").
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="X"/>
<xsd:enumeration value="Y"/>
<xsd:enumeration value="Z"/>
<xsd:enumeration value="T"/>
<xsd:enumeration value="S"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="resolutionType">
<xsd:sequence>
<xsd:element name="resolution" type="xsd:double" default="1"/>
</xsd:sequence>
<xsd:attribute name="dimensionType" type="modelDimensionType" use="required"/>
</xsd:complexType>
<xsd:simpleType name="doubleNumberListType">
<xsd:list itemType="xsd:double"/>
</xsd:simpleType>
<xsd:complexType name="polynomialType">
<xsd:sequence>
<xsd:element name="polynomialCoefficients" type="doubleNumberListType"/>
</xsd:sequence>
<xsd:attribute name="pType" type="xsd:nonNegativeInteger" use="optional" default="1"/>
<xsd:attribute name="nVars" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="order" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="nCoefficients" type="xsd:nonNegativeInteger" use="required"/>
<xsd:anyAttribute/>
</xsd:complexType>
<xsd:complexType name="rationalPolynomialType">
<xsd:annotation>
<xsd:documentation>
row    =   pPolynomial(x, y, z) / qPolynomial(x, y, z)
column =   rPolynomial(x, y, z) / sPolynomial(x, y, z)
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="pPolynomial" type="polynomialType"/>
<xsd:element name="qPolynomial" type="polynomialType"/>
<xsd:element name="rPolynomial" type="polynomialType"/>
<xsd:element name="sPolynomial" type="polynomialType"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="rowOff" type="xsd:double" use="required"/>
<xsd:attribute name="columnOff" type="xsd:double" use="required"/>
<xsd:attribute name="xOff" type="xsd:double" use="required"/>
<xsd:attribute name="yOff" type="xsd:double" use="required"/>
<xsd:attribute name="zOff" type="xsd:double" use="required"/>
<xsd:attribute name="rowScale" type="xsd:double" use="required"/>
<xsd:attribute name="columnScale" type="xsd:double" use="required"/>
<xsd:attribute name="xScale" type="xsd:double" use="required"/>
<xsd:attribute name="yScale" type="xsd:double" use="required"/>
<xsd:attribute name="zScale" type="xsd:double" use="required"/>
<xsd:attribute name="rowRMS" type="xsd:double" use="optional"/>
<xsd:attribute name="columnRMS" type="xsd:double" use="optional"/>
<xsd:attribute name="totalRMS" type="xsd:double" use="optional"/>
<xsd:attribute name="xRMS" type="xsd:double" use="optional"/>
<xsd:attribute name="yRMS" type="xsd:double" use="optional"/>
<xsd:attribute name="zRMS" type="xsd:double" use="optional"/>
<xsd:attribute name="modelTotalRMS" type="xsd:double" use="optional"/>
<xsd:anyAttribute/>
</xsd:complexType>
<xsd:annotation>
<xsd:documentation>
The following types and definitions are for GCP support. It stores
GCP collection for the GeoRaster object. It also optionally specify
the Functional Fitting method for generating FFM using the GCP collection.
cellDimension can 2 or 3 (only 2 is supported in current release).
modelDimension can be 2, 3, -2, -3. cellCoordinate must be (row, column)
in current release.
modelCoordinate must be (X, Y) or (X, Y, Z) in current release.
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType name="gcpPointType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ControlPoint"/>
<xsd:enumeration value="CheckPoint"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="gcpPointStatusType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Measured"/>
<xsd:enumeration value="Removed"/>
<xsd:enumeration value="Estimated"/>
<xsd:enumeration value="Validated"/>
<xsd:enumeration value="Invalid"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="GCPType">
<xsd:attribute name="ID" type="xsd:string" use="optional"/>
<xsd:attribute name="description" type="xsd:string" use="optional"/>
<xsd:attribute name="type" type="gcpPointType" use="required"/>
<xsd:attribute name="cellDimension" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="row" type="xsd:double" default="0" />
<xsd:attribute name="column" type="xsd:double" default="0" />
<xsd:attribute name="vertical" type="xsd:integer" use="optional"/>
<xsd:attribute name="modelDimension" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="X" type="xsd:double" default="0"/>
<xsd:attribute name="Y" type="xsd:double" default="0"/>
<xsd:attribute name="Z" type="xsd:double" use="optional"/>
<xsd:attribute name="xRMS" type="xsd:double" use="optional"/>
<xsd:attribute name="yRMS" type="xsd:double" use="optional"/>
<xsd:attribute name="zRMS" type="xsd:double" use="optional"/>
<xsd:attribute name="status" type="gcpPointStatusType" use="optional"/>
<xsd:anyAttribute/>
</xsd:complexType>
<xsd:simpleType name="FFMethodType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Affine"/>
<xsd:enumeration value="QuadraticPolynomial"/>
<xsd:enumeration value="CubicPolynomial"/>
<xsd:enumeration value="DLT"/>
<xsd:enumeration value="QuadraticRational"/>
<xsd:enumeration value="RPC"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="GCPGeoreferenceType">
<xsd:sequence>
<xsd:element name="gcp" type="GCPType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="FFMethod" type="FFMethodType" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="rasterSpatialReferenceModelType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="RigorousModel"/>
<xsd:enumeration value="StoredFunction"/>
<xsd:enumeration value="FunctionalFitting"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="rasterSpatialReferenceSystemType">
<xsd:sequence>
<xsd:element name="isReferenced" type="xsd:boolean" default="false"/>
<xsd:element name="isRectified" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="isOrthoRectified" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="description" type="xsd:string" minOccurs="0"/>
<xsd:element name="SRID" type="xsd:nonNegativeInteger" default="0"/>
<xsd:element name="verticalSRID" type="xsd:integer" minOccurs="0"/>
<xsd:element name="modelDimensionDescription" type="xsd:string" minOccurs="0"/>
<xsd:element name="spatialResolution" type="resolutionType" minOccurs="0" maxOccurs="3"/>
<xsd:element name="spatialTolerance" type="xsd:double" minOccurs="0"/>
<xsd:element name="modelCoordinateLocation" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="CENTER"/>
<xsd:enumeration value="UPPERLEFT"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="modelType" type="rasterSpatialReferenceModelType"
minOccurs="0" maxOccurs="3"/>
<xsd:element name="polynomialModel" type="rationalPolynomialType"
minOccurs="0"/>
<xsd:choice minOccurs="0">
<xsd:element name="gcpGeoreferenceModel" type="GCPGeoreferenceType"/>
<xsd:element name="gcpTableName" type="xsd:string" minOccurs="0"/>
</xsd:choice>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:annotation>
<xsd:documentation> =================================================
Part 1.3.2: Data Types for GeoRaster Temporal Reference System

The TRS will be modeled by formulas in the future.
=================================================
</xsd:documentation>
</xsd:annotation>
<xsd:complexType name="rasterTemporalReferenceSystemType">
<xsd:sequence>
<xsd:element name="isReferenced" type="xsd:boolean" default="false"/>
<xsd:element name="description" type="xsd:string" minOccurs="0"/>
<xsd:element name="beginDateTime" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="endDateTime" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="temporalResolutionDescription" type="xsd:string" minOccurs="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:annotation>
<xsd:documentation> ==================================================
Part 1.3.3: Data Types for GeoRaster Band Reference System

For multispectral remote sensing images, each band is optionally
described in the layerDescriptionType.
The BRS is modeled by formulas for hyperspectral imagery
based on number of spectral segments, min and max wavelength
and number of bands for each segment.
Detailed radiometric info will be added in the future.
=====================================================
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType name="wavelengthUnit">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="METER"/>
<xsd:enumeration value="MILLIMETER"/>
<xsd:enumeration value="MICROMETER"/>
<xsd:enumeration value="NANOMETER"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="extentType">
<xsd:sequence>
<xsd:element name="min" type="xsd:double"/>
<xsd:element name="max" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="segmentationDataType">
<xsd:sequence>
<xsd:element name="totalSegNumber" type="xsd:positiveInteger" default="1"/>
<xsd:element name="firstSegNumber" type="xsd:integer" default="1"/>
<xsd:element name="extent" type="extentType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="bandReferenceType">
<xsd:sequence>
<xsd:element name="bands" type="segmentationDataType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="rasterBandReferenceSystemType">
<xsd:sequence>
<xsd:element name="isReferenced" type="xsd:boolean" default="false"/>
<xsd:element name="description" type="xsd:string" minOccurs="0"/>
<xsd:element name="radiometricResolutionDescription" type="xsd:string" minOccurs="0"/>
<xsd:element name="spectralUnit" type="wavelengthUnit" default="MICROMETER"/>
<xsd:element name="spectralTolerance" type="xsd:double" minOccurs="0"/>
<xsd:element name="spectralResolutionDescription" type="xsd:string" minOccurs="0"/>
<xsd:element name="minSpectralResolution" type="resolutionType" minOccurs="0"/>
<xsd:element name="spectralExtent" type="extentType"/>
<xsd:element name="bandReference" type="bandReferenceType" minOccurs="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:annotation>
<xsd:documentation> ====================================================
Part 1.4: Data Types for Layer Metadata

For each sub-layer the layerNumber is a positive integer, i.e., layers are
logically numbered from 1 to n if the size of the specified layerDimension is
n. The layerDimensionOrdinate of each sublayer must be in the range of the
dimension and must be in the order of band ordinates.
For objectLayer, the layerNumber should be 0 but its layerDimensionOrdinate
is not used.
=======================================================
</xsd:documentation>
</xsd:annotation>
<xsd:complexType name="NODATAType">
<xsd:sequence>
<xsd:element name="value" type="xsd:double" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="range" type="extentType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="mask" type="xsd:boolean" minOccurs="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="scalingFunctionType">
<xsd:annotation>
<xsd:documentation>
value = (a0 + a1 * cellValue)  /  (b0 + b1 * cellValue)
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="a0" type="xsd:double" default="1"/>
<xsd:element name="a1" type="xsd:double" default="0"/>
<xsd:element name="b0" type="xsd:double" default="1"/>
<xsd:element name="b1" type="xsd:double" default="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="binType">
<xsd:annotation>
<xsd:documentation>
LINEAR bin function:
binNumber = numbins * (cellValue - min) / (max - min) + firstBinNumber
if (binNumber less than 0) binNumber =  firstBinNumber
if (binNumber greater than or equal to numbins) binNumber = numbins + firstBinNumber - 1
LOGARITHM bin function:
binNumber = numbins * (ln (1.0 + ((cellValue - min)/(max - min)))/ ln (2.0)) + firstBinNumber
if (binNumber less than 0) binNumber =  firstBinNumber
if (binNumber greater than or equal to numbins) binNumber = numbins + firstBinNumber - 1
EXPLICIT bin function means explicit (or direct) value (or value range)
for each bin and it will be stored in a table
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="LINEAR"/>
<xsd:enumeration value="LOGARITHM"/>
<xsd:enumeration value="EXPLICIT"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="binFunctionType">
<xsd:annotation>
<xsd:documentation>
The MAX and MIN in statistic dataset will be used if they are not provided
here. binTableName is used by EXPLICIT type only.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:choice>
<xsd:element name="binFunctionData" type="segmentationDataType"/>
<xsd:element name="binTableName" type="xsd:string"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="type" type="binType" use="required"/>
</xsd:complexType>
<xsd:complexType name="rectangularWindowType">
<xsd:sequence>
<xsd:element name="origin" type="cellCoordinateType"/>
<xsd:element name="rowHeight" type="xsd:positiveInteger"/>
<xsd:element name="columnWidth" type="xsd:positiveInteger"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cellCountType">
<xsd:attribute name="value" type="xsd:double" use="required"/>
<xsd:attribute name="count" type="xsd:nonNegativeInteger" use="required"/>
<xsd:anyAttribute/>
</xsd:complexType>
<xsd:complexType name="rasterCountType">
<xsd:sequence>
<xsd:element name="cell" type="cellCountType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="histogramType">
<xsd:sequence>
<xsd:choice>
<xsd:element name="counts" type="rasterCountType"/>
<xsd:element name="tableName" type="xsd:string"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="statisticDatasetType">
<xsd:sequence>
<xsd:element name="samplingFactor" type="xsd:positiveInteger" default="1"/>
<xsd:element name="samplingWindow" type="rectangularWindowType" minOccurs="0"/>
<xsd:element name="MIN" type="xsd:double"/>
<xsd:element name="MAX" type="xsd:double"/>
<xsd:element name="MEAN" type="xsd:double"/>
<xsd:element name="MEDIAN" type="xsd:double"/>
<xsd:element name="MODEVALUE" type="xsd:double"/>
<xsd:element name="STD" type="xsd:double"/>
<xsd:element name="histogram" type="histogramType" minOccurs="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cellGrayType">
<xsd:attribute name="value" type="xsd:double" use="required"/>
<xsd:attribute name="gray" type="xsd:integer" use="required"/>
<xsd:anyAttribute/>
</xsd:complexType>
<xsd:complexType name="rasterGrayType">
<xsd:sequence>
<xsd:element name="cell" type="cellGrayType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="grayScaleType">
<xsd:sequence>
<xsd:choice>
<xsd:element name="grays" type="rasterGrayType"/>
<xsd:element name="tableName" type="xsd:string"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cellPseudoColorType">
<xsd:attribute name="value" type="xsd:double" use="required"/>
<xsd:attribute name="red" type="xsd:integer" use="required"/>
<xsd:attribute name="green" type="xsd:integer" use="required"/>
<xsd:attribute name="blue" type="xsd:integer" use="required"/>
<xsd:attribute name="alpha" type="xsd:double" use="optional"/>
<xsd:anyAttribute/>
</xsd:complexType>
<xsd:complexType name="rasterPseudoColorType">
<xsd:sequence>
<xsd:element name="cell" type="cellPseudoColorType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="colorMapType">
<xsd:sequence>
<xsd:choice>
<xsd:element name="colors" type="rasterPseudoColorType"/>
<xsd:element name="tableName" type="xsd:string"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="layerType">
<xsd:sequence>
<xsd:element name="layerNumber" type="xsd:nonNegativeInteger"/>
<xsd:element name="layerDimensionOrdinate" type="xsd:integer"/>
<xsd:element name="layerID" type="xsd:string"/>
<xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="bitmapMask" type="xsd:boolean" minOccurs="0" default="false"/>
<xsd:element name="NODATA" type="NODATAType" minOccurs="0"/>
<xsd:element name="scalingFunction" type="scalingFunctionType" minOccurs="0"/>
<xsd:element name="binFunction" type="binFunctionType" minOccurs="0"/>
<xsd:element name="statisticDataset" type="statisticDatasetType" minOccurs="0"/>
<xsd:element name="grayScale" type="grayScaleType" minOccurs="0"/>
<xsd:element name="colorMap" type="colorMapType" minOccurs="0"/>
<xsd:element name="vatTableName" type="xsd:string" minOccurs="0"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="layerDescriptionType">
<xsd:sequence>
<xsd:element name="layerDimension" type="cellDimensionType" default="BAND"/>
<xsd:element name="objectLayer" type="layerType" minOccurs="0"/>
<xsd:element name="subLayer" type="layerType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:annotation>
<xsd:documentation> =======================================================
Part 2: Metadata Elements / Content Structure of Oracle GeoRaster Object
==========================================================
</xsd:documentation>
</xsd:annotation>
<xsd:element name="georasterMetadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="objectInfo" type="objectDescriptionType"/>
<xsd:element name="rasterInfo" type="rasterDescriptionType"/>
<xsd:element name="spatialReferenceInfo" type="rasterSpatialReferenceSystemType" minOccurs="0"/>
<xsd:element name="temporalReferenceInfo" type="rasterTemporalReferenceSystemType" minOccurs="0"/>
<xsd:element name="bandReferenceInfo" type="rasterBandReferenceSystemType" minOccurs="0"/>
<xsd:element name="layerInfo" type="layerDescriptionType" maxOccurs="unbounded"/>
<xsd:element name="sourceInfo" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

索引

A  B  C  D  E  F  G  H  I  J  L  M  N  O  P  Q  R  S  T  U  V  W  X  Z

A

- addNODATAプロシージャ 1

- 管理操作を行うためのサブプログラム

- GeoRaster 1

- 拡張LOB圧縮 1

- 集計サブプログラム

- GeoRaster 1 , 2

- ALL_SDO_GEOR_SYSDATAビュー 1

- アルファ(不透明度)値 1

- イメージの追加 1

- appendプロシージャ 1

- AVERAGE16リサンプリング・メソッドおよび内挿方法 1

- AVERAGE4リサンプリング・メソッドおよび内挿方法 1

B

- SDO_RASTERのbandBlockNumber属性 1

- バンド番号

- bandBlockNumber属性 1

- バンド参照システム(BRS)

- 説明 1

- バンド

- 説明 1

- マージ 1

- BILINEARリサンプリング・メソッドおよび内挿方法 1

- BIQUADRATICリサンプリング・メソッドおよび内挿方法 1

- bitmapmaskキーワード

- : storageParamパラメータ 1

- ビットマップ・マスク 1

- ビットマップのピラミッド化 1

- 空白のGeoRasterオブジェクト 1

- BLOBデータ

- ラスター・ブロック・データ 1

- blockingキーワード

- : importFrom storageParamパラメータ 1

- : storageParamパラメータ 1

- SDO_RASTERのblockMBR属性 1

- ブロック・サイズ

- 最適値の算出 1

- storageParamのblockSizeキーワード 1

- BMPイメージ形式

- GeoRasterでのサポート 1

- BRS(バンド参照システム)

- 説明 1

C

- calcCompressionRatioファンクション, 1

- calcOptimizedBlockSizeプロシージャ 1

- calcRasterNominalSizeファンクション 1

- calcRasterStorageSizeファンクション 1

- 地図的モデリング 1

- 地図作成法

- 説明 1

- キャスト

- ラスター・データ 1

- cbreferenceキーワード

- : mosaicParamパラメータ 1

- セル座標系

- モデル座標系との関係 1

- セル・データ

- セル値の内挿 1

- 問合せおよび更新 1

- storageParamのcellDepthキーワード 1

- セル値ベースの条件付き問合せ 1

- セル値ベースの条件付き更新 1

- changeCellValueプロシージャ 1

- changeFormatCopyプロシージャ 1

- checkSysdataEntriesファンクション 1

- 分類操作 1

- classifyプロシージャ 1

- clearReportTableプロシージャ 1

- colorBalanceキーワード

- : mosaicParamパラメータ 1

- カラーマップ

- アルファ(不透明度)値 1

- 取得 1

- 表の取得 1

- 疑似カラー情報 1

- SDO_GEOR_COLORMAPオブジェクト型 1

- COLUMN_NAME列(USER_SDO_GEOR_SYSDATAビュー) 1

- SDO_RASTERのcolumnBlockNumber属性 1

- commonPointRuleキーワード

- : mosaicParamパラメータ 1

- COMPATIBILITYデータベース初期化パラメータ

- アップグレード時の要件 1

- 圧縮

- 拡張LOB圧縮 1

- 圧縮率 1

- GeoRasterオブジェクトの解凍 1

- DEFLATE形式 1

- JPEG形式 1

- storageParamパラメータのキーワード 1

- LizardTechプラグイン 1

- of GeoRasterオブジェクト 1 , 2

- パフォーマンスに関する考慮事項 1

- 質 1 , 2

- サード・パーティのプラグイン 1

- 条件付き問合せ

- セル値ベース 1

- コントラスト表

- グレースケール表 1

- copyプロシージャ 1

- createBlankファンクション 1

- createDMLTriggerプロシージャ 1

- createReportTableプロシージャ 1

- createTemplateファンクション 1

- GeoRasterにおけるクロススキーマのサポート 1

- CUBICリサンプリング・メソッドおよび内挿方法 1

D

- ダングリング・ラスター・ブロック

- モザイク処理の中断に起因 1

- 検索 1

- データ・モデル

- GeoRaster 1

- 解凍

- of GeoRasterオブジェクト 1 , 2

- パフォーマンスに関する考慮事項 1

- DEFLATE圧縮 1

- deleteControlPointプロシージャ 1

- deleteNODATAファンクション 1

- deletePyramidプロシージャ 1

- DEM (数値標高モデル)

- オルソ補正 1

- GeoRasterのデモ・ファイル

- PL/SQLとJava 1

- 数値標高モデル(DEM)

- オルソ補正 1

- デジタル・イメージ処理

- 説明 1

- disableReportプロシージャ 1

- DMLトリガー

- 作成 1 , 2 , 3

- 再作成 1

- dropReportTableプロシージャ 1

E

- 空のブロック

- 空のLOBの変更 1

- 背景値の入力 1

- emptyBlocksプロシージャ 1

- 空のGeoRasterオブジェクト 1

- enableReportプロシージャ 1

- Spatial and Graphのインストール後にGeoRasterを有効化 1

- ESRIワールド・ファイル

- ロード 1

- GeoRasterでのサポート 1

- ETL(抽出、変換、ロード)ソリューション

- ツール 1

- 開発でのJava APIの使用 1

- evaluateDoubleファンクション 1

- GeoRasterのエクスポータ・ツール 1

- エクスポート

- GeoRasterオブジェクト 1

- exportToプロシージャ 1

- 抽出、変換、ロード(ETL)・ソリューション

- ツール 1

- 開発でのJava APIの使用 1

F

- fillEmptyBlocksプロシージャ 1

- fillGapキーワード

- : mosaicParamパラメータ 1

- findCellsプロシージャ 1

- フットプリント 1

- 形式

- イメージ(GeoRasterでのサポート) 1

- ベクトルおよびラスター 1

- 関数フィッティング多項式モデル

- GeoRasterでのサポート 1

G

- generateBlockMBRファンクション 1

- generatePyramidプロシージャ 1

- generateSpatialExtentファンクション 1

- generateSpatialResolutionsファンクション 1

- generateStatisticsMaxプロシージャ 1

- generateStatisticsMeanプロシージャ 1

- generateStatisticsMedianプロシージャ 1

- generateStatisticsMinプロシージャ 1

- generateStatisticsModeプロシージャ 1

- generateStatisticsプロシージャ 1

- generateStatisticsSTDプロシージャ 1

- 地球化学

- 使用するラスター・データ 1

- 地理情報システム(GIS)

- ラスター・ベース 1

- 地質学

- 使用するラスター・データ 1

- 地理メタデータ 1

- 地球物理学

- 使用するラスター・データ 1

- georaster_tools.jarファイル 1 , 2

- GeoRaster BRS 1

- GeoRasterデータ・モデル 1

- GeoRasterの管理 1

- GeoRasterオブジェクト

- 空白 1

- 形式の変更 1

- 物理記憶域の変更 1

- 圧縮 1

- コピー 1 , 2

- 形式のコピーおよび変更 1

- コピーおよびスケール変更 1

- 作成 1

- 空白の作成 1

- テンプレートの作成 1

- 解凍 1

- 削除 1

- 空 1

- エクスポート 1 , 2

- 地理参照 1

- 空間エクステント・ジオメトリの索引付け 1

- 初期化 1

- セル値の内挿 1

- ロード 1 , 2

- 物理記憶域の最適化 1

- 物理記憶域

- 変更 1

- 最適化 1

- 処理 1

- ピラミッド

- 定義 1

- 問合せおよび検索 1

- セル・データの問合せおよび更新 1

- メタデータの問合せおよび更新 1

- 登録 1

- 再投影 1

- スケーリング 1

- データベース間での転送 1

- 座標情報の変換 1

- コミット前の更新 1

- 検証 1

- 表示 1 , 2

- GeoRasterのパラレル処理 1

- GeoRaster SRS 1

- GeoRaster表

- GeoRasterオブジェクトが含まれる列 1

- 作成 1

- クロススキーマのサポート 1

- 定義 1

- 削除 1

- メタデータ列 1

- 名前 1

- その他の関連表 1

- ラスター・データ表 1

- ラスターID 1

- GeoRasterツール 1

- GeoRaster TRS 1

- GeoRasterのXMLスキーマ表 1

- 地理参照プロシージャ 1

- 地理参照

- セル座標とモデル座標の変換 1

- 説明 1

- 関数フィッティング・モデルの詳細および計算式 1

- 実行用メソッド 1

- GeoTIFFファイル

- sdoldgtf.sqlスクリプトを使用したライブラリのロード 1

- GeoTIFFイメージ形式

- GeoRasterでのサポート 1

- getAllStatusReportファンクション 1

- getBandDimSizeファンクション 1

- getBeginDateTimeファンクション 1

- getBinFunctionファンクション 1

- getBinTableファンクション 1

- getBinTypeファンクション 1

- getBitmapMaskプロシージャ 1

- getBitmapMaskSubsetプロシージャ 1

- getBitmapMaskValueプロシージャ 1

- getBlankCellValueファンクション 1

- getBlockingTypeファンクション 1

- getBlockSizeファンクション 1

- getCellCoordinateファンクション 1

- getCellDepthファンクション 1

- getCellValueファンクション 1

- getColorMapファンクション 1

- getColorMapTableファンクション 1

- getCompressionTypeファンクション 1

- getControlPointファンクション 1

- getDefaultAlphaファンクション 1

- getDefaultBlueファンクション 1

- getDefaultColorLayerファンクション 1

- getDefaultGreenファンクション 1

- getDefaultPyramidLevelファンクション 1

- getDefaultRedファンクション 1

- getEndDateTimeファンクション 1

- getGCPGeorefMethodファンクション 1

- getGCPGeorefModelファンクション 1

- getGeoreferenceTypeファンクション 1

- getGrayScaleファンクション 1

- getGrayScaleTableファンクション 1

- getHistogramファンクション 1

- getHistogramTableファンクション 1

- getIDファンクション 1

- getInterleavingTypeファンクション 1

- getLayerDimensionファンクション 1

- getLayerIDファンクション 1

- getLayerOrdinateファンクション 1

- getModelCoordinateファンクション 1

- getModelCoordLocationファンクション 1

- getModelSRIDファンクション 1

- getMosaicExtentプロシージャ 1

- getMosaicResolutionsプロシージャ 1

- getMosaicSubsetプロシージャ 1

- getNODATAファンクション 1

- getProgressファンクション 1

- getPyramidMaxLevelファンクション 1

- getPyramidTypeファンクション 1

- getRasterBlockLocatorプロシージャ 1

- getRasterBlocksファンクション 1

- getRasterDataプロシージャ 1

- getRasterRangeファンクション 1

- getRasterSubsetプロシージャ 1

- getScalingファンクション 1

- getSourceInfoプロシージャ 1

- getSpatialDimNumberファンクション 1

- getSpatialDimSizesファンクション 1

- getSpatialResolutionsファンクション 1

- getSpectralResolutionファンクション 1

- getSpectralUnitファンクション 1

- getSRSファンクション 1

- getStatisticsファンクション 1

- getStatusReportファンクション 1

- getTotalLayerNumberファンクション 1

- getULTCoordinateファンクション 1

- getVATファンクション 1

- getVersionファンクション 1

- GIFイメージ形式

- GeoRasterでのサポート 1

- グレースケール

- 確認 1

- マッピング取得 1

- マッピング表の取得 1

- SDO_GEOR_GRAYSCALEオブジェクト型 1

- レイヤーのマッピングの設定 1

- マッピング表の設定 1

- グレースケール表 1

- GRDMLTR_

- 始まるユーザー・トリガー名の使用不可 1

- グリッド・データ 1

- グリッド内挿 1

- 地上基準点(GCP)

- GeoRasterオブジェクトの追加 1

- 高度な地理参照 1

- GCPを使用した地理参照 1

- SDO_GEOR_GCP_ COLLECTIONコレクション型 1

- SDO_GEOR_GCPGEOREFTYPEオブジェクト型 1

- SDO_GEOR_GCPオブジェクト型 1

- 地上座標系 1

H

- hasBitmapMaskファンクション 1

- hasGrayScaleファンクション 1

- hasNODATAMaskファンクション 1

- hasPseudoColorファンクション 1

- ヒストグラム

- 取得 1

- SDO_GEOR_HISTOGRAMオブジェクト型 1

- ヒストグラム表

- 取得 1

- 設定 1

I

- イメージ・フォーマット

- GeoRasterでのサポート 1

- イメージのマスキング 1

- イメージ

- 追加 1

- マスキング 1

- 提供 1

- ストレッチ 1

- イメージのセグメント化 1

- importFromプロシージャ 1

- 索引付け

- GeoRasterデータ 1

- initファンクション 1

- 初期化

- GeoRasterオブジェクト 1

- インターリーブ

- 型の取得 1

- storageParamのキーワード 1

- セル値の内挿 1

- 内挿 1

- interpolationMethodキーワード 1

- interpolationMethodパラメータ 1

- isBlankファンクション 1

- isOrthoRectifiedファンクション 1

- isOverlapファンクション 1

- isRDTNameUniqueファンクション 1

- isRectifiedファンクション 1

- isReportingファンクション 1

- isSpatialReferencedファンクション 1

- isUpgradeNeededファンクション 1

J

- GeoRasterのJavaクライアント・インタフェース(sdogr) 1

- GeoRasterのJavaデモ・ファイル 1

- Java仮想マシン(JVM)

- GeoRasterでの使用 1

- JPEG圧縮 1

- JPEG-F圧縮モード 1

- JPEGイメージ形式

- ロード(GeoRasterローダー・ツールのみ) 1

- GeoRasterでのサポート 1

L

- layerInfo要素 1

- レイヤー番号 1

- レイヤー

- 説明 1

- 次元 1

- ID 1

- layerInfo要素に格納されているメタデータ 1

- 座標 1

- listDanglingRasterDataファンクション 1

- listGeoRasterColumnsファンクション 1

- listGeoRasterObjectsファンクション 1

- listGeoRasterTablesファンクション 1

- listRDTファンクション 1

- listRegisteredRDTファンクション 1

- listUnregieteredRDTファンクション 1

- LizardTech社

- MrSIDおよびJPEG 2000圧縮のプラグイン 1

- GeoRasterのローダー・ツール 1

- ロード

- GeoRasterデータ 1

- 参照表

- グレースケール表 1

- 劣化 1 , 2

M

- maintainSysdataEntriesファンクション 1

- makeRDTNamesUniqueプロシージャ 1

- GeoRasterオブジェクトの管理 1

- マップ

- GeoRasterを使用した管理 1

- maskプロシージャ 1

- マスク

- ビットマップ 1

- 数学的操作 1

- maxValキーワード

- : mosaicParamパラメータ 1

- MBR(最小境界矩形)

- blockMBR属性 1

- meanキーワード

- : mosaicParamパラメータ 1

- mergeLayersプロシージャ 1

- バンドのマージ 1

- メタデータ

- GeoRaster 1

- XMLスキーマ 1

- METADATA_COLUMN_NAME列(USER_SDO_GEOR_SYSDATAビュー) 1

- SDO_GEORASTERのメタデータ属性 1

- 最小外接矩形(MBR)

- blockMBR属性 1

- 最小/最大ストレッチ 1

- minValキーワード

- : mosaicParamパラメータ 1

- モデル座標系

- セル座標系との関係 1

- モデル化

- 地図的 1

- モデル空間 1

- モザイク

- 大規模イメージ 1

- 仮想 1

- mosaicプロシージャ 1

- mosaicSubsetプロシージャ 1

- MrSID

- 圧縮に使用するLizardTech社のプラグイン 1

N

- 名前付けに関する注意事項

- Spatialの表名および列名 1

- NDVI(正規化植生指標) 1

- Nearest Neighbor (NN)内挿方法 1

- NN (Nearest Neighbor)内挿方法 1

- NNリサンプリング・メソッドおよび内挿方法 1

- データのないセル

- 追加 1

- 削除 1

- 値の取得 1

- nodataキーワード

- : mosaicParamパラメータ 1

- 名目上のサイズ

- ラスター 1

- 正規化ストレッチ 1

- 正規化植生指標(NDVI) 1

O

- オブジェクト・レイヤー 1

- オフセット設定

- ラスター・データ 1

- オンザフライ統計分析 1

- 不透明度

- アルファ値 1

- 操作の進行状況

- クライアントおよびオプションの操作によるレポート 1

- レポート 1

- 操作のステータス

- ステータス・レポートの無効化 1

- ステータス・レポートの有効化 1

- すべてのレポート 1

- クライアントおよびオプションの操作によるレポート 1

- 操作のステータスのレポート

- 有効化されているかどうかの確認 1

- Oracle Label Security(OLS)

- GeoRasterの使用 1

- Oracle SecureFiles

- GeoRasterの使用 1

- オルソ補正

- 確認 1

- イメージ 1

- 設定 1

- OTHER_TABLE_NAMES列(USER_SDO_GEOR_SYSDATAビュー) 1

P

- 埋込み 1

- パレット表 1

- storageParamのparallelキーワード 1

- GeoRasterでのパラレル処理 1

- 写真測量

- 説明 1

- 物理記憶域

- GeoRasterオブジェクト 1

- GeoRasterのPL/SQLデモ・ファイル 1

- PNGイメージ形式

- GeoRasterでのサポート 1

- 疑似カラー

- 確認 1

- 疑似カラー表 1

- storageParamのpyramidキーワード 1

- ピラミッド・レベル

- デフォルトの取得 1

- デフォルト設定 1

- SDO_RASTERのpyramidLevel属性 1

- ピラミッド・レベル

- 定義 1

- SDO_GEORASTERのpyramidLevel属性 1

- pyramidParamsパラメータ 1

- ピラミッド

- ビットマップのピラミッド化 1

- データの削除 1

- 決定する計算式 1

- データの生成 1

- 図 1

- イメージのピラミッド化 1

- ピラミッド・パラメータ 1

- ピラミッドの最上位レベルの番号の取得 1

- ピラミッド・タイプ 1

Q

- 品質

- storageParamパラメータのキーワード 1

R

- ラスター

- 名目上のサイズ 1

- 記憶域サイズ 1

- RASTER_ID列(USER_SDO_GEOR_SYSDATAビュー) 1

- ラスター代数言語 1

- SDO_RASTERのrasterBlock属性 1

- ラスター・ブロック・データ 1

- ラスター・データ

- キャスト 1

- 概要 1

- オフセット 1

- スケーリング 1

- ラスター・データ表(RDT)

- 作成 1

- クロススキーマのサポート 1

- 定義 1

- 削除 1

- 名前を一意にする 1

- SDO_RASTER型のオブジェクト表 1

- rasterDataTable属性 1

- RDT_TABLE_NAME列 1

- 名前の変更 1

- SDO_GEORASTERのrasterDataTable属性 1

- ラスターID 1 2

- SDO_GEORASTERのrasterID属性 1

- SDO_RASTERのrasterID属性 1

- rasterMathOpプロシージャ 1

- ラスター空間 1

- ラスター型 1

- SDO_GEORASTERのrasterType属性 1

- rasterUpdateプロシージャ 1

- RDT_TABLE_NAME列(USER_SDO_GEOR_SYSDATAビュー) 1

- READMEファイル

- GeoRasterツール 1

- Spatial and Graphおよび関連する機能 1

- recreateDMLTriggersプロシージャ 1

- 幾何補正

- 確認 1

- イメージ 1

- SDO_GEOR.rectifyプロシージャ 1

- 設定 1

- registerGeoRasterColumnsプロシージャ 1

- registerGeoRasterObjectsプロシージャ 1

- GeoRasterオブジェクトの登録 1

- リモート・センシング

- 説明 1

- renameRDTプロシージャ 1

- レポート操作の進行状況 1

- レポート表

- 消去 1

- 作成 1

- 削除 1

- GeoRasterオブジェクトの再投影 1 2

- reprojectプロシージャ 1

- resampleParamパラメータ 1 , 2 , 3

- リサンプリング 1

- resamplingキーワード

- : mosaicParamパラメータ 1

- resamplingToleranceキーワード

- : mosaicParamパラメータ 1

- resFilterキーワード

- : mosaicParamパラメータ 1

- 解像度

- スペクトル 1

- SDO_RASTERのrowBlockNumber属性 1

S

- scaleCopyプロシージャ 1

- スケール変更

- イメージ 1

- ラスター・データ 1

- schemaValidateファンクション 1

- SDO_GEOR_ADMINパッケージ

- checkSysdataEntries 1

- isRDTNameUnique 1

- isUpgradeNeeded 1

- listDanglingRasterData 1

- listGeoRasterColumns 1

- listGeoRasterObjects 1

- listGeoRasterTables 1

- listRDT 1

- listRegisteredRDT 1

- listUnregisteredRDT 1

- maintainSysdataEntries 1

- リファレンス情報 1

- registerGeoRasterColumns 1

- registerGeoRasterObjects 1

- upgradeGeoRaster 1

- SDO_GEOR_AGGRパッケージ

- 追加 1

- getMosaicExtent 1

- getMosaicResolutions 1

- getMosaicSubset 1

- mosaicSubset 1

- リファレンス情報 1 , 2

- validateForMosaicSubset 1

- SDO_GEOR_COLORMAPオブジェクト型 1

- SDO_GEOR_GCP_ COLLECTIONコレクション型 1

- SDO_GEOR_GCPGEOREFTYPEオブジェクト型 1

- SDO_GEOR_GCPオブジェクト型 1

- SDO_GEOR_GRAYSCALEオブジェクト型 1

- SDO_GEOR_HISTOGRAMオブジェクト型 1

- SDO_GEOR_RAパッケージ

- 分類 1

- findCells 1

- isOverlap 1

- rasterMathOp 1

- rasterUpdate 1

- SDO_GEOR_SRSコンストラクタ 1

- SDO_GEOR_SRSオブジェクト型 1

- SDO_GEOR_UTLパッケージ

- calcOptimizedBlockSize 1

- calcRasterNominalSize 1

- calcRasterStorageSize 1

- clearReportTable 1

- createDMLTrigger 1

- createReportTable 1

- disableReport 1

- dropReportTable 1

- enableReport 1

- getAllStatusReport 1

- getProgress 1

- getStatusReport 1

- isReporting 1

- makeRDTNamesUnique 1

- recreateDMLTriggers 1

- リファレンス情報 1

- renameRDT 1

- setClientID 1

- setSeqID 1

- SDO_GEOR_XMLSCHEMA_TABLE表 1

- SDO_GEORASTERオブジェクト型

- metadata属性 1

- rasterDataTable属性 1

- rasterID属性 1

- rasterType属性 1

- spatialExtent属性 1

- SDO_GEORパッケージ

- addNODATA 1

- calcCompressionRatio 1

- changeCellValue 1

- changeFormatCopy 1

- コピー 1

- createBlank 1

- createTemplate 1

- deleteControlPoint 1

- deleteNODATA 1

- deletePyramid 1

- emptyBlocks 1

- evaluateDouble 1

- exportTo 1

- fillEmptyBlocks 1

- generateBlockMBR 1

- generatePyramid 1

- generateSpatialExtent 1

- generateSpatialResolutions 1

- generateStatistics 1

- generateStatisticsMax 1

- generateStatisticsMean 1

- generateStatisticsMedian 1

- generateStatisticsMin 1

- generateStatisticsMode 1

- generateStatisticsSTD 1

- 地理参照 1

- getBandDimSize 1

- getBeginDateTime 1

- getBinFunction 1

- getBinTable 1

- getBinType 1

- getBitmapMask 1

- getBitmapMaskSubset 1

- getBitmapMaskValue 1

- getBlankCellValue 1

- getBlockingType 1

- getBlockSize 1

- getCellCoordinate 1

- getCellDepth 1

- getCellValue 1

- getColorMap 1

- getColorMapTable 1

- getCompressionType 1

- getControlPoint 1

- getDefaultAlpha 1

- getDefaultBlue 1

- getDefaultColorLayer 1

- getDefaultGreen 1

- getDefaultPyramidLevel 1

- getDefaultRed 1

- getEndDateTime 1

- getGCPGeorefMethod 1

- getGCPGeorefModel 1

- getGeoreferenceType 1

- getGrayScale 1

- getGrayScaleTable 1

- getHistogram 1

- getHistogramTable 1

- getID 1

- getInterleavingType 1

- getLayerDimension 1

- getLayerID 1

- getLayerOrdinate 1

- getModelCoordinate 1

- getModelCoordLocation 1

- getModelSRID 1

- getNODATA 1

- getPyramidMaxLevel 1

- getPyramidType 1

- getRasterBlockLocator 1

- getRasterBlocks 1

- getRasterData 1

- getRasterRange 1

- getRasterSubset 1

- getScaling 1

- getSourceInfo 1

- getSpatialDimNumber 1

- getSpatialDimSizes 1

- getSpatialResolutions 1

- getSpectralResolution 1

- getSpectralUnit 1

- getSRS 1

- getStatistics 1

- getTotalLayerNumber 1

- getULTCoordinate 1

- getVAT 1

- getVersion 1

- hasBitmapMask 1

- hasGrayScale 1

- hasNODATAMask 1

- hasPseudoColor 1

- importFrom 1

- init 1

- isBlank 1

- isOrthoRectified 1

- isRectified 1

- isSpatialReferenced 1

- mask 1

- mergeLayersレイヤー

- マージ 1

- mosaic 1

- PyramidLevel 1

- rectify 1

- リファレンス情報 1

- reproject 1

- scaleCopy 1

- schemaValidate 1

- setBeginDateTime 1

- setBinFunction 1

- setBinTable 1

- setBitmapMask 1

- setBlankCellValue 1

- setColorMap 1

- setColorMapTable 1

- setControlPoint 1

- setDefaultAlpha 1

- setDefaultBlue 1

- setDefaultColorLayer 1

- setDefaultGreen 1

- setDefaultRed 1

- setEndDateTime 1

- setGCPGeorefMethod 1

- setGCPGeorefModel 1

- setGrayScale 1

- setGrayScaleTable 1

- setHistogramTable 1

- setID 1

- setLayerID 1

- setLayerOrdinate 1

- setModelCoordLocation 1

- setModelSRID 1

- setNODATAMask 1

- setOrthoRectified 1

- setRasterType 1

- setRectified 1

- setScaling 1

- setSourceInfo 1

- setSpatialReferenced 1

- setSpatialResolutions 1

- setSpectralResolution 1

- setSpectralUnit 1

- setSRS 1

- setStatistics 1

- setULTCoordinate 1

- setVAT 1

- setVersion 1

- サブセット 1

- updateRaster 1

- validateBlockMBR 1

- validateGeoRaster 1

- SDO_RASTERオブジェクト型

- bandBlockNumber属性 1

- blockMBR属性 1

- columnBlockNumber属性 1

- pyramidLevel属性 1

- rasterBlock属性 1

- rasterID属性 1

- rowBlockNumber属性 1

- SDO_RASTERSETコレクション型 1

- sdogr Javaクライアント・インタフェース 1

- sdoldgtf.sqlスクリプト 1

- SecureFiles

- GeoRasterでのOracle SecureFilesの使用 1

- セグメント化(分類) 1

- イメージのセグメント化 1

- イメージの提供 1

- setBeginDateTimeプロシージャ 1

- setBinFunctionプロシージャ 1

- setBinTableプロシージャ 1

- setBitmapMaskプロシージャ 1

- setBlankCellValueプロシージャ 1

- setClientIDプロシージャ 1

- setColorMapプロシージャ 1

- setColorMapTableプロシージャ 1

- setControlPointプロシージャ 1

- setDefaultAlphaプロシージャ 1

- setDefaultBlueプロシージャ 1

- setDefaultColorLayerプロシージャ 1

- setDefaultGreenプロシージャ 1

- setDefaultPyramidLevelプロシージャ 1

- setDefaultRedプロシージャ 1

- setEndDateTimeプロシージャ 1

- setGCPGeorefMethodプロシージャ 1

- setGCPGeorefModelプロシージャ 1

- setGrayScaleプロシージャ 1

- setGrayScaleTableプロシージャ 1

- setHistogramTableプロシージャ 1

- setIDプロシージャ 1

- setLayerIDプロシージャ 1

- setLayerOrdinateプロシージャ 1

- setModelCoordLocationプロシージャ 1

- setModelSRIDプロシージャ 1

- setNODATAMaskプロシージャ 1

- setOrthoRectifiedプロシージャ 1

- setRasterTypeプロシージャ 1

- setRectifiedプロシージャ 1

- setScalingプロシージャ 1

- setSeqIDプロシージャ 1

- setSourceInfoプロシージャ 1

- setSpatialReferencedプロシージャ 1

- setSpatialResolutionsプロシージャ 1

- setSpectralResolutionプロシージャ 1

- setSpectralUnitプロシージャ 1

- setSRSプロシージャ 1

- setStatisticsプロシージャ 1

- setULTCoordinateプロシージャ 1

- setVATプロシージャ 1

- setVersionプロシージャ 1

- ソース情報

- 追加 1

- 取得 1

- 設定、置換、削除 1

- 空間エクステント

- 生成および設定 1

- SDO_GEORASTERのspatialExtent属性

- 生成および設定 1

- 空間参照システム(SRS)

- 説明 1

- 空間解像度の値

- 生成 1

- 取得 1

- 設定 1

- スペクトル解像度

- 取得 1

- 設定 1

- スペクトル単位

- 取得 1

- 設定 1

- sRGB ColorSpace 1

- SRID 999999 (unknown CRS) 1

- SRS(空間参照システム)

- 説明 1

- 統計分析

- 即時 1

- stdキーワード

- : mosaicParamパラメータ 1

- 記憶域パラメータ 1

- storageParamパラメータ 1

- 記憶域サイズ

- ラスター 1

- イメージのストレッチ 1

- subsetプロシージャ 1

T

- TABLE_NAME列(USER_SDO_GEOR_SYSDATAビュー) 1

- タッセルド・キャップ変換(TCT) 1

- TCT (タッセルド・キャップ変換) 1

- テンプレート

- GeoRasterアプリケーションの開発 1

- 時間参照システム(TRS)

- 説明 1

- テーマ

- ラスター・レイヤー 1

- しきい値処理 1

- TIFFイメージ形式

- GeoRasterでのサポート 1

- 転送

- データベース間のGeoRasterデータ 1

- 変換

- GeoRasterの座標情報 1

- トランスポータブル表領域

- GeoRasterデータでの使用 1

- トリガー

- GeoRaster DMLトリガーの作成 1 , 2 , 3

- GeoRaster DMLトリガーの再作成 1

- TRS(時間参照システム)

- 説明 1

U

- ULTCoordinate

- 定義 1

- unknown CRS座標参照系 1

- updateRasterプロシージャ 1

- 更新

- GeoRasterオブジェクトのコミット前 1

- upgradeGeoRasterファンクション 1

- 以前のリリースからのアップグレード

- 要件 1

- USER_SDO_GEOR_SYSDATAビュー 1

- ユーティリティ・サブプログラム

- GeoRaster 1

V

- validateBlockMBRファンクション 1

- validateForMosaicSubsetプロシージャ 1

- validateGeoRasterファンクション 1

- 検証

- GeoRasterオブジェクト 1

- 値属性表(VAT)

- 名前の取得 1

- 名前の設定 1

- ベクトル・データ

- 説明 1

- 植生指標計算 1

- ビューア・ツール

- GeoRaster 1

- GeoRasterのビューア・ツール 1

- ビュー

- ALL_SDO_GEOR_SYSDATA 1

- USER_SDO_GEOR_SYSDATA 1

- 仮想モザイク 1

W

- Workspace Manager

- GeoRasterの使用 1

- ワールド・ファイル(ESRI)

- ロード 1

- GeoRasterでのサポート 1

X

- XML DB

- GeoRasterでの使用 1

- XML DBリポジトリ

- アップグレード時にインストールが必要 1

- GeoRasterメタデータのXMLスキーマ 1

- GeoRasterのXMLスキーマ表 1

Z

- ZLIB形式

- 圧縮されたデータの格納 1

Oracleの法律上の注意点

コピーライト

Copyright © 1994-2017, Oracle and/or its affiliates. All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

Pre-General Availability (一般提供前)版のドキュメントについて

このドキュメントがPre-General Availability (一般提供前)版の場合:

このドキュメントはPre-General Availability (一般提供前)版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のPre-General Availability (一般提供前)版のドキュメントについて

このドキュメントが非公開のPre-General Availability (一般提供前)版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のPre-General Availability Trial Agreement (Pre-GAトライアル契約)のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle Partner Network Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティ

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。