リレーショナル・モデル・クラス

Oracle Spatial リレーショナル・モデル・データベースからデータを読み込むためのクラス

Oracle® SDO リレーショナル・モデルのリーダー・クラス (パッケージ ilog.views.maps.format.oracle) は次のとおりです。

IlvSDOFeatureIterator クラス

IlvSDOFeatureIterator クラスは、リレーショナル Oracle Spatial レイヤーへの SQL 照会の結果からデータを読み込み、そのデータを IlvMapFeature オブジェクトに変換します。JViews Maps アプリケーションは、このクラスを使用して Oracle Spatial データを透過的に処理できます。
以下の Java™ コードの例では、ROADS_SDOGEOM という Oracle Spatial レイヤーからデータを読み込むための照会を実行します。これには、java.sql パッケージからのクラスが含まれています。
String query = "SELECT * FROM ROADS_SDOGEOM ORDER BY 1, 2, 4 ";
Statement statement = getConnection().createStatement();
ResultSet resultSet = statement.executeQuery(query);
IlvSDOFeatureIterator iterator = new IlvSDOFeatureIterator(resultSet);
connection 変数 は java.sql.Connection オブジェクトです。
照会の結果は、次の 3 つの基準を使用して、以下に示す順序どおりに並べられます。
  1. Geometric ID (GID)
  2. 要素シーケンス (ESEQ)
  3. 行シーケンス (SEQ)
メモ
この順序は、IlvSDOFeatureIterator を正常に動作させるために必要です。
Oracle Spatial レイヤーへの照会の ResultSet を使用して、 IlvSDOFeatureIterator を初期化できますが、SDO のすべての列が resultSet (GID、ESEQ、ETYPE、SEQ、および座標を定義する列) にある必要があります。
このイテレーターが返す機能に属性はありません。ただし、Oracle Spatial ジオメトリーの GID を各機能の ID として使用すると、この ID でデータベースのその他の属性を取得できます。メソッド getId を参照してください。

IlvSDOLayer クラス

このクラスは、リレーショナル Oracle Spatial データ・ソースにロード・オンデマンドを実装します。デフォルトの実装は、空間インデックスが実行された Oracle Spatial レイヤーを使用して、Oracle Spatial タイリングと同等のタイリングで内容を読み込みます。
以下の例では、ROADS という Oracel Spatial レイヤーで IlvSDOLayer を作成します。
IlvSDOConnection connection = new IlvSDOConnection(url, userName, password);
IlvSDOLayer layer = new IlvSDOLayer(connection, "ROADS");
manager.addLayer(layer,-1);

IlvSDOTileLoader クラス

このクラスは、Oracle Spatial データベースからデータを取得する際に追加機能を提供します。これらの機能には、IlvSDOLayer のデフォルトの振る舞いを補完する役割があります。例えば、レイヤーにフィルターを追加したり、Oracle タイリングとは異なるタイリングを定義したりすることができます。
<installdir> /jviews-maps89/samples/oracle/index.html ファイルにある 例は、空間照会を使用して JViews Maps タイル用のデータを取得する IlvSDOTileLoader サブクラスの実装方法を示しています。

IlvDefaultSDOTileLoader クラス

このクラスは IlvSDOTileLoader のサブクラスで、IlvSDOLayer が使用します。このクラスは部分的に最適化されています。例えば、 setTileGroupingCount メソッドを使用して、データベースに対する単一照会でグループ化されるタイル数を設定できます。各タイルは空間照会に対応します。ロード・オンデマンドを実行するたびに平均 n 個のタイルがある場合は、すべての n 照会が、データベースに送られる単一照会にグループ化される setTileGroupingCount(n) を使用する必要があります。
メモ
IlvSDOLayer レイヤーのロード・オンデマンドで取得した各 IlvMapFeature で特別な操作を処理する場合は、 IlvDefaultSDOTileLoader をサブクラス化して getFeatureIterator() メソッドをオーバーライドする必要があります。このメソッドでは、getNextFeature() メソッド (この中で、レイヤーから返された各 getNextFeature() で特別な処理を実行できます) をオーバーライドした IlvSDOFeatureIterator のサブクラスのインスタンスを返す必要があります。最後に、IlvDefaultSDOTileLoader のサブクラスをレイヤーのタイル・ローダーとして設定する必要があります。

Oracle Spatial リレーショナル・モデル・データベースにデータを書き込むためのクラス

IlvSDOWriter クラスを使用すると、地図機能を Oracle Spatial リレーショナル・データベースに書き込むことができます。

IlvSDOWriter クラス

IlvSDOWriter クラスは、Oracle Spatial のリレーショナル・モデルでサポートされているジオメトリーが機能に含まれる IlvMapFeatureIterator を記述し、それらを次の例のようにデータベースに書き込むことができます。
IlvSDOWriter writer = 
   new IlvSDOWriter(connection.getConnection()
                   "MyLayer", 
                   16, 
                   new IlvCoordinate(-360d, 90d), 
                   new IlvCoordinate(360d, -90d));
 // Creating a source feature iterator.
 IlvShapeFileReader reader = new IlvShapeFileReader(...);
 // Dumping its content to the Oracle layer.
 writer.writeFeatureIterator(reader);
IlvSDOWriterwrite() メソッドは、機能の属性を書き込みません。機能の属性を書き込む場合は、super.writeFeature(feature) を呼び出した後、IlvSDOWriterwriteFeature() メソッドをサブタイプ化できます。
Oracle Spatial ライターでサポートしているジオメトリーは、以下のとおりです。