Я пытаюсь создать трехмерный шейп-файл с использованием GDAL. Мой код для создания 3D-блок выглядит следующим образом:Создайте трехмерный шейп в GDAL
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-объект, поэтому я предполагаю, что если вы создали верхнюю и нижнюю грани, которые бы соединяли их.
Итак, в общем, вопрос в том, как ... как создать объект 3D-блока (например, куб) в GDAL?
Я был, я забыл включить эту строку изначально, я добавил ее как верхнюю строку в моем источнике в вопросе. Я думаю, что моя проблема связана с тем, как я добавляю кольца, но я не могу найти пример для работы. –
@DavidHope Отредактировал мой ответ - есть и другие проблемы в игре, но короткий ответ: это никогда не сработает;) –
Не совсем ответ, который я хотел услышать, но по крайней мере я могу перестать тратить свое время на это: -) –