原典情報: $ORACLE_HOME/md/doc/README.txt
目次
1 リリース10.1.0.3.0パッチセット
2 インストール
5『Oracle Spatial GeoRaster』の補足事項
1つ以上のsdo_topo_geometryレイヤーがあるデータベース内の各トポロジについて、次の手順を実行します。
トポロジを所有するユーザーとして接続します。
create view <Topology-Name>_RelationL as
select a.* from <Topology-Name>_Relation$ a,
all_sdo_topo_metadata b where b.TG_LAYER_LEVEL = 0
and b.TOPOLOGY_ID = :topo_id -- obtained in Step 2
and a.TG_LAYER_ID = b.TG_LAYER_ID ;
GRANT SELECT on <Topology-Name>_RelationL to MDSYS ;
Oracle Spatialのインストール手順については、次のマニュアルを参照してください。
『Oracle Spatialユーザーズ・ガイドおよびリファレンス』
1) SYSTEM AS SYSDBAとして接続し、MDSYSユーザーを作成します。
2) $ORACLE_HOME/md/admin/mdprivs.sqlファイルを実行します。
3) SYSTEM AS SYSDBAとして接続し、catmd.sqlスクリプトを実行します。このスクリプトは$ORACLE_HOME/md/adminにあります。これにより、Oracle Spatial製品がインストールされます。
1) 国土管理、地籍およびユーティリティ・アプリケーションをサポートするための、新しいトポロジおよびネットワーク・データ・モデル。
2) Raster/DEMおよび地図参照イメージをサポートするための、新しいGeoRasterデータ・モデル。
3) アドレス情報を緯度/経度に変換するためのDatabase Geocoder。このジオコーダは、Oracle Spatialジオコーダ・スキーマに格納されているデータを完全にデータベース内で処理します。
第10章にあるALTER INDEXの最初の例ではクワッド・ツリー索引を参照していますが(sdo_levelキーワードが含まれるため)、この機能は廃止になりました。
次のバージョンのマニュアルでは、この例はRツリー索引に変更されます。
SELECT /*+ LEADING(b) INDEX(a cola_spatial_idx) */ a.gid
FROM cola_qry b, cola_markets a
WHERE b.gid =1 and
SDO_NN(a.shape, b.shape, 'querytype=window sdo_num_res=1')='TRUE';
MBR_GEOMETRY列は、<topology-name>_FACE$表で指定する必要があります。
1.5.3項の表1-4に、MBR_GEOMETRYは必須ではないと記述されていますが、これは誤りです。
1.6.1項の表1-7に、TG_TYPE属性の説明が次のように記述されています。 「実際のトポロジ・ジオメトリの大部分は、それらの複合タイプです。」 これが該当するかどうかは、アプリケーションに依存します。
1.8.1項のリストにIntArrayListクラスが含まれていますが、これは誤りです(トポロジJava API)。
このクラスはパッケージ・カプセル化されているため、APIのパブリック・インタフェースではアクセスできません。
1) トポロジにレイヤーを追加できるのは、そのトポロジの所有者のみです。そのため、ユーザーAがトポロジTの所有者で、ユーザーBがtg_layer表L1の所有者である場合、ユーザーAがtg_layerをトポロジに追加するには次のコールを発行する必要があります。
add_topo_geometry_layer('T', 'B.L1', ... )
このレイヤーをトポロジから削除する場合にも、同様のコールが必要です。
2) ユーザーAは、<TOPOLOGY>_NODE$、<TOPOLOGY>_EDGE$、<TOPOLOGY>_FACE$の各表に対するSELECT権限をユーザーBに付与する必要があります。
3) ユーザーBは、L1に対するSELECT権限とINDEX権限をユーザーAに付与する必要があります。
5 『Oracle Spatial GeoRaster』の補足事項セルの深さが8ビット以下の場合、ラスター・ブロック(BLOB)の各バイトには2つ以上のセルが含まれるため、1バイトの各ビットがセル・データで完全に埋まります。セルは常にバイトに左から右へと埋められます。たとえば、セルの深さが4ビットの場合、1バイトに2つのセルが入ります。バイトの最初の4ビットにセルの値、2番目の4ビットにはインターリーブ型により判別される、その次のセルの値が入ります。
SDO_GEOR.getRasterSubsetプロシージャが完了すると、rasterBLOBパラメータには四角形表示なしのトリミング済ウィンドウ内のセル/ピクセル・データが含まれます。インターリーブ型は、サブセットが取り出されたGeoRasterオブジェクトの場合と同じです。BLOBにはパディングはありません。ただし、セルの深さが8ビット未満で、出力に必要な合計ビット数が8で除算できない場合は、通常のパディングとは異なり、結果の最終バイトが後続ビットを表す0(ゼロ)で埋められます。
SDO_GEORパッケージでは、GeoRasterオブジェクトのメタデータと補助データを更新するための多数のサブプログラムが定義されています。これらのサブプログラムは、ほとんどの名前がsetで始まり、正常に更新できない場合は一般エラーORA-13418「set関数のパラメータがNULLか無効です」を戻します。この項では、このようなエラーの原因について詳しく説明します。ここで説明する内容は、通常は『Oracle Spatial GeoRaster』にサブプログラムに関して記載されている「使用方法」の補足ですが、矛盾点がある場合はこの項の説明が優先されます。
SDO_GEOR.setBinTableでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、あるいはtableNameパラメータが空の文字列('')の場合です。
SDO_GEOR.setBlankCellValueでは、valueパラメータがNULLであるかcellDepth指定と矛盾する場合はエラーORA-13421、GeoRasterオブジェクトが空白でない場合はエラーORA-13418が発生します。
SDO_GEOR.setColorMapでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、赤/緑/青/アルファ値がNULLであるか有効範囲外の場合、cellValue配列に重複値がある場合、あるいはcellValue値がNULL、有効範囲外または順不同の場合です。
SDO_GEOR.setColorMapTableでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、あるいはtableNameパラメータが空の文字列('')の場合です。
SDO_GEOR.setDefaultBlueでエラーORA-13418が発生するのは、青色コンポーネントのみに使用するレイヤーの番号を設定または削除しようとするか、defaultBlueがGeoRasterオブジェクトに有効なレイヤー番号でない場合です。
SDO_GEOR.setDefaultColorLayerでエラーORA-13418が発生するのは、defaultRGBパラメータのサイズが正しくないか、そのすべての要素がNULLでないかGeoRasterオブジェクトに有効なレイヤー番号でない場合です。defaultRGB配列の要素は、すべてがNULLであるか、すべてが非NULLである必要があります。3つのレイヤー番号を同時に設定または削除する必要があるため、NULLの配列要素と非NULLの配列要素を混在させることはできません。
SDO_GEOR.setDefaultGreenでエラーORA-13418が発生するのは、緑色コンポーネントのみに使用するレイヤーの番号を設定または削除しようとするか、defaultGreenがGeoRasterオブジェクトに有効なレイヤー番号でない場合です。
SDO_GEOR.setDefaultRedでエラーORA-13418が発生するのは、赤色コンポーネントのみに使用するレイヤーの番号を設定または削除しようとするか、defaultRedがGeoRasterオブジェクトに有効なレイヤー番号でない場合です。
SDO_GEOR.setGrayScaleでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、グレー値がNULLであるか有効範囲外の場合、cellValue配列に重複値がある場合、あるいはcellValue値がNULL、有効範囲外または順不同の場合です。
SDO_GEOR.setGrayScaleTableでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、あるいはtableNameパラメータが空の文字列('')の場合です。
SDO_GEOR.setHistogramTableでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、あるいはtableNameパラメータが空の文字列('')の場合です。
SDO_GEOR.setLayerIDでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、あるいはidパラメータがNULLであっても対応するレイヤー情報が存在する場合です。
SDO_GEOR.setLayerOrdinateでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、あるいはordinateパラメータがNULLであるか、layerNumberでオブジェクト・レイヤーが指定されていないときにlayerNumber-1以外の値に設定されている場合です。
SDO_GEOR.setModelSRIDの場合は、メタデータに空間参照情報がなければsridパラメータをNULLに設定し、メタデータに空間参照情報がある場合はsridパラメータをNULL以外の値に設定する必要があります。それ以外の場合はエラーORA-13418が発生します。
SDO_GEOR.setOrthoRectifiedの場合は、メタデータに空間参照情報がなければisOrthoRectifiedパラメータをNULLに設定する必要があります。isOrthoRectifiedパラメータがNULLでない場合は、TRUEまたはFALSEに設定する必要があります(大/小文字区別はありません)。それ以外の場合はエラーORA-13418が発生します。
SDO_GEOR.setRasterTypeでは、rasterTypeパラメータがNULLの場合はエラーORA-13402、rasterTypeの最初の3桁に変更がある場合はエラーORA-13418が発生します。
SDO_GEOR.setRectifiedでエラーORA-13418が発生するのは、isRectifiedパラメータがNULL、TRUE、FALSEのいずれでもない場合(大/小文字区別はありません)、またはisRectifiedパラメータがNULLでなく、かつメタデータに空間参照情報がない場合です。
SDO_GEOR.setScalingでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、scalingFuncパラメータの配列サイズが正しくない場合、a0、a1、b0およびb1のいずれかがNULLの場合、あるいはb0とb1の両方が0(ゼロ)の場合です。
SDO_GEOR.setSpatialReferencedでエラーORA-13418が発生するのは、isReferencedパラメータがNULL、TRUE、FALSEのいずれでもない場合(大/小文字区別はありません)、メタデータに空間参照情報がなく、かつisReferencedパラメータがNULLでない場合、またはメタデータに空間参照情報があり、かつisReferencedパラメータがNULLの場合です。
SDO_GEOR.setSpatialResolutionsの場合は、resolutionsパラメータがNULLでなく、かつメタデータに空間参照情報がなければ、このプロシージャの後で最小のデフォルト値を使用してメタデータに空間参照情報が追加されます。
SDO_GEOR.setSpectralResolutionの場合は、メタデータにバンド参照情報がなければ、resolutionパラメータをNULLにする必要があります。それ以外の場合はエラーORA-13418が発生します。
SDO_GEOR.setSpectralUnitの場合は、メタデータにバンド参照情報がなければunitパラメータをNULLにする必要があります。また、メタデータにバンド参照情報がある場合は、unitパラメータで有効な単位値を指定する必要があります。それ以外の場合はエラーORA-13418が発生します。
SDO_GEOR.setSRSの場合は、srsパラメータ・オブジェクト内でisReferenced、isRectifiedおよびisOrthoRectifiedをTRUEまたはFALSEに設定する必要があります(大/小文字区別はありません)。spatialResolutionsには適切なサイズの配列を指定する必要があります。空間の許容値には負の値を指定できません。modelCoordLocationには0(ゼロ)または1を指定する必要があります。多項式のパラメータにはNULLを指定できません。
SDO_GEOR.setStatisticsでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、あるいはstatisticsパラメータの配列サイズが正しくないか、NULLの配列要素が含まれている場合です。
SDO_GEOR.setULTCoordinateでエラーORA-13418が発生するのは、ultCoordinateパラメータがNULLであるか、配列サイズが正しくないか、NULLの配列要素が含まれている場合です。
SDO_GEOR.setVATでエラーORA-13418が発生するのは、layerNumberパラメータがNULLであるかGeoRasterオブジェクトに対して無効な場合、あるいはtableNameパラメータが空の文字列('')の場合です。
SDO_GEOR.setVersionでエラーORA-13418が発生するのは、majorVersionパラメータまたはminorVersionパラメータが空の文字列('')である場合です。
ALTER TABLE文を使用してGeoRaster表またはGeoRaster列の名前を変更する場合は、変更内容が反映されるようにGeoRasterシステム・データを手動でメンテナンスする必要があります。たとえば、次の一般形式のUPDATE文を使用します。
UPDATE USER_SDO_GEOR_SYSDATA
SET TABLE_NAME=UPPER(new_table_table), COLUMN_NAME=UPPER(new_column_name)
WHERE TABLE_NAME=UPPER(old_table_name)
AND COLUMN_NAME=UPPER(old_column_name);
また、GeoRaster表/列のペアに定義されている必須のGeoRaster DMLトリガーを削除して再作成する必要があります。
FLASHBACK TABLE文を使用してGeoRaster表を前の状態にリストアする場合は、GeoRasterシステム・データを手動でリストアする必要があります。また、元のトリガー名はリストアできないため、FLASHBACK TABLE TO BEFORE DROP文を実行した後は、表に定義されている必須のGeoRaster DMLトリガーを削除して再作成する必要があります。
USER_SDO_GEOR_SYSDATAビューに対して挿入または更新を行う場合は、表の名前、列名およびラスター・データ表の名前が大文字で格納されていることを確認する必要があります。たとえば、『Oracle Spatial GeoRaster』の第3.14項の最後にあるINSERT文には、次のようにUPPERファンクションの使用を組み込んでください。
INSERT INTO USER_SDO_GEOR_SYSDATA
VALUES (UPPER('georaster_table'), UPPER('georaster_column'), null,
UPPER('rdt_name'), dangling_raster_id, null);
3つの文字列に大文字のみを使用する場合、前述の例のUPPERファンクションは不要ですが(つまり、マニュアルの例をそのまま使用できますが)、名前がUSER_SDO_GEOR_SYSDATAビューに大文字で格納されていることは確認する必要があります。方向ベクトル用に新しい要素タイプが導入されています。この新しい要素タイプは、SDO_ELEM_INFO_ARRAYの追加エントリとなります。
(ordinate_offset, 1, 0) は方向ベクトルであり、要素タイプ1の0を解析すると、ordinate_offsetから始まる要素となります。
方向ベクトル要素は、常にsdo_ordinates配列内の直前の点に関連付けられています。Oracle検証ルーチンは、点要素が関連付けられていない方向要素を検出します。
点とベクトルの関係は次のようになります。
2つの座標を持つ点の場合、ベクトルには( i , j )が含まれます。
SDO_GTYPE 2001または2005
elem_info_array(1,1,1, 3,1,0) sdo_ordinate_array ( x , y , i , j )
3つの座標を持つ(その1つがメジャー)点の場合、ベクトルには( i , j )が含まれます。
SDO_GTYPE 3301
elem_info_array(1,1,1, 4,1,0) sdo_ordinate_array ( x , y , m , i , j )
3つの座標を持ちメジャーを持たない点の場合、ベクトルには( i , j , k )が含まれます。
SDO_GTYPE 3001または3005
elem_info_array(1,1,1, 4,1,0) sdo_ordinate_array ( x , y , z , i , j , k )
4つの座標を持ち位置4にメジャーを持つ点の場合、ベクトルには( i , j , k )が含まれます。
SDO_GTYPE 4401
elem_info_array(1,1,1, 5,1,0) sdo_ordinate_array ( x , y , z , m , i , j , k )
4つの座標を持ち位置3にメジャーを持つ点の場合、ベクトルには( i , j , k )が含まれます。
SDO_GTYPE 4301
elem_info_array(1,1,1, 5,1,0) sdo_ordinate_array ( x , y , m , z , i , j , k )
4つの座標を持ちメジャーを持たない点の場合、ベクトルには( i , j , k )が含まれます。
SDO_GTYPE 4001または4005
elem_info_array(1,1,1, 5,1,0) sdo_ordinate_array ( x , y , z , v , i , j , k )
vは任意の値です。