地図の保存と再ロード

JViews Maps 8.1 では、専用の .ivl ファイル形式で地図を保存することができます。このファイル形式は、基本的には、正規の Rogue Wave® JViews 形式を多少修正して、大量のラスター・データを含む地図の読み込みパフォーマンスを向上させたものです。
地図を保存するには、以下の手順に従います。
  1. ファイル名から IlvMapOutputStream オブジェクトを作成します。このクラスは IlvOutputStream を拡張し (『基礎編JViews Framework』の「入出力操作」を参照)、 IlvManager. よりコンパクトなバイナリー形式、またはより読みやすい ASCII 形式でファイルを書くという選択もできます。
    String mapFilename = "myMap.ivl";
    boolean binary = false;
    IlvMapOutputStream mapOutput = new IlvMapOutputStream(mapFilename, binary);
    
    上記の IlvMapOutputStream コンストラクターを使用するとき、イメージ・ファイルの名前 (「.img ファイル」を参照) は、.img 拡張子を追加するか、または ivl 拡張子を .img で置き換える方法で、指定した地図ファイル名から推論されることに注意してください。また、IlvMapOutputStream を異なるコンストラクターで作成して、java.io.OutputStream を地図コンテンツの保存先に指定し、異なるファイル名を .img ファイルに指定することもできます。この場合、地図を読み取るときに、適切な一致する IlvMapInputStream のコンストラクターを使用する必要があります。詳細については、下の地図の再読み取り手順を参照してください。
  2. また次のようなオプションもあります。
    地図テーマのみを保存できます。テーマ・ファイルのみを再ロードすると、モデルのすべての IlvMapDataSource インスタンスが再スタートされ、オリジナル・ファイルからデータを読み込んで地図を再構築します。これは、.ivl ファイルの再ロード中に、オリジナル・データ・ソース (ESRI シェープ・ファイル、DTED® など) が利用できる場合に便利です (同じマシンで作業している場合や、データ形式がネットワーク上のリソースに保存されているときに同じネットワーク上で作業している場合など)。作成されるファイルは小さく、通常ほんの数十 KB です。
    mapOutput.setWritingObjects(false);
    
    逆に、地図をオリジナル・データ・ソースなしで配布する予定の場合、またはより高い再ロード・パフォーマンスを希望する場合は、すべてのデータをファイルに保存するようにします。
    mapOutput.setWritingObjects(true);
    
  3. マネージャーを IlvMapOutputStream に記述し、残っているリソースをクリーンアップします。
    try {
      mapOutput.write(manager);
    } catch (IOException ex) {
      // handle I/O exception here...…
    }
    
地図を再ロードするには、以下の手順に従います。
  1. まず、現在のマネージャーをクリアするようにします。「地図データのクリア」を参照してください。
  2. IlvMapInputStream を作成し、これを使用して地図ファイルを読み込みます。これにより、読み込まれたデータと該当する読み込まれた地図モデル (データ・ソース、地図レイヤーなど) との再接続が管理されます。
    String mapFilename = "myMap.ivl";
    IlvMapInputStream mapInputStream = new IlvMapInputStream (mapFilename);
    try {
       mapInputStream.read(manager);
    }  catch (Exception ex) {
       // handle reading exceptions here
    }
    
    上記の IlvMapInputStream コンストラクターを使用するとき、.ivl ファイルに付随する .img ファイル (IlvMapInputStream に渡される) は、.ivl ファイルと同じディレクトリーになければなりません。異なるディレクトリーにあると、ストリームがこのファイルを見つけられず、地図上の画像が再現されません。
    地図を保存するときに、.img ファイルに異なる名前を指定する場合 (「地図の保存と再ロード」を参照) は、以下のように適切なコンストラクターを使用して IlvMapInputStream にもファイル名を指定する必要があります。
    String ivlFilename = "myMap.ivl";
    String imgFilename = "myImgFilename.img";
    
    //Create the input stream for the .ivl file.
    FileInputStream fis = new FileInputStream(ivlFilename);
    
    //Create the IlvMapInputstream and specify the image file name.
    IlvMapInputStream mapInputStream = new IlvMapInputStream(fis, imgFilename);
    
    //Read the map as described previously.
       try {
         mapInputStream.read(manager);
         } catch (Exception ex) {
    // Handle reading exceptions here.
    }