From 39822864531dc112a6b020d6fba75d19d448c516 Mon Sep 17 00:00:00 2001 From: Yuji Mise Date: Wed, 8 May 2024 14:28:02 +0900 Subject: [PATCH] feat(plateau): rename cityfurniture module to city_furniture (#6) --- nusamai-citygml/src/namespace.rs | 15 +- nusamai-plateau/src/appearance.rs | 4 +- nusamai-plateau/src/models/bridge.rs | 28 +- nusamai-plateau/src/models/building.rs | 79 +- .../{cityfurniture.rs => city_furniture.rs} | 12 +- nusamai-plateau/src/models/iur/urf/zone.rs | 995 ++++++++++++++++ nusamai-plateau/src/models/iur/uro/bridge.rs | 96 +- .../src/models/iur/uro/building.rs | 43 +- .../src/models/iur/uro/city_furniture.rs | 18 - nusamai-plateau/src/models/iur/uro/common.rs | 93 ++ .../src/models/iur/uro/disaster_risk.rs | 132 +++ .../src/models/iur/uro/facility.rs | 121 ++ nusamai-plateau/src/models/iur/uro/landuse.rs | 12 - nusamai-plateau/src/models/iur/uro/mod.rs | 4 +- .../src/models/iur/uro/other_construction.rs | 27 - .../src/models/iur/uro/transportation.rs | 27 +- .../models/iur/uro/underground_building.rs | 21 +- .../src/models/iur/uro/utility_network.rs | 228 ++-- .../src/models/iur/uro/vegetation.rs | 16 - nusamai-plateau/src/models/landuse.rs | 8 +- nusamai-plateau/src/models/mod.rs | 4 +- .../src/models/other_construction.rs | 3 +- nusamai-plateau/src/models/transportation.rs | 91 +- nusamai-plateau/src/models/tunnel.rs | 28 +- nusamai-plateau/src/models/vegetation.rs | 16 +- nusamai-plateau/src/models/waterbody.rs | 10 +- nusamai-plateau/tests/load_examples.rs | 1022 ----------------- 27 files changed, 1699 insertions(+), 1454 deletions(-) rename nusamai-plateau/src/models/{cityfurniture.rs => city_furniture.rs} (80%) create mode 100644 nusamai-plateau/src/models/iur/uro/disaster_risk.rs delete mode 100644 nusamai-plateau/src/models/iur/uro/vegetation.rs delete mode 100644 nusamai-plateau/tests/load_examples.rs diff --git a/nusamai-citygml/src/namespace.rs b/nusamai-citygml/src/namespace.rs index ed50d4f3f..15220a0e6 100644 --- a/nusamai-citygml/src/namespace.rs +++ b/nusamai-citygml/src/namespace.rs @@ -56,6 +56,9 @@ pub fn wellknown_prefix_from_nsres<'a>(ns: &ResolveResult<'a>) -> &'a [u8] { } else if let Some(https_www) = http.strip_prefix(b"s://www.") { if let Some(iur) = https_www.strip_prefix(b"geospatial.jp/iur/ur") { match iur { + // PLATEAU 4.x + b"o/3.1" => b"uro:", + b"f/3.1" => b"urf:", // PLATEAU 3.x b"o/3.0" => b"uro:", b"f/3.0" => b"urf:", @@ -113,8 +116,10 @@ mod tests { xmlns:gen2ns="http://www.opengis.net/citygml/generics/2.0" xmlns:dem2ns="http://www.opengis.net/citygml/relief/2.0" xmlns:luse2ns="http://www.opengis.net/citygml/landuse/2.0" - xmlns:uro3ns="https://www.geospatial.jp/iur/uro/3.0" - xmlns:urf3ns="https://www.geospatial.jp/iur/urf/3.0" + xmlns:uro31ns="https://www.geospatial.jp/iur/uro/3.1" + xmlns:urf31ns="https://www.geospatial.jp/iur/urf/3.1" + xmlns:uro30ns="https://www.geospatial.jp/iur/uro/3.0" + xmlns:urf30ns="https://www.geospatial.jp/iur/urf/3.0" xmlns:uro2ns="https://www.geospatial.jp/iur/uro/2.0" xmlns:urf2ns="https://www.geospatial.jp/iur/urf/3.0" xmlns:uro15ns="https://www.chisou.go.jp/tiiki/toshisaisei/itoshisaisei/iur/uro/1.5" @@ -141,8 +146,10 @@ mod tests { - - + + + + diff --git a/nusamai-plateau/src/appearance.rs b/nusamai-plateau/src/appearance.rs index 9a267d0ac..02cb35563 100644 --- a/nusamai-plateau/src/appearance.rs +++ b/nusamai-plateau/src/appearance.rs @@ -9,7 +9,7 @@ use url::Url; use crate::models::appearance::{self, ParameterizedTexture, SurfaceDataProperty, X3DMaterial}; -#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)] +#[derive(Debug, Default, serde::Serialize, serde::Deserialize)] pub struct Theme { pub ring_id_to_texture: HashMap)>, // TODO: texture index is redundant pub surface_id_to_material: HashMap, @@ -52,7 +52,7 @@ impl Hash for Material { self.ambient_intensity.to_bits().hash(state); } } -#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)] +#[derive(Debug, Default, serde::Serialize, serde::Deserialize)] pub struct AppearanceStore { pub textures: Vec, pub materials: Vec, diff --git a/nusamai-plateau/src/models/bridge.rs b/nusamai-plateau/src/models/bridge.rs index 32abfd511..2de16a39a 100644 --- a/nusamai-plateau/src/models/bridge.rs +++ b/nusamai-plateau/src/models/bridge.rs @@ -44,10 +44,11 @@ pub struct Bridge { pub address: Vec
, #[citygml(path = b"uro:bridBaseAttribute/uro:ConstructionBaseAttribute")] - pub brid_base_attribute: Option, + pub brid_base_attribute: Vec, #[citygml(path = b"uro:bridDataQualityAttribute/uro:ConstructionDataQualityAttribute")] - pub brid_data_quality_attribute: Option, + #[citygml(path = b"uro:bridDataQualityAttribute/uro:DataQualityAttribute")] + pub brid_data_quality_attribute: Option, #[citygml(path = b"uro:bridDisasterRiskAttribute")] pub brid_disaster_risk_attribute: Vec, // -> uro:DisasterRiskAttribute @@ -65,13 +66,16 @@ pub struct Bridge { pub brid_facility_type_attribute: Vec, #[citygml(path = b"uro:bridFunctionalAttribute/uro:BridgeFunctionalAttribute")] - pub brid_functional_attribute: Option, + pub brid_functional_attribute: Vec, + + #[citygml(path = b"uro:bridKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub brid_key_value_pair_attribute: Vec, #[citygml(path = b"uro:bridRiskAssessmentAttribute/uro:ConstructionRiskAssessmentAttribute")] - pub brid_risk_assessment_attribute: Option, + pub brid_risk_assessment_attribute: Vec, #[citygml(path = b"uro:bridStructureAttribute/uro:BridgeStructureAttribute")] - pub brid_structure_attribute: Option, + pub brid_structure_attribute: Vec, } #[citygml_feature(name = "brid:BridgePart")] @@ -116,10 +120,11 @@ pub struct BridgePart { pub address: Vec
, #[citygml(path = b"uro:bridBaseAttribute/uro:ConstructionBaseAttribute")] - pub brid_base_attribute: Option, + pub brid_base_attribute: Vec, #[citygml(path = b"uro:bridDataQualityAttribute/uro:ConstructionDataQualityAttribute")] - pub brid_data_quality_attribute: Option, + #[citygml(path = b"uro:bridDataQualityAttribute/uro:DataQualityAttribute")] + pub brid_data_quality_attribute: Option, #[citygml(path = b"uro:bridDisasterRiskAttribute")] pub brid_disaster_risk_attribute: Vec, // -> uro:DisasterRiskAttribute @@ -137,13 +142,16 @@ pub struct BridgePart { pub brid_facility_type_attribute: Vec, #[citygml(path = b"uro:bridFunctionalAttribute/uro:BridgeFunctionalAttribute")] - pub brid_functional_attribute: Option, + pub brid_functional_attribute: Vec, + + #[citygml(path = b"uro:bridKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub brid_key_value_pair_attribute: Vec, #[citygml(path = b"uro:bridRiskAssessmentAttribute/uro:ConstructionRiskAssessmentAttribute")] - pub brid_risk_assessment_attribute: Option, + pub brid_risk_assessment_attribute: Vec, #[citygml(path = b"uro:bridStructureAttribute/uro:BridgeStructureAttribute")] - pub brid_structure_attribute: Option, + pub brid_structure_attribute: Vec, } #[citygml_feature(name = "brid:BridgeConstructionElement")] diff --git a/nusamai-plateau/src/models/building.rs b/nusamai-plateau/src/models/building.rs index 878f577e4..83c4f6ad3 100644 --- a/nusamai-plateau/src/models/building.rs +++ b/nusamai-plateau/src/models/building.rs @@ -1,6 +1,5 @@ use nusamai_citygml::{ - citygml_feature, citygml_property, CityGmlElement, Code, GYear, Length, Measure, - MeasureOrNullList, + citygml_feature, citygml_property, CityGmlElement, Code, GYear, Length, MeasureOrNullList, }; use super::{core::Address, iur::uro}; @@ -17,16 +16,16 @@ pub struct Building { pub usage: Vec, #[citygml(path = b"bldg:yearOfConstruction")] - pub year_of_construction: Option, + pub year_of_construction: Option, #[citygml(path = b"bldg:yearOfDemolition")] - pub year_of_demolition: Option, + pub year_of_demolition: Option, #[citygml(path = b"bldg:roofType")] pub roof_type: Option, #[citygml(path = b"bldg:measuredHeight")] - pub measured_height: Option, + pub measured_height: Option, #[citygml(path = b"bldg:storeysAboveGround")] pub storeys_above_ground: Option, @@ -58,6 +57,14 @@ pub struct Building { #[citygml(path = b"bldg:address/core:Address")] pub address: Vec
, + #[citygml(path = b"uro:buildingDataQualityAttribute/uro:BuildingDataQualityAttribute")] + #[citygml(path = b"uro:bldgDataQualityAttribute/uro:DataQualityAttribute")] + pub bldg_data_quality_attribute: Option, + + #[citygml(path = b"uro:buildingDisasterRiskAttribute")] + #[citygml(path = b"uro:bldgDisasterRiskAttribute")] + pub bldg_disaster_risk_attribute: Vec, // -> uro:DisasterRiskAttribute + #[citygml(path = b"uro:bldgDmAttribute")] pub bldg_dm_attribute: Vec, // -> uro:DmAttribute @@ -70,20 +77,21 @@ pub struct Building { #[citygml(path = b"uro:bldgFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub bldg_facility_type_attribute: Vec, + #[citygml(path = b"uro:keyValuePairAttribute/uro:KeyValuePairAttribute")] + #[citygml(path = b"uro:bldgKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub bldg_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:bldgRealEstateIDAttribute/uro:RealEstateIDAttribute")] pub bldg_real_estate_id_attribute: Option, - #[citygml(path = b"uro:buildingDataQualityAttribute/uro:BuildingDataQualityAttribute")] - pub building_data_quality_attribute: Option, + #[citygml(path = b"uro:bldgUsecaseAttribute/uro:BuildingUsecaseAttribute")] + pub bldg_usecase_attribute: Vec, #[citygml(path = b"uro:buildingDetailAttribute/uro:BuildingDetailAttribute")] pub building_detail_attribute: Vec, - #[citygml(path = b"uro:buildingDisasterRiskAttribute")] - pub building_disaster_risk_attribute: Vec, // -> uro:BuildingDisasterRiskAttribute - #[citygml(path = b"uro:buildingIDAttribute/uro:BuildingIDAttribute")] - pub building_id_attribute: Option, + pub building_id_attribute: Vec, #[citygml(path = b"uro:ifcBuildingAttribute")] pub ifc_building_attribute: Vec, // -> uro:IfcAttribute @@ -91,9 +99,6 @@ pub struct Building { #[citygml(path = b"uro:indoorBuildingAttribute")] pub indoor_building_attribute: Vec, // -> uro:IndoorAttribute - #[citygml(path = b"uro:keyValuePairAttribute/uro:KeyValuePairAttribute")] - pub key_value_pair_attribute: Vec, - #[citygml(path = b"uro:largeCustomerFacilityAttribute/uro:LargeCustomerFacilityAttribute")] pub large_customer_facility_attribute: Vec, } @@ -151,6 +156,14 @@ pub struct BuildingPart { #[citygml(path = b"bldg:address/core:Address")] pub address: Vec
, + #[citygml(path = b"uro:buildingDataQualityAttribute/uro:BuildingDataQualityAttribute")] + #[citygml(path = b"uro:bldgDataQualityAttribute/uro:DataQualityAttribute")] + pub bldg_data_quality_attribute: Option, + + #[citygml(path = b"uro:buildingDisasterRiskAttribute")] + #[citygml(path = b"uro:bldgDisasterRiskAttribute")] + pub bldg_disaster_risk_attribute: Vec, // -> uro:DisasterRiskAttribute + #[citygml(path = b"uro:bldgDmAttribute")] pub bldg_dm_attribute: Vec, // -> uro:DmAttribute @@ -163,20 +176,21 @@ pub struct BuildingPart { #[citygml(path = b"uro:bldgFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub bldg_facility_type_attribute: Vec, + #[citygml(path = b"uro:keyValuePairAttribute/uro:KeyValuePairAttribute")] + #[citygml(path = b"uro:bldgKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub bldg_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:bldgRealEstateIDAttribute/uro:RealEstateIDAttribute")] pub bldg_real_estate_id_attribute: Option, - #[citygml(path = b"uro:buildingDataQualityAttribute/uro:BuildingDataQualityAttribute")] - pub building_data_quality_attribute: Option, + #[citygml(path = b"uro:bldgUsecaseAttribute/uro:BuildingUsecaseAttribute")] + pub bldg_usecase_attribute: Vec, #[citygml(path = b"uro:buildingDetailAttribute/uro:BuildingDetailAttribute")] pub building_detail_attribute: Vec, - #[citygml(path = b"uro:buildingDisasterRiskAttribute")] - pub building_disaster_risk_attribute: Vec, // -> uro:BuildingDisasterRiskAttribute - #[citygml(path = b"uro:buildingIDAttribute/uro:BuildingIDAttribute")] - pub building_id_attribute: Option, + pub building_id_attribute: Vec, #[citygml(path = b"uro:ifcBuildingAttribute")] pub ifc_building_attribute: Vec, // -> uro:IfcAttribute @@ -184,9 +198,6 @@ pub struct BuildingPart { #[citygml(path = b"uro:indoorBuildingAttribute")] pub indoor_building_attribute: Vec, // -> uro:IndoorAttribute - #[citygml(path = b"uro:keyValuePairAttribute/uro:KeyValuePairAttribute")] - pub key_value_pair_attribute: Vec, - #[citygml(path = b"uro:largeCustomerFacilityAttribute/uro:LargeCustomerFacilityAttribute")] pub large_customer_facility_attribute: Vec, } @@ -364,9 +375,6 @@ pub struct Room { #[citygml(path = b"uro:indoorRoomAttribute")] pub indoor_room_attribute: Vec, // -> uro:IndoorAttribute - - #[citygml(path = b"uro:roomDataQualityAttribute/uro:RoomDataQualityAttribute")] - pub room_data_quality_attribute: Option, } #[citygml_feature(name = "bldg:BuildingInstallation")] @@ -387,25 +395,6 @@ pub struct BuildingInstallation { pub ifc_building_installation_attribute: Vec, // -> uro:IfcAttribute } -// Intentionally not used to facilitate transition to CityGML 3.0. -// #[citygml_feature(name = "bldg:BuildingInstallation")] -// pub struct BuildingInstallation { -// #[citygml(path = b"bldg:class")] -// pub class: Option, -// -// #[citygml(path = b"bldg:function")] -// pub function: Vec, -// -// #[citygml(path = b"bldg:usage")] -// pub usage: Vec, -// -// #[citygml(path = b"bldg:boundedBy")] -// pub bounded_by: Vec, // -> bldg:_BoundarySurface -// -// #[citygml(path = b"uro:ifcBuildingInstallationAttribute")] -// pub ifc_building_installation_attribute: Vec, // -> uro:IfcAttribute -// } - #[citygml_feature(name = "bldg:BuildingFurniture")] pub struct BuildingFurniture { #[citygml(path = b"bldg:class")] diff --git a/nusamai-plateau/src/models/cityfurniture.rs b/nusamai-plateau/src/models/city_furniture.rs similarity index 80% rename from nusamai-plateau/src/models/cityfurniture.rs rename to nusamai-plateau/src/models/city_furniture.rs index 65ebb3910..f1e561ce3 100644 --- a/nusamai-plateau/src/models/cityfurniture.rs +++ b/nusamai-plateau/src/models/city_furniture.rs @@ -13,13 +13,14 @@ pub struct CityFurniture { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -32,4 +33,7 @@ pub struct CityFurniture { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, } diff --git a/nusamai-plateau/src/models/iur/urf/zone.rs b/nusamai-plateau/src/models/iur/urf/zone.rs index 6104933c9..5d78413a2 100644 --- a/nusamai-plateau/src/models/iur/urf/zone.rs +++ b/nusamai-plateau/src/models/iur/urf/zone.rs @@ -3,6 +3,8 @@ use nusamai_citygml::{ Measure, Uri, }; +use crate::models::iur::uro; + #[citygml_property(name = "urf:DistrictFacilityProperty")] pub enum DistrictFacilityProperty { #[citygml(path = b"urf:DistrictFacility")] @@ -106,11 +108,20 @@ pub struct Zone { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature(name = "urf:Agreement")] @@ -184,12 +195,21 @@ pub struct Agreement { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:applicableArea")] pub applicable_area: Option, @@ -268,12 +288,21 @@ pub struct AircraftNoiseControlZone { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, } @@ -349,12 +378,21 @@ pub struct AreaClassification { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:population")] pub population: Option, } @@ -430,12 +468,21 @@ pub struct CollectiveFacilitiesForReconstruction { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -541,12 +588,21 @@ pub struct CollectiveFacilitiesForReconstructionAndRevitalization { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -652,12 +708,21 @@ pub struct CollectiveFacilitiesForTsunamiDisasterPrevention { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -763,12 +828,21 @@ pub struct CollectiveGovernmentAndPublicOfficeFacilities { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -859,12 +933,21 @@ pub struct CollectiveHousingFacilities { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -967,12 +1050,21 @@ pub struct CollectiveUrbanDisasterPreventionFacilities { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -1069,12 +1161,21 @@ pub struct ConservationZoneForClustersOfTraditionalStructures { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, } @@ -1150,12 +1251,21 @@ pub struct DisasterPreventionBlockImprovementProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor")] pub scheduled_executor: Option, @@ -1240,12 +1350,21 @@ pub struct DisasterPreventionBlockImprovementZonePlan { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:objectives")] pub objectives: Option, @@ -1339,12 +1458,21 @@ pub struct DistributionBusinessPark { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -1447,12 +1575,21 @@ pub struct DistributionBusinessZone { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -1531,12 +1668,21 @@ pub struct District { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:buildingRestrictions")] pub building_restrictions: Option, @@ -1669,12 +1815,21 @@ pub struct DistrictDevelopmentPlan { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:districtFacilitiesAllocation")] pub district_facilities_allocation: Option, @@ -1768,11 +1923,20 @@ pub struct DistrictFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature( @@ -1848,12 +2012,21 @@ pub struct DistrictImprovementPlanForDisasterPreventionBlockImprovementZonePlan #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:districtFacilitiesAllocation")] pub district_facilities_allocation: Option, @@ -1949,12 +2122,21 @@ pub struct DistrictImprovementPlanForHistoricSceneryMaintenanceAndImprovementDis #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:districtFacilitiesAllocation")] pub district_facilities_allocation: Option, @@ -2048,12 +2230,21 @@ pub struct DistrictPlan { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:objectives")] pub objectives: Option, @@ -2144,12 +2335,21 @@ pub struct DistrictsAndZones { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, } @@ -2225,12 +2425,21 @@ pub struct EducationalAndCulturalFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -2309,12 +2518,21 @@ pub struct ExceptionalFloorAreaRateDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -2393,12 +2611,21 @@ pub struct FirePreventionDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, } @@ -2474,12 +2701,21 @@ pub struct FireProtectionFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -2564,12 +2800,21 @@ pub struct FloodPreventionFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -2654,12 +2899,21 @@ pub struct GlobalHubCityDevelopmentProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:implementationBody")] pub implementation_body: Option, @@ -2741,12 +2995,21 @@ pub struct GreenSpaceConservationDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, } @@ -2822,12 +3085,21 @@ pub struct HeightControlDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -2909,12 +3181,21 @@ pub struct HighLevelUseDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -3005,12 +3286,21 @@ pub struct HighRiseResidentialAttractionDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -3095,12 +3385,21 @@ pub struct HistoricSceneryMaintenanceAndImprovementDistrictPlan { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:objectives")] pub objectives: Option, @@ -3188,12 +3487,21 @@ pub struct HousingControlArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, } @@ -3269,12 +3577,21 @@ pub struct IndustrialParkDevelopmentProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor")] pub scheduled_executor: Option, @@ -3356,12 +3673,21 @@ pub struct LandReadjustmentProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor")] pub scheduled_executor: Option, @@ -3443,12 +3769,21 @@ pub struct LandReadjustmentPromotionArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:developmentPolicy")] pub development_policy: Option, @@ -3527,12 +3862,21 @@ pub struct LandReadjustmentPromotionAreasForCoreBusinessUrbanDevelopment { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:developmentPolicy")] pub development_policy: Option, @@ -3611,12 +3955,21 @@ pub struct LandscapeZone { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -3707,12 +4060,21 @@ pub struct MarketsSlaughterhousesCrematoria { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -3791,12 +4153,21 @@ pub struct MedicalFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -3875,12 +4246,21 @@ pub struct NewHousingAndUrbanDevelopmentProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor")] pub scheduled_executor: Option, @@ -3965,12 +4345,21 @@ pub struct NewUrbanInfrastructureProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor")] pub scheduled_executor: Option, @@ -4055,12 +4444,21 @@ pub struct OpenSpaceForPublicUse { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -4142,12 +4540,21 @@ pub struct ParkingPlaceDevelopmentZone { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, } @@ -4223,12 +4630,21 @@ pub struct PortZone { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -4307,12 +4723,21 @@ pub struct PrivateUrbanRenewalProjectPlan { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:developer")] pub developer: Option, @@ -4391,12 +4816,21 @@ pub struct ProductiveGreenZone { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -4478,12 +4912,21 @@ pub struct ProjectPromotionArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:developmentPolicy")] pub development_policy: Option, @@ -4562,11 +5005,20 @@ pub struct PromotionDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature(name = "urf:QuasiUrbanPlanningArea")] @@ -4640,12 +5092,21 @@ pub struct QuasiUrbanPlanningArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:population")] pub population: Option, @@ -4727,11 +5188,20 @@ pub struct Regulation { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature(name = "urf:ResidenceAttractionArea")] @@ -4805,11 +5275,20 @@ pub struct ResidenceAttractionArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature(name = "urf:ResidentialBlockConstructionProject")] @@ -4883,12 +5362,21 @@ pub struct ResidentialBlockConstructionProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor")] pub scheduled_executor: Option, @@ -4976,12 +5464,21 @@ pub struct ResidentialBlockConstructionPromotionArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:developmentPolicy")] pub development_policy: Option, @@ -5060,12 +5557,21 @@ pub struct ResidentialEnvironmentImprovementDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -5159,11 +5665,20 @@ pub struct RoadsideDistrictFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature(name = "urf:RoadsideDistrictImprovementPlan")] @@ -5237,12 +5752,21 @@ pub struct RoadsideDistrictImprovementPlan { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:districtFacilitiesAllocation")] pub district_facilities_allocation: Option, @@ -5339,12 +5863,21 @@ pub struct RoadsideDistrictPlan { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:objectives")] pub objectives: Option, @@ -5435,11 +5968,20 @@ pub struct RuralDistrictFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature(name = "urf:RuralDistrictImprovementPlan")] @@ -5513,12 +6055,21 @@ pub struct RuralDistrictImprovementPlan { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:districtFacilitiesAllocation")] pub district_facilities_allocation: Option, @@ -5615,12 +6166,21 @@ pub struct RuralDistrictPlan { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:objectives")] pub objectives: Option, @@ -5705,12 +6265,21 @@ pub struct SandControlFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -5795,12 +6364,21 @@ pub struct ScenicDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -5888,12 +6466,21 @@ pub struct ScheduledAreaForCollectiveGovernmentAndPublicOfficeFacilities { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor", required)] pub scheduled_executor: Option, } @@ -5969,12 +6556,21 @@ pub struct ScheduledAreaForCollectiveHousingFacilities { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor", required)] pub scheduled_executor: Option, } @@ -6050,12 +6646,21 @@ pub struct ScheduledAreaForDistributionBusinessPark { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor", required)] pub scheduled_executor: Option, } @@ -6131,12 +6736,21 @@ pub struct ScheduledAreaForIndustrialParkDevelopmentProjects { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor", required)] pub scheduled_executor: Option, } @@ -6212,12 +6826,21 @@ pub struct ScheduledAreaForNewHousingAndUrbanDevelopmentProjects { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor", required)] pub scheduled_executor: Option, } @@ -6293,12 +6916,21 @@ pub struct ScheduledAreaForNewUrbanInfrastructureProjects { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor", required)] pub scheduled_executor: Option, } @@ -6374,12 +7006,21 @@ pub struct ScheduledAreaForUrbanDevelopmentProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor", required)] pub scheduled_executor: Option, } @@ -6455,12 +7096,21 @@ pub struct SedimentDisasterProneArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:disasterType", required)] pub disaster_type: Option, @@ -6548,12 +7198,21 @@ pub struct SnowProtectionFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -6638,12 +7297,21 @@ pub struct SocialWelfareFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -6722,12 +7390,21 @@ pub struct SpecialGreenSpaceConservationDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -6806,12 +7483,21 @@ pub struct SpecialUrbanRenaissanceDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -6911,12 +7597,21 @@ pub struct SpecialUseAttractionDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -7010,12 +7705,21 @@ pub struct SpecialUseDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -7097,12 +7801,21 @@ pub struct SpecialUseRestrictionDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -7184,12 +7897,21 @@ pub struct SpecialZoneForPreservationOfHistoricalLandscape { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, } @@ -7265,12 +7987,21 @@ pub struct SpecifiedBlock { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -7355,12 +8086,21 @@ pub struct SpecifiedBuildingZoneImprovementPlan { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:districtFacilitiesAllocation")] pub district_facilities_allocation: Option, @@ -7454,12 +8194,21 @@ pub struct SpecifiedDisasterPreventionBlockImprovementZone { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -7547,12 +8296,21 @@ pub struct SpecifiedUrgentUrbanRenewalArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:developmentPolicy")] pub development_policy: Option, @@ -7640,12 +8398,21 @@ pub struct SupplyFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -7727,12 +8494,21 @@ pub struct TelecommunicationFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -7817,12 +8593,21 @@ pub struct TideFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -7907,12 +8692,21 @@ pub struct TrafficFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -8020,12 +8814,21 @@ pub struct TreatmentFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -8107,12 +8910,21 @@ pub struct TreePlantingDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -8191,11 +9003,20 @@ pub struct UnclassifiedBlankArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature(name = "urf:UnclassifiedUseDistrict")] @@ -8269,11 +9090,20 @@ pub struct UnclassifiedUseDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature(name = "urf:UnusedLandUsePromotionArea")] @@ -8347,11 +9177,20 @@ pub struct UnusedLandUsePromotionArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature(name = "urf:UrbanDevelopmentProject")] @@ -8425,12 +9264,21 @@ pub struct UrbanDevelopmentProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor")] pub scheduled_executor: Option, } @@ -8506,12 +9354,21 @@ pub struct UrbanDisasterRecoveryPromotionArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:expirationDate", required)] pub expiration_date: Option, @@ -8593,12 +9450,21 @@ pub struct UrbanFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -8677,12 +9543,21 @@ pub struct UrbanFacilityStipulatedByCabinetOrder { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -8767,11 +9642,20 @@ pub struct UrbanFunctionAttractionArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, } #[citygml_feature(name = "urf:UrbanPlanningArea")] @@ -8845,12 +9729,21 @@ pub struct UrbanPlanningArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaClassification", required)] pub area_classification: Option, @@ -8947,12 +9840,21 @@ pub struct UrbanRedevelopmentProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor")] pub scheduled_executor: Option, @@ -9046,12 +9948,21 @@ pub struct UrbanRedevelopmentPromotionArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:developmentPolicy")] pub development_policy: Option, @@ -9136,12 +10047,21 @@ pub struct UrbanRenewalProject { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:scheduledExecutor")] pub scheduled_executor: Option, @@ -9235,12 +10155,21 @@ pub struct UrgentUrbanRenewalArea { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:developmentPolicy")] pub development_policy: Option, @@ -9325,12 +10254,21 @@ pub struct UseDistrict { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, @@ -9442,12 +10380,21 @@ pub struct Waterway { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -9541,12 +10488,21 @@ pub struct WindProtectionFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:number")] pub number: Option, @@ -9631,12 +10587,21 @@ pub struct ZonalDisasterPreventionFacility { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:facilityType", required)] pub facility_type: Option, } @@ -9712,12 +10677,21 @@ pub struct ZoneForPreservationOfHistoricalLandscape { #[citygml(path = b"urf:surveyYear")] pub survey_year: Option, + #[citygml(path = b"urf:keyValuePairAttribute/uro:KeyValuePairAttribute")] + pub key_value_pair_attribute: Vec, + + #[citygml(path = b"urf:dataQualityAttribute/uro:DataQualityAttribute")] + pub data_quality_attribute: Option, + #[citygml(path = b"urf:boundary/urf:Boundary")] pub boundary: Vec, #[citygml(path = b"urf:location")] pub location: Option, + #[citygml(path = b"urf:urbanParkAttribute/urf:UrbanParkAttribute")] + pub urban_park_attribute: Option, + #[citygml(path = b"urf:areaInTotal")] pub area_in_total: Option, } @@ -9920,12 +10894,33 @@ pub struct ParkingPlaceAttribute { pub storeys_below_ground: Option, } +#[citygml_data(name = "urf:UrbanParkAttribute")] +pub struct UrbanParkAttribute { + #[citygml(path = b"urf:parkCode", required)] + pub park_code: Option, + + #[citygml(path = b"urf:startFrom", required)] + pub start_from: Option, + + #[citygml(path = b"urf:breakdownOfNominalArea/urf:BreakdownOfNominalArea")] + pub breakdown_of_nominal_area: Vec, +} + #[citygml_data(name = "urf:VehicleTerminalAttribute")] pub struct VehicleTerminalAttribute { #[citygml(path = b"urf:terminalType", required)] pub terminal_type: Option, } +#[citygml_data(name = "urf:BreakdownOfNominalArea")] +pub struct BreakdownOfNominalArea { + #[citygml(path = b"urf:breakdown", required)] + pub breakdown: Option, + + #[citygml(path = b"urf:areaInSquareMeter", required)] + pub area_in_square_meter: Option, +} + #[citygml_data(name = "urf:Boundary")] pub struct Boundary { #[citygml(path = b"urf:class")] diff --git a/nusamai-plateau/src/models/iur/uro/bridge.rs b/nusamai-plateau/src/models/iur/uro/bridge.rs index c92132340..340090c15 100644 --- a/nusamai-plateau/src/models/iur/uro/bridge.rs +++ b/nusamai-plateau/src/models/iur/uro/bridge.rs @@ -1,6 +1,4 @@ -use nusamai_citygml::{ - citygml_data, citygml_property, CityGmlElement, Code, Date, GYear, Length, Measure, -}; +use nusamai_citygml::{citygml_data, CityGmlElement, Code, Date, GYear, Length, Measure}; #[citygml_data(name = "uro:BridgeStructureAttribute")] pub struct BridgeStructureAttribute { @@ -92,98 +90,6 @@ pub struct ConstructionBaseAttribute { pub purpose: Option, } -#[citygml_property(name = "uro:DisasterRiskAttributeProperty")] -pub enum DisasterRiskAttributeProperty { - #[citygml(path = b"uro:HighTideRiskAttribute")] - HighTideRiskAttribute(HighTideRiskAttribute), - #[citygml(path = b"uro:InlandFloodingRiskAttribute")] - InlandFloodingRiskAttribute(InlandFloodingRiskAttribute), - #[citygml(path = b"uro:LandSlideRiskAttribute")] - LandSlideRiskAttribute(LandSlideRiskAttribute), - #[citygml(path = b"uro:RiverFloodingRiskAttribute")] - RiverFloodingRiskAttribute(RiverFloodingRiskAttribute), - #[citygml(path = b"uro:TsunamiRiskAttribute")] - TsunamiRiskAttribute(TsunamiRiskAttribute), -} - -#[citygml_data(name = "uro:HighTideRiskAttribute")] -pub struct HighTideRiskAttribute { - #[citygml(path = b"uro:description", required)] - pub description: Option, - - #[citygml(path = b"uro:rank")] - pub rank: Option, - - #[citygml(path = b"uro:rankOrg")] - pub rank_org: Option, - - #[citygml(path = b"uro:depth")] - pub depth: Option, -} - -#[citygml_data(name = "uro:InlandFloodingRiskAttribute")] -pub struct InlandFloodingRiskAttribute { - #[citygml(path = b"uro:description", required)] - pub description: Option, - - #[citygml(path = b"uro:rank")] - pub rank: Option, - - #[citygml(path = b"uro:rankOrg")] - pub rank_org: Option, - - #[citygml(path = b"uro:depth")] - pub depth: Option, -} - -#[citygml_data(name = "uro:LandSlideRiskAttribute")] -pub struct LandSlideRiskAttribute { - #[citygml(path = b"uro:description", required)] - pub description: Option, - - #[citygml(path = b"uro:areaType", required)] - pub area_type: Option, -} - -#[citygml_data(name = "uro:RiverFloodingRiskAttribute")] -pub struct RiverFloodingRiskAttribute { - #[citygml(path = b"uro:description", required)] - pub description: Option, - - #[citygml(path = b"uro:rank")] - pub rank: Option, - - #[citygml(path = b"uro:rankOrg")] - pub rank_org: Option, - - #[citygml(path = b"uro:depth")] - pub depth: Option, - - #[citygml(path = b"uro:adminType", required)] - pub admin_type: Option, - - #[citygml(path = b"uro:scale", required)] - pub scale: Option, - - #[citygml(path = b"uro:duration")] - pub duration: Option, -} - -#[citygml_data(name = "uro:TsunamiRiskAttribute")] -pub struct TsunamiRiskAttribute { - #[citygml(path = b"uro:description", required)] - pub description: Option, - - #[citygml(path = b"uro:rank")] - pub rank: Option, - - #[citygml(path = b"uro:rankOrg")] - pub rank_org: Option, - - #[citygml(path = b"uro:depth")] - pub depth: Option, -} - #[citygml_data(name = "uro:ConstructionRiskAssessmentAttribute")] pub struct ConstructionRiskAssessmentAttribute { #[citygml(path = b"uro:surveyYear")] diff --git a/nusamai-plateau/src/models/iur/uro/building.rs b/nusamai-plateau/src/models/iur/uro/building.rs index 74e23d38b..0bf3664a4 100644 --- a/nusamai-plateau/src/models/iur/uro/building.rs +++ b/nusamai-plateau/src/models/iur/uro/building.rs @@ -137,27 +137,6 @@ pub struct BuildingDetailAttribute { pub survey_year: Option, } -#[citygml_data(name = "uro:BuildingDataQualityAttribute")] -pub struct BuildingDataQualityAttribute { - #[citygml(path = b"uro:srcScale")] - pub src_scale: Vec, - - #[citygml(path = b"uro:geometrySrcDesc")] - pub geometry_src_desc: Vec, - - #[citygml(path = b"uro:thematicSrcDesc")] - pub thematic_src_desc: Vec, - - #[citygml(path = b"uro:appearanceSrcDesc")] - pub appearance_src_desc: Vec, - - #[citygml(path = b"uro:lod1HeightType", required)] - pub lod1_height_type: Option, - - #[citygml(path = b"uro:lodType")] - pub lod_type: Vec, -} - #[citygml_property(name = "uro:BuildingDisasterRiskAttributeProperty")] pub enum BuildingDisasterRiskAttributeProperty { #[citygml(path = b"uro:BuildingHighTideRiskAttribute")] @@ -328,20 +307,14 @@ pub struct LargeCustomerFacilityAttribute { pub survey_year: Option, } -#[citygml_data(name = "uro:RoomDataQualityAttribute")] -pub struct RoomDataQualityAttribute { - #[citygml(path = b"uro:srcScale")] - pub src_scale: Vec, - - #[citygml(path = b"uro:geometrySrcDesc")] - pub geometry_src_desc: Vec, - - #[citygml(path = b"uro:thematicSrcDesc")] - pub thematic_src_desc: Vec, +#[citygml_data(name = "uro:BuildingUsecaseAttribute")] +pub struct BuildingUsecaseAttribute { + #[citygml(path = b"uro:isTemporal")] + pub is_temporal: Option, - #[citygml(path = b"uro:appearanceSrcDesc")] - pub appearance_src_desc: Vec, + #[citygml(path = b"uro:floorHeight")] + pub floor_height: Option, - #[citygml(path = b"uro:lodType")] - pub lod_type: Option, + #[citygml(path = b"uro:isGroundFloorOpen")] + pub is_ground_floor_open: Option, } diff --git a/nusamai-plateau/src/models/iur/uro/city_furniture.rs b/nusamai-plateau/src/models/iur/uro/city_furniture.rs index c49357cb5..265ce42e7 100644 --- a/nusamai-plateau/src/models/iur/uro/city_furniture.rs +++ b/nusamai-plateau/src/models/iur/uro/city_furniture.rs @@ -8,21 +8,3 @@ pub struct CityFurnitureDetailAttribute { #[citygml(path = b"uro:description")] pub description: Option, } - -#[citygml_data(name = "uro:CityFurnitureDataQualityAttribute")] -pub struct CityFurnitureDataQualityAttribute { - #[citygml(path = b"uro:srcScale")] - pub src_scale: Vec, - - #[citygml(path = b"uro:geometrySrcDesc")] - pub geometry_src_desc: Vec, - - #[citygml(path = b"uro:thematicSrcDesc")] - pub thematic_src_desc: Vec, - - #[citygml(path = b"uro:appearanceSrcDesc")] - pub appearance_src_desc: Vec, - - #[citygml(path = b"uro:lodType")] - pub lod_type: Option, -} diff --git a/nusamai-plateau/src/models/iur/uro/common.rs b/nusamai-plateau/src/models/iur/uro/common.rs index 418393615..0e34aa241 100644 --- a/nusamai-plateau/src/models/iur/uro/common.rs +++ b/nusamai-plateau/src/models/iur/uro/common.rs @@ -1,5 +1,98 @@ use nusamai_citygml::{citygml_data, CityGmlElement, Code, Date, Length, Measure, Point, Uri}; +#[citygml_data(name = "uro:DataQualityAttribute")] +pub struct DataQualityAttribute { + // PLATEAU 3.x compatibility + #[citygml(path = b"uro:srcScale")] + pub src_scale: Vec, + + // PLATEAU 3.x compatibility + #[citygml(path = b"uro:geometrySrcDesc")] + pub geometry_src_desc: Vec, + + // PLATEAU 3.x compatibility + #[citygml(path = b"uro:appearanceSrcDesc")] + pub appearance_src_desc: Vec, + + #[citygml(path = b"uro:geometrySrcDesc0")] + pub geometry_src_desc0: Vec, + + #[citygml(path = b"uro:geometrySrcDesc1")] + pub geometry_src_desc1: Vec, + + #[citygml(path = b"uro:geometrySrcDesc2")] + pub geometry_src_desc2: Vec, + + #[citygml(path = b"uro:geometrySrcDesc3")] + pub geometry_src_desc3: Vec, + + #[citygml(path = b"uro:geometrySrcDesc4")] + pub geometry_src_desc4: Vec, + + #[citygml(path = b"uro:thematicSrcDesc")] + pub thematic_src_desc: Vec, + + #[citygml(path = b"uro:appearanceSrcDescLod0")] + pub appearance_src_desc_lod0: Vec, + + #[citygml(path = b"uro:appearanceSrcDescLod1")] + pub appearance_src_desc_lod1: Vec, + + #[citygml(path = b"uro:appearanceSrcDescLod2")] + pub appearance_src_desc_lod2: Vec, + + #[citygml(path = b"uro:appearanceSrcDescLod3")] + pub appearance_src_desc_lod3: Vec, + + #[citygml(path = b"uro:appearanceSrcDescLod4")] + pub appearance_src_desc_lod4: Vec, + + #[citygml(path = b"uro:lodType")] + pub lod_type: Vec, + + #[citygml(path = b"uro:lod1HeightType")] + pub lod1_height_type: Option, + + #[citygml(path = b"uro:tranDataAcquisition")] + pub tran_data_acquisition: Option, + + #[citygml(path = b"uro:publicSurveyDataQualityAttribute/uro:PublicSurveyDataQualityAttribute")] + pub public_survey_data_quality_attribute: Option, +} + +#[citygml_data(name = "uro:PublicSurveyDataQualityAttribute")] +pub struct PublicSurveyDataQualityAttribute { + #[citygml(path = b"uro:srcScaleLod0")] + pub src_scale_lod0: Option, + + #[citygml(path = b"uro:srcScaleLod1")] + pub src_scale_lod1: Option, + + #[citygml(path = b"uro:srcScaleLod2")] + pub src_scale_lod2: Option, + + #[citygml(path = b"uro:srcScaleLod3")] + pub src_scale_lod3: Option, + + #[citygml(path = b"uro:srcScaleLod4")] + pub src_scale_lod4: Option, + + #[citygml(path = b"uro:publicSurveySrcDescLod0")] + pub public_survey_src_desc_lod0: Vec, + + #[citygml(path = b"uro:publicSurveySrcDescLod1")] + pub public_survey_src_desc_lod1: Vec, + + #[citygml(path = b"uro:publicSurveySrcDescLod2")] + pub public_survey_src_desc_lod2: Vec, + + #[citygml(path = b"uro:publicSurveySrcDescLod3")] + pub public_survey_src_desc_lod3: Vec, + + #[citygml(path = b"uro:publicSurveySrcDescLod4")] + pub public_survey_src_desc_lod4: Vec, +} + #[citygml_data(name = "uro:UserDefinedValue")] pub struct UserDefinedValue { #[citygml(path = b"uro:stringValue")] diff --git a/nusamai-plateau/src/models/iur/uro/disaster_risk.rs b/nusamai-plateau/src/models/iur/uro/disaster_risk.rs new file mode 100644 index 000000000..2fd03b8d4 --- /dev/null +++ b/nusamai-plateau/src/models/iur/uro/disaster_risk.rs @@ -0,0 +1,132 @@ +use nusamai_citygml::{citygml_data, citygml_property, CityGmlElement, Code, Length, Measure}; + +#[citygml_property(name = "uro:DisasterRiskAttributeProperty")] +pub enum DisasterRiskAttributeProperty { + #[citygml(path = b"uro:HighTideRiskAttribute")] + HighTideRiskAttribute(HighTideRiskAttribute), + #[citygml(path = b"uro:InlandFloodingRiskAttribute")] + InlandFloodingRiskAttribute(InlandFloodingRiskAttribute), + #[citygml(path = b"uro:LandSlideRiskAttribute")] + LandSlideRiskAttribute(LandSlideRiskAttribute), + #[citygml(path = b"uro:ReservoirFloodingRiskAttribute")] + ReservoirFloodingRiskAttribute(ReservoirFloodingRiskAttribute), + #[citygml(path = b"uro:RiverFloodingRiskAttribute")] + RiverFloodingRiskAttribute(RiverFloodingRiskAttribute), + #[citygml(path = b"uro:TsunamiRiskAttribute")] + TsunamiRiskAttribute(TsunamiRiskAttribute), +} + +#[citygml_property(name = "uro:FloodingRiskAttributeProperty")] +pub enum FloodingRiskAttributeProperty { + #[citygml(path = b"uro:WaterBodyHighTideRiskAttribute")] + #[citygml(path = b"uro:HighTideRiskAttribute")] + HighTideRiskAttribute(HighTideRiskAttribute), + + #[citygml(path = b"uro:WaterBodyInlandFloodingRiskAttribute")] + #[citygml(path = b"uro:InlandFloodingRiskAttribute")] + InlandFloodingRiskAttribute(InlandFloodingRiskAttribute), + + #[citygml(path = b"uro:ReservoirFloodingRiskAttribute")] + ReservoirFloodingRiskAttribute(ReservoirFloodingRiskAttribute), + + #[citygml(path = b"uro:WaterBodyRiverFloodingRiskAttribute")] + #[citygml(path = b"uro:RiverFloodingRiskAttribute")] + RiverFloodingRiskAttribute(RiverFloodingRiskAttribute), + + #[citygml(path = b"uro:WaterBodyTsunamiRiskAttribute")] + #[citygml(path = b"uro:TsunamiRiskAttribute")] + TsunamiRiskAttribute(TsunamiRiskAttribute), +} + +#[citygml_data(name = "uro:HighTideRiskAttribute")] +pub struct HighTideRiskAttribute { + #[citygml(path = b"uro:description", required)] + pub description: Option, + + #[citygml(path = b"uro:rank")] + pub rank: Option, + + #[citygml(path = b"uro:rankOrg")] + pub rank_org: Option, + + #[citygml(path = b"uro:depth")] + pub depth: Option, +} + +#[citygml_data(name = "uro:InlandFloodingRiskAttribute")] +pub struct InlandFloodingRiskAttribute { + #[citygml(path = b"uro:description", required)] + pub description: Option, + + #[citygml(path = b"uro:rank")] + pub rank: Option, + + #[citygml(path = b"uro:rankOrg")] + pub rank_org: Option, + + #[citygml(path = b"uro:depth")] + pub depth: Option, +} + +#[citygml_data(name = "uro:LandSlideRiskAttribute")] +pub struct LandSlideRiskAttribute { + #[citygml(path = b"uro:description", required)] + pub description: Option, + + #[citygml(path = b"uro:areaType", required)] + pub area_type: Option, +} + +#[citygml_data(name = "uro:ReservoirFloodingRiskAttribute")] +pub struct ReservoirFloodingRiskAttribute { + #[citygml(path = b"uro:description", required)] + pub description: Option, + + #[citygml(path = b"uro:rank")] + pub rank: Option, + + #[citygml(path = b"uro:rankOrg")] + pub rank_org: Option, + + #[citygml(path = b"uro:depth")] + pub depth: Option, +} + +#[citygml_data(name = "uro:RiverFloodingRiskAttribute")] +pub struct RiverFloodingRiskAttribute { + #[citygml(path = b"uro:description", required)] + pub description: Option, + + #[citygml(path = b"uro:rank")] + pub rank: Option, + + #[citygml(path = b"uro:rankOrg")] + pub rank_org: Option, + + #[citygml(path = b"uro:depth")] + pub depth: Option, + + #[citygml(path = b"uro:adminType", required)] + pub admin_type: Option, + + #[citygml(path = b"uro:scale", required)] + pub scale: Option, + + #[citygml(path = b"uro:duration")] + pub duration: Option, +} + +#[citygml_data(name = "uro:TsunamiRiskAttribute")] +pub struct TsunamiRiskAttribute { + #[citygml(path = b"uro:description", required)] + pub description: Option, + + #[citygml(path = b"uro:rank")] + pub rank: Option, + + #[citygml(path = b"uro:rankOrg")] + pub rank_org: Option, + + #[citygml(path = b"uro:depth")] + pub depth: Option, +} diff --git a/nusamai-plateau/src/models/iur/uro/facility.rs b/nusamai-plateau/src/models/iur/uro/facility.rs index a1845b2e9..06502b8fd 100644 --- a/nusamai-plateau/src/models/iur/uro/facility.rs +++ b/nusamai-plateau/src/models/iur/uro/facility.rs @@ -20,6 +20,8 @@ pub enum FacilityAttributeProperty { MooringFacility(Box), #[citygml(path = b"uro:NavigationAssistanceFacility")] NavigationAssistanceFacility(Box), + #[citygml(path = b"uro:ParkFacilityLongevityPlanAttribute")] + ParkFacilityLongevityPlanAttribute(Box), #[citygml(path = b"uro:PortEnvironmentalImprovementFacility")] PortEnvironmentalImprovementFacility(Box), #[citygml(path = b"uro:PortManagementFacility")] @@ -645,6 +647,71 @@ pub struct NavigationAssistanceFacility { pub note: Option, } +#[citygml_data(name = "uro:ParkFacilityLongevityPlanAttribute")] +pub struct ParkFacilityLongevityPlanAttribute { + #[citygml(path = b"uro:facilityId")] + pub facility_id: Option, + + #[citygml(path = b"uro:parkCode", required)] + pub park_code: Option, + + #[citygml(path = b"uro:parkName", required)] + pub park_name: Option, + + #[citygml(path = b"uro:parkType", required)] + pub park_type: Option, + + #[citygml(path = b"uro:facilityName")] + pub facility_name: Option, + + #[citygml(path = b"uro:facilityNameOptional")] + pub facility_name_optional: Option, + + #[citygml(path = b"uro:specificFacilityName", required)] + pub specific_facility_name: Option, + + #[citygml(path = b"uro:numberOfFacilities/uro:NumberOfFacilities")] + pub number_of_facilities: Option, + + #[citygml(path = b"uro:size")] + pub size: Option, + + #[citygml(path = b"uro:mainMaterial")] + pub main_material: Option, + + #[citygml(path = b"uro:mainMaterialOptional")] + pub main_material_optional: Option, + + #[citygml(path = b"uro:installationYear", required)] + pub installation_year: Option, + + #[citygml(path = b"uro:disposalLimitPeriod")] + pub disposal_limit_period: Option, + + #[citygml(path = b"uro:expectedUsagePeriod")] + pub expected_usage_period: Option, + + #[citygml( + path = b"uro:repairsBeforeParkHealthAssessment/uro:RepairsBeforeParkHealthAssessment" + )] + pub repairs_before_park_health_assessment: Option, + + #[citygml(path = b"uro:parkHealthAssessment/uro:ParkHealthAssessment")] + pub park_health_assessment: Vec, + + #[citygml(path = b"uro:managementType")] + pub management_type: Option, + + #[citygml(path = b"uro:expectedRenewalYearWithMeasures")] + pub expected_renewal_year_with_measures: Option, + + #[citygml(path = b"uro:longevityMeasures/uro:LongevityMeasures")] + pub longevity_measures: Vec, + + #[citygml(path = b"uro:noteForLongevity")] + pub note_for_longevity: Option, +} + #[citygml_data(name = "uro:PortEnvironmentalImprovementFacility")] pub struct PortEnvironmentalImprovementFacility { #[citygml(path = b"uro:facilityId")] @@ -1202,3 +1269,57 @@ pub struct ShipServiceFacility { #[citygml(path = b"uro:note")] pub note: Option, } + +#[citygml_data(name = "uro:NumberOfFacilities")] +pub struct NumberOfFacilities { + #[citygml(path = b"uro:quantity", required)] + pub quantity: Option, + + #[citygml(path = b"uro:quantityUnit", required)] + pub quantity_unit: Option, +} + +#[citygml_data(name = "uro:LongevityMeasures")] +pub struct LongevityMeasures { + #[citygml(path = b"uro:fiscalYearForCountermeasures", required)] + pub fiscal_year_for_countermeasures: Option, + + #[citygml(path = b"uro:countermeasuresCost/uro:CountermeasuresCost")] + pub countermeasures_cost: Option, + + #[citygml(path = b"uro:description")] + pub description: Option, +} + +#[citygml_data(name = "uro:RepairsBeforeParkHealthAssessment")] +pub struct RepairsBeforeParkHealthAssessment { + #[citygml(path = b"uro:repair", required)] + pub repair: Option, + + #[citygml(path = b"uro:repairFiscalYear")] + pub repair_fiscal_year: Option, +} + +#[citygml_data(name = "uro:ParkHealthAssessment")] +pub struct ParkHealthAssessment { + #[citygml(path = b"uro:assessmentFiscalYear", required)] + pub assessment_fiscal_year: Option, + + #[citygml(path = b"uro:deteriorationStatus")] + pub deterioration_status: Option, + + #[citygml(path = b"uro:condition")] + pub condition: Option, + + #[citygml(path = b"uro:urgency")] + pub urgency: Option, +} + +#[citygml_data(name = "uro:CountermeasuresCost")] +pub struct CountermeasuresCost { + #[citygml(path = b"uro:cost")] + pub cost: Option, + + #[citygml(path = b"uro:costUnit", required)] + pub cost_unit: Option, +} diff --git a/nusamai-plateau/src/models/iur/uro/landuse.rs b/nusamai-plateau/src/models/iur/uro/landuse.rs index c7128d30f..3650ab45b 100644 --- a/nusamai-plateau/src/models/iur/uro/landuse.rs +++ b/nusamai-plateau/src/models/iur/uro/landuse.rs @@ -62,15 +62,3 @@ pub struct LandUseDetailAttribute { #[citygml(path = b"uro:surveyYear")] pub survey_year: Option, } - -#[citygml_data(name = "uro:LandUseDataQualityAttribute")] -pub struct LandUseDataQualityAttribute { - #[citygml(path = b"uro:srcScale")] - pub src_scale: Vec, - - #[citygml(path = b"uro:geometrySrcDesc")] - pub geometry_src_desc: Vec, - - #[citygml(path = b"uro:thematicSrcDesc")] - pub thematic_src_desc: Vec, -} diff --git a/nusamai-plateau/src/models/iur/uro/mod.rs b/nusamai-plateau/src/models/iur/uro/mod.rs index 486935850..e78e1ee46 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 disaster_risk; mod dm; mod facility; mod facility_id; @@ -17,13 +18,13 @@ mod transportation; mod tunnel; mod underground_building; mod utility_network; -mod vegetation; mod waterbody; pub use bridge::*; pub use building::*; pub use city_furniture::*; pub use common::*; +pub use disaster_risk::*; pub use dm::*; pub use facility::*; pub use facility_id::*; @@ -37,5 +38,4 @@ pub use transportation::*; pub use tunnel::*; pub use underground_building::*; pub use utility_network::*; -pub use vegetation::*; pub use waterbody::*; diff --git a/nusamai-plateau/src/models/iur/uro/other_construction.rs b/nusamai-plateau/src/models/iur/uro/other_construction.rs index 4f5d9944d..94c4c0b69 100644 --- a/nusamai-plateau/src/models/iur/uro/other_construction.rs +++ b/nusamai-plateau/src/models/iur/uro/other_construction.rs @@ -1,32 +1,5 @@ use nusamai_citygml::{citygml_data, citygml_property, CityGmlElement, Code, Length, Measure}; -#[citygml_data(name = "uro:ConstructionDataQualityAttribute")] -pub struct ConstructionDataQualityAttribute { - #[citygml(path = b"uro:srcScale")] - pub src_scale: Vec, - - #[citygml(path = b"uro:geometrySrcDesc")] - pub geometry_src_desc: Vec, - - #[citygml(path = b"uro:thematicSrcDesc")] - pub thematic_src_desc: Vec, - - #[citygml(path = b"uro:appearanceSrcDesc")] - pub appearance_src_desc: Vec, - - #[citygml(path = b"uro:dataAcquisition")] - pub data_acquisition: Option, - - #[citygml(path = b"uro:photoScale")] - pub photo_scale: Option, - - #[citygml(path = b"uro:lod1HeightType")] - pub lod1_height_type: Option, - - #[citygml(path = b"uro:lodType")] - pub lod_type: Vec, -} - #[citygml_property(name = "uro:ConstructionStructureAttributeProperty")] pub enum ConstructionStructureAttributeProperty { #[citygml(path = b"uro:ConstructionStructureAttribute")] diff --git a/nusamai-plateau/src/models/iur/uro/transportation.rs b/nusamai-plateau/src/models/iur/uro/transportation.rs index 1b4b82788..c5bfdfabc 100644 --- a/nusamai-plateau/src/models/iur/uro/transportation.rs +++ b/nusamai-plateau/src/models/iur/uro/transportation.rs @@ -2,24 +2,6 @@ use nusamai_citygml::{ citygml_data, citygml_property, CityGmlElement, Code, Date, GYear, Length, Measure, Point, }; -#[citygml_data(name = "uro:TransportationDataQualityAttribute")] -pub struct TransportationDataQualityAttribute { - #[citygml(path = b"uro:srcScale")] - pub src_scale: Vec, - - #[citygml(path = b"uro:geometrySrcDesc")] - pub geometry_src_desc: Vec, - - #[citygml(path = b"uro:thematicSrcDesc")] - pub thematic_src_desc: Vec, - - #[citygml(path = b"uro:appearanceSrcDesc")] - pub appearance_src_desc: Vec, - - #[citygml(path = b"uro:lodType")] - pub lod_type: Option, -} - #[citygml_data(name = "uro:RoadStructureAttribute")] pub struct RoadStructureAttribute { #[citygml(path = b"uro:widthType")] @@ -497,3 +479,12 @@ pub struct WaterwayDetailAttribute { #[citygml(path = b"uro:targetShipType")] pub target_ship_type: Vec, } + +#[citygml_data(name = "uro:TrafficObjectUsecaseAttribute")] +pub struct TrafficObjectUsecaseAttribute { + #[citygml(path = b"uro:minWidth")] + pub min_width: Option, + + #[citygml(path = b"uro:maxWidth")] + pub max_width: Option, +} diff --git a/nusamai-plateau/src/models/iur/uro/underground_building.rs b/nusamai-plateau/src/models/iur/uro/underground_building.rs index ac2cb5b09..492741556 100644 --- a/nusamai-plateau/src/models/iur/uro/underground_building.rs +++ b/nusamai-plateau/src/models/iur/uro/underground_building.rs @@ -55,6 +55,13 @@ pub struct UndergroundBuilding { #[citygml(path = b"bldg:address/core:Address")] pub address: Vec, + #[citygml(path = b"uro:bldgDataQualityAttribute/uro:DataQualityAttribute")] + pub bldg_data_quality_attribute: Option, + + #[citygml(path = b"uro:buildingDisasterRiskAttribute")] + #[citygml(path = b"uro:bldgDisasterRiskAttribute")] + pub bldg_disaster_risk_attribute: Vec, // -> uro:DisasterRiskAttribute + #[citygml(path = b"uro:bldgDmAttribute")] pub bldg_dm_attribute: Vec, // -> uro:DmAttribute @@ -67,18 +74,19 @@ pub struct UndergroundBuilding { #[citygml(path = b"uro:bldgFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub bldg_facility_type_attribute: Vec, + #[citygml(path = b"uro:keyValuePairAttribute/uro:KeyValuePairAttribute")] + #[citygml(path = b"uro:bldgKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub bldg_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:bldgRealEstateIDAttribute/uro:RealEstateIDAttribute")] pub bldg_real_estate_id_attribute: Option, - #[citygml(path = b"uro:buildingDataQualityAttribute/uro:BuildingDataQualityAttribute")] - pub building_data_quality_attribute: Option, + #[citygml(path = b"uro:bldgUsecaseAttribute/uro:BuildingUsecaseAttribute")] + pub bldg_usecase_attribute: Vec, #[citygml(path = b"uro:buildingDetailAttribute/uro:BuildingDetailAttribute")] pub building_detail_attribute: Vec, - #[citygml(path = b"uro:buildingDisasterRiskAttribute")] - pub building_disaster_risk_attribute: Vec, // -> uro:BuildingDisasterRiskAttribute - #[citygml(path = b"uro:buildingIDAttribute/uro:BuildingIDAttribute")] pub building_id_attribute: Vec, @@ -88,9 +96,6 @@ pub struct UndergroundBuilding { #[citygml(path = b"uro:indoorBuildingAttribute")] pub indoor_building_attribute: Vec, // -> uro:IndoorAttribute - #[citygml(path = b"uro:keyValuePairAttribute/uro:KeyValuePairAttribute")] - pub key_value_pair_attribute: Vec, - #[citygml(path = b"uro:largeCustomerFacilityAttribute/uro:LargeCustomerFacilityAttribute")] pub large_customer_facility_attribute: Vec, } diff --git a/nusamai-plateau/src/models/iur/uro/utility_network.rs b/nusamai-plateau/src/models/iur/uro/utility_network.rs index 2e8ec0616..834ff22cb 100644 --- a/nusamai-plateau/src/models/iur/uro/utility_network.rs +++ b/nusamai-plateau/src/models/iur/uro/utility_network.rs @@ -34,13 +34,14 @@ pub struct Appurtenance { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -54,6 +55,9 @@ pub struct Appurtenance { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -99,13 +103,14 @@ pub struct Cable { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -119,6 +124,9 @@ pub struct Cable { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -194,13 +202,14 @@ pub struct Duct { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -214,6 +223,9 @@ pub struct Duct { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -283,13 +295,14 @@ pub struct ElectricityCable { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -303,6 +316,9 @@ pub struct ElectricityCable { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -378,13 +394,14 @@ pub struct Handhole { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -398,6 +415,9 @@ pub struct Handhole { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -422,17 +442,17 @@ pub struct Handhole { #[citygml(path = b"uro:containerType")] pub container_type: Option, - #[citygml(path = b"uro:innerDiamiterLong")] - pub inner_diamiter_long: Option, + #[citygml(path = b"uro:innerDiameterLong")] + pub inner_diameter_long: Option, - #[citygml(path = b"uro:outerDiamiterLong")] - pub outer_diamiter_long: Option, + #[citygml(path = b"uro:outerDiameterLong")] + pub outer_diameter_long: Option, - #[citygml(path = b"uro:innerDiamiterShort")] - pub inner_diamiter_short: Option, + #[citygml(path = b"uro:innerDiameterShort")] + pub inner_diameter_short: Option, - #[citygml(path = b"uro:outerDiamiterShort")] - pub outer_diamiter_short: Option, + #[citygml(path = b"uro:outerDiameterShort")] + pub outer_diameter_short: Option, #[citygml(path = b"uro:depth")] pub depth: Option, @@ -455,13 +475,14 @@ pub struct Manhole { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -475,6 +496,9 @@ pub struct Manhole { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -499,17 +523,17 @@ pub struct Manhole { #[citygml(path = b"uro:containerType")] pub container_type: Option, - #[citygml(path = b"uro:innerDiamiterLong")] - pub inner_diamiter_long: Option, + #[citygml(path = b"uro:innerDiameterLong")] + pub inner_diameter_long: Option, - #[citygml(path = b"uro:outerDiamiterLong")] - pub outer_diamiter_long: Option, + #[citygml(path = b"uro:outerDiameterLong")] + pub outer_diameter_long: Option, - #[citygml(path = b"uro:innerDiamiterShort")] - pub inner_diamiter_short: Option, + #[citygml(path = b"uro:innerDiameterShort")] + pub inner_diameter_short: Option, - #[citygml(path = b"uro:outerDiamiterShort")] - pub outer_diamiter_short: Option, + #[citygml(path = b"uro:outerDiameterShort")] + pub outer_diameter_short: Option, #[citygml(path = b"uro:depth")] pub depth: Option, @@ -519,6 +543,9 @@ pub struct Manhole { #[citygml(path = b"uro:rotationAngle")] pub rotation_angle: Option, + + #[citygml(path = b"uro:elevation")] + pub elevation: Option, } #[citygml_feature(name = "uro:OilGasChemicalsPipe")] @@ -532,13 +559,14 @@ pub struct OilGasChemicalsPipe { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -552,6 +580,9 @@ pub struct OilGasChemicalsPipe { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -606,11 +637,11 @@ pub struct OilGasChemicalsPipe { #[citygml(path = b"uro:lengthAttribute/uro:LengthAttribute")] pub length_attribute: Vec, - #[citygml(path = b"uro:innerDiamiter")] - pub inner_diamiter: Option, + #[citygml(path = b"uro:innerDiameter")] + pub inner_diameter: Option, - #[citygml(path = b"uro:outerDiamiter")] - pub outer_diamiter: Option, + #[citygml(path = b"uro:outerDiameter")] + pub outer_diameter: Option, #[citygml(path = b"uro:sleeveType")] pub sleeve_type: Option, @@ -627,13 +658,14 @@ pub struct Pipe { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -647,6 +679,9 @@ pub struct Pipe { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -701,11 +736,11 @@ pub struct Pipe { #[citygml(path = b"uro:lengthAttribute/uro:LengthAttribute")] pub length_attribute: Vec, - #[citygml(path = b"uro:innerDiamiter")] - pub inner_diamiter: Option, + #[citygml(path = b"uro:innerDiameter")] + pub inner_diameter: Option, - #[citygml(path = b"uro:outerDiamiter")] - pub outer_diamiter: Option, + #[citygml(path = b"uro:outerDiameter")] + pub outer_diameter: Option, #[citygml(path = b"uro:sleeveType")] pub sleeve_type: Option, @@ -722,13 +757,14 @@ pub struct SewerPipe { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -742,6 +778,9 @@ pub struct SewerPipe { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -796,17 +835,26 @@ pub struct SewerPipe { #[citygml(path = b"uro:lengthAttribute/uro:LengthAttribute")] pub length_attribute: Vec, - #[citygml(path = b"uro:innerDiamiter")] - pub inner_diamiter: Option, + #[citygml(path = b"uro:innerDiameter")] + pub inner_diameter: Option, - #[citygml(path = b"uro:outerDiamiter")] - pub outer_diamiter: Option, + #[citygml(path = b"uro:outerDiameter")] + pub outer_diameter: Option, #[citygml(path = b"uro:sleeveType")] pub sleeve_type: Option, #[citygml(path = b"uro:slope")] pub slope: Option, + + #[citygml(path = b"uro:invertElevationUpstream")] + pub invert_elevation_upstream: Option, + + #[citygml(path = b"uro:invertElevationDownstream")] + pub invert_elevation_downstream: Option, + + #[citygml(path = b"uro:flowDirection")] + pub flow_direction: Option, } #[citygml_feature(name = "uro:TelecommunicationsCable")] @@ -820,13 +868,14 @@ pub struct TelecommunicationsCable { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -840,6 +889,9 @@ pub struct TelecommunicationsCable { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -915,13 +967,14 @@ pub struct ThermalPipe { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -935,6 +988,9 @@ pub struct ThermalPipe { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -989,11 +1045,11 @@ pub struct ThermalPipe { #[citygml(path = b"uro:lengthAttribute/uro:LengthAttribute")] pub length_attribute: Vec, - #[citygml(path = b"uro:innerDiamiter")] - pub inner_diamiter: Option, + #[citygml(path = b"uro:innerDiameter")] + pub inner_diameter: Option, - #[citygml(path = b"uro:outerDiamiter")] - pub outer_diamiter: Option, + #[citygml(path = b"uro:outerDiameter")] + pub outer_diameter: Option, #[citygml(path = b"uro:sleeveType")] pub sleeve_type: Option, @@ -1010,13 +1066,14 @@ pub struct WaterPipe { #[citygml(path = b"frn:usage")] pub usage: Vec, + #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] + pub city_furniture_detail_attribute: Vec, + #[citygml( path = b"uro:cityFurnitureDataQualityAttribute/uro:CityFurnitureDataQualityAttribute" )] - pub city_furniture_data_quality_attribute: Option, - - #[citygml(path = b"uro:cityFurnitureDetailAttribute/uro:CityFurnitureDetailAttribute")] - pub city_furniture_detail_attribute: Vec, + #[citygml(path = b"uro:frnDataQualityAttribute/uro:DataQualityAttribute")] + pub frn_data_quality_attribute: Option, #[citygml(path = b"uro:frnDmAttribute")] pub frn_dm_attribute: Vec, // -> uro:DmAttribute @@ -1030,6 +1087,9 @@ pub struct WaterPipe { #[citygml(path = b"uro:frnFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub frn_facility_type_attribute: Vec, + #[citygml(path = b"uro:frnKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub frn_key_value_pair_attribute: Vec, + #[citygml(path = b"uro:occupierType")] pub occupier_type: Option, @@ -1084,11 +1144,11 @@ pub struct WaterPipe { #[citygml(path = b"uro:lengthAttribute/uro:LengthAttribute")] pub length_attribute: Vec, - #[citygml(path = b"uro:innerDiamiter")] - pub inner_diamiter: Option, + #[citygml(path = b"uro:innerDiameter")] + pub inner_diameter: Option, - #[citygml(path = b"uro:outerDiamiter")] - pub outer_diamiter: Option, + #[citygml(path = b"uro:outerDiameter")] + pub outer_diameter: Option, #[citygml(path = b"uro:sleeveType")] pub sleeve_type: Option, diff --git a/nusamai-plateau/src/models/iur/uro/vegetation.rs b/nusamai-plateau/src/models/iur/uro/vegetation.rs deleted file mode 100644 index bd139cf03..000000000 --- a/nusamai-plateau/src/models/iur/uro/vegetation.rs +++ /dev/null @@ -1,16 +0,0 @@ -use nusamai_citygml::{citygml_data, CityGmlElement, Code}; - -#[citygml_data(name = "uro:VegetationDataQualityAttribute")] -pub struct VegetationDataQualityAttribute { - #[citygml(path = b"uro:srcScale")] - pub src_scale: Vec, - - #[citygml(path = b"uro:geometrySrcDesc")] - pub geometry_src_desc: Vec, - - #[citygml(path = b"uro:thematicSrcDesc")] - pub thematic_src_desc: Vec, - - #[citygml(path = b"uro:appearanceSrcDesc")] - pub appearance_src_desc: Vec, -} diff --git a/nusamai-plateau/src/models/landuse.rs b/nusamai-plateau/src/models/landuse.rs index 9e0a1c3ea..c636ae9c2 100644 --- a/nusamai-plateau/src/models/landuse.rs +++ b/nusamai-plateau/src/models/landuse.rs @@ -17,10 +17,11 @@ pub struct LandUse { pub ifc_land_use_attribute: Vec, // -> uro:IfcAttribute #[citygml(path = b"uro:landUseDetailAttribute/uro:LandUseDetailAttribute")] - pub land_use_detail_attribute: Option, + pub land_use_detail_attribute: Vec, #[citygml(path = b"uro:luseDataQualityAttribute/uro:LandUseDataQualityAttribute")] - pub luse_data_quality_attribute: Option, + #[citygml(path = b"uro:luseDataQualityAttribute/uro:DataQualityAttribute")] + pub luse_data_quality_attribute: Option, #[citygml(path = b"uro:luseDmAttribute")] pub luse_dm_attribute: Vec, // -> uro:DmAttribute @@ -33,4 +34,7 @@ pub struct LandUse { #[citygml(path = b"uro:luseFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub luse_facility_type_attribute: Vec, + + #[citygml(path = b"uro:luseKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub luse_key_value_pair_attribute: Vec, } diff --git a/nusamai-plateau/src/models/mod.rs b/nusamai-plateau/src/models/mod.rs index 47fb80495..d478cf4ed 100644 --- a/nusamai-plateau/src/models/mod.rs +++ b/nusamai-plateau/src/models/mod.rs @@ -1,7 +1,7 @@ pub mod appearance; pub mod bridge; pub mod building; -pub mod cityfurniture; +pub mod city_furniture; pub mod cityobjectgroup; pub mod core; pub mod generics; @@ -16,7 +16,7 @@ pub mod waterbody; pub use bridge::Bridge; pub use building::Building; -pub use cityfurniture::CityFurniture; +pub use city_furniture::CityFurniture; pub use cityobjectgroup::CityObjectGroup; pub use generics::GenericCityObject; pub use iur::{urf, uro}; diff --git a/nusamai-plateau/src/models/other_construction.rs b/nusamai-plateau/src/models/other_construction.rs index 22facd42c..6a78172bc 100644 --- a/nusamai-plateau/src/models/other_construction.rs +++ b/nusamai-plateau/src/models/other_construction.rs @@ -52,7 +52,8 @@ pub struct OtherConstruction { pub cons_dm_attribute: Vec, // -> uro:DmAttribute #[citygml(path = b"uro:consDataQualityAttribute/uro:ConstructionDataQualityAttribute")] - pub cons_data_quality_attribute: Option, + #[citygml(path = b"uro:consDataQualityAttribute/uro:DataQualityAttribute")] + pub cons_data_quality_attribute: Option, #[citygml(path = b"uro:boundedBy")] pub bounded_by: Vec, // -> uro:_BoundarySurface diff --git a/nusamai-plateau/src/models/transportation.rs b/nusamai-plateau/src/models/transportation.rs index 03294b4d7..67d4b8151 100644 --- a/nusamai-plateau/src/models/transportation.rs +++ b/nusamai-plateau/src/models/transportation.rs @@ -4,9 +4,6 @@ use super::iur::uro; #[citygml_feature(name = "tran:Road")] pub struct Road { - #[citygml(path = b"uro:tranDmAttribute")] - pub tran_dm_attribute: Vec, // -> uro:DmAttribute - #[citygml(path = b"tran:class")] pub class: Option, @@ -24,7 +21,11 @@ pub struct Road { #[citygml(path = b"uro:tranDataQualityAttribute/uro:TransportationDataQualityAttribute")] #[citygml(path = b"uro:roadDataQualityAttribute/uro:RoadDataQualityAttribute")] - pub tran_data_quality_attribute: Option, + #[citygml(path = b"uro:tranDataQualityAttribute/uro:DataQualityAttribute")] + pub tran_data_quality_attribute: Option, + + #[citygml(path = b"uro:tranDmAttribute")] + pub tran_dm_attribute: Vec, // -> uro:DmAttribute #[citygml(path = b"uro:tranFacilityAttribute")] pub tran_facility_attribute: Vec, // -> uro:FacilityAttribute @@ -35,6 +36,12 @@ pub struct Road { #[citygml(path = b"uro:tranFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub tran_facility_type_attribute: Vec, + #[citygml(path = b"uro:tranKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub tran_key_value_pair_attribute: Vec, + + #[citygml(path = b"uro:tranUsecaseAttribute/uro:TrafficObjectUsecaseAttribute")] + pub tran_usecase_attribute: Vec, + #[citygml(path = b"uro:roadStatus/uro:RoadType")] pub road_status: Vec, @@ -42,14 +49,11 @@ pub struct Road { pub road_structure_attribute: Vec, #[citygml(path = b"uro:trafficVolumeAttribute/uro:TrafficVolumeAttribute")] - pub traffic_volume_attribute: Option, + pub traffic_volume_attribute: Vec, } #[citygml_feature(name = "tran:Railway")] pub struct Railway { - #[citygml(path = b"uro:tranDmAttribute")] - pub tran_dm_attribute: Vec, // -> uro:DmAttribute - #[citygml(path = b"tran:class")] pub class: Option, @@ -66,7 +70,11 @@ pub struct Railway { pub auxiliary_traffic_area: Vec, #[citygml(path = b"uro:tranDataQualityAttribute/uro:TransportationDataQualityAttribute")] - pub tran_data_quality_attribute: Option, + #[citygml(path = b"uro:tranDataQualityAttribute/uro:DataQualityAttribute")] + pub tran_data_quality_attribute: Option, + + #[citygml(path = b"uro:tranDmAttribute")] + pub tran_dm_attribute: Vec, // -> uro:DmAttribute #[citygml(path = b"uro:tranFacilityAttribute")] pub tran_facility_attribute: Vec, // -> uro:FacilityAttribute @@ -77,15 +85,18 @@ pub struct Railway { #[citygml(path = b"uro:tranFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub tran_facility_type_attribute: Vec, + #[citygml(path = b"uro:tranKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub tran_key_value_pair_attribute: Vec, + + #[citygml(path = b"uro:tranUsecaseAttribute/uro:TrafficObjectUsecaseAttribute")] + pub tran_usecase_attribute: Vec, + #[citygml(path = b"uro:railwayRouteAttribute/uro:RailwayRouteAttribute")] - pub railway_route_attribute: Option, + pub railway_route_attribute: Vec, } #[citygml_feature(name = "tran:Track")] pub struct Track { - #[citygml(path = b"uro:tranDmAttribute")] - pub tran_dm_attribute: Vec, // -> uro:DmAttribute - #[citygml(path = b"tran:class")] pub class: Option, @@ -102,7 +113,11 @@ pub struct Track { pub auxiliary_traffic_area: Vec, #[citygml(path = b"uro:tranDataQualityAttribute/uro:TransportationDataQualityAttribute")] - pub tran_data_quality_attribute: Option, + #[citygml(path = b"uro:tranDataQualityAttribute/uro:DataQualityAttribute")] + pub tran_data_quality_attribute: Option, + + #[citygml(path = b"uro:tranDmAttribute")] + pub tran_dm_attribute: Vec, // -> uro:DmAttribute #[citygml(path = b"uro:tranFacilityAttribute")] pub tran_facility_attribute: Vec, // -> uro:FacilityAttribute @@ -113,15 +128,18 @@ pub struct Track { #[citygml(path = b"uro:tranFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub tran_facility_type_attribute: Vec, + #[citygml(path = b"uro:tranKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub tran_key_value_pair_attribute: Vec, + + #[citygml(path = b"uro:tranUsecaseAttribute/uro:TrafficObjectUsecaseAttribute")] + pub tran_usecase_attribute: Vec, + #[citygml(path = b"uro:trackAttribute/uro:TrackAttribute")] - pub track_attribute: Option, + pub track_attribute: Vec, } #[citygml_feature(name = "tran:Square")] pub struct Square { - #[citygml(path = b"uro:tranDmAttribute")] - pub tran_dm_attribute: Vec, // -> uro:DmAttribute - #[citygml(path = b"tran:class")] pub class: Option, @@ -138,7 +156,11 @@ pub struct Square { pub auxiliary_traffic_area: Vec, #[citygml(path = b"uro:tranDataQualityAttribute/uro:TransportationDataQualityAttribute")] - pub tran_data_quality_attribute: Option, + #[citygml(path = b"uro:tranDataQualityAttribute/uro:DataQualityAttribute")] + pub tran_data_quality_attribute: Option, + + #[citygml(path = b"uro:tranDmAttribute")] + pub tran_dm_attribute: Vec, // -> uro:DmAttribute #[citygml(path = b"uro:tranFacilityAttribute")] pub tran_facility_attribute: Vec, // -> uro:FacilityAttribute @@ -149,17 +171,20 @@ pub struct Square { #[citygml(path = b"uro:tranFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub tran_facility_type_attribute: Vec, + #[citygml(path = b"uro:tranKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub tran_key_value_pair_attribute: Vec, + + #[citygml(path = b"uro:tranUsecaseAttribute/uro:TrafficObjectUsecaseAttribute")] + pub tran_usecase_attribute: Vec, + #[citygml(path = b"uro:squareUrbanPlanAttribute")] - pub square_urban_plan_attribute: Option, // -> uro:SquareUrbanPlanAttribute + pub square_urban_plan_attribute: Vec, // -> uro:SquareUrbanPlanAttribute } /// uro:Waterway (PLATEAU, CityGML 2.x) /// tran:Waterway (CityGML 3.x) #[citygml_feature(name = "uro:Waterway")] pub struct Waterway { - #[citygml(path = b"uro:tranDmAttribute")] - pub tran_dm_attribute: Vec, // -> uro:DmAttribute - #[citygml(path = b"tran:class")] pub class: Option, @@ -176,7 +201,11 @@ pub struct Waterway { pub auxiliary_traffic_area: Vec, #[citygml(path = b"uro:tranDataQualityAttribute/uro:TransportationDataQualityAttribute")] - pub tran_data_quality_attribute: Option, + #[citygml(path = b"uro:tranDataQualityAttribute/uro:DataQualityAttribute")] + pub tran_data_quality_attribute: Option, + + #[citygml(path = b"uro:tranDmAttribute")] + pub tran_dm_attribute: Vec, // -> uro:DmAttribute #[citygml(path = b"uro:tranFacilityAttribute")] pub tran_facility_attribute: Vec, // -> uro:FacilityAttribute @@ -187,15 +216,18 @@ pub struct Waterway { #[citygml(path = b"uro:tranFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub tran_facility_type_attribute: Vec, + #[citygml(path = b"uro:tranKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub tran_key_value_pair_attribute: Vec, + + #[citygml(path = b"uro:tranUsecaseAttribute/uro:TrafficObjectUsecaseAttribute")] + pub tran_usecase_attribute: Vec, + #[citygml(path = b"uro:waterwayDetailAttribute/uro:WaterwayDetailAttribute")] pub waterway_detail_attribute: Option, } #[citygml_feature(name = "tran:TrafficArea")] pub struct TrafficArea { - #[citygml(path = b"uro:tranDmAttribute")] - pub tran_dm_attribute: Vec, // -> uro:DmAttribute - #[citygml(path = b"tran:class")] pub class: Option, @@ -212,14 +244,11 @@ pub struct TrafficArea { pub railway_track_attribute: Vec, #[citygml(path = b"uro:trafficAreaStructureAttribute/uro:TrafficAreaStructureAttribute")] - pub traffic_area_structure_attribute: Option, + pub traffic_area_structure_attribute: Vec, } #[citygml_feature(name = "tran:AuxiliaryTrafficArea")] pub struct AuxiliaryTrafficArea { - #[citygml(path = b"uro:tranDmAttribute")] - pub tran_dm_attribute: Vec, // -> uro:DmAttribute - #[citygml(path = b"tran:class")] pub class: Option, diff --git a/nusamai-plateau/src/models/tunnel.rs b/nusamai-plateau/src/models/tunnel.rs index 523c6ec02..a9aeecb57 100644 --- a/nusamai-plateau/src/models/tunnel.rs +++ b/nusamai-plateau/src/models/tunnel.rs @@ -35,10 +35,11 @@ pub struct Tunnel { pub consists_of_tunnel_part: Vec, #[citygml(path = b"uro:tunBaseAttribute/uro:ConstructionBaseAttribute")] - pub tun_base_attribute: Option, + pub tun_base_attribute: Vec, #[citygml(path = b"uro:tunDataQualityAttribute/uro:ConstructionDataQualityAttribute")] - pub tun_data_quality_attribute: Option, + #[citygml(path = b"uro:tunDataQualityAttribute/uro:DataQualityAttribute")] + pub tun_data_quality_attribute: Option, #[citygml(path = b"uro:tunDisasterRiskAttribute")] pub tun_disaster_risk_attribute: Vec, // -> uro:DisasterRiskAttribute @@ -56,13 +57,16 @@ pub struct Tunnel { pub tun_facility_type_attribute: Vec, #[citygml(path = b"uro:tunFunctionalAttribute/uro:TunnelFunctionalAttribute")] - pub tun_functional_attribute: Option, + pub tun_functional_attribute: Vec, + + #[citygml(path = b"uro:tunKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub tun_key_value_pair_attribute: Vec, #[citygml(path = b"uro:tunRiskAssessmentAttribute/uro:ConstructionRiskAssessmentAttribute")] - pub tun_risk_assessment_attribute: Option, + pub tun_risk_assessment_attribute: Vec, #[citygml(path = b"uro:tunStructureAttribute/uro:TunnelStructureAttribute")] - pub tun_structure_attribute: Option, + pub tun_structure_attribute: Vec, } #[citygml_feature(name = "tun:TunnelPart")] @@ -98,10 +102,11 @@ pub struct TunnelPart { pub consists_of_tunnel_part: Vec, #[citygml(path = b"uro:tunBaseAttribute/uro:ConstructionBaseAttribute")] - pub tun_base_attribute: Option, + pub tun_base_attribute: Vec, #[citygml(path = b"uro:tunDataQualityAttribute/uro:ConstructionDataQualityAttribute")] - pub tun_data_quality_attribute: Option, + #[citygml(path = b"uro:tunDataQualityAttribute/uro:DataQualityAttribute")] + pub tun_data_quality_attribute: Option, #[citygml(path = b"uro:tunDisasterRiskAttribute")] pub tun_disaster_risk_attribute: Vec, // -> uro:DisasterRiskAttribute @@ -119,13 +124,16 @@ pub struct TunnelPart { pub tun_facility_type_attribute: Vec, #[citygml(path = b"uro:tunFunctionalAttribute/uro:TunnelFunctionalAttribute")] - pub tun_functional_attribute: Option, + pub tun_functional_attribute: Vec, + + #[citygml(path = b"uro:tunKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub tun_key_value_pair_attribute: Vec, #[citygml(path = b"uro:tunRiskAssessmentAttribute/uro:ConstructionRiskAssessmentAttribute")] - pub tun_risk_assessment_attribute: Option, + pub tun_risk_assessment_attribute: Vec, #[citygml(path = b"uro:tunStructureAttribute/uro:TunnelStructureAttribute")] - pub tun_structure_attribute: Option, + pub tun_structure_attribute: Vec, } #[citygml_feature(name = "tun:HollowSpace")] diff --git a/nusamai-plateau/src/models/vegetation.rs b/nusamai-plateau/src/models/vegetation.rs index 177c69a22..08ebac11d 100644 --- a/nusamai-plateau/src/models/vegetation.rs +++ b/nusamai-plateau/src/models/vegetation.rs @@ -4,6 +4,10 @@ use super::uro; #[citygml_feature(name = "veg:SolitaryVegetationObject")] pub struct SolitaryVegetationObject { + #[citygml(path = b"uro:vegetationDataQualityAttribute/uro:VegetationDataQualityAttribute")] + #[citygml(path = b"uro:vegDataQualityAttribute/uro:DataQualityAttribute")] + pub veg_data_quality_attribute: Option, + #[citygml(path = b"uro:vegDmAttribute")] pub veg_dm_attribute: Vec, // -> uro:DmAttribute @@ -16,8 +20,8 @@ pub struct SolitaryVegetationObject { #[citygml(path = b"uro:vegFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub veg_facility_type_attribute: Vec, - #[citygml(path = b"uro:vegetationDataQualityAttribute/uro:VegetationDataQualityAttribute")] - pub vegetation_data_quality_attribute: Option, + #[citygml(path = b"uro:vegKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub veg_key_value_pair_attribute: Vec, #[citygml(path = b"veg:class")] pub class: Option, @@ -43,6 +47,10 @@ pub struct SolitaryVegetationObject { #[citygml_feature(name = "veg:PlantCover")] pub struct PlantCover { + #[citygml(path = b"uro:vegetationDataQualityAttribute/uro:VegetationDataQualityAttribute")] + #[citygml(path = b"uro:vegDataQualityAttribute/uro:DataQualityAttribute")] + pub veg_data_quality_attribute: Option, + #[citygml(path = b"uro:vegDmAttribute")] pub veg_dm_attribute: Vec, // -> uro:DmAttribute @@ -55,8 +63,8 @@ pub struct PlantCover { #[citygml(path = b"uro:vegFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub veg_facility_type_attribute: Vec, - #[citygml(path = b"uro:vegetationDataQualityAttribute/uro:VegetationDataQualityAttribute")] - pub vegetation_data_quality_attribute: Option, + #[citygml(path = b"uro:vegKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub veg_key_value_pair_attribute: Vec, #[citygml(path = b"veg:class")] pub class: Option, diff --git a/nusamai-plateau/src/models/waterbody.rs b/nusamai-plateau/src/models/waterbody.rs index 117b16bc1..155daa0a0 100644 --- a/nusamai-plateau/src/models/waterbody.rs +++ b/nusamai-plateau/src/models/waterbody.rs @@ -17,10 +17,13 @@ pub struct WaterBody { pub bounded_by: Vec, // -> wtr:_WaterBoundarySurface #[citygml(path = b"uro:floodingRiskAttribute")] - pub flooding_risk_attribute: Vec, // -> uro:WaterBodyFloodingRiskAttribute + pub flooding_risk_attribute: Vec, // -> uro:FloodingRiskAttribute #[citygml(path = b"uro:waterBodyDetailAttribute/uro:WaterBodyDetailAttribute")] - pub water_body_detail_attribute: Option, + pub water_body_detail_attribute: Vec, + + #[citygml(path = b"uro:wtrDataQualityAttribute/uro:DataQualityAttribute")] + pub wtr_data_quality_attribute: Option, #[citygml(path = b"uro:wtrDmAttribute")] pub wtr_dm_attribute: Vec, // -> uro:DmAttribute @@ -33,6 +36,9 @@ pub struct WaterBody { #[citygml(path = b"uro:wtrFacilityTypeAttribute/uro:FacilityTypeAttribute")] pub wtr_facility_type_attribute: Vec, + + #[citygml(path = b"uro:wtrKeyValuePairAttribute/uro:KeyValuePairAttribute")] + pub wtr_key_value_pair_attribute: Vec, } #[citygml_property(name = "wtr:_WaterBoundarySurfaceProperty")] diff --git a/nusamai-plateau/tests/load_examples.rs b/nusamai-plateau/tests/load_examples.rs deleted file mode 100644 index 04755a641..000000000 --- a/nusamai-plateau/tests/load_examples.rs +++ /dev/null @@ -1,1022 +0,0 @@ -pub mod common; - -use common::{load_cityobjs, load_cityobjs_from_zstd}; -use nusamai_citygml::{Code, Date, Measure}; -use nusamai_plateau::models::{relief, uro, TopLevelCityObject}; - -// #[test] -// fn load_area_example() { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/area/523846_area_6697.gml"); -// assert_eq!(cityobjs.len(), 4); -// let TopLevelCityObject::Zone(zone) = &cityobjs.first().unwrap().cityobj else { -// panic!("Not a Zone"); -// }; - -// assert_eq!( -// zone.function, -// vec![Code::new("港湾区域".into(), "0201".into())] -// ); -// assert_eq!(zone.urf_valid_from, Date::from_ymd_opt(1, 1, 1)); -// assert_eq!( -// zone.valid_from_type, -// Code::new("決定".into(), "1".into()).into() -// ); -// } - -// #[test] -// fn load_bridge_example() { -// { -// let cityobjs = -// load_cityobjs("./tests/data/plateau-3_0/udx/brid/dorokyo_51324378_brid_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::Bridge(bridge) = &cityobjs.first().unwrap().cityobj else { -// panic!("Expected a bridge"); -// }; - -// assert_eq!( -// bridge.class, -// Some(Code::new("アーチ橋".to_string(), "03".to_string())) -// ); -// assert_eq!( -// bridge.function, -// vec![Code::new("道路橋".to_string(), "01".to_string())] -// ); -// assert_eq!(bridge.year_of_construction, Some("1962".to_string())); -// assert_eq!(bridge.is_movable, Some(false)); -// assert_eq!( -// bridge.outer_bridge_construction[0].function, -// vec![Code::new("アーチ".to_string(), "04".to_string())] -// ); -// } - -// { -// let cityobjs = -// load_cityobjs("./tests/data/plateau-3_0/udx/brid/hodokyo_51324378_brid_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::Bridge(bridge) = &cityobjs.first().unwrap().cityobj else { -// panic!("Expected a bridge"); -// }; - -// assert_eq!( -// bridge.function, -// vec![Code::new("横断歩道橋".to_string(), "07".to_string())] -// ); -// assert_eq!(bridge.year_of_construction, Some("1968".to_string())); -// assert_eq!( -// bridge -// .brid_risk_assessment_attribute -// .as_ref() -// .unwrap() -// .risk_type -// .as_ref() -// .unwrap() -// .value(), -// "判定区分Ⅰ(健全)" -// ); -// } - -// { -// let cityobjs = -// load_cityobjs("./tests/data/plateau-3_0/udx/brid/pedeck_53360690_brid_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::Bridge(bridge) = &cityobjs.first().unwrap().cityobj else { -// panic!("Expected a bridge"); -// }; - -// assert_eq!( -// bridge.function, -// vec![Code::new( -// "ペデストリアンデッキ".to_string(), -// "08".to_string() -// )] -// ); -// assert_eq!( -// bridge -// .brid_structure_attribute -// .as_ref() -// .unwrap() -// .length -// .as_ref() -// .unwrap() -// .value(), -// 776.0 -// ); -// } -// } - -#[test] -fn load_building_lod4_example() { - let cityobjs = load_cityobjs_from_zstd( - "./tests/data/tokyo23-ku/udx/bldg/53393680_bldg_6697_lod4.2_op.gml.zst", - ); - - let mut multipolygons = 0; - let mut buildings = 0; - let mut cityobjectgroups = 0; - - assert_eq!(cityobjs.len(), 1527); - - for cityobj in cityobjs { - multipolygons += cityobj.geometries.multipolygon.len(); - match cityobj.cityobj { - TopLevelCityObject::Building(_building) => { - buildings += 1; - } - TopLevelCityObject::CityObjectGroup(_group) => { - cityobjectgroups += 1; - } - _ => {} - } - } - - assert_eq!(buildings, 1485); - assert_eq!(cityobjectgroups, 42); - assert_eq!(multipolygons, 197633); -} - -#[test] -fn load_cityfurniture_example() { - let cityobjs = load_cityobjs("./tests/data/kawasaki-shi/udx/frn/53391597_frn_6697_op.gml"); - assert_eq!(cityobjs.len(), 28); - let TopLevelCityObject::CityFurniture(frn) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a CityFurniture"); - }; - - assert_eq!(frn.function, vec![Code::new("柱".into(), "4800".into())]); - assert_eq!( - frn.city_furniture_data_quality_attribute - .as_ref() - .unwrap() - .src_scale, - vec![Code::new("地図情報レベル500".into(), "3".into(),)] - ); -} - -// #[test] -// fn load_generics_example() { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/gen/53392565_gen_6697.gml"); -// assert_eq!(cityobjs.len(), 4); -// let TopLevelCityObject::GenericCityObject(_gen) = &cityobjs.first().unwrap().cityobj else { -// panic!("Not a GenericCityObject"); -// }; -// } - -#[test] -fn load_landslide_example() { - let cityobjs = load_cityobjs("./tests/data/numazu-shi/udx/lsld/523857_lsld_6668_op.gml"); - assert_eq!(cityobjs.len(), 81); - let TopLevelCityObject::SedimentDisasterProneArea(lsld) = &cityobjs.first().unwrap().cityobj - else { - panic!("expected SedimentDisasterProneArea"); - }; - assert_eq!(lsld.location, Some("沼津市下香貫八重".into())); - assert_eq!(lsld.disaster_type.as_ref().unwrap().code(), "1"); - assert_eq!(lsld.area_type.as_ref().unwrap().code(), "2"); - assert_eq!(lsld.zone_number.as_ref().unwrap(), "103-Ⅰ-0648"); - assert_eq!(lsld.status.as_ref().unwrap().code(), "0"); -} - -#[test] -fn load_landuse_example() { - let cityobjs = load_cityobjs("./tests/data/numazu-shi/udx/luse/523836_luse_6668_op.gml"); - assert_eq!(cityobjs.len(), 225); - let TopLevelCityObject::LandUse(landuse) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a Landuse"); - }; - - assert_eq!( - landuse - .land_use_detail_attribute - .as_ref() - .unwrap() - .prefecture, - Some(Code::new("静岡県".into(), "22".into())) - ); - assert_eq!( - landuse.land_use_detail_attribute.as_ref().unwrap().city, - Some(Code::new("静岡県沼津市".into(), "22203".into())) - ); -} - -// #[test] -// fn load_other_construction_example() { -// { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/cons/52384697_cons_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::OtherConstruction(cons) = &cityobjs.first().unwrap().cityobj else { -// panic!("must be OtherConstruction"); -// }; -// let uro::DmAttributeProperty::DmGeometricAttribute(_) = cons.cons_dm_attribute[0] else { -// panic!("must be DmGeometricAttribute"); -// }; -// } - -// { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/cons/52384698_cons_6697_1.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::OtherConstruction(cons) = &cityobjs.first().unwrap().cityobj else { -// panic!("must be OtherConstruction"); -// }; -// let uro::DmAttributeProperty::DmGeometricAttribute(_) = cons.cons_dm_attribute[0] else { -// panic!("must be DmGeometricAttribute"); -// }; -// } - -// { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/cons/52384698_cons_6697_2.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::OtherConstruction(cons) = &cityobjs.first().unwrap().cityobj else { -// panic!("must be OtherConstruction"); -// }; -// let uro::DmAttributeProperty::DmGeometricAttribute(_) = cons.cons_dm_attribute[0] else { -// panic!("must be DmGeometricAttribute"); -// }; -// } - -// { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/cons/53394695_cons_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::OtherConstruction(cons) = &cityobjs.first().unwrap().cityobj else { -// panic!("must be OtherConstruction"); -// }; -// let uro::DmAttributeProperty::DmGeometricAttribute(_) = cons.cons_dm_attribute[0] else { -// panic!("must be DmGeometricAttribute"); -// }; -// } - -// { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/cons/53395603_cons_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::OtherConstruction(cons) = &cityobjs.first().unwrap().cityobj else { -// panic!("must be OtherConstruction"); -// }; -// let uro::DmAttributeProperty::DmGeometricAttribute(_) = cons.cons_dm_attribute[0] else { -// panic!("must be DmGeometricAttribute"); -// }; -// } - -// { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/cons/56403133_cons_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::OtherConstruction(cons) = &cityobjs.first().unwrap().cityobj else { -// panic!("must be OtherConstruction"); -// }; -// let uro::DmAttributeProperty::DmGeometricAttribute(_) = cons.cons_dm_attribute[0] else { -// panic!("must be DmGeometricAttribute"); -// }; -// assert_eq!( -// cons.cons_base_attribute.as_ref().unwrap().admin_type, -// Some(Code::new("北陸地方整備局".into(), "23".into())) -// ); -// assert_eq!( -// cons.cons_base_attribute.as_ref().unwrap().administorator, -// Some("信濃川河川事務所".into()) -// ) -// } -// } - -#[test] -fn load_dem_example() { - let cityobjs = load_cityobjs("./tests/data/yokosuka-shi/udx/dem/523965_dem_6697_05_op.gml"); - assert_eq!(cityobjs.len(), 2); - let TopLevelCityObject::ReliefFeature(dem) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a ReliefFeature"); - }; - - let relief::ReliefComponentProperty::TINRelief(tin) = &dem.relief_component[0] else { - panic!("Unexpected relief component type"); - }; - assert_eq!(tin.lod, Some(1)); - - assert_eq!(cityobjs[0].geometries.epsg, 6697); - assert_eq!( - cityobjs - .iter() - .map(|o| o.geometries.multipolygon.len()) - .sum::(), - 1066 - ); -} - -#[test] -fn load_road_example() { - let cityobjs = load_cityobjs("./tests/data/numazu-shi/udx/tran/52385608_tran_6697_op.gml"); - assert_eq!(cityobjs.len(), 549); - let TopLevelCityObject::Road(road) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a Road"); - }; - - assert_eq!( - road.function, - vec![Code::new("都道府県道".into(), "3".into(),)] - ); - assert_eq!( - road.usage, - vec![ - Code::new("緊急輸送道路(第三次緊急輸送道路)".into(), "3".into()), - Code::new("避難路/避難道路".into(), "5".into()), - ] - ); - assert_eq!( - road.traffic_area.first().unwrap().function, - vec![Code::new("歩道".into(), "2020".into())] - ); - assert_eq!( - road.auxiliary_traffic_area.first().unwrap().function, - vec![Code::new("歩道部の段差".into(), "2000".into())] - ); - assert_eq!( - road.road_structure_attribute[0].width, - Some(Measure::new(22.0)), - ); - assert_eq!( - road.traffic_volume_attribute - .as_ref() - .unwrap() - .weekday12hour_traffic_volume, - Some(8170), - ); -} - -// #[test] -// fn load_railway_example() { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/rwy/53395527_rwy_6697.gml"); -// assert_eq!(cityobjs.len(), 4); -// let TopLevelCityObject::Railway(railway) = &cityobjs.first().unwrap().cityobj else { -// panic!("Not a Railway"); -// }; - -// assert_eq!( -// railway.id, -// "rwy_f087faa5-f548-4188-aa2e-03c7a5f2d3b9".to_string() -// ); - -// assert_eq!( -// railway.name, -// vec![Code::new("東北線".into(), "東北線".into())] -// ); -// assert_eq!(railway.traffic_area.len(), 7); -// assert_eq!( -// railway.traffic_area.first().unwrap().function, -// vec![Code::new("軌道中心線".to_string(), "8000".to_string())] -// ); -// assert_eq!(railway.auxiliary_traffic_area.len(), 1); -// } - -// #[test] -// fn load_track_example() { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/trk/53361601_trk_6697.gml"); -// assert_eq!(cityobjs.len(), 125); -// let TopLevelCityObject::Track(track) = &cityobjs.first().unwrap().cityobj else { -// panic!("Not a Track"); -// }; - -// assert_eq!(track.function, vec![Code::new("徒歩道".into(), "1".into())]); -// assert_eq!( -// track -// .tran_data_quality_attribute -// .as_ref() -// .unwrap() -// .geometry_src_desc, -// vec![Code::new("既成図数値化".into(), "6".into())] -// ); -// assert_eq!( -// track.auxiliary_traffic_area.first().unwrap().function, -// vec![Code::new("島".into(), "3000".into())] -// ); -// assert_eq!( -// track.track_attribute.as_ref().unwrap().admin_type, -// Some(Code::new("市区町村".into(), "3".into())) -// ); -// } - -// #[test] -// fn load_square_example() { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/squr/53360690_squr_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::Square(square) = &cityobjs.first().unwrap().cityobj else { -// panic!("Not a Square"); -// }; - -// assert_eq!( -// square.class, -// Some(Code::new("その他".into(), "1090".into())) -// ); -// assert_eq!( -// square.function, -// vec![Code::new("駅前広場".into(), "1".into())] -// ); -// assert_eq!(square.traffic_area.len(), 9); -// assert_eq!(square.auxiliary_traffic_area.len(), 3); -// assert_eq!( -// square.traffic_area.first().unwrap().function, -// vec![Code::new("歩道部".into(), "2000".into())] -// ); -// assert_eq!( -// square.auxiliary_traffic_area.first().unwrap().function, -// vec![Code::new("島".into(), "3000".into())] -// ); -// } - -// #[test] -// fn load_waterway_example() { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/wwy/52397630_wwy_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::Waterway(square) = &cityobjs.first().unwrap().cityobj else { -// panic!("Not a Waterway"); -// }; - -// assert_eq!( -// square.function, -// vec![Code::new("法定航路".into(), "01".into())] -// ); -// assert_eq!( -// square.waterway_detail_attribute.as_ref().unwrap().route_id, -// Some("002".into()) -// ) -// } - -// #[test] -// fn load_tunnel_example() { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/tun/53361613_tun_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::Tunnel(tunnel) = &cityobjs.first().unwrap().cityobj else { -// panic!("Not a Tunnel"); -// }; - -// assert_eq!(tunnel.class, Some(Code::new("交通".into(), "1000".into()))); -// assert_eq!( -// tunnel.function, -// vec![Code::new("道路用トンネル".into(), "1010".into())] -// ); -// assert_eq!(tunnel.year_of_construction, Some("1989".into())); -// assert_eq!( -// tunnel.outer_tunnel_installation[0].function, -// vec![Code::new("その他".into(), "90".into())] -// ); -// assert_eq!( -// tunnel.outer_tunnel_installation[0].function, -// vec![Code::new("その他".into(), "90".into())] -// ); -// } - -// #[test] -// fn load_underground_building_example() { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/ubld/51324378_ubld_6697.gml"); -// assert_eq!(cityobjs.len(), 3); -// let TopLevelCityObject::UndergroundBuilding(ubld) = &cityobjs.first().unwrap().cityobj else { -// panic!("Not a UndergroundBuilding"); -// }; -// assert_eq!(ubld.interior_room.len(), 2); -// let room = &ubld.interior_room[1]; -// assert_eq!(room.room_installation.len(), 3); -// } - -#[test] -fn load_urf_example() { - let cityobjs = load_cityobjs("./tests/data/takeo-shi/udx/urf/493060_urf_6668_op.gml"); - assert_eq!(cityobjs.len(), 140); - - let cityobjs = load_cityobjs("./tests/data/numazu-shi/udx/urf/523857_urf_6668_op.gml"); - assert_eq!(cityobjs.len(), 47); - - let cityobjs = load_cityobjs("./tests/data/tokyo23-ku/udx/urf/533957_urf_6668_op.gml"); - assert_eq!(cityobjs.len(), 38); -} - -// #[test] -// fn load_utility_network_example() { -// { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/unf/gas_53403039_unf_6697.gml"); -// assert_eq!(cityobjs.len(), 7); -// let TopLevelCityObject::OilGasChemicalsPipe(pipe) = &cityobjs[0].cityobj else { -// panic!("expected OilGasChemicalsPipe"); -// }; -// assert_eq!(pipe.function, vec![Code::new("管路".into(), "5500".into())]); -// let TopLevelCityObject::Appurtenance(appur) = &cityobjs[1].cityobj else { -// panic!("expected Appurtenance"); -// }; -// assert_eq!( -// appur.function, -// vec![Code::new("ハンドホール".into(), "5620".into())] -// ); -// let TopLevelCityObject::Handhole(hole) = &cityobjs[5].cityobj else { -// panic!("expected Handhole"); -// }; -// assert_eq!( -// hole.function, -// vec![Code::new("ハンドホール".into(), "5620".into())] -// ); -// } - -// { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/unf/elec_53403039_unf_6697.gml"); -// assert_eq!(cityobjs.len(), 2); -// let TopLevelCityObject::Duct(_duct) = &cityobjs[0].cityobj else { -// panic!("unexpected cityobj"); -// }; -// let TopLevelCityObject::ElectricityCable(_cable) = &cityobjs[1].cityobj else { -// panic!("unexpected cityobj"); -// }; -// } - -// { -// let cityobjs = -// load_cityobjs("./tests/data/plateau-3_0/udx/unf/sewer_53403039_unf_6697.gml"); -// assert_eq!(cityobjs.len(), 6); -// let TopLevelCityObject::SewerPipe(_) = &cityobjs[0].cityobj else { -// panic!("expected SewerPipe"); -// }; -// let TopLevelCityObject::Manhole(_) = &cityobjs[1].cityobj else { -// panic!("expected Manhole"); -// }; -// } - -// { -// let cityobjs = -// load_cityobjs("./tests/data/plateau-3_0/udx/unf/water_53403039_unf_6697.gml"); -// assert_eq!(cityobjs.len(), 7); -// let TopLevelCityObject::Appurtenance(_) = &cityobjs[0].cityobj else { -// panic!("expected Appurtenance"); -// }; -// let TopLevelCityObject::WaterPipe(_) = &cityobjs[1].cityobj else { -// panic!("expected WaterPipe"); -// }; -// } -// } - -// #[test] -// fn load_vegetation_example() { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/veg/52385628_veg_6697_op.gml"); -// assert_eq!(cityobjs.len(), 28); -// let TopLevelCityObject::PlantCover(veg) = &cityobjs[0].cityobj else { -// panic!("expected PlantCover"); -// }; -// assert_eq!(veg.average_height.as_ref().unwrap().value(), 0.5); -// let dq = veg.vegetation_data_quality_attribute.as_ref().unwrap(); -// assert_eq!(dq.appearance_src_desc.first().unwrap().code(), "4"); - -// let TopLevelCityObject::SolitaryVegetationObject(veg) = &cityobjs[9].cityobj else { -// panic!("expected SolitaryVegetationObject"); -// }; -// assert_eq!(veg.height.as_ref().unwrap().value(), 12.5); -// let dq = veg.vegetation_data_quality_attribute.as_ref().unwrap(); -// assert_eq!(dq.appearance_src_desc.first().unwrap().code(), "4"); -// } - -// #[test] -// fn load_waterbody_example() { -// let cityobjs = load_cityobjs("./tests/data/plateau-3_0/udx/wtr/55370156_wtr_6697.gml"); -// assert_eq!(cityobjs.len(), 1); -// let TopLevelCityObject::WaterBody(waterbody) = &cityobjs.first().unwrap().cityobj else { -// panic!("expected WaterBody"); -// }; - -// assert_eq!( -// waterbody.class, -// Some(Code::new( -// "river / stream(河川/小川)".into(), -// "1030".into() -// )) -// ); -// } - -#[test] -fn load_flood_example() { - { - let cityobjs = load_cityobjs("./tests/data/numazu-shi/udx/fld/52385721_fld_6697_l1_op.gml"); - assert_eq!(cityobjs.len(), 3); - let TopLevelCityObject::WaterBody(waterbody) = &cityobjs.first().unwrap().cityobj else { - panic!("expected SedimentDisasterProneArea"); - }; - assert_eq!(waterbody.flooding_risk_attribute.len(), 1); - let uro::WaterBodyFloodingRiskAttributeProperty::WaterBodyRiverFloodingRiskAttribute(flood) = - waterbody.flooding_risk_attribute.first().unwrap() - else { - panic!("expected WaterBodyRiverFloodingRiskAttribute"); - }; - assert_eq!(flood.admin_type.as_ref().unwrap().code(), "1"); - assert_eq!(flood.scale.as_ref().unwrap().code(), "L1"); - } - - { - let cityobjs = load_cityobjs("./tests/data/numazu-shi/udx/tnm/523855_tnm_6697_op.gml"); - assert_eq!(cityobjs.len(), 3); - let TopLevelCityObject::WaterBody(_waterbody) = &cityobjs.first().unwrap().cityobj else { - panic!("expected SedimentDisasterProneArea"); - }; - } -} - -#[test] -fn load_urf_kodo_example() { - let cityobjs = load_cityobjs("./tests/data/kawasaki-shi/udx/urf/533915_urf_6668_kodo_op.gml"); - assert_eq!(cityobjs.len(), 1); - let TopLevelCityObject::HeightControlDistrict(hcd) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a HeightControlDistrict"); - }; - - assert_eq!( - hcd.function, - vec![Code::new("高度地区".to_string(), "18".to_string(),)] - ); - - assert_eq!( - hcd.urf_valid_from, - Option::Some(Date::from_ymd_opt(2009, 11, 11).unwrap()) - ); - - assert_eq!( - hcd.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); -} - -#[test] -fn load_urf_kuiki_example() { - let cityobjs = load_cityobjs("./tests/data/kawasaki-shi/udx/urf/533915_urf_6668_kuiki_op.gml"); - assert_eq!(cityobjs.len(), 2); - let TopLevelCityObject::AreaClassification(acf) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a AreaClassification"); - }; - - assert_eq!( - acf.function, - vec![Code::new("市街化区域".to_string(), "22".to_string(),)] - ); - - assert_eq!( - acf.urf_valid_from, - Option::Some(Date::from_ymd_opt(2009, 9, 18).unwrap()) - ); - - assert_eq!( - acf.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); -} - -#[test] -fn load_urf_rinko_example() { - let cityobjs = load_cityobjs("./tests/data/kawasaki-shi/udx/urf/533915_urf_6668_rinko_op.gml"); - assert_eq!(cityobjs.len(), 2); - let TopLevelCityObject::PortZone(pz) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a PortZone"); - }; - - assert_eq!( - pz.function, - vec![Code::new("臨港地区".to_string(), "30".to_string(),)] - ); - - assert_eq!( - pz.urf_valid_from, - Option::Some(Date::from_ymd_opt(2009, 9, 18).unwrap()) - ); - - assert_eq!( - pz.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); -} - -#[test] -fn load_urf_yoto_example() { - let cityobjs = load_cityobjs("./tests/data/kawasaki-shi/udx/urf/533915_urf_6668_yoto_op.gml"); - assert_eq!(cityobjs.len(), 4); - let TopLevelCityObject::UseDistrict(ud) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a UseDistrict"); - }; - - assert_eq!( - ud.function, - vec![Code::new("工業専用地域".to_string(), "13".to_string(),)] - ); - - assert_eq!( - ud.urf_valid_from, - Option::Some(Date::from_ymd_opt(2009, 11, 11).unwrap()) - ); - - assert_eq!( - ud.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); -} - -#[test] -fn load_urf_boka_example() { - let cityobjs = load_cityobjs("./tests/data/kawasaki-shi/udx/urf/533916_urf_6668_boka_op.gml"); - assert_eq!(cityobjs.len(), 2); - let TopLevelCityObject::FirePreventionDistrict(fpd) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a FirePreventionDistrict"); - }; - - assert_eq!( - fpd.function, - vec![Code::new("準防火地域".to_string(), "25".to_string(),)] - ); - - assert_eq!( - fpd.urf_valid_from, - Option::Some(Date::from_ymd_opt(2009, 9, 18).unwrap()) - ); - - assert_eq!( - fpd.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); -} -#[test] -fn load_urf_seisan_example() { - let cityobjs = load_cityobjs("./tests/data/kawasaki-shi/udx/urf/533923_urf_6668_seisan_op.gml"); - assert_eq!(cityobjs.len(), 27); - let TopLevelCityObject::ProductiveGreenZone(pgz) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a ProductiveGreenZone"); - }; - - assert_eq!( - pgz.function, - vec![Code::new("生産緑地地区".to_string(), "38".to_string(),)] - ); - - assert_eq!( - pgz.urf_valid_from, - Option::Some(Date::from_ymd_opt(2010, 12, 21).unwrap()) - ); - - assert_eq!( - pgz.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); -} - -#[test] -fn load_urf_tokuryoku_example() { - let cityobjs = - load_cityobjs("./tests/data/kawasaki-shi/udx/urf/533923_urf_6668_tokuryoku_op.gml"); - assert_eq!(cityobjs.len(), 7); - let TopLevelCityObject::SpecialGreenSpaceConservationDistrict(sgcd) = - &cityobjs.first().unwrap().cityobj - else { - panic!("Not a SpecialGreenSpaceConservationDistrict"); - }; - - assert_eq!( - sgcd.function, - vec![Code::new("特別緑地保存地区".to_string(), "35".to_string(),)] - ); - - assert_eq!( - sgcd.urf_valid_from, - Option::Some(Date::from_ymd_opt(2022, 4, 7).unwrap()) - ); - - assert_eq!( - sgcd.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); -} -#[test] -fn load_urf_chusha_example() { - let cityobjs = load_cityobjs("./tests/data/kawasaki-shi/udx/urf/533925_urf_6668_chusha_op.gml"); - assert_eq!(cityobjs.len(), 1); - let TopLevelCityObject::ParkingPlaceDevelopmentZone(ppdz) = &cityobjs.first().unwrap().cityobj - else { - panic!("Not a ParkingPlaceDevelopmentZone"); - }; - - assert_eq!( - ppdz.function, - vec![Code::new("駐車場整備地区".to_string(), "29".to_string(),)] - ); - - assert_eq!( - ppdz.urf_valid_from, - Option::Some(Date::from_ymd_opt(1969, 3, 13).unwrap()) - ); - - assert_eq!( - ppdz.valid_from_type, - Some(Code::new("決定".to_string(), "1".to_string())) - ); -} - -#[test] -fn load_urf_tokuyoto_example() { - let cityobjs = - load_cityobjs("./tests/data/kawasaki-shi/udx/urf/533925_urf_6668_tokuyoto_op.gml"); - assert_eq!(cityobjs.len(), 4); - let TopLevelCityObject::SpecialUseDistrict(sud) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a SpecialUseDistrict"); - }; - - assert_eq!( - sud.function, - vec![Code::new("特別用途地区".to_string(), "14".to_string(),)] - ); - - assert_eq!( - sud.urf_valid_from, - Option::Some(Date::from_ymd_opt(2005, 10, 7).unwrap()) - ); - - assert_eq!( - sud.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); -} - -#[test] -fn load_urf_toshikeikaku_example() { - let cityobjs = load_cityobjs("./tests/data/sapporo-shi/udx/urf/644131_urf_6668_op.gml"); - assert_eq!(cityobjs.len(), 12); - let TopLevelCityObject::UrbanPlanningArea(upa) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a UrbanPlanningArea"); - }; - - assert_eq!( - upa.function, - vec![Code::new("都市計画区域".to_string(), "21".to_string(),)] - ); - - assert_eq!( - upa.urf_valid_from, - Option::Some(Date::from_ymd_opt(2022, 3, 23).unwrap()) - ); - - assert_eq!( - upa.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); -} - -#[test] -fn load_urf_huchi_example() { - let cityobjs = load_cityobjs("./tests/data/sendai-shi/udx/urf/574026_urf_6668_huchi_op.gml"); - assert_eq!(cityobjs.len(), 1); - let TopLevelCityObject::ScenicDistrict(sd) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a ScenicDistrict"); - }; - - assert_eq!( - sd.function, - vec![Code::new("風致地区".to_string(), "28".to_string(),)] - ); - - assert_eq!( - sd.prefecture, - Some(Code::new("宮城県".to_string(), "04".to_string())) - ); - - assert_eq!( - sd.city, - Some(Code::new("宮城県仙台市".to_string(), "04100".to_string())) - ); -} - -#[test] -fn load_urf_kodoriyou_example() { - let cityobjs = - load_cityobjs("./tests/data/sendai-shi/udx/urf/574027_urf_6668_kodoriyou_op.gml"); - assert_eq!(cityobjs.len(), 3); - let TopLevelCityObject::HighLevelUseDistrict(hlud) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a HighLevelUseDistrict"); - }; - - assert_eq!( - hlud.function, - vec![Code::new("高度利用地区".to_string(), "19".to_string(),)] - ); - - assert_eq!( - hlud.urf_valid_from, - Option::Some(Date::from_ymd_opt(2013, 3, 8).unwrap()) - ); - - assert_eq!( - hlud.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); - - assert_eq!(hlud.custodian, Some("仙台市".to_string())); - - assert_eq!( - hlud.prefecture, - Some(Code::new("宮城県".to_string(), "04".to_string())) - ); - - assert_eq!( - hlud.city, - Some(Code::new("宮城県仙台市".to_string(), "04100".to_string())) - ); -} - -#[test] -fn load_urf_keikan_example() { - let cityobjs = load_cityobjs("./tests/data/sendai-shi/udx/urf/574036_urf_6668_keikan_op.gml"); - assert_eq!(cityobjs.len(), 2); - let TopLevelCityObject::LandscapeZone(lz) = &cityobjs.first().unwrap().cityobj else { - panic!("Not a LandscapeZone"); - }; - - assert_eq!( - lz.function, - vec![Code::new("景観地区".to_string(), "27".to_string(),)] - ); - - assert_eq!( - lz.urf_valid_from, - Option::Some(Date::from_ymd_opt(2011, 12, 16).unwrap()) - ); - - assert_eq!( - lz.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); - - assert_eq!(lz.custodian, Some("仙台市".to_string())); - - assert_eq!( - lz.prefecture, - Some(Code::new("宮城県".to_string(), "04".to_string())) - ); - - assert_eq!( - lz.city, - Some(Code::new("宮城県仙台市".to_string(), "04100".to_string())) - ); -} - -#[test] -fn load_urf_tosisai_example() { - let cityobjs = load_cityobjs("./tests/data/sendai-shi/udx/urf/574036_urf_6668_tosisai_op.gml"); - assert_eq!(cityobjs.len(), 1); - let TopLevelCityObject::SpecialUrbanRenaissanceDistrict(surd) = - &cityobjs.first().unwrap().cityobj - else { - panic!("Not a SpecialUrbanRenaissanceDistrict"); - }; - - assert_eq!( - surd.function, - vec![Code::new("都市再生特別地区".to_string(), "21".to_string(),)] - ); - - assert_eq!( - surd.urf_valid_from, - Option::Some(Date::from_ymd_opt(2020, 9, 16).unwrap()) - ); - - assert_eq!( - surd.valid_from_type, - Some(Code::new("変更".to_string(), "3".to_string())) - ); - - assert_eq!(surd.custodian, Some("仙台市".to_string())); - - assert_eq!( - surd.prefecture, - Some(Code::new("宮城県".to_string(), "04".to_string())) - ); - - assert_eq!( - surd.city, - Some(Code::new("宮城県仙台市".to_string(), "04100".to_string())) - ); -} - -#[test] -fn load_urf_sigaidev_example() { - let cityobjs = load_cityobjs("./tests/data/kofu-shi/udx/urf/533834_urf_6668_sigaidev_op.gml"); - assert_eq!(cityobjs.len(), 27); - let TopLevelCityObject::UrbanDevelopmentProject(udp) = &cityobjs.first().unwrap().cityobj - else { - panic!("Not a UrbanDevelopmentProject"); - }; - - assert_eq!( - udp.function, - vec![Code::new("工業地域".to_string(), "12".to_string(),)] - ); - - assert_eq!( - udp.urf_valid_from, - Option::Some(Date::from_ymd_opt(1, 1, 1).unwrap()) - ); - - assert_eq!( - udp.valid_from_type, - Some(Code::new("不明".to_string(), "4".to_string())) - ); - - assert_eq!( - udp.prefecture, - Some(Code::new("山梨県".to_string(), "19".to_string())) - ); - - assert_eq!( - udp.city, - Some(Code::new("山梨県甲府市".to_string(), "19201".to_string())) - ); -}