ecitygml-core 0.0.1-alpha.13

Core primitives and operations for processing CityGML data.
Documentation
use strum_macros::{Display, EnumIter};

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, EnumIter, Display)]
pub enum CityObjectClass {
    AuxiliaryTrafficArea,
    AuxiliaryTrafficSpace,
    Bridge,
    BridgeConstructiveElement,
    BridgeFurniture,
    BridgeInstallation,
    BridgePart,
    BridgeRoom,
    Building,
    BuildingConstructiveElement,
    BuildingFurniture,
    BuildingInstallation,
    BuildingPart,
    BuildingRoom,
    BuildingUnit,
    CeilingSurface,
    CityFurniture,
    CityObjectGroup,
    ClearanceSpace,
    Door,
    DoorSurface,
    FloorSurface,
    GenericLogicalSpace,
    GenericOccupiedSpace,
    GenericThematicSurface,
    GenericUnoccupiedSpace,
    GroundSurface,
    Hole,
    HoleSurface,
    HollowSpace,
    InteriorWallSurface,
    Intersection,
    Marking,
    OtherConstruction,
    OuterCeilingSurface,
    OuterFloorSurface,
    PlantCover,
    Railway,
    ReliefFeature,
    Road,
    RoofSurface,
    Section,
    SolitaryVegetationObject,
    Square,
    Story,
    TinRelief,
    Track,
    TrafficArea,
    TrafficSpace,
    Tunnel,
    TunnelConstructiveElement,
    TunnelFurniture,
    TunnelInstallation,
    TunnelPart,
    WallSurface,
    WaterBody,
    WaterGroundSurface,
    WaterSurface,
    Waterway,
    Window,
    WindowSurface,
}

impl CityObjectClass {
    pub fn is_top_level(&self) -> bool {
        match self {
            Self::AuxiliaryTrafficArea => false,
            Self::AuxiliaryTrafficSpace => false,
            Self::Bridge => true,
            Self::BridgeConstructiveElement => false,
            Self::BridgeFurniture => false,
            Self::BridgeInstallation => false,
            Self::BridgePart => false,
            Self::BridgeRoom => false,
            Self::Building => true,
            Self::BuildingConstructiveElement => false,
            Self::BuildingFurniture => false,
            Self::BuildingInstallation => false,
            Self::BuildingPart => false,
            Self::BuildingRoom => false,
            Self::BuildingUnit => false,
            Self::CeilingSurface => false,
            Self::CityFurniture => true,
            Self::CityObjectGroup => true,
            Self::ClearanceSpace => false,
            Self::Door => false,
            Self::DoorSurface => false,
            Self::FloorSurface => false,
            Self::GenericLogicalSpace => true,
            Self::GenericOccupiedSpace => true,
            Self::GenericThematicSurface => false,
            Self::GenericUnoccupiedSpace => true,
            Self::GroundSurface => false,
            Self::Hole => false,
            Self::HoleSurface => false,
            Self::HollowSpace => false,
            Self::InteriorWallSurface => false,
            Self::Intersection => false,
            Self::Marking => false,
            Self::OtherConstruction => true,
            Self::OuterCeilingSurface => false,
            Self::OuterFloorSurface => false,
            Self::PlantCover => true,
            Self::Railway => true,
            Self::ReliefFeature => true,
            Self::Road => true,
            Self::RoofSurface => false,
            Self::Section => false,
            Self::SolitaryVegetationObject => true,
            Self::Square => false,
            Self::Story => false,
            Self::TinRelief => false,
            Self::Track => true,
            Self::TrafficArea => false,
            Self::TrafficSpace => false,
            Self::Tunnel => true,
            Self::TunnelConstructiveElement => false,
            Self::TunnelFurniture => false,
            Self::TunnelInstallation => false,
            Self::TunnelPart => false,
            Self::WallSurface => false,
            Self::WaterBody => true,
            Self::WaterGroundSurface => false,
            Self::WaterSurface => false,
            Self::Waterway => true,
            Self::Window => false,
            Self::WindowSurface => false,
        }
    }
}