GDAL を使用して 3D シェープファイルを作成しようとしています。3D ブロックを作成するコードは次のようになります。
OGRLayer *poLayer = ds->CreateLayer("Floor", NULL, wkbPolygon25D, NULL);
OGRFeature *poFeature;
poFeature = OGRFeature::CreateFeature( poLayer->GetLayerDefn() );
OGRLinearRing ring1, ring2;
OGRPolygon poly;
double x0=y0=z0 = 0;
double x1=y1=z1 = 1;
ring1.addPoint(x0, y0, z0);
ring1.addPoint(x1, y0, z0);
ring1.addPoint(x1, y1, z0);
ring1.addPoint(x0, y1, z0);
ring1.addPoint(x0, y0, z0);
ring1.closeRings();
ring2.addPoint(x0, y0, z1);
ring2.addPoint(x1, y0, z1);
ring2.addPoint(x1, y1, z1);
ring2.addPoint(x0, y1, z1);
ring2.addPoint(x0, y0, z1);
ring2.closeRings();
poly.addRing(&ring1);
poly.addRing(&ring2);
poFeature->SetGeometry(&poly);
poLayer->CreateFeature(poFeature);
しかし、後でファイルを開いてフィーチャ内のポイントをクエリすると、次のようになります。
OGRGeometry* pGeometry = pFeature->GetGeometryRef();
OGRSpatialReference* pSpaRef = pGeometry->getSpatialReference();
OGRPoint point(0.5, 0.5,0.5);
point.assignSpatialReference(pSpaRef);
OGRBoolean bContains = pGeometry->Contains(&point);
FALSE の結果が返ってきます。
私はGDALのドキュメントや他の多くの場所を検索しましたが、3Dオブジェクトを構築する方法の例を見つけることができません.
要約すると、質問は...GDALで3Dブロックオブジェクト(立方体など)を作成するにはどうすればよいですか?