@@ -93,6 +93,11 @@ namespace citygml {
93
93
typeIDTypeMap.insert (HANDLE_TYPE (BLDG, OuterFloorSurface));
94
94
typeIDTypeMap.insert (HANDLE_TYPE (GRP, CityObjectGroup));
95
95
typeIDTypeMap.insert (HANDLE_TYPE (DEM, ReliefFeature));
96
+ typeIDTypeMap.insert (HANDLE_TYPE (DEM, ReliefComponent));
97
+ typeIDTypeMap.insert (HANDLE_TYPE (DEM, TINRelief));
98
+ typeIDTypeMap.insert (HANDLE_TYPE (DEM, MassPointRelief));
99
+ typeIDTypeMap.insert (HANDLE_TYPE (DEM, BreaklineRelief));
100
+ typeIDTypeMap.insert (HANDLE_TYPE (DEM, RasterRelief));
96
101
typeIDTypeMap.insert (HANDLE_TYPE (BLDG, IntBuildingInstallation));
97
102
98
103
typeIDTypeMapInitialized = true ;
@@ -280,14 +285,27 @@ namespace citygml {
280
285
|| node == NodeType::GRP_ParentNode
281
286
|| node == NodeType::TRANS_TrafficAreaNode
282
287
|| node == NodeType::TRANS_AuxiliaryTrafficAreaNode
283
- || node == NodeType::WTR_BoundedByNode) {
288
+ || node == NodeType::WTR_BoundedByNode
289
+ || node == NodeType::DEM_ReliefComponentNode
290
+ || node == NodeType::DEM_TINReliefNode
291
+ || node == NodeType::DEM_MassPointReliefNode
292
+ || node == NodeType::DEM_BreaklineReliefNode
293
+ || node == NodeType::DEM_RasterReliefNode
294
+ || node == NodeType::DEM_GridNode) {
284
295
setParserForNextElement (new CityObjectElementParser (m_documentParser, m_factory, m_logger, [this ](CityObject* obj) {
285
296
m_model->addChildCityObject (obj);
286
297
}));
287
298
} else if (node == NodeType::APP_AppearanceNode // Compatibility with CityGML 1.0 (in CityGML 2 CityObjects can only contain appearanceMember elements)
288
299
|| node == NodeType::APP_AppearanceMemberNode) {
289
300
290
301
setParserForNextElement (new AppearanceElementParser (m_documentParser, m_factory, m_logger));
302
+ } else if (node == NodeType::DEM_ExtentNode
303
+ || node == NodeType::DEM_TinNode
304
+ || node == NodeType::DEM_ReliefPointsNode
305
+ || node == NodeType::DEM_RidgeOrValleyLinesNode
306
+ || node == NodeType::DEM_BreaklinesNode) {
307
+
308
+ parseGeometryForLODLevel (std::stoi (m_model->getAttribute (" dem:lod" )));
291
309
} else if (node == NodeType::BLDG_Lod1MultiCurveNode
292
310
|| node == NodeType::BLDG_Lod1MultiSurfaceNode
293
311
|| node == NodeType::BLDG_Lod1SolidNode
@@ -380,13 +398,13 @@ namespace citygml {
380
398
|| node == NodeType::CORE_ExternalReferenceNode
381
399
|| node == NodeType::GML_MultiPointNode
382
400
|| node == NodeType::GRP_GeometryNode
383
- || node == NodeType::DEM_ReliefComponentNode
384
401
|| node == NodeType::GEN_Lod0GeometryNode
385
402
|| node == NodeType::GEN_Lod0ImplicitRepresentationNode
386
403
|| node == NodeType::GEN_Lod0TerrainIntersectionNode
387
404
|| node == NodeType::TRANS_Lod0NetworkNode
388
405
|| node == NodeType::WTR_Lod0MultiCurveNode
389
- || node == NodeType::WTR_Lod0MultiSurfaceNode) {
406
+ || node == NodeType::WTR_Lod0MultiSurfaceNode
407
+ || node == NodeType::GML_RectifiedGridCoverageNode) {
390
408
CITYGML_LOG_INFO (m_logger, " Skipping CityObject child element <" << node << " > at " << getDocumentLocation () << " (Currently not supported!)" );
391
409
setParserForNextElement (new SkipElementParser (m_documentParser, m_logger, node));
392
410
return true ;
@@ -504,6 +522,15 @@ namespace citygml {
504
522
|| node == NodeType::LUSE_Lod3MultiSurfaceNode
505
523
|| node == NodeType::LUSE_Lod4MultiSurfaceNode
506
524
|| node == NodeType::DEM_ReliefComponentNode
525
+ || node == NodeType::DEM_TINReliefNode
526
+ || node == NodeType::DEM_MassPointReliefNode
527
+ || node == NodeType::DEM_BreaklineReliefNode
528
+ || node == NodeType::DEM_RasterReliefNode
529
+ || node == NodeType::DEM_TinNode
530
+ || node == NodeType::DEM_ReliefPointsNode
531
+ || node == NodeType::DEM_RidgeOrValleyLinesNode
532
+ || node == NodeType::DEM_BreaklinesNode
533
+ || node == NodeType::DEM_GridNode
507
534
|| node == NodeType::GEN_Lod0GeometryNode
508
535
|| node == NodeType::GEN_Lod0ImplicitRepresentationNode
509
536
|| node == NodeType::GEN_Lod0TerrainIntersectionNode
0 commit comments