diff --git a/nusamai-plateau/src/models/iur/uro/common.rs b/nusamai-plateau/src/models/iur/uro/common.rs index 0e34aa241..5e0478d15 100644 --- a/nusamai-plateau/src/models/iur/uro/common.rs +++ b/nusamai-plateau/src/models/iur/uro/common.rs @@ -14,6 +14,26 @@ pub struct DataQualityAttribute { #[citygml(path = b"uro:appearanceSrcDesc")] pub appearance_src_desc: Vec, + // PLATEAU 4.x + #[citygml(path = b"uro:geometrySrcDescLod0")] + pub geometry_src_desc_lod0: Vec, + + // PLATEAU 4.x + #[citygml(path = b"uro:geometrySrcDescLod1", required)] + pub geometry_src_desc_lod1: Vec, + + // PLATEAU 4.x + #[citygml(path = b"uro:geometrySrcDescLod2")] + pub geometry_src_desc_lod2: Vec, + + // PLATEAU 4.x + #[citygml(path = b"uro:geometrySrcDescLod3")] + pub geometry_src_desc_lod3: Vec, + + // PLATEAU 4.x + #[citygml(path = b"uro:geometrySrcDescLod4")] + pub geometry_src_desc_lod4: Vec, + #[citygml(path = b"uro:geometrySrcDesc0")] pub geometry_src_desc0: Vec, diff --git a/nusamai-plateau/src/models/iur/uro/dem.rs b/nusamai-plateau/src/models/iur/uro/dem.rs new file mode 100644 index 000000000..238c4fd7f --- /dev/null +++ b/nusamai-plateau/src/models/iur/uro/dem.rs @@ -0,0 +1,10 @@ +use nusamai_citygml::{citygml_feature, CityGmlElement}; + +use super::common::DataQualityAttribute; + +#[allow(non_camel_case_types)] +#[citygml_feature(name = "uro:demDataQualityAttribute")] +pub struct demDataQualityAttribute { + #[citygml(path = b"uro:DataQualityAttribute", required)] + pub data_quality_attribute: Option, +} diff --git a/nusamai-plateau/src/models/iur/uro/mod.rs b/nusamai-plateau/src/models/iur/uro/mod.rs index e78e1ee46..2fe5bc6d1 100644 --- a/nusamai-plateau/src/models/iur/uro/mod.rs +++ b/nusamai-plateau/src/models/iur/uro/mod.rs @@ -4,6 +4,7 @@ mod bridge; mod building; mod city_furniture; mod common; +mod dem; mod disaster_risk; mod dm; mod facility; @@ -24,6 +25,7 @@ pub use bridge::*; pub use building::*; pub use city_furniture::*; pub use common::*; +pub use dem::*; pub use disaster_risk::*; pub use dm::*; pub use facility::*; diff --git a/nusamai-plateau/src/models/relief.rs b/nusamai-plateau/src/models/relief.rs index 6ecd67f75..9c6f5b029 100644 --- a/nusamai-plateau/src/models/relief.rs +++ b/nusamai-plateau/src/models/relief.rs @@ -11,6 +11,10 @@ pub struct ReliefFeature { #[citygml(path = b"dem:reliefComponent", required)] pub relief_component: Vec, // -> dem:_ReliefComponent + + // PLATEAU 4.x + #[citygml(path = b"uro:demDataQualityAttribute", required)] + pub dem_data_quality_attribute: Option, } #[citygml_property(name = "dem:_ReliefComponentProperty")] diff --git a/nusamai/src/sink/cesiumtiles/gltf.rs b/nusamai/src/sink/cesiumtiles/gltf.rs index d711c72f5..43e30040f 100644 --- a/nusamai/src/sink/cesiumtiles/gltf.rs +++ b/nusamai/src/sink/cesiumtiles/gltf.rs @@ -238,7 +238,7 @@ pub fn write_gltf_glb( .extensions .as_ref() .and_then(|ext| ext.ext_texture_webp.as_ref()) - .map_or(false, |_| true) + .is_some_and(|_| true) }); let extensions_used = { diff --git a/nusamai/src/transformer/transform/shp_field_dict.json b/nusamai/src/transformer/transform/shp_field_dict.json index 3b18f0ef7..f5e069576 100644 --- a/nusamai/src/transformer/transform/shp_field_dict.json +++ b/nusamai/src/transformer/transform/shp_field_dict.json @@ -863,5 +863,18 @@ "bldgUsecaseAttribute": "bldgUC", "frnKeyValuePairAttribute": "frnKVPair", "tranKeyValuePairAttribute": "tranKVPair", - "tranUsecaseAttribute": "tranUC" + "tranUsecaseAttribute": "tranUC", + "geometrySrcDescLod0": "geomSrcDL0", + "geometrySrcDescLod1": "geomSrcDL1", + "geometrySrcDescLod2": "geomSrcDL2", + "geometrySrcDescLod3": "geomSrcDL3", + "geometrySrcDescLod4": "geomSrcDL4", + "DataQualityAttribute": "dataQual", + "demDataQualityAttribute": "demDQual", + "wtrDataQualityAttribute": "wtrDQual", + "wtrKeyValuePairAttribute": "wtrKVPair", + "dataQualityAttribute": "dataQual", + "urbanParkAttribute": "urbPark", + "luseKeyValuePairAttribute": "luseKVPair", + "vegKeyValuePairAttribute": "vegKVPair" } \ No newline at end of file