Skip to content

Commit

Permalink
Fixes for Delft_3dfier_v3.gml
Browse files Browse the repository at this point in the history
  • Loading branch information
paulgothard4d authored and SGoetschi committed Sep 5, 2024
1 parent 726f236 commit 77f7a3f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
5 changes: 4 additions & 1 deletion sources/include/parser/nodetypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -338,12 +338,15 @@ namespace citygml {
NODETYPE( VEG, Height )
NODETYPE( VEG, TrunkDiameter )
NODETYPE( VEG, CrownDiameter )

NODETYPE( VEG, Lod0Geometry )
NODETYPE( VEG, Lod1Geometry )
NODETYPE( VEG, Lod2Geometry )
NODETYPE( VEG, Lod3Geometry )
NODETYPE( VEG, Lod4Geometry )
NODETYPE( VEG, Lod1MultiSurface )
NODETYPE( VEG, Lod2MultiSurface )
NODETYPE( VEG, Lod3MultiSurface )
NODETYPE( VEG, Lod4MultiSurface )

// TRANS
NODETYPE( TRANS, TransportationComplex )
Expand Down
10 changes: 9 additions & 1 deletion sources/src/parser/cityobjectelementparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,7 @@ namespace citygml {
} else if (node == NodeType::BLDG_Lod1MultiCurveNode
|| node == NodeType::BLDG_Lod1MultiSurfaceNode
|| node == NodeType::BRID_Lod1MultiSurfaceNode
|| node == NodeType::VEG_Lod1MultiSurfaceNode
|| node == NodeType::BLDG_Lod1SolidNode
|| node == NodeType::BLDG_Lod1TerrainIntersectionNode
|| node == NodeType::GEN_Lod1TerrainIntersectionNode
Expand All @@ -447,6 +448,7 @@ namespace citygml {
} else if (node == NodeType::BLDG_Lod2MultiCurveNode
|| node == NodeType::BLDG_Lod2MultiSurfaceNode
|| node == NodeType::BRID_Lod2MultiSurfaceNode
|| node == NodeType::VEG_Lod2MultiSurfaceNode
|| node == NodeType::BLDG_Lod2SolidNode
|| node == NodeType::BLDG_Lod2TerrainIntersectionNode
|| node == NodeType::GEN_Lod2TerrainIntersectionNode
Expand All @@ -472,6 +474,7 @@ namespace citygml {
} else if (node == NodeType::BLDG_Lod3MultiCurveNode
|| node == NodeType::BLDG_Lod3MultiSurfaceNode
|| node == NodeType::BRID_Lod3MultiSurfaceNode
|| node == NodeType::VEG_Lod3MultiSurfaceNode
|| node == NodeType::CORE_Lod3MultiSurfaceNode
|| node == NodeType::BLDG_Lod3SolidNode
|| node == NodeType::BLDG_Lod3TerrainIntersectionNode
Expand All @@ -485,6 +488,7 @@ namespace citygml {
parseGeometryForLODLevel(node, 3, attributes);
} else if (node == NodeType::BLDG_Lod4MultiCurveNode
|| node == NodeType::BLDG_Lod4SolidNode
|| node == NodeType::VEG_Lod4MultiSurfaceNode
|| node == NodeType::BLDG_Lod4MultiSurfaceNode
|| node == NodeType::BRID_Lod4MultiSurfaceNode
|| node == NodeType::BLDG_Lod4SolidNode
Expand Down Expand Up @@ -773,7 +777,11 @@ namespace citygml {
|| node == NodeType::BRID_Lod1MultiSurfaceNode
|| node == NodeType::BRID_Lod2MultiSurfaceNode
|| node == NodeType::BRID_Lod3MultiSurfaceNode
|| node == NodeType::BRID_Lod4MultiSurfaceNode) {
|| node == NodeType::BRID_Lod4MultiSurfaceNode
|| node == NodeType::VEG_Lod1MultiSurfaceNode
|| node == NodeType::VEG_Lod2MultiSurfaceNode
|| node == NodeType::VEG_Lod3MultiSurfaceNode
|| node == NodeType::VEG_Lod4MultiSurfaceNode) {

return true;
}
Expand Down
16 changes: 16 additions & 0 deletions sources/src/parser/nodetypes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,10 @@ namespace citygml {
INITIALIZE_NODE( VEG, Lod2Geometry )
INITIALIZE_NODE( VEG, Lod3Geometry )
INITIALIZE_NODE( VEG, Lod4Geometry )
INITIALIZE_NODE(VEG, Lod1MultiSurface)
INITIALIZE_NODE(VEG, Lod2MultiSurface)
INITIALIZE_NODE(VEG, Lod3MultiSurface)
INITIALIZE_NODE(VEG, Lod4MultiSurface)

// TRANS
INITIALIZE_NODE( TRANS, TransportationComplex )
Expand Down Expand Up @@ -525,6 +529,14 @@ namespace citygml {
return getXMLNodeFor("core:" + name);
}

// It's technically possible to name the prefix anything
// but adding handling for common alternatives used in test files
// brg used instead of brid in Delft_3dfier_v2.gml
if (prefix == "brg")
{
return getXMLNodeFor("brid:" + nodeName);
}

if (prefix == "tran")
{
return getXMLNodeFor("trans:" + nodeName);
Expand Down Expand Up @@ -849,6 +861,10 @@ namespace citygml {
DEFINE_NODE( VEG, Lod2Geometry )
DEFINE_NODE( VEG, Lod3Geometry )
DEFINE_NODE( VEG, Lod4Geometry )
DEFINE_NODE(VEG, Lod1MultiSurface)
DEFINE_NODE(VEG, Lod2MultiSurface)
DEFINE_NODE(VEG, Lod3MultiSurface)
DEFINE_NODE(VEG, Lod4MultiSurface)

// TRANS
DEFINE_NODE( TRANS, TransportationComplex )
Expand Down

0 comments on commit 77f7a3f

Please sign in to comment.