シェープ・ファイル形式を読み込むためのクラス

ilog.views.maps.format.shapefile パッケージには、次のクラスが含まれています。
  • このクラスは、 IlvMapFeatureIterator インターフェースを実装し、.shp.dbf 、および .shx ファイルを読み込めるようにします。シェープ・ファイルでは、使用する投影図法に関する情報がないため、このリーダーは地理参照されません。このリーダーでは以下の 2 つの専用リーダーを使用します。この getNextFeaturegetNext メソッドは、これらの専用リーダーで生成した情報を単一地図機能にマージします。
  • このクラスは、 IlvMapFeatureIterator インターフェースを実装します。このリーダーは、.shp ファイルのみを読み取ります。
  • IlvDBFReader: .dbf ファイルを読み取ります。
  • IlvShapeFileIndex: .shx ファイルを読み取ります。
  • IlvShapeSpatialIndex: 地図空間インデックス .idx ファイルを読み取ります。

IlvSHPReader クラス

シェープ・ファイルに保存されるジオメトリーは、必ずしも 2D オブジェクトとは限りません。シェープ・オブジェクトを構成する各点は、測地データ、または測地データと標高に関連付けることができます。
測地データはインデックス 0 の地図機能属性に格納される、タイプ IlvAttributeArray の属性に格納されます。
以下は、測地データに関連付けられる形状のタイプです。
  • POINTZ
  • POLYLINEZ
  • POLYGONZ
  • MULTIPOINTZ
  • POINTM
  • POLYLINEM
  • POLYGONM
  • MULTIPOINTM
標高はインデックス 1 の地図機能属性に格納される、タイプ IlvAttributeArray の属性に格納されます。
以下は、測地データと標高に関連付けられる形状タイプです。
  • POINTZ
  • POLYLINEZ
  • POLYGONZ
  • MULTIPOINTZ
JViews Maps パッケージには、3D のレンダリングに不可欠なタイプである MULTIPATCH の形状オブジェクトを表す定義済みのジオメトリーがないため、これらは無視されます。ただし、クラス IlvShapeSHPReader をサブタイプ化して、この振る舞いを変更できます。形状オブジェクトは保護されたメソッドで読み込まれるため、リーダーを修正して新しいジオメトリーを含める場合も、最小限の作業で済みます。

IlvDBFReader クラス

このリーダーは、.dbf 形式のファイルを読み込む場合にのみ使用します。また、次のようなファイルの反復処理に使用できます。
 try {
       IlvDBFReader reader = new IlvDBFReader("myFile.dbf");
       IlvFeatureAttributeProperty attributes = reader.getNextRecord();
       while (attributes != null) {
         // Process attributes.
         ...
        attributes = reader.getNextRecord();
       }
    } catch (Exception e) {
       e.printStackTrace();
    }
リーダーが URL ではなくファイルから作成されている場合は、記録番号を指定することで地図機能の属性に直接アクセスできます。
reader.readRecord(index);

IlvShapeFileReader クラス

このリーダーは、ジオメトリーを格納する .shp ファイルと、属性を格納する .dbf ファイルを同時に読み込み、情報を単一 IlvMapFeature オブジェクトにマージします。
次のいずれかの方法でインスタンス化できます。
  • .dbf ファイル、および .shp ファイルの名前を指定。
  • 上記の 2 つのファイルの URL を指定。
  • IlvDBFReader および IlvSHPReader オブジェクトを直接指定。
    これは、例えば派生した IlvSHPReader オブジェクトを使用する場合などに役立ちます。