イメージ・ファイル・リーダー

汎用的なイメージ・ファイル・リーダーで処理される GIF、PNG、JPEG などの形式は、Java™ プラットフォーム標準版でサポートされています。これらの形式でコード化されたイメージには地理参照情報が含まれないため、この種類のイメージを読み込む前に同情報を確認する必要があります。また、GeoTIFF タグが含まれていない TIFF イメージの場合も同様です。以下は、 IlvRasterBasicImageReader クラス、 IlvImageReader クラス、および IlvImageTileLoader クラスの説明です。

IlvRasterBasicImageReader クラス

IlvRasterBasicImageReader クラスは、再投影可能でスタイリング可能なピクセル・オンデマンド・イメージを作成する、GIF、JPG、PNG、または TIFF リーダーです。

イメージ・リーダーの作成

まず、イメージ・リーダーを作成して、読み込むイメージ・ファイルを追加します。
IlvRasterBasicImageReader imageReader = new IlvRasterBasicImageReader();
imageReader.addMap(gifFile);
これらのイメージは経度または緯度情報がないため、イメージを地理参照する必要があります。これを行う簡単な方法は、イメージ境界を経度および緯度で設定することです。これは、当然、経度および緯度の線に沿って空間範囲を持つイメージにのみ機能します。より複雑なイメージの詳細な管理のために、マップ・ビルダー は再投影およびイメージ補間を管理するイメージ変換モデルを提供しています (ImageControlModel クラス)。
この下の例では、地球全体を網羅するイメージを設定します。
imageReader.setImageBounds(0,-Math.PI,Math.PI/2,Math.PI,-Math.PI/2);

データ・ソースの作成

リーダーを作成したら、次にデータ・ソースを作成し、これをマネージャー・プロパティーに統合させます。
IlvMapDataSource imageDataSource = 
IlvRasterDataSourceFactory.buildTiledImageDataSource(manager,imageReader,true,t
rue,null);
IlvMapDataSourceModel dataSourceModel = 
IlvMapDataSourceProperty.GetMapDataSourceModel(manager);
dataSourceModel.insert(imageDataSource);

データの読み込み

これでデータの読み込みを開始することができます。
dataSourceModel.start();
データ・ソースを開始すると、必要なタイル・レイヤー、タイル・マネージャー、および IlvRasterIcon インスタンスを作成して、ピクセル・オンデマンド機能および新しい地理参照済みイメージの連続的な表示を管理します。
以下のコードを使用して、イメージのサブサンプル化したプレビューを作成することもできます。
int iconWidth=imageReader.getRasterProperties(0).getNumColumns();
int iconHeight=imageReader.getRasterProperties(0).getNumLines();
Image image = 
Toolkit.getDefaultToolkit().createImage(iReader.getTileLoader(0).getScaledImage
Producer(subsampling, new IlvRect(0, 0, iconWidth, iconHeight)));

IlvImageReader クラス

イメージ再投影、スタイリング、またはピクセル・オンデマンド機能を必要とせず、 単に単一の GIF、JPG、または PNG イメージを挿入して地理参照する場合は、IlvImageReader クラスを使用できます。
メモ
このクラスを使用する場合、作成されたイメージは、データ・ソースおよび地図レイヤー管理との互換性はありません。
このクラスは、 IlvMapFeatureIterator インターフェースを実装します。これは、ファイルに保存されているイメージの IlvMapFeature オブジェクトを 1 つだけ返します。
この地図機能のジオメトリーは、タイプ IlvMapImage. この地図機能に属性はありません。このリーダーを使用するには、このイメージのファイル名と座標を指定する必要があります。
// The image is known to be at 77 degrees 30 seconds east
// and 10 degrees north for the upper left corner. 
// Lower right corner is at 82 degrees 30 seconds east
// and 5 degrees north.
IlvCoordinate ul = new IlvCoordinate(77.5, 10);
IlvCoordinate lr = new IlvCoordinate(82.5, 5);
IlvImageReader reader = new IlvImageReader("image.jpg", ul, lr);
IlvMapFeature feature = reader.getNextFeature();
IlvFeatureRenderer renderer = reader.getDefaultFeatureRenderer();
// Image is known to be in the geographic coordinate system.
IlvCoordinateTransformation tr 
        = new IlvCoordinateTransformation(IlvGeographicCoordinateSystem.WGS84,
                                         IlvGeographicCoordinateSystem.WGS84,
                                         new IlvMapAffineTransform());
IlvGraphic g = renderer.makeGraphic(feature, tr);
manager.addObject(g, false);

IlvImageTileLoader クラス

イメージ再投影、スタイリング、またはピクセル・オンデマンド機能は必要ないものの、イメージのセットへのアクセスが必要な場合は、 IlvImageTileLoader クラスを使用することができます。
メモ
このクラスを使用する場合、作成されたイメージは、データ・ソースおよび地図レイヤー管理との互換性はありません。この情報は、古いバージョンの JViews との互換性のために提供されています。
このクラスを使用して、1 つの大きなイメージの部分にあたるイメージ・セットを読み込みます。このタイル・ローダーを使用すると、特定の時間に表示されるタイルに対応するそれぞれのイメージだけをアプリケーションで読み込むことができます。各ファイルには名前を付けて、対応するタイルの行インデックスと列インデックスがわかるようなファイル名を構成する必要があります。このタイル・ローダーを使用するには、所定の タイル のファイル名を再構成する際に必要な情報、つまり、ファイル命名スキームに一致するパターンと 2 つのフォーマット設定ストリングを指定する必要があります。
IlvImageTileLoader loader = new IlvImageTileLoader(String pattern,
                                                   String rowFormatString,
                                                   String colFormatString);
pattern 引数には、「%r」と「%c」変換指定子を 1 つずつ含める必要があります。%r 変換指定子でタイルの行インデックスを、%c 変換指定子で列インデックスをそれぞれ変換します。この変換パラメーターは、rowFormatString および colFormatString パラメーターに従って置換されます。このフォーマット・ストリングを使用して、2 つの java.text.DecimalFormat ストリングを構成します。