From 3ee208857a160484e8f947ce6f447e1cbbf62863 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Wed, 31 Jan 2024 10:28:34 +0100 Subject: [PATCH] Missing classes (#111) Import/export missing classes Fixes #98 Note: commit of the sql session is very slow. Expect some minutes waiting after closing the import selection dialog --- datamodel/changelogs/0001/03_tww_db_dss.sql | 160 +-- .../interlis/interlis_importer_exporter.py | 14 +- ...nterlis_exporter_to_intermediate_schema.py | 1214 ++++++++++++++++ ...nterlis_importer_to_intermediate_schema.py | 1246 ++++++++++++++++- .../model_interlis_dss.py | 294 ++++ .../model_interlis_sia405_abwasser.py | 6 + .../interlis_model_mapping/model_tww_od.py | 162 +++ .../tests/data/test-dataset-DSS.xtf | 6 +- 8 files changed, 3004 insertions(+), 98 deletions(-) diff --git a/datamodel/changelogs/0001/03_tww_db_dss.sql b/datamodel/changelogs/0001/03_tww_db_dss.sql index fa566ae4a..d1e17b229 100644 --- a/datamodel/changelogs/0001/03_tww_db_dss.sql +++ b/datamodel/changelogs/0001/03_tww_db_dss.sql @@ -3224,9 +3224,9 @@ ALTER TABLE tww_vl.waste_water_treatment_plant_operator_type ADD CONSTRAINT pkey REFERENCES tww_vl.waste_water_treatment_plant_operator_type (code) MATCH SIMPLE ON UPDATE RESTRICT ON DELETE RESTRICT; ALTER TABLE tww_od.wastewater_structure ADD COLUMN fk_owner varchar(16); -ALTER TABLE tww_od.wastewater_structure ADD CONSTRAINT rel_wastewater_structure_owner FOREIGN KEY (fk_owner) REFERENCES tww_od.organisation(obj_id) ON UPDATE CASCADE ON DELETE set null DEFERRABLE; +ALTER TABLE tww_od.wastewater_structure ADD CONSTRAINT rel_wastewater_structure_owner FOREIGN KEY (fk_owner) REFERENCES tww_od.organisation(obj_id) ON UPDATE CASCADE ON DELETE set null; ALTER TABLE tww_od.wastewater_structure ADD COLUMN fk_operator varchar(16); -ALTER TABLE tww_od.wastewater_structure ADD CONSTRAINT rel_wastewater_structure_operator FOREIGN KEY (fk_operator) REFERENCES tww_od.organisation(obj_id) ON UPDATE CASCADE ON DELETE set null DEFERRABLE; +ALTER TABLE tww_od.wastewater_structure ADD CONSTRAINT rel_wastewater_structure_operator FOREIGN KEY (fk_operator) REFERENCES tww_od.organisation(obj_id) ON UPDATE CASCADE ON DELETE set null; ALTER TABLE tww_od.wastewater_structure ADD COLUMN fk_main_cover varchar(16); ALTER TABLE tww_od.wastewater_structure ADD CONSTRAINT rel_wastewater_structure_main_cover FOREIGN KEY (fk_main_cover) REFERENCES tww_od.cover(obj_id) ON UPDATE CASCADE ON DELETE set null; CREATE TABLE tww_vl.wastewater_structure_accessibility () INHERITS (tww_vl.value_list_base); @@ -3676,7 +3676,7 @@ ALTER TABLE tww_vl.wwtp_structure_kind ADD CONSTRAINT pkey_tww_vl_wwtp_structure REFERENCES tww_vl.wwtp_structure_kind (code) MATCH SIMPLE ON UPDATE RESTRICT ON DELETE RESTRICT; ALTER TABLE tww_od.maintenance_event ADD COLUMN fk_operating_company varchar(16); -ALTER TABLE tww_od.maintenance_event ADD CONSTRAINT rel_maintenance_event_operating_company FOREIGN KEY (fk_operating_company) REFERENCES tww_od.organisation(obj_id) ON UPDATE CASCADE ON DELETE set null DEFERRABLE; +ALTER TABLE tww_od.maintenance_event ADD CONSTRAINT rel_maintenance_event_operating_company FOREIGN KEY (fk_operating_company) REFERENCES tww_od.organisation(obj_id) ON UPDATE CASCADE ON DELETE set null; ALTER TABLE tww_od.maintenance_event ADD COLUMN fk_measure varchar(16); ALTER TABLE tww_od.maintenance_event ADD CONSTRAINT rel_maintenance_event_measure FOREIGN KEY (fk_measure) REFERENCES tww_od.measure(obj_id) ON UPDATE CASCADE ON DELETE set null; CREATE TABLE tww_vl.maintenance_event_status () INHERITS (tww_vl.value_list_base); @@ -4691,7 +4691,7 @@ ALTER TABLE tww_vl.tank_cleaning_type ADD CONSTRAINT pkey_tww_vl_tank_cleaning_t ALTER TABLE tww_od.tank_emptying ADD COLUMN fk_throttle_shut_off_unit varchar(16); ALTER TABLE tww_od.tank_emptying ADD CONSTRAINT rel_tank_emptying_throttle_shut_off_unit FOREIGN KEY (fk_throttle_shut_off_unit) REFERENCES tww_od.throttle_shut_off_unit(obj_id) ON UPDATE CASCADE ON DELETE set null; ALTER TABLE tww_od.tank_emptying ADD COLUMN fk_overflow varchar(16); -ALTER TABLE tww_od.tank_emptying ADD CONSTRAINT rel_tank_emptying_overflow FOREIGN KEY (fk_overflow) REFERENCES tww_od.pump(obj_id) ON UPDATE CASCADE ON DELETE set null; +ALTER TABLE tww_od.tank_emptying ADD CONSTRAINT rel_tank_emptying_overflow FOREIGN KEY (fk_overflow) REFERENCES tww_od.pump(obj_id) ON UPDATE CASCADE ON DELETE set null DEFERRABLE; ALTER TABLE tww_od.tank_emptying ADD CONSTRAINT oorel_od_tank_emptying_structure_part FOREIGN KEY (obj_id) REFERENCES tww_od.structure_part(obj_id) ON DELETE CASCADE ON UPDATE CASCADE; CREATE TABLE tww_vl.tank_emptying_type () INHERITS (tww_vl.value_list_base); ALTER TABLE tww_vl.tank_emptying_type ADD CONSTRAINT pkey_tww_vl_tank_emptying_type_code PRIMARY KEY (code); @@ -5209,82 +5209,82 @@ ALTER TABLE tww_vl.reach_progression_alternative_plantype ADD CONSTRAINT pkey_tw --------- Relations to class organisation for dataowner and provider (new 3.11.2014); -ALTER TABLE tww_od.organisation ADD CONSTRAINT rel_od_organisation_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.organisation ADD CONSTRAINT rel_od_organisation_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.measure ADD CONSTRAINT rel_od_measure_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.measure ADD CONSTRAINT rel_od_measure_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.mutation ADD CONSTRAINT rel_od_mutation_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.mutation ADD CONSTRAINT rel_od_mutation_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.waste_water_treatment_plant ADD CONSTRAINT rel_od_waste_water_treatment_plant_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.waste_water_treatment_plant ADD CONSTRAINT rel_od_waste_water_treatment_plant_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.wastewater_structure ADD CONSTRAINT rel_od_wastewater_structure_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.wastewater_structure ADD CONSTRAINT rel_od_wastewater_structure_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.maintenance_event ADD CONSTRAINT rel_od_maintenance_event_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.maintenance_event ADD CONSTRAINT rel_od_maintenance_event_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.zone ADD CONSTRAINT rel_od_zone_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.zone ADD CONSTRAINT rel_od_zone_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.pipe_profile ADD CONSTRAINT rel_od_pipe_profile_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.pipe_profile ADD CONSTRAINT rel_od_pipe_profile_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.wwtp_energy_use ADD CONSTRAINT rel_od_wwtp_energy_use_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.wwtp_energy_use ADD CONSTRAINT rel_od_wwtp_energy_use_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.waste_water_treatment ADD CONSTRAINT rel_od_waste_water_treatment_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.waste_water_treatment ADD CONSTRAINT rel_od_waste_water_treatment_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.sludge_treatment ADD CONSTRAINT rel_od_sludge_treatment_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.sludge_treatment ADD CONSTRAINT rel_od_sludge_treatment_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.control_center ADD CONSTRAINT rel_od_control_center_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.control_center ADD CONSTRAINT rel_od_control_center_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.hydr_geometry ADD CONSTRAINT rel_od_hydr_geometry_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.hydr_geometry ADD CONSTRAINT rel_od_hydr_geometry_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.wastewater_networkelement ADD CONSTRAINT rel_od_wastewater_networkelement_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.wastewater_networkelement ADD CONSTRAINT rel_od_wastewater_networkelement_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.reach_point ADD CONSTRAINT rel_od_reach_point_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.reach_point ADD CONSTRAINT rel_od_reach_point_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.profile_geometry ADD CONSTRAINT rel_od_profile_geometry_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.profile_geometry ADD CONSTRAINT rel_od_profile_geometry_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.hydr_geom_relation ADD CONSTRAINT rel_od_hydr_geom_relation_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.hydr_geom_relation ADD CONSTRAINT rel_od_hydr_geom_relation_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.mechanical_pretreatment ADD CONSTRAINT rel_od_mechanical_pretreatment_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.mechanical_pretreatment ADD CONSTRAINT rel_od_mechanical_pretreatment_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.retention_body ADD CONSTRAINT rel_od_retention_body_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.retention_body ADD CONSTRAINT rel_od_retention_body_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.overflow_char ADD CONSTRAINT rel_od_overflow_char_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.overflow_char ADD CONSTRAINT rel_od_overflow_char_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.hq_relation ADD CONSTRAINT rel_od_hq_relation_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.hq_relation ADD CONSTRAINT rel_od_hq_relation_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.structure_part ADD CONSTRAINT rel_od_structure_part_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.structure_part ADD CONSTRAINT rel_od_structure_part_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.connection_object ADD CONSTRAINT rel_od_connection_object_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.connection_object ADD CONSTRAINT rel_od_connection_object_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.log_card ADD CONSTRAINT rel_od_log_card_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.log_card ADD CONSTRAINT rel_od_log_card_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.catchment_area ADD CONSTRAINT rel_od_catchment_area_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.catchment_area ADD CONSTRAINT rel_od_catchment_area_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.surface_runoff_parameters ADD CONSTRAINT rel_od_surface_runoff_parameters_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.surface_runoff_parameters ADD CONSTRAINT rel_od_surface_runoff_parameters_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.measuring_point ADD CONSTRAINT rel_od_measuring_point_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.measuring_point ADD CONSTRAINT rel_od_measuring_point_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.measuring_device ADD CONSTRAINT rel_od_measuring_device_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.measuring_device ADD CONSTRAINT rel_od_measuring_device_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.measurement_series ADD CONSTRAINT rel_od_measurement_series_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.measurement_series ADD CONSTRAINT rel_od_measurement_series_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.measurement_result ADD CONSTRAINT rel_od_measurement_result_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.measurement_result ADD CONSTRAINT rel_od_measurement_result_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.overflow ADD CONSTRAINT rel_od_overflow_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.overflow ADD CONSTRAINT rel_od_overflow_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.throttle_shut_off_unit ADD CONSTRAINT rel_od_throttle_shut_off_unit_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.throttle_shut_off_unit ADD CONSTRAINT rel_od_throttle_shut_off_unit_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.hydraulic_char_data ADD CONSTRAINT rel_od_hydraulic_char_data_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.hydraulic_char_data ADD CONSTRAINT rel_od_hydraulic_char_data_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.catchment_area_totals ADD CONSTRAINT rel_od_catchment_area_totals_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.catchment_area_totals ADD CONSTRAINT rel_od_catchment_area_totals_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.disposal ADD CONSTRAINT rel_od_disposal_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.disposal ADD CONSTRAINT rel_od_disposal_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.building_group ADD CONSTRAINT rel_od_building_group_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.building_group ADD CONSTRAINT rel_od_building_group_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.building_group_baugwr ADD CONSTRAINT rel_od_building_group_baugwr_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.building_group_baugwr ADD CONSTRAINT rel_od_building_group_baugwr_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.farm ADD CONSTRAINT rel_od_farm_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; -ALTER TABLE tww_od.farm ADD CONSTRAINT rel_od_farm_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id)DEFERRABLE; +ALTER TABLE tww_od.organisation ADD CONSTRAINT rel_od_organisation_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.organisation ADD CONSTRAINT rel_od_organisation_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.measure ADD CONSTRAINT rel_od_measure_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.measure ADD CONSTRAINT rel_od_measure_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.mutation ADD CONSTRAINT rel_od_mutation_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.mutation ADD CONSTRAINT rel_od_mutation_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.waste_water_treatment_plant ADD CONSTRAINT rel_od_waste_water_treatment_plant_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.waste_water_treatment_plant ADD CONSTRAINT rel_od_waste_water_treatment_plant_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.wastewater_structure ADD CONSTRAINT rel_od_wastewater_structure_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.wastewater_structure ADD CONSTRAINT rel_od_wastewater_structure_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.maintenance_event ADD CONSTRAINT rel_od_maintenance_event_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.maintenance_event ADD CONSTRAINT rel_od_maintenance_event_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.zone ADD CONSTRAINT rel_od_zone_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.zone ADD CONSTRAINT rel_od_zone_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.pipe_profile ADD CONSTRAINT rel_od_pipe_profile_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.pipe_profile ADD CONSTRAINT rel_od_pipe_profile_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.wwtp_energy_use ADD CONSTRAINT rel_od_wwtp_energy_use_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.wwtp_energy_use ADD CONSTRAINT rel_od_wwtp_energy_use_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.waste_water_treatment ADD CONSTRAINT rel_od_waste_water_treatment_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.waste_water_treatment ADD CONSTRAINT rel_od_waste_water_treatment_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.sludge_treatment ADD CONSTRAINT rel_od_sludge_treatment_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.sludge_treatment ADD CONSTRAINT rel_od_sludge_treatment_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.control_center ADD CONSTRAINT rel_od_control_center_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.control_center ADD CONSTRAINT rel_od_control_center_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.hydr_geometry ADD CONSTRAINT rel_od_hydr_geometry_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.hydr_geometry ADD CONSTRAINT rel_od_hydr_geometry_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.wastewater_networkelement ADD CONSTRAINT rel_od_wastewater_networkelement_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.wastewater_networkelement ADD CONSTRAINT rel_od_wastewater_networkelement_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.reach_point ADD CONSTRAINT rel_od_reach_point_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.reach_point ADD CONSTRAINT rel_od_reach_point_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.profile_geometry ADD CONSTRAINT rel_od_profile_geometry_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.profile_geometry ADD CONSTRAINT rel_od_profile_geometry_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.hydr_geom_relation ADD CONSTRAINT rel_od_hydr_geom_relation_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.hydr_geom_relation ADD CONSTRAINT rel_od_hydr_geom_relation_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.mechanical_pretreatment ADD CONSTRAINT rel_od_mechanical_pretreatment_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.mechanical_pretreatment ADD CONSTRAINT rel_od_mechanical_pretreatment_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.retention_body ADD CONSTRAINT rel_od_retention_body_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.retention_body ADD CONSTRAINT rel_od_retention_body_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.overflow_char ADD CONSTRAINT rel_od_overflow_char_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.overflow_char ADD CONSTRAINT rel_od_overflow_char_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.hq_relation ADD CONSTRAINT rel_od_hq_relation_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.hq_relation ADD CONSTRAINT rel_od_hq_relation_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.structure_part ADD CONSTRAINT rel_od_structure_part_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.structure_part ADD CONSTRAINT rel_od_structure_part_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.connection_object ADD CONSTRAINT rel_od_connection_object_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.connection_object ADD CONSTRAINT rel_od_connection_object_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.log_card ADD CONSTRAINT rel_od_log_card_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.log_card ADD CONSTRAINT rel_od_log_card_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.catchment_area ADD CONSTRAINT rel_od_catchment_area_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.catchment_area ADD CONSTRAINT rel_od_catchment_area_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.surface_runoff_parameters ADD CONSTRAINT rel_od_surface_runoff_parameters_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.surface_runoff_parameters ADD CONSTRAINT rel_od_surface_runoff_parameters_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.measuring_point ADD CONSTRAINT rel_od_measuring_point_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.measuring_point ADD CONSTRAINT rel_od_measuring_point_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.measuring_device ADD CONSTRAINT rel_od_measuring_device_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.measuring_device ADD CONSTRAINT rel_od_measuring_device_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.measurement_series ADD CONSTRAINT rel_od_measurement_series_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.measurement_series ADD CONSTRAINT rel_od_measurement_series_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.measurement_result ADD CONSTRAINT rel_od_measurement_result_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.measurement_result ADD CONSTRAINT rel_od_measurement_result_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.overflow ADD CONSTRAINT rel_od_overflow_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.overflow ADD CONSTRAINT rel_od_overflow_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.throttle_shut_off_unit ADD CONSTRAINT rel_od_throttle_shut_off_unit_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.throttle_shut_off_unit ADD CONSTRAINT rel_od_throttle_shut_off_unit_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.hydraulic_char_data ADD CONSTRAINT rel_od_hydraulic_char_data_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.hydraulic_char_data ADD CONSTRAINT rel_od_hydraulic_char_data_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.catchment_area_totals ADD CONSTRAINT rel_od_catchment_area_totals_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.catchment_area_totals ADD CONSTRAINT rel_od_catchment_area_totals_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.disposal ADD CONSTRAINT rel_od_disposal_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.disposal ADD CONSTRAINT rel_od_disposal_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.building_group ADD CONSTRAINT rel_od_building_group_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.building_group ADD CONSTRAINT rel_od_building_group_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.building_group_baugwr ADD CONSTRAINT rel_od_building_group_baugwr_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.building_group_baugwr ADD CONSTRAINT rel_od_building_group_baugwr_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.farm ADD CONSTRAINT rel_od_farm_fk_dataowner FOREIGN KEY (fk_dataowner) REFERENCES tww_od.organisation(obj_id); +ALTER TABLE tww_od.farm ADD CONSTRAINT rel_od_farm_fk_dataprovider FOREIGN KEY (fk_provider) REFERENCES tww_od.organisation(obj_id); ------ Indexes on identifiers diff --git a/plugin/teksi_wastewater/interlis/interlis_importer_exporter.py b/plugin/teksi_wastewater/interlis/interlis_importer_exporter.py index 317c60378..ea618ca00 100644 --- a/plugin/teksi_wastewater/interlis/interlis_importer_exporter.py +++ b/plugin/teksi_wastewater/interlis/interlis_importer_exporter.py @@ -98,15 +98,15 @@ def interlis_import(self, xtf_file_input, show_selection_dialog=False, logs_next ) # Import from xtf file to ili2pg model - self._progress_done(40, "Importing XTF data...") + self._progress_done(30, "Importing XTF data...") self._import_xtf_file(xtf_file_input=xtf_file_input) # Import from the temporary ili2pg model - self._progress_done(50, "Converting to Teksi Wastewater...") + self._progress_done(40, "Converting to Teksi Wastewater...") tww_session = self._import_from_intermediate_schema(import_model) if show_selection_dialog: - self._progress_done(80, "Import objects selection...") + self._progress_done(90, "Import objects selection...") import_dialog = InterlisImportSelectionDialog() import_dialog.init_with_session(tww_session) QApplication.restoreOverrideCursor() @@ -116,12 +116,12 @@ def interlis_import(self, xtf_file_input, show_selection_dialog=False, logs_next raise InterlisImporterExporterStopped() QApplication.setOverrideCursor(Qt.WaitCursor) else: - self._progress_done(80, "Commit session...") + self._progress_done(90, "Commit session...") tww_session.commit() tww_session.close() # Update main_cover and main_wastewater_node - self._progress_done(90, "Update main cover and refresh materialized views...") + self._progress_done(95, "Update main cover and refresh materialized views...") self._import_update_main_cover_and_refresh_mat_views() self._progress_done(100) @@ -448,9 +448,9 @@ def _init_model_classes(self, model): self._progress_done(self.current_progress + 1) def _progress_done_intermediate_schema(self): - self._progress_done(self.current_progress + 1) + self._progress_done(self.current_progress + 0.5) def _progress_done(self, progress, text=None): self.current_progress = progress if self.progress_done_callback: - self.progress_done_callback(progress, text) + self.progress_done_callback(int(progress), text) diff --git a/plugin/teksi_wastewater/interlis/interlis_model_mapping/interlis_exporter_to_intermediate_schema.py b/plugin/teksi_wastewater/interlis/interlis_model_mapping/interlis_exporter_to_intermediate_schema.py index 2aa7c72ce..c75c54fa8 100644 --- a/plugin/teksi_wastewater/interlis/interlis_model_mapping/interlis_exporter_to_intermediate_schema.py +++ b/plugin/teksi_wastewater/interlis/interlis_model_mapping/interlis_exporter_to_intermediate_schema.py @@ -179,6 +179,180 @@ def _export_dss(self): self._export_control_center() self._check_for_stop() + logger.info("Exporting TWW.drainless_toilet -> ABWASSER.Abflusslose_Toilette") + self._export_drainless_toilet() + self._check_for_stop() + + logger.info("Exporting TWW.throttle_shut_off_unit -> ABWASSER.Absperr_Drosselorgan") + self._export_throttle_shut_off_unit() + self._check_for_stop() + + logger.info("Exporting TWW.tank_emptying -> ABWASSER.Beckenentleerung") + self._export_tank_emptying() + self._check_for_stop() + + logger.info("Exporting TWW.tank_cleaning -> ABWASSER.Beckenreinigung") + self._export_tank_cleaning() + self._check_for_stop() + + logger.info("Exporting TWW.bio_ecol_assessment -> ABWASSER.Biol_oekol_Gesamtbeurteilung") + self._export_bio_ecol_assessment() + self._check_for_stop() + + logger.info("Exporting TWW.fountain -> ABWASSER.Brunnen") + self._export_fountain() + self._check_for_stop() + + logger.info("Exporting TWW.param_ca_general -> ABWASSER.EZG_PARAMETER_ALLG") + self._export_param_ca_general() + self._check_for_stop() + + logger.info("Exporting TWW.param_ca_mouse1 -> ABWASSER.EZG_PARAMETER_MOUSE1") + self._export_param_ca_mouse1() + self._check_for_stop() + + logger.info("Exporting TWW.individual_surface -> ABWASSER.Einzelflaeche") + self._export_individual_surface() + self._check_for_stop() + + logger.info("Exporting TWW.catchment_area -> ABWASSER.Einzugsgebiet") + self._export_catchment_area() + self._check_for_stop() + + logger.info("Exporting TWW.electric_equipment -> ABWASSER.ElektrischeEinrichtung") + self._export_electric_equipment() + self._check_for_stop() + + logger.info( + "Exporting TWW.electromechanical_equipment -> ABWASSER.ElektromechanischeAusruestung" + ) + self._export_electromechanical_equipment() + self._check_for_stop() + + logger.info("Exporting TWW.disposal -> ABWASSER.Entsorgung") + self._export_disposal() + self._check_for_stop() + + logger.info("Exporting TWW.drainage_system -> ABWASSER.Entwaesserungssystem") + self._export_drainage_system() + self._check_for_stop() + + logger.info("Exporting TWW.solids_retention -> ABWASSER.Feststoffrueckhalt") + self._export_solids_retention() + self._check_for_stop() + + logger.info("Exporting TWW.pump -> ABWASSER.FoerderAggregat") + self._export_pump() + self._check_for_stop() + + logger.info("Exporting TWW.building -> ABWASSER.Gebaeude") + self._export_building() + self._check_for_stop() + + logger.info("Exporting TWW.building_group -> ABWASSER.Gebaeudegruppe") + self._export_building_group() + self._check_for_stop() + + logger.info("Exporting TWW.building_group_baugwr -> ABWASSER.Gebaeudegruppe_BAUGWR") + self._export_building_group_baugwr() + self._check_for_stop() + + logger.info("Exporting TWW.catchment_area_totals -> ABWASSER.Gesamteinzugsgebiet") + self._export_catchment_area_totals() + self._check_for_stop() + + logger.info("Exporting TWW.hq_relation -> ABWASSER.HQ_Relation") + self._export_hq_relation() + self._check_for_stop() + + logger.info("Exporting TWW.hydr_geom_relation -> ABWASSER.Hydr_GeomRelation") + self._export_hydr_geom_relation() + self._check_for_stop() + + logger.info("Exporting TWW.hydr_geometry -> ABWASSER.Hydr_Geometrie") + self._export_hydr_geometry() + self._check_for_stop() + + logger.info("Exporting TWW.hydraulic_char_data -> ABWASSER.Hydr_Kennwerte") + self._export_hydraulic_char_data() + self._check_for_stop() + + logger.info("Exporting TWW.small_treatment_plant -> ABWASSER.KLARA") + self._export_small_treatment_plant() + self._check_for_stop() + + logger.info("Exporting TWW.farm -> ABWASSER.Landwirtschaftsbetrieb") + self._export_farm() + self._check_for_stop() + + logger.info("Exporting TWW.leapingweir -> ABWASSER.Leapingwehr") + self._export_leapingweir() + self._check_for_stop() + + logger.info("Exporting TWW.measure -> ABWASSER.Massnahme") + self._export_measure() + self._check_for_stop() + + logger.info("Exporting TWW.mechanical_pretreatment -> ABWASSER.MechanischeVorreinigung") + self._export_mechanical_pretreatment() + self._check_for_stop() + + logger.info("Exporting TWW.measuring_device -> ABWASSER.Messgeraet") + self._export_measuring_device() + self._check_for_stop() + + logger.info("Exporting TWW.measurement_series -> ABWASSER.Messreihe") + self._export_measurement_series() + self._check_for_stop() + + logger.info("Exporting TWW.measurement_result -> ABWASSER.Messresultat") + self._export_measurement_result() + self._check_for_stop() + + logger.info("Exporting TWW.measuring_point -> ABWASSER.Messstelle") + self._export_measuring_point() + self._check_for_stop() + + logger.info("Exporting TWW.mutation -> ABWASSER.Mutation") + self._export_mutation() + self._check_for_stop() + + logger.info("Exporting TWW.reservoir -> ABWASSER.Reservoir") + self._export_reservoir() + self._check_for_stop() + + logger.info("Exporting TWW.retention_body -> ABWASSER.Retentionskoerper") + self._export_retention_body() + self._check_for_stop() + + logger.info("Exporting TWW.profile_geometry -> ABWASSER.Rohrprofil_Geometrie") + self._export_profile_geometry() + self._check_for_stop() + + logger.info("Exporting TWW.backflow_prevention -> ABWASSER.Rueckstausicherung") + self._export_backflow_prevention() + self._check_for_stop() + + logger.info("Exporting TWW.log_card -> ABWASSER.Stammkarte") + self._export_log_card() + self._check_for_stop() + + logger.info("Exporting TWW.prank_weir -> ABWASSER.Streichwehr") + self._export_prank_weir() + self._check_for_stop() + + logger.info("Exporting TWW.overflow_char -> ABWASSER.Ueberlaufcharakteristik") + self._export_overflow_char() + self._check_for_stop() + + logger.info("Exporting TWW.maintenance -> ABWASSER.Unterhalt") + self._export_maintenance() + self._check_for_stop() + + logger.info("Exporting TWW.infiltration_zone -> ABWASSER.Versickerungsbereich") + self._export_infiltration_zone() + self._check_for_stop() + def _export_vsa_kek(self): logger.info("Exporting TWW.examination -> ABWASSER.untersuchung") self._export_examination() @@ -851,6 +1025,1046 @@ def _export_control_center(self): logger.info("done") self.abwasser_session.flush() + def _export_drainless_toilet(self): + query = self.tww_session.query(self.model_classes_tww_od.drainless_toilet) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.drainless_toilet.obj_id.in_(self.subset_ids) + ) + for row in query: + abflusslose_toilette = self.model_classes_interlis.abflusslose_toilette( + **self.wastewater_structure_common(row, "abflusslose_toilette"), + # --- drainless_toilet --- + art=self.get_vl(row.kind__REL), + ) + self.abwasser_session.add(abflusslose_toilette) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_throttle_shut_off_unit(self): + query = self.tww_session.query(self.model_classes_tww_od.throttle_shut_off_unit) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.throttle_shut_off_unit.obj_id.in_(self.subset_ids) + ) + for row in query: + absperr_drosselorgan = self.model_classes_interlis.absperr_drosselorgan( + **self.vsa_base_common(row, "absperr_drosselorgan"), + # --- throttle_shut_off_unit --- + antrieb=self.get_vl(row.actuation__REL), + verstellbarkeit=self.get_vl(row.adjustability__REL), + steuerung=self.get_vl(row.control__REL), + querschnitt=row.cross_section, + wirksamer_qs=row.effective_cross_section, + bruttokosten=row.gross_costs, + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + fabrikat=row.manufacturer, + bemerkung=row.remark, + signaluebermittlung=self.get_vl(row.signal_transmission__REL), + subventionen=row.subsidies, + drosselorgan_oeffnung_ist=row.throttle_unit_opening_current, + drosselorgan_oeffnung_ist_optimiert=row.throttle_unit_opening_current_optimized, + abwasserknotenref=self.get_pk(row.fk_wastewater_node__REL), + steuerungszentraleref=self.get_pk(row.fk_control_center__REL), + ueberlaufref=self.get_pk(row.fk_overflow__REL), + ) + self.abwasser_session.add(absperr_drosselorgan) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_tank_emptying(self): + query = self.tww_session.query(self.model_classes_tww_od.tank_emptying) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.tank_emptying.obj_id.in_(self.subset_ids) + ) + for row in query: + beckenentleerung = self.model_classes_interlis.beckenentleerung( + **self.vsa_base_common(row, "beckenentleerung"), + **self.structure_part_common(row), + # --- tank_emptying --- + leistung=row.flow, + bruttokosten=row.gross_costs, + art=self.get_vl(row.type__REL), + ersatzjahr=row.year_of_replacement, + absperr_drosselorganref=self.get_pk(row.fk_throttle_shut_off_unit__REL), + ueberlaufref=self.get_pk(row.fk_overflow__REL), + ) + self.abwasser_session.add(beckenentleerung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_tank_cleaning(self): + query = self.tww_session.query(self.model_classes_tww_od.tank_cleaning) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.tank_cleaning.obj_id.in_(self.subset_ids) + ) + for row in query: + beckenreinigung = self.model_classes_interlis.beckenreinigung( + **self.vsa_base_common(row, "beckenreinigung"), + **self.structure_part_common(row), + # --- tank_cleaning --- + bruttokosten=row.gross_costs, + art=self.get_vl(row.type__REL), + ersatzjahr=row.year_of_replacement, + ) + self.abwasser_session.add(beckenreinigung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_bio_ecol_assessment(self): + query = self.tww_session.query(self.model_classes_tww_od.bio_ecol_assessment) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.bio_ecol_assessment.obj_id.in_(self.subset_ids) + ) + for row in query: + biol_oekol_gesamtbeurteilung = self.model_classes_interlis.biol_oekol_gesamtbeurteilung( + **self.vsa_base_common(row, "biol_oekol_gesamtbeurteilung"), + **self.maintenance_event_common(row), + # --- bio_ecol_assessment --- + vergleich_letzte_untersuchung=self.get_vl(row.comparison_last__REL), + datum_letzte_untersuchung=row.date_last_examen, + einfluss_hilfsindikatoren=self.get_vl(row.impact_auxiliary_indic__REL), + einfluss_aeusserer_aspekt=self.get_vl(row.impact_external_aspect__REL), + einfluss_makroinvertebraten=self.get_vl(row.impact_macroinvertebrates__REL), + einfluss_wasserpflanzen=self.get_vl(row.impact_water_plants__REL), + handlungsbedarf=self.get_vl(row.intervention_demand__REL), + immissionsorientierte_berechnung=self.get_vl(row.io_calculation__REL), + auslaufrohr_lichte_hoehe=row.outlet_pipe_clear_height, + q347=row.q347, + relevanzmatrix=self.get_vl(row.relevance_matrix__REL), + relevantes_gefaelle=row.relevant_slope, + oberflaechengewaesser=row.surface_water_bodies, + gewaesserart=self.get_vl(row.type_water_body__REL), + gewaesserspezifische_entlastungsfracht_nh4_n_ist=row.water_specific_discharge_freight_nh4_n_current, + gewaesserspezifische_entlastungsfracht_nh4_n_ist_optimiert=row.water_specific_discharge_freight_nh4_n_current_opt, + gewaesserspezifische_entlastungsfracht_nh4_n_geplant=row.water_specific_discharge_freight_nh4_n_planned, + ) + self.abwasser_session.add(biol_oekol_gesamtbeurteilung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_fountain(self): + query = self.tww_session.query(self.model_classes_tww_od.fountain) + if self.filtered: + query = query.filter(self.model_classes_tww_od.fountain.obj_id.in_(self.subset_ids)) + for row in query: + brunnen = self.model_classes_interlis.brunnen( + **self.vsa_base_common(row, "brunnen"), + **self.connection_object_common(row), + # --- fountain --- + standortname=row.location_name, + lage=row.situation_geometry, + ) + self.abwasser_session.add(brunnen) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_param_ca_general(self): + query = self.tww_session.query(self.model_classes_tww_od.param_ca_general) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.param_ca_general.obj_id.in_(self.subset_ids) + ) + for row in query: + ezg_parameter_allg = self.model_classes_interlis.ezg_parameter_allg( + **self.vsa_base_common(row, "ezg_parameter_allg"), + **self.surface_runoff_parameters_common(row), + # --- param_ca_general --- + trockenwetteranfall=row.dry_wheather_flow, + fliessweglaenge=row.flow_path_length, + fliessweggefaelle=row.flow_path_slope, + einwohnergleichwert=row.population_equivalent, + flaeche=row.surface_ca, + ) + self.abwasser_session.add(ezg_parameter_allg) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_param_ca_mouse1(self): + query = self.tww_session.query(self.model_classes_tww_od.param_ca_mouse1) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.param_ca_mouse1.obj_id.in_(self.subset_ids) + ) + for row in query: + ezg_parameter_mouse1 = self.model_classes_interlis.ezg_parameter_mouse1( + **self.vsa_base_common(row, "ezg_parameter_mouse1"), + **self.surface_runoff_parameters_common(row), + # --- param_ca_mouse1 --- + trockenwetteranfall=row.dry_wheather_flow, + fliessweglaenge=row.flow_path_length, + fliessweggefaelle=row.flow_path_slope, + einwohnergleichwert=row.population_equivalent, + flaeche=row.surface_ca_mouse, + nutzungsart=row.usage, + ) + self.abwasser_session.add(ezg_parameter_mouse1) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_individual_surface(self): + query = self.tww_session.query(self.model_classes_tww_od.individual_surface) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.individual_surface.obj_id.in_(self.subset_ids) + ) + for row in query: + einzelflaeche = self.model_classes_interlis.einzelflaeche( + **self.vsa_base_common(row, "einzelflaeche"), + **self.connection_object_common(row), + # --- individual_surface --- + funktion=self.get_vl(row.function__REL), + neigung=row.inclination, + befestigung=self.get_vl(row.pavement__REL), + perimeter=row.perimeter_geometry, + ) + self.abwasser_session.add(einzelflaeche) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_catchment_area(self): + query = self.tww_session.query(self.model_classes_tww_od.catchment_area) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.catchment_area.obj_id.in_(self.subset_ids) + ) + for row in query: + einzugsgebiet = self.model_classes_interlis.einzugsgebiet( + **self.vsa_base_common(row, "einzugsgebiet"), + # --- catchment_area --- + direkteinleitung_in_gewaesser_ist=self.get_vl(row.direct_discharge_current__REL), + direkteinleitung_in_gewaesser_geplant=self.get_vl( + row.direct_discharge_planned__REL + ), + abflussbeiwert_rw_ist=row.discharge_coefficient_rw_current, + abflussbeiwert_rw_geplant=row.discharge_coefficient_rw_planned, + abflussbeiwert_sw_ist=row.discharge_coefficient_ww_current, + abflussbeiwert_sw_geplant=row.discharge_coefficient_ww_planned, + entwaesserungssystem_ist=self.get_vl(row.drainage_system_current__REL), + entwaesserungssystem_geplant=self.get_vl(row.drainage_system_planned__REL), + bezeichnung=row.identifier, + versickerung_ist=self.get_vl(row.infiltration_current__REL), + versickerung_geplant=self.get_vl(row.infiltration_planned__REL), + perimeter=row.perimeter_geometry, + einwohnerdichte_ist=row.population_density_current, + einwohnerdichte_geplant=row.population_density_planned, + bemerkung=row.remark, + retention_ist=self.get_vl(row.retention_current__REL), + retention_geplant=self.get_vl(row.retention_planned__REL), + abflussbegrenzung_ist=row.runoff_limit_current, + abflussbegrenzung_geplant=row.runoff_limit_planned, + befestigungsgrad_rw_ist=row.seal_factor_rw_current, + befestigungsgrad_rw_geplant=row.seal_factor_rw_planned, + befestigungsgrad_sw_ist=row.seal_factor_ww_current, + befestigungsgrad_sw_geplant=row.seal_factor_ww_planned, + fremdwasseranfall_ist=row.sewer_infiltration_water_production_current, + fremdwasseranfall_geplant=row.sewer_infiltration_water_production_planned, + flaeche=row.surface_area, + schmutzabwasseranfall_ist=row.waste_water_production_current, + schmutzabwasseranfall_geplant=row.waste_water_production_planned, + abwassernetzelement_rw_istref=self.get_pk( + row.fk_wastewater_networkelement_rw_current__REL + ), + abwassernetzelement_rw_geplantref=self.get_pk( + row.fk_wastewater_networkelement_rw_planned__REL + ), + abwassernetzelement_sw_geplantref=self.get_pk( + row.fk_wastewater_networkelement_ww_planned__REL + ), + abwassernetzelement_sw_istref=self.get_pk( + row.fk_wastewater_networkelement_ww_current__REL + ), + sbw_rw_geplantref=self.get_pk(row.fk_special_building_rw_planned__REL), + sbw_rw_istref=self.get_pk(row.fk_special_building_rw_current__REL), + sbw_sw_geplantref=self.get_pk(row.fk_special_building_ww_planned__REL), + sbw_sw_istref=self.get_pk(row.fk_special_building_ww_current__REL), + ) + self.abwasser_session.add(einzugsgebiet) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_electric_equipment(self): + query = self.tww_session.query(self.model_classes_tww_od.electric_equipment) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.electric_equipment.obj_id.in_(self.subset_ids) + ) + for row in query: + elektrischeeinrichtung = self.model_classes_interlis.elektrischeeinrichtung( + **self.vsa_base_common(row, "elektrischeeinrichtung"), + **self.structure_part_common(row), + # --- electric_equipment --- + bruttokosten=row.gross_costs, + art=self.get_vl(row.kind__REL), + ersatzjahr=row.year_of_replacement, + ) + self.abwasser_session.add(elektrischeeinrichtung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_electromechanical_equipment(self): + query = self.tww_session.query(self.model_classes_tww_od.electromechanical_equipment) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.electromechanical_equipment.obj_id.in_(self.subset_ids) + ) + for row in query: + elektromechanischeausruestung = self.model_classes_interlis.elektromechanischeausruestung( + **self.vsa_base_common(row, "elektromechanischeausruestung"), + **self.structure_part_common(row), + # --- electromechanical_equipment --- + bruttokosten=row.gross_costs, + art=self.get_vl(row.kind__REL), + ersatzjahr=row.year_of_replacement, + ) + self.abwasser_session.add(elektromechanischeausruestung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_disposal(self): + query = self.tww_session.query(self.model_classes_tww_od.disposal) + if self.filtered: + query = query.filter(self.model_classes_tww_od.disposal.obj_id.in_(self.subset_ids)) + for row in query: + entsorgung = self.model_classes_interlis.entsorgung( + **self.vsa_base_common(row, "entsorgung"), + # --- disposal --- + entsorgungsintervall_ist=row.disposal_interval_current, + entsorgungsintervall_soll=row.disposal_interval_nominal, + entsorgungsort_ist=self.get_vl(row.disposal_place_current__REL), + entsorgungsort_geplant=self.get_vl(row.disposal_place_planned__REL), + volumenabflusslosegrube=row.volume_pit_without_drain, + versickerungsanlageref=self.get_pk(row.fk_infiltration_installation__REL), + einleitstelleref=self.get_pk(row.fk_discharge_point__REL), + abwasserbauwerkref=self.get_pk(row.fk_wastewater_structure__REL), + ) + self.abwasser_session.add(entsorgung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_drainage_system(self): + query = self.tww_session.query(self.model_classes_tww_od.drainage_system) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.drainage_system.obj_id.in_(self.subset_ids) + ) + for row in query: + entwaesserungssystem = self.model_classes_interlis.entwaesserungssystem( + **self.vsa_base_common(row, "entwaesserungssystem"), + **self.zone_common(row), + # --- drainage_system --- + art=self.get_vl(row.kind__REL), + perimeter=row.perimeter_geometry, + ) + self.abwasser_session.add(entwaesserungssystem) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_solids_retention(self): + query = self.tww_session.query(self.model_classes_tww_od.solids_retention) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.solids_retention.obj_id.in_(self.subset_ids) + ) + for row in query: + feststoffrueckhalt = self.model_classes_interlis.feststoffrueckhalt( + **self.vsa_base_common(row, "feststoffrueckhalt"), + **self.structure_part_common(row), + # --- solids_retention --- + dimensionierungswert=row.dimensioning_value, + bruttokosten=row.gross_costs, + anspringkote=row.overflow_level, + art=self.get_vl(row.type__REL), + ersatzjahr=row.year_of_replacement, + ) + self.abwasser_session.add(feststoffrueckhalt) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_pump(self): + query = self.tww_session.query(self.model_classes_tww_od.pump) + if self.filtered: + query = query.filter(self.model_classes_tww_od.pump.obj_id.in_(self.subset_ids)) + for row in query: + foerderaggregat = self.model_classes_interlis.foerderaggregat( + **self.vsa_base_common(row, "foerderaggregat"), + **self.overflow_common(row), + # --- pump --- + bauart=self.get_vl(row.construction_type__REL), + arbeitspunkt=row.operating_point, + aufstellungantrieb=self.get_vl(row.placement_of_actuation__REL), + aufstellungfoerderaggregat=self.get_vl(row.placement_of_pump__REL), + foerderstrommax_einzel=row.pump_flow_max_single, + foerderstrommin_einzel=row.pump_flow_min_single, + kotestart=row.start_level, + kotestop=row.stop_level, + ) + self.abwasser_session.add(foerderaggregat) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_building(self): + query = self.tww_session.query(self.model_classes_tww_od.building) + if self.filtered: + query = query.filter(self.model_classes_tww_od.building.obj_id.in_(self.subset_ids)) + for row in query: + gebaeude = self.model_classes_interlis.gebaeude( + **self.vsa_base_common(row, "gebaeude"), + **self.connection_object_common(row), + # --- building --- + hausnummer=row.house_number, + standortname=row.location_name, + perimeter=row.perimeter_geometry, + referenzpunkt=row.reference_point_geometry, + ) + self.abwasser_session.add(gebaeude) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_building_group(self): + query = self.tww_session.query(self.model_classes_tww_od.building_group) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.building_group.obj_id.in_(self.subset_ids) + ) + for row in query: + gebaeudegruppe = self.model_classes_interlis.gebaeudegruppe( + **self.vsa_base_common(row, "gebaeudegruppe"), + # --- building_group --- + kinositzplaetze=row.movie_theater_seats, + kirchesitzplaetze=row.church_seats, + campingflaeche=row.camping_area, + campinguebernachtungen=row.camping_lodgings, + anschlusspflicht=self.get_vl(row.connecting_obligation__REL), + anschlussara=self.get_vl(row.connection_wwtp__REL), + gewerbebeschaeftigte=row.craft_employees, + schlafsaalbetten=row.dorm_beds, + schlafsaaluebernachtungen=row.dorm_overnight_stays, + entwaesserungsplan=self.get_vl(row.drainage_map__REL), + trinkwassernetzanschluss=self.get_vl(row.drinking_water_network__REL), + trinkwasserandere=self.get_vl(row.drinking_water_others__REL), + stromanschluss=self.get_vl(row.electric_connection__REL), + veranstaltungbesucher=row.event_visitors, + funktion=self.get_vl(row.function__REL), + turnhalleflaeche=row.gym_area, + ferienuebernachtungen=row.holiday_accomodation, + spitalbetten=row.hospital_beds, + hotelbetten=row.hotel_beds, + hoteluebernachtungen=row.hotel_overnight_stays, + bezeichnung=row.identifier, + anderenutzungegw=row.other_usage_population_equivalent, + anderenutzungart=row.other_usage_type, + einwohnerwerte=row.population_equivalent, + bemerkung=row.remark, + sanierungsdatum=row.renovation_date, + sanierungsbedarf=self.get_vl(row.renovation_necessity__REL), + raststaettesitzplaetze=row.restaurant_seats, + restaurantsitzplaetze_saalgarten=row.restaurant_seats_hall_garden, + restaurantsitzplaetze_permanent=row.restaurant_seats_permanent, + sanierungskonzept=row.restructuring_concept, + schuleschueler=row.school_students, + lage=row.situation_geometry, + # entsorgungref=self.get_pk(row.fk_disposal__REL), # TODO check why not available + massnahmeref=self.get_pk(row.fk_measure__REL), + ) + self.abwasser_session.add(gebaeudegruppe) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_building_group_baugwr(self): + query = self.tww_session.query(self.model_classes_tww_od.building_group_baugwr) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.building_group_baugwr.obj_id.in_(self.subset_ids) + ) + for row in query: + gebaeudegruppe_baugwr = self.model_classes_interlis.gebaeudegruppe_baugwr( + **self.vsa_base_common(row, "gebaeudegruppe_baugwr"), + # --- building_group_baugwr --- + egid=row.egid, + gebaeudegrupperef=self.get_pk(row.fk_building_group__REL), + ) + self.abwasser_session.add(gebaeudegruppe_baugwr) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_catchment_area_totals(self): + query = self.tww_session.query(self.model_classes_tww_od.catchment_area_totals) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.catchment_area_totals.obj_id.in_(self.subset_ids) + ) + for row in query: + gesamteinzugsgebiet = self.model_classes_interlis.gesamteinzugsgebiet( + **self.vsa_base_common(row, "gesamteinzugsgebiet"), + # --- catchment_area_totals --- + entlastungsfracht_nh4_n=row.discharge_freight_nh4_n, + entlastungsanteil_nh4_n=row.discharge_proportion_nh4_n, + bezeichnung=row.identifier, + einwohner=row.population, + einwohner_dim=row.population_dim, + fremdwasseranfall=row.sewer_infiltration_water, + flaeche=row.surface_area, + flaeche_dim=row.surface_dim, + flaeche_bef=row.surface_imp, + flaeche_bef_dim=row.surface_imp_dim, + flaeche_red=row.surface_red, + flaeche_red_dim=row.surface_red_dim, + schmutzabwasseranfall=row.waste_water_production, + einleitstelleref=self.get_pk(row.fk_discharge_point__REL), + hydr_kennwerteref=self.get_pk(row.fk_hydraulic_char_data__REL), + ) + self.abwasser_session.add(gesamteinzugsgebiet) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_hq_relation(self): + query = self.tww_session.query(self.model_classes_tww_od.hq_relation) + if self.filtered: + query = query.filter(self.model_classes_tww_od.hq_relation.obj_id.in_(self.subset_ids)) + for row in query: + hq_relation = self.model_classes_interlis.hq_relation( + **self.vsa_base_common(row, "hq_relation"), + # --- hq_relation --- + hoehe=row.altitude, + abfluss=row.flow, + zufluss=row.flow_from, + ueberlaufcharakteristikref=self.get_pk(row.fk_overflow_char__REL), + ) + self.abwasser_session.add(hq_relation) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_hydr_geom_relation(self): + query = self.tww_session.query(self.model_classes_tww_od.hydr_geom_relation) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.hydr_geom_relation.obj_id.in_(self.subset_ids) + ) + for row in query: + hydr_geomrelation = self.model_classes_interlis.hydr_geomrelation( + **self.vsa_base_common(row, "hydr_geomrelation"), + # --- hydr_geom_relation --- + wassertiefe=row.water_depth, + wasseroberflaeche=row.water_surface, + benetztequerschnittsflaeche=row.wet_cross_section_area, + hydr_geometrieref=self.get_pk(row.fk_hydr_geometry__REL), + ) + self.abwasser_session.add(hydr_geomrelation) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_hydr_geometry(self): + query = self.tww_session.query(self.model_classes_tww_od.hydr_geometry) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.hydr_geometry.obj_id.in_(self.subset_ids) + ) + for row in query: + hydr_geometrie = self.model_classes_interlis.hydr_geometrie( + **self.vsa_base_common(row, "hydr_geometrie"), + # --- hydr_geometry --- + bemerkung=row.remark, + stauraum=row.storage_volume, + nutzinhalt_fangteil=row.usable_capacity_storage, + nutzinhalt_klaerteil=row.usable_capacity_treatment, + nutzinhalt=row.utilisable_capacity, + volumen_pumpensumpf=row.volume_pump_sump, + ) + self.abwasser_session.add(hydr_geometrie) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_hydraulic_char_data(self): + query = self.tww_session.query(self.model_classes_tww_od.hydraulic_char_data) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.hydraulic_char_data.obj_id.in_(self.subset_ids) + ) + for row in query: + hydr_kennwerte = self.model_classes_interlis.hydr_kennwerte( + **self.vsa_base_common(row, "hydr_kennwerte"), + # --- hydraulic_char_data --- + qan=row.qon, + bemerkung=row.remark, + status=self.get_vl_code( + self.model_classes_tww_vl.hydraulic_char_data_status, row.astatus + ), + aggregatezahl=row.aggregate_number, + foerderhoehe_geodaetisch=row.delivery_height_geodaetic, + bezeichnung=row.identifier, + is_overflowing=self.get_vl_code( + self.model_classes_tww_vl.hydraulic_char_data_is_overflowing, row.springt_an + ), + hauptwehrart=self.get_vl(row.main_weir_kind__REL), + mehrbelastung=row.overcharge, + ueberlaufdauer=row.overflow_duration, + ueberlauffracht=row.overflow_freight, + ueberlaufhaeufigkeit=row.overflow_frequency, + ueberlaufmenge=row.overflow_volume, + pumpenregime=self.get_vl(row.pump_characteristics__REL), + foerderstrommax=row.pump_flow_max, + foerderstrommin=row.pump_flow_min, + qab=row.q_discharge, + abwasserknotenref=self.get_pk(row.fk_wastewater_node__REL), + ueberlaufcharakteristikref=self.get_pk(row.fk_overflow_char__REL), + primaerrichtungref=self.get_pk(row.fk_primary_direction__REL), + ) + self.abwasser_session.add(hydr_kennwerte) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_small_treatment_plant(self): + query = self.tww_session.query(self.model_classes_tww_od.small_treatment_plant) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.small_treatment_plant.obj_id.in_(self.subset_ids) + ) + for row in query: + klara = self.model_classes_interlis.klara( + **self.vsa_base_common(row, "klara"), + **self.wastewater_structure_common(row), + # --- small_treatment_plant --- + bewilligungsnummer=row.approval_number, + funktion=self.get_vl(row.function__REL), + anlagenummer=row.installation_number, + fernueberwachung=self.get_vl(row.remote_monitoring__REL), + ) + self.abwasser_session.add(klara) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_farm(self): + query = self.tww_session.query(self.model_classes_tww_od.farm) + if self.filtered: + query = query.filter(self.model_classes_tww_od.farm.obj_id.in_(self.subset_ids)) + for row in query: + landwirtschaftsbetrieb = self.model_classes_interlis.landwirtschaftsbetrieb( + **self.vsa_base_common(row, "landwirtschaftsbetrieb"), + # --- farm --- + nutzflaechelandwirtschaft=row.agriculture_arable_surface, + guellegrubebemerkung=row.cesspit_comment, + guellegrubevolumen=self.get_vl(row.cesspit_volume__REL), + guellegrubevolumen_ist=row.cesspit_volume_current, + guellegrubevolumen_soll=row.cesspit_volume_nominal, + guellegrubevolumen_sw_behandelt=row.cesspit_volume_ww_treated, + guellegrubebewilligungsjahr=row.cesspit_year_of_approval, + konformitaet=self.get_vl(row.conformity__REL), + fortbestand=self.get_vl(row.continuance__REL), + fortbestandbemerkung=row.continuance_comment, + mistplatzflaeche_ist=row.dung_heap_area_current, + mistplatzflaeche_soll=row.dung_heap_area_nominal, + bemerkung=row.remark, + hirtenhuettebemerkung=row.shepherds_hut_comment, + hirtenhuetteegw=row.shepherds_hut_population_equivalent, + hirtenhuetteabwasser=self.get_vl(row.shepherds_hut_wastewater__REL), + stallvieh=self.get_vl(row.stable_cattle__REL), + stallgrossvieheinheit_fremdvieh=row.stable_cattle_equivalent_other_cattle, + stallgrossvieheinheit_eigenesvieh=row.stable_cattle_equivalent_own_cattle, + gebaeudegrupperef=self.get_pk(row.fk_building_group__REL), + ) + self.abwasser_session.add(landwirtschaftsbetrieb) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_leapingweir(self): + query = self.tww_session.query(self.model_classes_tww_od.leapingweir) + if self.filtered: + query = query.filter(self.model_classes_tww_od.leapingweir.obj_id.in_(self.subset_ids)) + for row in query: + leapingwehr = self.model_classes_interlis.leapingwehr( + **self.vsa_base_common(row, "leapingwehr"), + **self.overflow_common(row), + # --- leapingweir --- + laenge=row.length, + oeffnungsform=self.get_vl(row.opening_shape__REL), + breite=row.width, + ) + self.abwasser_session.add(leapingwehr) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_measure(self): + query = self.tww_session.query(self.model_classes_tww_od.measure) + if self.filtered: + query = query.filter(self.model_classes_tww_od.measure.obj_id.in_(self.subset_ids)) + for row in query: + massnahme = self.model_classes_interlis.massnahme( + **self.vsa_base_common(row, "massnahme"), + # --- measure --- + datum_eingang=row.date_entry, + beschreibung=row.description, + kategorie=self.get_vl(row.category__REL), + bezeichnung=row.identifier, + handlungsbedarf=row.intervention_demand, + linie=row.line_geometry, + verweis=row.link, + perimeter=row.perimeter_geometry, + prioritaet=self.get_vl(row.priority__REL), + bemerkung=row.remark, + astatus=self.get_vl(row.status__REL), + symbolpos=row.symbolpos_geometry, + gesamtkosten=row.total_cost, + jahr_umsetzung_effektiv=row.year_implementation_effective, + jahr_umsetzung_geplant=row.year_implementation_planned, + traegerschaftref=row.fk_responsible_entity, + verantwortlich_ausloesungref=row.fk_responsible_start, + ) + self.abwasser_session.add(massnahme) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_mechanical_pretreatment(self): + query = self.tww_session.query(self.model_classes_tww_od.mechanical_pretreatment) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.mechanical_pretreatment.obj_id.in_(self.subset_ids) + ) + for row in query: + mechanischevorreinigung = self.model_classes_interlis.mechanischevorreinigung( + **self.vsa_base_common(row, "mechanischevorreinigung"), + # --- mechanical_pretreatment --- + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + bemerkung=row.remark, + abwasserbauwerkref=self.get_pk(row.fk_wastewater_structure__REL), + ) + self.abwasser_session.add(mechanischevorreinigung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_measuring_device(self): + query = self.tww_session.query(self.model_classes_tww_od.measuring_device) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.measuring_device.obj_id.in_(self.subset_ids) + ) + for row in query: + messgeraet = self.model_classes_interlis.messgeraet( + **self.vsa_base_common(row, "messgeraet"), + # --- measuring_device --- + seriennummer=row.serial_number, + fabrikat=row.brand, + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + bemerkung=row.remark, + messstelleref=self.get_pk(row.fk_measuring_point__REL), + ) + self.abwasser_session.add(messgeraet) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_measurement_series(self): + query = self.tww_session.query(self.model_classes_tww_od.measurement_series) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.measurement_series.obj_id.in_(self.subset_ids) + ) + for row in query: + messreihe = self.model_classes_interlis.messreihe( + **self.vsa_base_common(row, "messreihe"), + # --- measurement_series --- + dimension=row.dimension, + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + bemerkung=row.remark, + messstelleref=self.get_pk(row.fk_measuring_point__REL), + abwassernetzelementref=self.get_pk(row.fk_wastewater_networkelement__REL), + ) + self.abwasser_session.add(messreihe) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_measurement_result(self): + query = self.tww_session.query(self.model_classes_tww_od.measurement_result) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.measurement_result.obj_id.in_(self.subset_ids) + ) + for row in query: + messresultat = self.model_classes_interlis.messresultat( + **self.vsa_base_common(row, "messresultat"), + # --- measurement_result --- + bezeichnung=row.identifier, + messart=self.get_vl(row.measurement_type__REL), + messdauer=row.measuring_duration, + bemerkung=row.remark, + zeit=row.time, + wert=row.value, + messgeraetref=self.get_pk(row.fk_measuring_device__REL), + messreiheref=self.get_pk(row.fk_measurement_series__REL), + ) + self.abwasser_session.add(messresultat) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_measuring_point(self): + query = self.tww_session.query(self.model_classes_tww_od.measuring_point) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.measuring_point.obj_id.in_(self.subset_ids) + ) + for row in query: + messstelle = self.model_classes_interlis.messstelle( + **self.vsa_base_common(row, "messstelle"), + # --- measuring_point --- + zweck=row.purpose, + bemerkung=row.remark, + staukoerper=row.damming_device, + bezeichnung=row.identifier, + art=row.kind, + lage=row.situation_geometry, + betreiberref=row.fk_operator, + abwasserreinigungsanlageref=self.get_pk(row.fk_waste_water_treatment_plant__REL), + abwasserbauwerkref=self.get_pk(row.fk_wastewater_structure__REL), + ) + self.abwasser_session.add(messstelle) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_mutation(self): + query = self.tww_session.query(self.model_classes_tww_od.mutation) + if self.filtered: + query = query.filter(self.model_classes_tww_od.mutation.obj_id.in_(self.subset_ids)) + for row in query: + mutation = self.model_classes_interlis.mutation( + **self.vsa_base_common(row, "mutation"), + # --- mutation --- + attribut=row.attribute, + klasse=row.classname, + mutationsdatum=row.date_mutation, + aufnahmedatum=row.date_time, + art=self.get_vl(row.kind__REL), + letzter_wert=row.last_value, + objekt=row.object, + aufnehmer=row.recorded_by, + bemerkung=row.remark, + systembenutzer=row.system_user, + ) + self.abwasser_session.add(mutation) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_reservoir(self): + query = self.tww_session.query(self.model_classes_tww_od.reservoir) + if self.filtered: + query = query.filter(self.model_classes_tww_od.reservoir.obj_id.in_(self.subset_ids)) + for row in query: + reservoir = self.model_classes_interlis.reservoir( + **self.vsa_base_common(row, "reservoir"), + **self.connection_object_common(row), + # --- reservoir --- + standortname=row.location_name, + lage=row.situation_geometry, + ) + self.abwasser_session.add(reservoir) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_retention_body(self): + query = self.tww_session.query(self.model_classes_tww_od.control_center) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.control_center.obj_id.in_(self.subset_ids) + ) + for row in query: + retentionskoerper = self.model_classes_interlis.retentionskoerper( + **self.vsa_base_common(row, "retentionskoerper"), + # --- retention_body --- + bezeichnung=row.identifier, + art=self.get_vl(row.kind__REL), + bemerkung=row.remark, + retention_volumen=row.volume, + versickerungsanlageref=self.get_pk(row.fk_infiltration_installation__REL), + ) + self.abwasser_session.add(retentionskoerper) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_profile_geometry(self): + query = self.tww_session.query(self.model_classes_tww_od.control_center) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.control_center.obj_id.in_(self.subset_ids) + ) + for row in query: + rohrprofil_geometrie = self.model_classes_interlis.rohrprofil_geometrie( + **self.vsa_base_common(row, "rohrprofil_geometrie"), + # --- profile_geometry --- + reihenfolge=row.sequence, + x=row.x, + y=row.y, + rohrprofilref=self.get_pk(row.fk_pipe_profile__REL), + ) + self.abwasser_session.add(rohrprofil_geometrie) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_backflow_prevention(self): + query = self.tww_session.query(self.model_classes_tww_od.control_center) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.control_center.obj_id.in_(self.subset_ids) + ) + for row in query: + rueckstausicherung = self.model_classes_interlis.rueckstausicherung( + **self.vsa_base_common(row, "rueckstausicherung"), + **self.structure_part_common(row), + # --- backflow_prevention --- + bruttokosten=row.gross_costs, + art=self.get_vl(row.kind__REL), + ersatzjahr=row.year_of_replacement, + fk_throttle_shut_off_unit=self.get_pk(row.absperr_drosselorganref), + fk_pump=self.get_pk(row.foerderaggregatref), + ) + self.abwasser_session.add(rueckstausicherung) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_log_card(self): + query = self.tww_session.query(self.model_classes_tww_od.control_center) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.control_center.obj_id.in_(self.subset_ids) + ) + for row in query: + stammkarte = self.model_classes_interlis.stammkarte( + **self.vsa_base_common(row, "stammkarte"), + # --- log_card --- + steuerung_fernwirkung=self.get_vl(row.control_remote_control__REL), + informationsquelle=self.get_vl(row.information_source__REL), + sachbearbeiter=row.person_in_charge, + bemerkung=row.remark, + paa_knotenref=self.get_pk(row.fk_pwwf_wastewater_node__REL), + bueroref=row.fk_agency, + standortgemeinderef=row.fk_location_municipality, + ) + self.abwasser_session.add(stammkarte) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_prank_weir(self): + query = self.tww_session.query(self.model_classes_tww_od.control_center) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.control_center.obj_id.in_(self.subset_ids) + ) + for row in query: + streichwehr = self.model_classes_interlis.streichwehr( + **self.vsa_base_common(row, "streichwehr"), + **self.overflow_common(row), + # --- prank_weir --- + hydrueberfalllaenge=row.hydraulic_overflow_length, + kotemax=row.level_max, + kotemin=row.level_min, + ueberfallkante=self.get_vl(row.weir_edge__REL), + wehr_art=self.get_vl(row.weir_kind__REL), + ) + self.abwasser_session.add(streichwehr) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_overflow_char(self): + query = self.tww_session.query(self.model_classes_tww_od.control_center) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.control_center.obj_id.in_(self.subset_ids) + ) + for row in query: + ueberlaufcharakteristik = self.model_classes_interlis.ueberlaufcharakteristik( + **self.vsa_base_common(row, "ueberlaufcharakteristik"), + # --- overflow_char --- + bezeichnung=row.identifier, + kennlinie_typ=self.get_vl(row.kind_overflow_char__REL), + bemerkung=row.remark, + ) + self.abwasser_session.add(ueberlaufcharakteristik) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_maintenance(self): + query = self.tww_session.query(self.model_classes_tww_od.control_center) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.control_center.obj_id.in_(self.subset_ids) + ) + for row in query: + unterhalt = self.model_classes_interlis.unterhalt( + **self.vsa_base_common(row, "unterhalt"), + **self.maintenance_event_common(row), + # --- maintenance --- + art=self.get_vl(row.kind__REL), + ) + self.abwasser_session.add(unterhalt) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + + def _export_infiltration_zone(self): + query = self.tww_session.query(self.model_classes_tww_od.control_center) + if self.filtered: + query = query.filter( + self.model_classes_tww_od.control_center.obj_id.in_(self.subset_ids) + ) + for row in query: + versickerungsbereich = self.model_classes_interlis.versickerungsbereich( + **self.vsa_base_common(row, "versickerungsbereich"), + **self.zone_common(row), + # --- infiltration_zone --- + art=self.get_vl(row.kind__REL), + versickerungsmoeglichkeit=self.get_vl(row.infiltration_capacity__REL), + perimeter=row.perimeter_geometry, + ) + self.abwasser_session.add(versickerungsbereich) + print(".", end="") + logger.info("done") + self.abwasser_session.flush() + def _export_examination(self): query = self.tww_session.query(self.model_classes_tww_od.examination) if self.filtered: diff --git a/plugin/teksi_wastewater/interlis/interlis_model_mapping/interlis_importer_to_intermediate_schema.py b/plugin/teksi_wastewater/interlis/interlis_model_mapping/interlis_importer_to_intermediate_schema.py index ff30debd2..0e58a407b 100644 --- a/plugin/teksi_wastewater/interlis/interlis_model_mapping/interlis_importer_to_intermediate_schema.py +++ b/plugin/teksi_wastewater/interlis/interlis_model_mapping/interlis_importer_to_intermediate_schema.py @@ -142,6 +142,10 @@ def _import_sia405_abwasser(self): self._import_bankett() self._check_for_stop() + logger.info("Importing ABWASSER.Spuelstutzen -> TWW.flushing_nozzle") + self._import_spuelstutzen() + self._check_for_stop() + def _import_dss(self): logger.info( "Importing ABWASSER.abwasserreinigungsanlage -> TWW.waste_water_treatment_plant" @@ -169,6 +173,180 @@ def _import_dss(self): self._import_steuerungszentrale() self._check_for_stop() + logger.info("Importing ABWASSER.Abflusslose_Toilette -> TWW.drainless_toilet") + self._import_abflusslose_toilette() + self._check_for_stop() + + logger.info("Importing ABWASSER.Absperr_Drosselorgan -> TWW.throttle_shut_off_unit") + self._import_absperr_drosselorgan() + self._check_for_stop() + + logger.info("Importing ABWASSER.Beckenentleerung -> TWW.tank_emptying") + self._import_beckenentleerung() + self._check_for_stop() + + logger.info("Importing ABWASSER.Beckenreinigung -> TWW.tank_cleaning") + self._import_beckenreinigung() + self._check_for_stop() + + logger.info("Importing ABWASSER.Biol_oekol_Gesamtbeurteilung -> TWW.bio_ecol_assessment") + self._import_biol_oekol_gesamtbeurteilung() + self._check_for_stop() + + logger.info("Importing ABWASSER.Brunnen -> TWW.fountain") + self._import_brunnen() + self._check_for_stop() + + logger.info("Importing ABWASSER.EZG_PARAMETER_ALLG -> TWW.param_ca_general") + self._import_ezg_parameter_allg() + self._check_for_stop() + + logger.info("Importing ABWASSER.EZG_PARAMETER_MOUSE1 -> TWW.param_ca_mouse1") + self._import_ezg_parameter_mouse1() + self._check_for_stop() + + logger.info("Importing ABWASSER.Einzelflaeche -> TWW.individual_surface") + self._import_einzelflaeche() + self._check_for_stop() + + logger.info("Importing ABWASSER.Einzugsgebiet -> TWW.catchment_area") + self._import_einzugsgebiet() + self._check_for_stop() + + logger.info("Importing ABWASSER.ElektrischeEinrichtung -> TWW.electric_equipment") + self._import_elektrischeeinrichtung() + self._check_for_stop() + + logger.info( + "Importing ABWASSER.ElektromechanischeAusruestung -> TWW.electromechanical_equipment" + ) + self._import_elektromechanischeausruestung() + self._check_for_stop() + + logger.info("Importing ABWASSER.Entsorgung -> TWW.disposal") + self._import_entsorgung() + self._check_for_stop() + + logger.info("Importing ABWASSER.Entwaesserungssystem -> TWW.drainage_system") + self._import_entwaesserungssystem() + self._check_for_stop() + + logger.info("Importing ABWASSER.Feststoffrueckhalt -> TWW.solids_retention") + self._import_feststoffrueckhalt() + self._check_for_stop() + + logger.info("Importing ABWASSER.FoerderAggregat -> TWW.") + self._import_foerderaggregat() + self._check_for_stop() + + logger.info("Importing ABWASSER.Gebaeude -> TWW.building") + self._import_gebaeude() + self._check_for_stop() + + logger.info("Importing ABWASSER.Gebaeudegruppe -> TWW.building_group") + self._import_gebaeudegruppe() + self._check_for_stop() + + logger.info("Importing ABWASSER.Gebaeudegruppe_BAUGWR -> TWW.building_group_baugwr") + self._import_gebaeudegruppe_baugwr() + self._check_for_stop() + + logger.info("Importing ABWASSER.Gesamteinzugsgebiet -> TWW.catchment_area_totals") + self._import_gesamteinzugsgebiet() + self._check_for_stop() + + logger.info("Importing ABWASSER.HQ_Relation -> TWW.hq_relation") + self._import_hq_relation() + self._check_for_stop() + + logger.info("Importing ABWASSER.Hydr_GeomRelation -> TWW.hydr_geom_relation") + self._import_hydr_geomrelation() + self._check_for_stop() + + logger.info("Importing ABWASSER.Hydr_Geometrie -> TWW.hydr_geometry") + self._import_hydr_geometrie() + self._check_for_stop() + + logger.info("Importing ABWASSER.Hydr_Kennwerte -> TWW.hydraulic_char_data") + self._import_hydr_kennwerte() + self._check_for_stop() + + logger.info("Importing ABWASSER.KLARA -> TWW.small_treatment_plant") + self._import_klara() + self._check_for_stop() + + logger.info("Importing ABWASSER.Landwirtschaftsbetrieb -> TWW.farm") + self._import_landwirtschaftsbetrieb() + self._check_for_stop() + + logger.info("Importing ABWASSER.Leapingwehr -> TWW.leapingweir") + self._import_leapingwehr() + self._check_for_stop() + + logger.info("Importing ABWASSER.Massnahme -> TWW.measure") + self._import_massnahme() + self._check_for_stop() + + logger.info("Importing ABWASSER.MechanischeVorreinigung -> TWW.mechanical_pretreatment") + self._import_mechanischevorreinigung() + self._check_for_stop() + + logger.info("Importing ABWASSER.Messgeraet -> TWW.measuring_device") + self._import_messgeraet() + self._check_for_stop() + + logger.info("Importing ABWASSER.Messreihe -> TWW.measurement_series") + self._import_messreihe() + self._check_for_stop() + + logger.info("Importing ABWASSER.Messresultat -> TWW.measurement_result") + self._import_messresultat() + self._check_for_stop() + + logger.info("Importing ABWASSER.Messstelle -> TWW.measuring_point") + self._import_messstelle() + self._check_for_stop() + + logger.info("Importing ABWASSER.Mutation -> TWW.mutation") + self._import_mutation() + self._check_for_stop() + + logger.info("Importing ABWASSER.Reservoir -> TWW.reservoir") + self._import_reservoir() + self._check_for_stop() + + logger.info("Importing ABWASSER.Retentionskoerper -> TWW.retention_body") + self._import_retentionskoerper() + self._check_for_stop() + + logger.info("Importing ABWASSER.Rohrprofil_Geometrie -> TWW.profile_geometry") + self._import_rohrprofil_geometrie() + self._check_for_stop() + + logger.info("Importing ABWASSER.Rueckstausicherung -> TWW.backflow_prevention") + self._import_rueckstausicherung() + self._check_for_stop() + + logger.info("Importing ABWASSER.Stammkarte -> TWW.log_card") + self._import_stammkarte() + self._check_for_stop() + + logger.info("Importing ABWASSER.Streichwehr -> TWW.prank_weir") + self._import_streichwehr() + self._check_for_stop() + + logger.info("Importing ABWASSER.Ueberlaufcharakteristik -> TWW.overflow_char") + self._import_ueberlaufcharakteristik() + self._check_for_stop() + + logger.info("Importing ABWASSER.Unterhalt -> TWW.maintenance") + self._import_unterhalt() + self._check_for_stop() + + logger.info("Importing ABWASSER.Versickerungsbereich -> TWW.infiltration_zone") + self._import_versickerungsbereich() + self._check_for_stop() + def _import_vsa_kek(self): logger.info("Importing ABWASSER.untersuchung -> TWW.examination") self._import_untersuchung() @@ -223,6 +401,9 @@ def get_vl_instance(self, vl_table, value_de): return instance def get_vl_code(self, vl_table, value_de): + if value_de is None: + return None + instance = self.get_vl_instance(vl_table, value_de) if instance is None: return None @@ -334,6 +515,93 @@ def structure_part_common(self, row): ), } + def maintenance_event_common(self, row): + """ + Returns common attributes for connection_object + """ + return { + "base_data": row.datengrundlage, + "cost": row.kosten, + "data_details": row.detaildaten, + "duration": row.dauer, + "operator": row.ausfuehrender, + "reason": row.grund, + "result": row.ergebnis, + "status": self.get_vl_code( + self.model_classes_tww_vl.maintenance_event_status, row.astatus + ), + "time_point": row.zeitpunkt, + "identifier": row.bezeichnung, + "remark": row.bemerkung, + "fk_operating_company": row.ausfuehrende_firmaref, + "fk_measure": self.get_pk(row.massnahmeref__REL), + } + + def connection_object_common(self, row): + """ + Returns common attributes for connection_object + """ + return { + "identifier": row.bezeichnung, + "remark": row.bemerkung, + "sewer_infiltration_water_production": row.fremdwasseranfall, + "fk_wastewater_networkelement": self.get_pk(row.abwassernetzelementref__REL), + } + + def surface_runoff_parameters_common(self, row): + """ + Returns common attributes for surface_runoff_parameters + """ + return { + "evaporation_loss": row.verdunstungsverlust, + "identifier": row.bezeichnung, + "infiltration_loss": row.versickerungsverlust, + "remark": row.bemerkung, + "surface_storage": row.muldenverlust, + "wetting_loss": row.benetzungsverlust, + "fk_catchment_area": self.get_pk(row.einzugsgebietref__REL), + } + + def zone_common(self, row): + """ + Returns common attributes for zone + """ + return { + "identifier": row.bezeichnung, + "remark": row.bemerkung, + } + + def overflow_common(self, row): + """ + Returns common attributes for overflow + """ + return { + "identifier": row.bezeichnung, + "remark": row.bemerkung, + "actuation": self.get_vl_code( + self.model_classes_tww_vl.overflow_actuation, row.antrieb + ), + "adjustability": self.get_vl_code( + self.model_classes_tww_vl.overflow_adjustability, row.verstellbarkeit + ), + "brand": row.fabrikat, + "control": self.get_vl_code(self.model_classes_tww_vl.overflow_control, row.steuerung), + "discharge_point": row.einleitstelle, + "function": self.get_vl_code( + self.model_classes_tww_vl.overflow_function, row.funktion + ), + "gross_costs": row.bruttokosten, + "qon_dim": row.qan_dim, + "signal_transmission": self.get_vl_code( + self.model_classes_tww_vl.overflow_signal_transmission, row.signaluebermittlung + ), + "subsidies": row.subventionen, + "fk_wastewater_node": self.get_pk(row.abwasserknotenref__REL), + "fk_overflow_to": self.get_pk(row.ueberlaufnachref__REL), + "fk_overflow_char": self.get_pk(row.ueberlaufcharakteristikref__REL), + "fk_control_center": self.get_pk(row.steuerungszentraleref__REL), + } + def _import_organisation(self): for row in self.session_interlis.query(self.model_classes_interlis.organisation): organisation = self.create_or_update( @@ -619,6 +887,960 @@ def _import_steuerungszentrale(self): self.session_tww.add(control_center) print(".", end="") + def _import_abflusslose_toilette(self): + for row in self.session_interlis.query(self.model_classes_interlis.abflusslose_toilette): + drainless_toilet = self.create_or_update( + self.model_classes_tww_od.drainless_toilet, + **self.base_common(row), + **self.wastewater_structure_common(row), + # --- drainless_toilet --- + kind=self.get_vl_code(self.model_classes_tww_vl.drainless_toilet_kind, row.art), + ) + self.session_tww.add(drainless_toilet) + print(".", end="") + + def _import_absperr_drosselorgan(self): + for row in self.session_interlis.query(self.model_classes_interlis.absperr_drosselorgan): + throttle_shut_off_unit = self.create_or_update( + self.model_classes_tww_od.throttle_shut_off_unit, + **self.base_common(row), + # --- throttle_shut_off_unit --- + actuation=self.get_vl_code( + self.model_classes_tww_vl.throttle_shut_off_unit_actuation, row.antrieb + ), + adjustability=self.get_vl_code( + self.model_classes_tww_vl.throttle_shut_off_unit_adjustability, + row.verstellbarkeit, + ), + control=self.get_vl_code( + self.model_classes_tww_vl.throttle_shut_off_unit_control, row.steuerung + ), + cross_section=row.querschnitt, + effective_cross_section=row.wirksamer_qs, + gross_costs=row.bruttokosten, + identifier=row.bezeichnung, + kind=self.get_vl_code( + self.model_classes_tww_vl.throttle_shut_off_unit_kind, row.art + ), + manufacturer=row.fabrikat, + remark=row.bemerkung, + signal_transmission=self.get_vl_code( + self.model_classes_tww_vl.throttle_shut_off_unit_signal_transmission, + row.signaluebermittlung, + ), + subsidies=row.subventionen, + throttle_unit_opening_current=row.drosselorgan_oeffnung_ist, + throttle_unit_opening_current_optimized=row.drosselorgan_oeffnung_ist_optimiert, + fk_wastewater_node=self.get_pk(row.abwasserknotenref__REL), + fk_control_center=self.get_pk(row.steuerungszentraleref__REL), + fk_overflow=self.get_pk(row.ueberlaufref__REL), + ) + self.session_tww.add(throttle_shut_off_unit) + print(".", end="") + + def _import_beckenentleerung(self): + for row in self.session_interlis.query(self.model_classes_interlis.beckenentleerung): + tank_emptying = self.create_or_update( + self.model_classes_tww_od.tank_emptying, + **self.base_common(row), + **self.structure_part_common(row), + # --- tank_emptying --- + flow=row.leistung, + gross_costs=row.bruttokosten, + type=self.get_vl_code(self.model_classes_tww_vl.tank_emptying_type, row.art), + year_of_replacement=row.ersatzjahr, + fk_throttle_shut_off_unit=self.get_pk(row.absperr_drosselorganref__REL), + fk_overflow=self.get_pk(row.ueberlaufref__REL), + ) + self.session_tww.add(tank_emptying) + print(".", end="") + + def _import_beckenreinigung(self): + for row in self.session_interlis.query(self.model_classes_interlis.beckenreinigung): + tank_cleaning = self.create_or_update( + self.model_classes_tww_od.tank_cleaning, + **self.base_common(row), + **self.structure_part_common(row), + # --- tank_cleaning --- + gross_costs=row.bruttokosten, + type=self.get_vl_code(self.model_classes_tww_vl.tank_cleaning_type, row.art), + year_of_replacement=row.ersatzjahr, + ) + self.session_tww.add(tank_cleaning) + print(".", end="") + + def _import_biol_oekol_gesamtbeurteilung(self): + for row in self.session_interlis.query( + self.model_classes_interlis.biol_oekol_gesamtbeurteilung + ): + bio_ecol_assessment = self.create_or_update( + self.model_classes_tww_od.bio_ecol_assessment, + **self.base_common(row), + **self.maintenance_event_common(row), + # --- bio_ecol_assessment --- + comparison_last=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_comparison_last, + row.vergleich_letzte_untersuchung, + ), + date_last_examen=row.datum_letzte_untersuchung, + impact_auxiliary_indic=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_impact_auxiliary_indic, + row.einfluss_hilfsindikatoren, + ), + impact_external_aspect=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_impact_external_aspect, + row.einfluss_aeusserer_aspekt, + ), + impact_macroinvertebrates=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_impact_macroinvertebrates, + row.einfluss_makroinvertebraten, + ), + impact_water_plants=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_impact_water_plants, + row.einfluss_wasserpflanzen, + ), + intervention_demand=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_intervention_demand, + row.handlungsbedarf, + ), + io_calculation=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_io_calculation, + row.immissionsorientierte_berechnung, + ), + outlet_pipe_clear_height=row.auslaufrohr_lichte_hoehe, + q347=row.q347, + relevance_matrix=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_relevance_matrix, + row.relevanzmatrix, + ), + relevant_slope=row.relevantes_gefaelle, + surface_water_bodies=row.oberflaechengewaesser, + type_water_body=self.get_vl_code( + self.model_classes_tww_vl.bio_ecol_assessment_type_water_body, row.gewaesserart + ), + water_specific_discharge_freight_nh4_n_current=row.gewaesserspezifische_entlastungsfracht_nh4_n_ist, + water_specific_discharge_freight_nh4_n_current_opt=row.gewaesserspezifische_entlastungsfracht_nh4_n_ist_optimiert, + water_specific_discharge_freight_nh4_n_planned=row.gewaesserspezifische_entlastungsfracht_nh4_n_geplant, + ) + self.session_tww.add(bio_ecol_assessment) + print(".", end="") + + def _import_brunnen(self): + for row in self.session_interlis.query(self.model_classes_interlis.brunnen): + fountain = self.create_or_update( + self.model_classes_tww_od.fountain, + **self.base_common(row), + **self.connection_object_common(row), + # --- fountain --- + location_name=row.standortname, + situation_geometry=row.lage, + ) + self.session_tww.add(fountain) + print(".", end="") + + def _import_ezg_parameter_allg(self): + for row in self.session_interlis.query(self.model_classes_interlis.ezg_parameter_allg): + param_ca_general = self.create_or_update( + self.model_classes_tww_od.param_ca_general, + **self.base_common(row), + **self.surface_runoff_parameters_common(row), + # --- param_ca_general --- + dry_wheather_flow=row.trockenwetteranfall, + flow_path_length=row.fliessweglaenge, + flow_path_slope=row.fliessweggefaelle, + population_equivalent=row.einwohnergleichwert, + surface_ca=row.flaeche, + ) + self.session_tww.add(param_ca_general) + print(".", end="") + + def _import_ezg_parameter_mouse1(self): + for row in self.session_interlis.query(self.model_classes_interlis.ezg_parameter_mouse1): + param_ca_mouse1 = self.create_or_update( + self.model_classes_tww_od.param_ca_mouse1, + **self.base_common(row), + **self.surface_runoff_parameters_common(row), + # --- param_ca_mouse1 --- + dry_wheather_flow=row.trockenwetteranfall, + flow_path_length=row.fliessweglaenge, + flow_path_slope=row.fliessweggefaelle, + population_equivalent=row.einwohnergleichwert, + surface_ca_mouse=row.flaeche, + usage=row.nutzungsart, + ) + self.session_tww.add(param_ca_mouse1) + print(".", end="") + + def _import_einzelflaeche(self): + for row in self.session_interlis.query(self.model_classes_interlis.einzelflaeche): + individual_surface = self.create_or_update( + self.model_classes_tww_od.individual_surface, + **self.base_common(row), + **self.connection_object_common(row), + # --- individual_surface --- + function=self.get_vl_code( + self.model_classes_tww_vl.individual_surface_function, row.funktion + ), + inclination=row.neigung, + pavement=self.get_vl_code( + self.model_classes_tww_vl.individual_surface_pavement, row.befestigung + ), + perimeter_geometry=row.perimeter, + ) + self.session_tww.add(individual_surface) + print(".", end="") + + def _import_einzugsgebiet(self): + for row in self.session_interlis.query(self.model_classes_interlis.einzugsgebiet): + catchment_area = self.create_or_update( + self.model_classes_tww_od.catchment_area, + **self.base_common(row), + # --- catchment_area --- + direct_discharge_current=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_direct_discharge_current, + row.direkteinleitung_in_gewaesser_ist, + ), + direct_discharge_planned=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_direct_discharge_planned, + row.direkteinleitung_in_gewaesser_geplant, + ), + discharge_coefficient_rw_current=row.abflussbeiwert_rw_ist, + discharge_coefficient_rw_planned=row.abflussbeiwert_rw_geplant, + discharge_coefficient_ww_current=row.abflussbeiwert_sw_ist, + discharge_coefficient_ww_planned=row.abflussbeiwert_sw_geplant, + drainage_system_current=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_drainage_system_current, + row.entwaesserungssystem_ist, + ), + drainage_system_planned=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_drainage_system_planned, + row.entwaesserungssystem_geplant, + ), + identifier=row.bezeichnung, + infiltration_current=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_infiltration_current, + row.versickerung_ist, + ), + infiltration_planned=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_infiltration_planned, + row.versickerung_geplant, + ), + perimeter_geometry=row.perimeter, + population_density_current=row.einwohnerdichte_ist, + population_density_planned=row.einwohnerdichte_geplant, + remark=row.bemerkung, + retention_current=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_retention_current, row.retention_ist + ), + retention_planned=self.get_vl_code( + self.model_classes_tww_vl.catchment_area_retention_planned, + row.retention_geplant, + ), + runoff_limit_current=row.abflussbegrenzung_ist, + runoff_limit_planned=row.abflussbegrenzung_geplant, + seal_factor_rw_current=row.befestigungsgrad_rw_ist, + seal_factor_rw_planned=row.befestigungsgrad_rw_geplant, + seal_factor_ww_current=row.befestigungsgrad_sw_ist, + seal_factor_ww_planned=row.befestigungsgrad_sw_geplant, + sewer_infiltration_water_production_current=row.fremdwasseranfall_ist, + sewer_infiltration_water_production_planned=row.fremdwasseranfall_geplant, + surface_area=row.flaeche, + waste_water_production_current=row.schmutzabwasseranfall_ist, + waste_water_production_planned=row.schmutzabwasseranfall_geplant, + fk_wastewater_networkelement_rw_current=self.get_pk( + row.abwassernetzelement_rw_istref__REL + ), + fk_wastewater_networkelement_rw_planned=self.get_pk( + row.abwassernetzelement_rw_geplantref__REL + ), + fk_wastewater_networkelement_ww_planned=self.get_pk( + row.abwassernetzelement_sw_geplantref__REL + ), + fk_wastewater_networkelement_ww_current=self.get_pk( + row.abwassernetzelement_sw_istref__REL + ), + fk_special_building_rw_planned=self.get_pk(row.sbw_rw_geplantref__REL), + fk_special_building_rw_current=self.get_pk(row.sbw_rw_istref__REL), + fk_special_building_ww_planned=self.get_pk(row.sbw_sw_geplantref__REL), + fk_special_building_ww_current=self.get_pk(row.sbw_sw_istref__REL), + ) + self.session_tww.add(catchment_area) + print(".", end="") + + def _import_elektrischeeinrichtung(self): + for row in self.session_interlis.query(self.model_classes_interlis.elektrischeeinrichtung): + electric_equipment = self.create_or_update( + self.model_classes_tww_od.electric_equipment, + **self.base_common(row), + **self.structure_part_common(row), + # --- electric_equipment --- + gross_costs=row.bruttokosten, + kind=self.get_vl_code(self.model_classes_tww_vl.electric_equipment_kind, row.art), + year_of_replacement=row.ersatzjahr, + ) + self.session_tww.add(electric_equipment) + print(".", end="") + + def _import_elektromechanischeausruestung(self): + for row in self.session_interlis.query( + self.model_classes_interlis.elektromechanischeausruestung + ): + electromechanical_equipment = self.create_or_update( + self.model_classes_tww_od.electromechanical_equipment, + **self.base_common(row), + **self.structure_part_common(row), + # --- electromechanical_equipment --- + gross_costs=row.bruttokosten, + kind=self.get_vl_code( + self.model_classes_tww_vl.electromechanical_equipment_kind, row.art + ), + year_of_replacement=row.ersatzjahr, + ) + self.session_tww.add(electromechanical_equipment) + print(".", end="") + + def _import_entsorgung(self): + for row in self.session_interlis.query(self.model_classes_interlis.entsorgung): + disposal = self.create_or_update( + self.model_classes_tww_od.disposal, + **self.base_common(row), + # --- disposal --- + disposal_interval_current=row.entsorgungsintervall_ist, + disposal_interval_nominal=row.entsorgungsintervall_soll, + disposal_place_current=self.get_vl_code( + self.model_classes_tww_vl.disposal_disposal_place_current, + row.entsorgungsort_ist, + ), + disposal_place_planned=self.get_vl_code( + self.model_classes_tww_vl.disposal_disposal_place_planned, + row.entsorgungsort_geplant, + ), + volume_pit_without_drain=row.volumenabflusslosegrube, + fk_infiltration_installation=self.get_pk(row.versickerungsanlageref__REL), + fk_discharge_point=self.get_pk(row.einleitstelleref__REL), + fk_wastewater_structure=self.get_pk(row.abwasserbauwerkref__REL), + ) + self.session_tww.add(disposal) + print(".", end="") + + def _import_entwaesserungssystem(self): + for row in self.session_interlis.query(self.model_classes_interlis.entwaesserungssystem): + drainage_system = self.create_or_update( + self.model_classes_tww_od.drainage_system, + **self.base_common(row), + **self.zone_common(row), + # --- drainage_system --- + kind=self.get_vl_code(self.model_classes_tww_vl.drainage_system_kind, row.art), + perimeter_geometry=row.perimeter, + ) + self.session_tww.add(drainage_system) + print(".", end="") + + def _import_feststoffrueckhalt(self): + for row in self.session_interlis.query(self.model_classes_interlis.feststoffrueckhalt): + solids_retention = self.create_or_update( + self.model_classes_tww_od.solids_retention, + **self.base_common(row), + **self.structure_part_common(row), + # --- solids_retention --- + dimensioning_value=row.dimensionierungswert, + gross_costs=row.bruttokosten, + overflow_level=row.anspringkote, + type=self.get_vl_code(self.model_classes_tww_vl.solids_retention_type, row.art), + year_of_replacement=row.ersatzjahr, + ) + self.session_tww.add(solids_retention) + print(".", end="") + + def _import_foerderaggregat(self): + for row in self.session_interlis.query(self.model_classes_interlis.foerderaggregat): + pump = self.create_or_update( + self.model_classes_tww_od.pump, + **self.base_common(row), + **self.overflow_common(row), + # --- pump --- + construction_type=self.get_vl_code( + self.model_classes_tww_vl.pump_construction_type, row.bauart + ), + operating_point=row.arbeitspunkt, + placement_of_actuation=self.get_vl_code( + self.model_classes_tww_vl.pump_placement_of_actuation, row.aufstellungantrieb + ), + placement_of_pump=self.get_vl_code( + self.model_classes_tww_vl.pump_placement_of_pump, + row.aufstellungfoerderaggregat, + ), + pump_flow_max_single=row.foerderstrommax_einzel, + pump_flow_min_single=row.foerderstrommin_einzel, + start_level=row.kotestart, + stop_level=row.kotestop, + ) + self.session_tww.add(pump) + print(".", end="") + + def _import_gebaeude(self): + for row in self.session_interlis.query(self.model_classes_interlis.gebaeude): + building = self.create_or_update( + self.model_classes_tww_od.building, + **self.base_common(row), + **self.connection_object_common(row), + # --- building --- + house_number=row.hausnummer, + location_name=row.standortname, + perimeter_geometry=row.perimeter, + reference_point_geometry=row.referenzpunkt, + ) + self.session_tww.add(building) + print(".", end="") + + def _import_gebaeudegruppe(self): + for row in self.session_interlis.query(self.model_classes_interlis.gebaeudegruppe): + building_group = self.create_or_update( + self.model_classes_tww_od.building_group, + **self.base_common(row), + # --- building_group --- + movie_theater_seats=row.kinositzplaetze, + church_seats=row.kirchesitzplaetze, + camping_area=row.campingflaeche, + camping_lodgings=row.campinguebernachtungen, + connecting_obligation=self.get_vl_code( + self.model_classes_tww_vl.building_group_connecting_obligation, + row.anschlusspflicht, + ), + connection_wwtp=self.get_vl_code( + self.model_classes_tww_vl.building_group_connection_wwtp, row.anschlussara + ), + craft_employees=row.gewerbebeschaeftigte, + dorm_beds=row.schlafsaalbetten, + dorm_overnight_stays=row.schlafsaaluebernachtungen, + drainage_map=self.get_vl_code( + self.model_classes_tww_vl.building_group_drainage_map, row.entwaesserungsplan + ), + drinking_water_network=self.get_vl_code( + self.model_classes_tww_vl.building_group_drinking_water_network, + row.trinkwassernetzanschluss, + ), + drinking_water_others=self.get_vl_code( + self.model_classes_tww_vl.building_group_drinking_water_others, + row.trinkwasserandere, + ), + electric_connection=self.get_vl_code( + self.model_classes_tww_vl.building_group_electric_connection, + row.stromanschluss, + ), + event_visitors=row.veranstaltungbesucher, + function=self.get_vl_code( + self.model_classes_tww_vl.building_group_function, row.funktion + ), + gym_area=row.turnhalleflaeche, + holiday_accomodation=row.ferienuebernachtungen, + hospital_beds=row.spitalbetten, + hotel_beds=row.hotelbetten, + hotel_overnight_stays=row.hoteluebernachtungen, + identifier=row.bezeichnung, + other_usage_population_equivalent=row.anderenutzungegw, + other_usage_type=row.anderenutzungart, + population_equivalent=row.einwohnerwerte, + remark=row.bemerkung, + renovation_date=row.sanierungsdatum, + renovation_necessity=self.get_vl_code( + self.model_classes_tww_vl.building_group_renovation_necessity, + row.sanierungsbedarf, + ), + restaurant_seats=row.raststaettesitzplaetze, + restaurant_seats_hall_garden=row.restaurantsitzplaetze_saalgarten, + restaurant_seats_permanent=row.restaurantsitzplaetze_permanent, + restructuring_concept=row.sanierungskonzept, + school_students=row.schuleschueler, + situation_geometry=row.lage, + # fk_disposal=self.get_pk(row.entsorgungref__REL), # TODO check why not available + fk_measure=self.get_pk(row.massnahmeref__REL), + ) + self.session_tww.add(building_group) + print(".", end="") + + def _import_gebaeudegruppe_baugwr(self): + for row in self.session_interlis.query(self.model_classes_interlis.gebaeudegruppe_baugwr): + building_group_baugwr = self.create_or_update( + self.model_classes_tww_od.building_group_baugwr, + **self.base_common(row), + # --- building_group_baugwr --- + egid=row.egid, + fk_building_group=self.get_pk(row.gebaeudegrupperef__REL), + ) + self.session_tww.add(building_group_baugwr) + print(".", end="") + + def _import_gesamteinzugsgebiet(self): + for row in self.session_interlis.query(self.model_classes_interlis.gesamteinzugsgebiet): + catchment_area_totals = self.create_or_update( + self.model_classes_tww_od.catchment_area_totals, + **self.base_common(row), + # --- catchment_area_totals --- + discharge_freight_nh4_n=row.entlastungsfracht_nh4_n, + discharge_proportion_nh4_n=row.entlastungsanteil_nh4_n, + identifier=row.bezeichnung, + population=row.einwohner, + population_dim=row.einwohner_dim, + sewer_infiltration_water=row.fremdwasseranfall, + surface_area=row.flaeche, + surface_dim=row.flaeche_dim, + surface_imp=row.flaeche_bef, + surface_imp_dim=row.flaeche_bef_dim, + surface_red=row.flaeche_red, + surface_red_dim=row.flaeche_red_dim, + waste_water_production=row.schmutzabwasseranfall, + fk_discharge_point=self.get_pk(row.einleitstelleref__REL), + fk_hydraulic_char_data=self.get_pk(row.hydr_kennwerteref__REL), + ) + self.session_tww.add(catchment_area_totals) + print(".", end="") + + def _import_hq_relation(self): + for row in self.session_interlis.query(self.model_classes_interlis.hq_relation): + hq_relation = self.create_or_update( + self.model_classes_tww_od.hq_relation, + **self.base_common(row), + # --- hq_relation --- + altitude=row.hoehe, + flow=row.abfluss, + flow_from=row.zufluss, + fk_overflow_char=self.get_pk(row.ueberlaufcharakteristikref__REL), + ) + self.session_tww.add(hq_relation) + print(".", end="") + + def _import_hydr_geomrelation(self): + for row in self.session_interlis.query(self.model_classes_interlis.hydr_geomrelation): + hydr_geom_relation = self.create_or_update( + self.model_classes_tww_od.hydr_geom_relation, + **self.base_common(row), + # --- hydr_geom_relation --- + water_depth=row.wassertiefe, + water_surface=row.wasseroberflaeche, + wet_cross_section_area=row.benetztequerschnittsflaeche, + fk_hydr_geometry=self.get_pk(row.hydr_geometrieref__REL), + ) + self.session_tww.add(hydr_geom_relation) + print(".", end="") + + def _import_hydr_geometrie(self): + for row in self.session_interlis.query(self.model_classes_interlis.hydr_geometrie): + hydr_geometry = self.create_or_update( + self.model_classes_tww_od.hydr_geometry, + **self.base_common(row), + # --- hydr_geometry --- + remark=row.bemerkung, + storage_volume=row.stauraum, + usable_capacity_storage=row.nutzinhalt_fangteil, + usable_capacity_treatment=row.nutzinhalt_klaerteil, + utilisable_capacity=row.nutzinhalt, + volume_pump_sump=row.volumen_pumpensumpf, + ) + self.session_tww.add(hydr_geometry) + print(".", end="") + + def _import_hydr_kennwerte(self): + for row in self.session_interlis.query(self.model_classes_interlis.hydr_kennwerte): + hydraulic_char_data = self.create_or_update( + self.model_classes_tww_od.hydraulic_char_data, + **self.base_common(row), + # --- hydraulic_char_data --- + qon=row.qan, + remark=row.bemerkung, + status=self.get_vl_code( + self.model_classes_tww_vl.hydraulic_char_data_status, row.astatus + ), + aggregate_number=row.aggregatezahl, + delivery_height_geodaetic=row.foerderhoehe_geodaetisch, + identifier=row.bezeichnung, + is_overflowing=self.get_vl_code( + self.model_classes_tww_vl.hydraulic_char_data_is_overflowing, row.springt_an + ), + main_weir_kind=self.get_vl_code( + self.model_classes_tww_vl.hydraulic_char_data_main_weir_kind, row.hauptwehrart + ), + overcharge=row.mehrbelastung, + overflow_duration=row.ueberlaufdauer, + overflow_freight=row.ueberlauffracht, + overflow_frequency=row.ueberlaufhaeufigkeit, + overflow_volume=row.ueberlaufmenge, + pump_characteristics=self.get_vl_code( + self.model_classes_tww_vl.hydraulic_char_data_pump_characteristics, + row.pumpenregime, + ), + pump_flow_max=row.foerderstrommax, + pump_flow_min=row.foerderstrommin, + q_discharge=row.qab, + fk_wastewater_node=self.get_pk(row.abwasserknotenref__REL), + fk_overflow_char=self.get_pk(row.ueberlaufcharakteristikref__REL), + fk_primary_direction=self.get_pk(row.primaerrichtungref__REL), + ) + self.session_tww.add(hydraulic_char_data) + print(".", end="") + + def _import_klara(self): + for row in self.session_interlis.query(self.model_classes_interlis.klara): + small_treatment_plant = self.create_or_update( + self.model_classes_tww_od.small_treatment_plant, + **self.base_common(row), + **self.wastewater_structure_common(row), + # --- small_treatment_plant --- + approval_number=row.bewilligungsnummer, + function=self.get_vl_code( + self.model_classes_tww_vl.small_treatment_plant_function, row.funktion + ), + installation_number=row.anlagenummer, + remote_monitoring=self.get_vl_code( + self.model_classes_tww_vl.small_treatment_plant_remote_monitoring, + row.fernueberwachung, + ), + ) + self.session_tww.add(small_treatment_plant) + print(".", end="") + + def _import_landwirtschaftsbetrieb(self): + for row in self.session_interlis.query(self.model_classes_interlis.landwirtschaftsbetrieb): + farm = self.create_or_update( + self.model_classes_tww_od.farm, + **self.base_common(row), + # --- farm --- + agriculture_arable_surface=row.nutzflaechelandwirtschaft, + cesspit_comment=row.guellegrubebemerkung, + cesspit_volume=self.get_vl_code( + self.model_classes_tww_vl.farm_cesspit_volume, row.guellegrubevolumen + ), + cesspit_volume_current=row.guellegrubevolumen_ist, + cesspit_volume_nominal=row.guellegrubevolumen_soll, + cesspit_volume_ww_treated=row.guellegrubevolumen_sw_behandelt, + cesspit_year_of_approval=row.guellegrubebewilligungsjahr, + conformity=self.get_vl_code( + self.model_classes_tww_vl.farm_conformity, row.konformitaet + ), + continuance=self.get_vl_code( + self.model_classes_tww_vl.farm_continuance, row.fortbestand + ), + continuance_comment=row.fortbestandbemerkung, + dung_heap_area_current=row.mistplatzflaeche_ist, + dung_heap_area_nominal=row.mistplatzflaeche_soll, + remark=row.bemerkung, + shepherds_hut_comment=row.hirtenhuettebemerkung, + shepherds_hut_population_equivalent=row.hirtenhuetteegw, + shepherds_hut_wastewater=self.get_vl_code( + self.model_classes_tww_vl.farm_shepherds_hut_wastewater, + row.hirtenhuetteabwasser, + ), + stable_cattle=self.get_vl_code( + self.model_classes_tww_vl.farm_stable_cattle, row.stallvieh + ), + stable_cattle_equivalent_other_cattle=row.stallgrossvieheinheit_fremdvieh, + stable_cattle_equivalent_own_cattle=row.stallgrossvieheinheit_eigenesvieh, + fk_building_group=self.get_pk(row.gebaeudegrupperef__REL), + ) + self.session_tww.add(farm) + print(".", end="") + + def _import_leapingwehr(self): + for row in self.session_interlis.query(self.model_classes_interlis.leapingwehr): + leapingweir = self.create_or_update( + self.model_classes_tww_od.leapingweir, + **self.base_common(row), + **self.overflow_common(row), + # --- leapingweir --- + length=row.laenge, + opening_shape=self.get_vl_code( + self.model_classes_tww_vl.leapingweir_opening_shape, row.oeffnungsform + ), + width=row.breite, + ) + self.session_tww.add(leapingweir) + print(".", end="") + + def _import_massnahme(self): + for row in self.session_interlis.query(self.model_classes_interlis.massnahme): + measure = self.create_or_update( + self.model_classes_tww_od.measure, + **self.base_common(row), + # --- measure --- + date_entry=row.datum_eingang, + description=row.beschreibung, + category=self.get_vl_code( + self.model_classes_tww_vl.measure_category, row.kategorie + ), + identifier=row.bezeichnung, + intervention_demand=row.handlungsbedarf, + line_geometry=row.linie, + link=row.verweis, + perimeter_geometry=row.perimeter, + priority=self.get_vl_code( + self.model_classes_tww_vl.measure_priority, row.prioritaet + ), + remark=row.bemerkung, + status=self.get_vl_code(self.model_classes_tww_vl.measure_status, row.astatus), + symbolpos_geometry=row.symbolpos, + total_cost=row.gesamtkosten, + year_implementation_effective=row.jahr_umsetzung_effektiv, + year_implementation_planned=row.jahr_umsetzung_geplant, + fk_responsible_entity=row.traegerschaftref, + fk_responsible_start=row.verantwortlich_ausloesungref, + ) + self.session_tww.add(measure) + print(".", end="") + + def _import_mechanischevorreinigung(self): + for row in self.session_interlis.query( + self.model_classes_interlis.mechanischevorreinigung + ): + mechanical_pretreatment = self.create_or_update( + self.model_classes_tww_od.mechanical_pretreatment, + **self.base_common(row), + # --- mechanical_pretreatment --- + identifier=row.bezeichnung, + kind=self.get_vl_code( + self.model_classes_tww_vl.mechanical_pretreatment_kind, row.art + ), + remark=row.bemerkung, + fk_wastewater_structure=self.get_pk(row.abwasserbauwerkref__REL), + ) + self.session_tww.add(mechanical_pretreatment) + print(".", end="") + + def _import_messgeraet(self): + for row in self.session_interlis.query(self.model_classes_interlis.messgeraet): + measuring_device = self.create_or_update( + self.model_classes_tww_od.measuring_device, + **self.base_common(row), + # --- measuring_device --- + serial_number=row.seriennummer, + brand=row.fabrikat, + identifier=row.bezeichnung, + kind=self.get_vl_code(self.model_classes_tww_vl.measuring_device_kind, row.art), + remark=row.bemerkung, + fk_measuring_point=self.get_pk(row.messstelleref__REL), + ) + self.session_tww.add(measuring_device) + print(".", end="") + + def _import_messreihe(self): + for row in self.session_interlis.query(self.model_classes_interlis.messreihe): + measurement_series = self.create_or_update( + self.model_classes_tww_od.measurement_series, + **self.base_common(row), + # --- measurement_series --- + dimension=row.dimension, + identifier=row.bezeichnung, + kind=self.get_vl_code(self.model_classes_tww_vl.measurement_series_kind, row.art), + remark=row.bemerkung, + fk_measuring_point=self.get_pk(row.messstelleref__REL), + fk_wastewater_networkelement=self.get_pk(row.abwassernetzelementref__REL), + ) + self.session_tww.add(measurement_series) + print(".", end="") + + def _import_messresultat(self): + for row in self.session_interlis.query(self.model_classes_interlis.messresultat): + measurement_result = self.create_or_update( + self.model_classes_tww_od.measurement_result, + **self.base_common(row), + # --- measurement_result --- + identifier=row.bezeichnung, + measurement_type=self.get_vl_code( + self.model_classes_tww_vl.measurement_result_measurement_type, row.messart + ), + measuring_duration=row.messdauer, + remark=row.bemerkung, + time=row.zeit, + value=row.wert, + fk_measuring_device=self.get_pk(row.messgeraetref__REL), + fk_measurement_series=self.get_pk(row.messreiheref__REL), + ) + self.session_tww.add(measurement_result) + print(".", end="") + + def _import_messstelle(self): + for row in self.session_interlis.query(self.model_classes_interlis.messstelle): + measuring_point = self.create_or_update( + self.model_classes_tww_od.measuring_point, + **self.base_common(row), + # --- measuring_point --- + purpose=row.zweck, + remark=row.bemerkung, + damming_device=row.staukoerper, + identifier=row.bezeichnung, + kind=row.art, + situation_geometry=row.lage, + fk_operator=row.betreiberref, + fk_waste_water_treatment_plant=self.get_pk(row.abwasserreinigungsanlageref__REL), + fk_wastewater_structure=self.get_pk(row.abwasserbauwerkref__REL), + ) + self.session_tww.add(measuring_point) + print(".", end="") + + def _import_mutation(self): + for row in self.session_interlis.query(self.model_classes_interlis.mutation): + mutation = self.create_or_update( + self.model_classes_tww_od.mutation, + **self.base_common(row), + # --- mutation --- + attribute=row.attribut, + classname=row.klasse, + date_mutation=row.mutationsdatum, + date_time=row.aufnahmedatum, + kind=self.get_vl_code(self.model_classes_tww_vl.mutation_kind, row.art), + last_value=row.letzter_wert, + object=row.objekt, + recorded_by=row.aufnehmer, + remark=row.bemerkung, + system_user=row.systembenutzer, + ) + self.session_tww.add(mutation) + print(".", end="") + + def _import_reservoir(self): + for row in self.session_interlis.query(self.model_classes_interlis.reservoir): + reservoir = self.create_or_update( + self.model_classes_tww_od.reservoir, + **self.base_common(row), + **self.connection_object_common(row), + # --- reservoir --- + location_name=row.standortname, + situation_geometry=row.lage, + ) + self.session_tww.add(reservoir) + print(".", end="") + + def _import_retentionskoerper(self): + for row in self.session_interlis.query(self.model_classes_interlis.retentionskoerper): + retention_body = self.create_or_update( + self.model_classes_tww_od.retention_body, + **self.base_common(row), + # --- retention_body --- + identifier=row.bezeichnung, + kind=self.get_vl_code(self.model_classes_tww_vl.retention_body_kind, row.art), + remark=row.bemerkung, + volume=row.retention_volumen, + fk_infiltration_installation=self.get_pk(row.versickerungsanlageref__REL), + ) + self.session_tww.add(retention_body) + print(".", end="") + + def _import_rohrprofil_geometrie(self): + for row in self.session_interlis.query(self.model_classes_interlis.rohrprofil_geometrie): + profile_geometry = self.create_or_update( + self.model_classes_tww_od.profile_geometry, + **self.base_common(row), + # --- profile_geometry --- + sequence=row.reihenfolge, + x=row.x, + y=row.y, + fk_pipe_profile=self.get_pk(row.rohrprofilref__REL), + ) + self.session_tww.add(profile_geometry) + print(".", end="") + + def _import_rueckstausicherung(self): + for row in self.session_interlis.query(self.model_classes_interlis.rueckstausicherung): + backflow_prevention = self.create_or_update( + self.model_classes_tww_od.backflow_prevention, + **self.base_common(row), + **self.structure_part_common(row), + # --- backflow_prevention --- + gross_costs=row.bruttokosten, + kind=self.get_vl_code(self.model_classes_tww_vl.backflow_prevention_kind, row.art), + year_of_replacement=row.ersatzjahr, + fk_throttle_shut_off_unit=self.get_pk(row.absperr_drosselorganref), + fk_pump=self.get_pk(row.foerderaggregatref), + ) + self.session_tww.add(backflow_prevention) + print(".", end="") + + def _import_stammkarte(self): + for row in self.session_interlis.query(self.model_classes_interlis.stammkarte): + log_card = self.create_or_update( + self.model_classes_tww_od.log_card, + **self.base_common(row), + # --- log_card --- + control_remote_control=self.get_vl_code( + self.model_classes_tww_vl.log_card_control_remote_control, + row.steuerung_fernwirkung, + ), + information_source=self.get_vl_code( + self.model_classes_tww_vl.log_card_information_source, row.informationsquelle + ), + person_in_charge=row.sachbearbeiter, + remark=row.bemerkung, + fk_pwwf_wastewater_node=self.get_pk(row.paa_knotenref__REL), + fk_agency=row.bueroref, + fk_location_municipality=row.standortgemeinderef, + ) + self.session_tww.add(log_card) + print(".", end="") + + def _import_streichwehr(self): + for row in self.session_interlis.query(self.model_classes_interlis.streichwehr): + prank_weir = self.create_or_update( + self.model_classes_tww_od.prank_weir, + **self.base_common(row), + **self.overflow_common(row), + # --- prank_weir --- + hydraulic_overflow_length=row.hydrueberfalllaenge, + level_max=row.kotemax, + level_min=row.kotemin, + weir_edge=self.get_vl_code( + self.model_classes_tww_vl.prank_weir_weir_edge, row.ueberfallkante + ), + weir_kind=self.get_vl_code( + self.model_classes_tww_vl.prank_weir_weir_kind, row.wehr_art + ), + ) + self.session_tww.add(prank_weir) + print(".", end="") + + def _import_ueberlaufcharakteristik(self): + for row in self.session_interlis.query( + self.model_classes_interlis.ueberlaufcharakteristik + ): + overflow_char = self.create_or_update( + self.model_classes_tww_od.overflow_char, + **self.base_common(row), + # --- overflow_char --- + identifier=row.bezeichnung, + kind_overflow_char=self.get_vl_code( + self.model_classes_tww_vl.overflow_char_kind_overflow_char, row.kennlinie_typ + ), + remark=row.bemerkung, + ) + self.session_tww.add(overflow_char) + print(".", end="") + + def _import_unterhalt(self): + for row in self.session_interlis.query(self.model_classes_interlis.unterhalt): + maintenance = self.create_or_update( + self.model_classes_tww_od.maintenance, + **self.base_common(row), + **self.maintenance_event_common(row), + # --- maintenance --- + kind=self.get_vl_code(self.model_classes_tww_vl.maintenance_kind, row.art), + ) + self.session_tww.add(maintenance) + print(".", end="") + + def _import_versickerungsbereich(self): + for row in self.session_interlis.query(self.model_classes_interlis.versickerungsbereich): + infiltration_zone = self.create_or_update( + self.model_classes_tww_od.infiltration_zone, + **self.base_common(row), + **self.zone_common(row), + # --- infiltration_zone --- + infiltration_capacity=self.get_vl_code( + self.model_classes_tww_vl.infiltration_zone_infiltration_capacity, + row.versickerungsmoeglichkeit, + ), + perimeter_geometry=row.perimeter, + ) + self.session_tww.add(infiltration_zone) + print(".", end="") + def _import_rohrprofil(self): for row in self.session_interlis.query(self.model_classes_interlis.rohrprofil): pipe_profile = self.create_or_update( @@ -648,7 +1870,7 @@ def _import_haltungspunkt(self): identifier=row.bezeichnung, level=row.kote, outlet_shape=self.get_vl_code( - self.model_classes_tww_od.reach_point_outlet_shape, row.hoehengenauigkeit + self.model_classes_tww_od.reach_point_outlet_shape, row.auslaufform ), position_of_connection=row.lage_anschluss, remark=row.bemerkung, @@ -797,6 +2019,18 @@ def _import_bankett(self): self.session_tww.add(benching) print(".", end="") + def _import_spuelstutzen(self): + for row in self.session_interlis.query(self.model_classes_interlis.spuelstutzen): + flushing_nozzle = self.create_or_update( + self.model_classes_tww_od.flushing_nozzle, + **self.base_common(row), + **self.structure_part_common(row), + # --- flushing_nozzle --- + situation_geometry=row.lage, + ) + self.session_tww.add(flushing_nozzle) + print(".", end="") + def _import_untersuchung(self): for row in self.session_interlis.query(self.model_classes_interlis.untersuchung): logger.warning( @@ -872,9 +2106,7 @@ def _import_normschachtschaden(self): manhole_damage_end=row.schadenlageende, line_damage=row.streckenschaden, manhole_channel_distance=row.distanz, - fk_examination=row.untersuchungref__REL.t_ili_tid - if row.untersuchungref__REL - else None, + fk_examination=self.get_pk(row.untersuchungref__REL), manhole_quantification1=row.quantifizierung1, manhole_quantification2=row.quantifizierung2, single_damage_class=self.get_vl_code( @@ -912,9 +2144,7 @@ def _import_kanalschaden(self): channel_damage_end=row.schadenlageende, line_damage=row.streckenschaden, channel_distance=row.distanz, - fk_examination=row.untersuchungref__REL.t_ili_tid - if row.untersuchungref__REL - else None, + fk_examination=self.get_pk(row.untersuchungref__REL), channel_quantification1=row.quantifizierung1, channel_quantification2=row.quantifizierung2, single_damage_class=self.get_vl_code( @@ -952,7 +2182,7 @@ def _import_datei(self): self.model_classes_tww_od.file, **self.base_common(row), # --- file --- - fk_data_media=row.datentraegerref__REL.t_ili_tid, + fk_data_media=self.get_pk(row.datentraegerref__REL), identifier=row.bezeichnung, kind=self.get_vl_code(self.model_classes_tww_vl.file_kind, row.art), object=row.objekt, diff --git a/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_interlis_dss.py b/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_interlis_dss.py index bb7211685..c08f83fdb 100644 --- a/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_interlis_dss.py +++ b/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_interlis_dss.py @@ -6,6 +6,36 @@ class ModelInterlisDss(ModelInterlisSia405Abwasser): def __init__(self): super().__init__() + class anschlussobjekt(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "anschlussobjekt" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.anschlussobjekt = anschlussobjekt + + class erhaltungsereignis(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "erhaltungsereignis" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.erhaltungsereignis = erhaltungsereignis + + class oberflaechenabflussparameter(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "oberflaechenabflussparameter" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.oberflaechenabflussparameter = oberflaechenabflussparameter + + class ueberlauf(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "ueberlauf" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.ueberlauf = ueberlauf + + class zone(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "azone" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.zone = zone + class abwasserreinigungsanlage(ModelInterlisSia405Abwasser.vsa_baseclass): __tablename__ = "abwasserreinigungsanlage" __table_args__ = {"schema": config.ABWASSER_SCHEMA} @@ -41,3 +71,267 @@ class steuerungszentrale(ModelInterlisSia405Abwasser.vsa_baseclass): __table_args__ = {"schema": config.ABWASSER_SCHEMA} ModelInterlisDss.steuerungszentrale = steuerungszentrale + + class abflusslose_toilette(ModelInterlisSia405Abwasser.abwasserbauwerk): + __tablename__ = "abflusslose_toilette" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.abflusslose_toilette = abflusslose_toilette + + class absperr_drosselorgan(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "absperr_drosselorgan" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.absperr_drosselorgan = absperr_drosselorgan + + class beckenentleerung(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "beckenentleerung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.beckenentleerung = beckenentleerung + + class beckenreinigung(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "beckenreinigung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.beckenreinigung = beckenreinigung + + class biol_oekol_gesamtbeurteilung(erhaltungsereignis): + __tablename__ = "biol_oekol_gesamtbeurteilung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.biol_oekol_gesamtbeurteilung = biol_oekol_gesamtbeurteilung + + class brunnen(anschlussobjekt): + __tablename__ = "brunnen" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.brunnen = brunnen + + class ezg_parameter_allg(oberflaechenabflussparameter): + __tablename__ = "ezg_parameter_allg" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.ezg_parameter_allg = ezg_parameter_allg + + class ezg_parameter_mouse1(oberflaechenabflussparameter): + __tablename__ = "ezg_parameter_mouse1" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.ezg_parameter_mouse1 = ezg_parameter_mouse1 + + class einzelflaeche(anschlussobjekt): + __tablename__ = "einzelflaeche" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.einzelflaeche = einzelflaeche + + class einzugsgebiet(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "einzugsgebiet" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.einzugsgebiet = einzugsgebiet + + class einzugsgebiet_text(ModelInterlisSia405Abwasser.sia405_textpos): + __tablename__ = "einzugsgebiet_text" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.einzugsgebiet_text = einzugsgebiet_text + + class elektrischeeinrichtung(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "elektrischeeinrichtung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.elektrischeeinrichtung = elektrischeeinrichtung + + class elektromechanischeausruestung(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "elektromechanischeausruestung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.elektromechanischeausruestung = elektromechanischeausruestung + + class entsorgung(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "entsorgung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.entsorgung = entsorgung + + class entwaesserungssystem(zone): + __tablename__ = "entwaesserungssystem" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.entwaesserungssystem = entwaesserungssystem + + class feststoffrueckhalt(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "feststoffrueckhalt" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.feststoffrueckhalt = feststoffrueckhalt + + class foerderaggregat(ueberlauf): + __tablename__ = "foerderaggregat" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.foerderaggregat = foerderaggregat + + class gebaeude(anschlussobjekt): + __tablename__ = "gebaeude" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.gebaeude = gebaeude + + class gebaeudegruppe(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "gebaeudegruppe" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.gebaeudegruppe = gebaeudegruppe + + class gebaeudegruppe_baugwr(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "gebaeudegruppe_baugwr" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.gebaeudegruppe_baugwr = gebaeudegruppe_baugwr + + class gesamteinzugsgebiet(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "gesamteinzugsgebiet" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.gesamteinzugsgebiet = gesamteinzugsgebiet + + class hq_relation(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "hq_relation" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.hq_relation = hq_relation + + class hydr_geomrelation(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "hydr_geomrelation" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.hydr_geomrelation = hydr_geomrelation + + class hydr_geometrie(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "hydr_geometrie" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.hydr_geometrie = hydr_geometrie + + class hydr_kennwerte(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "hydr_kennwerte" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.hydr_kennwerte = hydr_kennwerte + + class klara(ModelInterlisSia405Abwasser.abwasserbauwerk): + __tablename__ = "klara" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.klara = klara + + class landwirtschaftsbetrieb(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "landwirtschaftsbetrieb" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.landwirtschaftsbetrieb = landwirtschaftsbetrieb + + class leapingwehr(ueberlauf): + __tablename__ = "leapingwehr" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.leapingwehr = leapingwehr + + class massnahme(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "massnahme" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.massnahme = massnahme + + class mechanischevorreinigung(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "mechanischevorreinigung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.mechanischevorreinigung = mechanischevorreinigung + + class messgeraet(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "messgeraet" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.messgeraet = messgeraet + + class messreihe(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "messreihe" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.messreihe = messreihe + + class messresultat(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "messresultat" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.messresultat = messresultat + + class messstelle(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "messstelle" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.messstelle = messstelle + + class mutation(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "mutation" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.mutation = mutation + + class reservoir(anschlussobjekt): + __tablename__ = "reservoir" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.reservoir = reservoir + + class retentionskoerper(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "retentionskoerper" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.retentionskoerper = retentionskoerper + + class rohrprofil_geometrie(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "rohrprofil_geometrie" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.rohrprofil_geometrie = rohrprofil_geometrie + + class rueckstausicherung(ModelInterlisSia405Abwasser.bauwerksteil): + __tablename__ = "rueckstausicherung" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.rueckstausicherung = rueckstausicherung + + class stammkarte(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "stammkarte" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.stammkarte = stammkarte + + class streichwehr(ueberlauf): + __tablename__ = "streichwehr" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.streichwehr = streichwehr + + class ueberlaufcharakteristik(ModelInterlisSia405Abwasser.vsa_baseclass): + __tablename__ = "ueberlaufcharakteristik" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.ueberlaufcharakteristik = ueberlaufcharakteristik + + class unterhalt(erhaltungsereignis): + __tablename__ = "unterhalt" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.unterhalt = unterhalt + + class versickerungsbereich(zone): + __tablename__ = "versickerungsbereich" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisDss.versickerungsbereich = versickerungsbereich diff --git a/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_interlis_sia405_abwasser.py b/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_interlis_sia405_abwasser.py index b0217d11f..53fb04892 100644 --- a/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_interlis_sia405_abwasser.py +++ b/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_interlis_sia405_abwasser.py @@ -132,6 +132,12 @@ class bankett(bauwerksteil): ModelInterlisSia405Abwasser.bankett = bankett + class spuelstutzen(bauwerksteil): + __tablename__ = "spuelstutzen" + __table_args__ = {"schema": config.ABWASSER_SCHEMA} + + ModelInterlisSia405Abwasser.spuelstutzen = spuelstutzen + # TEXTS class textpos(baseclass): diff --git a/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_tww_od.py b/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_tww_od.py index ea335343f..ff0a52beb 100644 --- a/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_tww_od.py +++ b/plugin/teksi_wastewater/interlis/interlis_model_mapping/model_tww_od.py @@ -140,3 +140,165 @@ class damage_channel(damage): __table_args__ = {"schema": config.TWW_OD_SCHEMA} ModelTwwOd.damage_channel = damage_channel + + class flushing_nozzle(structure_part): + __tablename__ = "flushing_nozzle" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.flushing_nozzle = flushing_nozzle + + class drainless_toilet(wastewater_structure): + __tablename__ = "drainless_toilet" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.drainless_toilet = drainless_toilet + + class tank_emptying(structure_part): + __tablename__ = "tank_emptying" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.tank_emptying = tank_emptying + + class tank_cleaning(structure_part): + __tablename__ = "tank_cleaning" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.tank_cleaning = tank_cleaning + + class bio_ecol_assessment(maintenance_event): + __tablename__ = "bio_ecol_assessment" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.bio_ecol_assessment = bio_ecol_assessment + + class maintenance(maintenance_event): + __tablename__ = "maintenance" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.maintenance = maintenance + + class connection_object(wastewater_networkelement): + __tablename__ = "connection_object" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.connection_object = connection_object + + class fountain(connection_object): + __tablename__ = "fountain" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.fountain = fountain + + class reservoir(connection_object): + __tablename__ = "reservoir" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.reservoir = reservoir + + class building(connection_object): + __tablename__ = "building" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.building = building + + class individual_surface(connection_object): + __tablename__ = "individual_surface" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.individual_surface = individual_surface + + class catchment_area(self.Base): + __tablename__ = "catchment_area" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.catchment_area = catchment_area + + class surface_runoff_parameters(catchment_area): + __tablename__ = "surface_runoff_parameters" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.surface_runoff_parameters = surface_runoff_parameters + + class param_ca_general(surface_runoff_parameters): + __tablename__ = "param_ca_general" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.param_ca_general = param_ca_general + + class param_ca_mouse1(surface_runoff_parameters): + __tablename__ = "param_ca_mouse1" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.param_ca_mouse1 = param_ca_mouse1 + + class electric_equipment(structure_part): + __tablename__ = "electric_equipment" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.electric_equipment = electric_equipment + + class electromechanical_equipment(structure_part): + __tablename__ = "electromechanical_equipment" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.electromechanical_equipment = electromechanical_equipment + + class zone(self.Base): + __tablename__ = "zone" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.zone = zone + + class drainage_system(zone): + __tablename__ = "drainage_system" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.drainage_system = drainage_system + + class infiltration_zone(zone): + __tablename__ = "infiltration_zone" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.infiltration_zone = infiltration_zone + + class solids_retention(structure_part): + __tablename__ = "solids_retention" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.solids_retention = solids_retention + + class overflow(self.Base): + __tablename__ = "overflow" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.overflow = overflow + + class pump(overflow): + __tablename__ = "pump" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.pump = pump + + class leapingweir(overflow): + __tablename__ = "leapingweir" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.leapingweir = leapingweir + + class prank_weir(overflow): + __tablename__ = "prank_weir" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.prank_weir = prank_weir + + class small_treatment_plant(wastewater_structure): + __tablename__ = "small_treatment_plant" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.small_treatment_plant = small_treatment_plant + + class backflow_prevention(structure_part): + __tablename__ = "backflow_prevention" + __table_args__ = {"schema": config.TWW_OD_SCHEMA} + + ModelTwwOd.backflow_prevention = backflow_prevention diff --git a/plugin/teksi_wastewater/tests/data/test-dataset-DSS.xtf b/plugin/teksi_wastewater/tests/data/test-dataset-DSS.xtf index 13e197b6b..bbf82755d 100644 --- a/plugin/teksi_wastewater/tests/data/test-dataset-DSS.xtf +++ b/plugin/teksi_wastewater/tests/data/test-dataset-DSS.xtf @@ -10788,9 +10788,9 @@ - Mittelaletsch3 + Mittelaletsch5 1 - Mittelaletsch3 + Mittelaletsch5 2 0 2 @@ -105958,7 +105958,7 @@ - +