diff --git a/README.md b/README.rst similarity index 65% rename from README.md rename to README.rst index cbafd265..2740d6be 100644 --- a/README.md +++ b/README.rst @@ -1,13 +1,25 @@ -# eGo dataprocessing -(geo)data processing, database setup, data validation +.. image:: https://readthedocs.org/projects/data-processing/badge/?version=feature-readthedocs + :target: http://data-processing.readthedocs.io/en/latest/?badge=feature-readthedocs + :alt: Documentation Status + +.. image:: https://openegoproject.files.wordpress.com/2017/02/open_ego_logo_breit.png?w=400 + -# Copyleft +=================== +eGo dataprocessing +=================== +(geo)data processing, database setup, data validation + +========= +Copyleft +========= Code licensed under "GNU Affero General Public License Version 3 (AGPL-3.0)" It is a collaborative work with several copyright owner: Cite as "eGo dataprocessing © Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems © Europa-Universität Flensburg, Centre for Sustainable Energy Systems © Reiner Lemoine Institut © DLR Institute for Networked Energy Systems" -## Installation +Installation +============ Installation of latest release @@ -21,14 +33,17 @@ Installation (of developer version) via pip on linux systems as follows sudo pip3 install -e ``` -### Troubleshooting +Troubleshooting + +On Windows +*********** -#### On Windows 1. __Problem__: Installation of required package shapely fails. __Solution__: Install pre-build wheel from [here](http://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely) - ## Run +Run +==== You can run data processing by calling command-line script diff --git a/bpmn/eGo_bpmn_palette.graphml b/bpmn/eGo_bpmn_palette.graphml deleted file mode 100644 index bb7bcf4d..00000000 --- a/bpmn/eGo_bpmn_palette.graphml +++ /dev/null @@ -1,2106 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - Pool - Lane 1 - - - - - - - Lane 2 - - - - - - - Lane 3 - - - - - - - Column 1 - - - - - - - Column 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pool - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pool - Lane 1 - - - - - - - Lane 2 - - - - - - - Lane 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pool - Column 1 - - - - - - - Column 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - name - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - II. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dataprocessing/eGo_data_processing.py b/dataprocessing/eGo_data_processing.py index 610bf553..e1e71179 100644 --- a/dataprocessing/eGo_data_processing.py +++ b/dataprocessing/eGo_data_processing.py @@ -4,7 +4,7 @@ Also see corresponding BPML diagram. """ -__copyright__ = "Reiner Lemoine Institut gGmbH" +__copyright__ = "Reiner Lemoine Institut" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" __url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" __author__ = "gplssm, Ludee" @@ -40,58 +40,54 @@ def data_processing(): 'python_scripts')) snippets = [ - ## VACUUM FULL -# 'ego_dp_vacuum_full.sql', - - ## INPUT DATA CHECK eGoPP - 'ego_dp_structure_input_verification.sql', # Check input tables and versions from eGoPP - - ## SUBSTATION - 'ego_dp_substation_hvmv.sql', # Abstract HVMV Substations of the high voltage level from OSM - 'ego_dp_substation_ehv.sql', # Abstract EHV Substations of the extra high voltage level from OSM - 'ego_dp_substation_otg.sql', # Assign osmTGmod-id to HVMV and EHV substations - 'ego_dp_substation_hvmv_voronoi.sql', # HVMV Voronoi cells based on HVMV substations - 'ego_dp_substation_ehv_voronoi.sql', # EHV Voronoi cells based on EHV substations - - ## GRIDDISTRICT - 'ego_dp_mv_griddistrict.sql', # MV Griddistricts from municipalities and Voronoi cells - 'ego_dp_substation_id_to_generator.sql', # Assign subst_id to pp lists - - ## LOADAREA - 'ego_dp_loadarea_landuse.sql', # OSM landuse sector - 'ego_dp_loadarea_industry_consumer.sql', # Industry consumer - 'ego_dp_loadarea_loads.sql', # Loads from OSM landuse - 'ego_dp_loadarea_census.sql', # Loads from Census - 'ego_dp_loadarea_loadmelt.sql', # Melt OSM landuse and Zensus loads - 'ego_dp_loadarea_loadcut_griddistrict.sql', # Cut Loadarea with MV Griddistrict - 'ego_dp_loadarea_loadcut_voronoi.sql', # Cut Loadarea with MV Voronoi cells - 'ego_dp_loadarea_consumption.sql', # Allocate consumption to Loadareas - 'ego_dp_loadarea_peakload.sql', # Peak loads per Loadarea - 'ego_dp_loadarea_griddistrict_results.sql', # Results for MV Griddistrict - 'ego_dp_loadarea_statistic.sql', # Results and statistics for eGoDP - - ## LOWVOLTAGE - 'ego_dp_lv_substation.sql', # MVLV Substation inside Loadarea - 'ego_dp_lv_substation_voronoi.sql', # MVLV Substation Voronoi - 'ego_dp_lv_griddistrict.sql', # LV Griddistrict - 'ego_dp_lv_peakload.sql', # LV OSM areas - 'ego_dp_lv_consumption_peakload.sql', # LV Consumption and Peakload - - ## REA - 'rea/ego_dp_lattice_500m.sql', # lattice (point grid) 500m - 'rea/ego_dp_lattice_50m.sql', # lattice (point grid) 50m - 'rea/ego_dp_rea_wpa_per_mvgd.sql', # wind potential area - - 'rea/ego_dp_rea_lattice_per_area_500m.sql', # prepare 500m lattice - 'rea/ego_dp_rea_lattice_per_area_50m.sql', # prepare 50m lattice - 'rea/ego_dp_rea_setup.sql', # setup table for allocation - 'rea/ego_dp_rea_m1.sql', # M1 biomass and solar to farmyard - 'rea/ego_dp_rea_m2.sql', # M2 windfarms - 'rea/ego_dp_rea_m3.sql', # M3 wind turbines to wpa - 'rea/ego_dp_rea_m4.sql', # M4 other and rest - 'rea/ego_dp_rea_m5.sql', # M5 LV to LA - 'rea/ego_dp_rea_results.sql', # results and statistics - + ## INPUT DATA CHECK (eGoPP) + 'ego_dp_structure_input_verification.sql', # Input verification (eGoPP) + + ## SUBSTATION + 'ego_dp_substation_hvmv.sql', # Abstract HVMV Substations of the high voltage level from OSM + 'ego_dp_substation_ehv.sql', # Abstract EHV Substations of the extra high voltage level from OSM + 'ego_dp_substation_otg.sql', # Assign osmTGmod-id to HVMV and EHV substations + 'ego_dp_substation_hvmv_voronoi.sql', # HVMV Voronoi cells based on HVMV substations + 'ego_dp_substation_ehv_voronoi.sql', # EHV Voronoi cells based on EHV substations + + ## GRIDDISTRICT + 'ego_dp_mv_griddistrict.sql', # MV GridDistricts from municipalities and Voronoi cells + 'ego_dp_substation_id_to_generator.sql', # Assign Substation ID (subst_id) to Generator (Conventional and Renewable) + + ## LOADAREA + 'ego_dp_loadarea_landuse.sql', # OSM landuse sectors + 'ego_dp_loadarea_industry_consumer.sql', # OSM Industry consumer + 'ego_dp_loadarea_loads.sql', # OSM Loads from landuse + 'ego_dp_loadarea_census.sql', # Loads from Census 2011 + 'ego_dp_loadarea_loadmelt.sql', # Melt loads from OSM landuse and Census 2011 + 'ego_dp_loadarea_loadcut_griddistrict.sql', # Cut Loadarea with MV Griddistrict + 'ego_dp_loadarea_loadcut_voronoi.sql', # Cut Loadarea with MV Voronoi cells + 'ego_dp_loadarea_consumption.sql', # Allocate consumption to Loadareas + 'ego_dp_loadarea_peakload.sql', # Peak loads per Loadarea + 'ego_dp_loadarea_griddistrict_results.sql', # Results for MV Griddistrict + 'ego_dp_loadarea_statistic.sql', # Results and statistics for eGoDP data + + ## LOWVOLTAGE + 'ego_dp_lv_substation.sql', # MVLV Substation (ONT) + 'ego_dp_lv_substation_voronoi.sql', # MVLV Substation Voronoi + 'ego_dp_lv_loadcut.sql' # LV Loadcut + 'ego_dp_lv_griddistrict.sql', # LV Griddistrict + 'ego_dp_lv_consumption_peakload.sql', # LV Consumption and Peakload + + ## REA + 'rea/ego_dp_lattice_500m.sql', # Lattice (point grid) 500m + 'rea/ego_dp_lattice_50m.sql', # Lattice (point grid) 50m + 'rea/ego_dp_rea_wpa_per_mvgd.sql', # Wind potential area (WPA) + 'rea/ego_dp_rea_lattice_per_area_500m.sql', # Prepare 500m lattice + 'rea/ego_dp_rea_lattice_per_area_50m.sql', # Prepare 50m lattice + 'rea/ego_dp_rea_setup.sql', # Setup tables for REA + 'rea/ego_dp_rea_m1.sql', # M1 biomass and solar to OSM agricultural + 'rea/ego_dp_rea_m2.sql', # M2 wind farms + 'rea/ego_dp_rea_m3.sql', # M3 wind turbines to WPA + 'rea/ego_dp_rea_m4.sql', # M4 other and rest + 'rea/ego_dp_rea_m5.sql', # M5 LV to Loadarea + 'rea/ego_dp_rea_results.sql', # Results and statistics + ## POWERFLOW 'ego_dp_powerflow_assignment_otgid.sql', # assign otg_id to pp lists 'ego_dp_powerflow_assignment_unid.sql', # create a unified_id over all pp (res and conv) @@ -100,6 +96,7 @@ def data_processing(): 'ego_dp_powerflow_hv_setup.sql', # Set schema/tables for EHV/HV powerflow calculations up 'ego_dp_powerflow_osmtgmod_to_pypsa.sql', # Include data from osmTGmod into EHV/HV powerflow schema 'ego_dp_powerflow_electrical_neighbour.sql', # Create border crossing lines and buses in neighbouring countries + 'ego_dp_powerflow_fix_ehv_subnetworks.sql', # Fix topological errors in eHV grid 'ego_dp_powerflow_grid_future_scenarios.sql', # Copy grid to future scenarios 'ego_dp_powerflow_assignment_generator.sql', # Assign generators to corresponding substation (SQ, NEP2035, eGo100) 'ego_dp_powerflow_assignment_load.sql', # Assign loads to their corresponding substation (SQ, NEP2035, eGo100) diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_census.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_census.sql index 3c3d24d2..39be1000 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_census.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_census.sql @@ -1,11 +1,12 @@ /* -census 2011 population per ha -Identify population in osm loads - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +Loads from Census 2011 +Include Census 2011 population per ha. +Identify population in OSM loads. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ @@ -62,7 +63,7 @@ DELETE FROM model_draft.ego_demand_la_zensus AS lp WHERE lp.inside_la IS TRUE; -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_la_zensus OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_la_zensus OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_demand_la_zensus IS '{ @@ -96,42 +97,19 @@ INSERT INTO model_draft.ego_demand_la_zensus_cluster(geom) ORDER BY gid; -- index gist (geom) -CREATE INDEX ego_demand_la_zensus_cluster_geom_idx - ON model_draft.ego_demand_la_zensus_cluster USING GIST (geom); - --- cluster data -UPDATE model_draft.ego_demand_la_zensus_cluster AS t1 - SET zensus_sum = t2.zensus_sum, - area_ha = t2.area_ha, - geom_buffer = t2.geom_buffer, - geom_centroid = t2.geom_centroid, - geom_surfacepoint = t2.geom_surfacepoint - FROM ( - SELECT cl.cid AS cid, - SUM(lp.population) AS zensus_sum, - COUNT(lp.geom) AS area_ha, - ST_BUFFER(cl.geom, 100) AS geom_buffer, - ST_Centroid(cl.geom) AS geom_centroid, - ST_PointOnSurface(cl.geom) AS geom_surfacepoint - FROM model_draft.ego_demand_la_zensus AS lp, - model_draft.ego_demand_la_zensus_cluster AS cl - WHERE cl.geom && lp.geom AND - ST_CONTAINS(cl.geom,lp.geom) - GROUP BY cl.cid - ORDER BY cl.cid - ) AS t2 - WHERE t1.cid = t2.cid; +CREATE INDEX ego_demand_la_zensus_cluster_geom_idx + ON model_draft.ego_demand_la_zensus_cluster USING GIST (geom); -- index gist (geom_centroid) -CREATE INDEX ego_demand_la_zensus_cluster_geom_centroid_idx - ON model_draft.ego_demand_la_zensus_cluster USING GIST (geom_centroid); +CREATE INDEX ego_demand_la_zensus_cluster_geom_centroid_idx + ON model_draft.ego_demand_la_zensus_cluster USING GIST (geom_centroid); -- index gist (geom_surfacepoint) -CREATE INDEX ego_demand_la_zensus_cluster_geom_surfacepoint_idx - ON model_draft.ego_demand_la_zensus_cluster USING GIST (geom_surfacepoint); +CREATE INDEX ego_demand_la_zensus_cluster_geom_surfacepoint_idx + ON model_draft.ego_demand_la_zensus_cluster USING GIST (geom_surfacepoint); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_la_zensus_cluster OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_la_zensus_cluster OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_demand_la_zensus_cluster IS '{ @@ -139,8 +117,33 @@ COMMENT ON TABLE model_draft.ego_demand_la_zensus_cluster IS '{ "version": "v0.3.0", "published": "none" }'; --- select description -SELECT obj_description('model_draft.ego_demand_la_zensus_cluster' ::regclass) ::json; +-- insert cluster +INSERT INTO model_draft.ego_demand_la_zensus_cluster(geom) + SELECT (ST_DUMP(ST_MULTI(ST_UNION(grid.geom)))).geom ::geometry(Polygon,3035) AS geom + FROM model_draft.ego_demand_la_zensus AS grid; + +-- cluster data +UPDATE model_draft.ego_demand_la_zensus_cluster AS t1 + SET zensus_sum = t2.zensus_sum, + area_ha = t2.area_ha, + geom_buffer = t2.geom_buffer, + geom_centroid = t2.geom_centroid, + geom_surfacepoint = t2.geom_surfacepoint + FROM ( + SELECT cl.cid AS cid, + SUM(lp.population) AS zensus_sum, + COUNT(lp.geom) AS area_ha, + ST_BUFFER(cl.geom, 100) AS geom_buffer, + ST_Centroid(cl.geom) AS geom_centroid, + ST_PointOnSurface(cl.geom) AS geom_surfacepoint + FROM model_draft.ego_demand_la_zensus AS lp, + model_draft.ego_demand_la_zensus_cluster AS cl + WHERE cl.geom && lp.geom AND + ST_CONTAINS(cl.geom,lp.geom) + GROUP BY cl.cid + ORDER BY cl.cid + ) AS t2 + WHERE t1.cid = t2.cid; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_demand_la_zensus_cluster','ego_dp_loadarea_census.sql',' '); @@ -170,7 +173,7 @@ CREATE MATERIALIZED VIEW model_draft.ego_society_zensus_per_la_mview AS FROM model_draft.ego_demand_la_zensus_cluster; -- grant (oeuser) -ALTER TABLE model_draft.ego_society_zensus_per_la_mview OWNER TO oeuser; +ALTER TABLE model_draft.ego_society_zensus_per_la_mview OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_society_zensus_per_la_mview IS '{ diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_consumption.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_consumption.sql index 7a55abd4..c72372be 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_consumption.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_consumption.sql @@ -1,10 +1,10 @@ /* -consumption per loadarea +Allocate consumption to Loadareas -__copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "IlkaCu, Ludee" +__copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "IlkaCu, Ludee" */ @@ -16,137 +16,131 @@ SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_loadarea','eg -- landuse area per district ALTER TABLE model_draft.ego_demand_per_district - DROP COLUMN IF EXISTS area_retail CASCADE, - ADD COLUMN area_retail double precision, - DROP COLUMN IF EXISTS area_agriculture CASCADE, - ADD COLUMN area_agriculture double precision, - DROP COLUMN IF EXISTS area_tertiary_sector CASCADE, - ADD COLUMN area_tertiary_sector double precision; + DROP COLUMN IF EXISTS area_retail CASCADE, + ADD COLUMN area_retail double precision, + DROP COLUMN IF EXISTS area_agriculture CASCADE, + ADD COLUMN area_agriculture double precision, + DROP COLUMN IF EXISTS area_tertiary_sector CASCADE, + ADD COLUMN area_tertiary_sector double precision; -- retail area per district UPDATE model_draft.ego_demand_per_district a - SET area_retail = result.sum - FROM - ( - SELECT - sum(coalesce(sector_area_retail,0)), - substr(nuts,1,5) - FROM model_draft.ego_demand_loadarea - GROUP BY substr(nuts,1,5) - ) as result - WHERE result.substr = substr(a.eu_code,1,5); + SET area_retail = result.sum + FROM ( + SELECT + sum(coalesce(sector_area_retail,0)), + substr(nuts,1,5) + FROM model_draft.ego_demand_loadarea + GROUP BY substr(nuts,1,5) + ) as result + WHERE result.substr = substr(a.eu_code,1,5); -- agricultural area per district UPDATE model_draft.ego_demand_per_district a - SET area_agriculture = result.sum - FROM - ( - SELECT - sum(coalesce(sector_area_agricultural,0)), - substr(nuts,1,5) - FROM model_draft.ego_demand_loadarea - GROUP BY substr(nuts,1,5) - ) as result - WHERE result.substr = substr(a.eu_code,1,5); + SET area_agriculture = result.sum + FROM ( + SELECT + sum(coalesce(sector_area_agricultural,0)), + substr(nuts,1,5) + FROM model_draft.ego_demand_loadarea + GROUP BY substr(nuts,1,5) + ) as result + WHERE result.substr = substr(a.eu_code,1,5); -- area of tertiary sector by adding agricultural and retail area up UPDATE model_draft.ego_demand_per_district - SET area_tertiary_sector = coalesce(area_retail,0) + coalesce(area_agriculture,0); + SET area_tertiary_sector = coalesce(area_retail,0) + coalesce(area_agriculture,0); -- sector consumption of industry per loadarea UPDATE model_draft.ego_demand_loadarea a - SET sector_consumption_industrial = sub.result - FROM - ( - SELECT - c.id, - b.elec_consumption_industry/nullif(b.area_industry,0) * c.sector_area_industrial as result - FROM - model_draft.ego_demand_per_district b, - model_draft.ego_demand_loadarea c - WHERE - c.nuts = b.eu_code - ) AS sub - WHERE sub.id = a.id; + SET sector_consumption_industrial = sub.result + FROM ( + SELECT + c.id, + b.elec_consumption_industry/nullif(b.area_industry,0) * c.sector_area_industrial as result + FROM + model_draft.ego_demand_per_district b, + model_draft.ego_demand_loadarea c + WHERE + c.nuts = b.eu_code + ) AS sub + WHERE sub.id = a.id; -- sector consumption of retail per loadarea UPDATE model_draft.ego_demand_loadarea a - SET sector_consumption_retail = sub.result - FROM - ( - SELECT - c.id, - b.elec_consumption_tertiary_sector/nullif(b.area_tertiary_sector,0) * c.sector_area_retail as result - FROM - model_draft.ego_demand_per_district b, - model_draft.ego_demand_loadarea c - WHERE - c.nuts = b.eu_code - ) AS sub - WHERE sub.id = a.id; + SET sector_consumption_retail = sub.result + FROM ( + SELECT + c.id, + b.elec_consumption_tertiary_sector/nullif(b.area_tertiary_sector,0) * c.sector_area_retail as result + FROM + model_draft.ego_demand_per_district b, + model_draft.ego_demand_loadarea c + WHERE + c.nuts = b.eu_code + ) AS sub + WHERE sub.id = a.id; -- sector consumption of agriculture per loadarea UPDATE model_draft.ego_demand_loadarea a - SET sector_consumption_agricultural = sub.result - FROM - ( - SELECT - c.id, - b.elec_consumption_tertiary_sector/nullif(b.area_tertiary_sector,0) * c.sector_area_agricultural as result - FROM - model_draft.ego_demand_per_district b, - model_draft.ego_demand_loadarea c - WHERE - c.nuts = b.eu_code - ) AS sub - WHERE sub.id = a.id; + SET sector_consumption_agricultural = sub.result + FROM ( + SELECT + c.id, + b.elec_consumption_tertiary_sector/nullif(b.area_tertiary_sector,0) * c.sector_area_agricultural as result + FROM + model_draft.ego_demand_per_district b, + model_draft.ego_demand_loadarea c + WHERE + c.nuts = b.eu_code + ) AS sub + WHERE sub.id = a.id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','demand','ego_demand_federalstate','ego_dp_loadarea_consumption.sql',' '); - + -- sector consumption of residential per loadarea UPDATE model_draft.ego_demand_loadarea a - SET sector_consumption_residential = sub.result - FROM - ( - SELECT - c.id, - b.elec_consumption_households_per_person * c.zensus_sum as result - FROM - demand.ego_demand_federalstate b, - model_draft.ego_demand_loadarea c - WHERE - substring(c.nuts,1,3) = substring(b.eu_code, 1,3) - - ) AS sub - WHERE sub.id = a.id; + SET sector_consumption_residential = sub.result + FROM ( + SELECT + c.id, + b.elec_consumption_households_per_person * c.zensus_sum as result + FROM + demand.ego_demand_federalstate b, + model_draft.ego_demand_loadarea c + WHERE + substring(c.nuts,1,3) = substring(b.eu_code, 1,3) + ) AS sub + WHERE sub.id = a.id; /* -- geometry in consumption table -> SELF UPDATE? UPDATE model_draft.ego_demand_loadarea a - SET geom = b.geom - FROM model_draft.ego_demand_loadarea b - WHERE a.id = b.id; */ + SET geom = b.geom + FROM model_draft.ego_demand_loadarea b + WHERE a.id = b.id; +*/ -- sector sum -UPDATE model_draft.ego_demand_loadarea AS t1 - SET sector_consumption_sum = t2.sector_consumption_sum - FROM ( - SELECT id, - coalesce(load.sector_consumption_residential,0) + - coalesce(load.sector_consumption_retail,0) + - coalesce(load.sector_consumption_industrial,0) + - coalesce(load.sector_consumption_agricultural,0) AS sector_consumption_sum - FROM model_draft.ego_demand_loadarea AS load - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET sector_consumption_sum = t2.sector_consumption_sum + FROM ( + SELECT id, + coalesce(load.sector_consumption_residential,0) + + coalesce(load.sector_consumption_retail,0) + + coalesce(load.sector_consumption_industrial,0) + + coalesce(load.sector_consumption_agricultural,0) AS sector_consumption_sum + FROM model_draft.ego_demand_loadarea AS load + ) AS t2 + WHERE t1.id = t2.id; -- corresponding otg_id UPDATE model_draft.ego_demand_loadarea a - SET otg_id = b.otg_id - FROM model_draft.ego_grid_hvmv_substation b - WHERE a.subst_id = b.subst_id; + SET otg_id = b.otg_id + FROM model_draft.ego_grid_hvmv_substation b + WHERE a.subst_id = b.subst_id; -- metadata COMMENT ON TABLE model_draft.ego_demand_loadarea IS diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_griddistrict_results.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_griddistrict_results.sql index 98c43de9..6971346c 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_griddistrict_results.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_griddistrict_results.sql @@ -1,268 +1,285 @@ /* -results per mv-griddistrict -area -municipality types and grouping -population results -consumption results - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +Results for MV Griddistrict +After finishing the Loadareas we can aggregate the results for the MV Griddistricts: +Area of MV Griddistrict. +Municipality (Gemeinden). +Municipality parts (Gemeinde-Einzelteile). +Municipality types. +Population results. +Loadarea results (Area, Free area, Share). +Consumption results. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mv_griddistrict','ego_dp_loadarea_griddistrict_results.sql',' '); --- area -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET area_ha = t2.area_ha -FROM (SELECT gd.subst_id, - ST_AREA(gd.geom)/10000 AS area_ha - FROM model_draft.ego_grid_mv_griddistrict AS gd - )AS t2 -WHERE t1.subst_id = t2.subst_id; +-- Area of MV Griddistrict +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET area_ha = t2.area_ha + FROM ( + SELECT gd.subst_id, + ST_AREA(gd.geom)/10000 AS area_ha + FROM model_draft.ego_grid_mv_griddistrict AS gd + )AS t2 + WHERE t1.subst_id = t2.subst_id; --- municipality and method types - -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input', 'boundaries','bkg_vg250_6_gem','ego_dp_loadarea_griddistrict_results.sql',' '); - - --- Gemeinden -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET gem = t2.gem -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(gem.geom))::integer AS gem - FROM boundaries.bkg_vg250_6_gem AS gem, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && ST_TRANSFORM(gem.geom,3035) AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(ST_TRANSFORM(gem.geom,3035))) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; - +-- Municipality (Gemeinden) +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET gem = t2.gem + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(gem.geom))::integer AS gem + FROM boundaries.bkg_vg250_6_gem AS gem, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && ST_TRANSFORM(gem.geom,3035) AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(ST_TRANSFORM(gem.geom,3035))) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; + + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_boundaries_bkg_vg250_6_gem_clean','ego_dp_loadarea_griddistrict_results.sql',' '); +-- Municipality parts (Gemeinde-Einzelteile) +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET gem_clean = t2.gem_clean + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(gem.geom))::integer AS gem_clean + FROM model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS gem, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && gem.geom AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(gem.geom)) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; --- Gemeinde Parts -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET gem_clean = t2.gem_clean -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(gem.geom))::integer AS gem_clean - FROM model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS gem, - - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && gem.geom AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(gem.geom)) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mv_griddistrict_type1','ego_dp_loadarea_griddistrict_results.sql',' '); --- Type1 -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET type1 = t2.type1 -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(typ.geom))::integer AS type1 - FROM model_draft.ego_grid_mv_griddistrict_type1 AS typ, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && typ.geom AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; +-- Municipality types - Type1 +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET type1 = t2.type1 + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(typ.geom))::integer AS type1 + FROM model_draft.ego_grid_mv_griddistrict_type1 AS typ, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && typ.geom AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_boundaries_hvmv_subst_per_gem_1_mview','ego_dp_loadarea_griddistrict_results.sql',' '); - -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET type1_cnt = t2.type_cnt -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(typ.geom))::integer AS type_cnt - FROM model_draft.ego_boundaries_hvmv_subst_per_gem_1_mview AS typ, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && typ.geom AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET type1_cnt = t2.type_cnt + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(typ.geom))::integer AS type_cnt + FROM model_draft.ego_boundaries_hvmv_subst_per_gem_1_mview AS typ, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && typ.geom AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mv_griddistrict_type2','ego_dp_loadarea_griddistrict_results.sql',' '); --- Type2 -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET type2 = t2.type2 -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(typ.geom))::integer AS type2 - FROM model_draft.ego_grid_mv_griddistrict_type2 AS typ, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && typ.geom AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; +-- Municipality types - Type2 +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET type2 = t2.type2 + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(typ.geom))::integer AS type2 + FROM model_draft.ego_grid_mv_griddistrict_type2 AS typ, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && typ.geom AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_hvmv_substation_voronoi_cut','ego_dp_loadarea_griddistrict_results.sql',' '); -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET type2_cnt = t2.type_cnt -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(typ.geom))::integer AS type_cnt - FROM model_draft.ego_grid_hvmv_substation_voronoi_cut AS typ, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && typ.geom AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET type2_cnt = t2.type_cnt + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(typ.geom))::integer AS type_cnt + FROM model_draft.ego_grid_hvmv_substation_voronoi_cut AS typ, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && typ.geom AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mv_griddistrict_type3','ego_dp_loadarea_griddistrict_results.sql',' '); --- Type3 -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET type3 = t2.type3 -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(typ.geom))::integer AS type3 - FROM model_draft.ego_grid_mv_griddistrict_type3 AS typ, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && typ.geom AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; +-- Municipality types - Type3 +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET type3 = t2.type3 + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(typ.geom))::integer AS type3 + FROM model_draft.ego_grid_mv_griddistrict_type3 AS typ, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && typ.geom AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_boundaries_hvmv_subst_per_gem_3_mview','ego_dp_loadarea_griddistrict_results.sql',' '); -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET type3_cnt = t2.type_cnt -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(typ.geom))::integer AS type_cnt - FROM model_draft.ego_boundaries_hvmv_subst_per_gem_3_mview AS typ, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && typ.geom AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET type3_cnt = t2.type_cnt + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(typ.geom))::integer AS type_cnt + FROM model_draft.ego_boundaries_hvmv_subst_per_gem_3_mview AS typ, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && typ.geom AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(typ.geom)) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; -- Group -UPDATE model_draft.ego_grid_mv_griddistrict -SET "group" = (SELECT - CASE - WHEN type1 = '1' AND type2 = '0' AND type3 = '1' THEN 'A' -- ländlich - WHEN type1 = '0' AND type2 = '1' AND type3 = '1' THEN 'B' - WHEN type1 = '1' AND type2 = '0' AND type3 = '0' THEN 'C' - WHEN type1 = '0' AND type2 = '1' AND type3 = '0' THEN 'D' -- städtisch - END); - +UPDATE model_draft.ego_grid_mv_griddistrict + SET "group" = (SELECT + CASE + WHEN type1 = '1' AND type2 = '0' AND type3 = '1' THEN 'A' -- ländlich + WHEN type1 = '0' AND type2 = '1' AND type3 = '1' THEN 'B' + WHEN type1 = '1' AND type2 = '0' AND type3 = '0' THEN 'C' + WHEN type1 = '0' AND type2 = '1' AND type3 = '0' THEN 'D' -- städtisch + END); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','society','destatis_zensus_population_per_ha_mview','ego_dp_loadarea_griddistrict_results.sql',' '); --- population results -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET zensus_sum = t2.zensus_sum, - zensus_count = t2.zensus_count, - zensus_density = t2.zensus_density, - population_density = t2.population_density -FROM (SELECT gd.subst_id AS subst_id, - SUM(pts.population)::integer AS zensus_sum, - COUNT(pts.geom_point)::integer AS zensus_count, - (SUM(pts.population)/COUNT(pts.geom_point))::numeric AS zensus_density, - (SUM(pts.population)/gd.area_ha)::numeric AS population_density - FROM model_draft.ego_grid_mv_griddistrict AS gd, - society.destatis_zensus_population_per_ha_mview AS pts - WHERE gd.geom && pts.geom_point AND - ST_CONTAINS(gd.geom,pts.geom_point) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; - +-- Population results +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET zensus_sum = t2.zensus_sum, + zensus_count = t2.zensus_count, + zensus_density = t2.zensus_density, + population_density = t2.population_density + FROM ( + SELECT gd.subst_id AS subst_id, + SUM(pts.population)::integer AS zensus_sum, + COUNT(pts.geom_point)::integer AS zensus_count, + (SUM(pts.population)/COUNT(pts.geom_point))::numeric AS zensus_density, + (SUM(pts.population)/gd.area_ha)::numeric AS population_density + FROM model_draft.ego_grid_mv_griddistrict AS gd, + society.destatis_zensus_population_per_ha_mview AS pts + WHERE gd.geom && pts.geom_point AND + ST_CONTAINS(gd.geom,pts.geom_point) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; --- loadarea results -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_loadarea','ego_dp_loadarea_griddistrict_results.sql',' '); --- LA Count -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET la_count = t2.la_count -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(la.geom))::integer AS la_count - FROM model_draft.ego_demand_loadarea AS la, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && la.geom AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(la.geom)) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; +-- Loadarea results - count +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET la_count = t2.la_count + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(la.geom))::integer AS la_count + FROM model_draft.ego_demand_loadarea AS la, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && la.geom AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(la.geom)) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; + +-- Loadarea results - area +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET la_area = t2.la_area + FROM ( + SELECT gd.subst_id, + SUM(ST_AREA(la.geom)/10000) ::decimal(10,3) AS la_area + FROM model_draft.ego_demand_loadarea AS la, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && la.geom AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(la.geom)) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; + +-- Loadarea results - free_area (not LA Area) +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET free_area = t2.free_area + FROM ( + SELECT gd.subst_id, + SUM(gd.area_ha)-SUM(gd.la_area) AS free_area + FROM model_draft.ego_grid_mv_griddistrict as gd + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; + +-- Loadarea results - free_area share +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET area_share = t2.area_share + FROM ( + SELECT gd.subst_id, + SUM(gd.la_area)/SUM(gd.area_ha)*100 AS area_share + FROM model_draft.ego_grid_mv_griddistrict as gd + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; --- LA Area 3606 -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET la_area = t2.la_area -FROM (SELECT gd.subst_id, - SUM(ST_AREA(la.geom)/10000) ::decimal(10,3) AS la_area - FROM model_draft.ego_demand_loadarea AS la, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && la.geom AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(la.geom)) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; - --- not LA Area (free_area) -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET free_area = t2.free_area -FROM (SELECT gd.subst_id, - SUM(gd.area_ha)-SUM(gd.la_area) AS free_area - FROM model_draft.ego_grid_mv_griddistrict as gd - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; +/* +SELECT MAX(area_share) AS max, + MIN(area_share) AS min +FROM model_draft.ego_grid_mv_griddistrict ; +*/ --- not LA Area (free_area) -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET area_share = t2.area_share -FROM (SELECT gd.subst_id, - SUM(gd.la_area)/SUM(gd.area_ha)*100 AS area_share - FROM model_draft.ego_grid_mv_griddistrict as gd - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; -/* SELECT MAX(area_share) AS max, - MIN(area_share) AS min -FROM model_draft.ego_grid_mv_griddistrict ; */ +-- Consumption results +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET consumption = t2.consumption + FROM ( + SELECT gd.subst_id, + SUM(la.sector_consumption_sum)::numeric AS consumption + FROM model_draft.ego_demand_loadarea AS la, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.subst_id = la.subst_id + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET consumption_per_area = consumption *1000000 / area_ha; +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_grid_mv_griddistrict','ego_dp_loadarea_griddistrict_results.sql',' '); --- consumption results -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 - SET consumption = t2.consumption - FROM (SELECT gd.subst_id, - SUM(la.sector_consumption_sum)::numeric AS consumption - FROM model_draft.ego_demand_loadarea AS la, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.subst_id = la.subst_id - GROUP BY gd.subst_id - )AS t2 - WHERE t1.subst_id = t2.subst_id; - -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 - SET consumption_per_area = consumption *1000000 / area_ha; /* -- test SELECT SUM(mvgd.consumption) @@ -281,11 +298,6 @@ UPDATE model_draft.ego_grid_mv_griddistrict AS t1 )AS t2 WHERE t1.subst_id = t2.subst_id; */ --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_grid_mv_griddistrict','ego_dp_loadarea_griddistrict_results.sql',' '); - - - /* ---------- ---------- ---------- ---------- ---------- ---------- diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_industry_consumer.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_industry_consumer.sql index 13b37dc6..e9d5e263 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_industry_consumer.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_industry_consumer.sql @@ -1,12 +1,16 @@ /* -osm industry - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "IlkaCu, Ludee" +OSM Industry consumer +Calculate specific electricity consumption per million Euro GVA for each federal state. +Calculate the electricity consumption for each industry polygon. +Identify corresponding bus for large scale consumer (lsc) with the help of ehv-voronoi. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "IlkaCu, Ludee" */ + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','demand','ego_demand_federalstate','ego_dp_loadarea_industry_consumer.sql',' '); @@ -16,19 +20,19 @@ SELECT ego_scenario_log('v0.3.0','input','economy','destatis_gva_per_district',' -- Calculate specific electricity consumption per million Euro GVA for each federal state DROP TABLE IF EXISTS model_draft.ego_demand_per_gva CASCADE; CREATE TABLE model_draft.ego_demand_per_gva AS - (SELECT a.eu_code, - a.federal_states, - a.elec_consumption_industry/b.gva_industry AS elec_consumption_industry, - a.elec_consumption_tertiary_sector/b.gva_tertiary_sector AS elec_consumption_tertiary_sector - FROM demand.ego_demand_federalstate a, -- ego_demand_federalstate - economy.destatis_gva_per_district b -- destatis_gva_per_district - WHERE a.eu_code = b.eu_code - ORDER BY eu_code ); + (SELECT a.eu_code, + a.federal_states, + a.elec_consumption_industry/b.gva_industry AS elec_consumption_industry, + a.elec_consumption_tertiary_sector/b.gva_tertiary_sector AS elec_consumption_tertiary_sector + FROM demand.ego_demand_federalstate a, -- ego_demand_federalstate + economy.destatis_gva_per_district b -- destatis_gva_per_district + WHERE a.eu_code = b.eu_code + ORDER BY eu_code ); -- PK ALTER TABLE model_draft.ego_demand_per_gva - ADD PRIMARY KEY (eu_code), - OWNER TO oeuser; + ADD PRIMARY KEY (eu_code), + OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_demand_per_gva IS @@ -60,7 +64,7 @@ COMMENT ON TABLE model_draft.ego_demand_per_gva IS "Mail": "mario.kropshofer2@stud.fh-flensburg.de", "Date": "05.10.2016", "Comment": "..." }, - {"Name": "Ilka Cussmann", + {"Name": "Ilka Cussmann", "Mail": "", "Date": "25.10.2016", "Comment": "Completed json-String" } diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_landuse.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_landuse.sql index 73fcfa9e..e5fbc4a7 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_landuse.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_landuse.sql @@ -1,15 +1,23 @@ /* -osm landuse sector - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +OSM landuse sectors +Extract landuse areas from OpenStreetMap. +Cut the landuse with German boders (vg250) and make valid geometries. +Divide into 4 landuse sectors: +1. Residential +2. Retail +3. Industrial +4. Agricultural + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ ----------- ---------- ---------- ---------- ---------- ---------- --- "2. Data Setup OSM" 2016-04-18 10:00 11s ----------- ---------- ---------- ---------- ---------- ---------- + +---------- ---------- ---------- +-- Setup OSM +---------- ---------- ---------- -- -- "Validate (geom)" (OK!) -> 100ms =0 -- DROP VIEW IF EXISTS openstreetmap.osm_deu_polygon_error_geom_view CASCADE; @@ -33,8 +41,9 @@ __author__ = "Ludee" -- -- "Drop empty view" (OK!) -> 1.581.000ms =1 -- SELECT f_drop_view('{osm_deu_polygon_error_geom_view}', 'orig_osm'); + ---------- ---------- ---------- --- "Filter OSM Urban Landuse" +-- Filter OSM Urban Landuse ---------- ---------- ---------- -- ToDo: change "urban" to electrified @@ -42,60 +51,63 @@ __author__ = "Ludee" SELECT ego_scenario_log('v0.3.0','input','openstreetmap','osm_deu_polygon','ego_dp_loadarea_landuse.sql',' '); -- filter urban -DROP TABLE IF EXISTS openstreetmap.osm_deu_polygon_urban CASCADE; -CREATE TABLE openstreetmap.osm_deu_polygon_urban AS - SELECT osm.gid ::integer AS gid, - osm.osm_id ::integer AS osm_id, - --osm.landuse ::text AS landuse, - --osm.man_made ::text AS man_made, - --osm.aeroway ::text AS aeroway, - osm.name ::text AS name, - --osm.way_area ::double precision AS way_area, - '0' ::integer AS sector, - ST_AREA(ST_TRANSFORM(osm.geom,3035))/10000 ::double precision AS area_ha, - osm.tags ::hstore AS tags, - 'outside' ::text AS vg250, - ST_MULTI(ST_TRANSFORM(osm.geom,3035)) ::geometry(MultiPolygon,3035) AS geom - FROM openstreetmap.osm_deu_polygon AS osm - WHERE tags @> '"landuse"=>"residential"'::hstore OR - tags @> '"landuse"=>"commercial"'::hstore OR - tags @> '"landuse"=>"retail"'::hstore OR - tags @> '"landuse"=>"industrial;retail"'::hstore OR - - tags @> '"landuse"=>"industrial"'::hstore OR - tags @> '"landuse"=>"port"'::hstore OR - tags @> '"man_made"=>"wastewater_plant"'::hstore OR - tags @> '"aeroway"=>"terminal"'::hstore OR - tags @> '"aeroway"=>"gate"'::hstore OR - tags @> '"man_made"=>"works"'::hstore OR - - tags @> '"landuse"=>"farmyard"'::hstore OR - tags @> '"landuse"=>"greenhouse_horticulture"'::hstore - - --osm.landuse='residential' OR - --osm.landuse='commercial' OR - --osm.landuse='retail' OR - --osm.landuse='industrial;retail' OR - --osm.landuse='industrial' OR - --osm.landuse='port' OR - --osm.man_made='wastewater_plant' OR - --osm.aeroway='terminal' OR - --osm.aeroway='gate' OR - --osm.man_made='works' OR - --osm.landuse='farmyard' OR - --osm.landuse='greenhouse_horticulture' - ORDER BY osm.gid; +DROP TABLE IF EXISTS openstreetmap.osm_deu_polygon_urban CASCADE; +CREATE TABLE openstreetmap.osm_deu_polygon_urban AS + SELECT osm.gid ::integer AS gid, + osm.osm_id ::integer AS osm_id, + --osm.landuse ::text AS landuse, + --osm.man_made ::text AS man_made, + --osm.aeroway ::text AS aeroway, + osm.name ::text AS name, + --osm.way_area ::double precision AS way_area, + '0' ::integer AS sector, + ST_AREA(ST_TRANSFORM(osm.geom,3035))/10000 ::double precision AS area_ha, + osm.tags ::hstore AS tags, + 'outside' ::text AS vg250, + ST_MULTI(ST_TRANSFORM(osm.geom,3035)) ::geometry(MultiPolygon,3035) AS geom + FROM openstreetmap.osm_deu_polygon AS osm + WHERE + tags @> '"landuse"=>"residential"'::hstore OR + tags @> '"landuse"=>"commercial"'::hstore OR + tags @> '"landuse"=>"retail"'::hstore OR + tags @> '"landuse"=>"industrial;retail"'::hstore OR + + tags @> '"landuse"=>"industrial"'::hstore OR + tags @> '"landuse"=>"port"'::hstore OR + tags @> '"man_made"=>"wastewater_plant"'::hstore OR + tags @> '"aeroway"=>"terminal"'::hstore OR + tags @> '"aeroway"=>"gate"'::hstore OR + tags @> '"man_made"=>"works"'::hstore OR + + tags @> '"landuse"=>"farmyard"'::hstore OR + tags @> '"landuse"=>"greenhouse_horticulture"'::hstore + + --osm.landuse='residential' OR + --osm.landuse='commercial' OR + --osm.landuse='retail' OR + --osm.landuse='industrial;retail' OR + + --osm.landuse='industrial' OR + --osm.landuse='port' OR + --osm.man_made='wastewater_plant' OR + --osm.aeroway='terminal' OR + --osm.aeroway='gate' OR + --osm.man_made='works' OR + + --osm.landuse='farmyard' OR + --osm.landuse='greenhouse_horticulture' + ORDER BY osm.gid; -- PK ALTER TABLE openstreetmap.osm_deu_polygon_urban - ADD PRIMARY KEY (gid); + ADD PRIMARY KEY (gid); -- index GIST (geom) -CREATE INDEX osm_deu_polygon_urban_geom_idx - ON openstreetmap.osm_deu_polygon_urban USING GIST (geom); +CREATE INDEX osm_deu_polygon_urban_geom_idx + ON openstreetmap.osm_deu_polygon_urban USING GIST (geom); -- grant (oeuser) -ALTER TABLE openstreetmap.osm_deu_polygon_urban OWNER TO oeuser; +ALTER TABLE openstreetmap.osm_deu_polygon_urban OWNER TO oeuser; -- OSM Urban Landuse Inside vg250 @@ -288,10 +300,6 @@ INSERT INTO openstreetmap.osm_deu_polygon_urban -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','openstreetmap','osm_deu_polygon_urban','ego_dp_loadarea_landuse.sql',' '); - ----------- ---------- ---------- --- "(Geo) Data Validation" ----------- ---------- ---------- -- -- "Validate (geom)" (OK!) -> 22.000ms =0 -- DROP MATERIALIZED VIEW IF EXISTS openstreetmap.osm_deu_polygon_urban_error_geom_mview CASCADE; @@ -312,7 +320,6 @@ SELECT ego_scenario_log('v0.3.0','output','openstreetmap','osm_deu_polygon_urban -- GRANT ALL ON TABLE openstreetmap.osm_deu_polygon_urban_error_geom_view TO oeuser WITH GRANT OPTION; -- ALTER TABLE openstreetmap.osm_deu_polygon_urban_error_geom_view OWNER TO oeuser; ----------- ---------- ---------- -- -- "Validate (geom)" (OK!) -> 22.000ms =0 -- DROP VIEW IF EXISTS openstreetmap.osm_deu_polygon_urban_error_geom_view CASCADE; @@ -337,7 +344,9 @@ SELECT ego_scenario_log('v0.3.0','output','openstreetmap','osm_deu_polygon_urban -- SELECT f_drop_view('{osm_deu_polygon_urban_error_geom_view}', 'orig_osm'); --- "Filter by Sector" +---------- ---------- ---------- +-- Filter Sectors +---------- ---------- ---------- -- Sector 1. Residential -- update sector @@ -437,7 +446,7 @@ ALTER TABLE openstreetmap.osm_deu_polygon_urban_sector_3_industrial_mview OWNER SELECT ego_scenario_log('v0.3.0','output','openstreetmap','osm_deu_polygon_urban_sector_3_industrial_mview','ego_dp_loadarea_landuse.sql',' '); --- sector 4. Agricultural +-- Sector 4. Agricultural -- update sector UPDATE openstreetmap.osm_deu_polygon_urban SET sector = '4' diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_loadcut_griddistrict.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_loadcut_griddistrict.sql index 831add79..8080b113 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_loadcut_griddistrict.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_loadcut_griddistrict.sql @@ -1,63 +1,72 @@ /* -loadareas per mv-griddistrict -insert cutted load melt -exclude smaller 100m² - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +Cut Loadarea with MV Griddistrict +Identify and exclude Loadarea smaller than 100m². +Generate Centre of Loadareas with Centroid and PointOnSurface. +Calculate population from Census 2011. +Cut all 4 OSM sectors with MV Griddistricts. +Calculate statistics like NUTS and AGS code. +Check for Loadareas without AGS code. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -- loadareas per mv-griddistrict -DROP TABLE IF EXISTS model_draft.ego_demand_loadarea CASCADE; -CREATE TABLE model_draft.ego_demand_loadarea ( - id SERIAL NOT NULL, - subst_id integer, - area_ha numeric, - nuts varchar(5), - rs_0 varchar(12), - ags_0 varchar(12), - otg_id integer, - un_id integer, - zensus_sum integer, - zensus_count integer, - zensus_density numeric, - ioer_sum numeric, - ioer_count integer, - ioer_density numeric, - sector_area_residential numeric, - sector_area_retail numeric, - sector_area_industrial numeric, - sector_area_agricultural numeric, - sector_area_sum numeric, - sector_share_residential numeric, - sector_share_retail numeric, - sector_share_industrial numeric, - sector_share_agricultural numeric, - sector_share_sum numeric, - sector_count_residential integer, - sector_count_retail integer, - sector_count_industrial integer, - sector_count_agricultural integer, - sector_count_sum integer, - sector_consumption_residential double precision, - sector_consumption_retail double precision, - sector_consumption_industrial double precision, - sector_consumption_agricultural double precision, - sector_consumption_sum double precision, - sector_peakload_retail double precision, - sector_peakload_residential double precision, - sector_peakload_industrial double precision, - sector_peakload_agricultural double precision, - geom_centroid geometry(POINT,3035), - geom_surfacepoint geometry(POINT,3035), - geom_centre geometry(POINT,3035), - geom geometry(Polygon,3035), - CONSTRAINT ego_demand_loadarea_pkey PRIMARY KEY (id)); +DROP TABLE IF EXISTS model_draft.ego_demand_loadarea CASCADE; +CREATE TABLE model_draft.ego_demand_loadarea ( + id SERIAL NOT NULL, + subst_id integer, + area_ha numeric, + nuts varchar(5), + rs_0 varchar(12), + ags_0 varchar(12), + otg_id integer, + un_id integer, + zensus_sum integer, + zensus_count integer, + zensus_density numeric, + ioer_sum numeric, + ioer_count integer, + ioer_density numeric, + sector_area_residential numeric, + sector_area_retail numeric, + sector_area_industrial numeric, + sector_area_agricultural numeric, + sector_area_sum numeric, + sector_share_residential numeric, + sector_share_retail numeric, + sector_share_industrial numeric, + sector_share_agricultural numeric, + sector_share_sum numeric, + sector_count_residential integer, + sector_count_retail integer, + sector_count_industrial integer, + sector_count_agricultural integer, + sector_count_sum integer, + sector_consumption_residential double precision, + sector_consumption_retail double precision, + sector_consumption_industrial double precision, + sector_consumption_agricultural double precision, + sector_consumption_sum double precision, + sector_peakload_retail double precision, + sector_peakload_residential double precision, + sector_peakload_industrial double precision, + sector_peakload_agricultural double precision, + geom_centroid geometry(POINT,3035), + geom_surfacepoint geometry(POINT,3035), + geom_centre geometry(POINT,3035), + geom geometry(Polygon,3035), + CONSTRAINT ego_demand_loadarea_pkey PRIMARY KEY (id)); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_loadarea OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_loadarea OWNER TO oeuser; + +-- metadata +COMMENT ON TABLE model_draft.ego_demand_loadarea IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_load_melt','ego_dp_loadarea_loadcut_griddistrict.sql',' '); @@ -67,29 +76,30 @@ SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mv_griddistrict -- insert cutted load melt INSERT INTO model_draft.ego_demand_loadarea (geom) - SELECT c.geom ::geometry(Polygon,3035) - FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom AS geom - FROM model_draft.ego_demand_load_melt AS a, - model_draft.ego_grid_mv_griddistrict AS b - WHERE a.geom && b.geom - ) AS c - WHERE ST_GeometryType(c.geom) = 'ST_Polygon'; + SELECT c.geom ::geometry(Polygon,3035) + FROM ( + SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom AS geom + FROM model_draft.ego_demand_load_melt AS a, + model_draft.ego_grid_mv_griddistrict AS b + WHERE a.geom && b.geom + ) AS c + WHERE ST_GeometryType(c.geom) = 'ST_Polygon'; -- index GIST (geom_centroid) -CREATE INDEX ego_demand_loadarea_geom_centroid_idx - ON model_draft.ego_demand_loadarea USING GIST (geom_centroid); +CREATE INDEX ego_demand_loadarea_geom_centroid_idx + ON model_draft.ego_demand_loadarea USING GIST (geom_centroid); -- index GIST (geom_surfacepoint) -CREATE INDEX ego_demand_loadarea_geom_surfacepoint_idx - ON model_draft.ego_demand_loadarea USING GIST (geom_surfacepoint); +CREATE INDEX ego_demand_loadarea_geom_surfacepoint_idx + ON model_draft.ego_demand_loadarea USING GIST (geom_surfacepoint); -- index GIST (geom_centre) -CREATE INDEX ego_demand_loadarea_geom_centre_idx - ON model_draft.ego_demand_loadarea USING gist (geom_centre); +CREATE INDEX ego_demand_loadarea_geom_centre_idx + ON model_draft.ego_demand_loadarea USING gist (geom_centre); -- index GIST (geom) -CREATE INDEX ego_demand_loadarea_geom_idx - ON model_draft.ego_demand_loadarea USING gist (geom); +CREATE INDEX ego_demand_loadarea_geom_idx + ON model_draft.ego_demand_loadarea USING gist (geom); -- update area (area_ha) UPDATE model_draft.ego_demand_loadarea AS t1 @@ -106,29 +116,25 @@ COMMENT ON TABLE model_draft.ego_demand_loadarea IS '{ "version": "v0.3.0", "published": "demand.ego_dp_loadarea" }'; --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_demand_loadarea','ego_dp_loadarea_loadcut_griddistrict.sql',' '); - - --- validate area (area_ha) -> exclude smaller 100m² -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_loadarea_smaller100m2_mview CASCADE; -CREATE MATERIALIZED VIEW model_draft.ego_demand_loadarea_smaller100m2_mview AS - SELECT loads.id AS id, - loads.area_ha AS area_ha, - loads.geom AS geom - FROM model_draft.ego_demand_loadarea AS loads - WHERE loads.area_ha < 0.001; +-- Identify Loadarea smaller than 100m² +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_loadarea_smaller100m2_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.ego_demand_loadarea_smaller100m2_mview AS + SELECT loads.id AS id, + loads.area_ha AS area_ha, + loads.geom AS geom + FROM model_draft.ego_demand_loadarea AS loads + WHERE loads.area_ha < 0.001; -- index (id) -CREATE UNIQUE INDEX ego_demand_loadarea_smaller100m2_mview_id_idx - ON model_draft.ego_demand_loadarea_smaller100m2_mview (id); +CREATE UNIQUE INDEX ego_demand_loadarea_smaller100m2_mview_id_idx + ON model_draft.ego_demand_loadarea_smaller100m2_mview (id); -- index GIST (geom) -CREATE INDEX ego_demand_loadarea_smaller100m2_mview_geom_idx - ON model_draft.ego_demand_loadarea_smaller100m2_mview USING GIST (geom); +CREATE INDEX ego_demand_loadarea_smaller100m2_mview_geom_idx + ON model_draft.ego_demand_loadarea_smaller100m2_mview USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_loadarea_smaller100m2_mview OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_loadarea_smaller100m2_mview OWNER TO oeuser; -- metadata COMMENT ON MATERIALIZED VIEW model_draft.ego_demand_loadarea_smaller100m2_mview IS '{ @@ -139,150 +145,155 @@ COMMENT ON MATERIALIZED VIEW model_draft.ego_demand_loadarea_smaller100m2_mview -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_loadarea_smaller100m2_mview','ego_dp_loadarea_loadcut_griddistrict.sql',' '); - --- remove errors (area_ha) -DELETE FROM model_draft.ego_demand_loadarea AS loads - WHERE loads.area_ha < 0.001; +-- Exclude Loadarea smaller than 100m² +DELETE FROM model_draft.ego_demand_loadarea AS loads + WHERE loads.area_ha < 0.001; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_demand_loadarea','ego_dp_loadarea_loadcut_griddistrict.sql',' '); +-- Generate Centre of Loadareas with Centroid and PointOnSurface -- centroid -UPDATE model_draft.ego_demand_loadarea AS t1 - SET geom_centroid = t2.geom_centroid - FROM ( - SELECT loads.id AS id, - ST_Centroid(loads.geom) AS geom_centroid - FROM model_draft.ego_demand_loadarea AS loads - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET geom_centroid = t2.geom_centroid + FROM ( + SELECT loads.id AS id, + ST_Centroid(loads.geom) AS geom_centroid + FROM model_draft.ego_demand_loadarea AS loads + ) AS t2 + WHERE t1.id = t2.id; -- surfacepoint -UPDATE model_draft.ego_demand_loadarea AS t1 - SET geom_surfacepoint = t2.geom_surfacepoint - FROM ( - SELECT loads.id AS id, - ST_PointOnSurface(loads.geom) AS geom_surfacepoint - FROM model_draft.ego_demand_loadarea AS loads - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET geom_surfacepoint = t2.geom_surfacepoint + FROM ( + SELECT loads.id AS id, + ST_PointOnSurface(loads.geom) AS geom_surfacepoint + FROM model_draft.ego_demand_loadarea AS loads + ) AS t2 + WHERE t1.id = t2.id; -- centre with centroid if inside loadarea -UPDATE model_draft.ego_demand_loadarea AS t1 - SET geom_centre = t2.geom_centre - FROM ( - SELECT loads.id AS id, - loads.geom_centroid AS geom_centre - FROM model_draft.ego_demand_loadarea AS loads - WHERE loads.geom && loads.geom_centroid AND - ST_CONTAINS(loads.geom,loads.geom_centroid) - )AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET geom_centre = t2.geom_centre + FROM ( + SELECT loads.id AS id, + loads.geom_centroid AS geom_centre + FROM model_draft.ego_demand_loadarea AS loads + WHERE loads.geom && loads.geom_centroid AND + ST_CONTAINS(loads.geom,loads.geom_centroid) + )AS t2 + WHERE t1.id = t2.id; -- centre with surfacepoint if outside area -UPDATE model_draft.ego_demand_loadarea AS t1 - SET geom_centre = t2.geom_centre - FROM ( - SELECT loads.id AS id, - loads.geom_surfacepoint AS geom_centre - FROM model_draft.ego_demand_loadarea AS loads - WHERE loads.geom_centre IS NULL - )AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET geom_centre = t2.geom_centre + FROM ( + SELECT loads.id AS id, + loads.geom_surfacepoint AS geom_centre + FROM model_draft.ego_demand_loadarea AS loads + WHERE loads.geom_centre IS NULL + )AS t2 + WHERE t1.id = t2.id; /* -- validate geom_centre - SELECT loads.id AS id - FROM model_draft.ego_demand_loadarea AS loads - WHERE NOT ST_CONTAINS(loads.geom,loads.geom_centre); */ +SELECT loads.id AS id +FROM model_draft.ego_demand_loadarea AS loads +WHERE NOT ST_CONTAINS(loads.geom,loads.geom_centre); */ +-- Calculate population from Census 2011 -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','society','destatis_zensus_population_per_ha_mview','ego_dp_loadarea_loadcut_griddistrict.sql',' '); --- zensus 2011 population in LA +-- zensus 2011 population UPDATE model_draft.ego_demand_loadarea AS t1 SET zensus_sum = t2.zensus_sum, zensus_count = t2.zensus_count, zensus_density = t2.zensus_density - FROM ( SELECT a.id AS id, - SUM(b.population) ::integer AS zensus_sum, - COUNT(b.geom_point) ::integer AS zensus_count, - (SUM(b.population)/COUNT(b.geom_point)) ::numeric AS zensus_density - FROM model_draft.ego_demand_loadarea AS a, - society.destatis_zensus_population_per_ha_mview AS b - WHERE a.geom && b.geom_point AND - ST_CONTAINS(a.geom,b.geom_point) - GROUP BY a.id + FROM ( + SELECT a.id AS id, + SUM(b.population)::integer AS zensus_sum, + COUNT(b.geom_point)::integer AS zensus_count, + (SUM(b.population)/COUNT(b.geom_point))::numeric AS zensus_density + FROM model_draft.ego_demand_loadarea AS a, + society.destatis_zensus_population_per_ha_mview AS b + WHERE a.geom && b.geom_point AND + ST_CONTAINS(a.geom,b.geom_point) + GROUP BY a.id )AS t2 - WHERE t1.id = t2.id; + WHERE t1.id = t2.id; /* -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','economy','ioer_urban_share_industrial_centroid','ego_dp_loadarea_loadcut_griddistrict.sql',' '); -- ioer industry share -UPDATE model_draft.ego_demand_loadarea AS t1 - SET ioer_sum = t2.ioer_sum, - ioer_count = t2.ioer_count, - ioer_density = t2.ioer_density - FROM (SELECT loads.id AS id, - SUM(pts.ioer_share)/100::numeric AS ioer_sum, - COUNT(pts.geom)::integer AS ioer_count, - (SUM(pts.ioer_share)/COUNT(pts.geom))::numeric AS ioer_density - FROM model_draft.ego_demand_loadarea AS loads, - economy.ioer_urban_share_industrial_centroid AS pts - WHERE loads.geom && pts.geom AND - ST_CONTAINS(loads.geom,pts.geom) - GROUP BY loads.id - )AS t2 - WHERE t1.id = t2.id; */ - - --- 1. residential sector -DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_griddistrict_1_residential CASCADE; -CREATE TABLE model_draft.ego_osm_sector_per_griddistrict_1_residential ( - id SERIAL NOT NULL, - geom geometry(Polygon,3035), - CONSTRAINT urban_sector_per_grid_district_1_residential_pkey PRIMARY KEY (id)); +UPDATE model_draft.ego_demand_loadarea AS t1 + SET ioer_sum = t2.ioer_sum, + ioer_count = t2.ioer_count, + ioer_density = t2.ioer_density + FROM ( + SELECT loads.id AS id, + SUM(pts.ioer_share)/100::numeric AS ioer_sum, + COUNT(pts.geom)::integer AS ioer_count, + (SUM(pts.ioer_share)/COUNT(pts.geom))::numeric AS ioer_density + FROM model_draft.ego_demand_loadarea AS loads, + economy.ioer_urban_share_industrial_centroid AS pts + WHERE loads.geom && pts.geom AND + ST_CONTAINS(loads.geom,pts.geom) + GROUP BY loads.id + )AS t2 + WHERE t1.id = t2.id; */ + + +-- Cut all 4 OSM sectors with MV Griddistricts +-- 1. Residential sector +DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_griddistrict_1_residential CASCADE; +CREATE TABLE model_draft.ego_osm_sector_per_griddistrict_1_residential ( + id SERIAL NOT NULL, + geom geometry(Polygon,3035), + CONSTRAINT urban_sector_per_grid_district_1_residential_pkey PRIMARY KEY (id)); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','openstreetmap','osm_deu_polygon_urban_sector_1_residential_mview','ego_dp_loadarea_loadcut_griddistrict.sql',' '); -- intersect sector with mv-griddistrict INSERT INTO model_draft.ego_osm_sector_per_griddistrict_1_residential (geom) - SELECT loads.geom ::geometry(Polygon,3035) - FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(loads.geom,dis.geom))).geom AS geom - FROM openstreetmap.osm_deu_polygon_urban_sector_1_residential_mview AS loads, - model_draft.ego_grid_mv_griddistrict AS dis - WHERE loads.geom && dis.geom - ) AS loads - WHERE ST_GeometryType(loads.geom) = 'ST_Polygon'; + SELECT loads.geom ::geometry(Polygon,3035) + FROM ( + SELECT (ST_DUMP(ST_SAFE_INTERSECTION(loads.geom,dis.geom))).geom AS geom + FROM openstreetmap.osm_deu_polygon_urban_sector_1_residential_mview AS loads, + model_draft.ego_grid_mv_griddistrict AS dis + WHERE loads.geom && dis.geom + ) AS loads + WHERE ST_GeometryType(loads.geom) = 'ST_Polygon'; -- index GIST (geom) -CREATE INDEX urban_sector_per_grid_district_1_residential_geom_idx - ON model_draft.ego_osm_sector_per_griddistrict_1_residential USING GIST (geom); +CREATE INDEX urban_sector_per_grid_district_1_residential_geom_idx + ON model_draft.ego_osm_sector_per_griddistrict_1_residential USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_1_residential OWNER TO oeuser; +ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_1_residential OWNER TO oeuser; -- sector stats -UPDATE model_draft.ego_demand_loadarea AS t1 - SET sector_area_residential = t2.sector_area, - sector_count_residential = t2.sector_count, - sector_share_residential = t2.sector_area / t2.area_ha - FROM ( - SELECT loads.id AS id, - SUM(ST_AREA(sector.geom)/10000) AS sector_area, - COUNT(sector.geom) AS sector_count, - loads.area_ha AS area_ha - FROM model_draft.ego_osm_sector_per_griddistrict_1_residential AS sector, - model_draft.ego_demand_loadarea AS loads - WHERE loads.geom && sector.geom AND - ST_INTERSECTS(loads.geom,ST_BUFFER(sector.geom,-1)) - GROUP BY loads.id - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET sector_area_residential = t2.sector_area, + sector_count_residential = t2.sector_count, + sector_share_residential = t2.sector_area / t2.area_ha + FROM ( + SELECT loads.id AS id, + SUM(ST_AREA(sector.geom)/10000) AS sector_area, + COUNT(sector.geom) AS sector_count, + loads.area_ha AS area_ha + FROM model_draft.ego_osm_sector_per_griddistrict_1_residential AS sector, + model_draft.ego_demand_loadarea AS loads + WHERE loads.geom && sector.geom AND + ST_INTERSECTS(loads.geom,ST_BUFFER(sector.geom,-1)) + GROUP BY loads.id + ) AS t2 + WHERE t1.id = t2.id; -- metadata COMMENT ON TABLE model_draft.ego_osm_sector_per_griddistrict_1_residential IS '{ @@ -294,50 +305,51 @@ COMMENT ON TABLE model_draft.ego_osm_sector_per_griddistrict_1_residential IS '{ SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_griddistrict_1_residential','ego_dp_loadarea_loadcut_griddistrict.sql',' '); --- 2. retail sector -DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_griddistrict_2_retail CASCADE; -CREATE TABLE model_draft.ego_osm_sector_per_griddistrict_2_retail ( - id SERIAL NOT NULL, - geom geometry(Polygon,3035), - CONSTRAINT urban_sector_per_grid_district_2_retail_pkey PRIMARY KEY (id)); +-- 2. Retail sector +DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_griddistrict_2_retail CASCADE; +CREATE TABLE model_draft.ego_osm_sector_per_griddistrict_2_retail ( + id SERIAL NOT NULL, + geom geometry(Polygon,3035), + CONSTRAINT urban_sector_per_grid_district_2_retail_pkey PRIMARY KEY (id)); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','openstreetmap','osm_deu_polygon_urban_sector_2_retail_mview','ego_dp_loadarea_loadcut_griddistrict.sql',' '); -- intersect sector with mv-griddistrict INSERT INTO model_draft.ego_osm_sector_per_griddistrict_2_retail (geom) - SELECT loads.geom ::geometry(Polygon,3035) - FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(loads.geom,dis.geom))).geom AS geom - FROM openstreetmap.osm_deu_polygon_urban_sector_2_retail_mview AS loads, - model_draft.ego_grid_mv_griddistrict AS dis - WHERE loads.geom && dis.geom - ) AS loads - WHERE ST_GeometryType(loads.geom) = 'ST_Polygon'; + SELECT loads.geom ::geometry(Polygon,3035) + FROM ( + SELECT (ST_DUMP(ST_SAFE_INTERSECTION(loads.geom,dis.geom))).geom AS geom + FROM openstreetmap.osm_deu_polygon_urban_sector_2_retail_mview AS loads, + model_draft.ego_grid_mv_griddistrict AS dis + WHERE loads.geom && dis.geom + ) AS loads + WHERE ST_GeometryType(loads.geom) = 'ST_Polygon'; -- index GIST (geom) -CREATE INDEX urban_sector_per_grid_district_2_retail_geom_idx - ON model_draft.ego_osm_sector_per_griddistrict_2_retail USING GIST (geom); +CREATE INDEX urban_sector_per_grid_district_2_retail_geom_idx + ON model_draft.ego_osm_sector_per_griddistrict_2_retail USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_2_retail OWNER TO oeuser; +ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_2_retail OWNER TO oeuser; -- sector stats -UPDATE model_draft.ego_demand_loadarea AS t1 - SET sector_area_retail = t2.sector_area, - sector_count_retail = t2.sector_count, - sector_share_retail = t2.sector_area / t2.area_ha - FROM ( - SELECT loads.id AS id, - SUM(ST_AREA(sector.geom)/10000) AS sector_area, - COUNT(sector.geom) AS sector_count, - loads.area_ha AS area_ha - FROM model_draft.ego_osm_sector_per_griddistrict_2_retail AS sector, - model_draft.ego_demand_loadarea AS loads - WHERE loads.geom && sector.geom AND - ST_INTERSECTS(loads.geom,ST_BUFFER(sector.geom,-1)) - GROUP BY loads.id - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET sector_area_retail = t2.sector_area, + sector_count_retail = t2.sector_count, + sector_share_retail = t2.sector_area / t2.area_ha + FROM ( + SELECT loads.id AS id, + SUM(ST_AREA(sector.geom)/10000) AS sector_area, + COUNT(sector.geom) AS sector_count, + loads.area_ha AS area_ha + FROM model_draft.ego_osm_sector_per_griddistrict_2_retail AS sector, + model_draft.ego_demand_loadarea AS loads + WHERE loads.geom && sector.geom AND + ST_INTERSECTS(loads.geom,ST_BUFFER(sector.geom,-1)) + GROUP BY loads.id + ) AS t2 + WHERE t1.id = t2.id; -- metadata COMMENT ON TABLE model_draft.ego_osm_sector_per_griddistrict_2_retail IS '{ @@ -362,15 +374,15 @@ CREATE MATERIALIZED VIEW openstreetmap.osm_deu_polygon_urban_sector_3_industria ORDER BY osm.gid; -- index (id) -CREATE UNIQUE INDEX osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview_gid_idx - ON openstreetmap.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview (gid); +CREATE UNIQUE INDEX osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview_gid_idx + ON openstreetmap.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview (gid); -- index GIST (geom) -CREATE INDEX osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview_geom_idx - ON openstreetmap.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview USING GIST (geom); - +CREATE INDEX osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview_geom_idx + ON openstreetmap.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview USING GIST (geom); + -- grant (oeuser) -ALTER TABLE openstreetmap.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview OWNER TO oeuser; +ALTER TABLE openstreetmap.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview OWNER TO oeuser; -- metadata COMMENT ON MATERIALIZED VIEW model_draft.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview IS '{ @@ -381,61 +393,64 @@ COMMENT ON MATERIALIZED VIEW model_draft.osm_deu_polygon_urban_sector_3_industri -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','openstreetmap','osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview','setup_osm_landuse.sql',' '); + /* -- check -SELECT 'industrial' AS name, - count(ind.*) AS cnt -FROM openstreetmap.osm_deu_polygon_urban_sector_3_industrial_mview ind +SELECT 'industrial' AS name, + count(ind.*) AS cnt +FROM openstreetmap.osm_deu_polygon_urban_sector_3_industrial_mview ind UNION ALL -SELECT 'largescale' AS name, - count(ls.*) AS cnt -FROM model_draft.ego_demand_hv_largescaleconsumer ls +SELECT 'largescale' AS name, + count(ls.*) AS cnt +FROM model_draft.ego_demand_hv_largescaleconsumer ls UNION ALL -SELECT 'nolargescale' AS name, - count(nols.*) AS cnt -FROM openstreetmap.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview nols; - */ +SELECT 'nolargescale' AS name, + count(nols.*) AS cnt +FROM openstreetmap.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview nols; +*/ + -- 3. industrial sector -DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_griddistrict_3_industrial CASCADE; -CREATE TABLE model_draft.ego_osm_sector_per_griddistrict_3_industrial ( - id SERIAL NOT NULL, - geom geometry(Polygon,3035), - CONSTRAINT urban_sector_per_grid_district_3_industrial_pkey PRIMARY KEY (id)); +DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_griddistrict_3_industrial CASCADE; +CREATE TABLE model_draft.ego_osm_sector_per_griddistrict_3_industrial ( + id SERIAL NOT NULL, + geom geometry(Polygon,3035), + CONSTRAINT urban_sector_per_grid_district_3_industrial_pkey PRIMARY KEY (id)); -- intersect sector with mv-griddistrict INSERT INTO model_draft.ego_osm_sector_per_griddistrict_3_industrial (geom) - SELECT loads.geom ::geometry(Polygon,3035) - FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(loads.geom,dis.geom))).geom AS geom - FROM openstreetmap.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview AS loads, - model_draft.ego_grid_mv_griddistrict AS dis - WHERE loads.geom && dis.geom - ) AS loads - WHERE ST_GeometryType(loads.geom) = 'ST_Polygon'; + SELECT loads.geom ::geometry(Polygon,3035) + FROM ( + SELECT (ST_DUMP(ST_SAFE_INTERSECTION(loads.geom,dis.geom))).geom AS geom + FROM openstreetmap.osm_deu_polygon_urban_sector_3_industrial_nolargescale_mview AS loads, + model_draft.ego_grid_mv_griddistrict AS dis + WHERE loads.geom && dis.geom + ) AS loads + WHERE ST_GeometryType(loads.geom) = 'ST_Polygon'; -- index GIST (geom) -CREATE INDEX urban_sector_per_grid_district_3_industrial_geom_idx - ON model_draft.ego_osm_sector_per_griddistrict_3_industrial USING GIST (geom); +CREATE INDEX urban_sector_per_grid_district_3_industrial_geom_idx + ON model_draft.ego_osm_sector_per_griddistrict_3_industrial USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_3_industrial OWNER TO oeuser; +ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_3_industrial OWNER TO oeuser; -- sector stats -UPDATE model_draft.ego_demand_loadarea AS t1 - SET sector_area_industrial = t2.sector_area, - sector_count_industrial = t2.sector_count, - sector_share_industrial = t2.sector_area / t2.area_ha - FROM ( - SELECT loads.id AS id, - SUM(ST_AREA(sector.geom)/10000) AS sector_area, - COUNT(sector.geom) AS sector_count, - loads.area_ha AS area_ha - FROM model_draft.ego_osm_sector_per_griddistrict_3_industrial AS sector, - model_draft.ego_demand_loadarea AS loads - WHERE loads.geom && sector.geom AND - ST_INTERSECTS(loads.geom,ST_BUFFER(sector.geom,-1)) - GROUP BY loads.id - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET sector_area_industrial = t2.sector_area, + sector_count_industrial = t2.sector_count, + sector_share_industrial = t2.sector_area / t2.area_ha + FROM ( + SELECT loads.id AS id, + SUM(ST_AREA(sector.geom)/10000) AS sector_area, + COUNT(sector.geom) AS sector_count, + loads.area_ha AS area_ha + FROM model_draft.ego_osm_sector_per_griddistrict_3_industrial AS sector, + model_draft.ego_demand_loadarea AS loads + WHERE loads.geom && sector.geom AND + ST_INTERSECTS(loads.geom,ST_BUFFER(sector.geom,-1)) + GROUP BY loads.id + ) AS t2 + WHERE t1.id = t2.id; -- metadata COMMENT ON TABLE model_draft.ego_osm_sector_per_griddistrict_3_industrial IS '{ @@ -448,49 +463,50 @@ SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_grid -- 4. agricultural sector -DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_griddistrict_4_agricultural CASCADE; -CREATE TABLE model_draft.ego_osm_sector_per_griddistrict_4_agricultural ( - id SERIAL NOT NULL, - geom geometry(Polygon,3035), -CONSTRAINT urban_sector_per_grid_district_4_agricultural_pkey PRIMARY KEY (id)); +DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_griddistrict_4_agricultural CASCADE; +CREATE TABLE model_draft.ego_osm_sector_per_griddistrict_4_agricultural ( + id SERIAL NOT NULL, + geom geometry(Polygon,3035), + CONSTRAINT urban_sector_per_grid_district_4_agricultural_pkey PRIMARY KEY (id)); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','openstreetmap','osm_deu_polygon_urban_sector_4_agricultural_mview','ego_dp_loadarea_loadcut_griddistrict.sql',' '); -- intersect sector with mv-griddistrict -INSERT INTO model_draft.ego_osm_sector_per_griddistrict_4_agricultural (geom) - SELECT loads.geom ::geometry(Polygon,3035) - FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(loads.geom,dis.geom))).geom AS geom - FROM openstreetmap.osm_deu_polygon_urban_sector_4_agricultural_mview AS loads, - model_draft.ego_grid_mv_griddistrict AS dis - WHERE loads.geom && dis.geom - ) AS loads - WHERE ST_GeometryType(loads.geom) = 'ST_Polygon'; +INSERT INTO model_draft.ego_osm_sector_per_griddistrict_4_agricultural (geom) + SELECT loads.geom ::geometry(Polygon,3035) + FROM ( + SELECT (ST_DUMP(ST_SAFE_INTERSECTION(loads.geom,dis.geom))).geom AS geom + FROM openstreetmap.osm_deu_polygon_urban_sector_4_agricultural_mview AS loads, + model_draft.ego_grid_mv_griddistrict AS dis + WHERE loads.geom && dis.geom + ) AS loads + WHERE ST_GeometryType(loads.geom) = 'ST_Polygon'; -- index GIST (geom) -CREATE INDEX urban_sector_per_grid_district_4_agricultural_geom_idx - ON model_draft.ego_osm_sector_per_griddistrict_4_agricultural USING GIST (geom); +CREATE INDEX urban_sector_per_grid_district_4_agricultural_geom_idx + ON model_draft.ego_osm_sector_per_griddistrict_4_agricultural USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_4_agricultural OWNER TO oeuser; +ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_4_agricultural OWNER TO oeuser; -- sector stats -UPDATE model_draft.ego_demand_loadarea AS t1 - SET sector_area_agricultural = t2.sector_area, - sector_count_agricultural = t2.sector_count, - sector_share_agricultural = t2.sector_area / t2.area_ha - FROM ( - SELECT loads.id AS id, - SUM(ST_AREA(sector.geom)/10000) AS sector_area, - COUNT(sector.geom) AS sector_count, - loads.area_ha AS area_ha - FROM model_draft.ego_osm_sector_per_griddistrict_4_agricultural AS sector, - model_draft.ego_demand_loadarea AS loads - WHERE loads.geom && sector.geom AND - ST_INTERSECTS(loads.geom,ST_BUFFER(sector.geom,-1)) - GROUP BY loads.id - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET sector_area_agricultural = t2.sector_area, + sector_count_agricultural = t2.sector_count, + sector_share_agricultural = t2.sector_area / t2.area_ha + FROM ( + SELECT loads.id AS id, + SUM(ST_AREA(sector.geom)/10000) AS sector_area, + COUNT(sector.geom) AS sector_count, + loads.area_ha AS area_ha + FROM model_draft.ego_osm_sector_per_griddistrict_4_agricultural AS sector, + model_draft.ego_demand_loadarea AS loads + WHERE loads.geom && sector.geom AND + ST_INTERSECTS(loads.geom,ST_BUFFER(sector.geom,-1)) + GROUP BY loads.id + ) AS t2 + WHERE t1.id = t2.id; -- metadata COMMENT ON TABLE model_draft.ego_osm_sector_per_griddistrict_4_agricultural IS '{ @@ -503,110 +519,111 @@ SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_grid -- sector stats -UPDATE model_draft.ego_demand_loadarea AS t1 - SET sector_area_sum = t2.sector_area_sum, - sector_share_sum = t2.sector_share_sum, - sector_count_sum = t2.sector_count_sum - FROM ( - SELECT id, - coalesce(load.sector_area_residential,0) + - coalesce(load.sector_area_retail,0) + - coalesce(load.sector_area_industrial,0) + - coalesce(load.sector_area_agricultural,0) AS sector_area_sum, - coalesce(load.sector_share_residential,0) + - coalesce(load.sector_share_retail,0) + - coalesce(load.sector_share_industrial,0) + - coalesce(load.sector_share_agricultural,0) AS sector_share_sum, - coalesce(load.sector_count_residential,0) + - coalesce(load.sector_count_retail,0) + - coalesce(load.sector_count_industrial,0) + - coalesce(load.sector_count_agricultural,0) AS sector_count_sum - FROM model_draft.ego_demand_loadarea AS load - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET sector_area_sum = t2.sector_area_sum, + sector_share_sum = t2.sector_share_sum, + sector_count_sum = t2.sector_count_sum + FROM ( + SELECT id, + coalesce(load.sector_area_residential,0) + + coalesce(load.sector_area_retail,0) + + coalesce(load.sector_area_industrial,0) + + coalesce(load.sector_area_agricultural,0) AS sector_area_sum, + coalesce(load.sector_share_residential,0) + + coalesce(load.sector_share_retail,0) + + coalesce(load.sector_share_industrial,0) + + coalesce(load.sector_share_agricultural,0) AS sector_share_sum, + coalesce(load.sector_count_residential,0) + + coalesce(load.sector_count_retail,0) + + coalesce(load.sector_count_industrial,0) + + coalesce(load.sector_count_agricultural,0) AS sector_count_sum + FROM model_draft.ego_demand_loadarea AS load + ) AS t2 + WHERE t1.id = t2.id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_boundaries_bkg_vg250_6_gem_clean','ego_dp_loadarea_loadcut_griddistrict.sql',' '); +-- Calculate statistics like NUTS and AGS code -- nuts code (nuts) -UPDATE model_draft.ego_demand_loadarea AS t1 - SET nuts = t2.nuts - FROM ( - SELECT loads.id AS id, - vg.nuts AS nuts - FROM model_draft.ego_demand_loadarea AS loads, - model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg - WHERE vg.geom && loads.geom_centre AND - ST_CONTAINS(vg.geom,loads.geom_centre) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET nuts = t2.nuts + FROM ( + SELECT loads.id AS id, + vg.nuts AS nuts + FROM model_draft.ego_demand_loadarea AS loads, + model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg + WHERE vg.geom && loads.geom_centre AND + ST_CONTAINS(vg.geom,loads.geom_centre) + ) AS t2 + WHERE t1.id = t2.id; -- regionalschlüssel (rs_0) -UPDATE model_draft.ego_demand_loadarea AS t1 - SET rs_0 = t2.rs_0 - FROM ( - SELECT loads.id, - vg.rs_0 - FROM model_draft.ego_demand_loadarea AS loads, - model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg - WHERE vg.geom && loads.geom_centre AND - ST_CONTAINS(vg.geom,loads.geom_centre) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET rs_0 = t2.rs_0 + FROM ( + SELECT loads.id, + vg.rs_0 + FROM model_draft.ego_demand_loadarea AS loads, + model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg + WHERE vg.geom && loads.geom_centre AND + ST_CONTAINS(vg.geom,loads.geom_centre) + ) AS t2 + WHERE t1.id = t2.id; -- gemeindeschlüssel (ags_0) -UPDATE model_draft.ego_demand_loadarea AS t1 - SET ags_0 = t2.ags_0 - FROM ( - SELECT loads.id AS id, - vg.ags_0 AS ags_0 - FROM model_draft.ego_demand_loadarea AS loads, - model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg - WHERE vg.geom && loads.geom_centre AND - ST_CONTAINS(vg.geom,loads.geom_centre) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET ags_0 = t2.ags_0 + FROM ( + SELECT loads.id AS id, + vg.ags_0 AS ags_0 + FROM model_draft.ego_demand_loadarea AS loads, + model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg + WHERE vg.geom && loads.geom_centre AND + ST_CONTAINS(vg.geom,loads.geom_centre) + ) AS t2 + WHERE t1.id = t2.id; -- substation id -UPDATE model_draft.ego_demand_loadarea AS t1 - SET subst_id = t2.subst_id - FROM ( - SELECT a.id AS id, - b.subst_id AS subst_id - FROM model_draft.ego_demand_loadarea AS a, - model_draft.ego_grid_mv_griddistrict AS b - WHERE b.geom && a.geom_centre AND - ST_CONTAINS(b.geom,a.geom_centre) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea AS t1 + SET subst_id = t2.subst_id + FROM ( + SELECT a.id AS id, + b.subst_id AS subst_id + FROM model_draft.ego_demand_loadarea AS a, + model_draft.ego_grid_mv_griddistrict AS b + WHERE b.geom && a.geom_centre AND + ST_CONTAINS(b.geom,a.geom_centre) + ) AS t2 + WHERE t1.id = t2.id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_demand_loadarea','ego_dp_loadarea_loadcut_griddistrict.sql',' '); --- loads without ags_0 -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_loadarea_error_noags_mview CASCADE; -CREATE MATERIALIZED VIEW model_draft.ego_demand_loadarea_error_noags_mview AS - SELECT loads.id, - loads.geom - FROM model_draft.ego_demand_loadarea AS loads - WHERE loads.ags_0 IS NULL; +-- Check for Loadareas without AGS code +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_loadarea_error_noags_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.ego_demand_loadarea_error_noags_mview AS + SELECT loads.id, + loads.geom + FROM model_draft.ego_demand_loadarea AS loads + WHERE loads.ags_0 IS NULL; -- index (id) -CREATE UNIQUE INDEX ego_demand_loadarea_error_noags_mview_id_idx - ON model_draft.ego_demand_loadarea_error_noags_mview (id); +CREATE UNIQUE INDEX ego_demand_loadarea_error_noags_mview_id_idx + ON model_draft.ego_demand_loadarea_error_noags_mview (id); -- index GIST (geom) -CREATE INDEX ego_demand_loadarea_error_noags_mview_geom_idx - ON model_draft.ego_demand_loadarea_error_noags_mview USING GIST (geom); +CREATE INDEX ego_demand_loadarea_error_noags_mview_geom_idx + ON model_draft.ego_demand_loadarea_error_noags_mview USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_loadarea_error_noags_mview OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_loadarea_error_noags_mview OWNER TO oeuser; -- metadata -COMMENT ON MATERIALIZED VIEW model_draft.ego_demand_loadarea_error_noags_mview IS '{ +COMMENT ON MATERIALIZED VIEW model_draft.ego_demand_loadarea_error_noags_mview IS '{ "comment": "eGoDP - Temporary table", "version": "v0.3.0", "published": "none" }'; @@ -636,15 +653,15 @@ CREATE TABLE model_draft.ego_demand_loadarea_ta AS subst_id = '593'; -- PK -ALTER TABLE model_draft.ego_demand_loadarea_ta +ALTER TABLE model_draft.ego_demand_loadarea_ta ADD PRIMARY KEY (id); -- index GIST (geom) -CREATE INDEX ego_demand_loadarea_ta_geom_idx - ON model_draft.ego_demand_loadarea_ta USING GIST (geom); +CREATE INDEX ego_demand_loadarea_ta_geom_idx + ON model_draft.ego_demand_loadarea_ta USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_loadarea_ta OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_loadarea_ta OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_loadarea_ta','ego_dp_loadarea_loadcut_griddistrict.sql',' '); @@ -662,19 +679,19 @@ CREATE TABLE model_draft.ego_demand_loadarea_spf AS ORDER BY loads.id; -- PK -ALTER TABLE model_draft.ego_demand_loadarea_spf +ALTER TABLE model_draft.ego_demand_loadarea_spf ADD PRIMARY KEY (id); -- index GIST (geom) CREATE INDEX ego_demand_loadarea_spf_geom_idx - ON model_draft.ego_demand_loadarea_spf USING GIST (geom); + ON model_draft.ego_demand_loadarea_spf USING GIST (geom); -- index GIST (geom_centre) CREATE INDEX ego_demand_loadarea_spf_geom_centre_idx ON model_draft.ego_demand_loadarea_spf USING GIST (geom_centre); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_loadarea_spf OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_loadarea_spf OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_loadarea_spf','ego_dp_loadarea_loadcut_griddistrict.sql',' '); diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_loadcut_voronoi.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_loadcut_voronoi.sql index 86fb5442..8be63db0 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_loadcut_voronoi.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_loadcut_voronoi.sql @@ -1,59 +1,70 @@ /* -loadareas per mv-voronoi -insert cutted load melt -exclude smaller 100m² - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +Cut Loadarea with MV Voronoi cells +Identify and exclude Loadarea smaller than 100m². +Generate Centre of Loadareas with Centroid and PointOnSurface. +Calculate population from Census 2011. +Cut all 4 OSM sectors with MV Griddistricts. +Calculate statistics like NUTS and AGS code. +Check for Loadareas without AGS code. + + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ + -- loadareas per mv-griddistrict -DROP TABLE IF EXISTS model_draft.ego_demand_loadarea_voi CASCADE; -CREATE TABLE model_draft.ego_demand_loadarea_voi ( - id SERIAL NOT NULL, - subst_id integer, - area_ha numeric, - nuts varchar(5), - rs_0 varchar(12), - ags_0 varchar(12), - otg_id integer, - un_id integer, - zensus_sum integer, - zensus_count integer, - zensus_density numeric, - ioer_sum numeric, - ioer_count integer, - ioer_density numeric, - sector_area_residential numeric, - sector_area_retail numeric, - sector_area_industrial numeric, - sector_area_agricultural numeric, - sector_area_sum numeric, - sector_share_residential numeric, - sector_share_retail numeric, - sector_share_industrial numeric, - sector_share_agricultural numeric, - sector_share_sum numeric, - sector_count_residential integer, - sector_count_retail integer, - sector_count_industrial integer, - sector_count_agricultural integer, - sector_count_sum integer, - sector_consumption_residential numeric, - sector_consumption_retail numeric, - sector_consumption_industrial numeric, - sector_consumption_agricultural numeric, - sector_consumption_sum numeric, - geom_centroid geometry(POINT,3035), - geom_surfacepoint geometry(POINT,3035), - geom_centre geometry(POINT,3035), - geom geometry(Polygon,3035), - CONSTRAINT ego_demand_loadarea_voi_pkey PRIMARY KEY (id)); +DROP TABLE IF EXISTS model_draft.ego_demand_loadarea_voi CASCADE; +CREATE TABLE model_draft.ego_demand_loadarea_voi ( + id SERIAL NOT NULL, + subst_id integer, + area_ha numeric, + nuts varchar(5), + rs_0 varchar(12), + ags_0 varchar(12), + otg_id integer, + un_id integer, + zensus_sum integer, + zensus_count integer, + zensus_density numeric, + ioer_sum numeric, + ioer_count integer, + ioer_density numeric, + sector_area_residential numeric, + sector_area_retail numeric, + sector_area_industrial numeric, + sector_area_agricultural numeric, + sector_area_sum numeric, + sector_share_residential numeric, + sector_share_retail numeric, + sector_share_industrial numeric, + sector_share_agricultural numeric, + sector_share_sum numeric, + sector_count_residential integer, + sector_count_retail integer, + sector_count_industrial integer, + sector_count_agricultural integer, + sector_count_sum integer, + sector_consumption_residential numeric, + sector_consumption_retail numeric, + sector_consumption_industrial numeric, + sector_consumption_agricultural numeric, + sector_consumption_sum numeric, + geom_centroid geometry(POINT,3035), + geom_surfacepoint geometry(POINT,3035), + geom_centre geometry(POINT,3035), + geom geometry(Polygon,3035), + CONSTRAINT ego_demand_loadarea_voi_pkey PRIMARY KEY (id)); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_loadarea_voi OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_loadarea_voi OWNER TO oeuser; + +-- metadata +COMMENT ON TABLE ego_demand_loadarea_voi.table IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_load_melt','ego_dp_loadarea_loadcut_voronoi.sql',' '); @@ -63,123 +74,130 @@ SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_hvmv_substation -- insert cutted load melt INSERT INTO model_draft.ego_demand_loadarea_voi (geom) - SELECT loads.geom ::geometry(Polygon,3035) - FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(load.geom,dis.geom))).geom AS geom - FROM model_draft.ego_demand_load_melt AS load, - model_draft.ego_grid_hvmv_substation_voronoi AS dis - WHERE load.geom && dis.geom - ) AS loads - WHERE ST_GeometryType(loads.geom) = 'ST_Polygon'; + SELECT loads.geom ::geometry(Polygon,3035) + FROM ( + SELECT (ST_DUMP(ST_SAFE_INTERSECTION(load.geom,dis.geom))).geom AS geom + FROM model_draft.ego_demand_load_melt AS load, + model_draft.ego_grid_hvmv_substation_voronoi AS dis + WHERE load.geom && dis.geom + ) AS loads + WHERE ST_GeometryType(loads.geom) = 'ST_Polygon'; -- index GIST (geom) -CREATE INDEX ego_demand_loadarea_voi_geom_idx - ON model_draft.ego_demand_loadarea_voi USING gist (geom); +CREATE INDEX ego_demand_loadarea_voi_geom_idx + ON model_draft.ego_demand_loadarea_voi USING gist (geom); -- update area (area_ha) -UPDATE model_draft.ego_demand_loadarea_voi AS t1 - SET area_ha = t2.area - FROM (SELECT loads.id, - ST_AREA(ST_TRANSFORM(loads.geom,3035))/10000 AS area - FROM model_draft.ego_demand_loadarea_voi AS loads - ) AS t2 - WHERE t1.id = t2.id; - - --- validate area (area_ha) -> exclude smaller 100m² -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_loadarea_voi_smaller100m2_mview CASCADE; -CREATE MATERIALIZED VIEW model_draft.ego_demand_loadarea_voi_smaller100m2_mview AS - SELECT loads.id AS id, - loads.area_ha AS area_ha, - loads.geom AS geom - FROM model_draft.ego_demand_loadarea_voi AS loads - WHERE loads.area_ha < 0.001; +UPDATE model_draft.ego_demand_loadarea_voi AS t1 + SET area_ha = t2.area + FROM ( + SELECT loads.id, + ST_AREA(ST_TRANSFORM(loads.geom,3035))/10000 AS area + FROM model_draft.ego_demand_loadarea_voi AS loads + ) AS t2 + WHERE t1.id = t2.id; + + +-- Identify and exclude Loadarea smaller than 100m² +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_loadarea_voi_smaller100m2_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.ego_demand_loadarea_voi_smaller100m2_mview AS + SELECT loads.id AS id, + loads.area_ha AS area_ha, + loads.geom AS geom + FROM model_draft.ego_demand_loadarea_voi AS loads + WHERE loads.area_ha < 0.001; -- index (id) -CREATE UNIQUE INDEX ego_demand_loadarea_voi_smaller100m2_mview_id_idx - ON model_draft.ego_demand_loadarea_voi_smaller100m2_mview (id); +CREATE UNIQUE INDEX ego_demand_loadarea_voi_smaller100m2_mview_id_idx + ON model_draft.ego_demand_loadarea_voi_smaller100m2_mview (id); -- index GIST (geom) -CREATE INDEX ego_demand_loadarea_voi_smaller100m2_mview_geom_idx - ON model_draft.ego_demand_loadarea_voi_smaller100m2_mview USING GIST (geom); +CREATE INDEX ego_demand_loadarea_voi_smaller100m2_mview_geom_idx + ON model_draft.ego_demand_loadarea_voi_smaller100m2_mview USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_loadarea_voi_smaller100m2_mview OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_loadarea_voi_smaller100m2_mview OWNER TO oeuser; + +-- metadata +COMMENT ON MATERIALIZED VIEW ego_demand_loadarea_voi_smaller100m2_mview.table IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_loadarea_voi_smaller100m2_mview','ego_dp_loadarea_loadcut_voronoi.sql',' '); - --- remove errors (area_ha) -DELETE FROM model_draft.ego_demand_loadarea_voi AS loads - WHERE loads.area_ha < 0.001; +-- Exclude Loadarea smaller than 100m² +DELETE FROM model_draft.ego_demand_loadarea_voi AS loads + WHERE loads.area_ha < 0.001; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_demand_loadarea_voi','ego_dp_loadarea_loadcut_voronoi.sql',' '); +-- Generate Centre of Loadareas with Centroid and PointOnSurface -- centroid -UPDATE model_draft.ego_demand_loadarea_voi AS t1 - SET geom_centroid = t2.geom_centroid - FROM ( - SELECT loads.id AS id, - ST_Centroid(loads.geom) AS geom_centroid - FROM model_draft.ego_demand_loadarea_voi AS loads - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea_voi AS t1 + SET geom_centroid = t2.geom_centroid + FROM ( + SELECT loads.id AS id, + ST_Centroid(loads.geom) AS geom_centroid + FROM model_draft.ego_demand_loadarea_voi AS loads + ) AS t2 + WHERE t1.id = t2.id; -- index GIST (geom_centroid) -CREATE INDEX ego_demand_loadarea_voi_geom_centroid_idx - ON model_draft.ego_demand_loadarea_voi USING GIST (geom_centroid); +CREATE INDEX ego_demand_loadarea_voi_geom_centroid_idx + ON model_draft.ego_demand_loadarea_voi USING GIST (geom_centroid); -- surfacepoint -UPDATE model_draft.ego_demand_loadarea_voi AS t1 - SET geom_surfacepoint = t2.geom_surfacepoint - FROM ( - SELECT loads.id AS id, - ST_PointOnSurface(loads.geom) AS geom_surfacepoint - FROM model_draft.ego_demand_loadarea_voi AS loads - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea_voi AS t1 + SET geom_surfacepoint = t2.geom_surfacepoint + FROM ( + SELECT loads.id AS id, + ST_PointOnSurface(loads.geom) AS geom_surfacepoint + FROM model_draft.ego_demand_loadarea_voi AS loads + ) AS t2 + WHERE t1.id = t2.id; -- index GIST (geom_surfacepoint) -CREATE INDEX ego_demand_loadarea_voi_geom_surfacepoint_idx - ON model_draft.ego_demand_loadarea_voi USING GIST (geom_surfacepoint); +CREATE INDEX ego_demand_loadarea_voi_geom_surfacepoint_idx + ON model_draft.ego_demand_loadarea_voi USING GIST (geom_surfacepoint); -- centre with centroid if inside loadarea -UPDATE model_draft.ego_demand_loadarea_voi AS t1 - SET geom_centre = t2.geom_centre - FROM ( - SELECT loads.id AS id, - loads.geom_centroid AS geom_centre - FROM model_draft.ego_demand_loadarea_voi AS loads - WHERE loads.geom && loads.geom_centroid AND - ST_CONTAINS(loads.geom,loads.geom_centroid) - )AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea_voi AS t1 + SET geom_centre = t2.geom_centre + FROM ( + SELECT loads.id AS id, + loads.geom_centroid AS geom_centre + FROM model_draft.ego_demand_loadarea_voi AS loads + WHERE loads.geom && loads.geom_centroid AND + ST_CONTAINS(loads.geom,loads.geom_centroid) + )AS t2 + WHERE t1.id = t2.id; -- centre with surfacepoint if outside area -UPDATE model_draft.ego_demand_loadarea_voi AS t1 - SET geom_centre = t2.geom_centre - FROM ( - SELECT loads.id AS id, - loads.geom_surfacepoint AS geom_centre - FROM model_draft.ego_demand_loadarea_voi AS loads - WHERE loads.geom_centre IS NULL - )AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea_voi AS t1 + SET geom_centre = t2.geom_centre + FROM ( + SELECT loads.id AS id, + loads.geom_surfacepoint AS geom_centre + FROM model_draft.ego_demand_loadarea_voi AS loads + WHERE loads.geom_centre IS NULL + )AS t2 + WHERE t1.id = t2.id; -- create index GIST (geom_centre) -CREATE INDEX ego_demand_loadarea_voi_geom_centre_idx - ON model_draft.ego_demand_loadarea_voi USING GIST (geom_centre); +CREATE INDEX ego_demand_loadarea_voi_geom_centre_idx + ON model_draft.ego_demand_loadarea_voi USING GIST (geom_centre); /* -- validate geom_centre - SELECT loads.id AS id - FROM model_draft.ego_demand_loadarea_voi AS loads - WHERE NOT ST_CONTAINS(loads.geom,loads.geom_centre); */ - -/* +SELECT loads.id AS id +FROM model_draft.ego_demand_loadarea_voi AS loads +WHERE NOT ST_CONTAINS(loads.geom,loads.geom_centre); +*/ +/* -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','society','destatis_zensus_population_per_ha_mview','ego_dp_loadarea_loadcut_voronoi.sql',' '); @@ -247,7 +265,7 @@ CREATE INDEX urban_sector_per_grid_district_1_residential_geom_idx ON model_draft.ego_osm_sector_per_griddistrict_1_residential USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_1_residential OWNER TO oeuser; +ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_1_residential OWNER TO oeuser; -- sector stats UPDATE model_draft.ego_demand_loadarea_voi AS t1 @@ -296,7 +314,7 @@ CREATE INDEX urban_sector_per_grid_district_2_retail_geom_idx ON model_draft.ego_osm_sector_per_griddistrict_2_retail USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_2_retail OWNER TO oeuser; +ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_2_retail OWNER TO oeuser; -- sector stats UPDATE model_draft.ego_demand_loadarea_voi AS t1 @@ -345,7 +363,7 @@ CREATE INDEX urban_sector_per_grid_district_3_industrial_geom_idx ON model_draft.ego_osm_sector_per_griddistrict_3_industrial USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_3_industrial OWNER TO oeuser; +ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_3_industrial OWNER TO oeuser; -- sector stats UPDATE model_draft.ego_demand_loadarea_voi AS t1 @@ -394,7 +412,7 @@ CREATE INDEX urban_sector_per_grid_district_4_agricultural_geom_idx ON model_draft.ego_osm_sector_per_griddistrict_4_agricultural USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_4_agricultural OWNER TO oeuser; +ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_4_agricultural OWNER TO oeuser; -- sector stats UPDATE model_draft.ego_demand_loadarea_voi AS t1 @@ -442,84 +460,90 @@ UPDATE model_draft.ego_demand_loadarea_voi AS t1 WHERE t1.id = t2.id; */ + +-- Calculate statistics like NUTS and AGS code -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_boundaries_bkg_vg250_6_gem_clean','ego_dp_loadarea_loadcut_voronoi.sql',' '); - -- nuts code (nuts) -UPDATE model_draft.ego_demand_loadarea_voi AS t1 - SET nuts = t2.nuts - FROM ( - SELECT loads.id AS id, - vg.nuts AS nuts - FROM model_draft.ego_demand_loadarea_voi AS loads, - model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg - WHERE vg.geom && loads.geom_centre AND - ST_CONTAINS(vg.geom,loads.geom_centre) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea_voi AS t1 + SET nuts = t2.nuts + FROM ( + SELECT loads.id AS id, + vg.nuts AS nuts + FROM model_draft.ego_demand_loadarea_voi AS loads, + model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg + WHERE vg.geom && loads.geom_centre AND + ST_CONTAINS(vg.geom,loads.geom_centre) + ) AS t2 + WHERE t1.id = t2.id; -- regionalschlüssel (rs_0) -UPDATE model_draft.ego_demand_loadarea_voi AS t1 - SET rs_0 = t2.rs_0 - FROM ( - SELECT loads.id, - vg.rs_0 - FROM model_draft.ego_demand_loadarea_voi AS loads, - model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg - WHERE vg.geom && loads.geom_centre AND - ST_CONTAINS(vg.geom,loads.geom_centre) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea_voi AS t1 + SET rs_0 = t2.rs_0 + FROM ( + SELECT loads.id, + vg.rs_0 + FROM model_draft.ego_demand_loadarea_voi AS loads, + model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg + WHERE vg.geom && loads.geom_centre AND + ST_CONTAINS(vg.geom,loads.geom_centre) + ) AS t2 + WHERE t1.id = t2.id; -- gemeindeschlüssel (ags_0) -UPDATE model_draft.ego_demand_loadarea_voi AS t1 - SET ags_0 = t2.ags_0 - FROM ( - SELECT loads.id AS id, - vg.ags_0 AS ags_0 - FROM model_draft.ego_demand_loadarea_voi AS loads, - model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg - WHERE vg.geom && loads.geom_centre AND - ST_CONTAINS(vg.geom,loads.geom_centre) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea_voi AS t1 + SET ags_0 = t2.ags_0 + FROM ( + SELECT loads.id AS id, + vg.ags_0 AS ags_0 + FROM model_draft.ego_demand_loadarea_voi AS loads, + model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS vg + WHERE vg.geom && loads.geom_centre AND + ST_CONTAINS(vg.geom,loads.geom_centre) + ) AS t2 + WHERE t1.id = t2.id; -- substation id -UPDATE model_draft.ego_demand_loadarea_voi AS t1 - SET subst_id = t2.subst_id - FROM ( - SELECT loads.id AS id, - dis.subst_id AS subst_id - FROM model_draft.ego_demand_loadarea_voi AS loads, - model_draft.ego_grid_mv_griddistrict AS dis - WHERE dis.geom && loads.geom_centre AND - ST_CONTAINS(dis.geom,loads.geom_centre) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_loadarea_voi AS t1 + SET subst_id = t2.subst_id + FROM ( + SELECT loads.id AS id, + dis.subst_id AS subst_id + FROM model_draft.ego_demand_loadarea_voi AS loads, + model_draft.ego_grid_mv_griddistrict AS dis + WHERE dis.geom && loads.geom_centre AND + ST_CONTAINS(dis.geom,loads.geom_centre) + ) AS t2 + WHERE t1.id = t2.id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_demand_loadarea_voi','ego_dp_loadarea_loadcut_voronoi.sql',' '); -- loads without ags_0 -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_loadarea_voi_error_noags_mview CASCADE; -CREATE MATERIALIZED VIEW model_draft.ego_demand_loadarea_voi_error_noags_mview AS - SELECT loads.id, - loads.geom - FROM model_draft.ego_demand_loadarea_voi AS loads - WHERE loads.ags_0 IS NULL; +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_loadarea_voi_error_noags_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.ego_demand_loadarea_voi_error_noags_mview AS + SELECT loads.id, + loads.geom + FROM model_draft.ego_demand_loadarea_voi AS loads + WHERE loads.ags_0 IS NULL; -- index (id) -CREATE UNIQUE INDEX ego_demand_loadarea_voi_error_noags_mview_id_idx - ON model_draft.ego_demand_loadarea_voi_error_noags_mview (id); +CREATE UNIQUE INDEX ego_demand_loadarea_voi_error_noags_mview_id_idx + ON model_draft.ego_demand_loadarea_voi_error_noags_mview (id); -- index GIST (geom) -CREATE INDEX ego_demand_loadarea_voi_error_noags_mview_geom_idx - ON model_draft.ego_demand_loadarea_voi_error_noags_mview USING GIST (geom); +CREATE INDEX ego_demand_loadarea_voi_error_noags_mview_geom_idx + ON model_draft.ego_demand_loadarea_voi_error_noags_mview USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_loadarea_voi_error_noags_mview OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_loadarea_voi_error_noags_mview OWNER TO oeuser; + +-- metadata +COMMENT ON MATERIALIZED VIEW model_draft.ego_demand_loadarea_voi_error_noags_mview IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_loadarea_voi_error_noags_mview','ego_dp_loadarea_loadcut_voronoi.sql',' '); @@ -546,15 +570,15 @@ CREATE TABLE model_draft.ego_demand_loadarea_voi_ta AS subst_id = '593'; -- PK -ALTER TABLE model_draft.ego_demand_loadarea_voi_ta +ALTER TABLE model_draft.ego_demand_loadarea_voi_ta ADD PRIMARY KEY (id); -- index GIST (geom) CREATE INDEX ego_demand_loadarea_voi_ta_geom_idx - ON model_draft.ego_demand_loadarea_voi_ta USING GIST (geom); + ON model_draft.ego_demand_loadarea_voi_ta USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_loadarea_voi_ta OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_loadarea_voi_ta OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_loadarea_voi_ta','ego_dp_loadarea_loadcut_voronoi.sql',' '); @@ -572,19 +596,19 @@ CREATE TABLE model_draft.ego_demand_loadarea_voi_spf AS ORDER BY loads.id; -- PK -ALTER TABLE model_draft.ego_demand_loadarea_voi_spf +ALTER TABLE model_draft.ego_demand_loadarea_voi_spf ADD PRIMARY KEY (id); -- index GIST (geom) CREATE INDEX ego_demand_loadarea_voi_spf_geom_idx - ON model_draft.ego_demand_loadarea_voi_spf USING GIST (geom); + ON model_draft.ego_demand_loadarea_voi_spf USING GIST (geom); -- index GIST (geom_centre) CREATE INDEX ego_demand_loadarea_voi_spf_geom_centre_idx ON model_draft.ego_demand_loadarea_voi_spf USING GIST (geom_centre); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_loadarea_voi_spf OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_loadarea_voi_spf OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_loadarea_voi_spf','ego_dp_loadarea_loadcut_voronoi.sql',' '); diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_loadmelt.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_loadmelt.sql index 49d9341d..69ef6f07 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_loadmelt.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_loadmelt.sql @@ -1,14 +1,16 @@ /* -Combine OSM loads and zensus load cluster. -Collect loads from 1. ego_demand_la_osm and 2. ego_demand_la_zensus_cluster in table ego_demand_load_collect. -Buffer collection with 100m and unbuffer with 99 inserted in ego_demand_load_melt. -The 1m difference has to be added to eliminate the uncertainty of the buffer. -Then validate the areas and fix invalid geoms with a 1m buffer. - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +Melt loads from OSM landuse and Census 2011 +Collect loads from both sources. +Buffer collected loads with with 100m. +Unbuffer the collection with 100m. +Validate the melted geometries. +Fix geometries with error. +Check again for errors. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -- collect loads @@ -37,11 +39,11 @@ INSERT INTO model_draft.ego_demand_load_collect (geom) ORDER BY cid; -- index GIST (geom) -CREATE INDEX ego_demand_load_collect_geom_idx - ON model_draft.ego_demand_load_collect USING GIST (geom); +CREATE INDEX ego_demand_load_collect_geom_idx + ON model_draft.ego_demand_load_collect USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_load_collect OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_load_collect OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_demand_load_collect IS '{ @@ -69,11 +71,11 @@ INSERT INTO model_draft.ego_demand_load_collect_buffer100 (geom) ORDER BY id; -- index GIST (geom) -CREATE INDEX ego_demand_load_collect_buffer100_geom_idx - ON model_draft.ego_demand_load_collect_buffer100 USING GIST (geom); +CREATE INDEX ego_demand_load_collect_buffer100_geom_idx + ON model_draft.ego_demand_load_collect_buffer100 USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_load_collect_buffer100 OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_load_collect_buffer100 OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_demand_load_collect_buffer100 IS '{ @@ -102,11 +104,11 @@ INSERT INTO model_draft.ego_demand_load_melt (geom) ORDER BY buffer.id; -- index GIST (geom) -CREATE INDEX ego_demand_load_melt_geom_idx - ON model_draft.ego_demand_load_melt USING GIST (geom); +CREATE INDEX ego_demand_load_melt_geom_idx + ON model_draft.ego_demand_load_melt USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_load_melt OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_load_melt OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_demand_load_melt IS '{ @@ -118,32 +120,32 @@ COMMENT ON TABLE model_draft.ego_demand_load_melt IS '{ SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_load_melt','ego_dp_loadarea_loadmelt.sql',' '); --- validate geom -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_geom_mview CASCADE; -CREATE MATERIALIZED VIEW model_draft.ego_demand_load_melt_error_geom_mview AS - SELECT test.id, - test.error, - reason(ST_IsValidDetail(test.geom)) AS error_reason, - ST_SetSRID(location(ST_IsValidDetail(test.geom)),3035) ::geometry(Point,3035) AS error_location, - test.geom ::geometry(Polygon,3035) AS geom - FROM ( - SELECT source.id AS id, -- PK - ST_IsValid(source.geom) AS error, - source.geom AS geom - FROM model_draft.ego_demand_load_melt AS source -- Table - ) AS test - WHERE test.error = FALSE; +-- Validate the melted geometries +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_geom_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.ego_demand_load_melt_error_geom_mview AS + SELECT test.id, + test.error, + reason(ST_IsValidDetail(test.geom)) AS error_reason, + ST_SetSRID(location(ST_IsValidDetail(test.geom)),3035) ::geometry(Point,3035) AS error_location, + test.geom ::geometry(Polygon,3035) AS geom + FROM ( + SELECT source.id AS id, -- PK + ST_IsValid(source.geom) AS error, + source.geom AS geom + FROM model_draft.ego_demand_load_melt AS source -- Table + ) AS test + WHERE test.error = FALSE; -- index (id) -CREATE UNIQUE INDEX ego_demand_load_melt_error_geom_mview_id_idx - ON model_draft.ego_demand_load_melt_error_geom_mview (id); +CREATE UNIQUE INDEX ego_demand_load_melt_error_geom_mview_id_idx + ON model_draft.ego_demand_load_melt_error_geom_mview (id); -- index GIST (geom) -CREATE INDEX ego_demand_load_melt_error_geom_mview_geom_idx - ON model_draft.ego_demand_load_melt_error_geom_mview USING GIST (geom); - +CREATE INDEX ego_demand_load_melt_error_geom_mview_geom_idx + ON model_draft.ego_demand_load_melt_error_geom_mview USING GIST (geom); + -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_load_melt_error_geom_mview OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_load_melt_error_geom_mview OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_demand_load_melt_error_geom_mview IS '{ @@ -155,33 +157,33 @@ COMMENT ON TABLE model_draft.ego_demand_load_melt_error_geom_mview IS '{ SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_load_melt_error_geom_mview','ego_dp_loadarea_loadmelt.sql',' '); --- fix geoms with error -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_geom_fix_mview CASCADE; -CREATE MATERIALIZED VIEW model_draft.ego_demand_load_melt_error_geom_fix_mview AS - SELECT fix.id AS id, - ST_IsValid(fix.geom) AS error, - GeometryType(fix.geom) AS geom_type, - ST_AREA(fix.geom) AS area, - fix.geom_buffer ::geometry(POLYGON,3035) AS geom_buffer, - fix.geom ::geometry(POLYGON,3035) AS geom - FROM ( - SELECT fehler.id AS id, - ST_BUFFER(fehler.geom, -1) AS geom_buffer, - (ST_DUMP(ST_BUFFER(ST_BUFFER(fehler.geom, -1), 1))).geom AS geom - FROM model_draft.ego_demand_load_melt_error_geom_mview AS fehler - ) AS fix - ORDER BY fix.id; +-- Fix geometries with error +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_geom_fix_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.ego_demand_load_melt_error_geom_fix_mview AS + SELECT fix.id AS id, + ST_IsValid(fix.geom) AS error, + GeometryType(fix.geom) AS geom_type, + ST_AREA(fix.geom) AS area, + fix.geom_buffer ::geometry(POLYGON,3035) AS geom_buffer, + fix.geom ::geometry(POLYGON,3035) AS geom + FROM ( + SELECT fehler.id AS id, + ST_BUFFER(fehler.geom, -1) AS geom_buffer, + (ST_DUMP(ST_BUFFER(ST_BUFFER(fehler.geom, -1), 1))).geom AS geom + FROM model_draft.ego_demand_load_melt_error_geom_mview AS fehler + ) AS fix + ORDER BY fix.id; -- index (id) -CREATE UNIQUE INDEX ego_demand_load_melt_error_geom_fix_mview_id_idx - ON model_draft.ego_demand_load_melt_error_geom_fix_mview (id); +CREATE UNIQUE INDEX ego_demand_load_melt_error_geom_fix_mview_id_idx + ON model_draft.ego_demand_load_melt_error_geom_fix_mview (id); -- index GIST (geom) -CREATE INDEX ego_demand_load_melt_error_geom_fix_mview_geom_idx - ON model_draft.ego_demand_load_melt_error_geom_fix_mview USING GIST (geom); - +CREATE INDEX ego_demand_load_melt_error_geom_fix_mview_geom_idx + ON model_draft.ego_demand_load_melt_error_geom_fix_mview USING GIST (geom); + -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_load_melt_error_geom_fix_mview OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_load_melt_error_geom_fix_mview OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_demand_load_melt_error_geom_fix_mview IS '{ @@ -194,45 +196,45 @@ SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_load_melt_erro -- update fixed geoms -UPDATE model_draft.ego_demand_load_melt AS t1 - SET geom = t2.geom - FROM ( - SELECT fix.id AS id, - fix.geom AS geom - FROM model_draft.ego_demand_load_melt_error_geom_fix_mview AS fix - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_demand_load_melt AS t1 + SET geom = t2.geom + FROM ( + SELECT fix.id AS id, + fix.geom AS geom + FROM model_draft.ego_demand_load_melt_error_geom_fix_mview AS fix + ) AS t2 + WHERE t1.id = t2.id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_demand_load_melt','ego_dp_loadarea_loadmelt.sql',' '); --- check for errors again -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_2_geom_mview CASCADE; -CREATE MATERIALIZED VIEW model_draft.ego_demand_load_melt_error_2_geom_mview AS - SELECT test.id AS id, - test.error AS error, - reason(ST_IsValidDetail(test.geom)) AS error_reason, - ST_SetSRID(location(ST_IsValidDetail(test.geom)),3035) ::geometry(Point,3035) AS error_location, - ST_TRANSFORM(test.geom,3035) ::geometry(Polygon,3035) AS geom - FROM ( - SELECT source.id AS id, - ST_IsValid(source.geom) AS error, - source.geom ::geometry(Polygon,3035) AS geom - FROM model_draft.ego_demand_load_melt AS source - ) AS test - WHERE test.error = FALSE; +-- Check again for errors. +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_2_geom_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.ego_demand_load_melt_error_2_geom_mview AS + SELECT test.id AS id, + test.error AS error, + reason(ST_IsValidDetail(test.geom)) AS error_reason, + ST_SetSRID(location(ST_IsValidDetail(test.geom)),3035) ::geometry(Point,3035) AS error_location, + ST_TRANSFORM(test.geom,3035) ::geometry(Polygon,3035) AS geom + FROM ( + SELECT source.id AS id, + ST_IsValid(source.geom) AS error, + source.geom ::geometry(Polygon,3035) AS geom + FROM model_draft.ego_demand_load_melt AS source + ) AS test + WHERE test.error = FALSE; -- index (id) -CREATE UNIQUE INDEX ego_demand_load_melt_error_2_geom_mview_id_idx - ON model_draft.ego_demand_load_melt_error_2_geom_mview (id); +CREATE UNIQUE INDEX ego_demand_load_melt_error_2_geom_mview_id_idx + ON model_draft.ego_demand_load_melt_error_2_geom_mview (id); -- index GIST (geom) -CREATE INDEX ego_demand_load_melt_error_2_geom_mview_geom_idx - ON model_draft.ego_demand_load_melt_error_2_geom_mview USING GIST (geom); - +CREATE INDEX ego_demand_load_melt_error_2_geom_mview_geom_idx + ON model_draft.ego_demand_load_melt_error_2_geom_mview USING GIST (geom); + -- grant (oeuser) -ALTER TABLE model_draft.ego_demand_load_melt_error_2_geom_mview OWNER TO oeuser; +ALTER TABLE model_draft.ego_demand_load_melt_error_2_geom_mview OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_demand_load_melt_error_2_geom_mview IS '{ @@ -245,10 +247,10 @@ SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_demand_load_melt_erro /* -- drop temp -DROP TABLE IF EXISTS model_draft.ego_demand_load_collect CASCADE; -DROP TABLE IF EXISTS model_draft.ego_demand_load_collect_buffer100 CASCADE; -DROP TABLE IF EXISTS model_draft.ego_demand_load_melt CASCADE; -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_geom_mview CASCADE; -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_geom_fix_mview CASCADE; -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_2_geom_mview CASCADE; - */ \ No newline at end of file +DROP TABLE IF EXISTS model_draft.ego_demand_load_collect CASCADE; +DROP TABLE IF EXISTS model_draft.ego_demand_load_collect_buffer100 CASCADE; +DROP TABLE IF EXISTS model_draft.ego_demand_load_melt CASCADE; +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_geom_mview CASCADE; +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_geom_fix_mview CASCADE; +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_demand_load_melt_error_2_geom_mview CASCADE; + */ diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_loads.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_loads.sql index 2b1d3fd5..f354688b 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_loads.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_loads.sql @@ -1,15 +1,16 @@ /* -osm loads -Excludes large scale consumer -Buffer osm urban sectors with 100m -Unbuffer buffer with -100m - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +OSM Loads from landuse +Excludes large scale consumer. +Buffer OSM urban sectors with 100m +Unbuffer buffer with -100m + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_hv_largescaleconsumer','ego_dp_loadarea_loads.sql',' '); diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_peakload.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_peakload.sql index a0fd2658..75ee8a17 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_peakload.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_peakload.sql @@ -1,56 +1,64 @@ /* -calculate pekloads for loadareas -uses SLP parameters per sectors +Peak loads per Loadarea +Uses SLP parameters per sectors. -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "gplssm, Ludee" +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "gplssm, Ludee" */ +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_loadarea','ego_dp_loadarea_peakload.sql',' '); +SELECT ego_scenario_log('v0.3.0','input','scenario','ego_slp_parameters','ego_dp_loadarea_peakload.sql',' '); -- residential UPDATE model_draft.ego_demand_loadarea as t1 - SET sector_peakload_residential = t2.peak_load - FROM ( SELECT la.id, - coalesce(slp.value * la.sector_consumption_residential,0) AS peak_load - FROM model_draft.ego_demand_loadarea AS la, - scenario.ego_slp_parameters AS slp - WHERE slp.parameter = 'consumption_peak_h0') AS t2 - WHERE t1.id = t2.id; - + SET sector_peakload_residential = t2.peak_load + FROM ( + SELECT la.id, + coalesce(slp.value * la.sector_consumption_residential,0) AS peak_load + FROM model_draft.ego_demand_loadarea AS la, + scenario.ego_slp_parameters AS slp + WHERE slp.parameter = 'consumption_peak_h0' + ) AS t2 + WHERE t1.id = t2.id; -- retail UPDATE model_draft.ego_demand_loadarea as t1 - SET sector_peakload_retail = t2.peak_load - FROM ( SELECT la.id, - coalesce(slp.value * la.sector_consumption_retail,0) AS peak_load - FROM model_draft.ego_demand_loadarea AS la, - scenario.ego_slp_parameters AS slp - WHERE slp.parameter = 'consumption_peak_g0') AS t2 - WHERE t1.id = t2.id; - - + SET sector_peakload_retail = t2.peak_load + FROM ( + SELECT la.id, + coalesce(slp.value * la.sector_consumption_retail,0) AS peak_load + FROM model_draft.ego_demand_loadarea AS la, + scenario.ego_slp_parameters AS slp + WHERE slp.parameter = 'consumption_peak_g0' + ) AS t2 + WHERE t1.id = t2.id; + -- industrial UPDATE model_draft.ego_demand_loadarea as t1 - SET sector_peakload_industrial = t2.peak_load - FROM ( SELECT la.id, - coalesce(slp.value * la.sector_consumption_industrial,0) AS peak_load - FROM model_draft.ego_demand_loadarea AS la, - scenario.ego_slp_parameters AS slp - WHERE slp.parameter = 'consumption_peak_i0') AS t2 - WHERE t1.id = t2.id; - - + SET sector_peakload_industrial = t2.peak_load + FROM ( + SELECT la.id, + coalesce(slp.value * la.sector_consumption_industrial,0) AS peak_load + FROM model_draft.ego_demand_loadarea AS la, + scenario.ego_slp_parameters AS slp + WHERE slp.parameter = 'consumption_peak_i0' + ) AS t2 + WHERE t1.id = t2.id; + -- agricultural UPDATE model_draft.ego_demand_loadarea as t1 - SET sector_peakload_agricultural = t2.peak_load - FROM ( SELECT la.id, - coalesce(slp.value * la.sector_consumption_agricultural,0) AS peak_load - FROM model_draft.ego_demand_loadarea AS la, - scenario.ego_slp_parameters AS slp - WHERE slp.parameter = 'consumption_peak_l0') AS t2 - WHERE t1.id = t2.id; + SET sector_peakload_agricultural = t2.peak_load + FROM ( + SELECT la.id, + coalesce(slp.value * la.sector_consumption_agricultural,0) AS peak_load + FROM model_draft.ego_demand_loadarea AS la, + scenario.ego_slp_parameters AS slp + WHERE slp.parameter = 'consumption_peak_l0' + ) AS t2 + WHERE t1.id = t2.id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_demand_loadarea','ego_dp_loadarea_peakload.sql',' '); diff --git a/dataprocessing/sql_snippets/ego_dp_loadarea_statistic.sql b/dataprocessing/sql_snippets/ego_dp_loadarea_statistic.sql index 9066bbbc..2307abc1 100644 --- a/dataprocessing/sql_snippets/ego_dp_loadarea_statistic.sql +++ b/dataprocessing/sql_snippets/ego_dp_loadarea_statistic.sql @@ -1,12 +1,14 @@ /* -loadareas per mv-griddistrict -insert cutted load melt -exclude smaller 100m2 - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +Results and statistics for eGoDP data +Substation, Loadarea, MV Griddistricts and Consumption. +MV Griddistrict types. +Municipality (Gemeinden). +Calculate statistics for BKG vg250. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -- ego scenario log (version,io,schema_name,table_name,script_name,comment) @@ -18,133 +20,161 @@ SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mv_griddistrict -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_loadarea','ego_dp_loadarea_statistic.sql',' '); +/* +-- Results and statistics for substation, Loadarea, MV Griddistricts and Consumption +DROP TABLE IF EXISTS model_draft.ego_data_processing_results CASCADE; +CREATE TABLE model_draft.ego_data_processing_results ( + id SERIAL, + version text, + schema_name text, + table_name text, + description text, + result integer, + unit text, + timestamp timestamp, + CONSTRAINT ego_data_processing_results_pkey PRIMARY KEY (id)); +*/ --- results and statistics for substation, load area, MV grid districts and consumption -DROP TABLE IF EXISTS model_draft.ego_data_processing_results CASCADE; -CREATE TABLE model_draft.ego_data_processing_results ( - id SERIAL, - schema_name text, - table_name text, - description text, - result integer, - unit text, - timestamp timestamp, - CONSTRAINT ego_data_processing_results_pkey PRIMARY KEY (id)); - -INSERT INTO model_draft.ego_data_processing_results (schema_name,table_name,description,result,unit,timestamp) - -- Count SUB - SELECT 'model_draft', - 'ego_grid_hvmv_substation', - 'Number of substations', - COUNT(subst_id) ::integer AS result, - ' ' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_grid_hvmv_substation - UNION ALL - -- Count MVGD - SELECT 'model_draft', - 'ego_grid_mv_griddistrict', - 'Number of grid districts', - COUNT(subst_id) ::integer AS result, - ' ' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_grid_mv_griddistrict - - UNION ALL - -- Area vg250.gem - SELECT 'boundaries', - 'bkg_vg250_6_gem', - 'Gemeinde area', - SUM(ST_AREA(ST_TRANSFORM(geom,3025))/10000) ::integer AS result, - 'ha' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM boundaries.bkg_vg250_6_gem - UNION ALL - -- Area vg250.gem_clean - SELECT 'model_draft', - 'ego_boundaries_bkg_vg250_6_gem_clean', - 'Processed gemeinde area', - SUM(ST_AREA(ST_TRANSFORM(geom,3025))/10000) ::integer AS result, - 'ha' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_boundaries_bkg_vg250_6_gem_clean - UNION ALL - -- Area GD - SELECT 'model_draft', - 'ego_grid_mv_griddistrict', - 'Grid District area', - SUM(ST_AREA(geom)/10000) ::integer AS result, - 'ha' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_grid_mv_griddistrict - UNION ALL - -- Min area GD calc - SELECT 'model_draft', - 'ego_grid_mv_griddistrict', - 'Minmal GD area', - MIN(ST_AREA(geom)/10000) ::decimal(10,1) AS result, - 'ha' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_grid_mv_griddistrict - UNION ALL - -- Min area GD area - SELECT 'model_draft', - 'ego_grid_mv_griddistrict', - 'Minmal GD area', - MIN(area_ha) ::decimal(10,1) AS result, - 'ha' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_grid_mv_griddistrict - UNION ALL - -- Max area GD - SELECT 'model_draft', - 'ego_grid_mv_griddistrict', - 'Maximal GD area', - MAX(ST_AREA(geom)/10000) ::decimal(10,1) AS result, - 'ha' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_grid_mv_griddistrict - UNION ALL - -- Count LA - SELECT 'model_draft', - 'ego_demand_loadarea', - 'Number of Load Areas', - COUNT(id) ::integer AS result, - ' ' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_demand_loadarea - UNION ALL - -- Area LA - SELECT 'model_draft', - 'ego_demand_loadarea', - 'Load Areas area', - SUM(ST_AREA(geom)/10000) ::decimal(10,1) AS result, - 'ha' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_demand_loadarea - - UNION ALL - -- Min area LA - SELECT 'model_draft', - 'ego_demand_loadarea', - 'Minmal LA area', - MIN(ST_AREA(geom)/10000) ::decimal(10,3) AS result, - 'ha' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_demand_loadarea - UNION ALL - -- Max area LA - SELECT 'model_draft', - 'ego_demand_loadarea', - 'Maximal LA area', - MAX(ST_AREA(geom)/10000) ::decimal(10,3) AS result, - 'ha' ::text AS unit, - NOW() AT TIME ZONE 'Europe/Berlin' - FROM model_draft.ego_demand_loadarea; +INSERT INTO model_draft.ego_data_processing_results (version,schema_name,table_name,description,result,unit,timestamp) + -- Count SUB + SELECT 'v0.3.0', + 'model_draft', + 'ego_grid_hvmv_substation', + 'Number of substations', + COUNT(subst_id) ::integer AS result, + ' ' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_grid_hvmv_substation + UNION ALL + + -- Count MVGD + SELECT 'v0.3.0', + 'model_draft', + 'ego_grid_mv_griddistrict', + 'Number of grid districts', + COUNT(subst_id) ::integer AS result, + ' ' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_grid_mv_griddistrict + UNION ALL + + -- Area vg250.gem + SELECT 'v0.3.0', + 'boundaries', + 'bkg_vg250_6_gem', + 'Gemeinde area', + SUM(ST_AREA(ST_TRANSFORM(geom,3025))/10000) ::integer AS result, + 'ha' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM boundaries.bkg_vg250_6_gem + UNION ALL + + -- Area vg250.gem_clean + SELECT 'v0.3.0', + 'model_draft', + 'ego_boundaries_bkg_vg250_6_gem_clean', + 'Processed gemeinde area', + SUM(ST_AREA(ST_TRANSFORM(geom,3025))/10000) ::integer AS result, + 'ha' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_boundaries_bkg_vg250_6_gem_clean + UNION ALL + + -- Area GD + SELECT 'v0.3.0', + 'model_draft', + 'ego_grid_mv_griddistrict', + 'Grid District area', + SUM(ST_AREA(geom)/10000) ::integer AS result, + 'ha' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_grid_mv_griddistrict + UNION ALL + + -- Min area GD calc + SELECT 'v0.3.0', + 'model_draft', + 'ego_grid_mv_griddistrict', + 'Minmal GD area calculated', + MIN(ST_AREA(geom)/10000) ::decimal(10,1) AS result, + 'ha' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_grid_mv_griddistrict + UNION ALL + + -- Min area GD area + SELECT 'v0.3.0', + 'model_draft', + 'ego_grid_mv_griddistrict', + 'Minmal GD area from table', + MIN(area_ha) ::decimal(10,1) AS result, + 'ha' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_grid_mv_griddistrict + UNION ALL + + -- Max area GD + SELECT 'v0.3.0', + 'model_draft', + 'ego_grid_mv_griddistrict', + 'Maximal GD area', + MAX(ST_AREA(geom)/10000) ::decimal(10,1) AS result, + 'ha' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_grid_mv_griddistrict + UNION ALL + + -- Count LA + SELECT 'v0.3.0', + 'model_draft', + 'ego_demand_loadarea', + 'Number of Load Areas', + COUNT(id) ::integer AS result, + ' ' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_demand_loadarea + UNION ALL + + -- Area LA + SELECT 'v0.3.0', + 'model_draft', + 'ego_demand_loadarea', + 'Load Areas area', + SUM(ST_AREA(geom)/10000) ::decimal(10,1) AS result, + 'ha' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_demand_loadarea + UNION ALL + + -- Min area LA + SELECT 'v0.3.0', + 'model_draft', + 'ego_demand_loadarea', + 'Minmal LA area', + MIN(ST_AREA(geom)/10000) ::decimal(10,3) AS result, + 'ha' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_demand_loadarea + UNION ALL + + -- Max area LA + SELECT 'v0.3.0', + 'model_draft', + 'ego_demand_loadarea', + 'Maximal LA area', + MAX(ST_AREA(geom)/10000) ::decimal(10,3) AS result, + 'ha' ::text AS unit, + NOW() AT TIME ZONE 'Europe/Berlin' + FROM model_draft.ego_demand_loadarea; -- Set grants and owner ALTER TABLE model_draft.ego_data_processing_results OWNER TO oeuser; +-- metadata +COMMENT ON TABLE model_draft.ego_data_processing_results IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_data_processing_results','ego_dp_loadarea_statistic.sql',' '); @@ -252,65 +282,73 @@ WHERE t1.subst_id = t2.subst_id; -- Group -UPDATE model_draft.ego_grid_mv_griddistrict -SET "group" = (SELECT - CASE - WHEN type1 = '1' AND type2 = '0' AND type3 = '1' THEN 'A' -- ländlich - WHEN type1 = '0' AND type2 = '1' AND type3 = '1' THEN 'B' - WHEN type1 = '1' AND type2 = '0' AND type3 = '0' THEN 'C' - WHEN type1 = '0' AND type2 = '1' AND type3 = '0' THEN 'D' -- städtisch - END); +UPDATE model_draft.ego_grid_mv_griddistrict + SET "group" = (SELECT + CASE + WHEN type1 = '1' AND type2 = '0' AND type3 = '1' THEN 'A' -- ländlich + WHEN type1 = '0' AND type2 = '1' AND type3 = '1' THEN 'B' + WHEN type1 = '1' AND type2 = '0' AND type3 = '0' THEN 'C' + WHEN type1 = '0' AND type2 = '1' AND type3 = '0' THEN 'D' -- städtisch + END); DROP MATERIALIZED VIEW IF EXISTS boundaries.bkg_vg250_6_gem_pts; CREATE MATERIALIZED VIEW boundaries.bkg_vg250_6_gem_pts AS -SELECT id, - ags_0, - ST_PointOnSurface(geom) AS geom -FROM boundaries.bkg_vg250_6_gem; + SELECT id, + ags_0, + ST_PointOnSurface(geom) AS geom + FROM boundaries.bkg_vg250_6_gem; + + +-- Municipality (Gemeinden) +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET gem = t2.gem + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(gem.geom))::integer AS gem + FROM boundaries.bkg_vg250_6_gem AS gem, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && ST_TRANSFORM(gem.geom,3035) AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(ST_TRANSFORM(gem.geom,3035))) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; --- Gemeinden -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET gem = t2.gem -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(gem.geom))::integer AS gem - FROM boundaries.bkg_vg250_6_gem AS gem, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && ST_TRANSFORM(gem.geom,3035) AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(ST_TRANSFORM(gem.geom,3035))) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; -/* -- bkg_vg250_6_gem_clean_pts +/* +-- bkg_vg250_6_gem_clean_pts DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_boundaries_bkg_vg250_6_gem_clean_pts; CREATE MATERIALIZED VIEW model_draft.ego_boundaries_bkg_vg250_6_gem_clean_pts AS -SELECT id, - ags_0, - ST_PointOnSurface(geom) AS geom -FROM model_draft.ego_boundaries_bkg_vg250_6_gem_clean; */ + SELECT id, + ags_0, + ST_PointOnSurface(geom) AS geom + FROM model_draft.ego_boundaries_bkg_vg250_6_gem_clean; +*/ + -- Gemeinde Parts -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET gem_clean = t2.gem_clean -FROM (SELECT gd.subst_id, - COUNT(ST_PointOnSurface(gem.geom))::integer AS gem_clean - FROM model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS gem, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && gem.geom AND - ST_CONTAINS(gd.geom,ST_PointOnSurface(gem.geom)) - GROUP BY gd.subst_id - )AS t2 -WHERE t1.subst_id = t2.subst_id; +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET gem_clean = t2.gem_clean + FROM ( + SELECT gd.subst_id, + COUNT(ST_PointOnSurface(gem.geom))::integer AS gem_clean + FROM model_draft.ego_boundaries_bkg_vg250_6_gem_clean AS gem, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && gem.geom AND + ST_CONTAINS(gd.geom,ST_PointOnSurface(gem.geom)) + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; -- GD Area 3610 -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 -SET area_ha = t2.area_ha -FROM (SELECT gd.subst_id, - ST_AREA(gd.geom)/10000 AS area_ha - FROM model_draft.ego_grid_mv_griddistrict AS gd - )AS t2 -WHERE t1.subst_id = t2.subst_id; +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET area_ha = t2.area_ha + FROM ( + SELECT gd.subst_id, + ST_AREA(gd.geom)/10000 AS area_ha + FROM model_draft.ego_grid_mv_griddistrict AS gd + )AS t2 + WHERE t1.subst_id = t2.subst_id; -- LA Count UPDATE model_draft.ego_grid_mv_griddistrict AS t1 @@ -358,89 +396,88 @@ FROM (SELECT gd.subst_id, )AS t2 WHERE t1.subst_id = t2.subst_id; -SELECT MAX(area_share) AS max, - MIN(area_share) AS min -FROM model_draft.ego_grid_mv_griddistrict ; - +/* +SELECT MAX(area_share) AS max, + MIN(area_share) AS min +FROM model_draft.ego_grid_mv_griddistrict ; +*/ -- Consumption -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 - SET consumption = t2.consumption - FROM (SELECT gd.subst_id, - SUM(la.sector_consumption_sum)::numeric AS consumption - FROM model_draft.ego_demand_loadarea AS la, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.subst_id = la.subst_id - GROUP BY gd.subst_id - )AS t2 - WHERE t1.subst_id = t2.subst_id; - -UPDATE model_draft.ego_grid_mv_griddistrict AS t1 - SET consumption_per_area = consumption *1000000 / area_ha; +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET consumption = t2.consumption + FROM ( + SELECT gd.subst_id, + SUM(la.sector_consumption_sum)::numeric AS consumption + FROM model_draft.ego_demand_loadarea AS la, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.subst_id = la.subst_id + GROUP BY gd.subst_id + )AS t2 + WHERE t1.subst_id = t2.subst_id; + +UPDATE model_draft.ego_grid_mv_griddistrict AS t1 + SET consumption_per_area = consumption *1000000 / area_ha; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_grid_mv_griddistrict','ego_dp_loadarea_statistic.sql',' '); +/* -- test SELECT SUM(mvgd.consumption) FROM model_draft.ego_grid_mv_griddistrict AS mvgd UNION ALL -SELECT SUM(la.sector_consumption_sum) - FROM model_draft.ego_demand_loadarea AS la; - -/* UPDATE model_draft.ego_grid_mv_griddistrict AS t1 - SET consumption_per_area = t2.consumption_per_area - FROM (SELECT gd.subst_id, - SUM(la.sector_consumption_sum)::integer AS consumption - FROM model_draft.ego_grid_mv_griddistrict AS mvgd - WHERE gd.subst_id = la.subst_id - GROUP BY gd.subst_id - )AS t2 - WHERE t1.subst_id = t2.subst_id; */ +SELECT SUM(la.sector_consumption_sum) +FROM model_draft.ego_demand_loadarea AS la; +*/ -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.2.5','output','model_draft','ego_grid_mv_griddistrict','ego_paper_result.sql',' '); - - --- Calculate statistics for BKG-vg250 -DROP MATERIALIZED VIEW IF EXISTS boundaries.bkg_vg250_statistics_mview CASCADE; -CREATE MATERIALIZED VIEW boundaries.bkg_vg250_statistics_mview AS --- Calculate areas -SELECT '1' ::integer AS id, - '1_sta' ::text AS table, - 'vg' ::text AS descript_nameion, - SUM(vg.area_ha) ::integer AS area_sum_ha -FROM boundaries.bkg_vg250_1_sta_mview AS vg -UNION ALL -SELECT '3' ::integer AS id, - '1_sta' ::text AS table, - 'deu' ::text AS descript_nameion, - SUM(vg.area_ha) ::integer AS area_sum_ha -FROM boundaries.bkg_vg250_1_sta_mview AS vg -WHERE bez='Bundesrepublik' -UNION ALL -SELECT '4' ::integer AS id, - '1_sta' ::text AS table, - 'NOT deu' ::text AS descript_nameion, - SUM(vg.area_ha) ::integer AS area_sum_ha -FROM boundaries.bkg_vg250_1_sta_mview AS vg -WHERE bez='--' -UNION ALL -SELECT '5' ::integer AS id, - '1_sta' ::text AS table, - 'land' ::text AS descript_nameion, - SUM(vg.area_ha) ::integer AS area_sum_ha -FROM boundaries.bkg_vg250_1_sta_mview AS vg -WHERE gf='3' OR gf='4' -UNION ALL -SELECT '6' ::integer AS id, - '1_sta' ::text AS table, - 'water' ::text AS descript_nameion, - SUM(vg.area_ha) ::integer AS area_sum_ha -FROM boundaries.bkg_vg250_1_sta_mview AS vg -WHERE gf='1' OR gf='2'; +-- Calculate statistics for BKG vg250 +DROP MATERIALIZED VIEW IF EXISTS boundaries.bkg_vg250_statistics_mview CASCADE; +CREATE MATERIALIZED VIEW boundaries.bkg_vg250_statistics_mview AS + SELECT '1' ::integer AS id, + '1_sta' ::text AS table, + 'vg' ::text AS descript_nameion, + SUM(vg.area_ha) ::integer AS area_sum_ha + FROM boundaries.bkg_vg250_1_sta_mview AS vg + UNION ALL + SELECT '3' ::integer AS id, + '1_sta' ::text AS table, + 'deu' ::text AS descript_nameion, + SUM(vg.area_ha) ::integer AS area_sum_ha + FROM boundaries.bkg_vg250_1_sta_mview AS vg + WHERE bez='Bundesrepublik' + UNION ALL + SELECT '4' ::integer AS id, + '1_sta' ::text AS table, + 'NOT deu' ::text AS descript_nameion, + SUM(vg.area_ha) ::integer AS area_sum_ha + FROM boundaries.bkg_vg250_1_sta_mview AS vg + WHERE bez='--' + UNION ALL + SELECT '5' ::integer AS id, + '1_sta' ::text AS table, + 'land' ::text AS descript_nameion, + SUM(vg.area_ha) ::integer AS area_sum_ha + FROM boundaries.bkg_vg250_1_sta_mview AS vg + WHERE gf='3' OR gf='4' + UNION ALL + SELECT '6' ::integer AS id, + '1_sta' ::text AS table, + 'water' ::text AS descript_nameion, + SUM(vg.area_ha) ::integer AS area_sum_ha + FROM boundaries.bkg_vg250_1_sta_mview AS vg + WHERE gf='1' OR gf='2'; -- grant (oeuser) ALTER TABLE boundaries.bkg_vg250_statistics_mview OWNER TO oeuser; +-- metadata +COMMENT ON MATERIALIZED VIEW model_draft.bkg_vg250_statistics_mview IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','boundaries','bkg_vg250_statistics_mview','ego_dp_loadarea_statistic.sql',' '); @@ -584,7 +621,6 @@ delta_L_>500 = 0,5578099543666 tkm delta_L_<500 = 1,9783239737815 tkm */ - /* -- simplytry DROP TABLE IF EXISTS model_draft.ego_grid_mv_griddistrict_simple; @@ -664,5 +700,4 @@ INSERT INTO scenario.eGo_data_processing_clean_run (version,schema_name,table_na NOW() AT TIME ZONE 'Europe/Berlin' AS timestamp FROM model_draft.ego_grid_hvmv_substation_ewe_mview; */ - diff --git a/dataprocessing/sql_snippets/ego_dp_lv_consumption_peakload.sql b/dataprocessing/sql_snippets/ego_dp_lv_consumption_peakload.sql index 9cbc7c76..71d871b0 100644 --- a/dataprocessing/sql_snippets/ego_dp_lv_consumption_peakload.sql +++ b/dataprocessing/sql_snippets/ego_dp_lv_consumption_peakload.sql @@ -1,160 +1,166 @@ /* -Update LV grid district table by - a. sectoral consumption in each LV grid district - b. sectoral peak load in each LV grid district - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "gplssm" +LV Consumption and Peakload +Update LV Griddistrict table by +a. sectoral consumption in each LV Griddistrict +b. sectoral peak load in each LV Griddistrict + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "gplssm" */ --- CONSUMPTION + +-- Consumption -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_loadarea','ego_dp_lv_consumption_peakload.sql',' '); SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_lv_griddistrict','ego_dp_lv_consumption_peakload.sql',' '); --- residential -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET sector_consumption_residential = COALESCE(t2.real_cons,0) - FROM ( - WITH zensus_sum AS ( - SELECT lvgd.la_id, - SUM(lvgd.zensus_sum) AS lvgd_zensus_sum - FROM model_draft.ego_grid_lv_griddistrict AS lvgd - GROUP BY lvgd.la_id) - SELECT - lvgd.mvlv_subst_id as mvlv_subst_id, - la.id AS la_id, - la.sector_consumption_residential * lvgd.zensus_sum / zensus_sum.lvgd_zensus_sum AS real_cons - FROM model_draft.ego_demand_loadarea AS la - INNER JOIN model_draft.ego_grid_lv_griddistrict AS lvgd ON (la.id = lvgd.la_id) - INNER JOIN zensus_sum AS zensus_sum ON (zensus_sum.la_id = lvgd.la_id) - ) AS t2 - WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; - - --- retail -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET sector_consumption_retail = COALESCE(t2.real_cons,0) - FROM ( - WITH lvgd_sector_area_retail_sum AS ( - SELECT lvgd.la_id, - SUM(lvgd.sector_area_retail) AS sum - FROM model_draft.ego_grid_lv_griddistrict AS lvgd - GROUP BY lvgd.la_id) - SELECT - lvgd.mvlv_subst_id as mvlv_subst_id, - la.id AS la_id, - la.sector_consumption_retail * lvgd.sector_area_retail / sum.sum AS real_cons - FROM model_draft.ego_demand_loadarea AS la - INNER JOIN model_draft.ego_grid_lv_griddistrict AS lvgd ON (la.id = lvgd.la_id) - INNER JOIN lvgd_sector_area_retail_sum AS sum ON (sum.la_id = lvgd.la_id) - ) AS t2 - WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; - - --- industrial -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET sector_consumption_industrial = COALESCE(t2.real_cons,0) - FROM ( - WITH lvgd_sector_area_industrial_sum AS ( - SELECT lvgd.la_id, - SUM(lvgd.sector_area_industrial) AS sum - FROM model_draft.ego_grid_lv_griddistrict AS lvgd - GROUP BY lvgd.la_id) - SELECT - lvgd.mvlv_subst_id as mvlv_subst_id, - la.id AS la_id, - la.sector_consumption_industrial * lvgd.sector_area_industrial / sum.sum AS real_cons - FROM model_draft.ego_demand_loadarea AS la - INNER JOIN model_draft.ego_grid_lv_griddistrict AS lvgd ON (la.id = lvgd.la_id) - INNER JOIN lvgd_sector_area_industrial_sum AS sum ON (sum.la_id = lvgd.la_id) - ) AS t2 - WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; - - --- agricultural -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET sector_consumption_agricultural = COALESCE(t2.real_cons,0) +-- Residential +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET sector_consumption_residential = COALESCE(t2.real_cons,0) + FROM ( + WITH zensus_sum AS ( + SELECT lvgd.la_id, + SUM(lvgd.zensus_sum) AS lvgd_zensus_sum + FROM model_draft.ego_grid_lv_griddistrict AS lvgd + GROUP BY lvgd.la_id) + SELECT + lvgd.mvlv_subst_id as mvlv_subst_id, + la.id AS la_id, + la.sector_consumption_residential * lvgd.zensus_sum / zensus_sum.lvgd_zensus_sum AS real_cons + FROM model_draft.ego_demand_loadarea AS la + INNER JOIN model_draft.ego_grid_lv_griddistrict AS lvgd ON (la.id = lvgd.la_id) + INNER JOIN zensus_sum AS zensus_sum ON (zensus_sum.la_id = lvgd.la_id) + ) AS t2 + WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; + + +-- Retail +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET sector_consumption_retail = COALESCE(t2.real_cons,0) + FROM ( + WITH lvgd_sector_area_retail_sum AS ( + SELECT lvgd.la_id, + SUM(lvgd.sector_area_retail) AS sum + FROM model_draft.ego_grid_lv_griddistrict AS lvgd + GROUP BY lvgd.la_id) + SELECT + lvgd.mvlv_subst_id as mvlv_subst_id, + la.id AS la_id, + la.sector_consumption_retail * lvgd.sector_area_retail / sum.sum AS real_cons + FROM model_draft.ego_demand_loadarea AS la + INNER JOIN model_draft.ego_grid_lv_griddistrict AS lvgd ON (la.id = lvgd.la_id) + INNER JOIN lvgd_sector_area_retail_sum AS sum ON (sum.la_id = lvgd.la_id) + ) AS t2 + WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; + + +-- Industrial +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET sector_consumption_industrial = COALESCE(t2.real_cons,0) + FROM ( + WITH lvgd_sector_area_industrial_sum AS ( + SELECT lvgd.la_id, + SUM(lvgd.sector_area_industrial) AS sum + FROM model_draft.ego_grid_lv_griddistrict AS lvgd + GROUP BY lvgd.la_id) + SELECT + lvgd.mvlv_subst_id as mvlv_subst_id, + la.id AS la_id, + la.sector_consumption_industrial * lvgd.sector_area_industrial / sum.sum AS real_cons + FROM model_draft.ego_demand_loadarea AS la + INNER JOIN model_draft.ego_grid_lv_griddistrict AS lvgd ON (la.id = lvgd.la_id) + INNER JOIN lvgd_sector_area_industrial_sum AS sum ON (sum.la_id = lvgd.la_id) + ) AS t2 + WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; + + +-- Agricultural +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET sector_consumption_agricultural = COALESCE(t2.real_cons,0) FROM ( - WITH lvgd_sector_area_agricultural_sum AS ( - SELECT lvgd.la_id, - SUM(lvgd.sector_area_agricultural) AS sum - FROM model_draft.ego_grid_lv_griddistrict AS lvgd - GROUP BY lvgd.la_id) - SELECT - lvgd.mvlv_subst_id as mvlv_subst_id, - la.id AS la_id, - la.sector_consumption_agricultural * lvgd.sector_area_agricultural / sum.sum AS real_cons - FROM model_draft.ego_demand_loadarea AS la - INNER JOIN model_draft.ego_grid_lv_griddistrict AS lvgd ON (la.id = lvgd.la_id) - INNER JOIN lvgd_sector_area_agricultural_sum AS sum ON (sum.la_id = lvgd.la_id) - ) AS t2 - WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; - - --- sum of all sectors -UPDATE model_draft.ego_grid_lv_griddistrict - SET sector_consumption_sum = - sector_consumption_residential + - sector_consumption_retail + - sector_consumption_industrial + - sector_consumption_agricultural; - - --- PEAK LOAD --- residential + WITH lvgd_sector_area_agricultural_sum AS ( + SELECT lvgd.la_id, + SUM(lvgd.sector_area_agricultural) AS sum + FROM model_draft.ego_grid_lv_griddistrict AS lvgd + GROUP BY lvgd.la_id) + SELECT + lvgd.mvlv_subst_id as mvlv_subst_id, + la.id AS la_id, + la.sector_consumption_agricultural * lvgd.sector_area_agricultural / sum.sum AS real_cons + FROM model_draft.ego_demand_loadarea AS la + INNER JOIN model_draft.ego_grid_lv_griddistrict AS lvgd ON (la.id = lvgd.la_id) + INNER JOIN lvgd_sector_area_agricultural_sum AS sum ON (sum.la_id = lvgd.la_id) + ) AS t2 + WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; + + +-- Sum of all sectors +UPDATE model_draft.ego_grid_lv_griddistrict + SET sector_consumption_sum = + sector_consumption_residential + + sector_consumption_retail + + sector_consumption_industrial + + sector_consumption_agricultural; + + +-- Peakload + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','input','scenario','ego_slp_parameters','ego_dp_lv_consumption_peakload.sql',' '); + +-- Residential UPDATE model_draft.ego_grid_lv_griddistrict as t1 - SET sector_peakload_residential = t2.peak_load - FROM ( - SELECT lvgd.mvlv_subst_id, - slp.value * lvgd.sector_consumption_residential AS peak_load - FROM - model_draft.ego_grid_lv_griddistrict AS lvgd, - scenario.ego_slp_parameters AS slp - WHERE slp.parameter = 'consumption_peak_h0') AS t2 - WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; - - --- retail + SET sector_peakload_residential = t2.peak_load + FROM ( + SELECT lvgd.mvlv_subst_id, + slp.value * lvgd.sector_consumption_residential AS peak_load + FROM + model_draft.ego_grid_lv_griddistrict AS lvgd, + scenario.ego_slp_parameters AS slp + WHERE slp.parameter = 'consumption_peak_h0') AS t2 + WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; + + +-- Retail UPDATE model_draft.ego_grid_lv_griddistrict as t1 - SET sector_peakload_retail = t2.peak_load - FROM ( - SELECT lvgd.mvlv_subst_id, - slp.value * lvgd.sector_consumption_retail AS peak_load - FROM - model_draft.ego_grid_lv_griddistrict AS lvgd, - scenario.ego_slp_parameters AS slp - WHERE slp.parameter = 'consumption_peak_g0') AS t2 - WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; - - --- industrial + SET sector_peakload_retail = t2.peak_load + FROM ( + SELECT lvgd.mvlv_subst_id, + slp.value * lvgd.sector_consumption_retail AS peak_load + FROM + model_draft.ego_grid_lv_griddistrict AS lvgd, + scenario.ego_slp_parameters AS slp + WHERE slp.parameter = 'consumption_peak_g0') AS t2 + WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; + + +-- Industrial UPDATE model_draft.ego_grid_lv_griddistrict as t1 - SET sector_peakload_industrial = t2.peak_load - FROM ( - SELECT lvgd.mvlv_subst_id, - slp.value * lvgd.sector_consumption_industrial AS peak_load - FROM - model_draft.ego_grid_lv_griddistrict AS lvgd, - scenario.ego_slp_parameters AS slp - WHERE slp.parameter = 'consumption_peak_i0') AS t2 - WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; - - --- agricultural + SET sector_peakload_industrial = t2.peak_load + FROM ( + SELECT lvgd.mvlv_subst_id, + slp.value * lvgd.sector_consumption_industrial AS peak_load + FROM + model_draft.ego_grid_lv_griddistrict AS lvgd, + scenario.ego_slp_parameters AS slp + WHERE slp.parameter = 'consumption_peak_i0') AS t2 + WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; + + +-- Agricultural UPDATE model_draft.ego_grid_lv_griddistrict as t1 - SET sector_peakload_agricultural = t2.peak_load - FROM ( - SELECT lvgd.mvlv_subst_id, - slp.value * lvgd.sector_consumption_agricultural AS peak_load - FROM - model_draft.ego_grid_lv_griddistrict AS lvgd, - scenario.ego_slp_parameters AS slp - WHERE slp.parameter = 'consumption_peak_l0') AS t2 - WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; + SET sector_peakload_agricultural = t2.peak_load + FROM ( + SELECT lvgd.mvlv_subst_id, + slp.value * lvgd.sector_consumption_agricultural AS peak_load + FROM + model_draft.ego_grid_lv_griddistrict AS lvgd, + scenario.ego_slp_parameters AS slp + WHERE slp.parameter = 'consumption_peak_l0') AS t2 + WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_grid_lv_griddistrict','ego_dp_lv_consumption_peakload.sql',' '); diff --git a/dataprocessing/sql_snippets/ego_dp_lv_griddistrict.sql b/dataprocessing/sql_snippets/ego_dp_lv_griddistrict.sql index 8a234b20..018489fb 100644 --- a/dataprocessing/sql_snippets/ego_dp_lv_griddistrict.sql +++ b/dataprocessing/sql_snippets/ego_dp_lv_griddistrict.sql @@ -1,301 +1,385 @@ /* -Generate ONT - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "jong42, Ludee" +LV Griddistrict +Create LV Griddistrict from MVLV Substation. +Generate OSM landuse per sectors. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee, jong42" */ --- Cutting -DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut CASCADE; -CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut ( - id serial NOT NULL, - la_id integer, - subst_id integer, - subst_cnt integer, - geom geometry(Polygon,3035), - CONSTRAINT ego_grid_lv_griddistrict_cut_pkey PRIMARY KEY (id) ); +-- collect and union +DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict CASCADE; +CREATE TABLE model_draft.ego_grid_lv_griddistrict ( + id integer, + mvlv_subst_id integer, + subst_id integer, + la_id integer, + nn boolean, + subst_cnt integer, + zensus_sum integer, + zensus_count integer, + zensus_density double precision, + population_density double precision, + area_ha double precision, + sector_area_residential double precision, + sector_area_retail double precision, + sector_area_industrial double precision, + sector_area_agricultural double precision, + sector_area_sum double precision, + sector_share_residential double precision, + sector_share_retail double precision, + sector_share_industrial double precision, + sector_share_agricultural double precision, + sector_share_sum double precision, + sector_count_residential integer, + sector_count_retail integer, + sector_count_industrial integer, + sector_count_agricultural integer, + sector_count_sum integer, + sector_consumption_residential double precision, + sector_consumption_retail double precision, + sector_consumption_industrial double precision, + sector_consumption_agricultural double precision, + sector_consumption_sum double precision, + sector_peakload_residential double precision, + sector_peakload_retail double precision, + sector_peakload_industrial double precision, + sector_peakload_agricultural double precision, + geom geometry(MultiPolygon,3035), + CONSTRAINT ego_grid_lv_griddistrict_pkey PRIMARY KEY (id) ); --- grant (oeuser) -ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut OWNER TO oeuser; - -- index GIST (geom) -CREATE INDEX ego_grid_lv_griddistrict_cut_geom_idx - ON model_draft.ego_grid_lv_griddistrict_cut USING GIST (geom); - -INSERT INTO model_draft.ego_grid_lv_griddistrict_cut (geom,la_id,subst_id) - SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom ::geometry(Polygon,3035) AS geom, - a.id AS la_id, - a.subst_id AS subst_id - FROM model_draft.ego_demand_loadarea AS a, - model_draft.ego_grid_mvlv_substation_voronoi AS b - WHERE a.geom && b.geom - AND a.subst_id = b.subst_id - -- make sure the boundaries really intersect and not just touch each other - AND (ST_GEOMETRYTYPE(ST_SAFE_INTERSECTION(a.geom,b.geom)) = 'ST_Polygon' - OR ST_GEOMETRYTYPE(ST_SAFE_INTERSECTION(a.geom,b.geom)) = 'ST_MultiPolygon' ) - AND ST_isvalid(b.geom) AND ST_isvalid(a.geom); - --AND a.subst_id = '1886'; -- test one mvgd - --- mvlv substation count -UPDATE model_draft.ego_grid_lv_griddistrict_cut AS t1 - SET subst_cnt = t2.subst_cnt - FROM (SELECT a.id AS id, - COUNT(b.geom)::integer AS subst_cnt - FROM model_draft.ego_grid_lv_griddistrict_cut AS a, - model_draft.ego_grid_mvlv_substation AS b - WHERE a.geom && b.geom AND - ST_CONTAINS(a.geom,b.geom) - GROUP BY a.id - )AS t2 - WHERE t1.id = t2.id; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut','ego_dp_lv_griddistrict.sql',' '); - - -/* -- Validate (geom) -DROP VIEW IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_error_geom_view CASCADE; -CREATE VIEW model_draft.ego_grid_lv_griddistrict_cut_error_geom_view AS - SELECT test.id, - test.error, - reason(ST_IsValidDetail(test.geom)) AS error_reason, - ST_SetSRID(location(ST_IsValidDetail(test.geom)),3035) ::geometry(Point,3035) AS error_location - FROM ( - SELECT source.id AS id, -- PK - ST_IsValid(source.geom) AS error, - source.geom AS geom - FROM model_draft.ego_grid_lv_griddistrict_cut AS source -- Table - ) AS test - WHERE test.error = FALSE; +CREATE INDEX ego_grid_lv_griddistrict_gidx + ON model_draft.ego_grid_lv_griddistrict USING GIST (geom); -- grant (oeuser) -GRANT ALL ON TABLE model_draft.ego_grid_lv_griddistrict_cut_error_geom_view TO oeuser WITH GRANT OPTION; -ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_error_geom_view OWNER TO oeuser; - --- Drop empty view (OK!) -> 100ms =1 -SELECT f_drop_view('{ego_grid_lv_griddistrict_cut_error_geom_view}', 'model_draft'); - */ +ALTER TABLE model_draft.ego_grid_lv_griddistrict OWNER TO oeuser; +-- metadata +COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; --- with substation -DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_1subst CASCADE; -CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut_1subst ( - id integer, - la_id integer, - subst_id integer, - subst_cnt integer, - geom geometry(Polygon,3035), - CONSTRAINT ego_grid_lv_griddistrict_cut_1subst_pkey PRIMARY KEY (id) ); +-- insert +INSERT INTO model_draft.ego_grid_lv_griddistrict (id,mvlv_subst_id,subst_id,la_id,nn,geom) + SELECT * + FROM model_draft.ego_grid_lv_griddistrict_cut_nn_collect + ORDER BY mvlv_subst_id; --- grant (oeuser) -ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_1subst OWNER TO oeuser; --- insert dump -INSERT INTO model_draft.ego_grid_lv_griddistrict_cut_1subst - SELECT * - FROM model_draft.ego_grid_lv_griddistrict_cut - WHERE subst_cnt = 1; +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mvlv_substation','ego_dp_lv_griddistrict.sql',' '); --- index GIST (geom) -CREATE INDEX ego_grid_lv_griddistrict_cut_1subst_geom_idx - ON model_draft.ego_grid_lv_griddistrict_cut_1subst USING GIST (geom); +-- mvlv substation count +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET subst_cnt = t2.subst_cnt + FROM ( + SELECT a.id AS id, + COUNT(b.geom)::integer AS subst_cnt + FROM model_draft.ego_grid_lv_griddistrict AS a, + model_draft.ego_grid_mvlv_substation AS b + WHERE a.geom && b.geom AND + ST_CONTAINS(a.geom,b.geom) + GROUP BY a.id + )AS t2 + WHERE t1.id = t2.id; + +-- update area (area_ha) +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET area_ha = t2.area + FROM ( + SELECT id, + ST_AREA(ST_TRANSFORM(geom,3035))/10000 AS area + FROM model_draft.ego_grid_lv_griddistrict + ) AS t2 + WHERE t1.id = t2.id; --- metadata -COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict_cut_1subst IS '{ - "comment": "eGoDP - Temporary table", - "version": "v0.3.0" }' ; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut_1subst','ego_dp_lv_griddistrict.sql',' '); - - +SELECT ego_scenario_log('v0.3.0','input','society','destatis_zensus_population_per_ha_mview','ego_dp_lv_griddistrict.sql',' '); + +-- zensus 2011 population +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET zensus_sum = t2.zensus_sum, + zensus_count = t2.zensus_count, + zensus_density = t2.zensus_density + FROM ( + SELECT a.id AS id, + SUM(b.population)::integer AS zensus_sum, + COUNT(b.geom_point)::integer AS zensus_count, + (SUM(b.population)/COUNT(b.geom_point))::numeric AS zensus_density + FROM model_draft.ego_grid_lv_griddistrict AS a, + society.destatis_zensus_population_per_ha_mview AS b + WHERE a.geom && b.geom_point AND + ST_CONTAINS(a.geom,b.geom_point) + GROUP BY a.id + )AS t2 + WHERE t1.id = t2.id; + + +-- 1. Residential sector +DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_lvgd_1_residential CASCADE; +CREATE TABLE model_draft.ego_osm_sector_per_lvgd_1_residential ( + id SERIAL NOT NULL, + geom geometry(Polygon,3035), + CONSTRAINT ego_osm_sector_per_lvgd_1_residential_pkey PRIMARY KEY (id)); --- fragments -DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_0subst CASCADE; -CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut_0subst ( - id integer, - la_id integer, - subst_id integer, - subst_cnt integer, - geom geometry(Polygon,3035), - CONSTRAINT ego_grid_lv_griddistrict_cut_0subst_pkey PRIMARY KEY (id) ); +-- index GIST (geom) +CREATE INDEX ego_osm_sector_per_lvgd_1_residential_gidx + ON model_draft.ego_osm_sector_per_lvgd_1_residential USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_0subst OWNER TO oeuser; - --- insert dump -INSERT INTO model_draft.ego_grid_lv_griddistrict_cut_0subst - SELECT * - FROM model_draft.ego_grid_lv_griddistrict_cut - WHERE subst_cnt IS NULL; - --- index GIST (geom) -CREATE INDEX ego_grid_lv_griddistrict_cut_0subst_geom_idx - ON model_draft.ego_grid_lv_griddistrict_cut_0subst USING GIST (geom); +ALTER TABLE model_draft.ego_osm_sector_per_lvgd_1_residential OWNER TO oeuser; -- metadata -COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict_cut_0subst IS '{ - "comment": "eGoDP - Temporary table", - "version": "v0.3.0" }' ; +COMMENT ON TABLE model_draft.ego_osm_sector_per_lvgd_1_residential IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut_0subst','ego_dp_lv_griddistrict.sql',' '); - +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_osm_sector_per_griddistrict_1_residential','ego_dp_lv_griddistrict.sql',' '); + +-- intersect sector with mv-griddistrict +INSERT INTO model_draft.ego_osm_sector_per_lvgd_1_residential (geom) + SELECT c.geom ::geometry(Polygon,3035) + FROM ( + SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom AS geom + FROM model_draft.ego_osm_sector_per_griddistrict_1_residential AS a, + model_draft.ego_grid_lv_griddistrict AS b + WHERE a.geom && b.geom + ) AS c + WHERE ST_GeometryType(c.geom) = 'ST_Polygon'; + +-- sector stats +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET sector_area_residential = t2.sector_area, + sector_count_residential = t2.sector_count, + sector_share_residential = t2.sector_area / t2.area_ha + FROM ( + SELECT b.id AS id, + SUM(ST_AREA(a.geom)/10000) AS sector_area, + COUNT(a.geom) AS sector_count, + b.area_ha AS area_ha + FROM model_draft.ego_osm_sector_per_lvgd_1_residential AS a, + model_draft.ego_grid_lv_griddistrict AS b + WHERE b.geom && a.geom AND + ST_INTERSECTS(b.geom,ST_BUFFER(a.geom,-1)) + GROUP BY b.id + ) AS t2 + WHERE t1.id = t2.id; +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_lvgd_1_residential','ego_dp_lv_griddistrict.sql',' '); --- with too many substation! -DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_xsubst CASCADE; -CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut_xsubst ( - id integer, - la_id integer, - subst_id integer, - subst_cnt integer, - geom geometry(Polygon,3035), - CONSTRAINT ego_grid_lv_griddistrict_cut_xsubst_pkey PRIMARY KEY (id) ); --- grant (oeuser) -ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_xsubst OWNER TO oeuser; --- insert dump -INSERT INTO model_draft.ego_grid_lv_griddistrict_cut_xsubst - SELECT * - FROM model_draft.ego_grid_lv_griddistrict_cut - WHERE subst_cnt > 1; +-- 2. Retail sector +DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_lvgd_2_retail CASCADE; +CREATE TABLE model_draft.ego_osm_sector_per_lvgd_2_retail ( + id SERIAL NOT NULL, + geom geometry(Polygon,3035), + CONSTRAINT ego_osm_sector_per_lvgd_2_retail_pkey PRIMARY KEY (id)); -- index GIST (geom) -CREATE INDEX ego_grid_lv_griddistrict_cut_xsubst_geom_idx - ON model_draft.ego_grid_lv_griddistrict_cut_xsubst USING GIST (geom); +CREATE INDEX ego_osm_sector_per_lvgd_2_retail_gidx + ON model_draft.ego_osm_sector_per_lvgd_2_retail USING GIST (geom); + +-- grant (oeuser) +ALTER TABLE model_draft.ego_osm_sector_per_lvgd_2_retail OWNER TO oeuser; -- metadata -COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict_cut_xsubst IS '{ - "comment": "eGoDP - Temporary table", - "version": "v0.3.0" }' ; +COMMENT ON TABLE model_draft.ego_osm_sector_per_lvgd_2_retail IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut_xsubst','ego_dp_lv_griddistrict.sql',' '); - - - --- Next Neighbor -DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_nn CASCADE; -CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut_nn ( - id serial, - a_id integer, - b_id integer, - subst_id integer, - la_id integer, - geom geometry(Polygon,3035), - geom_line geometry(LineString,3035), - distance double precision, - CONSTRAINT ego_grid_lv_griddistrict_cut_nn_pkey PRIMARY KEY (id) ); - -INSERT INTO model_draft.ego_grid_lv_griddistrict_cut_nn (a_id,b_id,subst_id,la_id,geom,geom_line,distance) - SELECT DISTINCT ON (a.id) - a.id, - b.id, - a.subst_id, - a.la_id, - a.geom, - ST_ShortestLine( - ST_CENTROID(a.geom) ::geometry(Point,3035), - ST_ExteriorRing(b.geom) ::geometry(LineString,3035) - ) ::geometry(LineString,3035) AS geom_line, - ST_Distance(ST_CENTROID(a.geom),ST_ExteriorRing(b.geom)) - FROM model_draft.ego_grid_lv_griddistrict_cut_0subst AS a, -- fragments - model_draft.ego_grid_lv_griddistrict_cut_1subst AS b -- target - WHERE ST_DWithin(ST_CENTROID(a.geom),ST_ExteriorRing(b.geom), 1000) -- In a 1 km radius - AND a.subst_id = b.subst_id - ORDER BY a.id, ST_Distance(ST_CENTROID(a.geom),ST_ExteriorRing(b.geom)); +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_osm_sector_per_griddistrict_2_retail','ego_dp_lv_griddistrict.sql',' '); + +-- intersect sector with mv-griddistrict +INSERT INTO model_draft.ego_osm_sector_per_lvgd_2_retail (geom) + SELECT c.geom ::geometry(Polygon,3035) + FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom AS geom + FROM model_draft.ego_osm_sector_per_griddistrict_2_retail AS a, + model_draft.ego_grid_lv_griddistrict AS b + WHERE a.geom && b.geom + ) AS c + WHERE ST_GeometryType(c.geom) = 'ST_Polygon'; + +-- sector stats +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET sector_area_retail = t2.sector_area, + sector_count_retail = t2.sector_count, + sector_share_retail = t2.sector_area / t2.area_ha + FROM (SELECT b.id AS id, + SUM(ST_AREA(a.geom)/10000) AS sector_area, + COUNT(a.geom) AS sector_count, + b.area_ha AS area_ha + FROM model_draft.ego_osm_sector_per_lvgd_2_retail AS a, + model_draft.ego_grid_lv_griddistrict AS b + WHERE b.geom && a.geom AND + ST_INTERSECTS(b.geom,ST_BUFFER(a.geom,-1)) + GROUP BY b.id + ) AS t2 + WHERE t1.id = t2.id; --- index GIST (geom) -CREATE INDEX ego_grid_lv_griddistrict_cut_nn_ageom_idx - ON model_draft.ego_grid_lv_griddistrict_cut_nn USING GIST (geom); +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_lvgd_2_retail','ego_dp_lv_griddistrict.sql',' '); + + +-- 3. Industrial sector +DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_lvgd_3_industrial CASCADE; +CREATE TABLE model_draft.ego_osm_sector_per_lvgd_3_industrial ( + id SERIAL NOT NULL, + geom geometry(Polygon,3035), + CONSTRAINT ego_osm_sector_per_lvgd_3_industrial_pkey PRIMARY KEY (id)); -- index GIST (geom) -CREATE INDEX ego_grid_lv_griddistrict_cut_nn_geom_line_idx - ON model_draft.ego_grid_lv_griddistrict_cut_nn USING GIST (geom_line); +CREATE INDEX ego_osm_sector_per_lvgd_3_industrial_gidx + ON model_draft.ego_osm_sector_per_lvgd_3_industrial USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_nn OWNER TO oeuser; +ALTER TABLE model_draft.ego_osm_sector_per_lvgd_3_industrial OWNER TO oeuser; -- metadata -COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict_cut_nn IS '{ - "comment": "eGoDP - Temporary table", - "version": "v0.3.0" }' ; +COMMENT ON TABLE model_draft.ego_osm_sector_per_lvgd_3_industrial IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut_nn','ego_dp_lv_griddistrict.sql',' '); +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_osm_sector_per_griddistrict_3_industrial','ego_dp_lv_griddistrict.sql',' '); + +-- intersect sector with mv-griddistrict +INSERT INTO model_draft.ego_osm_sector_per_lvgd_3_industrial (geom) + SELECT c.geom ::geometry(Polygon,3035) + FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom AS geom + FROM model_draft.ego_osm_sector_per_griddistrict_3_industrial AS a, + model_draft.ego_grid_lv_griddistrict AS b + WHERE a.geom && b.geom + ) AS c + WHERE ST_GeometryType(c.geom) = 'ST_Polygon'; + +-- sector stats +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET sector_area_industrial = t2.sector_area, + sector_count_industrial = t2.sector_count, + sector_share_industrial = t2.sector_area / t2.area_ha + FROM (SELECT b.id AS id, + SUM(ST_AREA(a.geom)/10000) AS sector_area, + COUNT(a.geom) AS sector_count, + b.area_ha AS area_ha + FROM model_draft.ego_osm_sector_per_lvgd_3_industrial AS a, + model_draft.ego_grid_lv_griddistrict AS b + WHERE b.geom && a.geom AND + ST_INTERSECTS(b.geom,ST_BUFFER(a.geom,-1)) + GROUP BY b.id + ) AS t2 + WHERE t1.id = t2.id; +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_lvgd_3_industrial','ego_dp_lv_griddistrict.sql',' '); --- collect and union -DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_nn_collect CASCADE; -CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut_nn_collect ( - id integer, - mvlv_subst_id integer, - subst_id integer, - la_id integer, - nn boolean, - geom geometry(MultiPolygon,3035), - CONSTRAINT ego_grid_lv_griddistrict_cut_nn_collect_pkey PRIMARY KEY (id) ); --- grant (oeuser) -ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_nn_collect OWNER TO oeuser; +-- 4. Agricultural sector +DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_lvgd_4_agricultural CASCADE; +CREATE TABLE model_draft.ego_osm_sector_per_lvgd_4_agricultural ( + id SERIAL NOT NULL, + geom geometry(Polygon,3035), + CONSTRAINT ego_osm_sector_per_lvgd_4_agricultural_pkey PRIMARY KEY (id)); -- index GIST (geom) -CREATE INDEX ego_grid_lv_griddistrict_cut_nn_collect_geom_idx - ON model_draft.ego_grid_lv_griddistrict_cut_nn_collect USING GIST (geom); +CREATE INDEX ego_osm_sector_per_lvgd_4_agricultural_gidx + ON model_draft.ego_osm_sector_per_lvgd_4_agricultural USING GIST (geom); --- insert -INSERT INTO model_draft.ego_grid_lv_griddistrict_cut_nn_collect (id,subst_id,la_id,nn,geom) - SELECT id, - subst_id, - la_id, - FALSE, - ST_MULTI(geom) - FROM model_draft.ego_grid_lv_griddistrict_cut_1subst - ORDER BY id; - --- insert union -WITH collect AS ( - SELECT a.id,a.geom - FROM ( - SELECT b_id AS id,geom - FROM model_draft.ego_grid_lv_griddistrict_cut_nn - UNION ALL - SELECT id,geom - FROM model_draft.ego_grid_lv_griddistrict_cut_1subst) AS a - ORDER BY id ) -UPDATE model_draft.ego_grid_lv_griddistrict_cut_nn_collect AS t1 - SET geom = t2.geom, - nn = TRUE - FROM (SELECT id, - ST_MULTI(ST_UNION(geom)) AS geom - FROM collect - GROUP BY id - ) AS t2 - WHERE t1.id = t2.id; - --- mvlv substation id -UPDATE model_draft.ego_grid_lv_griddistrict_cut_nn_collect AS t1 - SET mvlv_subst_id = t2.mvlv_subst_id - FROM ( - SELECT a.id AS id, - b.mvlv_subst_id AS mvlv_subst_id - FROM model_draft.ego_grid_lv_griddistrict_cut_nn_collect AS a, - model_draft.ego_grid_mvlv_substation AS b - WHERE a.geom && b.geom AND - ST_CONTAINS(a.geom,b.geom) - ) AS t2 - WHERE t1.id = t2.id; +-- grant (oeuser) +ALTER TABLE model_draft.ego_osm_sector_per_lvgd_4_agricultural OWNER TO oeuser; -- metadata -COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict_cut_nn_collect IS '{ - "comment": "eGoDP - Temporary table", - "version": "v0.3.0" }' ; +COMMENT ON TABLE model_draft.ego_osm_sector_per_lvgd_4_agricultural IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_osm_sector_per_griddistrict_4_agricultural','ego_dp_lv_griddistrict.sql',' '); + +-- intersect sector with mv-griddistrict +INSERT INTO model_draft.ego_osm_sector_per_lvgd_4_agricultural (geom) + SELECT c.geom ::geometry(Polygon,3035) + FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom AS geom + FROM model_draft.ego_osm_sector_per_griddistrict_4_agricultural AS a, + model_draft.ego_grid_lv_griddistrict AS b + WHERE a.geom && b.geom + ) AS c + WHERE ST_GeometryType(c.geom) = 'ST_Polygon'; + +-- sector stats +UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET sector_area_agricultural = t2.sector_area, + sector_count_agricultural = t2.sector_count, + sector_share_agricultural = t2.sector_area / t2.area_ha + FROM (SELECT b.id AS id, + SUM(ST_AREA(a.geom)/10000) AS sector_area, + COUNT(a.geom) AS sector_count, + b.area_ha AS area_ha + FROM model_draft.ego_osm_sector_per_lvgd_4_agricultural AS a, + model_draft.ego_grid_lv_griddistrict AS b + WHERE b.geom && a.geom AND + ST_INTERSECTS(b.geom,ST_BUFFER(a.geom,-1)) + GROUP BY b.id + ) AS t2 + WHERE t1.id = t2.id; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_lvgd_4_agricultural','ego_dp_lv_griddistrict.sql',' '); + + +-- sector stats + UPDATE model_draft.ego_grid_lv_griddistrict AS t1 + SET sector_area_sum = t2.sector_area_sum, + sector_share_sum = t2.sector_share_sum, + sector_count_sum = t2.sector_count_sum + FROM ( + SELECT id, + coalesce(sector_area_residential,0) + + coalesce(sector_area_retail,0) + + coalesce(sector_area_industrial,0) + + coalesce(sector_area_agricultural,0) AS sector_area_sum, + coalesce(sector_share_residential,0) + + coalesce(sector_share_retail,0) + + coalesce(sector_share_industrial,0) + + coalesce(sector_share_agricultural,0) AS sector_share_sum, + coalesce(sector_count_residential,0) + + coalesce(sector_count_retail,0) + + coalesce(sector_count_industrial,0) + + coalesce(sector_count_agricultural,0) AS sector_count_sum + FROM model_draft.ego_grid_lv_griddistrict + ) AS t2 + WHERE t1.id = t2.id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut_nn_collect','ego_dp_lv_griddistrict.sql',' '); +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_grid_lv_griddistrict','ego_dp_lv_griddistrict.sql',' '); + + +/* +-- add count +ALTER TABLE grid.ego_dp_mvlv_substation + DROP COLUMN IF EXISTS subst_cnt, + ADD COLUMN subst_cnt integer; + +-- mvlv substation count +UPDATE grid.ego_dp_mvlv_substation AS t1 + SET subst_cnt = t2.subst_cnt + FROM ( + SELECT a.mvlv_subst_id AS id, + COUNT(b.geom)::integer AS subst_cnt + FROM grid.ego_dp_mvlv_substation AS a, + grid.ego_dp_lv_griddistrict AS b + WHERE a.geom && b.geom AND + ST_CONTAINS(b.geom,a.geom) + GROUP BY a.mvlv_subst_id + )AS t2 + WHERE t1.mvlv_subst_id = t2.id; +*/ diff --git a/dataprocessing/sql_snippets/ego_dp_lv_loadcut.sql b/dataprocessing/sql_snippets/ego_dp_lv_loadcut.sql new file mode 100644 index 00000000..e8a6236f --- /dev/null +++ b/dataprocessing/sql_snippets/ego_dp_lv_loadcut.sql @@ -0,0 +1,309 @@ +/* +LV Loadcut +Cut Loadarea with MVLV Substation Voronoi. +Select parts with one LV Substation. +Select parts with no LV Substation. +Select parts with more than one substation. +Combine parts with Next Neighbor. +Collect and union all parts. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "jong42, Ludee" +*/ + + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_loadarea','ego_dp_lv_loadcut.sql',' '); +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mvlv_substation_voronoi','ego_dp_lv_loadcut.sql',' '); + +-- Cut Loadarea with MVLV Substation Voronoi +DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut CASCADE; +CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut ( + id serial NOT NULL, + la_id integer, + subst_id integer, + subst_cnt integer, + geom geometry(Polygon,3035), + CONSTRAINT ego_grid_lv_griddistrict_cut_pkey PRIMARY KEY (id) ); + +-- grant (oeuser) +ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut OWNER TO oeuser; + +-- index GIST (geom) +CREATE INDEX ego_grid_lv_griddistrict_cut_geom_idx + ON model_draft.ego_grid_lv_griddistrict_cut USING GIST (geom); + +INSERT INTO model_draft.ego_grid_lv_griddistrict_cut (geom,la_id,subst_id) + SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom ::geometry(Polygon,3035) AS geom, + a.id AS la_id, + a.subst_id AS subst_id + FROM model_draft.ego_demand_loadarea AS a, + model_draft.ego_grid_mvlv_substation_voronoi AS b + WHERE a.geom && b.geom + AND a.subst_id = b.subst_id + -- make sure the boundaries really intersect and not just touch each other + AND (ST_GEOMETRYTYPE(ST_SAFE_INTERSECTION(a.geom,b.geom)) = 'ST_Polygon' + OR ST_GEOMETRYTYPE(ST_SAFE_INTERSECTION(a.geom,b.geom)) = 'ST_MultiPolygon' ) + AND ST_isvalid(b.geom) AND ST_isvalid(a.geom); + --AND a.subst_id = '1886'; -- test one mvgd + +-- mvlv substation count +UPDATE model_draft.ego_grid_lv_griddistrict_cut AS t1 + SET subst_cnt = t2.subst_cnt + FROM ( + SELECT a.id AS id, + COUNT(b.geom)::integer AS subst_cnt + FROM model_draft.ego_grid_lv_griddistrict_cut AS a, + model_draft.ego_grid_mvlv_substation AS b + WHERE a.geom && b.geom AND + ST_CONTAINS(a.geom,b.geom) + GROUP BY a.id + )AS t2 + WHERE t1.id = t2.id; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut','ego_dp_lv_loadcut.sql',' '); + + +/* -- Validate (geom) +DROP VIEW IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_error_geom_view CASCADE; +CREATE VIEW model_draft.ego_grid_lv_griddistrict_cut_error_geom_view AS + SELECT test.id, + test.error, + reason(ST_IsValidDetail(test.geom)) AS error_reason, + ST_SetSRID(location(ST_IsValidDetail(test.geom)),3035) ::geometry(Point,3035) AS error_location + FROM ( + SELECT source.id AS id, -- PK + ST_IsValid(source.geom) AS error, + source.geom AS geom + FROM model_draft.ego_grid_lv_griddistrict_cut AS source -- Table + ) AS test + WHERE test.error = FALSE; + +-- grant (oeuser) +GRANT ALL ON TABLE model_draft.ego_grid_lv_griddistrict_cut_error_geom_view TO oeuser WITH GRANT OPTION; +ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_error_geom_view OWNER TO oeuser; + +-- Drop empty view +SELECT f_drop_view('{ego_grid_lv_griddistrict_cut_error_geom_view}', 'model_draft'); + */ + + +-- Select parts with one LV Substation +DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_1subst CASCADE; +CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut_1subst ( + id integer, + la_id integer, + subst_id integer, + subst_cnt integer, + geom geometry(Polygon,3035), + CONSTRAINT ego_grid_lv_griddistrict_cut_1subst_pkey PRIMARY KEY (id) ); + +-- grant (oeuser) +ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_1subst OWNER TO oeuser; + +-- insert dump +INSERT INTO model_draft.ego_grid_lv_griddistrict_cut_1subst + SELECT * + FROM model_draft.ego_grid_lv_griddistrict_cut + WHERE subst_cnt = 1; + +-- index GIST (geom) +CREATE INDEX ego_grid_lv_griddistrict_cut_1subst_geom_idx + ON model_draft.ego_grid_lv_griddistrict_cut_1subst USING GIST (geom); + +-- metadata +COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict_cut_1subst IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut_1subst','ego_dp_lv_loadcut.sql',' '); + + +-- Select parts with no LV Substation +DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_0subst CASCADE; +CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut_0subst ( + id integer, + la_id integer, + subst_id integer, + subst_cnt integer, + geom geometry(Polygon,3035), + CONSTRAINT ego_grid_lv_griddistrict_cut_0subst_pkey PRIMARY KEY (id) ); + +-- grant (oeuser) +ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_0subst OWNER TO oeuser; + +-- insert dump +INSERT INTO model_draft.ego_grid_lv_griddistrict_cut_0subst + SELECT * + FROM model_draft.ego_grid_lv_griddistrict_cut + WHERE subst_cnt IS NULL; + +-- index GIST (geom) +CREATE INDEX ego_grid_lv_griddistrict_cut_0subst_geom_idx + ON model_draft.ego_grid_lv_griddistrict_cut_0subst USING GIST (geom); + +-- metadata +COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict_cut_0subst IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut_0subst','ego_dp_lv_loadcut.sql',' '); + + +-- Select parts with more than one substation +DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_xsubst CASCADE; +CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut_xsubst ( + id integer, + la_id integer, + subst_id integer, + subst_cnt integer, + geom geometry(Polygon,3035), + CONSTRAINT ego_grid_lv_griddistrict_cut_xsubst_pkey PRIMARY KEY (id) ); + +-- grant (oeuser) +ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_xsubst OWNER TO oeuser; + +-- insert dump +INSERT INTO model_draft.ego_grid_lv_griddistrict_cut_xsubst + SELECT * + FROM model_draft.ego_grid_lv_griddistrict_cut + WHERE subst_cnt > 1; + +-- index GIST (geom) +CREATE INDEX ego_grid_lv_griddistrict_cut_xsubst_geom_idx + ON model_draft.ego_grid_lv_griddistrict_cut_xsubst USING GIST (geom); + +-- metadata +COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict_cut_xsubst IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut_xsubst','ego_dp_lv_loadcut.sql',' '); + + +-- Combine parts with Next Neighbor +DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_nn CASCADE; +CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut_nn ( + id serial, + a_id integer, + b_id integer, + subst_id integer, + la_id integer, + geom geometry(Polygon,3035), + geom_line geometry(LineString,3035), + distance double precision, + CONSTRAINT ego_grid_lv_griddistrict_cut_nn_pkey PRIMARY KEY (id) ); + +INSERT INTO model_draft.ego_grid_lv_griddistrict_cut_nn (a_id,b_id,subst_id,la_id,geom,geom_line,distance) + SELECT DISTINCT ON (a.id) + a.id, + b.id, + a.subst_id, + a.la_id, + a.geom, + ST_ShortestLine( + ST_CENTROID(a.geom) ::geometry(Point,3035), + ST_ExteriorRing(b.geom) ::geometry(LineString,3035) + ) ::geometry(LineString,3035) AS geom_line, + ST_Distance(ST_CENTROID(a.geom),ST_ExteriorRing(b.geom)) + FROM model_draft.ego_grid_lv_griddistrict_cut_0subst AS a, -- fragments + model_draft.ego_grid_lv_griddistrict_cut_1subst AS b -- target + WHERE ST_DWithin(ST_CENTROID(a.geom),ST_ExteriorRing(b.geom), 1000) -- In a 1 km radius + AND a.subst_id = b.subst_id + ORDER BY a.id, ST_Distance(ST_CENTROID(a.geom),ST_ExteriorRing(b.geom)); + +-- index GIST (geom) +CREATE INDEX ego_grid_lv_griddistrict_cut_nn_ageom_idx + ON model_draft.ego_grid_lv_griddistrict_cut_nn USING GIST (geom); + +-- index GIST (geom) +CREATE INDEX ego_grid_lv_griddistrict_cut_nn_geom_line_idx + ON model_draft.ego_grid_lv_griddistrict_cut_nn USING GIST (geom_line); + +-- grant (oeuser) +ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_nn OWNER TO oeuser; + +-- metadata +COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict_cut_nn IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut_nn','ego_dp_lv_loadcut.sql',' '); + + +-- Collect and union all parts +DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict_cut_nn_collect CASCADE; +CREATE TABLE model_draft.ego_grid_lv_griddistrict_cut_nn_collect ( + id integer, + mvlv_subst_id integer, + subst_id integer, + la_id integer, + nn boolean, + geom geometry(MultiPolygon,3035), + CONSTRAINT ego_grid_lv_griddistrict_cut_nn_collect_pkey PRIMARY KEY (id) ); + +-- grant (oeuser) +ALTER TABLE model_draft.ego_grid_lv_griddistrict_cut_nn_collect OWNER TO oeuser; + +-- index GIST (geom) +CREATE INDEX ego_grid_lv_griddistrict_cut_nn_collect_geom_idx + ON model_draft.ego_grid_lv_griddistrict_cut_nn_collect USING GIST (geom); + +-- insert +INSERT INTO model_draft.ego_grid_lv_griddistrict_cut_nn_collect (id,subst_id,la_id,nn,geom) + SELECT id, + subst_id, + la_id, + FALSE, + ST_MULTI(geom) + FROM model_draft.ego_grid_lv_griddistrict_cut_1subst + ORDER BY id; + +-- insert union +WITH collect AS ( + SELECT a.id,a.geom + FROM ( + SELECT b_id AS id,geom + FROM model_draft.ego_grid_lv_griddistrict_cut_nn + UNION ALL + SELECT id,geom + FROM model_draft.ego_grid_lv_griddistrict_cut_1subst) AS a + ORDER BY id ) +UPDATE model_draft.ego_grid_lv_griddistrict_cut_nn_collect AS t1 + SET geom = t2.geom, + nn = TRUE + FROM ( + SELECT id, + ST_MULTI(ST_UNION(geom)) AS geom + FROM collect + GROUP BY id + ) AS t2 + WHERE t1.id = t2.id; + +-- mvlv substation id +UPDATE model_draft.ego_grid_lv_griddistrict_cut_nn_collect AS t1 + SET mvlv_subst_id = t2.mvlv_subst_id + FROM ( + SELECT a.id AS id, + b.mvlv_subst_id AS mvlv_subst_id + FROM model_draft.ego_grid_lv_griddistrict_cut_nn_collect AS a, + model_draft.ego_grid_mvlv_substation AS b + WHERE a.geom && b.geom AND + ST_CONTAINS(a.geom,b.geom) + ) AS t2 + WHERE t1.id = t2.id; + +-- metadata +COMMENT ON TABLE model_draft.ego_grid_lv_griddistrict_cut_nn_collect IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_griddistrict_cut_nn_collect','ego_dp_lv_loadcut.sql',' '); diff --git a/dataprocessing/sql_snippets/ego_dp_lv_peakload.sql b/dataprocessing/sql_snippets/ego_dp_lv_peakload.sql deleted file mode 100644 index 592f8503..00000000 --- a/dataprocessing/sql_snippets/ego_dp_lv_peakload.sql +++ /dev/null @@ -1,352 +0,0 @@ -/* -In progess - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee, jong42" -*/ - - --- collect and union -DROP TABLE IF EXISTS model_draft.ego_grid_lv_griddistrict CASCADE; -CREATE TABLE model_draft.ego_grid_lv_griddistrict ( - id integer, - mvlv_subst_id integer, - subst_id integer, - la_id integer, - nn boolean, - subst_cnt integer, - zensus_sum integer, - zensus_count integer, - zensus_density double precision, - population_density double precision, - area_ha double precision, - sector_area_residential double precision, - sector_area_retail double precision, - sector_area_industrial double precision, - sector_area_agricultural double precision, - sector_area_sum double precision, - sector_share_residential double precision, - sector_share_retail double precision, - sector_share_industrial double precision, - sector_share_agricultural double precision, - sector_share_sum double precision, - sector_count_residential integer, - sector_count_retail integer, - sector_count_industrial integer, - sector_count_agricultural integer, - sector_count_sum integer, - sector_consumption_residential double precision, - sector_consumption_retail double precision, - sector_consumption_industrial double precision, - sector_consumption_agricultural double precision, - sector_consumption_sum double precision, - sector_peakload_residential double precision, - sector_peakload_retail double precision, - sector_peakload_industrial double precision, - sector_peakload_agricultural double precision, - geom geometry(MultiPolygon,3035), - CONSTRAINT ego_grid_lv_griddistrict_pkey PRIMARY KEY (id) ); - --- grant (oeuser) -ALTER TABLE model_draft.ego_grid_lv_griddistrict OWNER TO oeuser; - --- index GIST (geom) -CREATE INDEX ego_grid_lv_griddistrict_gidx - ON model_draft.ego_grid_lv_griddistrict USING GIST (geom); - --- insert -INSERT INTO model_draft.ego_grid_lv_griddistrict (id,mvlv_subst_id,subst_id,la_id,nn,geom) - SELECT * - FROM model_draft.ego_grid_lv_griddistrict_cut_nn_collect - ORDER BY mvlv_subst_id; - - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mvlv_substation','ego_dp_lv_peakload.sql',' '); - --- mvlv substation count -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET subst_cnt = t2.subst_cnt - FROM (SELECT a.id AS id, - COUNT(b.geom)::integer AS subst_cnt - FROM model_draft.ego_grid_lv_griddistrict AS a, - model_draft.ego_grid_mvlv_substation AS b - WHERE a.geom && b.geom AND - ST_CONTAINS(a.geom,b.geom) - GROUP BY a.id - )AS t2 - WHERE t1.id = t2.id; - --- update area (area_ha) -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET area_ha = t2.area - FROM (SELECT id, - ST_AREA(ST_TRANSFORM(geom,3035))/10000 AS area - FROM model_draft.ego_grid_lv_griddistrict - ) AS t2 - WHERE t1.id = t2.id; - - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','society','destatis_zensus_population_per_ha_mview','ego_dp_lv_peakload.sql',' '); - --- zensus 2011 population -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET zensus_sum = t2.zensus_sum, - zensus_count = t2.zensus_count, - zensus_density = t2.zensus_density - FROM (SELECT a.id AS id, - SUM(b.population)::integer AS zensus_sum, - COUNT(b.geom_point)::integer AS zensus_count, - (SUM(b.population)/COUNT(b.geom_point))::numeric AS zensus_density - FROM model_draft.ego_grid_lv_griddistrict AS a, - society.destatis_zensus_population_per_ha_mview AS b - WHERE a.geom && b.geom_point AND - ST_CONTAINS(a.geom,b.geom_point) - GROUP BY a.id - )AS t2 - WHERE t1.id = t2.id; - - - --- 1. residential sector -DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_lvgd_1_residential CASCADE; -CREATE TABLE model_draft.ego_osm_sector_per_lvgd_1_residential ( - id SERIAL NOT NULL, - geom geometry(Polygon,3035), - CONSTRAINT ego_osm_sector_per_lvgd_1_residential_pkey PRIMARY KEY (id)); - --- index GIST (geom) -CREATE INDEX ego_osm_sector_per_lvgd_1_residential_gidx - ON model_draft.ego_osm_sector_per_lvgd_1_residential USING GIST (geom); - --- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_lvgd_1_residential OWNER TO oeuser; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_osm_sector_per_griddistrict_1_residential','ego_dp_lv_peakload.sql',' '); - --- intersect sector with mv-griddistrict -INSERT INTO model_draft.ego_osm_sector_per_lvgd_1_residential (geom) - SELECT c.geom ::geometry(Polygon,3035) - FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom AS geom - FROM model_draft.ego_osm_sector_per_griddistrict_1_residential AS a, - model_draft.ego_grid_lv_griddistrict AS b - WHERE a.geom && b.geom - ) AS c - WHERE ST_GeometryType(c.geom) = 'ST_Polygon'; - --- sector stats -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET sector_area_residential = t2.sector_area, - sector_count_residential = t2.sector_count, - sector_share_residential = t2.sector_area / t2.area_ha - FROM (SELECT b.id AS id, - SUM(ST_AREA(a.geom)/10000) AS sector_area, - COUNT(a.geom) AS sector_count, - b.area_ha AS area_ha - FROM model_draft.ego_osm_sector_per_lvgd_1_residential AS a, - model_draft.ego_grid_lv_griddistrict AS b - WHERE b.geom && a.geom AND - ST_INTERSECTS(b.geom,ST_BUFFER(a.geom,-1)) - GROUP BY b.id - ) AS t2 - WHERE t1.id = t2.id; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_lvgd_1_residential','ego_dp_lv_peakload.sql',' '); - - - --- 2. retail sector -DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_lvgd_2_retail CASCADE; -CREATE TABLE model_draft.ego_osm_sector_per_lvgd_2_retail ( - id SERIAL NOT NULL, - geom geometry(Polygon,3035), - CONSTRAINT ego_osm_sector_per_lvgd_2_retail_pkey PRIMARY KEY (id)); - --- index GIST (geom) -CREATE INDEX ego_osm_sector_per_lvgd_2_retail_gidx - ON model_draft.ego_osm_sector_per_lvgd_2_retail USING GIST (geom); - --- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_lvgd_2_retail OWNER TO oeuser; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_osm_sector_per_griddistrict_2_retail','ego_dp_lv_peakload.sql',' '); - --- intersect sector with mv-griddistrict -INSERT INTO model_draft.ego_osm_sector_per_lvgd_2_retail (geom) - SELECT c.geom ::geometry(Polygon,3035) - FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom AS geom - FROM model_draft.ego_osm_sector_per_griddistrict_2_retail AS a, - model_draft.ego_grid_lv_griddistrict AS b - WHERE a.geom && b.geom - ) AS c - WHERE ST_GeometryType(c.geom) = 'ST_Polygon'; - --- sector stats -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET sector_area_retail = t2.sector_area, - sector_count_retail = t2.sector_count, - sector_share_retail = t2.sector_area / t2.area_ha - FROM (SELECT b.id AS id, - SUM(ST_AREA(a.geom)/10000) AS sector_area, - COUNT(a.geom) AS sector_count, - b.area_ha AS area_ha - FROM model_draft.ego_osm_sector_per_lvgd_2_retail AS a, - model_draft.ego_grid_lv_griddistrict AS b - WHERE b.geom && a.geom AND - ST_INTERSECTS(b.geom,ST_BUFFER(a.geom,-1)) - GROUP BY b.id - ) AS t2 - WHERE t1.id = t2.id; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_lvgd_2_retail','ego_dp_lv_peakload.sql',' '); - - --- 3. industrial sector -DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_lvgd_3_industrial CASCADE; -CREATE TABLE model_draft.ego_osm_sector_per_lvgd_3_industrial ( - id SERIAL NOT NULL, - geom geometry(Polygon,3035), - CONSTRAINT ego_osm_sector_per_lvgd_3_industrial_pkey PRIMARY KEY (id)); - --- index GIST (geom) -CREATE INDEX ego_osm_sector_per_lvgd_3_industrial_gidx - ON model_draft.ego_osm_sector_per_lvgd_3_industrial USING GIST (geom); - --- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_lvgd_3_industrial OWNER TO oeuser; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_osm_sector_per_griddistrict_3_industrial','ego_dp_lv_peakload.sql',' '); - --- intersect sector with mv-griddistrict -INSERT INTO model_draft.ego_osm_sector_per_lvgd_3_industrial (geom) - SELECT c.geom ::geometry(Polygon,3035) - FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom AS geom - FROM model_draft.ego_osm_sector_per_griddistrict_3_industrial AS a, - model_draft.ego_grid_lv_griddistrict AS b - WHERE a.geom && b.geom - ) AS c - WHERE ST_GeometryType(c.geom) = 'ST_Polygon'; - --- sector stats -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET sector_area_industrial = t2.sector_area, - sector_count_industrial = t2.sector_count, - sector_share_industrial = t2.sector_area / t2.area_ha - FROM (SELECT b.id AS id, - SUM(ST_AREA(a.geom)/10000) AS sector_area, - COUNT(a.geom) AS sector_count, - b.area_ha AS area_ha - FROM model_draft.ego_osm_sector_per_lvgd_3_industrial AS a, - model_draft.ego_grid_lv_griddistrict AS b - WHERE b.geom && a.geom AND - ST_INTERSECTS(b.geom,ST_BUFFER(a.geom,-1)) - GROUP BY b.id - ) AS t2 - WHERE t1.id = t2.id; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_lvgd_3_industrial','ego_dp_lv_peakload.sql',' '); - - - --- 4. agricultural sector -DROP TABLE IF EXISTS model_draft.ego_osm_sector_per_lvgd_4_agricultural CASCADE; -CREATE TABLE model_draft.ego_osm_sector_per_lvgd_4_agricultural ( - id SERIAL NOT NULL, - geom geometry(Polygon,3035), - CONSTRAINT ego_osm_sector_per_lvgd_4_agricultural_pkey PRIMARY KEY (id)); - --- index GIST (geom) -CREATE INDEX ego_osm_sector_per_lvgd_4_agricultural_gidx - ON model_draft.ego_osm_sector_per_lvgd_4_agricultural USING GIST (geom); - --- grant (oeuser) -ALTER TABLE model_draft.ego_osm_sector_per_lvgd_4_agricultural OWNER TO oeuser; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_osm_sector_per_griddistrict_4_agricultural','ego_dp_lv_peakload.sql',' '); - --- intersect sector with mv-griddistrict -INSERT INTO model_draft.ego_osm_sector_per_lvgd_4_agricultural (geom) - SELECT c.geom ::geometry(Polygon,3035) - FROM (SELECT (ST_DUMP(ST_SAFE_INTERSECTION(a.geom,b.geom))).geom AS geom - FROM model_draft.ego_osm_sector_per_griddistrict_4_agricultural AS a, - model_draft.ego_grid_lv_griddistrict AS b - WHERE a.geom && b.geom - ) AS c - WHERE ST_GeometryType(c.geom) = 'ST_Polygon'; - --- sector stats -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET sector_area_agricultural = t2.sector_area, - sector_count_agricultural = t2.sector_count, - sector_share_agricultural = t2.sector_area / t2.area_ha - FROM (SELECT b.id AS id, - SUM(ST_AREA(a.geom)/10000) AS sector_area, - COUNT(a.geom) AS sector_count, - b.area_ha AS area_ha - FROM model_draft.ego_osm_sector_per_lvgd_4_agricultural AS a, - model_draft.ego_grid_lv_griddistrict AS b - WHERE b.geom && a.geom AND - ST_INTERSECTS(b.geom,ST_BUFFER(a.geom,-1)) - GROUP BY b.id - ) AS t2 - WHERE t1.id = t2.id; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_lvgd_4_agricultural','ego_dp_lv_peakload.sql',' '); - - --- sector stats -UPDATE model_draft.ego_grid_lv_griddistrict AS t1 - SET sector_area_sum = t2.sector_area_sum, - sector_share_sum = t2.sector_share_sum, - sector_count_sum = t2.sector_count_sum - FROM ( - SELECT id, - coalesce(sector_area_residential,0) + - coalesce(sector_area_retail,0) + - coalesce(sector_area_industrial,0) + - coalesce(sector_area_agricultural,0) AS sector_area_sum, - coalesce(sector_share_residential,0) + - coalesce(sector_share_retail,0) + - coalesce(sector_share_industrial,0) + - coalesce(sector_share_agricultural,0) AS sector_share_sum, - coalesce(sector_count_residential,0) + - coalesce(sector_count_retail,0) + - coalesce(sector_count_industrial,0) + - coalesce(sector_count_agricultural,0) AS sector_count_sum - FROM model_draft.ego_grid_lv_griddistrict - ) AS t2 - WHERE t1.id = t2.id; - - -/* -- add count -ALTER TABLE grid.ego_dp_mvlv_substation - DROP COLUMN IF EXISTS subst_cnt, - ADD COLUMN subst_cnt integer; - --- mvlv substation count -UPDATE grid.ego_dp_mvlv_substation AS t1 - SET subst_cnt = t2.subst_cnt - FROM (SELECT a.mvlv_subst_id AS id, - COUNT(b.geom)::integer AS subst_cnt - FROM grid.ego_dp_mvlv_substation AS a, - grid.ego_dp_lv_griddistrict AS b - WHERE a.geom && b.geom AND - ST_CONTAINS(b.geom,a.geom) - GROUP BY a.mvlv_subst_id - )AS t2 - WHERE t1.mvlv_subst_id = t2.id; */ - - - - \ No newline at end of file diff --git a/dataprocessing/sql_snippets/ego_dp_lv_substation.sql b/dataprocessing/sql_snippets/ego_dp_lv_substation.sql index 91e5120d..78832fe6 100644 --- a/dataprocessing/sql_snippets/ego_dp_lv_substation.sql +++ b/dataprocessing/sql_snippets/ego_dp_lv_substation.sql @@ -1,214 +1,201 @@ /* -create mvlv substations (ONT) from lattice -Runtime 08:30 min - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "jong42, Ludee" +MVLV Substation (ONT) +Create a lattice (regular fishnet grid) with 360m. +Create MVLV Substation from lattice centroid. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee, jong42" */ --- lv lattice -DROP TABLE IF EXISTS model_draft.ego_lattice_360m_lv; -CREATE TABLE model_draft.ego_lattice_360m_lv ( - id serial NOT NULL, - la_id integer, - geom geometry(Polygon,3035), - CONSTRAINT ego_lattice_360m_lv_pkey PRIMARY KEY (id) ); + +-- Create a lattice (regular fishnet grid) with 360m +DROP TABLE IF EXISTS model_draft.ego_lattice_360m_lv; +CREATE TABLE model_draft.ego_lattice_360m_lv ( + id serial NOT NULL, + la_id integer, + geom geometry(Polygon,3035), + CONSTRAINT ego_lattice_360m_lv_pkey PRIMARY KEY (id) ); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_loadarea','ego_dp_lv_substation.sql',' '); -- lattice on the bbox of loadareas INSERT INTO model_draft.ego_lattice_360m_lv (geom, la_id) - SELECT - -- Normalfall: mehrere Zellen pro Grid - CASE WHEN ST_AREA (geom) > (3.1415926535 * 1152) - THEN ST_SETSRID(ST_CREATEFISHNET( - ROUND((ST_ymax(box2d(geom)) - ST_ymin(box2d(geom))) /360)::integer, - ROUND((ST_xmax(box2d(geom)) - ST_xmin(box2d(geom))) /360)::integer, - 360, - 360, - ST_xmin (box2d(geom)), - ST_ymin (box2d(geom)) - ),3035)::geometry(POLYGON,3035) - -- Spezialfall: bei kleinene Lastgebieten erstelle nur eine Zelle - ELSE ST_SETSRID(ST_CREATEFISHNET( - 1, - 1, - (ST_ymax(box2d(geom)) - ST_ymin(box2d(geom))), - (ST_xmax(box2d(geom)) - ST_xmin(box2d(geom))), - ST_xmin (box2d(geom)), - ST_ymin (box2d(geom)) - ),3035)::geometry(POLYGON,3035) - END AS geom, - id AS la_id - FROM model_draft.ego_demand_loadarea; + SELECT + -- Normalfall: mehrere Zellen pro Grid + CASE WHEN ST_AREA (geom) > (3.1415926535 * 1152) + THEN ST_SETSRID(ST_CREATEFISHNET( + ROUND((ST_ymax(box2d(geom)) - ST_ymin(box2d(geom))) /360)::integer, + ROUND((ST_xmax(box2d(geom)) - ST_xmin(box2d(geom))) /360)::integer, + 360, + 360, + ST_xmin (box2d(geom)), + ST_ymin (box2d(geom)) + ),3035)::geometry(POLYGON,3035) + -- Spezialfall: bei kleinene Lastgebieten erstelle nur eine Zelle + ELSE ST_SETSRID(ST_CREATEFISHNET( + 1, + 1, + (ST_ymax(box2d(geom)) - ST_ymin(box2d(geom))), + (ST_xmax(box2d(geom)) - ST_xmin(box2d(geom))), + ST_xmin (box2d(geom)), + ST_ymin (box2d(geom)) + ),3035)::geometry(POLYGON,3035) + END AS geom, + id AS la_id + FROM model_draft.ego_demand_loadarea; -- index GIST (geom) CREATE INDEX ego_lattice_360m_lv_geom_idx - ON model_draft.ego_lattice_360m_lv USING GIST (geom); + ON model_draft.ego_lattice_360m_lv USING GIST (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_lattice_360m_lv OWNER TO oeuser; +ALTER TABLE model_draft.ego_lattice_360m_lv OWNER TO oeuser; + +-- metadata +COMMENT ON TABLE model_draft.ego_lattice_360m_lv IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_lattice_360m_lv','ego_dp_lv_substation.sql',' '); --- MVLV Substation -DROP TABLE IF EXISTS model_draft.ego_grid_mvlv_substation; -CREATE TABLE model_draft.ego_grid_mvlv_substation ( - mvlv_subst_id serial NOT NULL, - la_id integer, - subst_id integer, - geom geometry(Point,3035), - CONSTRAINT ego_grid_mvlv_substation_pkey PRIMARY KEY (mvlv_subst_id) ); +-- Create MVLV Substation from lattice centroid +DROP TABLE IF EXISTS model_draft.ego_grid_mvlv_substation; +CREATE TABLE model_draft.ego_grid_mvlv_substation ( + mvlv_subst_id serial NOT NULL, + la_id integer, + subst_id integer, + geom geometry(Point,3035), + CONSTRAINT ego_grid_mvlv_substation_pkey PRIMARY KEY (mvlv_subst_id) ); -- index GIST (geom) CREATE INDEX ego_grid_mvlv_substation_geom_idx - ON model_draft.ego_grid_mvlv_substation USING GIST (geom); + ON model_draft.ego_grid_mvlv_substation USING GIST (geom); -- Bestimme diejenigen Mittelpunkte der Grid-Polygone, die innerhalb der Lastgebiete liegen --- centroids from lattice, when inside loadarea +-- Centroids from lattice, when inside loadarea INSERT INTO model_draft.ego_grid_mvlv_substation (la_id, geom) - SELECT DISTINCT b.id AS la_id, - ST_CENTROID (a.geom)::geometry(POINT,3035) AS geom - FROM model_draft.ego_lattice_360m_lv AS a, - model_draft.ego_demand_loadarea AS b - WHERE ST_WITHIN(ST_CENTROID(a.geom),b.geom) AND - b.id = a.la_id; - --- Füge den Lastgebieten, die aufgrund ihrer geringen Fläche keine ONTs zugeordnet bekommen haben, ihren Mittelpunkt als ONT-STandort hinzu: (01:54 min) --- + SELECT DISTINCT b.id AS la_id, + ST_CENTROID (a.geom)::geometry(POINT,3035) AS geom + FROM model_draft.ego_lattice_360m_lv AS a, + model_draft.ego_demand_loadarea AS b + WHERE ST_WITHIN(ST_CENTROID(a.geom),b.geom) + AND b.id = a.la_id; + +-- Füge den Lastgebieten, die aufgrund ihrer geringen Fläche keine ONT zugeordnet bekommen haben, ihren Mittelpunkt als ONT-Standort hinzu +-- Centroid for very small Loadarea INSERT INTO model_draft.ego_grid_mvlv_substation (geom, la_id) - SELECT - CASE WHEN ST_CONTAINS (geom,ST_CENTROID(area_without_ont.geom)) - THEN ST_CENTROID(area_without_ont.geom) - ELSE ST_POINTONSURFACE(area_without_ont.geom) - END , area_without_ont.id - FROM (SELECT geom, id - FROM model_draft.ego_demand_loadarea - EXCEPT - SELECT a.geom AS geom, a.id - FROM model_draft.ego_demand_loadarea AS a, - model_draft.ego_grid_mvlv_substation AS b - WHERE ST_CONTAINS (a.geom, b.geom) - GROUP BY (a.id) - ) AS area_without_ont ; + SELECT + CASE + WHEN ST_CONTAINS (geom,ST_CENTROID(area_without_ont.geom)) + THEN ST_CENTROID(area_without_ont.geom) + ELSE ST_POINTONSURFACE(area_without_ont.geom) + END, + area_without_ont.id + FROM ( + SELECT geom, id + FROM model_draft.ego_demand_loadarea + EXCEPT + SELECT a.geom AS geom, a.id + FROM model_draft.ego_demand_loadarea AS a, + model_draft.ego_grid_mvlv_substation AS b + WHERE ST_CONTAINS (a.geom, b.geom) + GROUP BY (a.id) + ) AS area_without_ont ; -- grant (oeuser) -ALTER TABLE model_draft.ego_grid_mvlv_substation OWNER TO oeuser; +ALTER TABLE model_draft.ego_grid_mvlv_substation OWNER TO oeuser; + +-- metadata +COMMENT ON TABLE model_draft.ego_grid_mvlv_substation IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_mvlv_substation','ego_dp_lv_substation.sql',' '); -- Lege Buffer um ONT-Standorte und ermittle die Teile der Lastgebiete, die sich nicht innerhalb dieser Buffer befinden --- -DROP TABLE IF EXISTS model_draft.ego_grid_lv_loadarea_rest; -CREATE TABLE model_draft.ego_grid_lv_loadarea_rest ( - id serial NOT NULL, - la_id integer, - geom_point geometry(Point,3035), - geom geometry(Polygon,3035), - CONSTRAINT ego_grid_lv_loadarea_rest_pkey PRIMARY KEY (id) ); +-- LV Griddistrict rest +DROP TABLE IF EXISTS model_draft.ego_grid_lv_loadarea_rest; +CREATE TABLE model_draft.ego_grid_lv_loadarea_rest ( + id serial NOT NULL, + la_id integer, + geom_point geometry(Point,3035), + geom geometry(Polygon,3035), + CONSTRAINT ego_grid_lv_loadarea_rest_pkey PRIMARY KEY (id) ); -- grant (oeuser) -ALTER TABLE model_draft.ego_grid_lv_loadarea_rest OWNER TO oeuser; +ALTER TABLE model_draft.ego_grid_lv_loadarea_rest OWNER TO oeuser; --- insert rest +-- Insert rest INSERT INTO model_draft.ego_grid_lv_loadarea_rest (la_id, geom) - SELECT c.id AS la_id, - (ST_DUMP(ST_DIFFERENCE(c.geom, area_with_onts.geom))).geom::geometry(Polygon,3035) AS geom - FROM (SELECT ST_BUFFER(ST_UNION(a.geom),540) AS geom,b.id AS id - FROM model_draft.ego_grid_mvlv_substation AS a, - model_draft.ego_demand_loadarea AS b - WHERE b.geom && a.geom AND - ST_CONTAINS(b.geom,a.geom) - GROUP BY b.id - ) AS area_with_onts - INNER JOIN model_draft.ego_demand_loadarea AS c - ON (c.id = area_with_onts.id) - WHERE ST_AREA(ST_DIFFERENCE(c.geom, area_with_onts.geom)) > 0 ; + SELECT c.id AS la_id, + (ST_DUMP(ST_DIFFERENCE(c.geom, area_with_onts.geom))).geom::geometry(Polygon,3035) AS geom + FROM ( + SELECT ST_BUFFER(ST_UNION(a.geom),540) AS geom,b.id AS id + FROM model_draft.ego_grid_mvlv_substation AS a, + model_draft.ego_demand_loadarea AS b + WHERE b.geom && a.geom AND + ST_CONTAINS(b.geom,a.geom) + GROUP BY b.id + ) AS area_with_onts + INNER JOIN model_draft.ego_demand_loadarea AS c + ON (c.id = area_with_onts.id) + WHERE ST_AREA(ST_DIFFERENCE(c.geom, area_with_onts.geom)) > 0 ; -- index GIST (geom) CREATE INDEX ego_grid_lv_loadarea_rest_geom_idx - ON model_draft.ego_grid_lv_loadarea_rest USING GIST (geom); - + ON model_draft.ego_grid_lv_loadarea_rest USING GIST (geom); + -- index GIST (geom_point) CREATE INDEX ego_grid_lv_loadarea_rest_geom_point_idx - ON model_draft.ego_grid_lv_loadarea_rest USING GIST (geom_point); + ON model_draft.ego_grid_lv_loadarea_rest USING GIST (geom_point); -- PointOnSurface for rest -UPDATE model_draft.ego_grid_lv_loadarea_rest - SET geom_point = ST_PointOnSurface(geom) ::geometry(POINT,3035) ; +UPDATE model_draft.ego_grid_lv_loadarea_rest + SET geom_point = ST_PointOnSurface(geom) ::geometry(POINT,3035) ; + +-- metadata +COMMENT ON TABLE model_draft.ego_grid_lv_loadarea_rest IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_lv_loadarea_rest','ego_dp_lv_substation.sql',' '); -- Bestimme die Mittelpunkte der Gebiete, die noch nicht durch ONT abgedeckt sind, und lege diese Mittelpunkte als ONT-Standorte fest --- +-- Add LV INSERT INTO model_draft.ego_grid_mvlv_substation (la_id, geom) - SELECT la_id, - geom_point ::geometry(POINT,3035) - FROM model_draft.ego_grid_lv_loadarea_rest; + SELECT la_id, + geom_point ::geometry(POINT,3035) + FROM model_draft.ego_grid_lv_loadarea_rest; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mv_griddistrict','ego_dp_lv_substation.sql',' '); -- subst_id from MV-griddistrict -UPDATE model_draft.ego_grid_mvlv_substation AS t1 - SET subst_id = t2.subst_id - FROM ( - SELECT a.mvlv_subst_id AS mvlv_subst_id, - b.subst_id AS subst_id - FROM model_draft.ego_grid_mvlv_substation AS a, - model_draft.ego_grid_mv_griddistrict AS b - WHERE b.geom && a.geom AND - ST_CONTAINS(b.geom,a.geom) - ) AS t2 - WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; +UPDATE model_draft.ego_grid_mvlv_substation AS t1 + SET subst_id = t2.subst_id + FROM ( + SELECT a.mvlv_subst_id AS mvlv_subst_id, + b.subst_id AS subst_id + FROM model_draft.ego_grid_mvlv_substation AS a, + model_draft.ego_grid_mv_griddistrict AS b + WHERE b.geom && a.geom AND + ST_CONTAINS(b.geom,a.geom) + ) AS t2 + WHERE t1.mvlv_subst_id = t2.mvlv_subst_id; -- metadata COMMENT ON TABLE model_draft.ego_grid_mvlv_substation IS '{ - "title": "eGoDP - MVLV Substation (ONT)", - "description": "Low voltage substations / Distribution substations (Ortsnetztrafos)", - "language": [ "eng", "ger" ], - "reference_date": "2017", - "sources": [ - {"name": "open_eGo", "description": "eGo dataprocessing", - "url": "https://github.com/openego/data_processing", "license": "ODbL-1.0"} ], - "spatial": [ - {"extend": "Germany", - "resolution": " "} ], - "license": [ - {"id": "ODbL-1.0", - "name": "Open Data Commons Open Database License 1.0", - "version": "1.0", - "url": "https://opendatacommons.org/licenses/odbl/1.0/", - "instruction": "You are free: To Share, To Create, To Adapt; As long as you: Attribute, Share-Alike, Keep open!"} ], - "contributors": [ - {"name": "jong42", "email": "", - "date": "20.10.2016", "comment": "create table"}, - {"name": "jong42", "email": "", - "date": "27.10.2016", "comment": "change table names"}, - {"name": "Ludee", "email": "", - "date": "21.03.2017", "comment": "validate and restructure tables"}, - {"name": "Ludee", "email": "", - "date": "22.03.2017", "comment": "update metadata (1.1) and add license"} ], - "resources": [{ - "schema": { - "fields": [ - {"name": "mvlv_subst_id", "description": "MVLV substation ID", "unit": "" }, - {"name": "la_id", "description": "loadarea ID", "unit": "" }, - {"name": "subst_id", "description": "HVMV substation ID", "unit": "" }, - {"name": "geom", "description": "geometry", "unit": "" } ]}, - "meta_version": "1.1" }] }'; - --- select description -SELECT obj_description('model_draft.ego_grid_mvlv_substation' ::regclass) ::json; + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_grid_mvlv_substation','ego_dp_lv_substation.sql',' '); diff --git a/dataprocessing/sql_snippets/ego_dp_lv_substation_voronoi.sql b/dataprocessing/sql_snippets/ego_dp_lv_substation_voronoi.sql index a1212ee1..08d50944 100644 --- a/dataprocessing/sql_snippets/ego_dp_lv_substation_voronoi.sql +++ b/dataprocessing/sql_snippets/ego_dp_lv_substation_voronoi.sql @@ -1,14 +1,18 @@ /* -mvlv substation voronoi -voronoi polygons with eucldean distance / manhattan distance would be better but not available in sql +MVLV Substation Voronoi +Voronoi polygons with Eucldean distance (manhattan distance would be better but not available in sql). -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "jong42, Ludee" +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee, jong42" */ +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mvlv_substation','ego_dp_lv_substation_voronoi.sql',' '); +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_hvmv_substation_dummy','ego_dp_lv_substation_voronoi.sql',' '); + -- add Dummy points to substations (18 Points) ALTER TABLE model_draft.ego_grid_mvlv_substation DROP COLUMN IF EXISTS is_dummy; @@ -17,420 +21,106 @@ ALTER TABLE model_draft.ego_grid_mvlv_substation ADD COLUMN is_dummy boolean; INSERT INTO model_draft.ego_grid_mvlv_substation (mvlv_subst_id, geom, is_dummy) -SELECT subst_id+800000, - ST_TRANSFORM(geom,3035), - TRUE -FROM model_draft.ego_grid_hvmv_substation_dummy; - + SELECT subst_id + 800000, + ST_TRANSFORM(geom,3035), + TRUE + FROM model_draft.ego_grid_hvmv_substation_dummy; -- execute voronoi with loop -DROP TABLE IF EXISTS model_draft.ego_grid_mvlv_substation_voronoi CASCADE; -CREATE TABLE model_draft.ego_grid_mvlv_substation_voronoi ( - id serial NOT NULL, - subst_id integer, - geom geometry(Polygon,3035), - CONSTRAINT ego_grid_mvlv_substation_voronoi_pkey PRIMARY KEY (id) ); - --- grant (oeuser) -ALTER TABLE model_draft.ego_grid_mvlv_substation_voronoi OWNER TO oeuser; +DROP TABLE IF EXISTS model_draft.ego_grid_mvlv_substation_voronoi CASCADE; +CREATE TABLE model_draft.ego_grid_mvlv_substation_voronoi ( + id serial NOT NULL, + subst_id integer, + geom geometry(Polygon,3035), + CONSTRAINT ego_grid_mvlv_substation_voronoi_pkey PRIMARY KEY (id) ); -- index GIST (geom) CREATE INDEX ego_grid_mvlv_substation_voronoi_geom_idx - ON model_draft.ego_grid_mvlv_substation_voronoi USING GIST (geom); + ON model_draft.ego_grid_mvlv_substation_voronoi USING GIST (geom); + +-- grant (oeuser) +ALTER TABLE model_draft.ego_grid_mvlv_substation_voronoi OWNER TO oeuser; + +-- metadata +COMMENT ON TABLE model_draft.ego_grid_mvlv_substation_voronoi IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- loop over MV Griddistrict DO $$ DECLARE gd integer; BEGIN - FOR gd_id IN 1..3608 - LOOP - EXECUTE - + FOR gd_id IN 1..3608 + LOOP + EXECUTE 'WITH -- Sample set of points to work with - Sample AS (SELECT ST_SetSRID(ST_Union(pts.geom), 0) AS geom - FROM model_draft.ego_grid_mvlv_substation AS pts - WHERE pts.subst_id = ' || gd_id || ' OR is_dummy = TRUE - ), -- INPUT 1/2 + Sample AS ( + SELECT ST_SetSRID(ST_Union(pts.geom), 0) AS geom + FROM model_draft.ego_grid_mvlv_substation AS pts + WHERE pts.subst_id = ' || gd_id || ' + OR is_dummy = TRUE + ), -- INPUT 1/2 -- Build edges and circumscribe points to generate a centroid Edges AS ( - SELECT id, - UNNEST(ARRAY[''e1'',''e2'',''e3'']) EdgeName, - UNNEST(ARRAY[ - ST_MakeLine(p1,p2) , - ST_MakeLine(p2,p3) , - ST_MakeLine(p3,p1)]) Edge, - ST_Centroid(ST_ConvexHull(ST_Union(-- Done this way due to issues I had with LineToCurve - ST_CurveToLine(REPLACE(ST_AsText(ST_LineMerge(ST_Union(ST_MakeLine(p1,p2),ST_MakeLine(p2,p3)))),''LINE'',''CIRCULAR''),15), - ST_CurveToLine(REPLACE(ST_AsText(ST_LineMerge(ST_Union(ST_MakeLine(p2,p3),ST_MakeLine(p3,p1)))),''LINE'',''CIRCULAR''),15) - ))) ct - FROM ( - -- Decompose to points - SELECT id, - ST_PointN(g,1) p1, - ST_PointN(g,2) p2, - ST_PointN(g,3) p3 - FROM ( - SELECT (gd).Path id, ST_ExteriorRing((gd).geom) g -- ID andmake triangle a linestring - FROM (SELECT (ST_Dump(ST_DelaunayTriangles(geom))) gd FROM Sample) a -- Get Delaunay Triangles - )b - ) c - ) -INSERT INTO model_draft.ego_grid_mvlv_substation_voronoi (geom, subst_id) -- INPUT 2/2 -SELECT ST_SetSRID((ST_Dump(ST_Polygonize(ST_Node(ST_LineMerge(ST_Union(v, (SELECT ST_ExteriorRing(ST_ConvexHull(ST_Union(ST_Union(ST_Buffer(edge,20),ct)))) FROM Edges))))))).geom, 3035) geom, ' || gd_id || ' AS subst_id -FROM ( - SELECT -- Create voronoi edges and reduce to a multilinestring - ST_LineMerge(ST_Union(ST_MakeLine( - x.ct, - CASE - WHEN y.id IS NULL THEN - CASE WHEN ST_Within( - x.ct, - (SELECT ST_ConvexHull(geom) FROM sample)) THEN -- Dont draw lines back towards the original set - -- Project line out twice the distance from convex hull - ST_MakePoint(ST_X(x.ct) + ((ST_X(ST_Centroid(x.edge)) - ST_X(x.ct)) * 200),ST_Y(x.ct) + ((ST_Y(ST_Centroid(x.edge)) - ST_Y(x.ct)) * 200)) + SELECT id, + UNNEST(ARRAY[''e1'',''e2'',''e3'']) EdgeName, + UNNEST(ARRAY[ + ST_MakeLine(p1,p2) , + ST_MakeLine(p2,p3) , + ST_MakeLine(p3,p1)]) Edge, + ST_Centroid(ST_ConvexHull(ST_Union(-- Done this way due to issues I had with LineToCurve + ST_CurveToLine(REPLACE(ST_AsText(ST_LineMerge(ST_Union(ST_MakeLine(p1,p2),ST_MakeLine(p2,p3)))),''LINE'',''CIRCULAR''),15), + ST_CurveToLine(REPLACE(ST_AsText(ST_LineMerge(ST_Union(ST_MakeLine(p2,p3),ST_MakeLine(p3,p1)))),''LINE'',''CIRCULAR''),15) + ))) ct + FROM ( + -- Decompose to points + SELECT id, + ST_PointN(g,1) p1, + ST_PointN(g,2) p2, + ST_PointN(g,3) p3 + FROM ( + SELECT (gd).Path id, + ST_ExteriorRing((gd).geom) g -- ID and make triangle a linestring + FROM ( + SELECT (ST_Dump(ST_DelaunayTriangles(geom))) gd + FROM Sample) a -- Get Delaunay Triangles + ) b + ) c + ) +INSERT INTO model_draft.ego_grid_mvlv_substation_voronoi (geom, subst_id) -- INPUT 2/2 + SELECT ST_SetSRID((ST_Dump(ST_Polygonize(ST_Node(ST_LineMerge(ST_Union(v, + (SELECT ST_ExteriorRing(ST_ConvexHull(ST_Union(ST_Union(ST_Buffer(edge,20),ct)))) + FROM Edges))))))).geom, 3035) geom, ' || gd_id || ' AS subst_id + FROM ( + SELECT -- Create voronoi edges and reduce to a multilinestring + ST_LineMerge(ST_Union(ST_MakeLine( + x.ct, + CASE + WHEN y.id IS NULL THEN + CASE WHEN ST_Within( + x.ct, + (SELECT ST_ConvexHull(geom) FROM sample)) THEN -- Dont draw lines back towards the original set + -- Project line out twice the distance from convex hull + ST_MakePoint(ST_X(x.ct) + ((ST_X(ST_Centroid(x.edge)) - ST_X(x.ct)) * 200),ST_Y(x.ct) + ((ST_Y(ST_Centroid(x.edge)) - ST_Y(x.ct)) * 200)) + END + ELSE + y.ct END - ELSE - y.ct - END - ))) v - FROM Edges x - LEFT OUTER JOIN -- Self Join based on edges - Edges y ON x.id <> y.id AND ST_Equals(x.edge,y.edge) - ) z'; + ))) v + FROM Edges x + LEFT OUTER JOIN -- Self Join based on edges + Edges y ON x.id <> y.id AND ST_Equals(x.edge,y.edge) + ) z'; END LOOP; - END; $$; -- Delete Dummy points from substations DELETE FROM model_draft.ego_grid_mvlv_substation WHERE is_dummy = TRUE; - -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_grid_mvlv_substation_voronoi','ego_dp_lv_substation_voronoi.sql',' '); - - - -/* --- execute voronoi (experimental) -DROP TABLE IF EXISTS model_draft.ego_grid_mvlv_substation_voronoi_exp CASCADE; -CREATE TABLE model_draft.ego_grid_mvlv_substation_voronoi_exp ( - id serial NOT NULL, - subst_id integer, - subst_cnt integer, - geom geometry(Polygon,3035), - CONSTRAINT ego_grid_mvlv_substation_voronoi_exp_pkey PRIMARY KEY (id) ); - --- grant (oeuser) -ALTER TABLE model_draft.ego_grid_mvlv_substation_voronoi_exp OWNER TO oeuser; - --- index GIST (geom) -CREATE INDEX ego_grid_mvlv_substation_voronoi_exp_geom_idx - ON model_draft.ego_grid_mvlv_substation_voronoi_exp USING GIST (geom); - --- Voronoi -WITH -- sample set of points to work with - Sample AS (SELECT ST_SetSRID(ST_Union(ST_Collect(a.geom,b.geom)), 0) AS geom - FROM model_draft.ego_grid_mvlv_substation AS a, -- input points - model_draft.ego_grid_hvmv_substation_dummy AS b), -- dummy points - -- Build edges and circumscribe points to generate centroids - Edges AS ( - SELECT id, - UNNEST(ARRAY['e1','e2','e3']) EdgeName, - UNNEST(ARRAY[ - ST_MakeLine(p1,p2) , - ST_MakeLine(p2,p3) , - ST_MakeLine(p3,p1)]) Edge, - ST_Centroid(ST_ConvexHull(ST_Union(-- Done this way due to issues I had with LineToCurve - ST_CurveToLine(REPLACE(ST_AsText(ST_LineMerge(ST_Union(ST_MakeLine(p1,p2),ST_MakeLine(p2,p3)))),'LINE','CIRCULAR'),15), - ST_CurveToLine(REPLACE(ST_AsText(ST_LineMerge(ST_Union(ST_MakeLine(p2,p3),ST_MakeLine(p3,p1)))),'LINE','CIRCULAR'),15) ))) ct - FROM ( - -- Decompose to points - SELECT id, - ST_PointN(g,1) p1, - ST_PointN(g,2) p2, - ST_PointN(g,3) p3 - FROM ( - SELECT (gd).Path id, ST_ExteriorRing((gd).geom) g -- ID andmake triangle a linestring - FROM (SELECT (ST_Dump(ST_DelaunayTriangles(geom))) gd FROM Sample) a -- Get Delaunay Triangles - )b - ) c ) -SELECT ST_SetSRID((ST_Dump(ST_Polygonize(ST_Node(ST_LineMerge(ST_Union(v, (SELECT ST_ExteriorRing(ST_ConvexHull(ST_Union(ST_Union(ST_Buffer(edge,20),ct)))) FROM Edges))))))).geom, 2180) geom -INTO model_draft.ego_grid_mvlv_substation_voronoi_exp -- name 2/2 - FROM (SELECT -- Create voronoi edges and reduce to a multilinestring - ST_LineMerge(ST_Union(ST_MakeLine( - x.ct, - CASE - WHEN y.id IS NULL THEN - CASE WHEN ST_Within(x.ct, - (SELECT ST_ConvexHull(geom) FROM sample)) THEN -- Don't draw lines back towards the original set - -- Project line out twice the distance from convex hull - ST_MakePoint(ST_X(x.ct) + ((ST_X(ST_Centroid(x.edge)) - ST_X(x.ct)) * 200),ST_Y(x.ct) + ((ST_Y(ST_Centroid(x.edge)) - ST_Y(x.ct)) * 200)) - END - ELSE y.ct - END ))) v - FROM Edges x - LEFT OUTER JOIN -- Self Join based on edges - Edges y ON x.id <> y.id AND ST_Equals(x.edge,y.edge) - ) z; - */ -/* -- set table -ALTER TABLE model_draft.ego_grid_mvlv_substation_voronoi_exp - ADD COLUMN id serial, - ADD COLUMN subst_id integer, - ADD COLUMN subst_sum integer, - ADD PRIMARY KEY (id), - ALTER COLUMN geom TYPE geometry(POLYGON,3035) USING ST_SETSRID(geom,3035); */ - - - - - - - - -/* --- voronoi algorithm -DROP TABLE IF EXISTS model_draft.ego_grid_mvlv_substation_voronoi CASCADE; -CREATE TABLE model_draft.ego_grid_mvlv_substation_voronoi ( - id serial NOT NULL, - subst_id integer, - geom geometry(Polygon,3035), - CONSTRAINT ego_grid_mvlv_substation_voronoi_pkey PRIMARY KEY (id) ); - --- index GIST (geom) -CREATE INDEX ego_grid_mvlv_substation_voronoi_geom_idx - ON model_draft.ego_grid_mvlv_substation_voronoi USING GIST (geom); - --- grant (oeuser) -ALTER TABLE model_draft.ego_grid_mvlv_substation_voronoi OWNER TO oeuser; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mvlv_substation','ego_dp_lv_griddistrict.sql',' '); - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_hvmv_substation_dummy','ego_dp_lv_griddistrict.sql',' '); - --- loop over mv-griddistricts -DO -$$ -DECLARE gd integer; -BEGIN - FOR gd_id IN 1..1327 - LOOP - EXECUTE - 'WITH - -- Sample set of points to work with - Sample AS (SELECT ST_SetSRID(ST_Union(ST_Collect(a.geom,b.geom)), 0) AS geom - FROM model_draft.ego_grid_mvlv_substation AS a, - model_draft.ego_grid_hvmv_substation_dummy AS b - WHERE a.subst_id = ' || gd_id || ' - ), -- INPUT 1/2 - -- Build edges and circumscribe points to generate centroids - Edges AS ( - SELECT id, - UNNEST(ARRAY[''e1'',''e2'',''e3'']) EdgeName, - UNNEST(ARRAY[ - ST_MakeLine(p1,p2) , - ST_MakeLine(p2,p3) , - ST_MakeLine(p3,p1)]) Edge, - ST_Centroid(ST_ConvexHull(ST_Union(-- Done this way due to issues I had with LineToCurve - ST_CurveToLine(REPLACE(ST_AsText(ST_LineMerge(ST_Union(ST_MakeLine(p1,p2),ST_MakeLine(p2,p3)))),''LINE'',''CIRCULAR''),15), - ST_CurveToLine(REPLACE(ST_AsText(ST_LineMerge(ST_Union(ST_MakeLine(p2,p3),ST_MakeLine(p3,p1)))),''LINE'',''CIRCULAR''),15) - ))) ct - FROM ( - -- Decompose to points - SELECT id, - ST_PointN(g,1) p1, - ST_PointN(g,2) p2, - ST_PointN(g,3) p3 - FROM ( - SELECT (gd).Path id, ST_ExteriorRing((gd).geom) g -- ID andmake triangle a linestring - FROM (SELECT (ST_Dump(ST_DelaunayTriangles(geom))) gd FROM Sample) a -- Get Delaunay Triangles - )b - ) c - ) - INSERT INTO model_draft.ego_grid_mvlv_substation_voronoi (geom, subst_id) -- INPUT 2/2 - SELECT ST_SetSRID((ST_Dump(ST_Polygonize(ST_Node(ST_LineMerge(ST_Union(v, (SELECT ST_ExteriorRing(ST_ConvexHull(ST_Union(ST_Union(ST_Buffer(edge,20),ct)))) FROM Edges))))))).geom, 3035) geom, ' || gd_id || ' AS subst_id - FROM ( - SELECT -- Create voronoi edges and reduce to a multilinestring - ST_LineMerge(ST_Union(ST_MakeLine( - x.ct, - CASE - WHEN y.id IS NULL THEN - CASE WHEN ST_Within( - x.ct, - (SELECT ST_ConvexHull(geom) FROM sample)) THEN -- Dont draw lines back towards the original set - -- Project line out twice the distance from convex hull - ST_MakePoint(ST_X(x.ct) + ((ST_X(ST_Centroid(x.edge)) - ST_X(x.ct)) * 200),ST_Y(x.ct) + ((ST_Y(ST_Centroid(x.edge)) - ST_Y(x.ct)) * 200)) - END - ELSE - y.ct - END - ))) v - FROM Edges x - LEFT OUTER JOIN -- Self Join based on edges - Edges y ON x.id <> y.id AND ST_Equals(x.edge,y.edge) - ) z'; -END LOOP; -END; -$$; - - --- loop over mv-griddistricts -DO -$$ -DECLARE gd integer; -BEGIN - FOR gd_id IN 1329..3608 - LOOP - EXECUTE - 'WITH - -- Sample set of points to work with - Sample AS (SELECT ST_SetSRID(ST_Union(ST_Collect(a.geom,b.geom)), 0) AS geom - FROM model_draft.ego_grid_mvlv_substation AS a, - model_draft.ego_grid_hvmv_substation_dummy AS b - WHERE a.subst_id = ' || gd_id || ' - ), -- INPUT 1/2 - -- Build edges and circumscribe points to generate centroids - Edges AS ( - SELECT id, - UNNEST(ARRAY[''e1'',''e2'',''e3'']) EdgeName, - UNNEST(ARRAY[ - ST_MakeLine(p1,p2) , - ST_MakeLine(p2,p3) , - ST_MakeLine(p3,p1)]) Edge, - ST_Centroid(ST_ConvexHull(ST_Union(-- Done this way due to issues I had with LineToCurve - ST_CurveToLine(REPLACE(ST_AsText(ST_LineMerge(ST_Union(ST_MakeLine(p1,p2),ST_MakeLine(p2,p3)))),''LINE'',''CIRCULAR''),15), - ST_CurveToLine(REPLACE(ST_AsText(ST_LineMerge(ST_Union(ST_MakeLine(p2,p3),ST_MakeLine(p3,p1)))),''LINE'',''CIRCULAR''),15) - ))) ct - FROM ( - -- Decompose to points - SELECT id, - ST_PointN(g,1) p1, - ST_PointN(g,2) p2, - ST_PointN(g,3) p3 - FROM ( - SELECT (gd).Path id, ST_ExteriorRing((gd).geom) g -- ID andmake triangle a linestring - FROM (SELECT (ST_Dump(ST_DelaunayTriangles(geom))) gd FROM Sample) a -- Get Delaunay Triangles - )b - ) c - ) - INSERT INTO model_draft.ego_grid_mvlv_substation_voronoi (geom, subst_id) -- INPUT 2/2 - SELECT ST_SetSRID((ST_Dump(ST_Polygonize(ST_Node(ST_LineMerge(ST_Union(v, (SELECT ST_ExteriorRing(ST_ConvexHull(ST_Union(ST_Union(ST_Buffer(edge,20),ct)))) FROM Edges))))))).geom, 3035) geom, ' || gd_id || ' AS subst_id - FROM ( - SELECT -- Create voronoi edges and reduce to a multilinestring - ST_LineMerge(ST_Union(ST_MakeLine( - x.ct, - CASE - WHEN y.id IS NULL THEN - CASE WHEN ST_Within( - x.ct, - (SELECT ST_ConvexHull(geom) FROM sample)) THEN -- Dont draw lines back towards the original set - -- Project line out twice the distance from convex hull - ST_MakePoint(ST_X(x.ct) + ((ST_X(ST_Centroid(x.edge)) - ST_X(x.ct)) * 200),ST_Y(x.ct) + ((ST_Y(ST_Centroid(x.edge)) - ST_Y(x.ct)) * 200)) - END - ELSE - y.ct - END - ))) v - FROM Edges x - LEFT OUTER JOIN -- Self Join based on edges - Edges y ON x.id <> y.id AND ST_Equals(x.edge,y.edge) - ) z'; -END LOOP; -END; -$$; - --- metadata -COMMENT ON TABLE model_draft.ego_grid_mvlv_substation_voronoi IS '{ - "title": "eGoDP - MVLV Substation Voronoi", - "description": "Voronoi for MVLV substation", - "language": [ "eng", "ger" ], - "reference_date": "2017", - "sources": [ - {"name": "open_eGo", "description": "eGo dataprocessing", - "url": "https://github.com/openego/data_processing", "license": "ODbL-1.0"} ], - "spatial": [ - {"extend": "Germany", - "resolution": " "} ], - "license": [ - {"id": "tba", - "name": "tba", - "version": "tba", - "url": "tba", - "instruction": "tba"} ], - "contributors": [ - {"name": "jong42", "email": " ", - "date": "20.10.2016", "comment": "create table"}, - {"name": "jong42", "email": " ", - "date": "27.10.2016", "comment": "change table names"}, - {"name": "Ludee", "email": " ", - "date": "21.03.2017", "comment": "validate and restructure tables"}, - {"name": "Ludee", "email": " ", - "date": "22.03.2017", "comment": "update metadata (1.1) and add license"} ], - "resources": [{ - "schema": { - "fields": [ - {"name": "id", "description": "unique identifier", "unit": "" }, - {"name": "subst_id", "description": "HVMV substation ID", "unit": "" }, - {"name": "geom", "description": "geometry", "unit": "" } ]}, - "meta_version": "1.1" }] }'; - --- select description -SELECT obj_description('model_draft.ego_grid_mvlv_substation_voronoi' ::regclass) ::json; - --- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_grid_mvlv_substation_voronoi','ego_dp_lv_griddistrict.sql',' '); - - */ - - -/* --- remove dummy Voronoi -ALTER TABLE model_draft.ego_grid_mvlv_substation_voronoi - ADD COLUMN cnt integer; - --- count mvlv_substation -UPDATE model_draft.ego_grid_mvlv_substation_voronoi AS t1 - SET cnt = t2.cnt - FROM (SELECT a.id AS id, - COUNT(b.geom)::integer AS cnt - FROM model_draft.ego_grid_mvlv_substation_voronoi AS a, - model_draft.ego_grid_mvlv_substation AS b - WHERE a.geom && b.geom AND - ST_CONTAINS(a.geom,b.geom) AND - a.subst_id = b.subst_id - GROUP BY a.id - )AS t2 - WHERE t1.id = t2.id; - - - - - -DROP TABLE IF EXISTS model_draft.ego_grid_mvlv_substation_voronoi_clean CASCADE; -CREATE TABLE model_draft.ego_grid_mvlv_substation_voronoi_clean ( - id serial NOT NULL, - subst_id integer, - geom geometry(Polygon,3035), - CONSTRAINT ego_grid_mvlv_substation_voronoi_pkey PRIMARY KEY (id) ); - --- index GIST (geom) -CREATE INDEX ego_grid_mvlv_substation_voronoi_clean_geom_idx - ON model_draft.ego_grid_mvlv_substation_voronoi_clean USING GIST (geom); - --- grant (oeuser) -ALTER TABLE model_draft.ego_grid_mvlv_substation_voronoi_clean OWNER TO oeuser; - -INSERT INTO model_draft.ego_grid_mvlv_substation_voronoi_clean - SELECT * - FROM model_draft.ego_grid_mvlv_substation_voronoi - WHERE cnt = 1; - - - */ diff --git a/dataprocessing/sql_snippets/ego_dp_mv_griddistrict.sql b/dataprocessing/sql_snippets/ego_dp_mv_griddistrict.sql index fc734f76..30befb99 100644 --- a/dataprocessing/sql_snippets/ego_dp_mv_griddistrict.sql +++ b/dataprocessing/sql_snippets/ego_dp_mv_griddistrict.sql @@ -1,10 +1,13 @@ /* -mv griddistrict - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +MV GridDistricts +Generate MV GridDistricts from municipalities and Voronoi cells. +Each HVMV Substation receives one catchment area. +Detailed description can be found in Hülk et. al. 2017. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ ---------- ---------- ---------- @@ -93,8 +96,8 @@ ALTER TABLE model_draft.ego_boundaries_hvmv_subst_per_gem_1_mview OWNER TO oeuse -- metadata COMMENT ON MATERIALIZED VIEW model_draft.ego_boundaries_hvmv_subst_per_gem_1_mview IS '{ - "comment": "eGoDP - Temporary table", - "version": "v0.3.0" }' ; + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_boundaries_hvmv_subst_per_gem_1_mview','ego_dp_mv_griddistrict.sql',' '); diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_generator.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_generator.sql index a23b9550..96a1fbd3 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_generator.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_generator.sql @@ -1,5 +1,16 @@ -/* -Information on generators which are assigned to a specific substation are transformed to a data structure which is suitable for PyPSA. This script creates the scenarios +/* +Generators which were assigned to a specific substation prior to this script need to be transformed to a data structure +suitable for powerflow calculation with tool developed and used in the open_eGo project. The following script transforms +data from the powerplant mviews and adds some parameters according to the characteristics of the generators. +To reduce the data volumn in the final table structure (see ego_dp_powerflow_hv_setup.sql) the generators are clustered +according to their source, installed capacity, weather point and substation they are assigned to. Here a new and unique +aggregate-ID (aggr_id) is assigned. +In an interims stage all generators are converted to a format suitable for powerflow flow calculation seperately. This data +can be accessed in table `model_draft.ego_supply_pf_generator_single `_. + + +Information on generators which are assigned to a specific substation are transformed to a data structure which is suitable +for PyPSA. This script creates the scenarios 'Status Quo', 'NEP 2035' and 'eGo 100' in the hv powerflow schema. __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" @@ -226,6 +237,8 @@ UPDATE model_draft.ego_supply_pf_generator_single a -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','climate','cosmoclmgrid','ego_dp_powerflow_assignment_generator.sql',' '); + +-- Identify climate point IDs for each renewables generator UPDATE model_draft.ego_supply_pf_generator_single a SET power_class = b.power_class_id FROM model_draft.ego_power_class b @@ -287,6 +300,7 @@ UPDATE model_draft.ego_supply_pf_generator_single a SET aggr_id = nextval('model_draft.ego_supply_pf_generator_single_aggr_id') WHERE a.p_nom >= 50; + -- Delete all generators with p_nom=0 DELETE FROM model_draft.ego_supply_pf_generator_single WHERE p_nom IS NULL OR p_nom = 0; diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_load.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_load.sql index ce85fdad..a013f680 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_load.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_load.sql @@ -1,5 +1,7 @@ /* -Assignment of loads to the relevant bus in the grid model based on grid districts or voronoi cells according to the grid level of the loads considered. +Similar to generators in the previous script the data on loads are converted and clustered to fit the data structure +needed for powerflow calculations. The electricity demand of small scale consumer and industrial large scale consumer is +considered. __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_otgid.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_otgid.sql index 31ab439e..0abba2d3 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_otgid.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_otgid.sql @@ -1,5 +1,8 @@ /* -Powerplant lists are updated with information on the otg_id of substations and w_id of weather cell which the generators are assigned to. +This scripts updates tables containing `renewable power plants `_ and `conventional power plants `_ with information on the otg_id of substations which the generator is assigned to. +The otg_id and subst_id of the substations are matched in tables containing information on `HV/MV substations `_ and `EHV substations `_. + +Additionally the otg_id of offshore wind turbines is updated manually. The geometry of offshore wind power plants is matched with polygons representing a catchment area per relevant offshore grid connection point. __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" @@ -33,6 +36,7 @@ UPDATE model_draft.ego_dp_supply_conv_powerplant a -- Update otg_id of offshore windturbines manually + UPDATE model_draft.ego_dp_supply_res_powerplant SET otg_id = (CASE WHEN ST_Within(model_draft.ego_dp_supply_res_powerplant.geom, ST_Transform(ST_GeomFromText('Polygon ((5.95173129831068426 55.37818807468978122, 6.77308878227293132 55.54526167457145647, 7.94556091586789481 55.49201720741838528, 8.2277066164656123 54.05646341504236574, 8.04587938719152795 53.93022020557216223, 6.55364212625248399 55.07064320311457095, 5.95173129831068426 55.37818807468978122))', 4326), 4326)) diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_storage.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_storage.sql index 2bd0be4b..2aac27a3 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_storage.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_storage.sql @@ -1,5 +1,6 @@ /* -Assignment of storage units to the relevant substation in the grid model. +Equivalent to the assignment of generators in this script storages are converted and clustered for all three scenarios +considered in open_eGo. __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_unid.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_unid.sql index baa6d95a..793c73f7 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_unid.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_assignment_unid.sql @@ -1,5 +1,7 @@ /* -All generators (conventional and renewable) are listed in a central table and a unified id (un_id) is assigned. + +All generators from the `conventional `_ and `renewable `_ power plant list are brought together in a `central generator list `_. +A unified id (un_id) is assigned to those generators listed. Information on the un_id is then added to the conventional and renewable power plant lists. __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_create_pp_mview.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_create_pp_mview.sql index 87b7eabd..b113ef1a 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_create_pp_mview.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_create_pp_mview.sql @@ -1,5 +1,6 @@ -/* -SQL Script to create mviews diyplaying power plants by scenario. +/* +This script creates discrete materialized views (mview) for conventional and renewable power plants per scenario, +resulting in six different mviews for the three main scenarios considered in open_eGo. __copyright__ = "Europa-Universität Flensburg - ZNES" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_electrical_neighbour.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_electrical_neighbour.sql index fc7c2aca..4aae36ca 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_electrical_neighbour.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_electrical_neighbour.sql @@ -1,5 +1,7 @@ /* -Creates border crossing lines and buses for electrical neighbours +The electricity grid model extracted from osmTGmod is limited to the German territory. This script adds border crossing +lines and corresponding buses and transformers to all neighbouring countries which have a direct electrical connection +to the German grid. __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_fix_ehv_subnetworks.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_fix_ehv_subnetworks.sql new file mode 100644 index 00000000..9fb00f47 --- /dev/null +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_fix_ehv_subnetworks.sql @@ -0,0 +1,282 @@ +DROP SEQUENCE IF EXISTS model_draft.ego_grid_hv_fix_errors_bus_id CASCADE; +CREATE SEQUENCE model_draft.ego_grid_hv_fix_errors_bus_id; +SELECT setval('model_draft.ego_grid_hv_fix_errors_bus_id', (max(bus_id)+1)) FROM model_draft.ego_grid_pf_hv_bus; + +DROP SEQUENCE IF EXISTS model_draft.ego_grid_hv_fix_errors_line_id CASCADE; +CREATE SEQUENCE model_draft.ego_grid_hv_fix_errors_line_id; +SELECT setval('model_draft.ego_grid_hv_fix_errors_line_id', (max(line_id)+1)) FROM model_draft.ego_grid_pf_hv_line; + +DROP SEQUENCE IF EXISTS model_draft.ego_grid_hv_fix_errors_transformer_id CASCADE; +CREATE SEQUENCE model_draft.ego_grid_hv_fix_errors_transformer_id; +SELECT setval('model_draft.ego_grid_hv_fix_errors_transformer_id', (max(trafo_id)+1)) FROM model_draft.ego_grid_pf_hv_transformer; + + +---- 380kV Berlin +--- line doesn't exist in entso-e, substations are 110kV in osm +-- delete 380kV buses + +DELETE FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 380 AND bus_id IN (SELECT bus_i FROM grid.otg_ehvhv_bus_data +WHERE geom IN ('0101000020E6100000E6D4C59C60F02A40A254AE08CF424A40','0101000020E61000000F6844C4280B2B4074AC9C07C1424A40', '0101000020E61000008A5DDBDB2DE92A40372C5789C3424A40', '0101000020E6100000799F91F85E0B2B40277E8D4F25434A40', '0101000020E6100000ADA580B4FF112B40829EBC7E77434A40', '0101000020E6100000C8C54A64F5122B4012EB782DCC444A40') +AND base_kv = 380); + +DELETE FROM model_draft.ego_grid_pf_hv_line WHERE bus0 IN (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom IN ('0101000020E6100000E6D4C59C60F02A40A254AE08CF424A40','0101000020E61000000F6844C4280B2B4074AC9C07C1424A40', '0101000020E61000008A5DDBDB2DE92A40372C5789C3424A40', '0101000020E6100000799F91F85E0B2B40277E8D4F25434A40', '0101000020E6100000ADA580B4FF112B40829EBC7E77434A40', '0101000020E6100000C8C54A64F5122B4012EB782DCC444A40') +AND base_kv = 380); + +DELETE FROM model_draft.ego_grid_pf_hv_transformer WHERE bus1 IN (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom IN ('0101000020E6100000E6D4C59C60F02A40A254AE08CF424A40','0101000020E61000000F6844C4280B2B4074AC9C07C1424A40', '0101000020E61000008A5DDBDB2DE92A40372C5789C3424A40', '0101000020E6100000799F91F85E0B2B40277E8D4F25434A40', '0101000020E6100000ADA580B4FF112B40829EBC7E77434A40', '0101000020E6100000C8C54A64F5122B4012EB782DCC444A40') +AND base_kv = 380); + + +---- 220kV Weiher +--- missing line from Weiher to Uchtelfangen +-- add line +INSERT INTO model_draft.ego_grid_pf_hv_line (line_id, bus0, bus1, s_nom, cables, frequency, topo, geom, length, x) +SELECT nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 220 AND osm_name = 'KW Weiher'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 220 AND osm_name = 'Umspannwerk Uchtelfangen'), + 1040, + 6, + 50, + '0102000020E610000002000000D6DAC30771211C402D969AACD8AA4840650A175E64FC1B4071A44A690DB04840', + '0105000020E610000001000000010200000002000000D6DAC30771211C402D969AACD8AA4840650A175E64FC1B4071A44A690DB04840', + 5.23167613642908 * 1.15, + 5.23167613642908 * 1.15 * 314.15 * 0.001/2; + + +INSERT INTO model_draft.ego_grid_pf_hv_bus (bus_id, v_nom, geom) +SELECT DISTINCT ON (geom) + nextval('model_draft.ego_grid_hv_fix_errors_bus_id'), + 110, + geom +FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940'; + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E610000091281516C01521401894D558490C4940' AND base_kv = 110), + bus0 = (SELECT bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940' AND v_nom = 110), + s_nom = 520, + cables = 6, + x = length * 314.15 * 0.0012/2 +WHERE bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E610000091281516C01521401894D558490C4940' AND base_kv = 220) + AND bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940' AND base_kv = 220); + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E6100000C208F2600E1321404EED06B1FE094940' AND base_kv = 110), + bus1 = (SELECT bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940' AND v_nom = 110), + s_nom = 520, + cables = 6, + x = length * 314.15 * 0.0012/2 +WHERE bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E6100000C208F2600E1321404EED06B1FE094940' AND base_kv = 220) + AND bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940' AND base_kv = 220); + +DELETE FROM model_draft.ego_grid_pf_hv_bus WHERE bus_id IN +(SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom IN ('0101000020E61000008FEB3AAF0C152140B97D456DD1094940', '0101000020E6100000C208F2600E1321404EED06B1FE094940', '0101000020E610000091281516C01521401894D558490C4940') AND base_kv = 220); + +---220kV subnetwork Heinitz/Saarstahl +--- add 220kV line from Uchtelfangen to Heinitz, in respect to osm and bing +-- this error is maybe fixed in osm +INSERT INTO model_draft.ego_grid_pf_hv_line (line_id, bus0, bus1, length, topo, geom, x, r, s_nom, cables, frequency) +SELECT nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 220 AND osm_name = 'Umspannwerk Uchtelfangen'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 220 AND osm_name = 'Umspannwerk Heinitz'), + 10.6040557238013, + '0102000020E610000002000000650A175E64FC1B4071A44A690DB0484085E1E2CCE9771C40D1DD7BCF2EA94840', + '0105000020E610000001000000010200000002000000650A175E64FC1B4071A44A690DB0484085E1E2CCE9771C40D1DD7BCF2EA94840', + 10.6040557238013 * 314 * 0.001/2, + 10.6040557238013 * 0.109/2, + 1040, + 6, + 50; + +---- Verbindung Lübeck-Siems +INSERT INTO model_draft.ego_grid_pf_hv_bus (bus_id, v_nom, geom) +SELECT DISTINCT ON (geom) + nextval('model_draft.ego_grid_hv_fix_errors_bus_id'), + 220, + geom +FROM grid.otg_ehvhv_bus_data WHERE osm_name IN ('Umspannwerk Siems'); + +INSERT INTO model_draft.ego_grid_pf_hv_line (line_id, bus0, bus1, s_nom, topo, geom, length, x, cables, frequency) +SELECT nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 220 AND osm_name = 'Lübeck'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 220 AND geom = '0101000020E6100000D38040358C8525403935408972F44A40'), + 520, + '0102000020E6100000020000006380D3776E4825406764811FA7F54A40D38040358C8525403935408972F44A40', + '0105000020E6100000010000000102000000020000006380D3776E4825406764811FA7F54A40D38040358C8525403935408972F44A40', + 7.91338283450564 * 1.15, + 314.15 * 0.001 * 7.91338283450564 * 1.15, + 3, + 50; + +INSERT INTO model_draft.ego_grid_pf_hv_transformer(trafo_id, bus0, bus1, s_nom, x, phase_shift, tap_ratio, topo, geom) +SELECT nextval('model_draft.ego_grid_hv_fix_errors_transformer_id'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 220 AND geom = '0101000020E6100000D38040358C8525403935408972F44A40'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 380 AND geom = '0101000020E6100000D38040358C8525403935408972F44A40'), + 600, + 9.68, + 0, + 1, + '0102000020E610000002000000D38040358C8525403935408972F44A40D38040358C8525403935408972F44A40', + '0105000020E610000001000000010200000002000000D38040358C8525403935408972F44A40D38040358C8525403935408972F44A40'; + +---- 380kV Plattling +--- wrong line connection +-- delete old line and add new one +INSERT INTO model_draft.ego_grid_pf_hv_bus (bus_id, v_nom, geom) +VALUES (nextval('model_draft.ego_grid_hv_fix_errors_bus_id'), + 380, + '0101000020E6100000E1F4899702B52940FA1DD48F97614840'); + +INSERT INTO model_draft.ego_grid_pf_hv_line (line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency) +VALUES (nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND osm_name = 'Umspannwerk Pleinting'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 380 AND geom = '0101000020E6100000E1F4899702B52940FA1DD48F97614840'), + '0102000020E61000000200000030AC43C5F4342A40D8CA9DE357554840E1F4899702B52940FA1DD48F97614840', + '0105000020E610000001000000010200000032000000E1F4899702B52940FA1DD48F976148401D2C5217DFB629402B5327FB42614840CAF6C6B546B92940DE03745FCE604840DF1C098F91BB29403F41182E6160484075EF9705C9BD2940154152FAF85F4840EA91ABFD42C02940C81FB182845F484054AE4BE889C22940171A3ED8185F4840D5592DB0C7C4294041F0F8F6AE5E4840A65B1BCF0CC729409679ABAE435E4840AD6D8AC745C9294031395A7AD95D48402CADD05158CB2940D4827236785D48403535BF5076CD29402B3BB313145D484044F174F8B5CF2940EA5A7B9FAA5C4840EB3E5B62C0D12940B0D69AF7495C4840C30A5CC3B1D329400371C394ED5B4840A16BBAF9A1D52940C65E398C935B4840178F41DDF6D729404C112A82495B4840E58E482586DA2940F855B950F95A484042823D810BDD294038FEFAD7A85A48404CA59F7076DF2940E27899BC5C5A4840650CBD0F51E22940E256E652015A4840203FC0FFFBE42940B3B112F3AC594840C5CC9948C4E72940B6CA5D9555594840896A0025F4E929406304F97E0F59484025F4E967A0EC2940D07F0F5EBB58484035046CAC69EF2940CD1DA2766458484012A5BDC117F22940E6B4029E0F5848403CF4DDAD2CF5294024AF7378AD5748400E9D43BEF0F7294044937A05585748405820D50B99FA2940FE63213A04574840996AC1E677FD294020D099B4A956484063EA533310002A40BB39A63858564840B3CF639467022A40CFC023850D5648400848EAF307052A40A297512CB7554840AB871EE7EC072A4089FF852F5D554840A3135333B50A2A40BC2CDCA8045548403EE2FCF26E0D2A40ACA0B316B0544840A5486359D50F2A40E729615C6054484003931B45D6122A40351D4B6947544840C878944A78162A40CEEE7F3628544840F11879B4CC192A402321DB430C544840416150A6D11C2A40B35F77BAF3534840C1ADBB79AA1F2A403D57A53EDA534840F9307BD976222A404969368FC3534840032BE2CF4B242A4031E076B2E553484071766B990C272A4040C1C58A1A5448404301DBC188292A4063DD2EEA49544840C19206126F2C2A40058651B58254484048B599547E2F2A40ED22F197BB5448406B6A3414D2312A40006A0F20E8544840', + 22.624793411008, + 314.15 * 0.0008 * 22.624793411008, + 1790, + 3, + 50), + + (nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 380 AND geom = '0101000020E6100000E1F4899702B52940FA1DD48F97614840'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND osm_name = 'Schwandorf'), + '0102000020E610000002000000E1F4899702B52940FA1DD48F97614840BBEF0B431D2A2840230697C412A64840', + '0105000020E610000003000000010200000006000000C0EF0B431D2A2840200697C412A64840B2C68FE7E92A2840E88E5951DEA5484060668E9BD02A2840C4149B45DEA5484026FC523F6F2A2840352CA116DEA5484071A4D8767F292840C0EAC891CEA548400A2DEBFEB1282840BCEBC781B2A548400102000000040000006B6A3414D2312A40006A0F20E85448405AFBF14D89322A40263218C8585548407AD10D034C332A40B566D0758655484044AC43C5F4342A40D9CA9DE3575548400102000000CE0000000A2DEBFEB1282840BCEBC781B2A5484067E77E98CE2828402497FF907EA54840D026874F3A292840823D810B0DA548408ED7721D99292840688297CFA8A4484084DCA051152A28403430F2B226A44840BFDD488F952A2840FDAEBE709DA348402B4F20EC142B2840CA260A3E17A34840C2590009792B2840E8065449AEA24840FC45BF6CF12B2840A19FA9D72DA24840031203136E2C28408CA03193A8A148402E07D561E02C2840A60EF27A30A14840E801E264D12E28407B88467710A1484060A7FD7B9531284063145F48E2A0484059880E81233528408CE8E802A8A048400475CAA31B392840847F113466A04840B47B4D6AC33C2840A3B1513129A04840683EE76ED73F2840F85BF1C3F79F484047489341A4412840C4E347A1D19F4840468E194DD3442840ECEA9FF18E9F4840C48FD6BDBA4728403E0F49884D9F4840D09D60FF754A2840319CC651149F4840558440D3B74D28400E2840B9129F4840D604ACB074512840F2BEE0890F9F4840BA7C355195542840CF4A5AF10D9F48406ADF3719B0572840EF5B08CD099F4840238216B7765B2840906D7429099F4840B05CCA541C5E28405E448078029F4840EFEC86C844612840F08398F0F09E4840A88A4E3BA164284039C3C36AE29E4840EDF1423A3C682840C49B9031D29E4840329FBD44066B28403CE3569CC59E484089A8D3CB396E2840C7BB2363B59E4840F10D85CFD6712840E1687D80A49E4840A125D9340075284015D4A6A0919E4840C86EB081BE76284032DD90EB4B9E484061F998B44E792840FDEC9117E39D48404F01D5E4CE792840768071BA769D484050768E5C927A28400DD30847DA9C4840E158BCFD5E7B284079D388F4369C4840F1F62004E47B284049BA66F2CD9B4840FADB5493967C284003CC7C073F9B484093F139C1487D284082F3F3F0AF9A4840AB6FAAFFBD7D28401222CFE4519A4840F17F4754A87E284001E77BFC94994840BC410F10277F284058B9612530994840291B7B9BA37F2840A4816962CB984840C5DF9B4B168028403128D36872984840F8F829334A8028406D09545ADA974840943AB7BF698028409C29BEEB7D974840667EDA4D95802840191AF44AFE964840B5F6E39B12812840AD78D965AE9648406242716CE2812840E55828E32996484035AB88E4758228400947DAD7CB95484079A235502A832840BBF1EEC858954840612129D8358428401258EF26AE9448409816F549EE842840E30D7A8038944840B00FFCB9B285284094957032BB93484062597A7E62862840748A9F104B934840EB45A3F1FA862840415365CEE99248406D4ECA49CD872840870B8A308F924840AD9E3825C588284045C9F50027924840E28A30EAFF8928400C923EADA29148406B4EB91D758B2840FD5DE9C6059148402E85515AC98C2840B741EDB7769048406166440EB68D284008AD872F13904840C5F13279B98E284004DD0319A68F48400AF31E679A902840C60B337E2B8F4840EC8E20F01B92284046990D32C98E48402AE9BC21E8932840E72620DC538E48407DEC8909C5952840FB952941DA8D4840A5468DAE7798284021E3F6706E8D4840E7954627A69A284089658E40178D4840A8A55E5C4F9D284066B8A6E5AC8C4840EE26F8A6E99F284078A27FDD448C48406C15B3147FA2284015A930B6108C4840D4884FF003A6284003A4479DCA8B4840361488E821A82840A32F73709F8B4840F743C769E3AB2840A00491A0538B4840EE00F4A045AF2840A5C5747C0F8B4840FFB7EDD68DB22840DE93E23ECD8A48407111291774B428403F092241A78A48402480F67EFEB62840A60A4625758A4840B032BF3F4AB9284052D4997B488A4840F6C2537E08BC28407EC34483148A48403636E0980ABE2840BC067DE9ED894840E785E05DD3C02840C54D57C1B9894840C5DC5ACB09C32840FEB1B5638F89484009A469F57AC42840082F0B372A894840589643E625C62840BB0D6ABFB5884840EA2DD45059C72840BC2EB2536288484005FE4BAD52C928407A05FDE0D78748404584DACAA6CB284032E5435035874840A2A476757DCD284056ECD401B5864840D51CC5DE30CE28408C0EED084C864840DA9486753ECF284099017855B18548404E97C5C4E6CF2840E7E4A0DF52854840D5BF35C181D228407978CF81E584484031653B3A09D428409A5A5B1DA584484031074147ABD6284020A8644A3584484047F9EEFBDCD92840AD0210D2AE8348409E06B1D8CBDB284012B57E445D8348406F5287CBE0DE2840848DA152DB8248405CCCCF0D4DE128407D5D86FF748248401FBDE13E72E3284051B0B5AD1C824840A96E89B729E52840EE485057D28148403242D36DE4E5284071CEE38B51814840F63988E7B6E628409B3347FBC48048404E42E90B21E72840A74709B07E80484012BC218D0AE828407BCCF6D7E17F48407480BB4791E828406056CD188B7F48407E4056A64EEA2840E94DA0E3FE7E484026DEA6E441EB2840932A9B83B17E48401C768478C9EC2840DA38622D3E7E4840116C01463CEE28406ECACB50CB7D4840175F590E99EF2840B24AE9995E7D4840DDCEBEF220F12840484A1F5FE77C48402CA0AB0892F22840F992D794757C48408C7D6E0D11F428408F78680EFF7B48408C88BDAB79F5284087DD770C8F7B484078E62F3E16F8284015B3B9C5577B48404076CD9A0EFB2840DBCD42F1197B484051BF0B5BB3FD284074DB74BAE27A48402F675B7281002940D4DC651AA87A48402DCDAD105603294069DDABFB6C7A4840C5758C2B2E06294058B329B2317A4840DDCAB7E3F2082940F25602CEF7794840FF31BE79BB0B294093A3A597BD79484073CAEDA87B0E294028B85851837948403CB02D4D5B11294083D4377A4679484065FF3C0D18142940FF44C07C0D794840BF72CE99FE1629406B28B517D17848400D0055DCB81929408934E0E297784840D96212899D1C29407E4397265B7848405B1A097E651F29403DD7F7E12078484051943AB7BF21294030C912E7F2774840C63945A22B242940794F2F42C27748406412E456F7262940E895FC998B77484063FDB0EFD4292940830BC3915177484049A2F20A9F2C2940DAF51CA21B774840F0976082642F294002767F06E57648407E384888F2312940C985144DB1764840FFBC5FBB6A342940B8509E1E80764840CC71B8A00837294003E32A604C76484085ABA8667B392940A49AA3D81B764840E443F57B073C2940ACAD3319E975484073F0F1AE1F3F29403D6D437BAB75484049A93A9AD9412940C4094CA7757548401F42A6C695442940B6D210FA3E754840F50AB034954629407728AF3A17754840737A83D49247294012BCC6D397744840F1CD80C4C0482940FB90B75CFD734840967DB2BD714929407D19D69EA37348406ADFDC5F3D4A2940E87CC2233B734840C4BC7D0C0C4B294028CB5A54D5724840E2033BFE0B4C2940337678BE557248406027501FDC4C2940DCA799A4E87148400EEDAD92D94E2940E3E13D07967148404FC9DEF714512940FA0159993A71484017B1F4465253294070445266DE704840102A2790C855294063B323D577704840C1D6B672405829404A2C84301270484061F1E54F655A29403C50A73CBA6F48400245D1A8655C2940FB0B981B676F4840ED24C742195F2940C967C3ABF66E484094BF7B478D6129407937BB5A936E4840ED35F39A0D6429407F29A84D416E4840C2F1214D61662940C3D89D49F66D4840F51E1D0D966829405389FC44AF6D4840823D810B0D6B29405270C2CE5E6D48404F53701D886D2940BDD930540F6D484070F32103D46F2940C4ACBC89C66C4840B1F4465277722940A9C0C936706C484032D6EDA29E74294085AC133C2A6C484052071E842577294044EC0214D96B4840386A85E97B79294005A96FF48C6B4840089E31827C7B2940C7CA79104C6B4840B7B82121257D2940A20337F7FC6A48403B8BDEA9807F2940A708CB338A6A4840C3E4FC039B81294029EACC3D246A48400EA320787C83294058665B17C8694840BB5A931392852940C77A0F3C636948405E6CB5E2768729409D2166400769484042621635F3872940FB35FEE9AB6848402F23AB11B0882940074E6CF420684840FABDA83869892940F9CFE4AC99674840DD32969F0A8A294011F0B5B123674840E1777874C88A29402614C7269E6648408DD5E6FF558B294007FE0120386648402FCAC749BC8B2940EC00E374ED65484076662728EA8D2940126C5CFFAE6548402CEADD697C9029406C996780666548408901B7932D932940F8CC48731A654840197DBBDBAB95294058CBF852D3644840C2572A5E1B9829408ECEF9298E6448406241ABDDC09A29406EBEB62341644840D988168F419D2940EB1791CDFA634840D8ED5811DA9F29407C5E961BB16348400BF7802F3BA22940154FE2186E634840429A0C22ADA42940EA1560692A6348408C45782057A7294030A3B327DC6248400FB16609D7A82940B18BFDC0B062484025523F1471AB2940A8DF2AF466624840B00A2F1C63AE294037177FDB136248405E471CB281B02940C72C7B12D8614840309DD66D50B3294082D94EA5B0614840E1F4899702B52940FA1DD48F97614840', + 90.5604456325126, + 314.15 * 0.0008 * 90.5604456325126, + 1790, + 3, + 50), + + (nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 380 AND geom = '0101000020E6100000E1F4899702B52940FA1DD48F97614840'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND geom = '0101000020E6100000C000DCEF17B429409E0779BEB3614840'), + '0102000020E610000002000000E1F4899702B52940FA1DD48F97614840C000DCEF17B429409E0779BEB3614840', + '0105000020E610000001000000010200000002000000E1F4899702B52940FA1DD48F97614840C000DCEF17B429409E0779BEB3614840' + 0.162698660268822, + 314.15 * 0.0008 * 0.162698660268822, + 1790, + 3, + 50); + +DELETE FROM model_draft.ego_grid_pf_hv_line WHERE bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND osm_name = 'Umspannwerk Pleinting') AND bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND osm_name = 'Schwandorf'); + +DELETE FROM model_draft.ego_grid_pf_hv_transformer WHERE bus1 = (SELECT DISTINCT ON (bus_i) bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380AND geom = '0101000020E61000002F70D819E6B4294094DDFA53EE614840'); + +DELETE FROM model_draft.ego_grid_pf_hv_bus WHERE geom = '0101000020E61000002F70D819E6B4294094DDFA53EE614840' AND v_nom = 380; + +---- 380kV Weisweiler +--- missing connection from powerstation to 380kV line +-- add 380kV line +INSERT INTO model_draft.ego_grid_pf_hv_line (line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency) +SELECT nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND geom = '0101000020E610000050D9BE3268491940C27D4210236B4940'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND geom = '0101000020E6100000FE4C1828844919408E469968EB6A4940'), + '0102000020E61000000200000050D9BE3268491940C27D4210236B4940FE4C1828844919408E469968EB6A4940', + '0105000020E61000000100000001020000000200000050D9BE3268491940C27D4210236B4940FE4C1828844919408E469968EB6A4940', + 0.189094013858938 * 1.15, + 314.15 * 0.0008 /2 *0.189094013858938 * 1.15, + 3580, + 6, + 50; + + +---- Umspannwerk Marke +--- lines are not connected to the station in Marke +-- connect lines to the station + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 110 AND geom = '0101000020E6100000E68C989C3B86284098C783C0D9DE4940') +WHERE geom = '0105000020E610000002000000010200000003000000BC8CAC46C0862840B5D084DCFBDE494027214729D786284060BD40FFF3DE494069FE3D1D34882840A6CEED6F1ADF494001020000002E000000165685611B64284006E9184630E84940B225F5AFF6652840770E0AEF17E84940377F02DEB86728400CC2267C00E84940E39EF87B73692840547CD7FBE8E749406B4AB20E476B28406C9E7EABD0E74940A74AEF76186E2840490158D3ABE74940A83D80A037702840995CD60E90E74940344A97FE2571284098CC672F91E74940EED9CE520D7228406198028871E7494052031775F7722840D7DB0B7151E74940B11D8CD827742840D2F93ABA5BE74940EEA1D8655375284067AE1DD665E74940000CBA731777284096A1855F45E74940F6211400887828409A756B3E53E749404776A565A47A2840D3F0773936E74940209E25C8087C28401F5CF05822E74940BA539511727D28408EE5023C0EE74940DB1CE736E17E2840BE06335CD3E649403AAEEBBC328028407A2CC7759DE6494078C6AD388B8128402016C50666E64940D2D73DC3E5822840D73CA29D2EE649404F9FD3E24284284088026CF6F6E5494059A42EBE0D862840073AA462ADE5494096287B4B39872840C60490357EE5494013807F4A958828408A1B5CDF2CE5494015D67C4BEF8928402A6A7A9ADDE44940AFA4CB51368B2840397C77D091E44940927C2590128B2840CE5FD7E54AE44940CDC75AE8EF8A28401CC5837703E44940D83DC3E5C28A2840AE084845ADE3494053B648DA8D8A2840F6CCDC8D4FE34940824A4B9B608A2840FA0B3D62F4E24940E1DEEB5A318A28402DEBA3F89DE24940DED506825B8A28402509C21550E249406E2A9CEE868A284012DB824A01E24940615793A7AC8A28403F20D099B4E149403E5DDDB1D88A28400AE69E6461E14940642FCA22038B2840425DA45016E14940C753EAED2A8B2840F009C84DC3E04940CD5CE0F2588B2840E6E4EA6C6DE04940DE4FD724898B284031DE454E15E0494074A95B87B48B2840452E3883BFDF494031197DBBDB8B2840E86F9DDA74DF494098530262128A2840922749D74CDF4940C42F50AD19882840021B6BDA20DF4940BC8CAC46C0862840B5D084DCFBDE4940' AND s_nom = 520; + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 110 AND geom = '0101000020E6100000E68C989C3B86284098C783C0D9DE4940') +WHERE s_nom = 1040 AND geom = '0105000020E61000000100000001020000003400000069FE3D1D34882840A6CEED6F1ADF494069FE3D1D34882840A6CEED6F1ADF4940D034BCB43C8A28407668FDD247DF494054104DEA158C28409D88D92670DF4940F3C3526EEC8B28404D73E1F6BADF494081608E1EBF8B284089EFC4AC17E049404B2F206A918B2840B646A9296EE04940F1976082648B2840F522241CC4E0494058B66A323E8B2840F4401A040CE14940FC6E5FAC148B284074733B4558E14940C565CBA8E88A28407FA4880CABE14940A3E8818FC18A2840A96A82A8FBE14940C8DA3A93918A2840496F13494FE24940FFD0CC936B8A28405E3931DA99E24940FB7F304B968A28405CF80B87EFE24940AAE27CA0CB8A2840B4C3A92050E34940E540B4FBFA8A284072EA5E82AEE34940FD5877E2288B2840945742D202E4494098BFE72C588B2840B8BF69B05FE449403B6178DB3B8D2840EF3614E3A1E44940281A5A530F8F28406889DF5EE3E449407F2CE9CD4D902840FCBF8F0F1FE549404504D2B47A9128408CB5094158E549400F7D1C72D8922840C9E9EBF99AE54940097481261D9428406E293119D8E5494095DB51F75C9528403D30DBA914E64940CCCE47BEB7962840CF9662FD55E64940A5F6C7201C9828407D6C81F398E6494022B3695B839928401F66D421DCE64940F66F4D70A09A2840974DCAEE13E749409004D0DECF9B2840E6E324DE4BE7494007C36FF9FE9C2840C8478B3386E7494033A083D3279E28409C95A3B6C3E749400BDDDBE33B9F28409030B19EFFE74940BD2B71D355A02840F49A0DE83BE84940BF805EB873A12840C2E3367579E849401784F23E8EA2284033A0281AB5E849405876C1E09AA328401BAD591DEFE849401106F93482A4284066225B4C22E949406F5633219CA52840FE7F9C3061E949407F0FA848CFA628404CD18030A6E949409AEBD918E0A7284027101BD1E2E949406ECCA1FB28A92840BF8A42812DEA4940B782A62556AA284055EA48E471EA4940CA9BB28982AB284093F650ECB2EA4940F8C77BD5CAAC2840B52CA924FCEA4940C24AAA5BE2AD284095AC79443BEB49408F0BBDB497AF28403B3F202B53EB49408D92A17433B12840A14495AB69EB49403CE75DABF3B22840ED8B3A2982EB49402CC313D5B6B428404C3ED1D09AEB49402CC313D5B6B428404C3ED1D09AEB4940'; + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 110 AND geom = '0101000020E6100000E68C989C3B86284098C783C0D9DE4940') +WHERE s_nom = 520 AND geom = '0105000020E61000000100000001020000001F0000003FBF396DD7C5284066DAA3DC22DC49403FBF396DD7C5284066DAA3DC22DC494034EDAC2704C428402B5E1BE038DC494042F806150BC2284018B1F44652DC4940C2413168D7BF284082AFE8D66BDC49402E1801BAD4BD2840B68075C185DC49406AFD2D01F8BB2840510F762F9CDC494075E789E76CB9284087D2CDB4B3DC4940CBC16C020CB728407C50AB43C9DC4940CF3A3EB555B428400A6D3997E2DC4940D4B430B033B228404E94CED1F4DC49405BE55311B8AF2840EE974F560CDD4940B7627FD93DAD2840427A8A1C22DD4940EA944737C2AA284037F867AB37DD49401351A79773A82840209A79724DDD49404EA14ED42DA628404BBB873A62DD4940F22BD67091A32840CED36F157ADD494001F676F0B8A12840CDF6D7E19EDD4940026A6AD95A9F2840204F26C9CEDD4940FD07477F1E9D2840DFD9684AFCDD494025C4A6DFCF9A28405B3B9B9F2CDE49402918DF6124992840672C9ACE4EDE4940D525E318C996284042F2295B7FDE494001B562C966942840723216F2ADDE494029DD4C3BEB91284016359886E1DE49400405DEC9A78F2840B892C2610EDF49404525BF8FB48D2840FCAD9D2809DF49405D959FAFB48B28404CA544B703DF4940B87E55890D8928405566EF31FDDE494094E7B0B10187284073874D64E6DE494094E7B0B10187284073874D64E6DE4940'; + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 110 AND geom = '0101000020E6100000E68C989C3B86284098C783C0D9DE4940') +WHERE s_nom = 520 AND geom = '0105000020E61000000100000001020000002A0000003308628F3F872840068B1E53D2DE49400E901E752A872840C1971D3DD9DE494037525B8F67882840E2DC15B0D3DE4940E55E059DB5882840298705AD76DE494073CA92EF0889284060764F1E16DE49400E18247D5A89284044A9BD88B6DD49401FD55526A18928402961A6ED5FDD49405BC6979A4E882840EF05668522DD4940BFFB3E77DD8628404D0C1357DFDC4940BD7A70D28F852840E3E47E87A2DC494020B017AF1E842840E8B9CF3B5FDC4940F416B435C7822840C6D4A76620DC49407E2C335B6881284058B49487E0DB49405463F83E0B80284008DB3E9AA0DB4940E3B32BE3957E2840E97D88B25CDB4940A6619DCF257D2840BE2A61B719DB49406339F878D77B2840B3AFE18EDCDA494054D625998B7A28408BD3FF28A0DA4940A553B2F73D7928406944C42863DA4940BE384C8F01782840984B4FFD28DA4940033972EEC0762840154C46DFEED94940DA733EE19175284020717E79B7D949401AA54BFF927428407970C16389D9494013FEFB427E742840E1078C9A54D9494049275CD94F742840FE3DC27AEDD84940A79B1FDA22742840C6C551B989D849409C1DA9BEF3732840678AEF7A1FD849409B19A2AFC57328403166A60FB8D7494066EC3A0AC6732840589A4AF553D74940FA916CBFC673284006BD378600D74940B0027CB77973284023F6AEE6A5D64940789F3E5D3873284037FBA82B44D64940428EF7F422742840E94427F0F3D54940CE870C50BF742840D36C1E87C1D549405B417859B875284052C9EF236DD549401D6217A0C87628407407567A12D54940F9A067B3EA772840FEDA55A3B2D449409008D7EDFD772840A70705A568D449408E4AA07719782840019C285316D449402A9721E92E78284071276C9AD2D34940B4E6C75F5A782840D8344AF2B7D34940B4E6C75F5A782840D8344AF2B7D34940'; + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 110 AND geom = '0101000020E6100000E68C989C3B86284098C783C0D9DE4940') +WHERE s_nom = 520 AND geom = '0105000020E6100000010000000102000000410000003308628F3F872840068B1E53D2DE49403308628F3F872840068B1E53D2DE494021C610A5628828402544543C89DE4940A7875748AF882840EFF4392D2EDE494016BA5C0E05892840EC055559CADD4940BAB42B3E4F89284037A38BF271DD4940EF5FB422C5872840704EDB7525DD49402DB87AA9338628409980046AD6DC49408D16FB26A8842840C07EE3C688DC494035C69805248328408C8FAA8141DC4940D4635B069C812840E027582DFADB49401E3691990B802840F37A8BE2B0DB4940B4C46FAF717E28407975334866DB4940C4A92050477D284005CF73FA30DB49407C9C69C2F67B284007EE409DF2DA4940DD66857D967A2840A54DD53DB2DA49407561FFD027792840DF910C946FDA494080619E3AFB772840A24CFE8238DA4940F3E7DB82A5762840D41D7A41FAD949404BA82A7E9D752840F2800DE3C9D9494021DFEF6140742840C01C870B8AD94940FF4A427D2672284026E2ADF36FD9494009D51753FA6F28401649601855D949400577FB07EC6D2840653C4A253CD949402C387293076C2840003153A40CD94940645694B7C86A2840974E35C4C2D84940B4D0292389692840C3E96EE877D84940B9910DFF44682840E4665D482CD8494049EA4EC12B67284080E89326EFD749405D01E0336D66284001608610A1D749402F0906C6B0652840AC22DC6454D749408FDC3FBBE8642840E20E2FE301D74940C0C1CD98386428405AF9C0E9B8D64940D363A593B6622840833BAB60AFD649405B046B419460284054162AA4A1D649403181B630665E2840C7BA5DD493D649408514F2F7415C2840C2429C3D86D6494070F2B62D255A2840A52CE86278D649405BDF76572C58284040EE6CD96BD6494045C82F720556284083B2DFC95DD64940C88ED7CDD6532840F52801D64FD64940B4DF2417AD512840D3DF4BE141D649404692C5A28E4F2840397AA12534D64940A6E727E66A4D28403A07CF8426D649406EC72F174C4B2840A0A124C918D64940E3A8DC442D492840727CA30C0BD649400A01AF850F4728402610655EFDD549409E1BE43FEE442840F7EAE3A1EFD5494076487BCDBC42284087A8C29FE1D5494084A279008B402840D6480158D3D54940AC62E06F6A3E2840A723809BC5D549400951BEA0853C28406077BAF3C4D5494021C19EC0853A2840AE8ACB4CC4D549405B3A30CA7D382840499748B3C3D549402BC0779B3736284002EB820BC3D54940A2A41BBC0A342840BB3EBD63C2D549400735327ED03128402C28B110C2D549408BFED0CC932F2840F157B730C1D54940E8F9D346752E2840E57BEB68C1D549404F07B29E5A2D28406DDCAC0B89D54940F55CF0B3DB2C28407ADC01E841D54940BFBED6A5462C28406F974748EED44940D9182AB5CD2B2840CD13BEADAAD449406AE21DE0492B284047C2082B5FD449406AE21DE0492B284047C2082B5FD44940'; + +DELETE FROM model_draft.ego_grid_pf_hv_line WHERE s_nom = 260 AND geom = '0105000020E6100000010000000102000000040000003308628F3F872840068B1E53D2DE49400E901E752A872840C1971D3DD9DE49405E72929C02872840A308A9DBD9DE494094E7B0B10187284073874D64E6DE4940'; + +---- Umspannwerk Jessen Nord +--- missing 110kV lines +-- add lines manually, THIS MIGHT BE FIXED WHEN UPDATING OSM-DATA! + +INSERT INTO model_draft.ego_grid_pf_hv_bus (scn_name, bus_id, v_nom, geom) +VALUES ('Status Quo', nextval('model_draft.ego_grid_hv_fix_errors_bus_id'), 110, ST_SetSRID(ST_Point(13.0317764, 51.7792147), 4326)), + ('Status Quo', nextval('model_draft.ego_grid_hv_fix_errors_bus_id'), 110, ST_SetSRID(ST_Point(13.0289850, 51.7797518), 4326)); + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name,line_id, bus0, bus1, x, r, g, b, s_nom, length, cables, frequency, geom, topo ) +VALUES + ('Status Quo', + nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'UW Jessen Nord' AND base_kv = 110), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0317764, 51.7792147), 4326) AND v_nom = 110), + 0.6138, + 0.17754, + 0, + 0.000019455, + 520, + 3.3, + 6, + 50, + '0105000020E610000001000000010200000002000000B9910DFF44102A40FE87AA4EBDE34940204C62AEFA1D2A402EA5F4F75DE64940', + '0102000020E610000002000000B9910DFF44102A40FE87AA4EBDE34940204C62AEFA1D2A402EA5F4F75DE64940' + ), + + ('Status Quo', + nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'UW Jessen Nord' AND base_kv = 110), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0289850, 51.7797518), 4326) AND v_nom = 110), + 0.6138, + 0.17754, + 0, + 0.000019455, + 520, + 3.3, + 6, + 50, + '0105000020E6100000010000000102000000020000002D26361FD70E2A40A2FF2FE8CEE34940204C62AEFA1D2A402EA5F4F75DE64940', + '0102000020E6100000020000002D26361FD70E2A40A2FF2FE8CEE34940204C62AEFA1D2A402EA5F4F75DE64940'); + +UPDATE model_draft.ego_grid_pf_hv_line + SET + bus1 = (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0317764, 51.7792147), 4326) AND v_nom = 110), + length = 15.9, + x = 6, + r = 1.735, + b = 0.0000475, + geom ='0105000020E610000001000000010200000002000000B9910DFF44102A40FE87AA4EBDE349406D49FDAB7D682A40EC2411D033DA4940', + topo = '0102000020E610000002000000B9910DFF44102A40FE87AA4EBDE349406D49FDAB7D682A40EC2411D033DA4940' + WHERE topo = '0102000020E6100000020000006D49FDAB7D682A40EC2411D033DA49406AB8C23255F22940ED1AB07B44E54940' AND s_nom = 260 +; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name,line_id, bus0, bus1, x, r, g, b, s_nom, length, cables, frequency, geom, topo ) +VALUES ('Status Quo', + nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0317764, 51.7792147), 4326) AND v_nom = 110), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0289850, 51.7797518), 4326) AND v_nom = 110), + 0.0755, 0.0218, 0, 0.000000597, 260, 0.2, 3, 50, + '0105000020E610000001000000010200000002000000B9910DFF44102A40FE87AA4EBDE349402D26361FD70E2A40A2FF2FE8CEE34940', + '0102000020E610000002000000B9910DFF44102A40FE87AA4EBDE349402D26361FD70E2A40A2FF2FE8CEE34940' + ), + + ('Status Quo', + nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0289850, 51.7797518), 4326) AND v_nom = 110), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E61000006AB8C23255F22940ED1AB07B44E54940' AND base_kv = 110), + 1.547, 0.447, 0, 0.000012249, 260, 4.1, 3, 50, + '0105000020E6100000010000000102000000020000006AB8C23255F22940ED1AB07B44E549402D26361FD70E2A40A2FF2FE8CEE34940', + '0102000020E6100000020000006AB8C23255F22940ED1AB07B44E549402D26361FD70E2A40A2FF2FE8CEE34940'); + + +DELETE FROM model_draft.ego_grid_pf_hv_transformer WHERE bus1 NOT IN (SELECT bus_id FROM model_draft.ego_grid_pf_hv_bus) OR bus0 NOT IN (SELECT bus_id FROM model_draft.ego_grid_pf_hv_bus); diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_grid_future_scenarios.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_grid_future_scenarios.sql index 4f3ffbaa..7022a399 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_grid_future_scenarios.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_grid_future_scenarios.sql @@ -1,5 +1,8 @@ /* -Copy SQ grid to 'NEP 2035' and 'eGo 100' scenario +The grid model which is used as an input for powerflow calculations and optimization in open_eGo is the same in all +three scenarios 'SQ', 'NEP 2035' and 'eGo100'. +In the following script the grid model created for the 'SQ' scenario in the previous scripts is duplicated for the remaining +two future scenarios __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_hv_setup.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_hv_setup.sql index 64269895..59d444f9 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_hv_setup.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_hv_setup.sql @@ -1,20 +1,22 @@ -/* -setup for hv powerflow - -PF HV scenario settings -PF HV source -PF HV bus -PF HV busmap -PF HV generator -PF HV line -PF HV load -PF HV storage -PF HV temp resolution -PF HV transformer -PF HV mag set -PF HV generator PQ set -PF HV load PQ set -PF HV storage PQ set +/* +This script creates all tables which are needed for hv-powerflow calculations. The characteristics of those tables +follow the structure of PyPSA's input data. + +The following tables are created: +`model_draft.ego_grid_pf_hv_scenario_settings `_ +`model_draft.ego_grid_pf_hv_source `_ +`model_draft.ego_grid_pf_hv_bus `_ +`model_draft.ego_grid_pf_hv_busmap `_ +`model_draft.ego_grid_pf_hv_generator `_ +`model_draft.ego_grid_pf_hv_line `_ +`model_draft.ego_grid_pf_hv_load `_ +`model_draft.ego_grid_pf_hv_storage `_ +`model_draft.ego_grid_pf_hv_temp_resolution `_ +`model_draft.ego_grid_pf_hv_transformer `_ +`model_draft.ego_grid_pf_hv_bus_v_mag_set `_ +`model_draft.ego_grid_pf_hv_generator_pq_set `_ +`model_draft.ego_grid_pf_hv_load_pq_set `_ +`model_draft.ego_grid_pf_hv_storage_pq_set `_ __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_lopf_data.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_lopf_data.sql index 2e384b30..b274abc3 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_lopf_data.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_lopf_data.sql @@ -1,8 +1,13 @@ /* -LOPF data - -Setting marginal_cost ( operating cost + fuel cost + CO2 crt cost ) -in model_draft.ego_grid_pf_hv_generator according to renpass_gis, NEP 2014 scenario. -In addition p_max_pu is set for all generators with variable dispatch based on p_max_pu = p_set / p_nom . +Missing parameters necessary for calculating a linear optimal power flow (LOPF) are added to the existing data. This +includes marginal costs per technology, which is composed of specific operating cost, fuel costs and CO2 costs +according to renpass_gis, NEP 2014 scenario. +In addition p_max_pu is set for all generators with variable dispatch based on p_max_pu = p_set / p_nom. + +A further section of the script is used to insert extendable battery and hydrogen storages to all substations in the +grid model. These have a initial installed capacity p_nom=0, which can be extended when executing an optimization +(by calculating a LOPF). + __copyright__ = "Europa-Universität Flensburg, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" __url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_osmtgmod_to_pypsa.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_osmtgmod_to_pypsa.sql index 52691129..f121596d 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_osmtgmod_to_pypsa.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_osmtgmod_to_pypsa.sql @@ -1,5 +1,8 @@ /* -osmTGmod2pyPSA +`osmTGmod `_ provides a model of the German EHV and HV grid based on OpenStreetMap. +This script extracts `bus `_ and `branch data `_ provided by osmTGmod +and inserts the grid model into the corresponding powerflow tables. +Additionally some (electrical) properties for transformers are adjusted or added. __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_timeseries_demand.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_timeseries_demand.sql index 31707342..ffd9daa8 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_timeseries_demand.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_timeseries_demand.sql @@ -1,5 +1,7 @@ -/* -Insert demand series into pf-schema +/* +Aggregated load time series for neighbouring countries are based on rennpassG!S results and are added to the corresponding +`powerflow table `_. The load is equivalent +in all three scenarios. __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/dataprocessing/sql_snippets/ego_dp_powerflow_timeseries_generator.sql b/dataprocessing/sql_snippets/ego_dp_powerflow_timeseries_generator.sql index d204e5a2..1baaa46f 100644 --- a/dataprocessing/sql_snippets/ego_dp_powerflow_timeseries_generator.sql +++ b/dataprocessing/sql_snippets/ego_dp_powerflow_timeseries_generator.sql @@ -1,5 +1,7 @@ -/* -Quick workaround to transfer renpassG!S results into the corresponding powerflow table. +/* +This is a quick workaround to transfer `renpassG!S results `_ on generator time series +into the corresponding powerflow table. It adds time series (p_set) for generators in Germany and the neighbouring countries to the +`respective table `_ __copyright__ = "Europa Universitaet Flensburg, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/dataprocessing/sql_snippets/ego_dp_structure_input_verification.sql b/dataprocessing/sql_snippets/ego_dp_structure_input_verification.sql index b7f90c68..724f89f8 100644 --- a/dataprocessing/sql_snippets/ego_dp_structure_input_verification.sql +++ b/dataprocessing/sql_snippets/ego_dp_structure_input_verification.sql @@ -1,5 +1,6 @@ /* -Check the necessary input tables. +Input verification (eGoPP) +Check the necessary input tables from eGo PreProcessing. Return version of input tables. __copyright__ = "Reiner Lemoine Institut" @@ -8,6 +9,7 @@ __url__ = "https://github.com/openego/data_processing/blob/master/LICENS __author__ = "Ludee" */ + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','check','boundaries','bkg_vg250_1_sta','ego_dp_structure_input_verification.sql','preprocessing verification'); SELECT ego_scenario_log('v0.3.0','check','boundaries','bkg_vg250_2_lan','ego_dp_structure_input_verification.sql','preprocessing verification'); @@ -17,6 +19,8 @@ SELECT ego_scenario_log('v0.3.0','check','openstreetmap','osm_deu_polygon','ego_ SELECT ego_scenario_log('v0.3.0','check','openstreetmap','osm_deu_ways','ego_dp_structure_input_verification.sql','preprocessing verification'); SELECT ego_scenario_log('v0.3.0','check','openstreetmap','osm_deu_nodes','ego_dp_structure_input_verification.sql','preprocessing verification'); SELECT ego_scenario_log('v0.3.0','check','openstreetmap','osm_deu_line','ego_dp_structure_input_verification.sql','preprocessing verification'); +SELECT ego_scenario_log('v0.3.0','check','scenario','ego_slp_parameters','ego_dp_structure_input_verification.sql','preprocessing verification'); +SELECT ego_scenario_log('v0.3.0','check','grid','otg_ehvhv_bus_data','ego_dp_structure_input_verification.sql','preprocessing verification'); SELECT ego_scenario_log('v0.3.0','check','society','destatis_zensus_population_per_ha','ego_dp_structure_input_verification.sql','preprocessing verification'); SELECT ego_scenario_log('v0.3.0','check','economy','destatis_gva_per_district','ego_dp_structure_input_verification.sql','preprocessing verification'); SELECT ego_scenario_log('v0.3.0','check','demand','ego_demand_federalstate','ego_dp_structure_input_verification.sql','preprocessing verification'); @@ -28,13 +32,13 @@ SELECT ego_scenario_log('v0.3.0','check','model_draft','ego_supply_conv_powerpla -- input tables DROP TABLE IF EXISTS model_draft.ego_scenario_input CASCADE; CREATE TABLE model_draft.ego_scenario_input ( - id serial, - version text, - oid oid, - database varchar, - table_schema varchar, - table_name varchar, - path text, + id serial, + version text, + oid oid, + database varchar, + table_schema varchar, + table_name varchar, + path text, metadata_title text, metadata_reference_date text, meta_data text, @@ -46,7 +50,7 @@ ALTER TABLE model_draft.ego_scenario_input OWNER TO oeuser; -- metadata template COMMENT ON TABLE model_draft.ego_scenario_input IS '{ "title": "eGoDP input data verification", - "description": "Checks input tables and gathers meta infos", + "description": "Check input tables and gathers meta infos", "language": [ "eng" ], "spatial": {"location": "none", @@ -58,8 +62,7 @@ COMMENT ON TABLE model_draft.ego_scenario_input IS '{ "end": "none", "resolution": "none"}, "sources": [ - {"name": "eGo dataprocessing", "description": "", "url": "https://github.com/openego/data_processing", "license": "GNU Affero General Public License Version 3 (AGPL-3.0)", "copyright": "© Reiner Lemoine Institut"}, - {"name": "", "description": "", "url": "", "license": "", "copyright": ""} ], + {"name": "none", "description": "", "url": "", "license": "", "copyright": ""} ], "license": {"id": "ODbL-1.0", "name": "Open Data Commons Open Database License 1.0", @@ -122,6 +125,8 @@ INSERT INTO model_draft.ego_scenario_input(version,oid,database,table_schema (table_schema='openstreetmap' AND table_name='osm_deu_ways') OR (table_schema='openstreetmap' AND table_name='osm_deu_nodes') OR (table_schema='openstreetmap' AND table_name='osm_deu_line') OR + (table_schema='scenario' AND table_name='ego_slp_parameters') OR + (table_schema='grid' AND table_name='otg_ehvhv_bus_data') OR (table_schema='society' AND table_name='destatis_zensus_population_per_ha') OR (table_schema='economy' AND table_name='destatis_gva_per_district') OR (table_schema='demand' AND table_name='ego_demand_federalstate') OR diff --git a/dataprocessing/sql_snippets/ego_dp_substation_ehv.sql b/dataprocessing/sql_snippets/ego_dp_substation_ehv.sql index ee7be4d0..91634516 100644 --- a/dataprocessing/sql_snippets/ego_dp_substation_ehv.sql +++ b/dataprocessing/sql_snippets/ego_dp_substation_ehv.sql @@ -1,10 +1,12 @@ /* +EHV Substation +Abstract EHV Substations of the extra high voltage level from OSM. This script abstracts substations of the extra high voltage level from openstreetmap data. -__copyright__ = "DLR Institute for Networked Energy Systems" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "lukasol, C. Matke, Ludee" +__copyright__ = "DLR Institute for Networked Energy Systems" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "lukasol, C. Matke, Ludee" */ diff --git a/dataprocessing/sql_snippets/ego_dp_substation_ehv_voronoi.sql b/dataprocessing/sql_snippets/ego_dp_substation_ehv_voronoi.sql index c7c45f30..5824765d 100644 --- a/dataprocessing/sql_snippets/ego_dp_substation_ehv_voronoi.sql +++ b/dataprocessing/sql_snippets/ego_dp_substation_ehv_voronoi.sql @@ -1,12 +1,15 @@ /* -Executes a voronoi algorithmn based on EHV substations. - -__copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "IlkaCu, Ludee" +EHV Substation Voronoi +Voronoi polygons with eucldean distance on EHV Substation. +Manhattan distance would be better but not available in sql. + +__copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "IlkaCu, Ludee" */ + ---------------------------------------------------------- -- VORONOI with 220 and 380 kV substations ---------------------------------------------------------- diff --git a/dataprocessing/sql_snippets/ego_dp_substation_hvmv.sql b/dataprocessing/sql_snippets/ego_dp_substation_hvmv.sql index f16202f8..111d7c49 100644 --- a/dataprocessing/sql_snippets/ego_dp_substation_hvmv.sql +++ b/dataprocessing/sql_snippets/ego_dp_substation_hvmv.sql @@ -1,13 +1,16 @@ /* +HVMV Substation +Abstract HVMV Substations of the high voltage level from OSM. This script abstracts substations of the high voltage level from openstreetmap data. All substations that are relevant transition points between the transmission and distribution grid are identified, irrelevant ones are disregarded. -__copyright__ = "DLR Institute for Networked Energy Systems" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "lukasol, C. Matke, Ludee" +__copyright__ = "DLR Institute for Networked Energy Systems" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "lukasol, C. Matke, Ludee" */ + -- hvmv substations DROP TABLE IF EXISTS model_draft.ego_grid_hvmv_substation CASCADE; CREATE TABLE model_draft.ego_grid_hvmv_substation ( diff --git a/dataprocessing/sql_snippets/ego_dp_substation_hvmv_voronoi.sql b/dataprocessing/sql_snippets/ego_dp_substation_hvmv_voronoi.sql index 93e1c02c..92455482 100644 --- a/dataprocessing/sql_snippets/ego_dp_substation_hvmv_voronoi.sql +++ b/dataprocessing/sql_snippets/ego_dp_substation_hvmv_voronoi.sql @@ -1,11 +1,12 @@ /* -hvmv substation voronoi -voronoi polygons with eucldean distance / manhattan distance would be better but not available in sql - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +HVMV Substation Voronoi +Voronoi polygons with eucldean distance on HVMV Substation. +Manhattan distance would be better but not available in sql. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -- ego scenario log (version,io,schema_name,table_name,script_name,comment) diff --git a/dataprocessing/sql_snippets/ego_dp_substation_id_to_generator.sql b/dataprocessing/sql_snippets/ego_dp_substation_id_to_generator.sql index 79c013c2..25623aa1 100644 --- a/dataprocessing/sql_snippets/ego_dp_substation_id_to_generator.sql +++ b/dataprocessing/sql_snippets/ego_dp_substation_id_to_generator.sql @@ -1,74 +1,85 @@ - /* +Substation ID to Generator +All powerplants (Conventional and Renewable) receive the corresponding Substation ID. +Either the HVMV Substation ID (= MV Griddistrict ID) or the EHV Substaion ID. Identify corresponding subst_id for all power plants according to their voltage_level and geometry. -__copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "IlkaCu" + +__copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "IlkaCu" */ + ------------------ -- Conventional power plants ------------------ - -- Identify corresponding bus with the help of grid districts UPDATE model_draft.ego_dp_supply_conv_powerplant a - SET subst_id = b.subst_id - FROM model_draft.ego_grid_mv_griddistrict b - WHERE a.geom && ST_TRANSFORM(b.geom,4326) - AND ST_Intersects(a.geom, ST_TRANSFORM(b.geom,4326)) - AND voltage_level >= 3; + SET subst_id = b.subst_id + FROM model_draft.ego_grid_mv_griddistrict b + WHERE a.geom && ST_TRANSFORM(b.geom,4326) + AND ST_Intersects(a.geom, ST_TRANSFORM(b.geom,4326)) + AND voltage_level >= 3; -- Identify corresponding bus with the help of ehv-Voronoi UPDATE model_draft.ego_dp_supply_conv_powerplant a - SET subst_id = b.subst_id - FROM model_draft.ego_grid_ehv_substation_voronoi b - WHERE a.geom && b.geom - AND ST_Intersects(a.geom, b.geom) - AND voltage_level <= 2; + SET subst_id = b.subst_id + FROM model_draft.ego_grid_ehv_substation_voronoi b + WHERE a.geom && b.geom + AND ST_Intersects(a.geom, b.geom) + AND voltage_level <= 2; --- Assign conventional pp with voltage_level >2 located outside of Germany to their closest 110 kV substation +-- Assign conventional pp with voltage_level >=2 located outside of Germany to their closest 110 kV substation ALTER TABLE model_draft.ego_dp_supply_conv_powerplant - ADD COLUMN subst_id_NN int; + ADD COLUMN subst_id_NN int; UPDATE model_draft.ego_dp_supply_conv_powerplant a - SET subst_id_NN = result.subst_id - FROM - (SELECT DISTINCT ON (pp.id) pp.id, subst.subst_id, ST_Distance(ST_Transform(subst.geom, 4326), pp.geom) as dist - FROM model_draft.ego_dp_supply_conv_powerplant As pp, model_draft.ego_grid_hvmv_substation As subst - ORDER BY pp.id, ST_Distance(ST_Transform(subst.geom, 4326), pp.geom), subst.subst_id) as result - WHERE a.id=result.id; + SET subst_id_NN = result.subst_id + FROM + (SELECT DISTINCT ON (pp.id) + pp.id, + subst.subst_id, + ST_Distance(ST_Transform(subst.geom, 4326), pp.geom) as dist + FROM model_draft.ego_dp_supply_conv_powerplant As pp, + model_draft.ego_grid_hvmv_substation As subst + ORDER BY pp.id, + ST_Distance(ST_Transform(subst.geom, 4326), pp.geom), + subst.subst_id + ) as result + WHERE a.id=result.id; UPDATE model_draft.ego_dp_supply_conv_powerplant a - SET subst_id=subst_id_NN - WHERE subst_id IS NULL and voltage_level > 2; + SET subst_id=subst_id_NN + WHERE subst_id IS NULL and voltage_level > 2; ALTER TABLE model_draft.ego_dp_supply_conv_powerplant - DROP COLUMN subst_id_NN; + DROP COLUMN subst_id_NN; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_conv_powerplant','ego_dp_substation_id_to_generator.sql',' '); + ------------------ -- Renewable power plants ------------------ -- Identify corresponding bus with the help of grid districts UPDATE model_draft.ego_dp_supply_res_powerplant a - SET subst_id = b.subst_id - FROM model_draft.ego_grid_mv_griddistrict b - WHERE a.geom && ST_TRANSFORM(b.geom,4326) - AND ST_Intersects(a.geom, ST_TRANSFORM(b.geom,4326)) - AND voltage_level >= 3; + SET subst_id = b.subst_id + FROM model_draft.ego_grid_mv_griddistrict b + WHERE a.geom && ST_TRANSFORM(b.geom,4326) + AND ST_Intersects(a.geom, ST_TRANSFORM(b.geom,4326)) + AND voltage_level >= 3; -- Identify corresponding bus with the help of ehv-Voronoi UPDATE model_draft.ego_dp_supply_res_powerplant a - SET subst_id = b.subst_id - FROM model_draft.ego_grid_ehv_substation_voronoi b - WHERE a.geom && b.geom - AND ST_Intersects(a.geom, b.geom) + SET subst_id = b.subst_id + FROM model_draft.ego_grid_ehv_substation_voronoi b + WHERE a.geom && b.geom + AND ST_Intersects(a.geom, b.geom) AND voltage_level <= 2; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) diff --git a/dataprocessing/sql_snippets/ego_dp_substation_otg.sql b/dataprocessing/sql_snippets/ego_dp_substation_otg.sql index fb9d7c73..d2d789f3 100644 --- a/dataprocessing/sql_snippets/ego_dp_substation_otg.sql +++ b/dataprocessing/sql_snippets/ego_dp_substation_otg.sql @@ -1,12 +1,14 @@ /* -Script to assign osmTGmod-id to substation +Substation OTG-ID +Script to assign osmTGmod-id (OTG) to substation. -__copyright__ = "DLR Institute for Networked Energy Systems" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "lukasol, C. Matke" +__copyright__ = "DLR Institute for Networked Energy Systems" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "lukasol, C. Matke" */ + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','grid','otg_ehvhv_bus_data','ego_dp_substation_otg.sql',' '); SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_hvmv_substation','ego_dp_substation_otg.sql',' '); diff --git a/dataprocessing/sql_snippets/ego_dp_supply_dp_powerflow_create_pp_mview.sql b/dataprocessing/sql_snippets/ego_dp_supply_dp_powerflow_create_pp_mview.sql index 759df7e4..4c47d1bb 100644 --- a/dataprocessing/sql_snippets/ego_dp_supply_dp_powerflow_create_pp_mview.sql +++ b/dataprocessing/sql_snippets/ego_dp_supply_dp_powerflow_create_pp_mview.sql @@ -1,16 +1,15 @@ /* SQL Script to create mviews displaying power plants by scenario. -__copyright__ = "Europa-Universität Flensburg - ZNES" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "wolfbunke" +ToDo +---- +- create and add docu meta string -toDo: - - alter supply table add preversion - - CREATE json doc-string - +__copyright__ = "Europa-Universität Flensburg - ZNES" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "wolfbunke" */ diff --git a/dataprocessing/sql_snippets/rea/ego_dp_lattice_500m.sql b/dataprocessing/sql_snippets/rea/ego_dp_lattice_500m.sql index 31da0ef1..266e7526 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_lattice_500m.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_lattice_500m.sql @@ -1,91 +1,58 @@ /* -lattice (regular point grid) with 500m -lattice on bbox of Germany +Lattice (regular point grid) with 500m +Lattice on bounding box of Germany. -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ + -- table for lattice 500m -DROP TABLE IF EXISTS model_draft.ego_lattice_500m CASCADE; -CREATE TABLE model_draft.ego_lattice_500m ( - id SERIAL NOT NULL, - subst_id integer, - area_type text, - geom_box geometry(Polygon,3035), - geom geometry(Point,3035), -CONSTRAINT ego_lattice_500m_pkey PRIMARY KEY (id)); +DROP TABLE IF EXISTS model_draft.ego_lattice_500m CASCADE; +CREATE TABLE model_draft.ego_lattice_500m ( + id SERIAL NOT NULL, + subst_id integer, + area_type text, + geom_box geometry(Polygon,3035), + geom geometry(Point,3035), +CONSTRAINT ego_lattice_500m_pkey PRIMARY KEY (id)); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','boundaries','bkg_vg250_1_sta_union_mview','ego_dp_lattice_500m.sql',' '); -- lattice on bbox of Germany with 500m INSERT INTO model_draft.ego_lattice_500m (geom_box) - SELECT ST_SETSRID(ST_CreateFishnet( - ROUND((ST_ymax(box2d(box.geom)) - ST_ymin(box2d(box.geom))) /500)::integer, - ROUND((ST_xmax(box2d(box.geom)) - ST_xmin(box2d(box.geom))) /500)::integer, - 500, - 500, - ST_xmin (box2d(box.geom)), - ST_ymin (box2d(box.geom)) - ),3035)::geometry(POLYGON,3035) AS geom - FROM boundaries.bkg_vg250_1_sta_union_mview AS box ; + SELECT ST_SETSRID(ST_CreateFishnet( + ROUND((ST_ymax(box2d(box.geom)) - ST_ymin(box2d(box.geom))) /500)::integer, + ROUND((ST_xmax(box2d(box.geom)) - ST_xmin(box2d(box.geom))) /500)::integer, + 500, + 500, + ST_xmin (box2d(box.geom)), + ST_ymin (box2d(box.geom)) + ),3035)::geometry(POLYGON,3035) AS geom + FROM boundaries.bkg_vg250_1_sta_union_mview AS box ; -- index gist (geom_box) -CREATE INDEX ego_lattice_500m_geom_box_idx - ON model_draft.ego_lattice_500m USING gist (geom_box); +CREATE INDEX ego_lattice_500m_geom_box_idx + ON model_draft.ego_lattice_500m USING gist (geom_box); -- centroid -UPDATE model_draft.ego_lattice_500m - SET geom = ST_CENTROID(geom_box); +UPDATE model_draft.ego_lattice_500m + SET geom = ST_CENTROID(geom_box); -- index gist (geom) -CREATE INDEX ego_lattice_500m_geom_idx - ON model_draft.ego_lattice_500m USING gist (geom); +CREATE INDEX ego_lattice_500m_geom_idx + ON model_draft.ego_lattice_500m USING gist (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_lattice_500m OWNER TO oeuser; +ALTER TABLE model_draft.ego_lattice_500m OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_lattice_500m IS '{ - "title": "eGoDP - lattice on bbox of Germany with 500m", - "description": "lattice (regular point grid)", - "language": [ "eng" ], - "reference_date": "", - "sources": [ - {"name": "boundaries.bkg_vg250_1_sta_union_mview","description": "","url": ""} ], - "spatial": [ - {"extend": "Germany", - "resolution": "500m"} ], - "license": [ - {"id": "tba", - "name": "tba", - "version": "tba", - "url": "tba", - "instruction": "tba"} ], - "contributors": [ - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "01.10.2016", "comment": "create table"}, - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "12.10.2016", "comment": "create metadata"}, - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "25.12.2016", "comment": "update to v0.2"}, - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "10.01.2016", "comment": "update centroid"} ], - "resources": [{ - "schema": { - "fields": [ - {"name": "id", "description": "unique identifier", "unit": "" }, - {"name": "subst_id", "description": "hvmv-substation", "unit": "" }, - {"name": "area_type", "description": "type of area (wpa, la, x)", "unit": "" }, - {"name": "geom_box", "description": "Geometry polygon", "unit": "" }, - {"name": "geom", "description": "Geometry point", "unit": "" } ]}, - "meta_version": "1.0"}] }'; - --- select description -SELECT obj_description('model_draft.ego_lattice_500m' ::regclass) ::json; + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_lattice_500m','ego_dp_lattice_500m.sql',' '); diff --git a/dataprocessing/sql_snippets/rea/ego_dp_lattice_50m.sql b/dataprocessing/sql_snippets/rea/ego_dp_lattice_50m.sql index 8e47940e..c53b2a74 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_lattice_50m.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_lattice_50m.sql @@ -1,21 +1,21 @@ /* -lattice (regular point grid) with 50m -lattice on bbox of Germany +Lattice (regular point grid) with 50m +Lattice on bounding box of Germany. -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -- table for lattice 50m -DROP TABLE IF EXISTS model_draft.ego_lattice_50m CASCADE; -CREATE TABLE model_draft.ego_lattice_50m ( - id SERIAL NOT NULL, - subst_id integer, - area_type text, - geom_box geometry(Polygon,3035), - geom geometry(Point,3035), +DROP TABLE IF EXISTS model_draft.ego_lattice_50m CASCADE; +CREATE TABLE model_draft.ego_lattice_50m ( + id SERIAL NOT NULL, + subst_id integer, + area_type text, + geom_box geometry(Polygon,3035), + geom geometry(Point,3035), CONSTRAINT ego_lattice_50m_pkey PRIMARY KEY (id)); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) @@ -23,69 +23,35 @@ SELECT ego_scenario_log('v0.3.0','input','boundaries','bkg_vg250_1_sta_union_mvi -- insert lattice INSERT INTO model_draft.ego_lattice_50m (geom_box) - SELECT ST_SETSRID(ST_CREATEFISHNET( - ROUND((ST_ymax(box2d(geom)) - ST_ymin(box2d(geom))) /50)::integer, - ROUND((ST_xmax(box2d(geom)) - ST_xmin(box2d(geom))) /50)::integer, - 50, - 50, - ST_xmin (box2d(geom)), - ST_ymin (box2d(geom)) - ),3035)::geometry(POLYGON,3035) AS geom - FROM boundaries.bkg_vg250_1_sta_union_mview; + SELECT ST_SETSRID(ST_CREATEFISHNET( + ROUND((ST_ymax(box2d(geom)) - ST_ymin(box2d(geom))) /50)::integer, + ROUND((ST_xmax(box2d(geom)) - ST_xmin(box2d(geom))) /50)::integer, + 50, + 50, + ST_xmin (box2d(geom)), + ST_ymin (box2d(geom)) + ),3035)::geometry(POLYGON,3035) AS geom + FROM boundaries.bkg_vg250_1_sta_union_mview; -- index gist (geom_box) -CREATE INDEX ego_lattice_50m_geom_box_idx - ON model_draft.ego_lattice_50m USING gist (geom_box); +CREATE INDEX ego_lattice_50m_geom_box_idx + ON model_draft.ego_lattice_50m USING gist (geom_box); -- centroid -UPDATE model_draft.ego_lattice_50m - SET geom = ST_CENTROID(geom_box); +UPDATE model_draft.ego_lattice_50m + SET geom = ST_CENTROID(geom_box); -- index gist (geom) -CREATE INDEX ego_lattice_50m_geom_idx - ON model_draft.ego_lattice_50m USING gist (geom); +CREATE INDEX ego_lattice_50m_geom_idx + ON model_draft.ego_lattice_50m USING gist (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_lattice_50m OWNER TO oeuser; +ALTER TABLE model_draft.ego_lattice_50m OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_lattice_50m IS '{ - "title": "eGoDP - lattice on loadarea with 50m", - "description": "lattice (regular point grid)", - "language": [ "eng" ], - "reference_date": "", - "sources": [ - {"name": "boundaries.bkg_vg250_1_sta_union_mview","description": "","url": ""} ], - "spatial": [ - {"extend": "Germany", - "resolution": "50m"} ], - "license": [ - {"id": "tba", - "name": "tba", - "version": "tba", - "url": "tba", - "instruction": "tba"} ], - "contributors": [ - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "01.10.2016", "comment": "create table"}, - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "12.10.2016", "comment": "create metadata"}, - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "25.12.2016", "comment": "update to v0.2"}, - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "10.01.2016", "comment": "update centroid"} ], - "resources": [{ - "schema": { - "fields": [ - {"name": "id", "description": "unique identifier", "unit": "" }, - {"name": "subst_id", "description": "hvmv-substation", "unit": "" }, - {"name": "area_type", "description": "type of area (wpa, la, x)", "unit": "" }, - {"name": "geom_box", "description": "Geometry polygon", "unit": "" }, - {"name": "geom", "description": "Geometry point", "unit": "" } ]}, - "meta_version": "1.0"}] }'; - --- select description -SELECT obj_description('model_draft.ego_lattice_50m' ::regclass) ::json; + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_lattice_50m','ego_dp_lattice_50m.sql',' '); diff --git a/dataprocessing/sql_snippets/rea/ego_dp_rea_lattice_per_area_500m.sql b/dataprocessing/sql_snippets/rea/ego_dp_rea_lattice_per_area_500m.sql index 1a66e898..d2bb2757 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_rea_lattice_per_area_500m.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_rea_lattice_per_area_500m.sql @@ -1,14 +1,15 @@ /* -lattice on bbox of Germany with 500m per area -wpa - points inside wind potential area -la - points inside loadarea -x - points inside wind potential area and loadarea -out - points outside area - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +Prepare 500m lattice +Lattice on bounding box of Germany with 500m per area: +wpa - points inside wind potential area +la - points inside loadarea +x - points inside wind potential area and loadarea +out - points outside area + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -- ego scenario log (version,io,schema_name,table_name,script_name,comment) diff --git a/dataprocessing/sql_snippets/rea/ego_dp_rea_lattice_per_area_50m.sql b/dataprocessing/sql_snippets/rea/ego_dp_rea_lattice_per_area_50m.sql index 3139faa3..056944bd 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_rea_lattice_per_area_50m.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_rea_lattice_per_area_50m.sql @@ -1,59 +1,60 @@ /* -lattice on bbox of loadarea with 50m per area -la - points inside loadarea +Prepare 500m lattice +Lattice on bounding box of Germany with 50m per area: +la - points inside loadarea -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mv_griddistrict','ego_dp_rea_lattice_per_area_50m.sql',' '); -- substation id from mv-griddistrict -UPDATE model_draft.ego_lattice_50m AS t1 - SET subst_id = t2.subst_id - FROM ( - SELECT grid.id, - gd.subst_id AS subst_id - FROM model_draft.ego_lattice_50m AS grid, - model_draft.ego_grid_mv_griddistrict AS gd - WHERE gd.geom && grid.geom AND - ST_CONTAINS(gd.geom,grid.geom) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_lattice_50m AS t1 + SET subst_id = t2.subst_id + FROM ( + SELECT grid.id, + gd.subst_id AS subst_id + FROM model_draft.ego_lattice_50m AS grid, + model_draft.ego_grid_mv_griddistrict AS gd + WHERE gd.geom && grid.geom AND + ST_CONTAINS(gd.geom,grid.geom) + ) AS t2 + WHERE t1.id = t2.id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_demand_loadarea','ego_dp_rea_lattice_per_area_50m.sql',' '); -- area type for loadarea (la) -UPDATE model_draft.ego_lattice_50m AS t1 - SET area_type = t2.area_type - FROM ( - SELECT grid.id, - 'la' AS area_type - FROM model_draft.ego_lattice_50m AS grid, - model_draft.ego_demand_loadarea AS la - WHERE la.geom && grid.geom AND - ST_CONTAINS(la.geom,grid.geom) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_lattice_50m AS t1 + SET area_type = t2.area_type + FROM ( + SELECT grid.id, + 'la' AS area_type + FROM model_draft.ego_lattice_50m AS grid, + model_draft.ego_demand_loadarea AS la + WHERE la.geom && grid.geom AND + ST_CONTAINS(la.geom,grid.geom) + ) AS t2 + WHERE t1.id = t2.id; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_lattice_50m','ego_dp_rea_lattice_per_area_50m.sql',' '); -- mview points inside la -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_lattice_50m_la_mview CASCADE; -CREATE MATERIALIZED VIEW model_draft.ego_lattice_50m_la_mview AS - SELECT * - FROM model_draft.ego_lattice_50m - WHERE area_type = 'la'; +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_lattice_50m_la_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.ego_lattice_50m_la_mview AS + SELECT * + FROM model_draft.ego_lattice_50m + WHERE area_type = 'la'; -- index gist (geom) -CREATE INDEX ego_lattice_50m_la_mview_geom_idx - ON model_draft.ego_lattice_50m_la_mview USING gist (geom); +CREATE INDEX ego_lattice_50m_la_mview_geom_idx + ON model_draft.ego_lattice_50m_la_mview USING gist (geom); -- grant (oeuser) ALTER TABLE model_draft.ego_lattice_50m_la_mview OWNER TO oeuser; diff --git a/dataprocessing/sql_snippets/rea/ego_dp_rea_m1.sql b/dataprocessing/sql_snippets/rea/ego_dp_rea_m1.sql index 244935c8..e690f7d9 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_rea_m1.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_rea_m1.sql @@ -1,18 +1,14 @@ /* -Skript to allocate decentralized renewable power plants (dea) -Methods base on technology and voltage level -Uses different lattice from setup_ego_wpa_per_grid_district.sql - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +M1 biomass and solar to OSM agricultural +Allocates "biomass" & (renewable) "gas" to OSM agricultural areas. +The rest could not be allocated, consider in M4. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -/* 1. M1-1 -Move "biomass" & (renewable) "gas" to OSM agricultural areas. -The rest could not be allocated, consider in M4. -*/ -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_dp_rea_m1.sql',' '); diff --git a/dataprocessing/sql_snippets/rea/ego_dp_rea_m2.sql b/dataprocessing/sql_snippets/rea/ego_dp_rea_m2.sql index 476a665e..1fdde67f 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_rea_m2.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_rea_m2.sql @@ -1,18 +1,14 @@ /* -Skript to allocate decentralized renewable power plants (dea) -Methods base on technology and voltage level -Uses different lattice from setup_ego_wpa_per_grid_district.sql - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +M2 wind farms +Allocates "wind" turbines with voltage level 4 to WPA as wind farms. +The rest could not be allocated, consider in M3. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -/* 3. M2 -Move "wind" with "4" to WPA as wind farms. -The rest could not be allocated, consider in M4. -*/ -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_dp_rea_m2.sql',' '); diff --git a/dataprocessing/sql_snippets/rea/ego_dp_rea_m3.sql b/dataprocessing/sql_snippets/rea/ego_dp_rea_m3.sql index 15ce5f40..eff7f22a 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_rea_m3.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_rea_m3.sql @@ -1,19 +1,15 @@ /* -Skript to allocate decentralized renewable power plants (dea) -Methods base on technology and voltage level -Uses different lattice from setup_ego_wpa_per_grid_district.sql - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" -*/ - -/* 4. M3 -Move "wind" with "5" & "6" to wpa_grid. +M3 wind turbines to WPA +Allocates "wind" turbines with voltage levels "5" & "6" to WPA. Also considers rest of M2. The rest could not be allocated, consider in M4. -*/ + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" +*/ + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_dp_rea_m3.sql',' '); diff --git a/dataprocessing/sql_snippets/rea/ego_dp_rea_m4.sql b/dataprocessing/sql_snippets/rea/ego_dp_rea_m4.sql index 52a2f5cc..79c24a5b 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_rea_m4.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_rea_m4.sql @@ -1,20 +1,16 @@ /* -Skript to allocate decentralized renewable power plants (dea) -Methods base on technology and voltage level -Uses different lattice from setup_ego_wpa_per_grid_district.sql - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" -*/ - -/* 5. M4 -Move "wind" with "5" & "6" to wpa_grid. +M4 other and rest +Allocates "wind" with voltage levels "5" & "6" to WPA. "solar ground" & "wind" ohne voltage & Rest M1-1 & Rest M1-2 & Rest M3. Also considers rest of M1-1, M1-2 and M3. There should be no rest! -*/ + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" +*/ + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_dp_rea_m4.sql',' '); diff --git a/dataprocessing/sql_snippets/rea/ego_dp_rea_m5.sql b/dataprocessing/sql_snippets/rea/ego_dp_rea_m5.sql index 54d1899a..8568b87a 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_rea_m5.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_rea_m5.sql @@ -1,19 +1,15 @@ /* -Skript to allocate decentralized renewable power plants (dea) -Methods base on technology and voltage level -Uses different lattice from setup_ego_wpa_per_grid_district.sql - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +M5 LV to Loadarea +Allocate "solar" with voltage levels "6" & "7" to Loadarea. +There should be no rest! + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ -/* 6. M5 -Relocate "solar" with "6" & "7" to la_grid. -There should be no rest. -*/ - + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_dp_rea_m5.sql',' '); diff --git a/dataprocessing/sql_snippets/rea/ego_dp_rea_results.sql b/dataprocessing/sql_snippets/rea/ego_dp_rea_results.sql index 88dd6a4d..53c44b50 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_rea_results.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_rea_results.sql @@ -2,6 +2,7 @@ Skript to allocate decentralized renewable power plants (dea) Methods base on technology and voltage level Uses different lattice from setup_ego_wpa_per_grid_district.sql +This script includes a hotfix to fill all empty cells of column rea_geom_new with the original geometry from column geom. __copyright__ = "Reiner Lemoine Institut" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" @@ -224,3 +225,23 @@ ALTER TABLE model_draft.ego_supply_rea_per_method -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_supply_rea_per_method','ego_dp_rea_results.sql',' '); + + +-- Hotfix to fill empty rea_geom_new cells in table + +Update table model_draft_ego_dp_supply_res_powerplant + set rea_geom_new = ST_Transform(geom,3035), + comment = comment || 'add original geom to rea_geom_new' +Where rea_geom_new is null; + +-- Add index on rea_geom_new + +DROP INDEX model_draft.ego_dp_supply_res_powerplant_geom_new_idx; + +CREATE INDEX ego_dp_supply_res_powerplant_geom_new_idx + ON model_draft.ego_dp_supply_res_powerplant + USING gist + (rea_geom_new); + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_dp_supply_res_powerplant','ego_dp_rea_results.sql',' '); diff --git a/dataprocessing/sql_snippets/rea/ego_dp_rea_setup.sql b/dataprocessing/sql_snippets/rea/ego_dp_rea_setup.sql index 1180ebd0..de49374b 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_rea_setup.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_rea_setup.sql @@ -1,70 +1,73 @@ /* -Skript to allocate decentralized renewable power plants (dea) -Methods base on technology and voltage level -Uses different lattice from setup_ego_wpa_per_grid_district.sql - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +Setup tables for REA +Skript to allocate decentralized renewable power plants (dea). +Methods base on technology and voltage level. +Allocate DEA outside of Germany to next HVMV Substation. +Generate OSM farmyards. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ + -- number of grid_district -> 3608 - SELECT COUNT(*) - FROM model_draft.ego_grid_mv_griddistrict; +SELECT COUNT(*) +FROM model_draft.ego_grid_mv_griddistrict; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_dp_rea_setup.sql',' '); ALTER TABLE model_draft.ego_dp_supply_res_powerplant - DROP COLUMN IF EXISTS la_id CASCADE, - ADD COLUMN la_id integer, - DROP COLUMN IF EXISTS mvlv_subst_id CASCADE, - ADD COLUMN mvlv_subst_id integer, - DROP COLUMN IF EXISTS rea_sort CASCADE, - ADD COLUMN rea_sort integer, - DROP COLUMN IF EXISTS rea_flag CASCADE, - ADD COLUMN rea_flag character varying, - DROP COLUMN IF EXISTS rea_geom_line CASCADE, - ADD COLUMN rea_geom_line geometry(LineString,3035), - DROP COLUMN IF EXISTS rea_geom_new CASCADE, - ADD COLUMN rea_geom_new geometry(Point,3035); + DROP COLUMN IF EXISTS la_id CASCADE, + ADD COLUMN la_id integer, + DROP COLUMN IF EXISTS mvlv_subst_id CASCADE, + ADD COLUMN mvlv_subst_id integer, + DROP COLUMN IF EXISTS rea_sort CASCADE, + ADD COLUMN rea_sort integer, + DROP COLUMN IF EXISTS rea_flag CASCADE, + ADD COLUMN rea_flag character varying, + DROP COLUMN IF EXISTS rea_geom_line CASCADE, + ADD COLUMN rea_geom_line geometry(LineString,3035), + DROP COLUMN IF EXISTS rea_geom_new CASCADE, + ADD COLUMN rea_geom_new geometry(Point,3035); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mv_griddistrict','ego_dp_rea_setup.sql',' '); -- subst_id from mv-griddistrict -UPDATE model_draft.ego_dp_supply_res_powerplant AS t1 - SET subst_id = t2.subst_id - FROM ( - SELECT a.id AS id, - b.subst_id AS subst_id - FROM model_draft.ego_dp_supply_res_powerplant AS a, - model_draft.ego_grid_mv_griddistrict AS b - WHERE b.geom && ST_TRANSFORM(a.geom,3035) AND - ST_CONTAINS(b.geom,ST_TRANSFORM(a.geom,3035)) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_dp_supply_res_powerplant AS t1 + SET subst_id = t2.subst_id + FROM ( + SELECT a.id AS id, + b.subst_id AS subst_id + FROM model_draft.ego_dp_supply_res_powerplant AS a, + model_draft.ego_grid_mv_griddistrict AS b + WHERE b.geom && ST_TRANSFORM(a.geom,3035) AND + ST_CONTAINS(b.geom,ST_TRANSFORM(a.geom,3035)) + ) AS t2 + WHERE t1.id = t2.id; -- rea_flag reset -UPDATE model_draft.ego_dp_supply_res_powerplant - SET rea_flag = NULL, - rea_geom_new = NULL, - rea_geom_line = NULL; +UPDATE model_draft.ego_dp_supply_res_powerplant + SET rea_flag = NULL, + rea_geom_new = NULL, + rea_geom_line = NULL; -- re outside mv-griddistrict -UPDATE model_draft.ego_dp_supply_res_powerplant - SET rea_flag = 'out', - rea_geom_new = NULL, - rea_geom_line = NULL - WHERE subst_id IS NULL; +UPDATE model_draft.ego_dp_supply_res_powerplant + SET rea_flag = 'out', + rea_geom_new = NULL, + rea_geom_line = NULL + WHERE subst_id IS NULL; -- re outside mv-griddistrict -> offshore wind -UPDATE model_draft.ego_dp_supply_res_powerplant - SET rea_flag = 'wind_offshore', - rea_geom_new = NULL, - rea_geom_line = NULL - WHERE generation_subtype = 'wind_offshore'; +UPDATE model_draft.ego_dp_supply_res_powerplant + SET rea_flag = 'wind_offshore', + rea_geom_new = NULL, + rea_geom_line = NULL + WHERE generation_subtype = 'wind_offshore'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_dp_supply_res_powerplant','ego_dp_rea_setup.sql',' '); @@ -77,27 +80,32 @@ Offshore wind power plants are not moved. */ -- re outside mv-griddistrict -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_dp_supply_res_powerplant_out_mview CASCADE; -CREATE MATERIALIZED VIEW model_draft.ego_dp_supply_res_powerplant_out_mview AS - SELECT * - FROM model_draft.ego_dp_supply_res_powerplant - WHERE rea_flag = 'out' OR rea_flag = 'wind_offshore'; +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_dp_supply_res_powerplant_out_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.ego_dp_supply_res_powerplant_out_mview AS + SELECT * + FROM model_draft.ego_dp_supply_res_powerplant + WHERE rea_flag = 'out' OR rea_flag = 'wind_offshore'; -- index GIST (geom) CREATE INDEX ego_dp_supply_res_powerplant_out_mview_geom_idx - ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (geom); + ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (geom); -- index GIST (rea_geom_line) CREATE INDEX ego_dp_supply_res_powerplant_out_mview_rea_geom_line_idx - ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (rea_geom_line); + ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (rea_geom_line); -- index GIST (rea_geom_new) CREATE INDEX ego_dp_supply_res_powerplant_out_mview_rea_geom_new_idx - ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (rea_geom_new); + ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (rea_geom_new); -- grant (oeuser) ALTER TABLE model_draft.ego_dp_supply_res_powerplant_out_mview OWNER TO oeuser; +-- metadata +COMMENT ON MATERIALIZED VIEW model_draft.ego_dp_supply_res_powerplant_out_mview IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_dp_supply_res_powerplant_out_mview','ego_dp_rea_setup.sql','First check if RES are outside Germany'); @@ -106,70 +114,82 @@ SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_dp_supply_res_powerpl SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_hvmv_substation','ego_dp_rea_setup.sql',' '); -- new geom, DEA to next substation -DROP TABLE IF EXISTS model_draft.ego_dp_supply_res_powerplant_out_nn CASCADE; -CREATE TABLE model_draft.ego_dp_supply_res_powerplant_out_nn AS - SELECT DISTINCT ON (a.id) - a.id AS dea_id, - a.generation_type, - b.subst_id, - b.geom ::geometry(Point,3035) AS geom_sub, - ST_Distance(ST_TRANSFORM(a.geom,3035),b.geom) AS distance, - ST_TRANSFORM(a.geom,3035) ::geometry(Point,3035) AS geom - FROM model_draft.ego_dp_supply_res_powerplant_out_mview AS a, - model_draft.ego_grid_hvmv_substation AS b - WHERE ST_DWithin(ST_TRANSFORM(a.geom,3035),b.geom, 100000) -- In a 100 km radius - ORDER BY a.id, ST_Distance(ST_TRANSFORM(a.geom,3035),b.geom); - -ALTER TABLE model_draft.ego_dp_supply_res_powerplant_out_nn - ADD PRIMARY KEY (dea_id), - OWNER TO oeuser; +DROP TABLE IF EXISTS model_draft.ego_dp_supply_res_powerplant_out_nn CASCADE; +CREATE TABLE model_draft.ego_dp_supply_res_powerplant_out_nn AS + SELECT DISTINCT ON (a.id) + a.id AS dea_id, + a.generation_type, + b.subst_id, + b.geom ::geometry(Point,3035) AS geom_sub, + ST_Distance(ST_TRANSFORM(a.geom,3035),b.geom) AS distance, + ST_TRANSFORM(a.geom,3035) ::geometry(Point,3035) AS geom + FROM model_draft.ego_dp_supply_res_powerplant_out_mview AS a, + model_draft.ego_grid_hvmv_substation AS b + WHERE ST_DWithin(ST_TRANSFORM(a.geom,3035),b.geom, 100000) -- In a 100 km radius + ORDER BY a.id, ST_Distance(ST_TRANSFORM(a.geom,3035),b.geom); + +ALTER TABLE model_draft.ego_dp_supply_res_powerplant_out_nn + ADD PRIMARY KEY (dea_id), + OWNER TO oeuser; + +-- metadata +COMMENT ON TABLE model_draft.ego_dp_supply_res_powerplant_out_nn IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_dp_supply_res_powerplant_out_nn','ego_dp_rea_setup.sql',' '); - + -- new subst_id and rea_geom_new with line -UPDATE model_draft.ego_dp_supply_res_powerplant AS t1 - SET subst_id = t2.subst_id, - rea_geom_new = t2.rea_geom_new, - rea_geom_line = t2.rea_geom_line - FROM (SELECT nn.dea_id AS dea_id, - nn.subst_id AS subst_id, - nn.geom_sub AS rea_geom_new, - ST_MAKELINE(nn.geom,nn.geom_sub) ::geometry(LineString,3035) AS rea_geom_line - FROM model_draft.ego_dp_supply_res_powerplant_out_nn AS nn, - model_draft.ego_dp_supply_res_powerplant AS dea - WHERE rea_flag = 'out' - )AS t2 - WHERE t1.id = t2.dea_id; - --- re outside mv-griddistrict -DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_dp_supply_res_powerplant_out_mview CASCADE; -CREATE MATERIALIZED VIEW model_draft.ego_dp_supply_res_powerplant_out_mview AS - SELECT dea.* - FROM model_draft.ego_dp_supply_res_powerplant AS dea - WHERE rea_flag = 'out' OR rea_flag = 'wind_offshore'; +UPDATE model_draft.ego_dp_supply_res_powerplant AS t1 + SET subst_id = t2.subst_id, + rea_geom_new = t2.rea_geom_new, + rea_geom_line = t2.rea_geom_line + FROM ( + SELECT nn.dea_id AS dea_id, + nn.subst_id AS subst_id, + nn.geom_sub AS rea_geom_new, + ST_MAKELINE(nn.geom,nn.geom_sub) ::geometry(LineString,3035) AS rea_geom_line + FROM model_draft.ego_dp_supply_res_powerplant_out_nn AS nn, + model_draft.ego_dp_supply_res_powerplant AS dea + WHERE rea_flag = 'out' + )AS t2 + WHERE t1.id = t2.dea_id; + + +-- DEA outside MV Griddistrict +DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_dp_supply_res_powerplant_out_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.ego_dp_supply_res_powerplant_out_mview AS + SELECT dea.* + FROM model_draft.ego_dp_supply_res_powerplant AS dea + WHERE rea_flag = 'out' OR rea_flag = 'wind_offshore'; -- index GIST (geom) CREATE INDEX ego_dp_supply_res_powerplant_out_mview_geom_idx - ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (geom); + ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (geom); -- index GIST (rea_geom_line) CREATE INDEX ego_dp_supply_res_powerplant_out_mview_rea_geom_line_idx - ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (rea_geom_line); + ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (rea_geom_line); -- index GIST (rea_geom_new) CREATE INDEX ego_dp_supply_res_powerplant_out_mview_rea_geom_new_idx - ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (rea_geom_new); + ON model_draft.ego_dp_supply_res_powerplant_out_mview USING gist (rea_geom_new); -- grant (oeuser) ALTER TABLE model_draft.ego_dp_supply_res_powerplant_out_mview OWNER TO oeuser; +-- metadata +COMMENT ON MATERIALIZED VIEW model_draft.ego_dp_supply_res_powerplant_out_mview IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; + -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_dp_supply_res_powerplant_out_mview','ego_dp_rea_setup.sql','Second check if RES outside Germany'); -- drop -DROP TABLE IF EXISTS model_draft.ego_dp_supply_res_powerplant_out_nn CASCADE; --- DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_dp_supply_res_powerplant_out_mview CASCADE; +DROP TABLE IF EXISTS model_draft.ego_dp_supply_res_powerplant_out_nn CASCADE; +-- DROP MATERIALIZED VIEW IF EXISTS model_draft.ego_dp_supply_res_powerplant_out_mview CASCADE; /* @@ -181,27 +201,27 @@ In Germany a lot of farmyard builings are used for renewable energy production w SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_osm_sector_per_griddistrict_4_agricultural','ego_dp_rea_setup.sql',' '); ALTER TABLE model_draft.ego_osm_sector_per_griddistrict_4_agricultural - DROP COLUMN IF EXISTS subst_id, - ADD COLUMN subst_id integer, - DROP COLUMN IF EXISTS area_ha, - ADD COLUMN area_ha double precision; + DROP COLUMN IF EXISTS subst_id, + ADD COLUMN subst_id integer, + DROP COLUMN IF EXISTS area_ha, + ADD COLUMN area_ha double precision; -- update subst_id from grid_district UPDATE model_draft.ego_osm_sector_per_griddistrict_4_agricultural AS t1 - SET subst_id = t2.subst_id - FROM ( - SELECT osm.id AS id, - dis.subst_id AS subst_id - FROM model_draft.ego_osm_sector_per_griddistrict_4_agricultural AS osm, - model_draft.ego_grid_mv_griddistrict AS dis - WHERE dis.geom && ST_CENTROID(osm.geom) AND - ST_CONTAINS(dis.geom,ST_CENTROID(osm.geom)) - ) AS t2 - WHERE t1.id = t2.id; + SET subst_id = t2.subst_id + FROM ( + SELECT osm.id AS id, + dis.subst_id AS subst_id + FROM model_draft.ego_osm_sector_per_griddistrict_4_agricultural AS osm, + model_draft.ego_grid_mv_griddistrict AS dis + WHERE dis.geom && ST_CENTROID(osm.geom) AND + ST_CONTAINS(dis.geom,ST_CENTROID(osm.geom)) + ) AS t2 + WHERE t1.id = t2.id; -- update area UPDATE model_draft.ego_osm_sector_per_griddistrict_4_agricultural - SET area_ha = ST_AREA(geom)/10000; + SET area_ha = ST_AREA(geom)/10000; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_osm_sector_per_griddistrict_4_agricultural','ego_dp_rea_setup.sql',' '); diff --git a/dataprocessing/sql_snippets/rea/ego_dp_rea_wpa_per_mvgd.sql b/dataprocessing/sql_snippets/rea/ego_dp_rea_wpa_per_mvgd.sql index a4acf966..3f05f620 100644 --- a/dataprocessing/sql_snippets/rea/ego_dp_rea_wpa_per_mvgd.sql +++ b/dataprocessing/sql_snippets/rea/ego_dp_rea_wpa_per_mvgd.sql @@ -1,12 +1,11 @@ /* -wind potential area per mv-griddistrict -wpa dump -wpa per mv-griddistrict - -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +Wind potential area (WPA) per MV-Griddistrict +Cut WPA with MV-Griddistrict and make valid geometries. + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" */ @@ -38,7 +37,8 @@ ALTER TABLE model_draft.ego_supply_wpa OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_wpa','ego_dp_rea_wpa_per_mvgd.sql',' '); - */ +*/ + /* -- validate (geom) DROP VIEW IF EXISTS model_draft.ego_supply_wpa_error_geom_view CASCADE; CREATE VIEW model_draft.ego_supply_wpa_error_geom_view AS @@ -55,100 +55,67 @@ CREATE VIEW model_draft.ego_supply_wpa_error_geom_view AS WHERE test.error = FALSE; -- drop empty view -SELECT f_drop_view('{ego_supply_wpa_error_geom_view}', 'calc_ego_re'); */ +SELECT f_drop_view('{ego_supply_wpa_error_geom_view}', 'calc_ego_re'); +*/ --- wpa per mv-griddistrict -DROP TABLE IF EXISTS model_draft.ego_supply_wpa_per_mvgd CASCADE; -CREATE TABLE model_draft.ego_supply_wpa_per_mvgd ( - id serial, - subst_id integer, - area_ha double precision, - geom geometry(Polygon,3035), -CONSTRAINT ego_supply_wpa_per_mvgd_pkey PRIMARY KEY (id)); +-- WPA per MV-Griddistrict +DROP TABLE IF EXISTS model_draft.ego_supply_wpa_per_mvgd CASCADE; +CREATE TABLE model_draft.ego_supply_wpa_per_mvgd ( + id serial, + subst_id integer, + area_ha double precision, + geom geometry(Polygon,3035), +CONSTRAINT ego_supply_wpa_per_mvgd_pkey PRIMARY KEY (id)); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_grid_mv_griddistrict','ego_dp_rea_wpa_per_mvgd.sql',' '); SELECT ego_scenario_log('v0.3.0','input','supply','vernetzen_wind_potential_area','ego_dp_rea_wpa_per_mvgd.sql',' '); -- insert wpa per mv-griddistrict -WITH wpa_dump AS ( - SELECT (ST_DUMP(ST_MULTI(ST_UNION( - ST_BUFFER(ST_BUFFER(ST_TRANSFORM(geom,3035),-0,01),0,01) - )))).geom AS geom - FROM supply.vernetzen_wind_potential_area) +WITH wpa_dump AS ( + SELECT (ST_DUMP(ST_MULTI(ST_UNION( + ST_BUFFER(ST_BUFFER(ST_TRANSFORM(geom,3035),-0,01),0,01) + )))).geom AS geom + FROM supply.vernetzen_wind_potential_area) INSERT INTO model_draft.ego_supply_wpa_per_mvgd (area_ha, geom) - SELECT ST_AREA(c.geom)/10000, - c.geom ::geometry(Polygon,3035) - FROM (SELECT ST_MakeValid((ST_DUMP(ST_MULTI(ST_SAFE_INTERSECTION(a.geom,b.geom)))).geom) AS geom - FROM wpa_dump AS a, - model_draft.ego_grid_mv_griddistrict AS b - WHERE a.geom && b.geom - ) AS c - WHERE ST_IsValid(c.geom) = 't' AND ST_GeometryType(c.geom) = 'ST_Polygon' ; + SELECT ST_AREA(c.geom)/10000, + c.geom ::geometry(Polygon,3035) + FROM ( + SELECT ST_MakeValid((ST_DUMP(ST_MULTI(ST_SAFE_INTERSECTION(a.geom,b.geom)))).geom) AS geom + FROM wpa_dump AS a, + model_draft.ego_grid_mv_griddistrict AS b + WHERE a.geom && b.geom + ) AS c + WHERE ST_IsValid(c.geom) = 't' AND ST_GeometryType(c.geom) = 'ST_Polygon' ; -- substation id -UPDATE model_draft.ego_supply_wpa_per_mvgd AS t1 - SET subst_id = t2.subst_id - FROM ( - SELECT a.id AS id, - b.subst_id AS subst_id - FROM model_draft.ego_supply_wpa_per_mvgd AS a, - model_draft.ego_grid_mv_griddistrict AS b - WHERE b.geom && a.geom AND - ST_CONTAINS(b.geom,ST_PointOnSurface(a.geom)) - ) AS t2 - WHERE t1.id = t2.id; +UPDATE model_draft.ego_supply_wpa_per_mvgd AS t1 + SET subst_id = t2.subst_id + FROM ( + SELECT a.id AS id, + b.subst_id AS subst_id + FROM model_draft.ego_supply_wpa_per_mvgd AS a, + model_draft.ego_grid_mv_griddistrict AS b + WHERE b.geom && a.geom AND + ST_CONTAINS(b.geom,ST_PointOnSurface(a.geom)) + ) AS t2 + WHERE t1.id = t2.id; -- index gist (geom) -CREATE INDEX ego_supply_wpa_per_mvgd_geom_idx - ON model_draft.ego_supply_wpa_per_mvgd USING gist (geom); +CREATE INDEX ego_supply_wpa_per_mvgd_geom_idx + ON model_draft.ego_supply_wpa_per_mvgd USING gist (geom); -- grant (oeuser) -ALTER TABLE model_draft.ego_supply_wpa_per_mvgd OWNER TO oeuser; +ALTER TABLE model_draft.ego_supply_wpa_per_mvgd OWNER TO oeuser; -- metadata COMMENT ON TABLE model_draft.ego_supply_wpa_per_mvgd IS '{ - "title": "eGo dataprocessing - WPA per MV Griddistrict", - "description": "Potential areas for wind power plants - Wind Potential Area (wpa)", - "language": [ "eng" ], - "reference_date": "", - "sources": [ - {"name": "eGo dataprocessing", "description": "v0.3.0", "url": "https://github.com/openego/data_processing", "license": "GNU Affero General Public License Version 3 (AGPL-3.0)", "copyright": " " }, - {"name": "VerNetzen - Wind potential Area", "description": " ", "url": "http://oep.iks.cs.ovgu.de/dataedit/view/supply/vernetzen_wind_potential_area", "license": "ODbL-1.0", "copyright": "© VerNetzen"} ], - "spatial": [ - {"extend": "Germany", - "resolution": "50m"} ], - "license": [ - {"id": "ODbL-1.0", - "name": "Open Data Commons Open Database License 1.0", - "version": "1.0", - "url": "https://opendatacommons.org/licenses/odbl/1.0/", - "instruction": "You are free: To Share, To Create, To Adapt; As long as you: Attribute, Share-Alike, Keep open!", - "copyright": "© Reiner Lemoine Institut" } ], - "contributors": [ - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "01.10.2016", "comment": "Create table"}, - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "25.12.2016", "comment": "Add metadata"}, - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "25.12.2016", "comment": "Update to v0.2"}, - {"name": "Ludwig Hülk", "email": "ludwig.huelk@rl-institut.de", - "date": "28.03.2017", "comment": "Update to v0.3.0"}], - "resources": [{ - "schema": { - "fields": [ - {"name": "id", "description": "Unique identifier", "unit": "" }, - {"name": "subst_id", "description": "HVMV substation", "unit": "" }, - {"name": "area_ha", "description": "Area", "unit": "ha" }, - {"name": "geom", "description": "Geometry", "unit": "" }]}, - "meta_version": "1.2"}] }'; - --- select description -SELECT obj_description('model_draft.ego_supply_wpa_per_mvgd' ::regclass) ::json; + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }'; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_supply_wpa_per_mvgd','ego_dp_rea_wpa_per_mvgd.sql',' '); --- DROP TABLE IF EXISTS model_draft.ego_supply_wpa CASCADE; +-- DROP TABLE IF EXISTS model_draft.ego_supply_wpa CASCADE; diff --git a/dataprocessing/sql_snippets/rea/ego_dp_wpa.sql b/dataprocessing/sql_snippets/rea/ego_dp_wpa.sql deleted file mode 100644 index 11ae69f4..00000000 --- a/dataprocessing/sql_snippets/rea/ego_dp_wpa.sql +++ /dev/null @@ -1,35 +0,0 @@ - --- metadata -COMMENT ON TABLE supply.soethe_wind_potential_area IS '{ - "title": "eGoDP_REA - wpa per mv-griddistrict", - "description": "potential areas for wind power plants - Wind Potential Area (wpa)", - "language": [ "eng" ], - "reference_date": "", - "sources": [ - {"name": "VerNetzen - Projektabschlussbericht","description": "Sozial-kologische und technisch-konomische Modellierung von Entwicklungspfaden der Energiewende","url": "http://www.uni-flensburg.de/fileadmin/content/abteilungen/industrial/dokumente/downloads/veroeffentlichungen/forschungsergebnisse/vernetzen-2016-endbericht-online.pdf"}, - {"name": "OpenStreetMap","description": "Geofabrik - Download - OpenStreetMap Data Extracts","url": "http://download.geofabrik.de/europe/germany.html#"}, - {"name": "Bundesamt fr Kartographie und Geodsie - Digitale Landschaftsmodell 1:250 000 (DLM250)","description": " GeoBasis-DE / BKG 2015","url": "http://www.bkg.bund.de"}, - {"name": "Bundesamt fr Naturschutz - Schutzgebiete in Deutschland","description": "","url": "https://www.bfn.de/karten.html"} ], - "spatial": [ - {"extend": "Germany", - "resolution": ""} ], - "license": [ - {"id": "ODbL-1.0", - "name": "Open Data Commons Open Database License 1.0", - "version": "1.0", - "url": "https://opendatacommons.org/licenses/odbl/1.0/", - "instruction": "You are free: To Share, To Create, To Adapt; As long as you: Attribute, Share-Alike, Keep open!"} ], - "contributors": [ - {"name": "Ludwig Hlk", "email": "ludwig.huelk@rl-institut.de", - "date": "01.08.2016", "comment": "Create table"}, - {"name": "Ludwig Hlk", "email": "ludwig.huelk@rl-institut.de", - "date": "07.03.2017", "comment": "Add metadata"} ], - "resources": [{ - "schema": { - "fields": [ - {"name": "region_key", "description": "unique identifier", "unit": "" }, - {"name": "geom", "description": "Geometry", "unit": "" }]}, - "meta_version": "1.0"}] }'; - --- select description -SELECT obj_description('supply.soethe_wind_potential_area' ::regclass) ::json; diff --git a/bpmn/BPMN_Netzinsel_Gemeindegrenzen.graphml b/documentation/bpmn/archiv/BPMN_Netzinsel_Gemeindegrenzen.graphml similarity index 100% rename from bpmn/BPMN_Netzinsel_Gemeindegrenzen.graphml rename to documentation/bpmn/archiv/BPMN_Netzinsel_Gemeindegrenzen.graphml diff --git a/bpmn/eGo_bpmn_pp_mviews.graphml b/documentation/bpmn/archiv/eGo_bpmn_pp_mviews.graphml similarity index 100% rename from bpmn/eGo_bpmn_pp_mviews.graphml rename to documentation/bpmn/archiv/eGo_bpmn_pp_mviews.graphml diff --git a/bpmn/eGo_bpmn_preprocessing_conv_development_by_scenario.graphml b/documentation/bpmn/archiv/eGo_bpmn_preprocessing_conv_development_by_scenario.graphml similarity index 100% rename from bpmn/eGo_bpmn_preprocessing_conv_development_by_scenario.graphml rename to documentation/bpmn/archiv/eGo_bpmn_preprocessing_conv_development_by_scenario.graphml diff --git a/bpmn/eGo_bpmn_preprocessing_res_development_by_scenario.graphml b/documentation/bpmn/archiv/eGo_bpmn_preprocessing_res_development_by_scenario.graphml similarity index 100% rename from bpmn/eGo_bpmn_preprocessing_res_development_by_scenario.graphml rename to documentation/bpmn/archiv/eGo_bpmn_preprocessing_res_development_by_scenario.graphml diff --git a/bpmn/archiv/eGo_osm_urban_landuse.graphml b/documentation/bpmn/archiv/eGo_osm_urban_landuse.graphml similarity index 100% rename from bpmn/archiv/eGo_osm_urban_landuse.graphml rename to documentation/bpmn/archiv/eGo_osm_urban_landuse.graphml diff --git a/bpmn/archiv/eGo_zensus_population_per_ha.graphml b/documentation/bpmn/archiv/eGo_zensus_population_per_ha.graphml similarity index 100% rename from bpmn/archiv/eGo_zensus_population_per_ha.graphml rename to documentation/bpmn/archiv/eGo_zensus_population_per_ha.graphml diff --git a/bpmn/archiv/ego_deu_loads_per_grid_district.graphml b/documentation/bpmn/archiv/ego_deu_loads_per_grid_district.graphml similarity index 100% rename from bpmn/archiv/ego_deu_loads_per_grid_district.graphml rename to documentation/bpmn/archiv/ego_deu_loads_per_grid_district.graphml diff --git a/bpmn/ego_preprocessing_bpmn.graphml b/documentation/bpmn/archiv/ego_preprocessing_bpmn.graphml similarity index 100% rename from bpmn/ego_preprocessing_bpmn.graphml rename to documentation/bpmn/archiv/ego_preprocessing_bpmn.graphml diff --git a/bpmn/archiv/ego_rea.graphml b/documentation/bpmn/archiv/ego_rea.graphml similarity index 100% rename from bpmn/archiv/ego_rea.graphml rename to documentation/bpmn/archiv/ego_rea.graphml diff --git a/bpmn/eGo_bpmn_legend_key.graphml b/documentation/bpmn/bpmn_key/bpmn_key.graphml similarity index 100% rename from bpmn/eGo_bpmn_legend_key.graphml rename to documentation/bpmn/bpmn_key/bpmn_key.graphml diff --git a/bpmn/BPMN_Palette_oep.graphml b/documentation/bpmn/bpmn_key/bpmn_palette.graphml similarity index 99% rename from bpmn/BPMN_Palette_oep.graphml rename to documentation/bpmn/bpmn_key/bpmn_palette.graphml index 28cf1bcd..4db97842 100644 --- a/bpmn/BPMN_Palette_oep.graphml +++ b/documentation/bpmn/bpmn_key/bpmn_palette.graphml @@ -1,6 +1,6 @@ - + @@ -691,8 +691,8 @@ - + @@ -717,8 +717,8 @@ - + @@ -743,8 +743,8 @@ - + @@ -769,8 +769,8 @@ - + @@ -795,8 +795,8 @@ - + @@ -821,8 +821,8 @@ - + @@ -847,8 +847,8 @@ - + @@ -873,8 +873,8 @@ - + @@ -899,8 +899,8 @@ - + @@ -925,8 +925,8 @@ - + @@ -951,8 +951,8 @@ - + @@ -977,8 +977,8 @@ - + @@ -1003,8 +1003,8 @@ - + @@ -1029,8 +1029,8 @@ - + @@ -1055,8 +1055,8 @@ - + @@ -1082,8 +1082,8 @@ - + @@ -1108,10 +1108,10 @@ + - @@ -1134,10 +1134,10 @@ + - @@ -1160,10 +1160,10 @@ + - @@ -1390,10 +1390,10 @@ + - @@ -1416,10 +1416,10 @@ + - @@ -1442,10 +1442,10 @@ + - @@ -1468,10 +1468,10 @@ + - @@ -1494,10 +1494,10 @@ + - @@ -1513,22 +1513,22 @@ Pool + + + - - - - - + + @@ -1566,10 +1566,10 @@ xls + - @@ -1585,10 +1585,10 @@ xls + - @@ -1624,10 +1624,10 @@ - + - + @@ -1650,10 +1650,10 @@ + - @@ -1669,10 +1669,10 @@ pdf + - @@ -1688,10 +1688,10 @@ xls + - @@ -1707,17 +1707,17 @@ + - + - @@ -1729,8 +1729,8 @@ + - @@ -1742,8 +1742,8 @@ + - @@ -1755,8 +1755,8 @@ + - @@ -1768,8 +1768,8 @@ + - @@ -1781,8 +1781,8 @@ + - @@ -1794,8 +1794,8 @@ + - @@ -1807,8 +1807,8 @@ + - @@ -1840,8 +1840,8 @@ + - @@ -1853,8 +1853,8 @@ + - diff --git a/bpmn/eGo_bpmn_dataprocessing.graphml b/documentation/bpmn/ego_dp_bpmn.graphml similarity index 100% rename from bpmn/eGo_bpmn_dataprocessing.graphml rename to documentation/bpmn/ego_dp_bpmn.graphml diff --git a/documentation/bpmn/ego_dp_bpmn_section_griddistrict.graphml b/documentation/bpmn/ego_dp_bpmn_section_griddistrict.graphml new file mode 100644 index 00000000..265b4aab --- /dev/null +++ b/documentation/bpmn/ego_dp_bpmn_section_griddistrict.graphml @@ -0,0 +1,550 @@ + + + + + + + + + + + + + + + + + + + + + + + eGo DataProcessing - griddistrict + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ego_dp_mv_griddistrict.sql + + + + + + + + + + + + + + + + + + ego_political_boundary_hvmv_subst_per_gem_1_mview +ego_political_boundary_hvmv_subst_per_gem_2_mview +ego_political_boundary_hvmv_subst_per_gem_3_mview +ego_grid_hvmv_substation_voronoi_mview +ego_grid_mv_griddistrict +ego_grid_mv_griddistrict_dump + + + + + + + + + + + + + + + + + + + + + + + 2 min + + + + + + + + + + + + + + + + + + + + + + model_draft.vg250_6_gem_clean_mview +model_draft.ego_grid_hvmv_substation +model_draft.ego_grid_hvmv_substation_voronoi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + political_boundary.bkg_vg250 + + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_mv_griddistrict +grid.ego_mv_griddistrict + + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_hvmv_substation +grid.ego_hvmv_substation + + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/bpmn/ego_dp_bpmn_section_loadarea.graphml b/documentation/bpmn/ego_dp_bpmn_section_loadarea.graphml new file mode 100644 index 00000000..e31e6455 --- /dev/null +++ b/documentation/bpmn/ego_dp_bpmn_section_loadarea.graphml @@ -0,0 +1,2030 @@ + + + + + + + + + + + + + + + + + + + + + + + eGo DataProcessing - substation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ego_dp_loadarea_landuse.sql + + + + + + + + + + + + + + + + + + openstreetmap.osm_deu_polygon_urban +osm_deu_polygon_urban_sector_1_residential_mview +osm_deu_polygon_urban_sector_2_retail_mview +osm_deu_polygon_urban_sector_3_industrial_mview +osm_deu_polygon_urban_sector_4_agricultural_mview + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_demand_la_zensus +model_draft.ego_demand_la_zensus_cluster +model_draft.zensus_population_per_load_area_stats_mview + + + + + + + + + + + + + + + + + + + + + + + ego_dp_loadarea_loadmelt.sql + + + + + + + + + + + + + + + + + + model_draft.ego_demand_load_collect +model_draft.ego_demand_load_collect_buffer100_mview +model_draft.ego_demand_load_melt + + + + + + + + + + + + + + + + + + + + + + + ego_dp_loadarea_loadcut_griddistrict.sql + + + + + + + + + + + + + + + + + + model_draft.ego_osm_sector_per_griddistrict_1_residential +model_draft.ego_osm_sector_per_griddistrict_2_retail +model_draft.ego_osm_sector_per_griddistrict_3_industrial +model_draft.ego_osm_sector_per_griddistrict_4_agricultural +model_draft.ego_demand_loadarea_centre_mview +model_draft.ego_demand_loadarea_smaller100m2_mview +model_draft.ego_demand_loadarea_error_noags_mview +model_draft.ego_demand_loadarea + + + + + + + + + + + + + + + + + + + + + + + 20 sec + + + + + + + + + + + + + + + + + + + + + + 30 min + + + + + + + + + + + + + + + + + + + + + + 20 min + + + + + + + + + + + + + + + + + + + + + + 30 min + + + + + + + + + + + + + + + + + + + + + + openstreetmap.osm_deu_polygon +political_bkg_vg250_1_sta_union_mview + + + + + + + + + + + + + + + + + + + + + + + social.destatis_zensus_population_per_ha_mview +model_draft.ego_demand_la_osm + + + + + + + + + + + + + + + + + + + + + + + ego_dp_loadarea_industry_consumer.sql + + + + + + + + + + + + + + + + + + model_draft.ego_landuse_industry +model_draft.ego_demand_hv_largescaleconsumer + + + + + + + + + + + + + + + + + + + + + + + demand.ego_demand_federalstate +economic.destatis_gva_per_districts +political_boundary.bkg_vg250_4_krs_mview +supply.ego_conv_powerplant +model_draft.ego_grid_ehv_substation_voronoi +model_draft.ego_grid_hvmv_substation + + + + + + + + + + + + + + + + + + + + + + + + 10 sec + + + + + + + + + + + + + + + + + + + + + + ego_dp_loadarea_loads.sql + + + + + + + + + + + + + + + + + + model_draft.ego_demand_la_osm + + + + + + + + + + + + + + + + + + + + + + + 45 min + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_demand_hv_largescaleconsumer +openstreetmap.osm_deu_polygon_urban + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_deu_loads_osm +model_draft.ego_social_zensus_load_cluster + + + + + + + + + + + + + + + + + + + + + + + ego_dp_loadarea_consumption.sql + + + + + + + + + + + + + + + + + + model_draft.ego_demand_loadarea +demand.ego_loadarea + + + + + + + + + + + + + + + + + + + + + + + 16 sec + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_demand_per_district +model_draft.ego_demand_loadarea +demand.ego_demand_federalstate + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_demand_load_melt +model_draft.ego_grid_mv_griddistrict +social.destatis_zensus_population_per_ha_mview +economic.ioer_urban_share_industrial_centroid +openstreetmap.osm_deu_polygon_urban_sector_1_residential_mview +openstreetmap.osm_deu_polygon_urban_sector_2_retail_mview +openstreetmap.osm_deu_polygon_urban_sector_3_industrial_mview +openstreetmap.osm_deu_polygon_urban_sector_4_agricultural_mview +model_draft.ego_political_boundary_bkg_vg250_6_gem_clean + + + + + + + + + + + + + + + + + + + + + + + Datenlizenz Deutschland – Namensnennung – Version 2.0 +Statistisches Bundesamt, Wiesbaden, Genesis-Online, 2016; Datenlizenz by-2-0 + + + + + + + + + + + + + + + + + + + + + + ego_dp_loadarea_census.sql + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + openstreetmap.osm_deu + + + + + + + + + + + + + + + + + economic.destatis_gva_per_districts + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + political_boundary.bkg_vg250 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + social.destatis_zensus_population_per_ha + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + Datenlizenz Deutschland – Namensnennung – Version 2.0 +Statistisches Bundesamt, Wiesbaden, Genesis-Online, 2016; Datenlizenz by-2-0 + + + + + + + + + + + + + + + + + + + + + + supply.ego_conv_powerplant + + + + + + + + + + + + + + + + + model_draft.ego_grid_ehv_substation +grid.ego_ehv_substation + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + demand.ego_demand_federalstate + + + + + + + + + + + + + + + + + model_draft.ego_grid_hvmv_substation +model_draft.ego_grid_mv_griddistrict +model_draft.ego_demand_loadarea + + + + + + + + + + + + + + + + + + + + + + + 5 min + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_data_processing_results +model_draft.ego_data_processing_results_mvgd +boundaries.bkg_vg250_statistics_mview + + + + + + + + + + + + + + + + + + + + + + + ego_dp_loadarea_statistic.sql + + + + + + + + + + + + + + + + + + ego_dp_loadarea_loadcut_voronoi.sql + + + + + + + + + + + + + + + + + + ego_dp_loadarea_peakload.py + + + + + + + + + + + + + + + + + + model_draft.ego_demand_loadarea +scenario.ego_slp_parameters + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_demand_loadarea + + + + + + + + + + + + + + + + + + + + + + + 1 h + + + + + + + + + + + + + + + + + + + + + + ego_dp_loadarea_griddistrict_results.sql + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/bpmn/ego_dp_bpmn_section_lowvoltage.graphml b/documentation/bpmn/ego_dp_bpmn_section_lowvoltage.graphml new file mode 100644 index 00000000..19a0afcf --- /dev/null +++ b/documentation/bpmn/ego_dp_bpmn_section_lowvoltage.graphml @@ -0,0 +1,913 @@ + + + + + + + + + + + + + + + + + + + + + + + eGo DataProcessing - lowvoltage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ego_dp_lv_substation.sql + + + + + + + + + + + + + + + + + + 9 min + + + + + + + + + + + + + + + + + + + + + + ego_dp_lv_substation_voronoi.sql + + + + + + + + + + + + + + + + + + 2 h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Open Data Commons Open Database License 1.0 + + + + + + + + + + + + + + + + + + + + + + ego_dp_lv_loadcut.sql + + + + + + + + + + + + + + + + + + ego_dp_lv_griddistrict.sql + + + + + + + + + + + + + + + + + + ego_dp_lv_consumption_peakload.sql + + + + + + + + + + + + + + + + + + model_draft.ego_grid_mvlv_substation + + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_demand_loadarea +model_draft.ego_grid_mv_griddistrict + + + + + + + + + + + + + + + + + + + + + + + Open Data Commons Open Database License 1.0 + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_lv_griddistrict + + + + + + + + + + + + + + + + + + + + + + + Open Data Commons Open Database License 1.0 + + + + + + + + + + + + + + + + + + + + + + 20 min + + + + + + + + + + + + + + + + + + + + + + 40 min + + + + + + + + + + + + + + + + + + + + + + 5 min + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_mvlv_substation_voronoi + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_lv_griddistrict_cut_nn_collect + + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_mvlv_substation + + + + + + + + + + + + + + + + + + + + + + + Open Data Commons Open Database License 1.0 + + + + + + + + + + + + + + + + + + + + + + + scenario.ego_slp_parameters + + + + + + + + + + + + + + + + + + + + + + + Open Data Commons Open Database License 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/bpmn/ego_dp_bpmn_section_substation.graphml b/documentation/bpmn/ego_dp_bpmn_section_substation.graphml new file mode 100644 index 00000000..3888de0e --- /dev/null +++ b/documentation/bpmn/ego_dp_bpmn_section_substation.graphml @@ -0,0 +1,1470 @@ + + + + + + + + + + + + + + + + + + + + + + + eGo DataProcessing - substation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ego_dp_substation_hvmv_voronoi.sql + + + + + + + + + + + + + + + + + + model_draft.ego_grid_hvmv_substation_dummy +model_draft.ego_grid_hvmv_substation_voronoi + + + + + + + + + + + + + + + + + + + + + + + 6 min + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_hvmv_substation + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_hvmv_substation + + + + + + + + + + + + + + + + + + + + + + + + +ego_dp_substation_hvmv.sql + + + + + + + + + + + + + + + + + + + +ego_dp_substation_ehv.sql + + + + + + + + + + + + + + + + + + 32 min + + + + + + + + + + + + + + + + + + + + + + 3 min + + + + + + + + + + + + + + + + + + + + + + openstreetmap.osm_deu_ways +openstreetmap.osm_deu_polygon +openstreetmap.osm_deu_nodes +openstreetmap.osm_deu_rels +political_boundary.bkg_vg250_1_sta_union_mview + + + + + + + + + + + + + + + + + + + + + + + openstreetmap.osm_deu_ways +openstreetmap.osm_deu_polygon +openstreetmap.osm_deu_nodes +openstreetmap.osm_deu_rels +political_bkg_vg250_1_sta_union_mview + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_ehv_substation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ego_dp_substation_otg.sql + + + + + + + + + + + + + + + + + + 1 sec + + + + + + + + + + + + + + + + + + + + + + grid.otg_ehvhv_bus_data +model_draft.ego_grid_ehv_substation +model_draft.ego_grid_hvmv_substation + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_ehv_substation +model_draft.ego_grid_hvmv_substation + + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + openstreetmap.osm_deu + + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + political_boundary.bkg_vg250 + + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_hvmv_substation +grid.ego_hvmv_substation + + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + ego_dp_substation_ehv_voronoi.sql + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_ehv_substation_voronoi + + + + + + + + + + + + + + + + + + + + + + + ? + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_ehv_substation + + + + + + + + + + + + + + + + + + + + + + + model_draft.ego_grid_ehv_substation +grid.ego_ehv_substation + + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + Open Database License (ODbL) v1.0 +© OpenStreetMap contributors + + + + + + + + + + + + + + + + + + + + + + Geodatenzugangsgesetz (GeoZG) +© GeoBasis-DE / BKG 2016 (Daten verändert) + + + + + + + + + + + + + + + + + + + + + + grid.otg_ehvhv_bus_data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bpmn/eGo_bpmn_dataprocessing_sections.graphml b/documentation/bpmn/ego_dp_bpmn_sections.graphml similarity index 75% rename from bpmn/eGo_bpmn_dataprocessing_sections.graphml rename to documentation/bpmn/ego_dp_bpmn_sections.graphml index f935449a..96caf4a3 100644 --- a/bpmn/eGo_bpmn_dataprocessing_sections.graphml +++ b/documentation/bpmn/ego_dp_bpmn_sections.graphml @@ -1,6 +1,6 @@ - + @@ -17,10 +17,10 @@ - + - eGo dataprocessing + eGo DataProcessing @@ -53,13 +53,13 @@ - + - + @@ -101,8 +101,8 @@ - STRUCTURE -& SETUP + INPUT DATA +CHECK @@ -242,7 +242,7 @@ grid.ego_ehv_substation - + @@ -266,7 +266,7 @@ grid.ego_ehv_substation - + POWERFLOW @@ -317,7 +317,7 @@ grid.ego_ehv_substation - model_draft.ego_scenario_log + model_draft.ego_scenario_input @@ -326,10 +326,10 @@ grid.ego_ehv_substation + - @@ -337,7 +337,7 @@ grid.ego_ehv_substation - + ? @@ -347,6 +347,78 @@ grid.ego_ehv_substation + + + + + + + + + + + + + + + + + grid.ego_dp_mvlv_substation +grid.ego_dp_lv_griddistrict + + + + + + + + + + + + + + + + + + + + + + + LOWVOLTAGE + + + + + + + + + + + + + + + + + + + + + + + + grid.ego_dp_mvlv_substation +grid.ego_dp_lv_griddistrict + + + + + + @@ -357,6 +429,30 @@ grid.ego_ehv_substation + + + + + + + REA + + + + + + + + + + + + + + + + + @@ -422,10 +518,10 @@ grid.ego_ehv_substation - + - + @@ -506,6 +602,60 @@ grid.ego_ehv_substation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/build_script_doc.py b/documentation/build_script_doc.py new file mode 100644 index 00000000..ac634fb4 --- /dev/null +++ b/documentation/build_script_doc.py @@ -0,0 +1,48 @@ +import re +import os + +__PATH = 'dataprocessing/sql_snippets' +__KEYS = ['description', 'copyright', 'license', 'url', 'author'] + +SPACER = ' ' + +expr = r"""\/\*\s* +(?P[\s\S]*) +__copyright__\s*=\s*"(?P.*)"\s* +__license__\s*=\s*"(?P.*)"\s* +__url__\s*=\s*"(?P.*)"\s* +__author__\s*=\s*"(?P.*)"\s* +\*\/""" + +for subdir, dirs, files in os.walk('.'): + for fi in files: + if fi.endswith('.sql'): + path = os.path.join(subdir, fi) + + # print('Processing %s ...'%path) + with open(path,'r') as f: + try: + lines='\n'.join(f.readlines()) + except Exception as e: + print('Fehler in %s - abort!'%path) + match = re.match(expr, lines) + if match: + outpath = path = os.path.join('docs', subdir, fi.replace('.sql','.rst')) + directory = os.path.dirname(outpath) + if not os.path.exists(directory): + os.makedirs(directory) + + result = {key:match.group(key) for key in __KEYS} + with open(outpath, 'w') as out: + out.write('.. AUTOGENERATED - DO NOT TOUCH!\n\n') + for key in __KEYS: + + if key == 'description': + out.write(fi+'\n'+'#'.join(['#'*len(fi)])+'\n\n' ) + out.write(result[key].replace('\n\n','\n')) + else: + out.write(key+'\n') + out.write(SPACER+result[key].replace('\n','\n'+SPACER)+'\n') + out.write('\n') + else: + print('No proper docstring in %s'%path) diff --git a/documentation/doc/Makefile b/documentation/doc/Makefile new file mode 100644 index 00000000..9117f211 --- /dev/null +++ b/documentation/doc/Makefile @@ -0,0 +1,192 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ding0.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ding0.qhc" + +applehelp: + $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp + @echo + @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." + @echo "N.B. You won't be able to view it unless you put it in" \ + "~/Library/Documentation/Help or install it in your application" \ + "bundle." + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/ding0" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ding0" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +coverage: + $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage + @echo "Testing of coverage in the sources finished, look at the " \ + "results in $(BUILDDIR)/coverage/python.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo +@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/documentation/doc/conf.py b/documentation/doc/conf.py new file mode 100644 index 00000000..6678a675 --- /dev/null +++ b/documentation/doc/conf.py @@ -0,0 +1,391 @@ +""" +This file is part of the open_eGo project open_eGo: https://openegoproject.wordpress.com + +eGo lives at github: https://github.com/openego/eGo/ +The documentation is available on RTD: https://openego.readthedocs.io""" + +__copyright__ = "Flensburg University of Applied Sciences, Europa-Universität Flensburg, Centre for Sustainable Energy Systems, DLR-Institute for Networked Energy Systems" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__author__ = "wolf_bunke" + + +# -*- coding: utf-8 -*- +# +# eGo documentation build configuration file, created by +# sphinx-quickstart on Fri Sep 29 10:55:47 2017. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os +import shlex +from unittest.mock import MagicMock +#from mock import Mock as MagicMock + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) +sys.path.insert(0, os.path.abspath('../')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.imgmath' , + 'sphinx.ext.viewcode', +# 'sphinx.ext.autosummary', +# 'sphinxcontrib.napoleon',#enable Napoleon interpreter of docstrings Sphinx v<=1.2 + 'sphinx.ext.napoleon', #enable Napoleon Sphinx v>1.3 +# 'sphinx_paramlinks',#to have links to the types of the parameters of the functions + 'numpydoc', + 'sphinxcontrib.httpdomain', # for restfull API + 'sphinxcontrib.autohttp.flask', + 'sphinx.ext.extlinks' # enables external links with a key +] + +# Napoleon settings +napoleon_google_docstring = True +napoleon_numpy_docstring = True +napoleon_include_init_with_doc = False +napoleon_include_private_with_doc = False +napoleon_include_special_with_doc = False +napoleon_use_admonition_for_examples = False +napoleon_use_admonition_for_notes = False +napoleon_use_admonition_for_references = False +napoleon_use_ivar = False +napoleon_use_param = True +napoleon_use_rtype = True +napoleon_use_keyword = False + + +# Dictionary of external links +extlinks = {'pandas':('http://pandas.pydata.org/pandas-docs/stable/api.html#%s', + 'pandas.'), + 'sqlalchemy':('http://docs.sqlalchemy.org/en/latest/orm/session_basics.html%s', + 'SQLAlchemy session object'), + 'shapely':('http://toblerity.org/shapely/manual.html#%s', + 'Shapely object') +} + +# test oedb implementation +def rstjinja(app, docname, source): + """ + Render our pages as a jinja template for fancy templating goodness. + """ + # Make sure we're outputting HTML + if app.builder.format != 'html': + return + src = source[0] + rendered = app.builder.templates.render_string( + src, app.config.html_context + ) + source[0] = rendered + +def setup(app): + app.connect("source-read", rstjinja) + +# add https +httpexample_scheme = 'https' + + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'open_eGo Data Processing' +copyright = u'2015-2018, open_eGo-Team' +author = u'open_eGo-Team' + + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = 'v0.3.0' +# The full version, including alpha/beta/rc tags. +release = 'V0.3.0dev' + + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build', 'whatsnew'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + + +# Fix import error of modules which depend on C modules (mock out the imports for these modules) +# see http://read-the-docs.readthedocs.io/en/latest/faq.html#i-get-import-errors-on-libraries-that-depend-on-c-modules + + +if 'READTHEDOCS' in os.environ: + class Mock(MagicMock): + @classmethod + def __getattr__(cls, name): + return MagicMock() + + MOCK_MODULES = ['ding0', 'ding0.results', 'shapely'] + sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES) + + MOCK_MODULES = ['libgeos', 'geos', 'libgeos_c', 'geos_c','libgeos_c.so.1', + 'libgeos_c.so', 'shapely', 'geoalchemy2', 'geoalchemy2.shape '] + + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# html_theme = 'alabaster' + +import sphinx_rtd_theme +html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'eGodoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', + +# Latex figure (float) alignment +#'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'open_eGo_Data_Processing.tex', u'open_eGo Documentation', + u'open_eGo-Team', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'data_processing', u'eGo Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'data_processing', u'eGo Documentation', + author, 'data_processing', 'Titel', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'python': ('https://docs.python.org/3', None)} + +# Numbered figures +numfig = True + +autodoc_member_order = 'bysource' diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_census.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_census.rst new file mode 100644 index 00000000..d424d46e --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_census.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_census.sql +########################## + +Loads from Census 2011 +Include Census 2011 population per ha. +Identify population in OSM loads. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_consumption.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_consumption.rst new file mode 100644 index 00000000..53fded9b --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_consumption.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_consumption.sql +############################### + +Allocate consumption to Loadareas + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu, Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_griddistrict_results.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_griddistrict_results.rst new file mode 100644 index 00000000..33742afb --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_griddistrict_results.rst @@ -0,0 +1,28 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_griddistrict_results.sql +######################################## + +Results for MV Griddistrict +After finishing the Loadareas we can aggregate the results for the MV Griddistricts: +Area of MV Griddistrict. +Municipality (Gemeinden). +Municipality parts (Gemeinde-Einzelteile). +Municipality types. +Population results. +Loadarea results (Area, Free area, Share). +Consumption results. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_industry_consumer.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_industry_consumer.rst new file mode 100644 index 00000000..d484512b --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_industry_consumer.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_industry_consumer.sql +##################################### + +OSM Industry consumer +Calculate specific electricity consumption per million Euro GVA for each federal state. +Calculate the electricity consumption for each industry polygon. +Identify corresponding bus for large scale consumer (lsc) with the help of ehv-voronoi. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu, Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_landuse.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_landuse.rst new file mode 100644 index 00000000..a9b9e42b --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_landuse.rst @@ -0,0 +1,27 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_landuse.sql +########################### + +OSM landuse sectors +Extract landuse areas from OpenStreetMap. +Cut the landuse with German boders (vg250) and make valid geometries. +Divide into 4 landuse sectors: +1. Residential +2. Retail +3. Industrial +4. Agricultural + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_loadcut_griddistrict.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_loadcut_griddistrict.rst new file mode 100644 index 00000000..526bcb9b --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_loadcut_griddistrict.rst @@ -0,0 +1,26 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_loadcut_griddistrict.sql +######################################## + +Cut Loadarea with MV Griddistrict +Identify and exclude Loadarea smaller than 100m². +Generate Centre of Loadareas with Centroid and PointOnSurface. +Calculate population from Census 2011. +Cut all 4 OSM sectors with MV Griddistricts. +Calculate statistics like NUTS and AGS code. +Check for Loadareas without AGS code. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_loadcut_voronoi.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_loadcut_voronoi.rst new file mode 100644 index 00000000..85ffae5b --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_loadcut_voronoi.rst @@ -0,0 +1,27 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_loadcut_voronoi.sql +################################### + +Cut Loadarea with MV Voronoi cells +Identify and exclude Loadarea smaller than 100m². +Generate Centre of Loadareas with Centroid and PointOnSurface. +Calculate population from Census 2011. +Cut all 4 OSM sectors with MV Griddistricts. +Calculate statistics like NUTS and AGS code. +Check for Loadareas without AGS code. + + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_loadmelt.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_loadmelt.rst new file mode 100644 index 00000000..e55da606 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_loadmelt.rst @@ -0,0 +1,26 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_loadmelt.sql +############################ + +Melt loads from OSM landuse and Census 2011 +Collect loads from both sources. +Buffer collected loads with with 100m. +Unbuffer the collection with 100m. +Validate the melted geometries. +Fix geometries with error. +Check again for errors. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_loads.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_loads.rst new file mode 100644 index 00000000..229e97bb --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_loads.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_loads.sql +######################### + +OSM Loads from landuse +Excludes large scale consumer. +Buffer OSM urban sectors with 100m +Unbuffer buffer with -100m + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_peakload.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_peakload.rst new file mode 100644 index 00000000..b832bd7a --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_peakload.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_peakload.sql +############################ + +Peak loads per Loadarea +Uses SLP parameters per sectors. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + gplssm, Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_loadarea_statistic.rst b/documentation/doc/dataprocessing/ego_dp_loadarea_statistic.rst new file mode 100644 index 00000000..29993bd3 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_loadarea_statistic.rst @@ -0,0 +1,24 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_loadarea_statistic.sql +############################# + +Results and statistics for eGoDP data +Substation, Loadarea, MV Griddistricts and Consumption. +MV Griddistrict types. +Municipality (Gemeinden). +Calculate statistics for BKG vg250. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_lv_consumption_peakload.rst b/documentation/doc/dataprocessing/ego_dp_lv_consumption_peakload.rst new file mode 100644 index 00000000..ea3bcbfb --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_lv_consumption_peakload.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_lv_consumption_peakload.sql +################################## + +LV Consumption and Peakload +Update LV Griddistrict table by +a. sectoral consumption in each LV Griddistrict +b. sectoral peak load in each LV Griddistrict + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + gplssm + diff --git a/documentation/doc/dataprocessing/ego_dp_lv_griddistrict.rst b/documentation/doc/dataprocessing/ego_dp_lv_griddistrict.rst new file mode 100644 index 00000000..07dc4657 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_lv_griddistrict.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_lv_griddistrict.sql +########################## + +LV Griddistrict +Create LV Griddistrict from MVLV Substation. +Generate OSM landuse per sectors. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee, jong42 + diff --git a/documentation/doc/dataprocessing/ego_dp_lv_loadcut.rst b/documentation/doc/dataprocessing/ego_dp_lv_loadcut.rst new file mode 100644 index 00000000..3f23c55a --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_lv_loadcut.rst @@ -0,0 +1,26 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_lv_loadcut.sql +##################### + +LV Loadcut +Cut Loadarea with MVLV Substation Voronoi. +Select parts with one LV Substation. +Select parts with no LV Substation. +Select parts with more than one substation. +Combine parts with Next Neighbor. +Collect and union all parts. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + jong42, Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_lv_substation.rst b/documentation/doc/dataprocessing/ego_dp_lv_substation.rst new file mode 100644 index 00000000..b5d74689 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_lv_substation.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_lv_substation.sql +######################## + +MVLV Substation (ONT) +Create a lattice (regular fishnet grid) with 360m. +Create MVLV Substation from lattice centroid. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee, jong42 + diff --git a/documentation/doc/dataprocessing/ego_dp_lv_substation_voronoi.rst b/documentation/doc/dataprocessing/ego_dp_lv_substation_voronoi.rst new file mode 100644 index 00000000..c04f3807 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_lv_substation_voronoi.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_lv_substation_voronoi.sql +################################ + +MVLV Substation Voronoi +Voronoi polygons with Eucldean distance (manhattan distance would be better but not available in sql). + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee, jong42 + diff --git a/documentation/doc/dataprocessing/ego_dp_mv_griddistrict.rst b/documentation/doc/dataprocessing/ego_dp_mv_griddistrict.rst new file mode 100644 index 00000000..90ba56a1 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_mv_griddistrict.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_mv_griddistrict.sql +########################## + +MV GridDistricts +Generate MV GridDistricts from municipalities and Voronoi cells. +Each HVMV Substation receives one catchment area. +Detailed description can be found in Hülk et. al. 2017. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_generator.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_generator.rst new file mode 100644 index 00000000..c2c866d7 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_generator.rst @@ -0,0 +1,32 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_assignment_generator.sql +######################################### + +Generators which were assigned to a specific substation prior to this script need to be transformed to a data structure +suitable for powerflow calculation with tool developed and used in the open_eGo project. The following script transforms +data from the powerplant mviews and adds some parameters according to the characteristics of the generators. +To reduce the data volumn in the final table structure (see ego_dp_powerflow_hv_setup.sql) the generators are clustered +according to their source, installed capacity, weather point and substation they are assigned to. Here a new and unique +aggregate-ID (aggr_id) is assigned. +In an interims stage all generators are converted to a format suitable for powerflow flow calculation seperately. This data +can be accessed in table `model_draft.ego_supply_pf_generator_single `_. + + +Information on generators which are assigned to a specific substation are transformed to a data structure which is suitable +for PyPSA. This script creates the scenarios +'Status Quo', 'NEP 2035' and 'eGo 100' in the hv powerflow schema. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu, Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_load.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_load.rst new file mode 100644 index 00000000..7967830a --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_load.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_assignment_load.sql +#################################### + +Similar to generators in the previous script the data on loads are converted and clustered to fit the data structure +needed for powerflow calculations. The electricity demand of small scale consumer and industrial large scale consumer is +considered. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_otgid.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_otgid.rst new file mode 100644 index 00000000..f2e133a0 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_otgid.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_assignment_otgid.sql +##################################### + +This scripts updates tables containing `renewable power plants `_ and `conventional power plants `_ with information on the otg_id of substations which the generator is assigned to. +The otg_id and subst_id of the substations are matched in tables containing information on `HV/MV substations `_ and `EHV substations `_. + +Additionally the otg_id of offshore wind turbines is updated manually. The geometry of offshore wind power plants is matched with polygons representing a catchment area per relevant offshore grid connection point. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_storage.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_storage.rst new file mode 100644 index 00000000..508aa87f --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_storage.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_assignment_storage.sql +####################################### + +Equivalent to the assignment of generators in this script storages are converted and clustered for all three scenarios +considered in open_eGo. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu", "lukasol + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_unid.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_unid.rst new file mode 100644 index 00000000..7bdd76c0 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_assignment_unid.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_assignment_unid.sql +#################################### + +All generators from the `conventional `_ and `renewable `_ power plant list are brought together in a `central generator list `_. +A unified id (un_id) is assigned to those generators listed. Information on the un_id is then added to the conventional and renewable power plant lists. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_create_pp_mview.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_create_pp_mview.rst new file mode 100644 index 00000000..f7174db9 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_create_pp_mview.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_create_pp_mview.sql +#################################### + +This script creates discrete materialized views (mview) for conventional and renewable power plants per scenario, +resulting in six different mviews for the three main scenarios considered in open_eGo. + + +copyright + Europa-Universität Flensburg - ZNES + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + wolfbunke + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_electrical_neighbour.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_electrical_neighbour.rst new file mode 100644 index 00000000..0bfa8836 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_electrical_neighbour.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_electrical_neighbour.sql +######################################### + +The electricity grid model extracted from osmTGmod is limited to the German territory. This script adds border crossing +lines and corresponding buses and transformers to all neighbouring countries which have a direct electrical connection +to the German grid. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_grid_future_scenarios.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_grid_future_scenarios.rst new file mode 100644 index 00000000..1a15f1c8 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_grid_future_scenarios.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_grid_future_scenarios.sql +########################################## + +The grid model which is used as an input for powerflow calculations and optimization in open_eGo is the same in all +three scenarios 'SQ', 'NEP 2035' and 'eGo100'. +In the following script the grid model created for the 'SQ' scenario in the previous scripts is duplicated for the remaining +two future scenarios + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_hv_setup.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_hv_setup.rst new file mode 100644 index 00000000..8b6bc2fb --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_hv_setup.rst @@ -0,0 +1,37 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_hv_setup.sql +############################# + +This script creates all tables which are needed for hv-powerflow calculations. The characteristics of those tables +follow the structure of PyPSA's input data. + +The following tables are created: +`model_draft.ego_grid_pf_hv_scenario_settings `_ +`model_draft.ego_grid_pf_hv_source `_ +`model_draft.ego_grid_pf_hv_bus `_ +`model_draft.ego_grid_pf_hv_busmap `_ +`model_draft.ego_grid_pf_hv_generator `_ +`model_draft.ego_grid_pf_hv_line `_ +`model_draft.ego_grid_pf_hv_load `_ +`model_draft.ego_grid_pf_hv_storage `_ +`model_draft.ego_grid_pf_hv_temp_resolution `_ +`model_draft.ego_grid_pf_hv_transformer `_ +`model_draft.ego_grid_pf_hv_bus_v_mag_set `_ +`model_draft.ego_grid_pf_hv_generator_pq_set `_ +`model_draft.ego_grid_pf_hv_load_pq_set `_ +`model_draft.ego_grid_pf_hv_storage_pq_set `_ + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + mariusves, IlkaCu, ulfmueller, Ludee, s3pp + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_lopf_data.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_lopf_data.rst new file mode 100644 index 00000000..69aad801 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_lopf_data.rst @@ -0,0 +1,27 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_lopf_data.sql +############################## + +Missing parameters necessary for calculating a linear optimal power flow (LOPF) are added to the existing data. This +includes marginal costs per technology, which is composed of specific operating cost, fuel costs and CO2 costs +according to renpass_gis, NEP 2014 scenario. +In addition p_max_pu is set for all generators with variable dispatch based on p_max_pu = p_set / p_nom. + +A further section of the script is used to insert extendable battery and hydrogen storages to all substations in the +grid model. These have a initial installed capacity p_nom=0, which can be extended when executing an optimization +(by calculating a LOPF). + + +copyright + Europa-Universität Flensburg, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + wolfbunke, lukasol + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_osmtgmod_to_pypsa.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_osmtgmod_to_pypsa.rst new file mode 100644 index 00000000..9c923a30 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_osmtgmod_to_pypsa.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_osmtgmod_to_pypsa.sql +###################################### + +`osmTGmod `_ provides a model of the German EHV and HV grid based on OpenStreetMap. +This script extracts `bus `_ and `branch data `_ provided by osmTGmod +and inserts the grid model into the corresponding powerflow tables. +Additionally some (electrical) properties for transformers are adjusted or added. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + ulfmueller, IlkaCu, mariusves + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_timeseries_demand.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_timeseries_demand.rst new file mode 100644 index 00000000..8834f697 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_timeseries_demand.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_timeseries_demand.sql +###################################### + +Aggregated load time series for neighbouring countries are based on rennpassG!S results and are added to the corresponding +`powerflow table `_. The load is equivalent +in all three scenarios. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + ulfmueller, wolfbunke + diff --git a/documentation/doc/dataprocessing/ego_dp_powerflow_voronoi_weatherpoint.rst b/documentation/doc/dataprocessing/ego_dp_powerflow_voronoi_weatherpoint.rst new file mode 100644 index 00000000..f68ef8d8 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_powerflow_voronoi_weatherpoint.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_powerflow_voronoi_weatherpoint.sql +######################################### + +voronoi with climatepoints + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu, Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_structure_input_verification.rst b/documentation/doc/dataprocessing/ego_dp_structure_input_verification.rst new file mode 100644 index 00000000..1b5864f2 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_structure_input_verification.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_structure_input_verification.sql +####################################### + +Input verification (eGoPP) +Check the necessary input tables from eGo PreProcessing. +Return version of input tables. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_substation_ehv.rst b/documentation/doc/dataprocessing/ego_dp_substation_ehv.rst new file mode 100644 index 00000000..50383628 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_substation_ehv.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_substation_ehv.sql +######################### + +EHV Substation +Abstract EHV Substations of the extra high voltage level from OSM. +This script abstracts substations of the extra high voltage level from openstreetmap data. + + +copyright + DLR Institute for Networked Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + lukasol, C. Matke, Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_substation_ehv_voronoi.rst b/documentation/doc/dataprocessing/ego_dp_substation_ehv_voronoi.rst new file mode 100644 index 00000000..2be0dee6 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_substation_ehv_voronoi.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_substation_ehv_voronoi.sql +################################# + +EHV Substation Voronoi +Voronoi polygons with eucldean distance on EHV Substation. +Manhattan distance would be better but not available in sql. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu, Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_substation_hvmv.rst b/documentation/doc/dataprocessing/ego_dp_substation_hvmv.rst new file mode 100644 index 00000000..357ad0ef --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_substation_hvmv.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_substation_hvmv.sql +########################## + +HVMV Substation +Abstract HVMV Substations of the high voltage level from OSM. +This script abstracts substations of the high voltage level from openstreetmap data. +All substations that are relevant transition points between the transmission and distribution grid are identified, irrelevant ones are disregarded. + + +copyright + DLR Institute for Networked Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + lukasol, C. Matke, Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_substation_hvmv_voronoi.rst b/documentation/doc/dataprocessing/ego_dp_substation_hvmv_voronoi.rst new file mode 100644 index 00000000..87790a98 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_substation_hvmv_voronoi.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_substation_hvmv_voronoi.sql +################################## + +HVMV Substation Voronoi +Voronoi polygons with eucldean distance on HVMV Substation. +Manhattan distance would be better but not available in sql. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_substation_id_to_generator.rst b/documentation/doc/dataprocessing/ego_dp_substation_id_to_generator.rst new file mode 100644 index 00000000..e0ebabfe --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_substation_id_to_generator.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_substation_id_to_generator.sql +##################################### + +Substation ID to Generator +All powerplants (Conventional and Renewable) receive the corresponding Substation ID. +Either the HVMV Substation ID (= MV Griddistrict ID) or the EHV Substaion ID. +Identify corresponding subst_id for all power plants according to their voltage_level and geometry. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu + diff --git a/documentation/doc/dataprocessing/ego_dp_substation_otg.rst b/documentation/doc/dataprocessing/ego_dp_substation_otg.rst new file mode 100644 index 00000000..00417999 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_substation_otg.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_substation_otg.sql +######################### + +Substation OTG-ID +Script to assign osmTGmod-id (OTG) to substation. + + +copyright + DLR Institute for Networked Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + lukasol, C. Matke + diff --git a/documentation/doc/dataprocessing/ego_dp_versioning.rst b/documentation/doc/dataprocessing/ego_dp_versioning.rst new file mode 100644 index 00000000..a0cb0ff5 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_versioning.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_versioning.sql +##################### + +eGo Data Processing result data versioning +Copy a version from model_draft to OEP schema + + +copyright + © Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/ego_dp_versioning_mviews.rst b/documentation/doc/dataprocessing/ego_dp_versioning_mviews.rst new file mode 100644 index 00000000..6bf97470 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_versioning_mviews.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_versioning_mviews.sql +############################ + +eGo Data Processing result data versioning +Copy a version of mvies from model_draft to OEP schema + + +copyright + Europa-Universität Flensburg + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + wolfbunke + diff --git a/documentation/doc/dataprocessing/ego_dp_versioning_overview.rst b/documentation/doc/dataprocessing/ego_dp_versioning_overview.rst new file mode 100644 index 00000000..6b61ef34 --- /dev/null +++ b/documentation/doc/dataprocessing/ego_dp_versioning_overview.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_versioning_overview.sql +############################## + +eGo Data Processing overview +Check all versioned tables + + +copyright + © Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/functions/function_query_metadata.rst b/documentation/doc/dataprocessing/functions/function_query_metadata.rst new file mode 100644 index 00000000..c714d70c --- /dev/null +++ b/documentation/doc/dataprocessing/functions/function_query_metadata.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +function_query_metadata.sql +########################### + +Function select important parameters of a table and it's metadata + +NOT WORKING + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/modules.rst b/documentation/doc/dataprocessing/modules.rst new file mode 100644 index 00000000..749b341c --- /dev/null +++ b/documentation/doc/dataprocessing/modules.rst @@ -0,0 +1,109 @@ +=========================== +Data Processing SQL-Scripts +=========================== + + +Overview of scripts +=================== + + +dataprocessing/sql_snippets/ scripts +------------------------------------ + +.. toctree:: + :titlesonly: + :maxdepth: 7 + + ego_dp_loadarea_census + ego_dp_loadarea_consumption + ego_dp_loadarea_griddistrict_results + ego_dp_loadarea_industry_consumer + ego_dp_loadarea_landuse + ego_dp_loadarea_loadcut_griddistrict + ego_dp_loadarea_loadcut_voronoi + ego_dp_loadarea_loadmelt + ego_dp_loadarea_loads + ego_dp_loadarea_peakload + ego_dp_loadarea_statistic + ego_dp_lv_consumption_peakload + ego_dp_lv_griddistrict + ego_dp_lv_peakload + ego_dp_lv_substation + ego_dp_lv_substation_voronoi + ego_dp_mv_griddistrict + ego_dp_powerflow_assignment_generator + ego_dp_powerflow_assignment_load + ego_dp_powerflow_assignment_otgid + ego_dp_powerflow_assignment_storage + ego_dp_powerflow_assignment_unid + ego_dp_powerflow_create_pp_mview + ego_dp_powerflow_electrical_neighbour + ego_dp_powerflow_grid_future_scenarios + ego_dp_powerflow_hv_setup + ego_dp_powerflow_lopf_data + ego_dp_powerflow_osmtgmod_to_pypsa + ego_dp_powerflow_timeseries_demand + ego_dp_powerflow_timeseries_generator + ego_dp_powerflow_voronoi_weatherpoint + ego_dp_structure_input_verification + ego_dp_substation_ehv + ego_dp_substation_ehv_voronoi + ego_dp_substation_hvmv + ego_dp_substation_hvmv_voronoi + ego_dp_substation_id_to_generator + ego_dp_substation_otg + ego_dp_supply_dp_powerflow_create_pp_mview + ego_dp_vacuum_full + ego_dp_versioning + ego_dp_versioning_mviews + ego_dp_versioning_overview + + + + +dataprocessing/sql_snippets/functions scripts +--------------------------------------------- + +.. toctree:: + :titlesonly: + :maxdepth: 7 + + functions/func_delete_double_rows + functions/func_drop_empty_table + functions/function_copy_comment_column + functions/function_copy_comment_mview + functions/function_copy_comment_table + functions/function_ego_scenario_log + functions/function_grant_oeuser + functions/function_query_metadata + functions/function_st_Buffer_Meters + functions/function_st_createfishnet + functions/function_st_relation_geometry + functions/function_st_safe_intersection + functions/function_utmzone + + + + + +dataprocessing/sql_snippets/rea scripts +--------------------------------------- + +.. toctree:: + :titlesonly: + :maxdepth: 7 + + rea/ego_dp_conv + rea/ego_dp_lattice_500m + rea/ego_dp_lattice_50m + rea/ego_dp_rea_lattice_per_area_500m + rea/ego_dp_rea_lattice_per_area_50m + rea/ego_dp_rea_m1 + rea/ego_dp_rea_m2 + rea/ego_dp_rea_m3 + rea/ego_dp_rea_m4 + rea/ego_dp_rea_m5 + rea/ego_dp_rea_results + rea/ego_dp_rea_setup + rea/ego_dp_rea_wpa_per_mvgd + rea/ego_dp_wpa diff --git a/documentation/doc/dataprocessing/rea/ego_dp_conv.rst b/documentation/doc/dataprocessing/rea/ego_dp_conv.rst new file mode 100644 index 00000000..b63b4a38 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_conv.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_conv.sql +############### + +Skript to allocate conventional power plants to loadareas + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_lattice_500m.rst b/documentation/doc/dataprocessing/rea/ego_dp_lattice_500m.rst new file mode 100644 index 00000000..dde38f48 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_lattice_500m.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_lattice_500m.sql +####################### + +Lattice (regular point grid) with 500m +Lattice on bounding box of Germany. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_lattice_50m.rst b/documentation/doc/dataprocessing/rea/ego_dp_lattice_50m.rst new file mode 100644 index 00000000..d6f70f10 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_lattice_50m.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_lattice_50m.sql +###################### + +Lattice (regular point grid) with 50m +Lattice on bounding box of Germany. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_rea_lattice_per_area_500m.rst b/documentation/doc/dataprocessing/rea/ego_dp_rea_lattice_per_area_500m.rst new file mode 100644 index 00000000..0ca8de81 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_rea_lattice_per_area_500m.rst @@ -0,0 +1,25 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_rea_lattice_per_area_500m.sql +#################################### + +Prepare 500m lattice +Lattice on bounding box of Germany with 500m per area: +wpa - points inside wind potential area +la - points inside loadarea +x - points inside wind potential area and loadarea +out - points outside area + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_rea_lattice_per_area_50m.rst b/documentation/doc/dataprocessing/rea/ego_dp_rea_lattice_per_area_50m.rst new file mode 100644 index 00000000..55e55860 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_rea_lattice_per_area_50m.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_rea_lattice_per_area_50m.sql +################################### + +Prepare 500m lattice +Lattice on bounding box of Germany with 50m per area: +la - points inside loadarea + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_rea_m1.rst b/documentation/doc/dataprocessing/rea/ego_dp_rea_m1.rst new file mode 100644 index 00000000..c7801363 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_rea_m1.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_rea_m1.sql +################# + +M1 biomass and solar to OSM agricultural +Allocates "biomass" & (renewable) "gas" to OSM agricultural areas. +The rest could not be allocated, consider in M4. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_rea_m2.rst b/documentation/doc/dataprocessing/rea/ego_dp_rea_m2.rst new file mode 100644 index 00000000..c1cc1d76 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_rea_m2.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_rea_m2.sql +################# + +M2 wind farms +Allocates "wind" turbines with voltage level 4 to WPA as wind farms. +The rest could not be allocated, consider in M3. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_rea_m3.rst b/documentation/doc/dataprocessing/rea/ego_dp_rea_m3.rst new file mode 100644 index 00000000..6b7f0089 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_rea_m3.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_rea_m3.sql +################# + +M3 wind turbines to WPA +Allocates "wind" turbines with voltage levels "5" & "6" to WPA. +Also considers rest of M2. +The rest could not be allocated, consider in M4. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_rea_m4.rst b/documentation/doc/dataprocessing/rea/ego_dp_rea_m4.rst new file mode 100644 index 00000000..d84fbf92 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_rea_m4.rst @@ -0,0 +1,24 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_rea_m4.sql +################# + +M4 other and rest +Allocates "wind" with voltage levels "5" & "6" to WPA. +"solar ground" & "wind" ohne voltage & Rest M1-1 & Rest M1-2 & Rest M3. +Also considers rest of M1-1, M1-2 and M3. +There should be no rest! + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_rea_m5.rst b/documentation/doc/dataprocessing/rea/ego_dp_rea_m5.rst new file mode 100644 index 00000000..5cd763c9 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_rea_m5.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_rea_m5.sql +################# + +M5 LV to Loadarea +Allocate "solar" with voltage levels "6" & "7" to Loadarea. +There should be no rest! + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_rea_results.rst b/documentation/doc/dataprocessing/rea/ego_dp_rea_results.rst new file mode 100644 index 00000000..874f9a99 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_rea_results.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_rea_results.sql +###################### + +Results and statistics for REA + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_rea_setup.rst b/documentation/doc/dataprocessing/rea/ego_dp_rea_setup.rst new file mode 100644 index 00000000..2cbc5934 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_rea_setup.rst @@ -0,0 +1,24 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_rea_setup.sql +#################### + +Setup tables for REA +Skript to allocate decentralized renewable power plants (dea). +Methods base on technology and voltage level. +Allocate DEA outside of Germany to next HVMV Substation. +Generate OSM farmyards. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_rea_wpa_per_mvgd.rst b/documentation/doc/dataprocessing/rea/ego_dp_rea_wpa_per_mvgd.rst new file mode 100644 index 00000000..cba699f1 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_rea_wpa_per_mvgd.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_rea_wpa_per_mvgd.sql +########################### + +Wind potential area (WPA) per MV-Griddistrict +Cut WPA with MV-Griddistrict and make valid geometries. + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/dataprocessing/rea/ego_dp_wpa.rst b/documentation/doc/dataprocessing/rea/ego_dp_wpa.rst new file mode 100644 index 00000000..5ffe44a0 --- /dev/null +++ b/documentation/doc/dataprocessing/rea/ego_dp_wpa.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_wpa.sql +############## + +Skript to allocate decentralized renewable power plants (dea) +Methods base on technology and voltage level +Uses different lattice from setup_ego_wpa_per_grid_district.sql + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/getting_started.rst b/documentation/doc/getting_started.rst new file mode 100644 index 00000000..dac9389a --- /dev/null +++ b/documentation/doc/getting_started.rst @@ -0,0 +1,43 @@ +=============== +Getting Started +=============== + + +Overview +******** + +- How to install +- How to run the dataprocessing package + +Installation +============ + +Installation of latest release + +``` +(sudo) pip3 install dataprocessing +``` + +Installation (of developer version) via pip on linux systems as follows + +``` +sudo pip3 install -e +``` + +Troubleshooting + +On Windows +*********** + +1. __Problem__: Installation of required package shapely fails. __Solution__: Install pre-build + wheel from [here](http://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely) + + +Run +==== + + You can run data processing by calling command-line script + + ``` + ~$ ego_data_processing + ``` diff --git a/documentation/doc/index.rst b/documentation/doc/index.rst new file mode 100644 index 00000000..07a13ab9 --- /dev/null +++ b/documentation/doc/index.rst @@ -0,0 +1,52 @@ +Welcome to Data processing documentation of open_eGo +==================================================== + + + +.. image:: https://openegoproject.files.wordpress.com/2017/02/open_ego_logo_breit.png?w=400 + :scale: 100% + + +[Add text here] + + + +.. toctree:: + :maxdepth: 7 + :titlesonly: + :hidden: + + getting_started + openego + scripts + scenario + + whatsnew + + + + +******* +LICENSE +******* +Copyright (C) 2015-2018 open_eGo-Team +(C) Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems +(C) Europa-Universität Flensburg, Centre for Sustainable Energy Systems +(C) Reiner Lemoine Institut +(C) DLR Institute for Networked Energy Systems" + + +This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. +You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/. + + + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/documentation/doc/make.bat b/documentation/doc/make.bat new file mode 100644 index 00000000..ea3430fb --- /dev/null +++ b/documentation/doc/make.bat @@ -0,0 +1,263 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=_build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . +set I18NSPHINXOPTS=%SPHINXOPTS% . +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + echo. coverage to run coverage check of the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + + +REM Check if sphinx-build is available and fallback to Python version if any +%SPHINXBUILD% 2> nul +if errorlevel 9009 goto sphinx_python +goto sphinx_ok + +:sphinx_python + +set SPHINXBUILD=python -m sphinx.__init__ +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +:sphinx_ok + + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\ding0.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\ding0.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +if "%1" == "coverage" ( + %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage + if errorlevel 1 exit /b 1 + echo. + echo.Testing of coverage in the sources finished, look at the ^ +results in %BUILDDIR%/coverage/python.txt. + goto end +) + +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + +:end diff --git a/documentation/doc/openego.rst b/documentation/doc/openego.rst new file mode 100644 index 00000000..3fd1f5b1 --- /dev/null +++ b/documentation/doc/openego.rst @@ -0,0 +1,70 @@ +==================== +Open_eGo the project +==================== + + +Open Electricity Grid Optimization +================================== + +The project open_eGo aims to develop a transparent, inter-grid-level operating +grid planning tool to investigate economic viable grid expansion scenarios +considering alternative flexibility options such as storages or redispatch. + +Uniform grid planning is required for a successful energy transition. This +involves the management of the German electricity grid with more than 800 +different network operators and the resulting wide range of interests that +sometimes stand at odds with the national economic objectives of the energy +transition. However, there is currently no suitable grid planning tool that +is able to consider optimum national economic use of the various flexibility +options at the different levels. The current challenges of planning for grid +expansion associated with the energy transition are answered by open_eGo. + +In energy system analysis, models and input data are often handled restrictively. +Such a lack of transparency impedes reproducibility and consequently also a +proper interpretation of the results. Thus, in open_eGo we publish all our code +on github under the Affero General Public License Version 3. +The data we use as input, but also all our results will be published on the +OpenEnergy Platform, in most cases under an Open Database License Version 1. + +For the open_eGo project several python packages are developt which are feeded by +the input data of the data processing. + +ego.io +****** +SQLAlchemy Interface to the OpenEnergy database (oedb).OEDB table ORM objects are +defined here and small helpers for io tasks are contained. `Learn more here. `_ + + +Ding0 +***** +The DIstribution Network GeneratOr (Ding0) is a tool to generate synthetic +medium and low voltage power distribution grids based on open (or at least +accessible) data. `Learn more here. `_ + + +eDisGo +****** +The python package eDisGo provides a toolbox for analysis and optimization +of distribution grids. `Learn more here. `_ + +eTraGo +****** +The python package eTraGo provides a toolbox for Optimization of flexibility +options for transmission grids based on PyPSA. `Learn more here. `_ + + +eGo +*** + +The python package eGo is a toolbox and application which connects and integrates +the tools eTraGo and eDisGo in order to calcualte the overall economic optimum. +`Learn more here. `_ + + + +.. only:: html + + .. raw:: html + +

The text on this website is published under CC-BY 4.0.

+

Supported by BMWi

diff --git a/documentation/doc/preprocessing/boundaries/ego_pp_gn250_metadata.rst b/documentation/doc/preprocessing/boundaries/ego_pp_gn250_metadata.rst new file mode 100644 index 00000000..48d6efb4 --- /dev/null +++ b/documentation/doc/preprocessing/boundaries/ego_pp_gn250_metadata.rst @@ -0,0 +1,21 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_pp_gn250_metadata.sql +######################### + +Metadata for gn250 tables +Geographische Namen 1:250 000 - GN250 + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/preprocessing/boundaries/ego_pp_vg250_metadata.rst b/documentation/doc/preprocessing/boundaries/ego_pp_vg250_metadata.rst new file mode 100644 index 00000000..33060a92 --- /dev/null +++ b/documentation/doc/preprocessing/boundaries/ego_pp_vg250_metadata.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_pp_vg250_metadata.sql +######################### + +Metadata for vg250 tables + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/preprocessing/ego_dp_res_rea_by_scenario.rst b/documentation/doc/preprocessing/ego_dp_res_rea_by_scenario.rst new file mode 100644 index 00000000..10c56fd5 --- /dev/null +++ b/documentation/doc/preprocessing/ego_dp_res_rea_by_scenario.rst @@ -0,0 +1,43 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_res_rea_by_scenario.sql +############################## + +SQL Script that prepare and insert single renewable power plant data by a given +scenario in order to create a high resulution allocation renewable energy expansion. + +For the project open_eGo and the tools eTraGo, eDisGo and eGo the scenarios are +named 'Status Quo' (2015), 'NEP 2035', 'eGo 100'. Learn more about the scenario here +`scenarios here `_. + +This script is divided into two parts: + +Part I +****** +- Development of new renewable power plants by NEP 2035 scenario data + +Part II +******* +- Development of new renewable power plants by ego 100% scenario data + + +Methodology +----------- +Both parts of the script work more or less with the same Methodology of an expansion +and allocation of renewable energy plants. A full documentation of the used +Methodology of the Renewable allocation `can be found here `_. + + + +copyright + Europa-Universität Flensburg, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + wolfbunke + diff --git a/documentation/doc/preprocessing/ego_dp_structure_boundaries_vg250.rst b/documentation/doc/preprocessing/ego_dp_structure_boundaries_vg250.rst new file mode 100644 index 00000000..cadbcfa3 --- /dev/null +++ b/documentation/doc/preprocessing/ego_dp_structure_boundaries_vg250.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_structure_boundaries_vg250.sql +##################################### + +Setup borders +Inputs are german administrative borders (boundaries.bkg_vg250) +Create mviews with transformed CRS (EPSG:3035) and corrected geometries +Municipalities / Gemeinden are fragmented and cleaned from ringholes (bkg_vg250_6_gem_clean) + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/preprocessing/ego_dp_structure_census.rst b/documentation/doc/preprocessing/ego_dp_structure_census.rst new file mode 100644 index 00000000..a0f7fa59 --- /dev/null +++ b/documentation/doc/preprocessing/ego_dp_structure_census.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_structure_census.sql +########################### + +Result tables for eGoDP + +WARNING: It drops the table and deletes old entries when executed! + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee, IlkaCu + diff --git a/documentation/doc/preprocessing/ego_dp_structure_osm_landuse.rst b/documentation/doc/preprocessing/ego_dp_structure_osm_landuse.rst new file mode 100644 index 00000000..bdac2200 --- /dev/null +++ b/documentation/doc/preprocessing/ego_dp_structure_osm_landuse.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_structure_osm_landuse.sql +################################ + +analyse OSM landuse data + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/preprocessing/ego_dp_structure_scenariolog.rst b/documentation/doc/preprocessing/ego_dp_structure_scenariolog.rst new file mode 100644 index 00000000..8c2612d6 --- /dev/null +++ b/documentation/doc/preprocessing/ego_dp_structure_scenariolog.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_structure_scenariolog.sql +################################ + +Setup scenario log table +Creates a table to get inserts from other processed tables + +WARNING: It drops the table and deletes old entries when executed! + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/preprocessing/ego_dp_structure_versioning.rst b/documentation/doc/preprocessing/ego_dp_structure_versioning.rst new file mode 100644 index 00000000..1d955efd --- /dev/null +++ b/documentation/doc/preprocessing/ego_dp_structure_versioning.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_dp_structure_versioning.sql +############################### + +Result tables for eGoDP + +WARNING: It drops the table and deletes old entries when executed! + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee, IlkaCu + diff --git a/documentation/doc/preprocessing/ego_nep_2015_scenario_capacities.rst b/documentation/doc/preprocessing/ego_nep_2015_scenario_capacities.rst new file mode 100644 index 00000000..a3c16a5f --- /dev/null +++ b/documentation/doc/preprocessing/ego_nep_2015_scenario_capacities.rst @@ -0,0 +1,23 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_nep_2015_scenario_capacities.sql +#################################### + +Create and setup the table model_draft.ego_nep_2015_scenario_capacities for +electrical scenario capacities of the Netzentwicklungsplan 2015, erster Entwurf +per federal state in Germany. + + + +copyright + Europa-Universität Flensburg, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + wolfbunke + diff --git a/documentation/doc/preprocessing/ego_pre_slp_parameters.rst b/documentation/doc/preprocessing/ego_pre_slp_parameters.rst new file mode 100644 index 00000000..e26c4b68 --- /dev/null +++ b/documentation/doc/preprocessing/ego_pre_slp_parameters.rst @@ -0,0 +1,22 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_pre_slp_parameters.sql +########################## + +Create table with assumptions and parameters on standard load profiles (SLP) + +WARNING: It drops the table and deletes old entries when executed! + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + gplssm + diff --git a/documentation/doc/preprocessing/ego_pre_voltage_level.rst b/documentation/doc/preprocessing/ego_pre_voltage_level.rst new file mode 100644 index 00000000..e23ee410 --- /dev/null +++ b/documentation/doc/preprocessing/ego_pre_voltage_level.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_pre_voltage_level.sql +######################### + +Set or adjust voltage_level according to installed capacity and technology of power plants. + + +copyright + Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + IlkaCu + diff --git a/documentation/doc/preprocessing/modules.rst b/documentation/doc/preprocessing/modules.rst new file mode 100644 index 00000000..c1e01014 --- /dev/null +++ b/documentation/doc/preprocessing/modules.rst @@ -0,0 +1,72 @@ +========================= +Preprocessing SQL-Scripts +========================= + + + + +Overview of scripts +=================== + + +preprocessing/sql_snippets/ scripts +----------------------------------- +.. toctree:: + :titlesonly: + :maxdepth: 7 + + destatis_gva_per_district + ego_demand_federalstate + ego_dp_conv_by_scenario + ego_dp_preprocessing_conv_powerplant + ego_dp_preprocessing_res_powerplant + ego_dp_res_rea_by_scenario + ego_dp_structure_boundaries_vg250 + ego_dp_structure_census + ego_dp_structure_osm_landuse + ego_dp_structure_scenariolog + ego_dp_structure_versioning + ego_nep_2015_scenario_capacities + ego_pre_slp_parameters + ego_pre_voltage_level + oedb_setup_schema_structure + opsd_powerdata + supply_ego_renewable_power_plants_germany + + +preprocessing/sql_snippets/boundaries scripts +--------------------------------------------- + +.. toctree:: + :titlesonly: + :maxdepth: 7 + + boundaries/ego_pp_gn250_import + boundaries/ego_pp_gn250_metadata + boundaries/ego_pp_vg250_import + boundaries/ego_pp_vg250_metadata + boundaries/ego_pp_vg250_mview + +preprocessing/sql_snippets/openstreetmap scripts +------------------------------------------ + +.. toctree:: + :titlesonly: + :maxdepth: 7 + + openstreetmap/ego_pp_osm_deu_import + openstreetmap/ego_pp_osm_deu_metadata + openstreetmap/ego_pp_osm_line_street_mview + openstreetmap/ego_pp_osm_polygon_building_mview + + + +preprocessing/sql_snippets/society scripts +------------------------------------------ + +.. toctree:: + :titlesonly: + :maxdepth: 7 + + society/ego_pp_destatis_zensus_import + society/ego_pp_destatis_zensus_metadata diff --git a/documentation/doc/preprocessing/oedb_setup_schema_structure.rst b/documentation/doc/preprocessing/oedb_setup_schema_structure.rst new file mode 100644 index 00000000..b264d5f3 --- /dev/null +++ b/documentation/doc/preprocessing/oedb_setup_schema_structure.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +oedb_setup_schema_structure.sql +############################### + +Setup the OpenEnergy Database (oedb) schema structure + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/preprocessing/openstreetmap/ego_pp_osm_line_street_mview.rst b/documentation/doc/preprocessing/openstreetmap/ego_pp_osm_line_street_mview.rst new file mode 100644 index 00000000..0baba1fa --- /dev/null +++ b/documentation/doc/preprocessing/openstreetmap/ego_pp_osm_line_street_mview.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_pp_osm_line_street_mview.sql +################################ + +Extracted OSM streets from line + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + jong42, Ludee + diff --git a/documentation/doc/preprocessing/society/ego_pp_destatis_zensus_import.rst b/documentation/doc/preprocessing/society/ego_pp_destatis_zensus_import.rst new file mode 100644 index 00000000..d0f01143 --- /dev/null +++ b/documentation/doc/preprocessing/society/ego_pp_destatis_zensus_import.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_pp_destatis_zensus_import.sql +################################# + +Import DESTATIS zensus 2011 table + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/preprocessing/society/ego_pp_destatis_zensus_metadata.rst b/documentation/doc/preprocessing/society/ego_pp_destatis_zensus_metadata.rst new file mode 100644 index 00000000..b1c4954a --- /dev/null +++ b/documentation/doc/preprocessing/society/ego_pp_destatis_zensus_metadata.rst @@ -0,0 +1,20 @@ +.. AUTOGENERATED - DO NOT TOUCH! + +ego_pp_destatis_zensus_metadata.sql +################################### + +Import DESTATIS zensus 2011 table + + +copyright + Reiner Lemoine Institut + +license + GNU Affero General Public License Version 3 (AGPL-3.0) + +url + https://github.com/openego/data_processing/blob/master/LICENSE + +author + Ludee + diff --git a/documentation/doc/scenario.rst b/documentation/doc/scenario.rst new file mode 100644 index 00000000..75b38cc4 --- /dev/null +++ b/documentation/doc/scenario.rst @@ -0,0 +1,63 @@ +================== +Scenario framework +================== + + + + +****************** +open_eGo Scenarios +****************** + + + +Import Scenario data as CSV +.. csv-table:: Overview of eGo Scenarios + :file: https://raw.githubusercontent.com/openego/.... + :delim: ; + :header-rows: 1 + :widths: 5, 1, 1, 5 + :stub-columns: 0 + + + + + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + open_eGo Scenario definition + + + + + + + +*********** +Methodology +*********** + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + Methodology + + + + + +********** +References +********** + +.. [NEP2015] Übertragungsnetzbetreiber Deutschland, Netzentwicklungsplan + Strom 2025, Version 2015, 1. Entwurf, 2015. https://www.netzentwicklungsplan.de/sites/default/files/paragraphs-files/NEP_2025_1_Entwurf_Teil1_0_0.pdf + +.. [coastdat-2] coastDat-2 Hindcast model http://www.coastdat.de/data/index.php.en + +.. [FlEnS] Wolf-Dieter Bunke Martin Söthe Marion Christ Cord Kaldemeyer + *(Fl)ensburg (En)ergy (S)cenarios - open_eGo Scenarios for 2014/2035/2050*. + https://osf.io/bpf36/ diff --git a/documentation/doc/scenario/ego_scenarios.rst b/documentation/doc/scenario/ego_scenarios.rst new file mode 100644 index 00000000..aa219aae --- /dev/null +++ b/documentation/doc/scenario/ego_scenarios.rst @@ -0,0 +1,58 @@ +================== +open_eGo Scenarios +================== + +For the project open_eGo been three scenarios choosen in order to + + + + +********** +Status Quo +********** + + + +.. include:: https://raw.githubusercontent.com/znes/FlEnS/dev/open_eGo/SQ/README.rst + +.. raw:: rst + :file: https://raw.githubusercontent.com/znes/FlEnS/dev/open_eGo/SQ/README.rst + + + + +******** +NEP 2035 +******** + +[NEP2015] + + +Scenario definition of renpassG!S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. include:: https://raw.githubusercontent.com/znes/FlEnS/master/open_eGo/NEP_2035/README.rst + + + + +******** +eGo 100 +******** + + + + + +********** +References +********** + +.. [NEP2015] Übertragungsnetzbetreiber Deutschland, Netzentwicklungsplan + Strom 2025, Version 2015, 1. Entwurf, 2015. https://www.netzentwicklungsplan.de/sites/default/files/paragraphs-files/NEP_2025_1_Entwurf_Teil1_0_0.pdf + +.. [coastdat-2] coastDat-2 Hindcast model http://www.coastdat.de/data/index.php.en + +.. [FlEnS] Wolf-Dieter Bunke Martin Söthe Marion Christ Cord Kaldemeyer + *(Fl)ensburg (En)ergy (S)cenarios - open_eGo Scenarios for 2014/2035/2050*. + https://osf.io/bpf36/ diff --git a/documentation/doc/scenario/global_assumption.rst b/documentation/doc/scenario/global_assumption.rst new file mode 100644 index 00000000..fcadea32 --- /dev/null +++ b/documentation/doc/scenario/global_assumption.rst @@ -0,0 +1,10 @@ +================= +Global assumption +================= + + + +Weater year +=========== + All scenarios using the reanalysis weater data of coastDat-2 Hindcast data model + from the Helmholtz-Zentrum Geesthacht (HZG). diff --git a/documentation/doc/scenario/load.rst b/documentation/doc/scenario/load.rst new file mode 100644 index 00000000..ea62db62 --- /dev/null +++ b/documentation/doc/scenario/load.rst @@ -0,0 +1,3 @@ +==== +Load +==== diff --git a/documentation/doc/scenario/methodology.rst b/documentation/doc/scenario/methodology.rst new file mode 100644 index 00000000..bd0d7e84 --- /dev/null +++ b/documentation/doc/scenario/methodology.rst @@ -0,0 +1,18 @@ +============= +Methodologies +============= + +[Intro] + + + + + + + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + Methodologies and Assumptions for Renewables + Methodologies and Assumptions for Load diff --git a/documentation/doc/scenario/renewables.rst b/documentation/doc/scenario/renewables.rst new file mode 100644 index 00000000..3f187530 --- /dev/null +++ b/documentation/doc/scenario/renewables.rst @@ -0,0 +1,50 @@ +======================================== +Methodologies of Renewable Energy Plants +======================================== + +[Intro] + +******************** +Renewable allocation +******************** + +The Methodology of the expansion and allocation of renewable energy plants is +done in two parts. The first part is the developent and expansion of renewable +power palnts by a scenario input of installed capacities. The allocation based on +the spacial level of municipalities. The second part allocated the surplus of +power plants power plants on a high spacial resultion by white areas and other +Polygon objects (see XXX). + + + +Expansion of power plants by technology +======================================= + + +Wind onshore +------------ + Text + +Wind offshore +------------- + text + +Solar +----- + text + +Hydro Power +----------- + run of river and reservoir + + +Pumped Storage +-------------- + +Biomass +------- + text + +geothermal +---------- + text diff --git a/documentation/doc/scripts.rst b/documentation/doc/scripts.rst new file mode 100644 index 00000000..69edfd62 --- /dev/null +++ b/documentation/doc/scripts.rst @@ -0,0 +1,40 @@ +======================= +Data processing scripts +======================= + + +Data processing +=============== + +SQL-Scripts +----------- + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + Dataprocessing + + +Python-Scripts +-------------- + +[use sphinx doc strings] + + +Preprocessing +============= + +SQL-Scripts +----------- +.. toctree:: + :maxdepth: 1 + :titlesonly: + + Preprocessing + + +Python-Scripts +-------------- + +[use sphinx doc strings] diff --git a/documentation/doc/whatsnew.rst b/documentation/doc/whatsnew.rst new file mode 100644 index 00000000..1af94460 --- /dev/null +++ b/documentation/doc/whatsnew.rst @@ -0,0 +1,13 @@ +What's New +~~~~~~~~~~ + +See what's new as per release! + +.. contents:: `Releases` + :depth: 1 + :local: + :backlinks: top + + +.. include:: whatsnew/v0-3-0.rst +.. include:: whatsnew/v0-3-1.rst diff --git a/documentation/doc/whatsnew/v0-3-0.rst b/documentation/doc/whatsnew/v0-3-0.rst new file mode 100644 index 00000000..7f206623 --- /dev/null +++ b/documentation/doc/whatsnew/v0-3-0.rst @@ -0,0 +1,24 @@ +Release v0.3.0 (December 18, 2017) +++++++++++++++++++++++++++++++++++ + +[Description] + + + +Added features +-------------- + +* + + +Bug fixes +--------- + +* + + +Other changes +------------- + +* + diff --git a/documentation/doc/whatsnew/v0-3-1.rst b/documentation/doc/whatsnew/v0-3-1.rst new file mode 100644 index 00000000..5ea36af9 --- /dev/null +++ b/documentation/doc/whatsnew/v0-3-1.rst @@ -0,0 +1,24 @@ +Release v0.3.1 (April XX, 2018) ++++++++++++++++++++++++++++++++ + +[Description] + + + +Added features +-------------- + +* + + +Bug fixes +--------- + +* + + +Other changes +------------- + +* change use of geom (original) to rea_geom_new +* ... diff --git a/documentation/requirements.txt b/documentation/requirements.txt new file mode 100644 index 00000000..b7a36882 --- /dev/null +++ b/documentation/requirements.txt @@ -0,0 +1,8 @@ +# Packages for read the docs +# Using single requirments for docs, see: +# https://github.com/rtfd/readthedocs.org/issues/2070 +sphinx_rtd_theme +numpy == 1.12.1 +numpydoc == 0.7.0 +sphinxcontrib-httpdomain +aiohttp_jinja2 diff --git a/preprocessing/sql_snippets/ego_demand_federalstate.sql b/preprocessing/sql_snippets/ego_demand_federalstate.sql new file mode 100644 index 00000000..3a5e62f7 --- /dev/null +++ b/preprocessing/sql_snippets/ego_demand_federalstate.sql @@ -0,0 +1,129 @@ +/* +Setup for table demand.ego_demand_federalstate + +__copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "IlkaCu" + +*/ + + + +-- CREATE TABLE demand.ego_demand_federalstate +-- ( +-- eu_code character varying(7) NOT NULL, +-- federal_states character varying NOT NULL, +-- elec_consumption_households double precision NOT NULL, +-- elec_consumption_industry double precision NOT NULL, +-- elec_consumption_tertiary_sector double precision NOT NULL, ‐‐ Commercial, trading, public buildings etc. +-- PRIMARY KEY (eu_code) +-- ) +-- ; + +CREATE TABLE demand.ego_demand_federalstate AS + SELECT * FROM orig_ego_consumption.lak_consumption_per_federalstate; + +COMMENT ON TABLE demand.ego_demand_federalstate IS +'{ +"Name": "Electricity consumption per federal state in Germany", +"Source": [{ + "Name": "Länderarbeitskreis Energiebilanzen", + "URL": "http://www.lak-energiebilanzen.de/seiten/energiebilanzenLaender.cfm" }, + { + "Name": "Statistisches Landesamt Baden-Württemberg", + "URL": "http://www.lak-energiebilanzen.de/seiten/download/Archiv%20Bilanzen/Baden-W%C3%BCrttemberg/2011/Energiebilanz%20BadenW%C3%BCrttemberg2011.pdf" }, + { + "Name": "Amt für Statistik Berlin-Brandenburg", + "URL": "http://www.lak-energiebilanzen.de/seiten/download/Archiv%20Bilanzen/Berlin/2011/Energiebilanz%20Berlin%202011.pdf" }, + { + "Name": "Amt für Statistik Berlin-Brandenburg", + "URL": "http://www.lak-energiebilanzen.de/seiten/download/Archiv%20Bilanzen/Brandenburg/2011/Energiebilanz%20Brandenburg%202011.pdf" }, + { + "Name": "Statistisches Landesamt Bremen", + "URL": "http://www.lak-energiebilanzen.de/seiten/download/Archiv%20Bilanzen/Bremen/2011/Energiebilanz%20Bremen%202011.pdf" }, + { + "Name": "Statistisches Amt für Hamburg und Schleswig-Holstein", + "URL": "www.lak-energiebilanzen.de/seiten/download/Archiv Bilanzen/Hamburg/2011/Energiebilanz Hamburg 2011.pdf" }, + { + "Name": "Statistisches Amt für Hamburg und Schleswig-Holstein", + "URL": "http://www.lak-energiebilanzen.de/seiten/download/Archiv%20Bilanzen/Schleswig-Holstein/2011/Energiebilanz%20SchleswigHolstein%202011.pdf" }, + { + "Name": "Statistisches Landesamt Rheinland-Pfalz", + "URL": "http://www.lak-energiebilanzen.de/seiten/download/Archiv%20Bilanzen/Rheinland-Pfalz/2011/Energiebilanz%20RheinlandPfalz%202011.pdf" }, + { + "Name": "Statistisches Amt Saarland", + "URL": "http://www.lak-energiebilanzen.de/seiten/download/Archiv%20Bilanzen/Saarland/2011/Energiebilanz%20Saarland%202011.pdf" }, + { + "Name": "Statistisches Landesamt Sachsen", + "URL": "http://www.lak-energiebilanzen.de/seiten/download/Archiv%20Bilanzen/Sachsen/2011/Energiebilanz%20Sachsen%202011.pdf" }, + { + "Name": "Bayerisches Landesamt für Statistik und Datenverarbeitung", + "URL": "http://www.stmwi.bayern.de/fileadmin/user_upload/stmwivt/Themen/Energie_und_Rohstoffe/Dokumente_und_Cover/Energiebilanz/2014/B-03_bilanzjo_mgh_2014-03-07.pdf" }, + { + "Name": "Hessisches Statistisches Landesamt", + "URL": "http://www.statistik-hessen.de/publikationen/download/277/index.html" }, + { + "Name": "Statistisches Amt Mecklenburg-Vorpommern", + "URL": "https://www.destatis.de/GPStatistik/servlets/MCRFileNodeServlet/MVHeft_derivate_00000168/E453_2011_00a.pdf;jsessionid=CD300CD3A06FF85FDEA864FF4D91D880" }, + { + "Name": "Niedersächsisches Ministerium für Umwelt, Energie und Klimaschutz", + "URL": "http://www.umwelt.niedersachsen.de/energie/daten/co2bilanzen/niedersaechsische-energie--und-co2-bilanzen-2009-6900.html" }, + { + "Name": "Information und Technik Nordrhein-Westfalen", + "URL": "https://webshop.it.nrw.de/gratis/E449%20201100.pdf" }, + { + "Name": "Statistisches Landesamt Sachsen-Anhalt", + "URL": "http://www.stala.sachsen-anhalt.de/download/stat_berichte/6E402_j_2011.pdf" }, + { + "Name": "Thüringer Landesamt für Statistik", + "URL": "http://www.statistik.thueringen.de/webshop/pdf/2011/05402_2011_00.pdf" }, + { + "Name": "Statistisches Bundesamt, Wiesbaden, Genesis-Online, Datenlizenz by-2-0.", + "URL": "https://ergebnisse.zensus2011.de/" }], + +"Reference date": "2011", +"Date of collection": "November 2015", +"Original file": "...", +"Spatial resolution": ["Germany"], +"Description": ["Electricity consumption of the sectors households, industry and tertiary sector (including others) for the German federal states in 2011"], +"Column": [ + {"Name": "eu_code", + "Description": "Nuts code for federal state", + "Unit": "" }, + {"Name": "federal_states", + "Description": "Name of federal state in Germany", + "Unit": "" }, + {"Name": "elec_consumption_housholds", + "Description": "Annual electricity consumption in the household sector", + "Unit": "GWh" }, + {"Name": "elec_consumption_industry", + "Description": "Annual electricity consumption in the industrial sector", + "Unit": "GWh" }, + {"Name": "elec_consumption_tertiary_sector", + "Description": "Annual electricity consumption in the tertiary sector including public sector", + "Unit": "GWh" }, + {"Name": "population", + "Description": "Inhabitants per federal state", + "Unit": "" }, + {"Name": "elec_consumption_households_per_person", + "Description": "Electricity consumption of household sector per inhabitant", + "Unit": "GWh" }], +"Changes":[ + {"Name": "Ilka Cussmann", + "Mail": "ilka.cussmann@hs-flensburg.de", + "Date": "24.10.2016", + "Comment": "Add json-string" }, + + {"Name": "Ilka Cussmann", + "Mail": "ilka.cussmann@hs-flensburg.de", + "Date": "01.02.2017", + "Comment": "Add licence" }, + ], +"ToDo": [""], +"Licence": [" + "Name": "Open Database License (ODbL) v1.0", + "URL": "http://opendatacommons.org/licenses/odbl/1.0/", + "Copyright": "Flensburg University of Applied Sciences""], +"Instructions for proper use": [""] +}'; diff --git a/preprocessing/sql_snippets/ego_dp_conv_by_scenario.sql b/preprocessing/sql_snippets/ego_dp_conv_by_scenario.sql index ee6b07a0..caee4ef1 100644 --- a/preprocessing/sql_snippets/ego_dp_conv_by_scenario.sql +++ b/preprocessing/sql_snippets/ego_dp_conv_by_scenario.sql @@ -1,31 +1,14 @@ /* - SQL Script which prepare and insert a conventional power plant data list by scenario -for the project open_eGo and the tools eTraGo and eDisGo. +for the project open_eGo and the tools eTraGo and eDisGo. And insert Power plants by +NEP 2035 scenario data set. + __copyright__ = "Europa-Universität Flensburg - ZNES" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" __url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" __author__ = "wolfbunke" - - -Notes: ------- - - Part II: - Power plants by NEP 2035 scenario data - Part III: - Power plants by eGo 100 scenario data - -Documentation: --------------- - flags: - repowering : old unit get an update of this electrical_capacity (plus or minus) - commissioning: New unit by a scenario assumption - decommissioning: decommissioning of status quo units by a scenario assumption - constantly: existing plant for status quo or other scenarios - */ diff --git a/preprocessing/sql_snippets/ego_dp_preprocessing_conv_powerplant.sql b/preprocessing/sql_snippets/ego_dp_preprocessing_conv_powerplant.sql index bda614b0..534cc132 100644 --- a/preprocessing/sql_snippets/ego_dp_preprocessing_conv_powerplant.sql +++ b/preprocessing/sql_snippets/ego_dp_preprocessing_conv_powerplant.sql @@ -1,5 +1,8 @@ /* -Rectifies incorrect or implausible records in power plant list and adjusts it for further use +This script rectifies incorrect or implausible records in power plant list of the BNetzA +and adjusts it for further use. The results ends up in table model_draft.ego_dp_supply_conv_powerplant +and supply.ego_dp_conv_powerplant. + __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/preprocessing/sql_snippets/ego_dp_preprocessing_res_powerplant.sql b/preprocessing/sql_snippets/ego_dp_preprocessing_res_powerplant.sql index 5dc08db1..ed5db82b 100644 --- a/preprocessing/sql_snippets/ego_dp_preprocessing_res_powerplant.sql +++ b/preprocessing/sql_snippets/ego_dp_preprocessing_res_powerplant.sql @@ -1,5 +1,7 @@ /* -Set up status quo data and create standardized table of all scenarios and rectifies incorrect or implausible records in power plant list and adjusts it for further use +This script set up status quo data and create standardized table of all scenarios +and rectifies incorrect or implausible records in power plant list and adjusts +it for further use. __copyright__ = "Flensburg University of Applied Sciences, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/preprocessing/sql_snippets/ego_dp_res_rea_by_scenario.sql b/preprocessing/sql_snippets/ego_dp_res_rea_by_scenario.sql index 61379943..4024d2eb 100644 --- a/preprocessing/sql_snippets/ego_dp_res_rea_by_scenario.sql +++ b/preprocessing/sql_snippets/ego_dp_res_rea_by_scenario.sql @@ -1,40 +1,39 @@ -/* -SQL Script which prepare and insert a renewable power plant data list by scenario -for the project open_eGo and the tools eTraGo and eDisGo. - -__copyright__ = "Europa-Universität Flensburg - ZNES" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "wolfbunke" - -Notes: ------- - This script is divided into two parts: - - Part II: - Development of new renewable power plants by NEP 2035 scenario data - Part III: - Development of new renewable power plants by ego 100% scenario data - - -Documentation: --------------- - - flags: - repowering : old unit get an update of this electrical_capacity (plus or minus) - commissioning: New unit by a scenario assumption - decommissioning: decommissioning of status quo units by a scenario assumption - constantly: existing plant of status quo or other scenarios - - Scenario Names: - 'Status Quo' - 'NEP 2035' - 'eGo 100' +/* +SQL Script that prepare and insert single renewable power plant data by a given +scenario in order to create a high resulution allocation renewable energy expansion. + +For the project open_eGo and the tools eTraGo, eDisGo and eGo the scenarios are +named 'Status Quo' (2015), 'NEP 2035', 'eGo 100'. Learn more about the scenario here +`scenarios here `_. + +This script is divided into two parts: + +Part I +****** +- Development of new renewable power plants by NEP 2035 scenario data + +Part II +******* +- Development of new renewable power plants by ego 100% scenario data + + +Methodology +----------- +Both parts of the script work more or less with the same Methodology of an expansion +and allocation of renewable energy plants. A full documentation of the used +Methodology of the Renewable allocation `can be found here `_. + + +__copyright__ = "Europa-Universität Flensburg, Centre for Sustainable Energy Systems" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "wolfbunke" */ + -------------------------------------------------------------------------------- -- Part II --- Develop renewable allocation by generation type, voltage level +-- Develop renewable allocation by generation type, voltage level -- and municipality. Scenarios: NEP 2035 -------------------------------------------------------------------------------- --- @@ -43,9 +42,9 @@ Documentation: -- DELETE FROM model_draft.ego_dp_supply_res_powerplant WHERE scenario in('NEP 2035','eGo 100'); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_small_chp_plant_germany','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_small_chp_plant_germany','ego_db_res_rea_by_scenario.sql',' '); -Insert into model_draft.ego_dp_supply_res_powerplant +Insert into model_draft.ego_dp_supply_res_powerplant SELECT 'v0.3.0'::text as preversion, b.max +row_number() over (ORDER BY id) as id, @@ -72,7 +71,7 @@ Insert into model_draft.ego_dp_supply_res_powerplant Null as power_plant_id, 'chp_small' as source, comment, - ST_Transform(geom,3035) as geom, + ST_Transform(geom,3035) as geom, Null as subst_id, Null as otg_id, Null as un_id, @@ -85,8 +84,8 @@ Insert into model_draft.ego_dp_supply_res_powerplant Null as rea_geom_new, 'NEP 2035'::text as scenario, 'commissioning'::text as flag, - NULL as nuts - FROM + NULL as nuts + FROM model_draft.ego_small_chp_plant_germany, ( SELECT max(id) as max @@ -98,12 +97,12 @@ Insert into model_draft.ego_dp_supply_res_powerplant -- set nuts UPDATE model_draft.ego_dp_supply_res_powerplant as upt set nuts = regions.nuts -from +from boundaries.bkg_vg250_2_lan_nuts_view as regions WHERE ST_Intersects(regions.geom, upt.geom) AND upt.nuts is NULL; ---- Use Buffer 1 km for units at the German Border +--- Use Buffer 1 km for units at the German Border UPDATE model_draft.ego_dp_supply_res_powerplant as upt set nuts = regions.nuts::varchar FROM @@ -113,7 +112,7 @@ AND upt.nuts IS NULL AND generation_subtype not in ('wind_offshore'); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); --- -- Biomass power plants @@ -160,7 +159,7 @@ CREATE TABLE model_draft.ego_supply_res_biomass_2035_temp AS NULL::text as rea_geom_new, 'NEP 2035'::text as scenario, 'repowering'::text as flag, - nuts + nuts FROM model_draft.ego_dp_supply_res_powerplant WHERE @@ -185,9 +184,9 @@ set comment = upt.comment || ', Method ProxToNow Biomass', scenario = 'NEP 2035' , flag = 'repowering', preversion ='v0.3.0'::text, - electrical_capacity = CASE WHEN scn.capacity = 0 THEN 0 - ELSE (upt.electrical_capacity/ cap_sum)*scn.capacity*1000 - END + electrical_capacity = CASE WHEN scn.capacity = 0 THEN 0 + ELSE (upt.electrical_capacity/ cap_sum)*scn.capacity*1000 + END FROM model_draft.ego_supply_scenario_capacities as scn, (SELECT nuts, sum(electrical_capacity) as cap_sum @@ -195,32 +194,32 @@ FROM WHERE generation_type = 'biomass' Group by nuts ) count -WHERE scn.nuts = count.nuts -AND scn.nuts = upt.nuts +WHERE scn.nuts = count.nuts +AND scn.nuts = upt.nuts AND upt.nuts = count.nuts -AND scn.generation_type = 'biomass' +AND scn.generation_type = 'biomass' AND scn.scenario_name = 'NEP 2035' ; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) --- SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); +-- SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); --- Insert ego_dp_supply_res_powerplant +-- Insert ego_dp_supply_res_powerplant Insert into model_draft.ego_dp_supply_res_powerplant SELECT * FROM model_draft.ego_supply_res_biomass_2035_temp WHERE scenario = 'NEP 2035'; - ---- + +--- -- Geothermal Method -- No changes set status quo --- ---- +--- -- Hydro / run_of_river --- Insert large Hydro reservoir and run_of_river units from status Quo +-- Insert large Hydro reservoir and run_of_river units from status Quo -- because of missing entries in NEP KW list -- No changes of voltage level or additional units --- @@ -233,7 +232,7 @@ set generation_type = 'hydro', */ -- ego scenario log (version,io,schema_name,table_name,script_name,comment) --- SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); +-- SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); -- NEP 2035 Hydro DROP TABLE IF EXISTS model_draft.ego_supply_res_hydro_2035_temp CASCADE; @@ -277,12 +276,12 @@ CREATE TABLE model_draft.ego_supply_res_hydro_2035_temp AS NULL::text as rea_geom_new, 'NEP 2035'::text as scenario, 'repowering'::text as flag, - nuts + nuts FROM model_draft.ego_dp_supply_res_powerplant WHERE generation_type = 'run_of_river' - AND scenario = 'Status Quo'; + AND scenario = 'Status Quo'; -- create index GIST (geom) CREATE INDEX ego_supply_res_hydro_2035_temp_geom_idx @@ -291,28 +290,28 @@ CREATE INDEX ego_supply_res_hydro_2035_temp_geom_idx -- grant (oeuser) ALTER TABLE model_draft.ego_supply_res_hydro_2035_temp OWNER TO oeuser; -INSERT INTO model_draft.ego_supply_res_hydro_2035_temp (preversion,id,start_up_date,electrical_capacity, generation_type, +INSERT INTO model_draft.ego_supply_res_hydro_2035_temp (preversion,id,start_up_date,electrical_capacity, generation_type, generation_subtype, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id,un_id,scenario,flag) SELECT 'v0.3.0'::text as preversion, - b.max +row_number() over (ORDER BY id) as id, - '2034-12-31 00:00:00' as start_up_date, + b.max +row_number() over (ORDER BY id) as id, + '2034-12-31 00:00:00' as start_up_date, a.capacity *1000 as electrical_capacity, -- MW -> kW - a.fuel as generation_type, - 'hydro' as generation_subtype, - a.lon, - a.lat, - a.voltage_level, - a.network_node, - 'OPSD powerplant list' as source, - 'add Hydro plants from conventional list' as comment, - ST_Transform(a.geom,3035) as geom, - a.voltage AS voltage_level_var, - a.subst_id, - a.otg_id, + a.fuel as generation_type, + 'hydro' as generation_subtype, + a.lon, + a.lat, + a.voltage_level, + a.network_node, + 'OPSD powerplant list' as source, + 'add Hydro plants from conventional list' as comment, + ST_Transform(a.geom,3035) as geom, + a.voltage AS voltage_level_var, + a.subst_id, + a.otg_id, a.un_id, 'NEP 2035'::text as scenario, - 'repowering'::text as flag + 'repowering'::text as flag FROM model_draft.ego_dp_supply_conv_powerplant a, ( @@ -326,7 +325,7 @@ AND scenario ='Status Quo'; -- set nuts UPDATE model_draft.ego_supply_res_hydro_2035_temp as upt set nuts = regions.nuts -from +from boundaries.bkg_vg250_2_lan_nuts_view as regions WHERE ST_Intersects(regions.geom, upt.geom) and UPT.NUTS IS NULL; @@ -334,14 +333,14 @@ and UPT.NUTS IS NULL; --- Fill empty nuts values by buffer UPDATE model_draft.ego_supply_res_hydro_2035_temp as upt set nuts = regions.nuts -from +from boundaries.bkg_vg250_2_lan_nuts_view as regions WHERE ST_Intersects(St_Buffer(upt.geom,100), regions.geom) AND upt.nuts IS NULL AND generation_type in ('reservoir','hydro','run_of_river'); -- -UPDATE model_draft.ego_supply_res_hydro_2035_temp +UPDATE model_draft.ego_supply_res_hydro_2035_temp set nuts = 'AT' WHERE nuts IS NULL AND generation_type in ('reservoir','hydro','run_of_river'); -- @@ -350,23 +349,23 @@ set comment = upt.comment || ', Method ProxToNow Hydro', source = 'NEP 2015 B2035', flag = 'repowering', electrical_capacity = CASE WHEN scn.capacity = 0 THEN upt.electrical_capacity - ELSE (upt.electrical_capacity/ cap_sum)*scn.capacity*1000 - END + ELSE (upt.electrical_capacity/ cap_sum)*scn.capacity*1000 + END FROM model_draft.ego_supply_scenario_capacities as scn, (SELECT nuts, sum(electrical_capacity) as cap_sum FROM model_draft.ego_supply_res_hydro_2035_temp WHERE generation_type in ('reservoir','hydro','run_of_river') - AND scenario = 'NEP 2035' + AND scenario = 'NEP 2035' Group by nuts ) count -WHERE scn.nuts = count.nuts -AND scn.nuts = upt.nuts +WHERE scn.nuts = count.nuts +AND scn.nuts = upt.nuts AND upt.nuts = count.nuts AND scn.generation_type in ('reservoir','hydro','run_of_river') AND upt.generation_type in ('reservoir','hydro','run_of_river'); --- Insert ego_dp_supply_res_powerplant +-- Insert ego_dp_supply_res_powerplant Insert into model_draft.ego_dp_supply_res_powerplant SELECT * @@ -374,11 +373,11 @@ Insert into model_draft.ego_dp_supply_res_powerplant model_draft.ego_supply_res_hydro_2035_temp WHERE scenario = 'NEP 2035'; ---- +--- -- Photovoltaic Method -- /* -Step 0 Get Nuts id per Unit +Step 0 Get Nuts id per Unit Step 1 capacity per municipality -> Pro2Now Status Quo Step 2 Structure of PV ( voltage level, size, Number) @@ -389,13 +388,13 @@ Step 4 add volatage level, etc. -- Nep 2035 Photovoltaic -- Step 0 DROP TABLE IF EXISTS model_draft.ego_supply_res_pv_to_region_temp CASCADE; -CREATE TABLE model_draft.ego_supply_res_pv_to_region_temp +CREATE TABLE model_draft.ego_supply_res_pv_to_region_temp ( re_id bigint NOT NULL, -- id from renewable_power_plants - subst_id bigint, - otg_id bigint, - un_id bigint, - nuts character varying(5), + subst_id bigint, + otg_id bigint, + un_id bigint, + nuts character varying(5), rs character varying(12), -- German Regionalschlüssel id_vg250 bigint, -- ID of political_boundary.bkg_vg250_6_gem_rs_mview table CONSTRAINT ego_supply_res_pv_to_region_temp_pkey PRIMARY KEY (re_id) @@ -405,7 +404,7 @@ CREATE TABLE model_draft.ego_supply_res_pv_to_region_temp ALTER TABLE model_draft.ego_supply_res_pv_to_region_temp OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_pv_to_region_temp','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_pv_to_region_temp','ego_db_res_rea_by_scenario.sql',' '); INSERT INTO model_draft.ego_supply_res_pv_to_region_temp (re_id,subst_id,otg_id,un_id) SELECT @@ -427,7 +426,7 @@ FROM ( D.id as re_id, C.id, C.rs, - C.nuts + C.nuts FROM boundaries.bkg_vg250_6_gem_rs_mview C, model_draft.ego_dp_supply_res_powerplant D WHERE ST_Intersects(C.geom, D.geom) @@ -443,7 +442,7 @@ FROM ( D.id as re_id, C.id, C.rs, - C.nuts + C.nuts FROM boundaries.bkg_vg250_6_gem_rs_mview C, model_draft.ego_dp_supply_res_powerplant D WHERE ST_Intersects(C.geom, St_Buffer(D.geom, 1000)) @@ -461,16 +460,16 @@ DROP SEQUENCE IF EXISTS model_draft.ego_supply_res_pv_2035_germany_mun_id_seq; CREATE SEQUENCE model_draft.ego_supply_res_pv_2035_germany_mun_id_seq START 1; DROP TABLE IF EXISTS model_draft.ego_supply_res_pv_2035_germany_mun_temp CASCADE; -CREATE TABLE model_draft.ego_supply_res_pv_2035_germany_mun_temp +CREATE TABLE model_draft.ego_supply_res_pv_2035_germany_mun_temp ( - id bigint NOT NULL DEFAULT nextval('model_draft.ego_supply_pv_dev_2035_germany_mun_id_seq'::regclass),-- own id PK - pv_units integer, -- number of PV units per mun and voltage level - pv_cap_2014 integer, -- sum per region of 2014 in kW - pv_add_cap_2035 integer, -- sum per region of additional Capacity in 2035 kW - voltage_level smallint, -- voltage_level from 1-7 + id bigint NOT NULL DEFAULT nextval('model_draft.ego_supply_pv_dev_2035_germany_mun_id_seq'::regclass),-- own id PK + pv_units integer, -- number of PV units per mun and voltage level + pv_cap_2014 integer, -- sum per region of 2014 in kW + pv_add_cap_2035 integer, -- sum per region of additional Capacity in 2035 kW + voltage_level smallint, -- voltage_level from 1-7 rs character varying(12), -- German Regionalschlüssel pv_avg_cap integer, -- average capacity per region and voltage level - pv_new_units integer, -- New number per region per voltage level + pv_new_units integer, -- New number per region per voltage level CONSTRAINT ego_supply_res_pv_2035_germany_mun_temp_pkey PRIMARY KEY (id) ); @@ -478,7 +477,7 @@ CREATE TABLE model_draft.ego_supply_res_pv_2035_germany_mun_temp ALTER TABLE model_draft.ego_supply_res_pv_2035_germany_mun_temp OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_pv_2035_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_pv_2035_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); Insert into model_draft.ego_supply_res_pv_2035_germany_mun_temp (pv_units,pv_cap_2014,voltage_level,rs,pv_avg_cap) @@ -489,7 +488,7 @@ SELECT B.rs, avg(A.electrical_capacity) as pv_avg_cap FROM - model_draft.ego_dp_supply_res_powerplant A, + model_draft.ego_dp_supply_res_powerplant A, boundaries.bkg_vg250_6_gem_rs_mview B WHERE ST_Intersects(A.geom ,B.geom) @@ -501,8 +500,8 @@ Group by A.voltage_level, B.id, B.rs; -- Step 2 - Photovoltaic Prox2Now per municipality and voltage level UPDATE model_draft.ego_supply_res_pv_2035_germany_mun_temp AA -set pv_add_cap_2035 = ( (AA.pv_cap_2014::numeric / pv_sq_2014.fs_cap_2014::numeric)*pv_scn_2035.fs_cap_2035 - -AA.pv_cap_2014)::integer +set pv_add_cap_2035 = ( (AA.pv_cap_2014::numeric / pv_sq_2014.fs_cap_2014::numeric)*pv_scn_2035.fs_cap_2035 + -AA.pv_cap_2014)::integer FROM ( SELECT @@ -513,8 +512,8 @@ SELECT boundaries.bkg_vg250_6_gem_rs_mview A, model_draft.ego_supply_scenario_capacities scn WHERE scn.nuts = substring(A.nuts from 1 for 3) -AND scn.generation_type = 'solar' -AND scn.scenario_name = 'NEP 2035' +AND scn.generation_type = 'solar' +AND scn.scenario_name = 'NEP 2035' Group by substring(A.nuts from 1 for 3),rs,scn.capacity,scn.nuts Order by rs ) as pv_scn_2035, @@ -524,16 +523,16 @@ SELECT sum(A.pv_cap_2014) as fs_cap_2014 -- in kW FROM model_draft.ego_supply_res_pv_2035_germany_mun_temp A -Group by substring(A.rs from 1 for 2) +Group by substring(A.rs from 1 for 2) Order by rs -) as pv_sq_2014 +) as pv_sq_2014 Where pv_scn_2035.rs = pv_sq_2014.rs AND substring(AA.rs from 1 for 2) = pv_sq_2014.rs AND substring(AA.rs from 1 for 2) = pv_scn_2035.rs; -- Count new additional Units -> new_units UPDATE model_draft.ego_supply_res_pv_2035_germany_mun_temp AA -set pv_new_units = round(pv_add_cap_2035/pv_avg_cap,0)::int; +set pv_new_units = round(pv_add_cap_2035/pv_avg_cap,0)::int; -- Control Photovoltaic development per federal state SELECT @@ -554,7 +553,7 @@ FROM model_draft.ego_supply_scenario_capacities as scn WHERE scn.nuts = substring(AA.nuts from 1 for 3) AND scn.generation_type = 'solar' -AND scn.scenario_name = 'NEP 2035' +AND scn.scenario_name = 'NEP 2035' group by scn.nuts, substring(AA.rs from 1 for 2), substring(AA.nuts from 1 for 3), scn.capacity,scn.generation_type ) as scn, @@ -562,16 +561,16 @@ group by scn.nuts, substring(AA.rs from 1 for 2), substring(AA.nuts from 1 for 3 WHERE scn.rs = substring(A.rs from 1 for 2) Group by substring(A.rs from 1 for 2),scn.capacity_2035; --- Take status quo and add new Photovoltaic plants --- Insert new units by pv_new_units +-- Take status quo and add new Photovoltaic plants +-- Insert new units by pv_new_units -- geom = centroid of municipality geom , see http://postgis.net/docs/ST_Centroid.html -- generation_subtype defined as solar -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_supply_res_pv_2035_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_supply_res_pv_2035_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); --- Add new PV units --- Step 3-4 +-- Add new PV units +-- Step 3-4 Insert into model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date,electrical_capacity, generation_type, generation_subtype, voltage_level, source, comment,geom, scenario,flag) SELECT @@ -583,7 +582,7 @@ generation_type, generation_subtype, voltage_level, source, comment,geom, scenar 'solar'::text as generation_subtype, sub.voltage_level, 'NEP 2015 for 2035'::text as source, - ', Method ProxToNow solar'::text as comment, + ', Method ProxToNow solar'::text as comment, sub.geom, 'NEP 2035'::text as scenario, 'commissioning'::text as flag @@ -592,12 +591,12 @@ generation_type, generation_subtype, voltage_level, source, comment,geom, scenar A.rs, A.voltage_level, Case when A.pv_new_units = 0 Then A.pv_add_cap_2035 - else unnest(array_fill((A.pv_add_cap_2035/A.pv_new_units), Array[A.pv_new_units])) END as electrical_capacity , -- in kW - ST_Centroid(B.geom) as geom - FROM + else unnest(array_fill((A.pv_add_cap_2035/A.pv_new_units), Array[A.pv_new_units])) END as electrical_capacity , -- in kW + ST_Centroid(B.geom) as geom + FROM model_draft.ego_supply_res_pv_2035_germany_mun_temp A, boundaries.bkg_vg250_6_gem_rs_mview B - Where A.rs = B.rs + Where A.rs = B.rs ) as sub , (Select max(id) as max_rown @@ -608,7 +607,7 @@ generation_type, generation_subtype, voltage_level, source, comment,geom, scenar -- set nuts UPDATE model_draft.ego_dp_supply_res_powerplant as upt set nuts = regions.nuts -from +from boundaries.bkg_vg250_2_lan_nuts_view as regions WHERE ST_Intersects(regions.geom, upt.geom) AND generation_type = 'solar' @@ -616,154 +615,154 @@ AND upt.scenario = 'NEP 2035' AND upt.nuts is null; --- --- Offshore Wind +-- Offshore Wind -- Add NEP 2035 Wind parks from own data research --- -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); -- 1 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, max(id)+ row_number() over () as id, - '2034-12-31 00:00:00' as start_up_date, - 840850, 'wind', 'wind_offshore', NULL, NULL, NULL, NULL, 1, NULL, 'ONEP', - 'NVP: Büttel', ST_Transform('0101000020E6100000AD05BE1A878A1B40003C769B02924B40'::geometry,3035), + '2034-12-31 00:00:00' as start_up_date, + 840850, 'wind', 'wind_offshore', NULL, NULL, NULL, NULL, 1, NULL, 'ONEP', + 'NVP: Büttel', ST_Transform('0101000020E6100000AD05BE1A878A1B40003C769B02924B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 2 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion, id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion, id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Segeberg', ST_Transform('0101000020E610000097549B90767B1940BD49396624894B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Segeberg', ST_Transform('0101000020E610000097549B90767B1940BD49396624894B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 3 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Cloppenburg', ST_Transform('0101000020E6100000734ECF8CED571C40D2AE3F9F8B044B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Cloppenburg', ST_Transform('0101000020E6100000734ECF8CED571C40D2AE3F9F8B044B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 4 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Cloppenburg', ST_Transform('0101000020E61000007B81CED535641940C088D9991E294B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Cloppenburg', ST_Transform('0101000020E61000007B81CED535641940C088D9991E294B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 5 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Cloppenburg', ST_Transform('0101000020E6100000760FAC97AC3D184000CF66EFA2204B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Cloppenburg', ST_Transform('0101000020E6100000760FAC97AC3D184000CF66EFA2204B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 6 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 1188400, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Dörpen West', ST_Transform('0101000020E610000044D62300A7711B400FE3B7CDB9034B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 1188400, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Dörpen West', ST_Transform('0101000020E610000044D62300A7711B400FE3B7CDB9034B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 7 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 1800000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Emden Ost', ST_Transform('0101000020E610000083B2A1AEEAF91B40343FC1825E054B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 1800000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Emden Ost', ST_Transform('0101000020E610000083B2A1AEEAF91B40343FC1825E054B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 8 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 450000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Unterweser', ST_Transform('0101000020E6100000BAF8659652801740D869CBBDC1284B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 450000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Unterweser', ST_Transform('0101000020E6100000BAF8659652801740D869CBBDC1284B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 9 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Wilhelmshaven 2', ST_Transform('0101000020E610000033F5B4B394751940EA0712BD2E294B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Wilhelmshaven 2', ST_Transform('0101000020E610000033F5B4B394751940EA0712BD2E294B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 10 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Wilhelmshaven 2', ST_Transform('0101000020E6100000E75D445985E61740F70188073D684B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Wilhelmshaven 2', ST_Transform('0101000020E6100000E75D445985E61740F70188073D684B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 11 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Wilhelmshaven 2', ST_Transform('0101000020E610000046E764017AE71840ADB08899CC684B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Wilhelmshaven 2', ST_Transform('0101000020E610000046E764017AE71840ADB08899CC684B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 12 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Halbemond', ST_Transform('0101000020E610000011DD88C5680E1940A8A8439C94004B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 900000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Halbemond', ST_Transform('0101000020E610000011DD88C5680E1940A8A8439C94004B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; -- 13 -INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, - nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, +INSERT INTO model_draft.ego_dp_supply_res_powerplant (preversion,id, start_up_date, electrical_capacity, generation_type, generation_subtype, thermal_capacity, + nuts, lon, lat, voltage_level, network_node, source, comment, geom, voltage_level_var, subst_id, otg_id, un_id, scenario, flag) SELECT 'v0.3.0'::text as preversion, - max(id)+ row_number() over () as id , - '2034-12-31 00:00:00' as start_up_date, 1585000, 'wind', 'wind_offshore', NULL, NULL, NULL, - NULL, 1, NULL, 'ONEP', 'NVP: Lubmin', ST_Transform('0101000020E6100000C396890D74072A404ADF5A5C48744B40'::geometry,3035), + max(id)+ row_number() over () as id , + '2034-12-31 00:00:00' as start_up_date, 1585000, 'wind', 'wind_offshore', NULL, NULL, NULL, + NULL, 1, NULL, 'ONEP', 'NVP: Lubmin', ST_Transform('0101000020E6100000C396890D74072A404ADF5A5C48744B40'::geometry,3035), '380', NULL, NULL, NULL,'NEP 2035','commissioning' FROM model_draft.ego_dp_supply_res_powerplant; @@ -797,7 +796,7 @@ Insert into model_draft.ego_dp_supply_res_powerplant -- Wind Onshore -- Use of "easy" Prox2Now Method like Photovoltaic /* -Step 0 Get Nuts id per Unit +Step 0 Get Nuts id per Unit Step 1 capacity per municipality -> Pro2Now Status Quo Step 2 Structure of Wind Onshore ( volatage level, size, Number) @@ -811,16 +810,16 @@ DROP SEQUENCE IF EXISTS model_draft.ego_supply_res_wo_2035_germany_mun_id_seq CA CREATE SEQUENCE model_draft.ego_supply_res_wo_2035_germany_mun_id_seq START 1; DROP TABLE IF EXISTS model_draft.ego_supply_res_wo_2035_germany_mun_temp CASCADE; -CREATE TABLE model_draft.ego_supply_res_wo_2035_germany_mun_temp +CREATE TABLE model_draft.ego_supply_res_wo_2035_germany_mun_temp ( - id bigint NOT NULL DEFAULT nextval('model_draft.ego_supply_res_wo_2035_germany_mun_id_seq'::regclass),-- own id PK - wo_units integer, -- number of onshore units per mun and voltage level - wo_cap_2014 integer, -- sum per region of 2014 in kW - wo_add_cap_2035 integer, -- sum per region of additional Capacity in 2035 kW - voltage_level smallint, -- voltage_level from 1-7 + id bigint NOT NULL DEFAULT nextval('model_draft.ego_supply_res_wo_2035_germany_mun_id_seq'::regclass),-- own id PK + wo_units integer, -- number of onshore units per mun and voltage level + wo_cap_2014 integer, -- sum per region of 2014 in kW + wo_add_cap_2035 integer, -- sum per region of additional Capacity in 2035 kW + voltage_level smallint, -- voltage_level from 1-7 rs character varying(12), -- German Regionalschlüssel wo_avg_cap integer, -- average capacity per region and voltage level - wo_new_units integer, -- New number of region per voltage level + wo_new_units integer, -- New number of region per voltage level CONSTRAINT ego_supply_res_wo_2035_germany_mun_temp_pkey PRIMARY KEY (id) ); @@ -828,7 +827,7 @@ CREATE TABLE model_draft.ego_supply_res_wo_2035_germany_mun_temp ALTER TABLE model_draft.ego_supply_res_wo_2035_germany_mun_temp OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_wo_2035_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_wo_2035_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); Insert into model_draft.ego_supply_res_wo_2035_germany_mun_temp (wo_units,wo_cap_2014,voltage_level,rs,wo_avg_cap) SELECT @@ -838,7 +837,7 @@ SELECT B.rs, avg(A.electrical_capacity) as wo_avg_cap FROM - model_draft.ego_dp_supply_res_powerplant A, + model_draft.ego_dp_supply_res_powerplant A, boundaries.bkg_vg250_6_gem_rs_mview B WHERE ST_Intersects(B.geom, A.geom) @@ -848,8 +847,8 @@ AND scenario = 'Status Quo' Group by A.voltage_level, B.id, B.rs; UPDATE model_draft.ego_supply_res_wo_2035_germany_mun_temp AA -set wo_add_cap_2035 = ( (AA.wo_cap_2014::numeric / wo_sq_2014.fs_cap_2014::numeric)*wo_scn_2035.fs_cap_2035 - -AA.wo_cap_2014)::integer +set wo_add_cap_2035 = ( (AA.wo_cap_2014::numeric / wo_sq_2014.fs_cap_2014::numeric)*wo_scn_2035.fs_cap_2035 + -AA.wo_cap_2014)::integer FROM ( SELECT @@ -860,7 +859,7 @@ SELECT boundaries.bkg_vg250_6_gem_rs_mview A, model_draft.ego_supply_scenario_capacities scn WHERE scn.nuts = substring(A.nuts from 1 for 3) -AND scn.generation_type = 'wind_onshore' +AND scn.generation_type = 'wind_onshore' AND scn.scenario_name ='NEP 2035' AND scn.state not in ('Deutschland') Group by substring(A.nuts from 1 for 3),rs,scn.capacity,scn.nuts @@ -871,7 +870,7 @@ SELECT sum(A.wo_cap_2014) as fs_cap_2014 -- in kW FROM model_draft.ego_supply_res_wo_2035_germany_mun_temp A -Group by substring(A.rs from 1 for 2) +Group by substring(A.rs from 1 for 2) ) as wo_sq_2014 Where wo_scn_2035.rs = wo_sq_2014.rs AND substring(AA.rs from 1 for 2) = wo_sq_2014.rs @@ -882,9 +881,9 @@ DELETE FROM model_draft.ego_supply_res_wo_2035_germany_mun_temp WHERE wo_add_cap -- Count new additional Units -> new_units UPDATE model_draft.ego_supply_res_wo_2035_germany_mun_temp AA - set wo_new_units = round(wo_add_cap_2035/wo_avg_cap,0)::int; + set wo_new_units = round(wo_add_cap_2035/wo_avg_cap,0)::int; --- Control wind onshore development +-- Control wind onshore development SELECT scn.state, substring(A.rs from 1 for 2) rs_fs, -- fs ID @@ -894,7 +893,7 @@ scn.capacity_2035, -- Scenario capacity 2035 in MW (SUM(A.wo_add_cap_2035) +sum(A.wo_cap_2014))/1000 total -- in MW FROM ( -SELECT +SELECT scn.state, scn.nuts, substring(AA.rs from 1 for 2) as rs, @@ -918,16 +917,16 @@ Order by scn.state; -- set nuts UPDATE model_draft.ego_dp_supply_res_powerplant as upt set nuts = regions.nuts -from +from boundaries.bkg_vg250_2_lan_nuts_view as regions WHERE ST_Intersects(regions.geom, upt.geom) AND generation_subtype = 'wind_onshore' AND upt.nuts IS NULL; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_supply_res_wo_2035_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_supply_res_wo_2035_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); --- Add new wind onshore units +-- Add new wind onshore units Insert into model_draft.ego_dp_supply_res_powerplant (preversion,id,start_up_date,electrical_capacity, generation_type, generation_subtype, voltage_level, source, comment,geom, scenario,flag) SELECT @@ -939,7 +938,7 @@ Insert into model_draft.ego_dp_supply_res_powerplant (preversion,id,start_up_dat 'wind_onshore'::text as generation_subtype, sub.voltage_level, 'NEP 2015 scenario B2035'::text as source, - 'Method ProxToNow wind onshore'::text as comment, + 'Method ProxToNow wind onshore'::text as comment, sub.geom, 'NEP 2035'::text as scenario, 'commissioning'::text as flag @@ -948,9 +947,9 @@ Insert into model_draft.ego_dp_supply_res_powerplant (preversion,id,start_up_dat A.rs, A.voltage_level, Case when A.wo_new_units = 0 Then A.wo_add_cap_2035 - else unnest(array_fill((A.wo_add_cap_2035/A.wo_new_units), Array[A.wo_new_units])) END as electrical_capacity , -- in kW - ST_Centroid(B.geom) as geom - FROM + else unnest(array_fill((A.wo_add_cap_2035/A.wo_new_units), Array[A.wo_new_units])) END as electrical_capacity , -- in kW + ST_Centroid(B.geom) as geom + FROM model_draft.ego_supply_res_wo_2035_germany_mun_temp A, boundaries.bkg_vg250_6_gem_rs_mview B Where A.rs = B.rs @@ -960,22 +959,22 @@ Insert into model_draft.ego_dp_supply_res_powerplant (preversion,id,start_up_dat FROM model_draft.ego_dp_supply_res_powerplant ) as sub2 ; - + -- set nuts UPDATE model_draft.ego_dp_supply_res_powerplant as upt set nuts = regions.nuts -from +from boundaries.bkg_vg250_2_lan_nuts_view as regions WHERE ST_Intersects(regions.geom, upt.geom) AND generation_subtype = 'wind_onshore' AND scenario ='NEP 2035'; -- VACUUM FULL ANALYZE model_draft.ego_dp_supply_res_powerplant; - + -------------------------------------------------------------------------------- --- Part III +-- Part III -- Develop renewable allocation by generation type, voltage level --- and municipality. Scenarios: ego-100RES +-- and municipality. Scenarios: ego-100RES -------------------------------------------------------------------------------- --- @@ -984,15 +983,15 @@ AND scenario ='NEP 2035'; -- eGo 100 Biomass DROP TABLE IF EXISTS model_draft.ego_supply_res_biomass_2050_temp CASCADE; CREATE TABLE model_draft.ego_supply_res_biomass_2050_temp AS - SELECT * - FROM + SELECT * + FROM model_draft.ego_dp_supply_res_powerplant WHERE generation_type = 'biomass' AND scenario in ( 'Status Quo'); -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); -- Biomass Method Prox2Now -- increase installed capacity by scenario data @@ -1004,13 +1003,13 @@ set comment = upt.comment || ', Method ProxToNow Biomass', scenario = 'eGo 100' , flag = 'repowering', preversion = 'v0.3.0'::text, - electrical_capacity = CASE WHEN scn.capacity = 0 THEN 0 - ELSE (upt.electrical_capacity/ cap_sum)*scn.capacity*1000 - END + electrical_capacity = CASE WHEN scn.capacity = 0 THEN 0 + ELSE (upt.electrical_capacity/ cap_sum)*scn.capacity*1000 + END FROM model_draft.ego_supply_scenario_capacities as scn, (SELECT 'DE'::text as nuts, sum(electrical_capacity) as cap_sum - FROM model_draft.ego_dp_supply_res_powerplant + FROM model_draft.ego_dp_supply_res_powerplant WHERE generation_type = 'biomass' AND scenario in ( 'Status Quo') ) count @@ -1028,7 +1027,7 @@ CREATE INDEX ego_supply_res_biomass_2050_temp_geom_idx ALTER TABLE model_draft.ego_supply_res_biomass_2050_temp OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','input','model_draft','ego_dp_supply_res_powerplant','ego_db_res_rea_by_scenario.sql',' '); -- Insert ego_dp_supply_res_powerplant Insert into model_draft.ego_dp_supply_res_powerplant @@ -1037,20 +1036,20 @@ Insert into model_draft.ego_dp_supply_res_powerplant FROM model_draft.ego_supply_res_biomass_2050_temp WHERE scenario = 'eGo 100'; - ---- + +--- -- Geothermal Method -- No changes set status quo --- ---- +--- -- CHP Method -- No Units set all NULL --- DROP TABLE IF EXISTS model_draft.ego_supply_res_chp_2050_temp CASCADE; CREATE TABLE model_draft.ego_supply_res_chp_2050_temp AS - SELECT * - FROM + SELECT * + FROM model_draft.ego_dp_supply_res_powerplant WHERE comment = 'KWK_NEP_2035_distribution' @@ -1061,7 +1060,7 @@ Update model_draft.ego_supply_res_chp_2050_temp flag = 'decommissioning', start_up_date = '2034-12-31 00:00:00', preversion = 'v0.3.0'::text, - electrical_capacity = 0; + electrical_capacity = 0; -- create index GIST (geom) CREATE INDEX ego_supply_res_chp_2050_temp_geom_idx @@ -1075,15 +1074,15 @@ Insert into model_draft.ego_dp_supply_res_powerplant FROM model_draft.ego_supply_res_chp_2050_temp WHERE scenario = 'eGo 100'; ---- +--- -- Hydro / run_of_river -- Repowering Units from NEP 2035 Scenario --- DROP TABLE IF EXISTS model_draft.ego_supply_res_hydro_2050_temp CASCADE; CREATE TABLE model_draft.ego_supply_res_hydro_2050_temp AS - SELECT * - FROM + SELECT * + FROM model_draft.ego_dp_supply_res_powerplant WHERE generation_subtype = 'hydro' @@ -1104,8 +1103,8 @@ set comment = upt.comment || ', Method ProxToNow Hydro', flag = 'repowering', preversion = 'v0.3.0'::text, electrical_capacity = CASE WHEN scn.capacity = 0 THEN upt.electrical_capacity - ELSE (upt.electrical_capacity/ cap_sum)*scn.capacity*1000 - END + ELSE (upt.electrical_capacity/ cap_sum)*scn.capacity*1000 + END FROM model_draft.ego_supply_scenario_capacities as scn, (SELECT 'DE'::text as nuts, sum(electrical_capacity) as cap_sum @@ -1115,7 +1114,7 @@ FROM WHERE scn.nuts = substring(count.nuts from 1 for 2) AND scn.nuts = substring(upt.nuts from 1 for 2) AND substring(upt.nuts from 1 for 2) = substring(count.nuts from 1 for 2) -AND scn.generation_type = 'run_of_river' +AND scn.generation_type = 'run_of_river' AND upt.generation_subtype = 'hydro' AND scn.scenario_name = 'eGo 100'; @@ -1125,11 +1124,11 @@ Insert into model_draft.ego_dp_supply_res_powerplant FROM model_draft.ego_supply_res_hydro_2050_temp WHERE scenario = 'eGo 100'; --- --- Photovoltaic Methode ---- +-- Photovoltaic Methode +--- /* -Step 0 Create temp temp +Step 0 Create temp temp Step 1 capacity per municipality -> Pro2Now Status Quo Step 2 Structure of PV ( voltage level, size, Number) @@ -1141,13 +1140,13 @@ Step 4 add volatage level, etc. -- eGo 100 Photovoltaic -- Step 0 DROP TABLE IF EXISTS model_draft.ego_supply_res_pv_to_region_temp CASCADE; -CREATE TABLE model_draft.ego_supply_res_pv_to_region_temp +CREATE TABLE model_draft.ego_supply_res_pv_to_region_temp ( re_id bigint NOT NULL, -- id from renewable_power_plants - subst_id bigint, - otg_id bigint, - un_id bigint, - nuts character varying(5), + subst_id bigint, + otg_id bigint, + un_id bigint, + nuts character varying(5), rs character varying(12), -- German Regionalschlüssel id_vg250 bigint, -- ID of boundaries.bkg_vg250_6_gem_rs_mview table CONSTRAINT ego_supply_res_pv_to_region_temp_pkey PRIMARY KEY (re_id) @@ -1157,7 +1156,7 @@ CREATE TABLE model_draft.ego_supply_res_pv_to_region_temp ALTER TABLE model_draft.ego_supply_res_pv_to_region_temp OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_pv_to_region_temp','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_pv_to_region_temp','ego_db_res_rea_by_scenario.sql',' '); INSERT INTO model_draft.ego_supply_res_pv_to_region_temp (re_id,subst_id,otg_id,un_id) SELECT @@ -1168,7 +1167,7 @@ INSERT INTO model_draft.ego_supply_res_pv_to_region_temp (re_id,subst_id,otg_id, FROM model_draft.ego_dp_supply_res_powerplant WHERE scenario in ( 'Status Quo','NEP 2035') - AND generation_type = 'solar' + AND generation_type = 'solar' AND flag in ('commissioning','constantly'); Update model_draft.ego_supply_res_pv_to_region_temp A @@ -1180,14 +1179,14 @@ FROM ( D.id as re_id, C.id, C.rs, - C.nuts + C.nuts FROM boundaries.bkg_vg250_6_gem_rs_mview C, model_draft.ego_dp_supply_res_powerplant D WHERE ST_Intersects(C.geom, D.geom) ) as B WHERE B.re_id = A.re_id; --- Get nuts ID by buffering geometry +-- Get nuts ID by buffering geometry Update model_draft.ego_supply_res_pv_to_region_temp A set id_vg250 = C.id, rs = C.rs, @@ -1201,7 +1200,7 @@ FROM model_draft.ego_supply_res_pv_to_region_temp A, model_draft.ego_dp_supply_res_powerplant B WHERE A.re_id = B.id - AND A.nuts IS NULL + AND A.nuts IS NULL ) as AA, boundaries.bkg_vg250_6_gem_rs_mview C WHERE ST_Intersects(C.geom, ST_Buffer(AA.geom,1000)) @@ -1217,16 +1216,16 @@ DROP SEQUENCE IF EXISTS model_draft.ego_supply_res_pv_2050_germany_mun_id_seq CA CREATE SEQUENCE model_draft.ego_supply_res_pv_2050_germany_mun_id_seq START 1; DROP TABLE IF EXISTS model_draft.ego_supply_res_pv_2050_germany_mun_temp CASCADE; -CREATE TABLE model_draft.ego_supply_res_pv_2050_germany_mun_temp +CREATE TABLE model_draft.ego_supply_res_pv_2050_germany_mun_temp ( - id bigint NOT NULL DEFAULT nextval('model_draft.ego_supply_res_pv_2050_germany_mun_id_seq'::regclass),-- own id PK - pv_units integer, -- number of PV units per mun and voltage level - pv_cap_2035 integer, -- sum per region of 2014 in kW - pv_add_cap_2050 integer, -- sum per region of additional Capacity in 2035 kW - voltage_level smallint, -- voltage_level from 1-7 + id bigint NOT NULL DEFAULT nextval('model_draft.ego_supply_res_pv_2050_germany_mun_id_seq'::regclass),-- own id PK + pv_units integer, -- number of PV units per mun and voltage level + pv_cap_2035 integer, -- sum per region of 2014 in kW + pv_add_cap_2050 integer, -- sum per region of additional Capacity in 2035 kW + voltage_level smallint, -- voltage_level from 1-7 rs character varying(12), -- German Regionalschlüssel pv_avg_cap integer, -- average capacity per region and voltage level - pv_new_units integer, -- New number of region per voltage level + pv_new_units integer, -- New number of region per voltage level CONSTRAINT ego_supply_res_pv_2050_germany_mun_temp_pkey PRIMARY KEY (id) ); @@ -1234,7 +1233,7 @@ CREATE TABLE model_draft.ego_supply_res_pv_2050_germany_mun_temp ALTER TABLE model_draft.ego_supply_res_pv_2050_germany_mun_temp OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_pv_2050_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_pv_2050_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); Insert into model_draft.ego_supply_res_pv_2050_germany_mun_temp (pv_units,pv_cap_2035,voltage_level,rs,pv_avg_cap) @@ -1245,7 +1244,7 @@ SELECT B.rs, avg(A.electrical_capacity) as pv_avg_cap FROM - model_draft.ego_dp_supply_res_powerplant A, + model_draft.ego_dp_supply_res_powerplant A, boundaries.bkg_vg250_6_gem_rs_mview B WHERE ST_Intersects(B.geom, A.geom) @@ -1260,7 +1259,7 @@ Group by A.voltage_level, B.id, B.rs; --- UPDATE model_draft.ego_supply_res_pv_2050_germany_mun_temp AA -set pv_add_cap_2050 = ( (AA.pv_cap_2035::numeric / pv_sq_2035.fs_cap_2035::numeric)*pv_scn_2050.fs_cap_2050 +set pv_add_cap_2050 = ( (AA.pv_cap_2035::numeric / pv_sq_2035.fs_cap_2035::numeric)*pv_scn_2050.fs_cap_2050 -AA.pv_cap_2035)::integer FROM ( @@ -1271,7 +1270,7 @@ SELECT boundaries.bkg_vg250_6_gem_rs_mview A, model_draft.ego_supply_scenario_capacities scn WHERE scn.nuts = substring(A.nuts from 1 for 2) -AND scn.generation_type = 'solar' +AND scn.generation_type = 'solar' AND scn.scenario_name = 'eGo 100' Group by fs_cap_2050 ,scn.nuts ) as pv_scn_2050, @@ -1284,9 +1283,9 @@ FROM -- Count new additional Units -> new_units UPDATE model_draft.ego_supply_res_pv_2050_germany_mun_temp - set pv_new_units = CASE WHEN pv_add_cap_2050 = 0 Then pv_add_cap_2050 ELSE round(pv_add_cap_2050/pv_avg_cap,0)::int END; + set pv_new_units = CASE WHEN pv_add_cap_2050 = 0 Then pv_add_cap_2050 ELSE round(pv_add_cap_2050/pv_avg_cap,0)::int END; --- Control Photovoltaic development +-- Control Photovoltaic development SELECT sum(A.pv_add_cap_2050)/1000 pv_add_cap_2035, -- additional Capacity in MW sum(A.pv_cap_2035)/1000 pv_cap_2035, -- capacity 2035 im MW @@ -1312,22 +1311,22 @@ Group by scn.capacity_2050; -- set nuts UPDATE model_draft.ego_dp_supply_res_powerplant as upt set nuts = regions.nuts -from +from boundaries.bkg_vg250_2_lan_nuts_view as regions WHERE ST_Intersects(regions.geom, upt.geom) AND generation_type = 'solar' AND upt.scenario in ( 'Status Quo','NEP 2035') AND upt.nuts IS NULL; --- Take status quo and add new Photovoltaic plants --- Insert new units by pv_new_units +-- Take status quo and add new Photovoltaic plants +-- Insert new units by pv_new_units -- geom = centroid of municipality geom , see http://postgis.net/docs/ST_Centroid.html -- generation_subtype is defined as solar -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_supply_res_pv_2050_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_supply_res_pv_2050_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); --- Add new PV units +-- Add new PV units Insert into model_draft.ego_dp_supply_res_powerplant (preversion,id,start_up_date, electrical_capacity, generation_type, generation_subtype, voltage_level, source, comment,geom, scenario,flag) @@ -1340,7 +1339,7 @@ generation_type, generation_subtype, voltage_level, source, comment,geom, scenar 'solar'::text as generation_subtype, sub.voltage_level, 'open_ego 100'::text as source, - ', Method ProxToNow solar'::text as comment, + ', Method ProxToNow solar'::text as comment, sub.geom, 'eGo 100'::text as scenario, 'commissioning'::text as flag @@ -1349,9 +1348,9 @@ generation_type, generation_subtype, voltage_level, source, comment,geom, scenar A.rs, A.voltage_level, Case when A.pv_new_units = 0 Then A.pv_add_cap_2050 - else unnest(array_fill((A.pv_add_cap_2050/A.pv_new_units), Array[A.pv_new_units])) END as electrical_capacity , -- in kW - ST_Centroid(B.geom) as geom - FROM + else unnest(array_fill((A.pv_add_cap_2050/A.pv_new_units), Array[A.pv_new_units])) END as electrical_capacity , -- in kW + ST_Centroid(B.geom) as geom + FROM model_draft.ego_supply_res_pv_2050_germany_mun_temp A, boundaries.bkg_vg250_6_gem_rs_mview B Where A.rs = B.rs @@ -1365,7 +1364,7 @@ generation_type, generation_subtype, voltage_level, source, comment,geom, scenar -- set nuts UPDATE model_draft.ego_dp_supply_res_powerplant as upt set nuts = regions.nuts -from +from boundaries.bkg_vg250_2_lan_nuts_view as regions WHERE ST_Intersects(regions.geom, upt.geom) AND generation_type = 'solar' @@ -1377,8 +1376,8 @@ AND upt.nuts is NULL; DROP TABLE IF EXISTS model_draft.ego_supply_res_woff_2050_temp CASCADE; CREATE TABLE model_draft.ego_supply_res_woff_2050_temp AS - SELECT * - FROM + SELECT * + FROM model_draft.ego_dp_supply_res_powerplant WHERE generation_subtype = 'wind_offshore' @@ -1397,19 +1396,19 @@ set source = 'open_ego 2050', scenario = 'eGo 100', flag = 'repowering', preversion = 'v0.3.0'::text, - electrical_capacity = scn2050.electrical_capacity + round(scn2050.electrical_capacity*q1.pp) + electrical_capacity = scn2050.electrical_capacity + round(scn2050.electrical_capacity*q1.pp) From ( Select (scn.capacity*1000 - sum(base.electrical_capacity))/(scn.capacity*1000) as pp From model_draft.ego_supply_scenario_capacities as scn, model_draft.ego_supply_res_woff_2050_temp as base -Where scn.generation_type = 'wind_offshore' +Where scn.generation_type = 'wind_offshore' And scn.scenario_name = 'eGo 100' And base.generation_subtype = 'wind_offshore' Group by scn.capacity ) as q1 -WHERE +WHERE scn2050.generation_subtype = 'wind_offshore'; Insert into model_draft.ego_dp_supply_res_powerplant @@ -1417,12 +1416,12 @@ Insert into model_draft.ego_dp_supply_res_powerplant FROM model_draft.ego_supply_res_woff_2050_temp WHERE scenario = 'eGo 100'; ---- --- Wind Onshore +--- +-- Wind Onshore -- Use of "easy" Prox2Now Method like Photovoltaic ---- +--- /* -Step 0 Get Nuts id per Unit +Step 0 Get Nuts id per Unit Step 1 capacity per municipality -> Pro2Now Status Quo Step 2 Structure of Wind Onshore ( volatage level, size, Number) @@ -1436,16 +1435,16 @@ DROP SEQUENCE IF EXISTS model_draft.ego_supply_res_wo_2050_germany_mun_id_seq CA CREATE SEQUENCE model_draft.ego_supply_res_wo_2050_germany_mun_id_seq START 1; DROP TABLE IF EXISTS model_draft.ego_supply_res_wo_2050_germany_mun_temp CASCADE; -CREATE TABLE model_draft.ego_supply_res_wo_2050_germany_mun_temp +CREATE TABLE model_draft.ego_supply_res_wo_2050_germany_mun_temp ( - id bigint NOT NULL DEFAULT nextval('model_draft.ego_supply_res_wo_2050_germany_mun_id_seq'::regclass),-- own id PK - wo_units integer, -- number of onshore units per mun and voltage level - wo_cap_2035 integer, -- sum per region of 2035 in kW - wo_add_cap_2050 integer, -- sum per region of additional Capacity in 2050 kW - voltage_level smallint, -- voltage_level from 1-7 + id bigint NOT NULL DEFAULT nextval('model_draft.ego_supply_res_wo_2050_germany_mun_id_seq'::regclass),-- own id PK + wo_units integer, -- number of onshore units per mun and voltage level + wo_cap_2035 integer, -- sum per region of 2035 in kW + wo_add_cap_2050 integer, -- sum per region of additional Capacity in 2050 kW + voltage_level smallint, -- voltage_level from 1-7 rs character varying(12), -- German Regionalschlüssel wo_avg_cap integer, -- average capacity per region and voltage level - wo_new_units integer, -- New number of region per voltage level + wo_new_units integer, -- New number of region per voltage level CONSTRAINT ego_supply_res_wo_2050_germany_mun_temp_pkey PRIMARY KEY (id) ); @@ -1453,7 +1452,7 @@ CREATE TABLE model_draft.ego_supply_res_wo_2050_germany_mun_temp ALTER TABLE model_draft.ego_supply_res_wo_2050_germany_mun_temp OWNER TO oeuser; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_wo_2050_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','temp','model_draft','ego_supply_res_wo_2050_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); Insert into model_draft.ego_supply_res_wo_2050_germany_mun_temp (wo_units, wo_cap_2035, voltage_level,rs,wo_avg_cap) SELECT @@ -1463,7 +1462,7 @@ SELECT B.rs, avg(A.electrical_capacity) as wo_avg_cap FROM - model_draft.ego_dp_supply_res_powerplant A, + model_draft.ego_dp_supply_res_powerplant A, boundaries.bkg_vg250_6_gem_rs_mview B WHERE ST_Intersects(B.geom, A.geom) @@ -1475,8 +1474,8 @@ Group by A.voltage_level, B.id, B.rs; UPDATE model_draft.ego_supply_res_wo_2050_germany_mun_temp AA -set wo_add_cap_2050 = ((AA.wo_cap_2035::numeric / wo_sq_2035.fs_cap_2035::numeric)*wo_scn_2050.fs_cap_2050 - -AA.wo_cap_2035)::integer +set wo_add_cap_2050 = ((AA.wo_cap_2035::numeric / wo_sq_2035.fs_cap_2035::numeric)*wo_scn_2050.fs_cap_2050 + -AA.wo_cap_2035)::integer FROM ( SELECT @@ -1486,7 +1485,7 @@ SELECT boundaries.bkg_vg250_6_gem_rs_mview A, model_draft.ego_supply_scenario_capacities scn WHERE scn.nuts = substring(A.nuts from 1 for 2) -AND scn.generation_type = 'wind_onshore' +AND scn.generation_type = 'wind_onshore' And scn.scenario_name = 'eGo 100' Group by substring(A.nuts from 1 for 2),scn.capacity,scn.nuts ) as wo_scn_2050, @@ -1502,9 +1501,9 @@ DELETE FROM model_draft.ego_supply_res_wo_2050_germany_mun_temp WHERE wo_add_cap -- Count new additional Units -> new_units UPDATE model_draft.ego_supply_res_wo_2050_germany_mun_temp AA - set wo_new_units = round(wo_add_cap_2050/wo_avg_cap); + set wo_new_units = round(wo_add_cap_2050/wo_avg_cap); --- Control wind onshore development +-- Control wind onshore development SELECT scn.state, SUM(A.wo_add_cap_2050)/1000 wo_add_cap_2050, -- additional Capacity in MW @@ -1513,7 +1512,7 @@ scn.capacity_2050, -- Scenario capacity 2050 in MW (SUM(A.wo_add_cap_2050) +sum(A.wo_cap_2035))/1000 total -- in MW FROM ( -SELECT +SELECT scn.state, scn.nuts, scn.capacity as capacity_2050, @@ -1534,16 +1533,16 @@ Order by scn.state; -- set nuts UPDATE model_draft.ego_dp_supply_res_powerplant as upt set nuts = regions.nuts -from +from boundaries.bkg_vg250_2_lan_nuts_view as regions WHERE ST_Intersects(regions.geom, upt.geom) AND generation_subtype = 'wind_onshore' AND upt.nuts is Null; -- ego scenario log (version,io,schema_name,table_name,script_name,comment) -SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_supply_res_wo_2050_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); +SELECT ego_scenario_log('v0.3.0','output','model_draft','ego_supply_res_wo_2050_germany_mun_temp','ego_db_res_rea_by_scenario.sql',' '); --- Add new wind shore units +-- Add new wind shore units Insert into model_draft.ego_dp_supply_res_powerplant (preversion,id,start_up_date, electrical_capacity, generation_type, generation_subtype, voltage_level, source, comment,geom,scenario,flag) SELECT @@ -1555,7 +1554,7 @@ Insert into model_draft.ego_dp_supply_res_powerplant (preversion,id,start_up_dat 'wind_onshore'::text as generation_subtype, sub.voltage_level, 'open_ego 100'::text as source, - 'Method ProxToNow wind onshore'::text as comment, + 'Method ProxToNow wind onshore'::text as comment, sub.geom, 'eGo 100'::text as scenario, 'commissioning'::text as flag @@ -1564,9 +1563,9 @@ Insert into model_draft.ego_dp_supply_res_powerplant (preversion,id,start_up_dat A.rs, A.voltage_level, Case when A.wo_new_units = 0 Then A.wo_add_cap_2050 - else unnest(array_fill((A.wo_add_cap_2050/A.wo_new_units), Array[A.wo_new_units])) END as electrical_capacity , -- in kW - ST_Centroid(B.geom) as geom - FROM + else unnest(array_fill((A.wo_add_cap_2050/A.wo_new_units), Array[A.wo_new_units])) END as electrical_capacity , -- in kW + ST_Centroid(B.geom) as geom + FROM model_draft.ego_supply_res_wo_2050_germany_mun_temp A, boundaries.bkg_vg250_6_gem_rs_mview B Where A.rs = B.rs @@ -1580,7 +1579,7 @@ Insert into model_draft.ego_dp_supply_res_powerplant (preversion,id,start_up_dat -- set nuts UPDATE model_draft.ego_dp_supply_res_powerplant as upt set nuts = regions.nuts -from +from boundaries.bkg_vg250_2_lan_nuts_view as regions WHERE ST_Intersects(regions.geom, upt.geom) AND generation_subtype = 'wind_onshore' @@ -1604,7 +1603,7 @@ DROP TABLE IF EXISTS model_draft.ego_supply_res_wo_2035_germany_mun_temp CASCADE DROP TABLE IF EXISTS model_draft.ego_supply_res_hydro_2035_temp CASCADE; DROP TABLE IF EXISTS model_draft.ego_supply_res_pv_to_region_temp CASCADE; DROP TABLE IF EXISTS model_draft.ego_supply_res_pv_2035_germany_mun_temp CASCADE; -DROP TABLE IF EXISTS model_draft.ego_supply_res_wo_2050_germany_mun_temp CASCADE; +DROP TABLE IF EXISTS model_draft.ego_supply_res_wo_2050_germany_mun_temp CASCADE; DROP TABLE IF EXISTS model_draft.ego_supply_res_woff_2050_temp CASCADE; DROP TABLE IF EXISTS model_draft.ego_supply_res_biomass_2050_temp CASCADE; DROP TABLE IF EXISTS model_draft.ego_supply_res_pv_2050_germany_mun_temp CASCADE; diff --git a/preprocessing/sql_snippets/ego_dp_structure_boundaries_vg250.sql b/preprocessing/sql_snippets/ego_dp_structure_boundaries_vg250.sql index f6a1c546..a8329a9b 100644 --- a/preprocessing/sql_snippets/ego_dp_structure_boundaries_vg250.sql +++ b/preprocessing/sql_snippets/ego_dp_structure_boundaries_vg250.sql @@ -4,10 +4,11 @@ Inputs are german administrative borders (boundaries.bkg_vg250) Create mviews with transformed CRS (EPSG:3035) and corrected geometries Municipalities / Gemeinden are fragmented and cleaned from ringholes (bkg_vg250_6_gem_clean) -__copyright__ = "Reiner Lemoine Institut" -__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" -__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" -__author__ = "Ludee" +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" + */ -- 1. Nationalstaat (sta) - country (cntry) diff --git a/preprocessing/sql_snippets/ego_dp_structure_census.sql b/preprocessing/sql_snippets/ego_dp_structure_census.sql new file mode 100644 index 00000000..bb1c48b7 --- /dev/null +++ b/preprocessing/sql_snippets/ego_dp_structure_census.sql @@ -0,0 +1,232 @@ +/* +census 2011 population per ha +Extract points with population ( > 0) from census in mview + +__copyright__ = "Reiner Lemoine Institut" +__license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" +__url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" +__author__ = "Ludee" +*/ + + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','input','society','destatis_zensus_population_per_ha','eGo_dp_structure_census.sql',' '); + +-- zensus points with population +DROP MATERIALIZED VIEW IF EXISTS society.destatis_zensus_population_per_ha_mview CASCADE; +CREATE MATERIALIZED VIEW society.destatis_zensus_population_per_ha_mview AS + SELECT a.gid ::integer AS gid, + a.population ::numeric(10,0) AS population, + a.geom_point ::geometry(Point,3035) AS geom_point, + a.geom ::geometry(Polygon,3035) AS geom + FROM society.destatis_zensus_population_per_ha AS a + WHERE a.population >= 0 ; + +-- index (id) +CREATE UNIQUE INDEX destatis_zensus_population_per_ha_mview_gid_idx + ON society.destatis_zensus_population_per_ha_mview (gid); + +-- index gist (geom_point) +CREATE INDEX destatis_zensus_population_per_ha_mview_geom_point_idx + ON society.destatis_zensus_population_per_ha_mview USING GIST (geom_point); + +-- index gist (geom) +CREATE INDEX destatis_zensus_population_per_ha_mview_geom_idx + ON society.destatis_zensus_population_per_ha_mview USING GIST (geom); + +-- grant (oeuser) +ALTER TABLE society.destatis_zensus_population_per_ha_mview OWNER TO oeuser; + +-- metadata +COMMENT ON MATERIALIZED VIEW society.destatis_zensus_population_per_ha_mview IS '{ + "title": "German Census 2011 - Population in 100m grid", + "description": "example metadata for example data", + "language": [ "eng", "ger", "fre" ], + "reference_date": "2016-01-24", + "sources": [ + {"name": "eGo dataprocessing", "description": " ", "url": "https://github.com/openego/data_processing", "license": "GNU Affero General Public License Version 3 (AGPL-3.0)", "copyright": " Reiner Lemoine Institut"}, + {"name": "Statistisches Bundesamt (Destatis) - Zensus2011", "description": " ", "url": "https://www.destatis.de/DE/Methoden/Zensus_/Zensus.html", "license": "Datenlizenz Deutschland Namensnennung Version 2.0", "copyright": "Statistisches Bundesamt, Wiesbaden, Genesis-Online, 2016; Datenlizenz by-2-0"} ], + "spatial": [ + {"extend": "Germany", + "resolution": "100m"} ], + "license": [ + {"id": "dl-de/by-2-0", + "name": "Datenlizenz by-2-0", + "version": "2.0", + "url": "www.govdata.de/dl-de/by-2-0", + "instruction": "Empfohlene Zitierweise des Quellennachweises: Datenquelle: Statistisches Bundesamt, Wiesbaden, Genesis-Online, Abrufdatum; Datenlizenz by-2-0. Quellenvermerk bei eigener Berechnung / Darstellung: Datenquelle: Statistisches Bundesamt, Wiesbaden, Genesis-Online, Abrufdatum; Datenlizenz by-2-0; eigene Berechnung/eigene Darstellung. In elektronischen Werken ist im Quellenverweis dem Begriff (Datenlizenz by-2-0) der Link www.govdata.de/dl-de/by-2-0 als Verknpfung zu hinterlegen.", + "copyright": "Statistisches Bundesamt, Wiesbaden, Genesis-Online; Datenlizenz by-2-0; eigene Berechnung"} ], + "contributors": [ + {"Name": "Ludee", "Mail": "", "Date": "03.02.2016","Comment": "Add table"}, + {"Name": "Ludee", "Mail": "", "Date": "25.10.2016","Comment": "Move table and add metadata"}, + {"name": "Ludee", "email": "", "date": "21.03.2017", "comment": "Update metadata to 1.1"}, + {"name": "Ludee", "email": " ", "date": "2017-03-21", "comment": "Update metadata to 1.2"} ], + "resources": [{ + "schema": { + "fields": [ + {"Name": "gid", "Description": "Unique identifier", "Unit": "" }, + {"Name": "grid_id", "Description": "Grid number of source", "Unit": "" }, + {"Name": "x_mp", "Description": "Latitude of centroid in (ETRS89 - LAEA; EPSG:3035)", "Unit": "" }, + {"Name": "y_mp", "Description": "Longitude of centroid in (ETRS89 - LAEA; EPSG:3035)", "Unit": "" }, + {"Name": "population", "Description": "Number of registred residents", "Unit": "human" }, + {"Name": "geom_point", "Description": "Geometry centroid", "Unit": "" }, + {"Name": "geom", "Description": "Geometry", "Unit": "" } ]}, + "meta_version": "1.2" }] }'; + +-- select description +SELECT obj_description('society.destatis_zensus_population_per_ha_mview' ::regclass) ::json; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','output','society','destatis_zensus_population_per_ha_mview','eGo_dp_structure_census.sql',' '); + + + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','input','society','destatis_zensus_population_per_ha','eGo_dp_structure_census.sql',' '); + +-- census points inside Germany (vg250) +DROP TABLE IF EXISTS model_draft.destatis_zensus_population_per_ha_inside CASCADE; +CREATE TABLE model_draft.destatis_zensus_population_per_ha_inside ( + gid integer, + inside_borders boolean, + CONSTRAINT destatis_zensus_population_per_ha_inside_pkey PRIMARY KEY (gid)); + +-- grant (oeuser) +ALTER TABLE model_draft.destatis_zensus_population_per_ha_inside OWNER TO oeuser; + +INSERT INTO model_draft.destatis_zensus_population_per_ha_inside (gid, inside_borders) + SELECT gid, + FALSE + FROM society.destatis_zensus_population_per_ha; + +-- set if inside borders +UPDATE model_draft.destatis_zensus_population_per_ha_inside AS t1 + SET inside_borders = TRUE + FROM boundaries.bkg_vg250_1_sta_union_mview AS a, + society.destatis_zensus_population_per_ha AS b + WHERE a.geom && b.geom_point AND + ST_CONTAINS(a.geom,b.geom_point) AND + t1.gid = b.gid; + +-- metadata +COMMENT ON TABLE model_draft.destatis_zensus_population_per_ha_inside IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; + + +-- zensus points with population inside vg250 +DROP MATERIALIZED VIEW IF EXISTS model_draft.destatis_zensus_population_per_ha_invg_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.destatis_zensus_population_per_ha_invg_mview AS + SELECT a.gid ::integer AS gid, + a.population ::numeric(10,0) AS population, + b.inside_borders ::boolean, + a.geom_point ::geometry(Point,3035) AS geom_point, + a.geom ::geometry(Polygon,3035) AS geom + FROM society.destatis_zensus_population_per_ha AS a + JOIN model_draft.destatis_zensus_population_per_ha_inside AS b ON (a.gid = b.gid) + WHERE a.population >= 0 AND + b.inside_borders = TRUE; + +-- index (id) +CREATE UNIQUE INDEX destatis_zensus_population_per_ha_invg_mview_gid_idx + ON model_draft.destatis_zensus_population_per_ha_invg_mview (gid); + +-- index gist (geom_point) +CREATE INDEX destatis_zensus_population_per_ha_invg_mview_geom_p_idx + ON model_draft.destatis_zensus_population_per_ha_invg_mview USING GIST (geom_point); + +-- index gist (geom) +CREATE INDEX destatis_zensus_population_per_ha_invg_mview_geom_idx + ON model_draft.destatis_zensus_population_per_ha_invg_mview USING GIST (geom); + +-- grant (oeuser) +ALTER TABLE model_draft.destatis_zensus_population_per_ha_invg_mview OWNER TO oeuser; + +-- metadata +COMMENT ON MATERIALIZED VIEW model_draft.destatis_zensus_population_per_ha_invg_mview IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; + +-- select description +SELECT obj_description('model_draft.destatis_zensus_population_per_ha_invg_mview' ::regclass) ::json; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','output','model_draft','destatis_zensus_population_per_ha_invg_mview','eGo_dp_structure_census.sql',' '); + + + +-- zensus points with population outside vg250 +DROP MATERIALIZED VIEW IF EXISTS model_draft.destatis_zensus_population_per_ha_outvg_mview CASCADE; +CREATE MATERIALIZED VIEW model_draft.destatis_zensus_population_per_ha_outvg_mview AS + SELECT a.gid ::integer AS gid, + a.population ::numeric(10,0) AS population, + b.inside_borders ::boolean, + a.geom_point ::geometry(Point,3035) AS geom_point, + a.geom ::geometry(Polygon,3035) AS geom + FROM society.destatis_zensus_population_per_ha AS a + JOIN model_draft.destatis_zensus_population_per_ha_inside AS b ON (a.gid = b.gid) + WHERE a.population >= 0 AND + b.inside_borders = FALSE; + +-- index (id) +CREATE UNIQUE INDEX destatis_zensus_population_per_ha_outvg_mview_gid_idx + ON model_draft.destatis_zensus_population_per_ha_outvg_mview (gid); + +-- index gist (geom_point) +CREATE INDEX destatis_zensus_population_per_ha_outvg_mview_geom_p_idx + ON model_draft.destatis_zensus_population_per_ha_outvg_mview USING GIST (geom_point); + +-- index gist (geom) +CREATE INDEX destatis_zensus_population_per_ha_outvg_mview_geom_idx + ON model_draft.destatis_zensus_population_per_ha_outvg_mview USING GIST (geom); + +-- grant (oeuser) +ALTER TABLE model_draft.destatis_zensus_population_per_ha_outvg_mview OWNER TO oeuser; + +-- metadata +COMMENT ON MATERIALIZED VIEW model_draft.destatis_zensus_population_per_ha_outvg_mview IS '{ + "comment": "eGoDP - Temporary table", + "version": "v0.3.0" }' ; + +-- select description +SELECT obj_description('model_draft.destatis_zensus_population_per_ha_outvg_mview' ::regclass) ::json; + +-- ego scenario log (version,io,schema_name,table_name,script_name,comment) +SELECT ego_scenario_log('v0.3.0','output','model_draft','destatis_zensus_population_per_ha_outvg_mview','eGo_dp_structure_census.sql',' '); + +/* +-- statistics +SELECT 'destatis_zensus_population_per_ha (with -1!)' AS name, + sum(population), + count(geom) AS census_count +FROM society.destatis_zensus_population_per_ha +UNION ALL +SELECT 'destatis_zensus_population_per_ha_mview' AS name, + sum(population), + count(geom) AS census_count +FROM society.destatis_zensus_population_per_ha_mview +UNION ALL +SELECT 'destatis_zensus_population_per_ha_invg_mview' AS name, + sum(population), + count(geom) AS census_count +FROM model_draft.destatis_zensus_population_per_ha_invg_mview +UNION ALL +SELECT 'destatis_zensus_population_per_ha_outvg_mview' AS name, + sum(population), + count(geom) AS census_count +FROM model_draft.destatis_zensus_population_per_ha_outvg_mview +UNION ALL +SELECT 'ego_demand_la_zensus' AS name, + sum(population), + count(geom) AS census_count +FROM model_draft.ego_demand_la_zensus +UNION ALL +SELECT 'ego_demand_la_zensus_cluster' AS name, + sum(zensus_sum), + count(geom) AS census_count +FROM model_draft.ego_demand_la_zensus_cluster +UNION ALL +SELECT 'ego_demand_loadarea' AS name, + sum(zensus_sum) AS census_sum, + sum(zensus_count) AS census_count +FROM model_draft.ego_demand_loadarea; */ diff --git a/preprocessing/sql_snippets/ego_nep_2015_scenario_capacities.sql b/preprocessing/sql_snippets/ego_nep_2015_scenario_capacities.sql index 20c811cd..391f056f 100644 --- a/preprocessing/sql_snippets/ego_nep_2015_scenario_capacities.sql +++ b/preprocessing/sql_snippets/ego_nep_2015_scenario_capacities.sql @@ -1,11 +1,19 @@ -/* -Setup for scenario capacities NEP 2015 +/* +Create and setup the table model_draft.ego_nep_2015_scenario_capacities for +electrical scenario capacities of the Netzentwicklungsplan 2015, erster Entwurf +per federal state in Germany. + + __copyright__ = "Europa-Universität Flensburg, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" __url__ = "https://github.com/openego/data_processing/blob/master/LICENSE" __author__ = "wolfbunke" */ +------------ +--- ego_nep_2015_scenario_capacities +------------ + -- Create table DROP TABLE IF EXISTS model_draft.ego_supply_scenario_capacities CASCADE; diff --git a/preprocessing/sql_snippets/opsd_powerdata.sql b/preprocessing/sql_snippets/opsd_powerdata.sql index 00e76776..ecaa4e6a 100644 --- a/preprocessing/sql_snippets/opsd_powerdata.sql +++ b/preprocessing/sql_snippets/opsd_powerdata.sql @@ -1,5 +1,6 @@ /* -Setup for OPSD power plants list + +Create ego_conventional_powerplant based on OPSD beta Version of 2015/16 __copyright__ = "Europa-Universität Flensburg, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" @@ -8,7 +9,8 @@ __author__ = "wolfbunke" */ --- OPSD powerplants based on beta version +-------------------------------------------------------------------------------- + -- Table: supply.ego_conventional_powerplant -- DROP supply.ego_conventional_powerplant; diff --git a/preprocessing/sql_snippets/supply_ego_renewable_power_plants_germany.sql b/preprocessing/sql_snippets/supply_ego_renewable_power_plants_germany.sql index 9407dc97..6d1b43eb 100644 --- a/preprocessing/sql_snippets/supply_ego_renewable_power_plants_germany.sql +++ b/preprocessing/sql_snippets/supply_ego_renewable_power_plants_germany.sql @@ -1,5 +1,5 @@ /* -Setup for renewables power plants list +Setup for renewables power plants list of raw data of the status quo in Germany. __copyright__ = "Europa-Universität Flensburg, Centre for Sustainable Energy Systems" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" diff --git a/setup.py b/setup.py index 0cfbaad3..089d6c5d 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name='dataprocessing', - version='0.1-pre', + version='0.3.0', packages=find_packages(), package_data={ 'dataprocessing': [os.path.join('sql_snippets','*.sql')] @@ -21,6 +21,11 @@ 'ego.io >=0.0.1rc4, <= 0.0.2', 'geoalchemy2' ], + extras_require={ + 'docs': [ + 'sphinx >= 1.4', + 'sphinx_rtd_theme', +'sphinxcontrib-httpdomain']}, entry_points={ 'console_scripts': [ 'ego_data_processing = dataprocessing.eGo_data_processing:data_processing', ]} diff --git a/utilities/ego_dp_fix_ehv_subnetworks.sql b/utilities/ego_dp_fix_ehv_subnetworks.sql new file mode 100644 index 00000000..12a2646b --- /dev/null +++ b/utilities/ego_dp_fix_ehv_subnetworks.sql @@ -0,0 +1,439 @@ +DROP SEQUENCE IF EXISTS model_draft.ego_grid_hv_fix_errors_bus_id CASCADE; +CREATE SEQUENCE model_draft.ego_grid_hv_fix_errors_bus_id; +SELECT setval('model_draft.ego_grid_hv_fix_errors_bus_id', (max(bus_id)+1)) FROM model_draft.ego_grid_pf_hv_bus; + +DROP SEQUENCE IF EXISTS model_draft.ego_grid_hv_fix_errors_line_id CASCADE; +CREATE SEQUENCE model_draft.ego_grid_hv_fix_errors_line_id; +SELECT setval('model_draft.ego_grid_hv_fix_errors_line_id', (max(line_id)+1)) FROM model_draft.ego_grid_pf_hv_line; + +DROP SEQUENCE IF EXISTS model_draft.ego_grid_hv_fix_errors_transformer_id CASCADE; +CREATE SEQUENCE model_draft.ego_grid_hv_fix_errors_transformer_id; +SELECT setval('model_draft.ego_grid_hv_fix_errors_transformer_id', (max(trafo_id)+1)) FROM model_draft.ego_grid_pf_hv_transformer; + + +---- 380kV Berlin +--- line doesn't exist in entso-e, substations are 110kV in osm +-- delete 380kV buses nd lines and temporary reconnect one-ports + +/* +UPDATE model_draft.ego_grid_pf_hv_generator +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'Umspannwerk Biesdorf Nord' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'Umspannwerk Biesdorf Nord' AND base_kv = 380); + +UPDATE model_draft.ego_grid_pf_hv_load +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'Umspannwerk Biesdorf Nord' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'Umspannwerk Biesdorf Nord' AND base_kv = 380); + +UPDATE model_draft.ego_grid_pf_hv_storage +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'Umspannwerk Biesdorf Nord' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'Umspannwerk Biesdorf Nord' AND base_kv = 380); + +UPDATE model_draft.ego_grid_pf_hv_load +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'Umspannwerk Lichtenberg' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'Umspannwerk Lichtenberg' AND base_kv = 380); + +UPDATE model_draft.ego_grid_pf_hv_storage +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'Umspannwerk Lichtenberg' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'Umspannwerk Lichtenberg' AND base_kv = 380);*/ + +DELETE FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 380 AND bus_id IN (SELECT bus_i FROM grid.otg_ehvhv_bus_data +WHERE geom IN ('0101000020E6100000E6D4C59C60F02A40A254AE08CF424A40','0101000020E61000000F6844C4280B2B4074AC9C07C1424A40', '0101000020E61000008A5DDBDB2DE92A40372C5789C3424A40', '0101000020E6100000799F91F85E0B2B40277E8D4F25434A40', '0101000020E6100000ADA580B4FF112B40829EBC7E77434A40', '0101000020E6100000C8C54A64F5122B4012EB782DCC444A40') +AND base_kv = 380); + +DELETE FROM model_draft.ego_grid_pf_hv_line WHERE bus0 IN (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom IN ('0101000020E6100000E6D4C59C60F02A40A254AE08CF424A40','0101000020E61000000F6844C4280B2B4074AC9C07C1424A40', '0101000020E61000008A5DDBDB2DE92A40372C5789C3424A40', '0101000020E6100000799F91F85E0B2B40277E8D4F25434A40', '0101000020E6100000ADA580B4FF112B40829EBC7E77434A40', '0101000020E6100000C8C54A64F5122B4012EB782DCC444A40') +AND base_kv = 380); + +DELETE FROM model_draft.ego_grid_pf_hv_transformer WHERE bus1 IN (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom IN ('0101000020E6100000E6D4C59C60F02A40A254AE08CF424A40','0101000020E61000000F6844C4280B2B4074AC9C07C1424A40', '0101000020E61000008A5DDBDB2DE92A40372C5789C3424A40', '0101000020E6100000799F91F85E0B2B40277E8D4F25434A40', '0101000020E6100000ADA580B4FF112B40829EBC7E77434A40', '0101000020E6100000C8C54A64F5122B4012EB782DCC444A40') +AND base_kv = 380); + + +---- 220kV Weiher +--- missing line from Weiher to Uchtelfangen +-- add line +INSERT INTO model_draft.ego_grid_pf_hv_line (line_id, bus0, bus1, s_nom, cables, frequency, topo, geom, length, x) +SELECT nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 220 AND osm_name = 'KW Weiher'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 220 AND osm_name = 'Umspannwerk Uchtelfangen'), + 1040, + 6, + 50, + '0102000020E610000002000000D6DAC30771211C402D969AACD8AA4840650A175E64FC1B4071A44A690DB04840', + '0105000020E610000001000000010200000002000000D6DAC30771211C402D969AACD8AA4840650A175E64FC1B4071A44A690DB04840', + 5.23167613642908 * 1.15, + 5.23167613642908 * 1.15 * 314.15 * 0.001/2; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name, line_id, bus0, bus1, s_nom, cables, frequency, topo, geom, length, x) +SELECT 'NEP 2035', line_id, bus0, bus1, s_nom, cables, frequency, topo, geom, length, x +FROM model_draft.ego_grid_pf_hv_line WHERE topo = '0102000020E610000002000000D6DAC30771211C402D969AACD8AA4840650A175E64FC1B4071A44A690DB04840' AND s_nom = 1040 AND scn_name = 'Status Quo'; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name, line_id, bus0, bus1, s_nom, cables, frequency, topo, geom, length, x) +SELECT 'eGo 100', line_id, bus0, bus1, s_nom, cables, frequency, topo, geom, length, x +FROM model_draft.ego_grid_pf_hv_line WHERE topo = '0102000020E610000002000000D6DAC30771211C402D969AACD8AA4840650A175E64FC1B4071A44A690DB04840' AND s_nom = 1040 AND scn_name = 'Status Quo'; + +---- 220kV Industriepark Höchst +--- wrong voltage-level +-- change v_nom from 220kV to 110kV, add/delete buses, change one-ports buses +/*UPDATE model_draft.ego_grid_pf_hv_generator +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E6100000C208F2600E1321404EED06B1FE094940' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E6100000C208F2600E1321404EED06B1FE094940' AND base_kv = 220); + +UPDATE model_draft.ego_grid_pf_hv_generator +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E610000091281516C01521401894D558490C4940' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E610000091281516C01521401894D558490C4940' AND base_kv = 220); + +UPDATE model_draft.ego_grid_pf_hv_load +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E6100000C208F2600E1321404EED06B1FE094940' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E6100000C208F2600E1321404EED06B1FE094940' AND base_kv = 220); + +UPDATE model_draft.ego_grid_pf_hv_load +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E610000091281516C01521401894D558490C4940' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E610000091281516C01521401894D558490C4940' AND base_kv = 220); + +UPDATE model_draft.ego_grid_pf_hv_storage +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E6100000C208F2600E1321404EED06B1FE094940' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E6100000C208F2600E1321404EED06B1FE094940' AND base_kv = 220); + +UPDATE model_draft.ego_grid_pf_hv_storage +SET bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E610000091281516C01521401894D558490C4940' AND base_kv = 110) +WHERE bus = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E610000091281516C01521401894D558490C4940' AND base_kv = 220); +'*/ + +INSERT INTO model_draft.ego_grid_pf_hv_bus (bus_id, v_nom, geom) +SELECT DISTINCT ON (geom) + nextval('model_draft.ego_grid_hv_fix_errors_bus_id'), + 110, + geom +FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940'; + +INSERT INTO model_draft.ego_grid_pf_hv_bus (scn_name, bus_id, v_nom, geom) +SELECT 'NEP 2035', bus_id, v_nom, geom +FROM model_draft.ego_grid_pf_hv_bus +WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940' AND v_nom = 110 AND scn_name = 'Status Quo'; + +INSERT INTO model_draft.ego_grid_pf_hv_bus (scn_name, bus_id, v_nom, geom) +SELECT 'eGo 100', bus_id, v_nom, geom +FROM model_draft.ego_grid_pf_hv_bus +WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940' AND v_nom = 110 AND scn_name = 'Status Quo'; + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E610000091281516C01521401894D558490C4940' AND base_kv = 110), + bus0 = (SELECT bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940' AND v_nom = 110), + s_nom = 520, + cables = 6, + x = length * 314.15 * 0.0012/2 +WHERE bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E610000091281516C01521401894D558490C4940' AND base_kv = 220) + AND bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940' AND base_kv = 220); + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E6100000C208F2600E1321404EED06B1FE094940' AND base_kv = 110), + bus1 = (SELECT bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940' AND v_nom = 110), + s_nom = 520, + cables = 6, + x = length * 314.15 * 0.0012/2 +WHERE bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E6100000C208F2600E1321404EED06B1FE094940' AND base_kv = 220) + AND bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E61000008FEB3AAF0C152140B97D456DD1094940' AND base_kv = 220); + +DELETE FROM model_draft.ego_grid_pf_hv_bus WHERE bus_id IN +(SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom IN ('0101000020E61000008FEB3AAF0C152140B97D456DD1094940', '0101000020E6100000C208F2600E1321404EED06B1FE094940', '0101000020E610000091281516C01521401894D558490C4940') AND base_kv = 220); + +---220kV subnetwork Heinitz/Saarstahl +--- add 220kV line from Uchtelfangen to Heinitz, in respect to osm and bing +-- this error is maybe fixed in osm +INSERT INTO model_draft.ego_grid_pf_hv_line (line_id, bus0, bus1, length, topo, geom, x, r, s_nom, cables, frequency) +SELECT nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 220 AND osm_name = 'Umspannwerk Uchtelfangen'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 220 AND osm_name = 'Umspannwerk Heinitz'), + 10.6040557238013, + '0102000020E610000002000000650A175E64FC1B4071A44A690DB0484085E1E2CCE9771C40D1DD7BCF2EA94840', + '0105000020E610000001000000010200000002000000650A175E64FC1B4071A44A690DB0484085E1E2CCE9771C40D1DD7BCF2EA94840', + 10.6040557238013 * 314 * 0.001/2, + 10.6040557238013 * 0.109/2, + 1040, + 6, + 50; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name, line_id, bus0, bus1, length, topo, geom, x, r, s_nom, cables, frequency) +SELECT 'NEP 2035', line_id, bus0, bus1, length, topo, geom, x, r, s_nom, cables, frequency +FROM model_draft.ego_grid_pf_hv_line +WHERE scn_name = 'Status Quo' AND s_nom = 1040 AND topo = '0102000020E610000002000000650A175E64FC1B4071A44A690DB0484085E1E2CCE9771C40D1DD7BCF2EA94840'; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name, line_id, bus0, bus1, length, topo, geom, x, r, s_nom, cables, frequency) +SELECT 'eGo 100', line_id, bus0, bus1, length, topo, geom, x, r, s_nom, cables, frequency +FROM model_draft.ego_grid_pf_hv_line +WHERE scn_name = 'Status Quo' AND s_nom = 1040 AND topo = '0102000020E610000002000000650A175E64FC1B4071A44A690DB0484085E1E2CCE9771C40D1DD7BCF2EA94840'; + +---- Verbindung Lübeck-Siems +INSERT INTO model_draft.ego_grid_pf_hv_bus (bus_id, v_nom, geom) +SELECT DISTINCT ON (geom) + nextval('model_draft.ego_grid_hv_fix_errors_bus_id'), + 220, + geom +FROM grid.otg_ehvhv_bus_data WHERE osm_name IN ('Umspannwerk Siems'); + +INSERT INTO model_draft.ego_grid_pf_hv_bus (scn_name, bus_id, v_nom, geom) +SELECT 'NEP 2035', bus_id, v_nom, geom +FROM model_draft.ego_grid_pf_hv_bus +WHERE scn_name = 'Status Quo' AND geom = '0101000020E6100000D38040358C8525403935408972F44A40' AND v_nom = 220; + +INSERT INTO model_draft.ego_grid_pf_hv_bus (scn_name, bus_id, v_nom, geom) +SELECT 'eGo 100', bus_id, v_nom, geom +FROM model_draft.ego_grid_pf_hv_bus +WHERE scn_name = 'Status Quo' AND geom = '0101000020E6100000D38040358C8525403935408972F44A40' AND v_nom = 220; + +INSERT INTO model_draft.ego_grid_pf_hv_line (line_id, bus0, bus1, s_nom, topo, geom, length, x, cables, frequency) +SELECT nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 220 AND osm_name = 'Lübeck'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 220 AND geom = '0101000020E6100000D38040358C8525403935408972F44A40'), + 520, + '0102000020E6100000020000006380D3776E4825406764811FA7F54A40D38040358C8525403935408972F44A40', + '0105000020E6100000010000000102000000020000006380D3776E4825406764811FA7F54A40D38040358C8525403935408972F44A40', + 7.91338283450564 * 1.15, + 314.15 * 0.001 * 7.91338283450564 * 1.15, + 3, + 50; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name, line_id, bus0, bus1, s_nom, topo, geom, length, x, cables, frequency) +SELECT 'NEP 2035', line_id, bus0, bus1, s_nom, topo, geom, length, x, cables, frequency +FROM model_draft.ego_grid_pf_hv_line +WHERE scn_name = 'Status Quo' AND geom = '0105000020E6100000010000000102000000020000006380D3776E4825406764811FA7F54A40D38040358C8525403935408972F44A40' AND s_nom = 520; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name, line_id, bus0, bus1, s_nom, topo, geom, length, x, cables, frequency) +SELECT 'eGo 100', line_id, bus0, bus1, s_nom, topo, geom, length, x, cables, frequency +FROM model_draft.ego_grid_pf_hv_line +WHERE scn_name = 'Status Quo' AND geom = '0105000020E6100000010000000102000000020000006380D3776E4825406764811FA7F54A40D38040358C8525403935408972F44A40' AND s_nom = 520; + +INSERT INTO model_draft.ego_grid_pf_hv_transformer(trafo_id, bus0, bus1, s_nom, x, phase_shift, tap_ratio, topo, geom) +SELECT nextval('model_draft.ego_grid_hv_fix_errors_transformer_id'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 220 AND geom = '0101000020E6100000D38040358C8525403935408972F44A40'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 380 AND geom = '0101000020E6100000D38040358C8525403935408972F44A40'), + 600, + 9.68, + 0, + 1, + '0102000020E610000002000000D38040358C8525403935408972F44A40D38040358C8525403935408972F44A40', + '0105000020E610000001000000010200000002000000D38040358C8525403935408972F44A40D38040358C8525403935408972F44A40'; + +INSERT INTO model_draft.ego_grid_pf_hv_transformer(scn_name, trafo_id, bus0, bus1, s_nom, x, phase_shift, tap_ratio, topo, geom) +SELECT 'NEP 2035', trafo_id, bus0, bus1, s_nom, x, phase_shift, tap_ratio, topo, geom +FROM model_draft.ego_grid_pf_hv_transformer +WHERE scn_name = 'Status Quo' AND geom = '0105000020E610000001000000010200000002000000D38040358C8525403935408972F44A40D38040358C8525403935408972F44A40' AND s_nom = 600; + +INSERT INTO model_draft.ego_grid_pf_hv_transformer(scn_name, trafo_id, bus0, bus1, s_nom, x, phase_shift, tap_ratio, topo, geom) +SELECT 'eGo 100', trafo_id, bus0, bus1, s_nom, x, phase_shift, tap_ratio, topo, geom +FROM model_draft.ego_grid_pf_hv_transformer +WHERE scn_name = 'Status Quo' AND geom = '0105000020E610000001000000010200000002000000D38040358C8525403935408972F44A40D38040358C8525403935408972F44A40' AND s_nom = 600; + +---- 380kV Plattling +--- wrong line connection +-- delete old line and add new one +INSERT INTO model_draft.ego_grid_pf_hv_bus (bus_id, v_nom, geom) +VALUES (nextval('model_draft.ego_grid_hv_fix_errors_bus_id'), + 380, + '0101000020E6100000E1F4899702B52940FA1DD48F97614840'); + +INSERT INTO model_draft.ego_grid_pf_hv_bus (scn_name, bus_id, v_nom, geom) +SELECT 'NEP 2035', bus_id, v_nom, geom +FROM model_draft.ego_grid_pf_hv_bus +WHERE scn_name = 'Status Quo' AND geom = '0101000020E6100000E1F4899702B52940FA1DD48F97614840' AND v_nom = 380; + +INSERT INTO model_draft.ego_grid_pf_hv_bus (scn_name, bus_id, v_nom, geom) +SELECT 'eGo 100', bus_id, v_nom, geom +FROM model_draft.ego_grid_pf_hv_bus +WHERE scn_name = 'Status Quo' AND geom = '0101000020E6100000E1F4899702B52940FA1DD48F97614840' AND v_nom = 380; + +INSERT INTO model_draft.ego_grid_pf_hv_line (line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency) +VALUES (nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND osm_name = 'Umspannwerk Pleinting'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 380 AND geom = '0101000020E6100000E1F4899702B52940FA1DD48F97614840'), + '0102000020E61000000200000030AC43C5F4342A40D8CA9DE357554840E1F4899702B52940FA1DD48F97614840', + '0105000020E610000001000000010200000032000000E1F4899702B52940FA1DD48F976148401D2C5217DFB629402B5327FB42614840CAF6C6B546B92940DE03745FCE604840DF1C098F91BB29403F41182E6160484075EF9705C9BD2940154152FAF85F4840EA91ABFD42C02940C81FB182845F484054AE4BE889C22940171A3ED8185F4840D5592DB0C7C4294041F0F8F6AE5E4840A65B1BCF0CC729409679ABAE435E4840AD6D8AC745C9294031395A7AD95D48402CADD05158CB2940D4827236785D48403535BF5076CD29402B3BB313145D484044F174F8B5CF2940EA5A7B9FAA5C4840EB3E5B62C0D12940B0D69AF7495C4840C30A5CC3B1D329400371C394ED5B4840A16BBAF9A1D52940C65E398C935B4840178F41DDF6D729404C112A82495B4840E58E482586DA2940F855B950F95A484042823D810BDD294038FEFAD7A85A48404CA59F7076DF2940E27899BC5C5A4840650CBD0F51E22940E256E652015A4840203FC0FFFBE42940B3B112F3AC594840C5CC9948C4E72940B6CA5D9555594840896A0025F4E929406304F97E0F59484025F4E967A0EC2940D07F0F5EBB58484035046CAC69EF2940CD1DA2766458484012A5BDC117F22940E6B4029E0F5848403CF4DDAD2CF5294024AF7378AD5748400E9D43BEF0F7294044937A05585748405820D50B99FA2940FE63213A04574840996AC1E677FD294020D099B4A956484063EA533310002A40BB39A63858564840B3CF639467022A40CFC023850D5648400848EAF307052A40A297512CB7554840AB871EE7EC072A4089FF852F5D554840A3135333B50A2A40BC2CDCA8045548403EE2FCF26E0D2A40ACA0B316B0544840A5486359D50F2A40E729615C6054484003931B45D6122A40351D4B6947544840C878944A78162A40CEEE7F3628544840F11879B4CC192A402321DB430C544840416150A6D11C2A40B35F77BAF3534840C1ADBB79AA1F2A403D57A53EDA534840F9307BD976222A404969368FC3534840032BE2CF4B242A4031E076B2E553484071766B990C272A4040C1C58A1A5448404301DBC188292A4063DD2EEA49544840C19206126F2C2A40058651B58254484048B599547E2F2A40ED22F197BB5448406B6A3414D2312A40006A0F20E8544840', + 22.624793411008, + 314.15 * 0.0008 * 22.624793411008, + 1790, + 3, + 50), + + (nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 380 AND geom = '0101000020E6100000E1F4899702B52940FA1DD48F97614840'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND osm_name = 'Schwandorf'), + '0102000020E610000002000000E1F4899702B52940FA1DD48F97614840BBEF0B431D2A2840230697C412A64840', + '0105000020E610000003000000010200000006000000C0EF0B431D2A2840200697C412A64840B2C68FE7E92A2840E88E5951DEA5484060668E9BD02A2840C4149B45DEA5484026FC523F6F2A2840352CA116DEA5484071A4D8767F292840C0EAC891CEA548400A2DEBFEB1282840BCEBC781B2A548400102000000040000006B6A3414D2312A40006A0F20E85448405AFBF14D89322A40263218C8585548407AD10D034C332A40B566D0758655484044AC43C5F4342A40D9CA9DE3575548400102000000CE0000000A2DEBFEB1282840BCEBC781B2A5484067E77E98CE2828402497FF907EA54840D026874F3A292840823D810B0DA548408ED7721D99292840688297CFA8A4484084DCA051152A28403430F2B226A44840BFDD488F952A2840FDAEBE709DA348402B4F20EC142B2840CA260A3E17A34840C2590009792B2840E8065449AEA24840FC45BF6CF12B2840A19FA9D72DA24840031203136E2C28408CA03193A8A148402E07D561E02C2840A60EF27A30A14840E801E264D12E28407B88467710A1484060A7FD7B9531284063145F48E2A0484059880E81233528408CE8E802A8A048400475CAA31B392840847F113466A04840B47B4D6AC33C2840A3B1513129A04840683EE76ED73F2840F85BF1C3F79F484047489341A4412840C4E347A1D19F4840468E194DD3442840ECEA9FF18E9F4840C48FD6BDBA4728403E0F49884D9F4840D09D60FF754A2840319CC651149F4840558440D3B74D28400E2840B9129F4840D604ACB074512840F2BEE0890F9F4840BA7C355195542840CF4A5AF10D9F48406ADF3719B0572840EF5B08CD099F4840238216B7765B2840906D7429099F4840B05CCA541C5E28405E448078029F4840EFEC86C844612840F08398F0F09E4840A88A4E3BA164284039C3C36AE29E4840EDF1423A3C682840C49B9031D29E4840329FBD44066B28403CE3569CC59E484089A8D3CB396E2840C7BB2363B59E4840F10D85CFD6712840E1687D80A49E4840A125D9340075284015D4A6A0919E4840C86EB081BE76284032DD90EB4B9E484061F998B44E792840FDEC9117E39D48404F01D5E4CE792840768071BA769D484050768E5C927A28400DD30847DA9C4840E158BCFD5E7B284079D388F4369C4840F1F62004E47B284049BA66F2CD9B4840FADB5493967C284003CC7C073F9B484093F139C1487D284082F3F3F0AF9A4840AB6FAAFFBD7D28401222CFE4519A4840F17F4754A87E284001E77BFC94994840BC410F10277F284058B9612530994840291B7B9BA37F2840A4816962CB984840C5DF9B4B168028403128D36872984840F8F829334A8028406D09545ADA974840943AB7BF698028409C29BEEB7D974840667EDA4D95802840191AF44AFE964840B5F6E39B12812840AD78D965AE9648406242716CE2812840E55828E32996484035AB88E4758228400947DAD7CB95484079A235502A832840BBF1EEC858954840612129D8358428401258EF26AE9448409816F549EE842840E30D7A8038944840B00FFCB9B285284094957032BB93484062597A7E62862840748A9F104B934840EB45A3F1FA862840415365CEE99248406D4ECA49CD872840870B8A308F924840AD9E3825C588284045C9F50027924840E28A30EAFF8928400C923EADA29148406B4EB91D758B2840FD5DE9C6059148402E85515AC98C2840B741EDB7769048406166440EB68D284008AD872F13904840C5F13279B98E284004DD0319A68F48400AF31E679A902840C60B337E2B8F4840EC8E20F01B92284046990D32C98E48402AE9BC21E8932840E72620DC538E48407DEC8909C5952840FB952941DA8D4840A5468DAE7798284021E3F6706E8D4840E7954627A69A284089658E40178D4840A8A55E5C4F9D284066B8A6E5AC8C4840EE26F8A6E99F284078A27FDD448C48406C15B3147FA2284015A930B6108C4840D4884FF003A6284003A4479DCA8B4840361488E821A82840A32F73709F8B4840F743C769E3AB2840A00491A0538B4840EE00F4A045AF2840A5C5747C0F8B4840FFB7EDD68DB22840DE93E23ECD8A48407111291774B428403F092241A78A48402480F67EFEB62840A60A4625758A4840B032BF3F4AB9284052D4997B488A4840F6C2537E08BC28407EC34483148A48403636E0980ABE2840BC067DE9ED894840E785E05DD3C02840C54D57C1B9894840C5DC5ACB09C32840FEB1B5638F89484009A469F57AC42840082F0B372A894840589643E625C62840BB0D6ABFB5884840EA2DD45059C72840BC2EB2536288484005FE4BAD52C928407A05FDE0D78748404584DACAA6CB284032E5435035874840A2A476757DCD284056ECD401B5864840D51CC5DE30CE28408C0EED084C864840DA9486753ECF284099017855B18548404E97C5C4E6CF2840E7E4A0DF52854840D5BF35C181D228407978CF81E584484031653B3A09D428409A5A5B1DA584484031074147ABD6284020A8644A3584484047F9EEFBDCD92840AD0210D2AE8348409E06B1D8CBDB284012B57E445D8348406F5287CBE0DE2840848DA152DB8248405CCCCF0D4DE128407D5D86FF748248401FBDE13E72E3284051B0B5AD1C824840A96E89B729E52840EE485057D28148403242D36DE4E5284071CEE38B51814840F63988E7B6E628409B3347FBC48048404E42E90B21E72840A74709B07E80484012BC218D0AE828407BCCF6D7E17F48407480BB4791E828406056CD188B7F48407E4056A64EEA2840E94DA0E3FE7E484026DEA6E441EB2840932A9B83B17E48401C768478C9EC2840DA38622D3E7E4840116C01463CEE28406ECACB50CB7D4840175F590E99EF2840B24AE9995E7D4840DDCEBEF220F12840484A1F5FE77C48402CA0AB0892F22840F992D794757C48408C7D6E0D11F428408F78680EFF7B48408C88BDAB79F5284087DD770C8F7B484078E62F3E16F8284015B3B9C5577B48404076CD9A0EFB2840DBCD42F1197B484051BF0B5BB3FD284074DB74BAE27A48402F675B7281002940D4DC651AA87A48402DCDAD105603294069DDABFB6C7A4840C5758C2B2E06294058B329B2317A4840DDCAB7E3F2082940F25602CEF7794840FF31BE79BB0B294093A3A597BD79484073CAEDA87B0E294028B85851837948403CB02D4D5B11294083D4377A4679484065FF3C0D18142940FF44C07C0D794840BF72CE99FE1629406B28B517D17848400D0055DCB81929408934E0E297784840D96212899D1C29407E4397265B7848405B1A097E651F29403DD7F7E12078484051943AB7BF21294030C912E7F2774840C63945A22B242940794F2F42C27748406412E456F7262940E895FC998B77484063FDB0EFD4292940830BC3915177484049A2F20A9F2C2940DAF51CA21B774840F0976082642F294002767F06E57648407E384888F2312940C985144DB1764840FFBC5FBB6A342940B8509E1E80764840CC71B8A00837294003E32A604C76484085ABA8667B392940A49AA3D81B764840E443F57B073C2940ACAD3319E975484073F0F1AE1F3F29403D6D437BAB75484049A93A9AD9412940C4094CA7757548401F42A6C695442940B6D210FA3E754840F50AB034954629407728AF3A17754840737A83D49247294012BCC6D397744840F1CD80C4C0482940FB90B75CFD734840967DB2BD714929407D19D69EA37348406ADFDC5F3D4A2940E87CC2233B734840C4BC7D0C0C4B294028CB5A54D5724840E2033BFE0B4C2940337678BE557248406027501FDC4C2940DCA799A4E87148400EEDAD92D94E2940E3E13D07967148404FC9DEF714512940FA0159993A71484017B1F4465253294070445266DE704840102A2790C855294063B323D577704840C1D6B672405829404A2C84301270484061F1E54F655A29403C50A73CBA6F48400245D1A8655C2940FB0B981B676F4840ED24C742195F2940C967C3ABF66E484094BF7B478D6129407937BB5A936E4840ED35F39A0D6429407F29A84D416E4840C2F1214D61662940C3D89D49F66D4840F51E1D0D966829405389FC44AF6D4840823D810B0D6B29405270C2CE5E6D48404F53701D886D2940BDD930540F6D484070F32103D46F2940C4ACBC89C66C4840B1F4465277722940A9C0C936706C484032D6EDA29E74294085AC133C2A6C484052071E842577294044EC0214D96B4840386A85E97B79294005A96FF48C6B4840089E31827C7B2940C7CA79104C6B4840B7B82121257D2940A20337F7FC6A48403B8BDEA9807F2940A708CB338A6A4840C3E4FC039B81294029EACC3D246A48400EA320787C83294058665B17C8694840BB5A931392852940C77A0F3C636948405E6CB5E2768729409D2166400769484042621635F3872940FB35FEE9AB6848402F23AB11B0882940074E6CF420684840FABDA83869892940F9CFE4AC99674840DD32969F0A8A294011F0B5B123674840E1777874C88A29402614C7269E6648408DD5E6FF558B294007FE0120386648402FCAC749BC8B2940EC00E374ED65484076662728EA8D2940126C5CFFAE6548402CEADD697C9029406C996780666548408901B7932D932940F8CC48731A654840197DBBDBAB95294058CBF852D3644840C2572A5E1B9829408ECEF9298E6448406241ABDDC09A29406EBEB62341644840D988168F419D2940EB1791CDFA634840D8ED5811DA9F29407C5E961BB16348400BF7802F3BA22940154FE2186E634840429A0C22ADA42940EA1560692A6348408C45782057A7294030A3B327DC6248400FB16609D7A82940B18BFDC0B062484025523F1471AB2940A8DF2AF466624840B00A2F1C63AE294037177FDB136248405E471CB281B02940C72C7B12D8614840309DD66D50B3294082D94EA5B0614840E1F4899702B52940FA1DD48F97614840', + 90.5604456325126, + 314.15 * 0.0008 * 90.5604456325126, + 1790, + 3, + 50), + + (nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE v_nom = 380 AND geom = '0101000020E6100000E1F4899702B52940FA1DD48F97614840'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND geom = '0101000020E6100000C000DCEF17B429409E0779BEB3614840'), + '0102000020E610000002000000E1F4899702B52940FA1DD48F97614840C000DCEF17B429409E0779BEB3614840', + '0105000020E610000001000000010200000002000000E1F4899702B52940FA1DD48F97614840C000DCEF17B429409E0779BEB3614840' + 0.162698660268822, + 314.15 * 0.0008 * 0.162698660268822, + 1790, + 3, + 50); + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name, line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency) +SELECT 'NEP 2035', line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency +FROM model_draft.ego_grid_pf_hv_line +WHERE scn_name = 'Status Quo' AND topo IN ('0102000020E61000000200000030AC43C5F4342A40D8CA9DE357554840E1F4899702B52940FA1DD48F97614840','0102000020E610000002000000E1F4899702B52940FA1DD48F97614840BBEF0B431D2A2840230697C412A64840','0102000020E610000002000000E1F4899702B52940FA1DD48F97614840C000DCEF17B429409E0779BEB3614840') AND s_nom = 1790; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name, line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency) +SELECT 'eGo 100', line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency +FROM model_draft.ego_grid_pf_hv_line +WHERE scn_name = 'Status Quo' AND topo IN ('0102000020E61000000200000030AC43C5F4342A40D8CA9DE357554840E1F4899702B52940FA1DD48F97614840','0102000020E610000002000000E1F4899702B52940FA1DD48F97614840BBEF0B431D2A2840230697C412A64840','0102000020E610000002000000E1F4899702B52940FA1DD48F97614840C000DCEF17B429409E0779BEB3614840') AND s_nom = 1790; + +DELETE FROM model_draft.ego_grid_pf_hv_line WHERE bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND osm_name = 'Umspannwerk Pleinting') AND bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND osm_name = 'Schwandorf'); + +DELETE FROM model_draft.ego_grid_pf_hv_transformer WHERE bus1 = (SELECT DISTINCT ON (bus_i) bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380AND geom = '0101000020E61000002F70D819E6B4294094DDFA53EE614840'); + +DELETE FROM model_draft.ego_grid_pf_hv_bus WHERE geom = '0101000020E61000002F70D819E6B4294094DDFA53EE614840' AND v_nom = 380; + +---- 380kV Weisweiler +--- missing connection from powerstation to 380kV line +-- add 380kV line +INSERT INTO model_draft.ego_grid_pf_hv_line (line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency) +SELECT nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND geom = '0101000020E610000050D9BE3268491940C27D4210236B4940'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 380 AND geom = '0101000020E6100000FE4C1828844919408E469968EB6A4940'), + '0102000020E61000000200000050D9BE3268491940C27D4210236B4940FE4C1828844919408E469968EB6A4940', + '0105000020E61000000100000001020000000200000050D9BE3268491940C27D4210236B4940FE4C1828844919408E469968EB6A4940', + 0.189094013858938 * 1.15, + 314.15 * 0.0008 /2 *0.189094013858938 * 1.15, + 3580, + 6, + 50; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name, line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency) +SELECT 'NEP 2035', line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency +FROM model_draft.ego_grid_pf_hv_line +WHERE scn_name = 'Status Quo' AND topo = '0102000020E61000000200000050D9BE3268491940C27D4210236B4940FE4C1828844919408E469968EB6A4940' AND s_nom = 3580; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name, line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency) +SELECT 'eGo 100', line_id, bus0, bus1, topo, geom,length, x, s_nom, cables, frequency +FROM model_draft.ego_grid_pf_hv_line +WHERE scn_name = 'Status Quo' AND topo = '0102000020E61000000200000050D9BE3268491940C27D4210236B4940FE4C1828844919408E469968EB6A4940' AND s_nom = 3580; + + + +---- Umspannwerk Marke +--- lines are not connected to the station in Marke +-- connect lines to the station + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 110 AND geom = '0101000020E6100000E68C989C3B86284098C783C0D9DE4940') +WHERE geom = '0105000020E610000002000000010200000003000000BC8CAC46C0862840B5D084DCFBDE494027214729D786284060BD40FFF3DE494069FE3D1D34882840A6CEED6F1ADF494001020000002E000000165685611B64284006E9184630E84940B225F5AFF6652840770E0AEF17E84940377F02DEB86728400CC2267C00E84940E39EF87B73692840547CD7FBE8E749406B4AB20E476B28406C9E7EABD0E74940A74AEF76186E2840490158D3ABE74940A83D80A037702840995CD60E90E74940344A97FE2571284098CC672F91E74940EED9CE520D7228406198028871E7494052031775F7722840D7DB0B7151E74940B11D8CD827742840D2F93ABA5BE74940EEA1D8655375284067AE1DD665E74940000CBA731777284096A1855F45E74940F6211400887828409A756B3E53E749404776A565A47A2840D3F0773936E74940209E25C8087C28401F5CF05822E74940BA539511727D28408EE5023C0EE74940DB1CE736E17E2840BE06335CD3E649403AAEEBBC328028407A2CC7759DE6494078C6AD388B8128402016C50666E64940D2D73DC3E5822840D73CA29D2EE649404F9FD3E24284284088026CF6F6E5494059A42EBE0D862840073AA462ADE5494096287B4B39872840C60490357EE5494013807F4A958828408A1B5CDF2CE5494015D67C4BEF8928402A6A7A9ADDE44940AFA4CB51368B2840397C77D091E44940927C2590128B2840CE5FD7E54AE44940CDC75AE8EF8A28401CC5837703E44940D83DC3E5C28A2840AE084845ADE3494053B648DA8D8A2840F6CCDC8D4FE34940824A4B9B608A2840FA0B3D62F4E24940E1DEEB5A318A28402DEBA3F89DE24940DED506825B8A28402509C21550E249406E2A9CEE868A284012DB824A01E24940615793A7AC8A28403F20D099B4E149403E5DDDB1D88A28400AE69E6461E14940642FCA22038B2840425DA45016E14940C753EAED2A8B2840F009C84DC3E04940CD5CE0F2588B2840E6E4EA6C6DE04940DE4FD724898B284031DE454E15E0494074A95B87B48B2840452E3883BFDF494031197DBBDB8B2840E86F9DDA74DF494098530262128A2840922749D74CDF4940C42F50AD19882840021B6BDA20DF4940BC8CAC46C0862840B5D084DCFBDE4940' AND s_nom = 520; + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 110 AND geom = '0101000020E6100000E68C989C3B86284098C783C0D9DE4940') +WHERE s_nom = 1040 AND geom = '0105000020E61000000100000001020000003400000069FE3D1D34882840A6CEED6F1ADF494069FE3D1D34882840A6CEED6F1ADF4940D034BCB43C8A28407668FDD247DF494054104DEA158C28409D88D92670DF4940F3C3526EEC8B28404D73E1F6BADF494081608E1EBF8B284089EFC4AC17E049404B2F206A918B2840B646A9296EE04940F1976082648B2840F522241CC4E0494058B66A323E8B2840F4401A040CE14940FC6E5FAC148B284074733B4558E14940C565CBA8E88A28407FA4880CABE14940A3E8818FC18A2840A96A82A8FBE14940C8DA3A93918A2840496F13494FE24940FFD0CC936B8A28405E3931DA99E24940FB7F304B968A28405CF80B87EFE24940AAE27CA0CB8A2840B4C3A92050E34940E540B4FBFA8A284072EA5E82AEE34940FD5877E2288B2840945742D202E4494098BFE72C588B2840B8BF69B05FE449403B6178DB3B8D2840EF3614E3A1E44940281A5A530F8F28406889DF5EE3E449407F2CE9CD4D902840FCBF8F0F1FE549404504D2B47A9128408CB5094158E549400F7D1C72D8922840C9E9EBF99AE54940097481261D9428406E293119D8E5494095DB51F75C9528403D30DBA914E64940CCCE47BEB7962840CF9662FD55E64940A5F6C7201C9828407D6C81F398E6494022B3695B839928401F66D421DCE64940F66F4D70A09A2840974DCAEE13E749409004D0DECF9B2840E6E324DE4BE7494007C36FF9FE9C2840C8478B3386E7494033A083D3279E28409C95A3B6C3E749400BDDDBE33B9F28409030B19EFFE74940BD2B71D355A02840F49A0DE83BE84940BF805EB873A12840C2E3367579E849401784F23E8EA2284033A0281AB5E849405876C1E09AA328401BAD591DEFE849401106F93482A4284066225B4C22E949406F5633219CA52840FE7F9C3061E949407F0FA848CFA628404CD18030A6E949409AEBD918E0A7284027101BD1E2E949406ECCA1FB28A92840BF8A42812DEA4940B782A62556AA284055EA48E471EA4940CA9BB28982AB284093F650ECB2EA4940F8C77BD5CAAC2840B52CA924FCEA4940C24AAA5BE2AD284095AC79443BEB49408F0BBDB497AF28403B3F202B53EB49408D92A17433B12840A14495AB69EB49403CE75DABF3B22840ED8B3A2982EB49402CC313D5B6B428404C3ED1D09AEB49402CC313D5B6B428404C3ED1D09AEB4940'; + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus1 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 110 AND geom = '0101000020E6100000E68C989C3B86284098C783C0D9DE4940') +WHERE s_nom = 520 AND geom = '0105000020E61000000100000001020000001F0000003FBF396DD7C5284066DAA3DC22DC49403FBF396DD7C5284066DAA3DC22DC494034EDAC2704C428402B5E1BE038DC494042F806150BC2284018B1F44652DC4940C2413168D7BF284082AFE8D66BDC49402E1801BAD4BD2840B68075C185DC49406AFD2D01F8BB2840510F762F9CDC494075E789E76CB9284087D2CDB4B3DC4940CBC16C020CB728407C50AB43C9DC4940CF3A3EB555B428400A6D3997E2DC4940D4B430B033B228404E94CED1F4DC49405BE55311B8AF2840EE974F560CDD4940B7627FD93DAD2840427A8A1C22DD4940EA944737C2AA284037F867AB37DD49401351A79773A82840209A79724DDD49404EA14ED42DA628404BBB873A62DD4940F22BD67091A32840CED36F157ADD494001F676F0B8A12840CDF6D7E19EDD4940026A6AD95A9F2840204F26C9CEDD4940FD07477F1E9D2840DFD9684AFCDD494025C4A6DFCF9A28405B3B9B9F2CDE49402918DF6124992840672C9ACE4EDE4940D525E318C996284042F2295B7FDE494001B562C966942840723216F2ADDE494029DD4C3BEB91284016359886E1DE49400405DEC9A78F2840B892C2610EDF49404525BF8FB48D2840FCAD9D2809DF49405D959FAFB48B28404CA544B703DF4940B87E55890D8928405566EF31FDDE494094E7B0B10187284073874D64E6DE494094E7B0B10187284073874D64E6DE4940'; + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 110 AND geom = '0101000020E6100000E68C989C3B86284098C783C0D9DE4940') +WHERE s_nom = 520 AND geom = '0105000020E61000000100000001020000002A0000003308628F3F872840068B1E53D2DE49400E901E752A872840C1971D3DD9DE494037525B8F67882840E2DC15B0D3DE4940E55E059DB5882840298705AD76DE494073CA92EF0889284060764F1E16DE49400E18247D5A89284044A9BD88B6DD49401FD55526A18928402961A6ED5FDD49405BC6979A4E882840EF05668522DD4940BFFB3E77DD8628404D0C1357DFDC4940BD7A70D28F852840E3E47E87A2DC494020B017AF1E842840E8B9CF3B5FDC4940F416B435C7822840C6D4A76620DC49407E2C335B6881284058B49487E0DB49405463F83E0B80284008DB3E9AA0DB4940E3B32BE3957E2840E97D88B25CDB4940A6619DCF257D2840BE2A61B719DB49406339F878D77B2840B3AFE18EDCDA494054D625998B7A28408BD3FF28A0DA4940A553B2F73D7928406944C42863DA4940BE384C8F01782840984B4FFD28DA4940033972EEC0762840154C46DFEED94940DA733EE19175284020717E79B7D949401AA54BFF927428407970C16389D9494013FEFB427E742840E1078C9A54D9494049275CD94F742840FE3DC27AEDD84940A79B1FDA22742840C6C551B989D849409C1DA9BEF3732840678AEF7A1FD849409B19A2AFC57328403166A60FB8D7494066EC3A0AC6732840589A4AF553D74940FA916CBFC673284006BD378600D74940B0027CB77973284023F6AEE6A5D64940789F3E5D3873284037FBA82B44D64940428EF7F422742840E94427F0F3D54940CE870C50BF742840D36C1E87C1D549405B417859B875284052C9EF236DD549401D6217A0C87628407407567A12D54940F9A067B3EA772840FEDA55A3B2D449409008D7EDFD772840A70705A568D449408E4AA07719782840019C285316D449402A9721E92E78284071276C9AD2D34940B4E6C75F5A782840D8344AF2B7D34940B4E6C75F5A782840D8344AF2B7D34940'; + +UPDATE model_draft.ego_grid_pf_hv_line +SET bus0 = (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE base_kv = 110 AND geom = '0101000020E6100000E68C989C3B86284098C783C0D9DE4940') +WHERE s_nom = 520 AND geom = '0105000020E6100000010000000102000000410000003308628F3F872840068B1E53D2DE49403308628F3F872840068B1E53D2DE494021C610A5628828402544543C89DE4940A7875748AF882840EFF4392D2EDE494016BA5C0E05892840EC055559CADD4940BAB42B3E4F89284037A38BF271DD4940EF5FB422C5872840704EDB7525DD49402DB87AA9338628409980046AD6DC49408D16FB26A8842840C07EE3C688DC494035C69805248328408C8FAA8141DC4940D4635B069C812840E027582DFADB49401E3691990B802840F37A8BE2B0DB4940B4C46FAF717E28407975334866DB4940C4A92050477D284005CF73FA30DB49407C9C69C2F67B284007EE409DF2DA4940DD66857D967A2840A54DD53DB2DA49407561FFD027792840DF910C946FDA494080619E3AFB772840A24CFE8238DA4940F3E7DB82A5762840D41D7A41FAD949404BA82A7E9D752840F2800DE3C9D9494021DFEF6140742840C01C870B8AD94940FF4A427D2672284026E2ADF36FD9494009D51753FA6F28401649601855D949400577FB07EC6D2840653C4A253CD949402C387293076C2840003153A40CD94940645694B7C86A2840974E35C4C2D84940B4D0292389692840C3E96EE877D84940B9910DFF44682840E4665D482CD8494049EA4EC12B67284080E89326EFD749405D01E0336D66284001608610A1D749402F0906C6B0652840AC22DC6454D749408FDC3FBBE8642840E20E2FE301D74940C0C1CD98386428405AF9C0E9B8D64940D363A593B6622840833BAB60AFD649405B046B419460284054162AA4A1D649403181B630665E2840C7BA5DD493D649408514F2F7415C2840C2429C3D86D6494070F2B62D255A2840A52CE86278D649405BDF76572C58284040EE6CD96BD6494045C82F720556284083B2DFC95DD64940C88ED7CDD6532840F52801D64FD64940B4DF2417AD512840D3DF4BE141D649404692C5A28E4F2840397AA12534D64940A6E727E66A4D28403A07CF8426D649406EC72F174C4B2840A0A124C918D64940E3A8DC442D492840727CA30C0BD649400A01AF850F4728402610655EFDD549409E1BE43FEE442840F7EAE3A1EFD5494076487BCDBC42284087A8C29FE1D5494084A279008B402840D6480158D3D54940AC62E06F6A3E2840A723809BC5D549400951BEA0853C28406077BAF3C4D5494021C19EC0853A2840AE8ACB4CC4D549405B3A30CA7D382840499748B3C3D549402BC0779B3736284002EB820BC3D54940A2A41BBC0A342840BB3EBD63C2D549400735327ED03128402C28B110C2D549408BFED0CC932F2840F157B730C1D54940E8F9D346752E2840E57BEB68C1D549404F07B29E5A2D28406DDCAC0B89D54940F55CF0B3DB2C28407ADC01E841D54940BFBED6A5462C28406F974748EED44940D9182AB5CD2B2840CD13BEADAAD449406AE21DE0492B284047C2082B5FD449406AE21DE0492B284047C2082B5FD44940'; + +DELETE FROM model_draft.ego_grid_pf_hv_line WHERE s_nom = 260 AND geom = '0105000020E6100000010000000102000000040000003308628F3F872840068B1E53D2DE49400E901E752A872840C1971D3DD9DE49405E72929C02872840A308A9DBD9DE494094E7B0B10187284073874D64E6DE4940'; + +---- Umspannwerk Jessen Nord +--- missing 110kV lines +-- add lines manually, THIS MIGHT BE FIXED WHEN UPDATING OSM-DATA! + +INSERT INTO model_draft.ego_grid_pf_hv_bus (scn_name, bus_id, v_nom, geom) +VALUES ('Status Quo', nextval('model_draft.ego_grid_hv_fix_errors_bus_id'), 110, ST_SetSRID(ST_Point(13.0317764, 51.7792147), 4326)), + ('Status Quo', nextval('model_draft.ego_grid_hv_fix_errors_bus_id'), 110, ST_SetSRID(ST_Point(13.0289850, 51.7797518), 4326)); + +INSERT INTO model_draft.ego_grid_pf_hv_bus (scn_name, bus_id, v_nom, geom) +SELECT 'NEP 2035', bus_id, v_nom, geom +FROM model_draft.ego_grid_pf_hv_bus +WHERE scn_name = 'Status Quo' AND geom IN (ST_SetSRID(ST_Point(13.0317764, 51.7792147), 4326), ST_SetSRID(ST_Point(13.0289850, 51.7797518), 4326)) AND v_nom = 110; + +INSERT INTO model_draft.ego_grid_pf_hv_bus (scn_name, bus_id, v_nom, geom) +SELECT 'eGo 100', bus_id, v_nom, geom +FROM model_draft.ego_grid_pf_hv_bus +WHERE scn_name = 'Status Quo' AND geom IN (ST_SetSRID(ST_Point(13.0317764, 51.7792147), 4326), ST_SetSRID(ST_Point(13.0289850, 51.7797518), 4326)) AND v_nom = 110; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name,line_id, bus0, bus1, x, r, g, b, s_nom, length, cables, frequency, geom, topo ) +VALUES + ('Status Quo', + nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'UW Jessen Nord' AND base_kv = 110), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0317764, 51.7792147), 4326) AND v_nom = 110), + 0.6138, + 0.17754, + 0, + 0.000019455, + 520, + 3.3, + 6, + 50, + '0105000020E610000001000000010200000002000000B9910DFF44102A40FE87AA4EBDE34940204C62AEFA1D2A402EA5F4F75DE64940', + '0102000020E610000002000000B9910DFF44102A40FE87AA4EBDE34940204C62AEFA1D2A402EA5F4F75DE64940' + ), + + ('Status Quo', + nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE osm_name = 'UW Jessen Nord' AND base_kv = 110), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0289850, 51.7797518), 4326) AND v_nom = 110), + 0.6138, + 0.17754, + 0, + 0.000019455, + 520, + 3.3, + 6, + 50, + '0105000020E6100000010000000102000000020000002D26361FD70E2A40A2FF2FE8CEE34940204C62AEFA1D2A402EA5F4F75DE64940', + '0102000020E6100000020000002D26361FD70E2A40A2FF2FE8CEE34940204C62AEFA1D2A402EA5F4F75DE64940'); + +UPDATE model_draft.ego_grid_pf_hv_line + SET + bus1 = (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0317764, 51.7792147), 4326) AND v_nom = 110), + length = 15.9, + x = 6, + r = 1.735, + b = 0.0000475, + geom ='0105000020E610000001000000010200000002000000B9910DFF44102A40FE87AA4EBDE349406D49FDAB7D682A40EC2411D033DA4940', + topo = '0102000020E610000002000000B9910DFF44102A40FE87AA4EBDE349406D49FDAB7D682A40EC2411D033DA4940' + WHERE topo = '0102000020E6100000020000006D49FDAB7D682A40EC2411D033DA49406AB8C23255F22940ED1AB07B44E54940' AND s_nom = 260 +; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name,line_id, bus0, bus1, x, r, g, b, s_nom, length, cables, frequency, geom, topo ) +VALUES ('Status Quo', + nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0317764, 51.7792147), 4326) AND v_nom = 110), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0289850, 51.7797518), 4326) AND v_nom = 110), + 0.0755, 0.0218, 0, 0.000000597, 260, 0.2, 3, 50, + '0105000020E610000001000000010200000002000000B9910DFF44102A40FE87AA4EBDE349402D26361FD70E2A40A2FF2FE8CEE34940', + '0102000020E610000002000000B9910DFF44102A40FE87AA4EBDE349402D26361FD70E2A40A2FF2FE8CEE34940' + ), + + ('Status Quo', + nextval('model_draft.ego_grid_hv_fix_errors_line_id'), + (SELECT DISTINCT ON (bus_id) bus_id FROM model_draft.ego_grid_pf_hv_bus WHERE geom = ST_SetSRID(ST_Point(13.0289850, 51.7797518), 4326) AND v_nom = 110), + (SELECT bus_i FROM grid.otg_ehvhv_bus_data WHERE geom = '0101000020E61000006AB8C23255F22940ED1AB07B44E54940' AND base_kv = 110), + 1.547, 0.447, 0, 0.000012249, 260, 4.1, 3, 50, + '0105000020E6100000010000000102000000020000006AB8C23255F22940ED1AB07B44E549402D26361FD70E2A40A2FF2FE8CEE34940', + '0102000020E6100000020000006AB8C23255F22940ED1AB07B44E549402D26361FD70E2A40A2FF2FE8CEE34940'); + + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name,line_id, bus0, bus1, x, r, g, b, s_nom, length, cables, frequency, geom, topo ) +SELECT 'NEP 2035', line_id, bus0, bus1, x, r, g, b, s_nom, length, cables, frequency, geom, topo +FROM model_draft.ego_grid_pf_hv_line WHERE scn_name = 'Status Quo' AND topo IN ('0102000020E6100000020000006AB8C23255F22940ED1AB07B44E549402D26361FD70E2A40A2FF2FE8CEE34940', '0102000020E610000002000000B9910DFF44102A40FE87AA4EBDE349402D26361FD70E2A40A2FF2FE8CEE34940', '0102000020E6100000020000002D26361FD70E2A40A2FF2FE8CEE34940204C62AEFA1D2A402EA5F4F75DE64940', '0102000020E610000002000000B9910DFF44102A40FE87AA4EBDE34940204C62AEFA1D2A402EA5F4F75DE64940'); +; + +INSERT INTO model_draft.ego_grid_pf_hv_line (scn_name,line_id, bus0, bus1, x, r, g, b, s_nom, length, cables, frequency, geom, topo ) +SELECT 'eGo 100', line_id, bus0, bus1, x, r, g, b, s_nom, length, cables, frequency, geom, topo +FROM model_draft.ego_grid_pf_hv_line WHERE scn_name = 'Status Quo' AND topo IN ('0102000020E6100000020000006AB8C23255F22940ED1AB07B44E549402D26361FD70E2A40A2FF2FE8CEE34940', '0102000020E610000002000000B9910DFF44102A40FE87AA4EBDE349402D26361FD70E2A40A2FF2FE8CEE34940', '0102000020E6100000020000002D26361FD70E2A40A2FF2FE8CEE34940204C62AEFA1D2A402EA5F4F75DE64940', '0102000020E610000002000000B9910DFF44102A40FE87AA4EBDE34940204C62AEFA1D2A402EA5F4F75DE64940'); +; + +DELETE FROM model_draft.ego_grid_pf_hv_transformer WHERE bus1 NOT IN (SELECT bus_id FROM model_draft.ego_grid_pf_hv_bus) OR bus0 NOT IN (SELECT bus_id FROM model_draft.ego_grid_pf_hv_bus); \ No newline at end of file