形状ファイル形式を読み込むためのクラス
次に示すクラスは、形状ファイル形式の読み込みに使用されます。
このクラスは、IlvMapFeatureIterator のサブクラスです。このリーダーは、.shp ファイルのみを読み込みます。
このクラスは、 .dbf ファイルのみを読み込みます。
IlvShapeFileIndex IlvShapeSpatialIndex IlvShapeFileReader
このリーダーは、ジオメトリーを格納する
.shp ファイルと、アトリビュートを格納する
.dbf ファイルを同時に読み込み、情報を 1 つの
IlvMapFeature オブジェクトにマージします。このリーダーは、ジオメトリーへのランダム・アクセスを提供するために、オプションの
shx ファイルも読み込めます。
次のいずれかの方法でインスタンス化できます。
.dbf ファイル、
.shp ファイル、オプションの
.shx ファイルの名前を指定する。
これは、たとえば派生した
IlvShapeSHPReader オブジェクトを使用する場合などに役立ちます。
いずれの場合も、
.shx ファイルを読み込めるリーダーが作成されると、
getFeatureAt メソッドを介したジオメトリーへのランダム・アクセスが可能になります。
このリーダーは、3 つの専用リーダーを使用します。IlvShapeSHPReader、IlvShapeDBFReader、および IlvShapeFileIndex。getNextFeature メソッドは、これらの専用リーダーで生成した情報を 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.