Maps > 定義済みリーダー > 形状ファイル・リーダー > 形状ファイル形式を読み込むためのクラス
 
形状ファイル形式を読み込むためのクラス
次に示すクラスは、形状ファイル形式の読み込みに使用されます。
*IlvShapeFileReader
このクラスは、IlvMapFeatureIterator のサブクラスで、これによって .shp ファイル、.dbf ファイル、および .shx ファイルが読み込めます。形状ファイルでは使用する投影図法に関する情報がないため、このリーダーは地理参照されません。機能イテレーター および非地理参照ファイルをロードする を参照してください。
*IlvShapeSHPReader
このクラスは、IlvMapFeatureIterator のサブクラスです。このリーダーは、.shp ファイルのみを読み込みます。
*IlvShapeDBFReader
このクラスは、 .dbf ファイルのみを読み込みます。
*IlvShapeFileIndex
このクラスは、 .shx ファイルを読み込みます。詳細については、IlvShapeFileIndex クラスを参照してください。
*IlvShapeSpatialIndex
このクラスは、空間インデックス・ファイル (.idx ファイル) を読み込みます。詳細については、IlvShapeSpatialIndex クラスを参照してください。
IlvShapeFileReader
このリーダーは、ジオメトリーを格納する.shp ファイルと、アトリビュートを格納する .dbf ファイルを同時に読み込み、情報を 1 つの IlvMapFeature オブジェクトにマージします。このリーダーは、ジオメトリーへのランダム・アクセスを提供するために、オプションの shx ファイルも読み込めます。
次のいずれかの方法でインスタンス化できます。
*.dbf ファイル、.shp ファイル、オプションの .shx ファイルの名前を指定する。
*IlvShapeDBFReaderIlvShapeSHPReader、オプションの IlvShapeFileIndex オブジェクトを直接指定する。
これは、たとえば派生した IlvShapeSHPReader オブジェクトを使用する場合などに役立ちます。
いずれの場合も、.shx ファイルを読み込めるリーダーが作成されると、getFeatureAt メソッドを介したジオメトリーへのランダム・アクセスが可能になります。
このリーダーは、3 つの専用リーダーを使用します。IlvShapeSHPReaderIlvShapeDBFReader、および IlvShapeFileIndexgetNextFeature メソッドは、これらの専用リーダーで生成した情報を 1 つの地図機能にマージします。
例については、次の場所にある形状ファイルのサンプルを参照してください。
<installdir>/samples/maps/shapefile
IlvShapeSHPReader
このリーダーは、.shp ファイルのみを読み込みますが、.shp ファイルおよび .shx ファイル兼用として作成された場合は、ジオメトリーへのランダム・アクセスを可能にします。
形状ファイルに格納されるジオメトリーは、必ずしも 2D オブジェクトとは限りません。形状オブジェクトを構成する各点は、測地データ、または測地データと標高に関連付けることができます。
測地データは、IlvAttributeArray タイプのアトリビュートに格納されます。
以下は、測地データに関連付けられる形状タイプです。
*POINTZ
*POLYLINEZ
*POLYGONZ
*MULTIPOINTZ
*POINTM
*POLYLINEM
*POLYGONM
*MULTIPOINTM
標高は、IlvAttributeArray タイプのアトリビュートに格納されます。
以下は、測地データと標高に関連付けられる形状タイプです。
*POINTZ
*POLYLINEZ
*POLYGONZ
*MULTIPOINTZ
Rogue Wave Views Maps には、3D のレンダリングに不可欠なタイプ MULTIPATCH の形状オブジェクトを描画する定義済みのジオメトリーがないため、これらは無視されます。ただし、クラス IlvShapeSHPReader をサブタイプ化してこの振る舞いを変更できます。形状オブジェクトは保護されたメソッドで読み込まれるため、リーダーを修正して新しいジオメトリーを含める場合も、最小限の作業ですみます。
IlvShapeDBFReader
このリーダーは、.dbf 形式のファイルを読み込む場合にのみ使用します。また、次のようなファイルの反復処理に使用できます。
IlvShapeDBFReader* reader = new IlvShapeDBFReader("myFile.dbf");
IlvFeatureAttributeProperty* attributes = reader->getNextRecord();
while (attributes) {
// process attributes
...
attributes = reader->getNextRecord(...);
}
.dbf ファイルはアトリビュートを .shp のオブジェクトに逐次関連付けるため、記録番号を直接指定することで地図機能のアトリビュートにアクセスできます。
reader->readRecord(index, error);

Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.