From ee9c3c095b8ee1c68414ffd026ab5d2bc65a0277 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Mon, 4 Sep 2023 19:26:00 +0100 Subject: [PATCH 01/63] added basic egs potential script --- rules/build_sector.smk | 27 +++++-- scripts/build_egs_potentials.py | 122 ++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+), 4 deletions(-) create mode 100644 scripts/build_egs_potentials.py diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 10a5f821..4655ebba 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -268,10 +268,11 @@ rule build_biomass_potentials: params: biomass=config["biomass"], input: - enspreso_biomass=HTTP.remote( - "https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx", - keep_local=True, - ), + # enspreso_biomass=HTTP.remote( + # "https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx", + # keep_local=True, + # ), + enspreso_biomass="cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx", # dealing with temporary server issues nuts2="data/bundle-sector/nuts/NUTS_RG_10M_2013_4326_LEVL_2.geojson", # https://gisco-services.ec.europa.eu/distribution/v2/nuts/download/#nuts21 regions_onshore=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson", nuts3_population=ancient("data/bundle/nama_10r_3popgdp.tsv.gz"), @@ -703,6 +704,24 @@ rule build_transport_demand: "../scripts/build_transport_demand.py" +rule build_egs_potentials: + input: + egs_cost="data/egs_costs.json", + shapes=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson", + output: + egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv", + egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv", + threads: 1 + resources: + mem_mb=2000, + log: + LOGS + "build_egs_potentials_s{simpl}_{clusters}.log", + conda: + "../envs/environment.yaml" + script: + "../scripts/build_egs_potentials.py" + + rule prepare_sector_network: params: co2_budget=config["co2_budget"], diff --git a/scripts/build_egs_potentials.py b/scripts/build_egs_potentials.py new file mode 100644 index 00000000..aecfd72a --- /dev/null +++ b/scripts/build_egs_potentials.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +# SPDX-FileCopyrightText: : 2023 @LukasFranken, The PyPSA-Eur Authors +# +# SPDX-License-Identifier: MIT +""" +This rule extracts potential and cost for electricity generation through enhanced geothermal systems + +For this, we use data from "From hot rock to useful energy..." by Aghahosseini, Breyer (2020) +'https://www.sciencedirect.com/science/article/pii/S0306261920312551' +Note that we input data used here is not the same as in the paper, but was passed on by the authors. + +The data provides a lon-lat gridded map of Europe (1° x 1°), with each grid cell assigned +a heat potential (in GWh) and a cost (in EUR/MW). + +This scripts overlays that map with the network's regions, and builds a csv with CAPEX, OPEX and p_nom_max +""" + +import logging + +logger = logging.getLogger(__name__) + +import json +import pandas as pd +import geopandas as gpd + +from shapely.geometry import Polygon, Point + + +def prepare_egs_data(egs_file): + + with open(egs_file) as f: + jsondata = json.load(f) + + def point_to_square(p, lon_extent=1., lat_extent=1.): + + try: + x, y = p.coords.xy[0][0], p.coords.xy[1][0] + except IndexError: + return p + + return Polygon([ + [x-lon_extent/2, y-lat_extent/2], + [x-lon_extent/2, y+lat_extent/2], + [x+lon_extent/2, y+lat_extent/2], + [x+lon_extent/2, y-lat_extent/2], + ]) + + years = [2015, 2020, 2025, 2030, 2035, 2040, 2045, 2050] + lcoes = ["LCOE50", "LCOE100", "LCOE150"] + + egs_data = dict() + + for year in years: + df = pd.DataFrame(columns=["Lon", "Lat", "CAPEX", "HeatSust", "PowerSust"]) + + for lcoe in lcoes: + + for country_data in jsondata[lcoe]: + try: + country_df = pd.DataFrame(columns=df.columns, + index=range(len(country_data[0][years.index(year)]["Lon"]))) + except TypeError: + country_df = pd.DataFrame(columns=df.columns, index=range(0)) + + for col in df.columns: + country_df[col] = country_data[0][years.index(year)][col] + + df = pd.concat((df, country_df.dropna()), axis=0, ignore_index=True) + + gdf = gpd.GeoDataFrame( + df.drop( + columns=["Lon", "Lat"] + ), + geometry=gpd.points_from_xy(df.Lon, df.Lat) + ).reset_index(drop=True) + + gdf["geometry"] = gdf.geometry.apply(lambda geom: point_to_square(geom)) + egs_data[year] = gdf + + return egs_data + + + +if __name__ == "__main__": + if "snakemake" not in globals(): + from _helpers import mock_snakemake + + snakemake = mock_snakemake( + "build_egs_potentials", + simpl="", + clusters=37, + ) + + sustainability_factor = 0.0025 # factor sustainable p_nom vs p_nom + config = snakemake.config + + egs_data = prepare_egs_data(snakemake.input.egs_cost) + + if config["sector"]["enhanced_geothermal_optimism"]: + + egs_data = egs_data[(year := config["costs"]["year"])] + logger.info(f"EGS optimism! Builing EGS potentials with costs estimated for {year}.") + + else: + egs_data = egs_data[(default_year := 2020)] + logger.info(f"No EGS optimism! Building EGS potentials with {default_year} costs.") + + egs_data.index = egs_data.geometry.astype(str) + egs_shapes = egs_data.geometry + + network_shapes = gpd.read_file(snakemake.input.shapes).set_index("name", drop=True).set_crs(epsg=4326) + egs_shapes = egs_data.geometry + + overlap_matrix = pd.DataFrame(index=network_shapes.index, columns=egs_shapes.index) + + for name, polygon in network_shapes.geometry.items(): + overlap_matrix.loc[name] = egs_shapes.intersection(polygon).area / egs_shapes.area + + overlap_matrix.to_csv(snakemake.output["egs_overlap"]) + + egs_data["p_nom_max"] = egs_data["PowerSust"] / sustainability_factor + egs_data[["p_nom_max", "CAPEX"]].to_csv(snakemake.output["egs_potentials"]) From e6203f51cdf8f3034ee2077898be12d0ffb16b20 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Mon, 4 Sep 2023 21:07:53 +0100 Subject: [PATCH 02/63] pre-testrun version added to prepare_sector_network --- rules/build_sector.smk | 2 + scripts/build_egs_potentials.py | 22 ++++-- scripts/prepare_sector_network.py | 126 ++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+), 6 deletions(-) diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 4655ebba..25efd7db 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -783,6 +783,8 @@ rule prepare_sector_network: cop_air_total=RESOURCES + "cop_air_total_elec_s{simpl}_{clusters}.nc", cop_air_rural=RESOURCES + "cop_air_rural_elec_s{simpl}_{clusters}.nc", cop_air_urban=RESOURCES + "cop_air_urban_elec_s{simpl}_{clusters}.nc", + egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv", + egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv", solar_thermal_total=RESOURCES + "solar_thermal_total_elec_s{simpl}_{clusters}.nc" if config["sector"]["solar_thermal"] diff --git a/scripts/build_egs_potentials.py b/scripts/build_egs_potentials.py index aecfd72a..61feee92 100644 --- a/scripts/build_egs_potentials.py +++ b/scripts/build_egs_potentials.py @@ -23,7 +23,7 @@ import json import pandas as pd import geopandas as gpd -from shapely.geometry import Polygon, Point +from shapely.geometry import Polygon def prepare_egs_data(egs_file): @@ -108,13 +108,23 @@ if __name__ == "__main__": egs_data.index = egs_data.geometry.astype(str) egs_shapes = egs_data.geometry - network_shapes = gpd.read_file(snakemake.input.shapes).set_index("name", drop=True).set_crs(epsg=4326) - egs_shapes = egs_data.geometry + network_shapes = ( + gpd.read_file(snakemake.input.shapes) + .set_index("name", drop=True) + .set_crs(epsg=4326) + ) + + overlap_matrix = ( + pd.DataFrame( + index=network_shapes.index, + columns=(egs_shapes := egs_data.geometry).astype(str).values) + ) - overlap_matrix = pd.DataFrame(index=network_shapes.index, columns=egs_shapes.index) - for name, polygon in network_shapes.geometry.items(): - overlap_matrix.loc[name] = egs_shapes.intersection(polygon).area / egs_shapes.area + overlap_matrix.loc[name] = ( + egs_shapes + .intersection(polygon).area + ) / egs_shapes.area overlap_matrix.to_csv(snakemake.output["egs_overlap"]) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 11406bff..de023f30 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3280,6 +3280,121 @@ def set_temporal_aggregation(n, opts, solver_name): return n +def add_egs_potential( + n, + egs_potentials, + egs_overlap, + costs, +): + """ + Adds EGS potential to model. + + Built in scripts/build_egs_potentials.py + """ + + n.add( + "Carrier", + "geothermal heat", + nice_name="Geothermal Heat", + color=snakemake.config["plotting"]["tech_colors"]["geothermal"], + co2_emissions=costs.at["geothermal", "CO2 intensity"], + ) + + config = snakemake.config + + overlap = pd.read_csv(egs_overlap, index_col=0) + indicator_matrix = ( + pd.DataFrame( + np.ceil(overlap.values), + index=overlap.index, + columns=overlap.columns + ) + ) + + egs_potentials = pd.read_csv(egs_potentials, index_col=0) + + Nyears = n.snapshot_weightings.generators.sum() / 8760 + dr = config["costs"]["fill_values"]["discount rate"] + lt = costs.at["geothermal", "lifetime"] + + egs_annuity = calculate_annuity(lt, dr) + + egs_potentials["capital_cost"] = ( + (egs_annuity + 0.02 / 1.02) * egs_potentials["CAPEX"] * Nyears + ) + + efficiency = costs.at["geothermal", "efficiency electricity"] + + # p_nom conversion GW -> MW + # capital_cost conversion Euro/kW -> Euro/MW + egs_potentials["p_nom_max"] = egs_potentials["p_nom_max"] * 1000.0 + egs_potentials["capital_cost"] = egs_potentials["capital_cost"] * 1000.0 + + n.add( + "Bus", + "EU geothermal heat", + carrier="geothermal heat", + unit="MWh_th", + location="EU", + ) + + n.add( + "Generator", + "EU geothermal heat", + bus="EU geothermal heat", + carrier="geothermal heat", + p_nom_max=np.inf, + p_nom_extendable=True, + ) + + for bus, overlaps in overlap.iterrows(): + if not overlaps.sum(): + continue + + overlaps.index = np.arange(len(overlaps)) + + overlaps = overlaps.loc[overlaps > 0.] + indicators = indicator_matrix.loc[bus] + indicators.index = np.arange(len(indicators)) + + bus_egs = egs_potentials.loc[overlaps.loc[overlaps > 0.].index] + + if not len(bus_egs): + continue + + bus_egs["p_nom_max"] = bus_egs["p_nom_max"].multiply(overlaps) + bus_egs = bus_egs.loc[bus_egs.p_nom_max > 0.] + + if config["sector"]["enhanced_geothermal_best_only"]: + bus_egs = bus_egs.sort_values(by="capital_cost").iloc[:1] + appendix = "" + else: + appendix = " " + bus_egs.index + + bus_egs.index = np.arange(len(bus_egs)).astype(str) + + p_nom_max = bus_egs["p_nom_max"] + p_nom_max.index = f"{bus} enhanced geothermal" + appendix + + capital_cost = bus_egs["capital_cost"] + capital_cost.index = f"{bus} enhanced geothermal" + appendix + + n.madd( + "Link", + f"{bus} enhanced geothermal" + appendix, + bus0="EU geothermal heat", + bus1=bus, + bus2="co2 atmosphere", + carrier="geothermal heat", + p_nom_extendable=True, + p_nom_max=p_nom_max / efficiency, + capital_cost=capital_cost * efficiency, + efficiency=efficiency, + efficiency2=costs.at["geothermal", "CO2 intensity"] * efficiency, + ) + + + if __name__ == "__main__": if "snakemake" not in globals(): from _helpers import mock_snakemake @@ -3453,6 +3568,17 @@ if __name__ == "__main__": if options.get("cluster_heat_buses", False) and not first_year_myopic: cluster_heat_buses(n) + if options.get("enhanced_geothermal"): + logger.info("Adding Enhanced Geothermal Potential.") + + add_egs_potential( + n, + snakemake.input["egs_potentials"], + snakemake.input["egs_overlap"], + costs + ) + + n.meta = dict(snakemake.config, **dict(wildcards=dict(snakemake.wildcards))) sanitize_carriers(n, snakemake.config) From 77b72dcbc344e57aff4777289a5f7ea5c024e1bd Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 5 Sep 2023 14:20:49 +0100 Subject: [PATCH 03/63] added new params to default config, and fixes --- config/config.default.yaml | 4 +++ scripts/prepare_sector_network.py | 45 ++++++++++++++++--------------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index b162b75d..1d9cfe9d 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -491,6 +491,9 @@ sector: OCGT: gas biomass_to_liquid: false biosng: false + enhanced_geothermal: true + enhanced_geothermal_optimism: true # if true, egs costs are reducing towards 2050 according to Aghahosseini et al., (2020) + enhanced_geothermal_best_only: false # if true, assigns only the cheapest patch of EGS potential to each region # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry industry: @@ -954,6 +957,7 @@ plotting: waste: '#e3d37d' other: '#000000' geothermal: '#ba91b1' + geothermal heat: '#ba91b1' AC: "#70af1d" AC-AC: "#70af1d" AC line: "#70af1d" diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index de023f30..c19b7892 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3303,14 +3303,6 @@ def add_egs_potential( config = snakemake.config overlap = pd.read_csv(egs_overlap, index_col=0) - indicator_matrix = ( - pd.DataFrame( - np.ceil(overlap.values), - index=overlap.index, - columns=overlap.columns - ) - ) - egs_potentials = pd.read_csv(egs_potentials, index_col=0) Nyears = n.snapshot_weightings.generators.sum() / 8760 @@ -3320,12 +3312,18 @@ def add_egs_potential( egs_annuity = calculate_annuity(lt, dr) egs_potentials["capital_cost"] = ( - (egs_annuity + 0.02 / 1.02) * egs_potentials["CAPEX"] * Nyears + (egs_annuity + 0.02 / 1.02) * + egs_potentials["CAPEX"] * + Nyears ) - efficiency = costs.at["geothermal", "efficiency electricity"] + # Uncommented for causing a crash for runs with default config. + # this throws an error, as the retrieved costs are not + # the same as the ones built by tech-data. + # efficiency = costs.at["geothermal", "efficiency electricity"] + efficiency = 0.1 - # p_nom conversion GW -> MW + # p_nom_max conversion GW -> MW # capital_cost conversion Euro/kW -> Euro/MW egs_potentials["p_nom_max"] = egs_potentials["p_nom_max"] * 1000.0 egs_potentials["capital_cost"] = egs_potentials["capital_cost"] * 1000.0 @@ -3347,29 +3345,28 @@ def add_egs_potential( p_nom_extendable=True, ) - for bus, overlaps in overlap.iterrows(): - if not overlaps.sum(): + egs_potentials.index = np.arange(len(egs_potentials)).astype(str) + overlap.columns = egs_potentials.index + + for bus, bus_overlap in overlap.iterrows(): + if not bus_overlap.sum(): continue - overlaps.index = np.arange(len(overlaps)) - - overlaps = overlaps.loc[overlaps > 0.] - indicators = indicator_matrix.loc[bus] - indicators.index = np.arange(len(indicators)) + overlap = bus_overlap.loc[bus_overlap > 0.] - bus_egs = egs_potentials.loc[overlaps.loc[overlaps > 0.].index] + bus_egs = egs_potentials.loc[bus_overlap.loc[bus_overlap > 0.].index] if not len(bus_egs): continue - bus_egs["p_nom_max"] = bus_egs["p_nom_max"].multiply(overlaps) + bus_egs["p_nom_max"] = bus_egs["p_nom_max"].multiply(bus_overlap) bus_egs = bus_egs.loc[bus_egs.p_nom_max > 0.] if config["sector"]["enhanced_geothermal_best_only"]: bus_egs = bus_egs.sort_values(by="capital_cost").iloc[:1] - appendix = "" + appendix = pd.Index([""]) else: - appendix = " " + bus_egs.index + appendix = " " + pd.Index(np.arange(len(bus_egs)).astype(str)) bus_egs.index = np.arange(len(bus_egs)).astype(str) @@ -3583,4 +3580,8 @@ if __name__ == "__main__": sanitize_carriers(n, snakemake.config) + n.buses.to_csv("buses.csv") + n.generators.to_csv("generators.csv") + n.links.to_csv("links.csv") + n.export_to_netcdf(snakemake.output[0]) From d7afa661a846b766aba38816ecc2b80e7a16d332 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 5 Sep 2023 14:31:45 +0100 Subject: [PATCH 04/63] cleanup and renaming --- scripts/prepare_sector_network.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index c19b7892..b1695f16 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3280,7 +3280,7 @@ def set_temporal_aggregation(n, opts, solver_name): return n -def add_egs_potential( +def add_enhanced_geothermal( n, egs_potentials, egs_overlap, @@ -3568,20 +3568,17 @@ if __name__ == "__main__": if options.get("enhanced_geothermal"): logger.info("Adding Enhanced Geothermal Potential.") - add_egs_potential( + """ + add_enhanced_geothermal( n, snakemake.input["egs_potentials"], snakemake.input["egs_overlap"], costs ) - + """ n.meta = dict(snakemake.config, **dict(wildcards=dict(snakemake.wildcards))) sanitize_carriers(n, snakemake.config) - n.buses.to_csv("buses.csv") - n.generators.to_csv("generators.csv") - n.links.to_csv("links.csv") - n.export_to_netcdf(snakemake.output[0]) From e486d6bcfe01c808f2e1673e609b1cf70738053e Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 5 Sep 2023 14:34:11 +0100 Subject: [PATCH 05/63] changed default config to pessimism on egs --- config/config.default.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index 1d9cfe9d..000f34a4 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -492,8 +492,8 @@ sector: biomass_to_liquid: false biosng: false enhanced_geothermal: true - enhanced_geothermal_optimism: true # if true, egs costs are reducing towards 2050 according to Aghahosseini et al., (2020) - enhanced_geothermal_best_only: false # if true, assigns only the cheapest patch of EGS potential to each region + enhanced_geothermal_optimism: false # if true, egs costs are reducing towards 2050 according to Aghahosseini et al., (2020) + enhanced_geothermal_best_only: true # if true, adds only the cheapest patch of EGS potential to each region # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry industry: From 0e80244b521bd06fc2aded46c56f268c50d08f0b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:01:10 +0000 Subject: [PATCH 06/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/build_egs_potentials.py | 73 +++++++++++++++---------------- scripts/prepare_sector_network.py | 16 +++---- 2 files changed, 42 insertions(+), 47 deletions(-) diff --git a/scripts/build_egs_potentials.py b/scripts/build_egs_potentials.py index 61feee92..4a66f416 100644 --- a/scripts/build_egs_potentials.py +++ b/scripts/build_egs_potentials.py @@ -3,7 +3,8 @@ # # SPDX-License-Identifier: MIT """ -This rule extracts potential and cost for electricity generation through enhanced geothermal systems +This rule extracts potential and cost for electricity generation through +enhanced geothermal systems. For this, we use data from "From hot rock to useful energy..." by Aghahosseini, Breyer (2020) 'https://www.sciencedirect.com/science/article/pii/S0306261920312551' @@ -20,30 +21,30 @@ import logging logger = logging.getLogger(__name__) import json -import pandas as pd -import geopandas as gpd +import geopandas as gpd +import pandas as pd from shapely.geometry import Polygon def prepare_egs_data(egs_file): - with open(egs_file) as f: jsondata = json.load(f) - def point_to_square(p, lon_extent=1., lat_extent=1.): - + def point_to_square(p, lon_extent=1.0, lat_extent=1.0): try: x, y = p.coords.xy[0][0], p.coords.xy[1][0] except IndexError: return p - - return Polygon([ - [x-lon_extent/2, y-lat_extent/2], - [x-lon_extent/2, y+lat_extent/2], - [x+lon_extent/2, y+lat_extent/2], - [x+lon_extent/2, y-lat_extent/2], - ]) + + return Polygon( + [ + [x - lon_extent / 2, y - lat_extent / 2], + [x - lon_extent / 2, y + lat_extent / 2], + [x + lon_extent / 2, y + lat_extent / 2], + [x + lon_extent / 2, y - lat_extent / 2], + ] + ) years = [2015, 2020, 2025, 2030, 2035, 2040, 2045, 2050] lcoes = ["LCOE50", "LCOE100", "LCOE150"] @@ -54,11 +55,12 @@ def prepare_egs_data(egs_file): df = pd.DataFrame(columns=["Lon", "Lat", "CAPEX", "HeatSust", "PowerSust"]) for lcoe in lcoes: - for country_data in jsondata[lcoe]: try: - country_df = pd.DataFrame(columns=df.columns, - index=range(len(country_data[0][years.index(year)]["Lon"]))) + country_df = pd.DataFrame( + columns=df.columns, + index=range(len(country_data[0][years.index(year)]["Lon"])), + ) except TypeError: country_df = pd.DataFrame(columns=df.columns, index=range(0)) @@ -68,17 +70,13 @@ def prepare_egs_data(egs_file): df = pd.concat((df, country_df.dropna()), axis=0, ignore_index=True) gdf = gpd.GeoDataFrame( - df.drop( - columns=["Lon", "Lat"] - ), - geometry=gpd.points_from_xy(df.Lon, df.Lat) - ).reset_index(drop=True) - + df.drop(columns=["Lon", "Lat"]), geometry=gpd.points_from_xy(df.Lon, df.Lat) + ).reset_index(drop=True) + gdf["geometry"] = gdf.geometry.apply(lambda geom: point_to_square(geom)) egs_data[year] = gdf - - return egs_data + return egs_data if __name__ == "__main__": @@ -90,43 +88,44 @@ if __name__ == "__main__": simpl="", clusters=37, ) - - sustainability_factor = 0.0025 # factor sustainable p_nom vs p_nom + + sustainability_factor = 0.0025 # factor sustainable p_nom vs p_nom config = snakemake.config egs_data = prepare_egs_data(snakemake.input.egs_cost) if config["sector"]["enhanced_geothermal_optimism"]: - egs_data = egs_data[(year := config["costs"]["year"])] - logger.info(f"EGS optimism! Builing EGS potentials with costs estimated for {year}.") + logger.info( + f"EGS optimism! Builing EGS potentials with costs estimated for {year}." + ) else: egs_data = egs_data[(default_year := 2020)] - logger.info(f"No EGS optimism! Building EGS potentials with {default_year} costs.") + logger.info( + f"No EGS optimism! Building EGS potentials with {default_year} costs." + ) egs_data.index = egs_data.geometry.astype(str) egs_shapes = egs_data.geometry - + network_shapes = ( gpd.read_file(snakemake.input.shapes) .set_index("name", drop=True) .set_crs(epsg=4326) ) - overlap_matrix = ( - pd.DataFrame( - index=network_shapes.index, - columns=(egs_shapes := egs_data.geometry).astype(str).values) + overlap_matrix = pd.DataFrame( + index=network_shapes.index, + columns=(egs_shapes := egs_data.geometry).astype(str).values, ) for name, polygon in network_shapes.geometry.items(): overlap_matrix.loc[name] = ( - egs_shapes - .intersection(polygon).area + egs_shapes.intersection(polygon).area ) / egs_shapes.area overlap_matrix.to_csv(snakemake.output["egs_overlap"]) - egs_data["p_nom_max"] = egs_data["PowerSust"] / sustainability_factor + egs_data["p_nom_max"] = egs_data["PowerSust"] / sustainability_factor egs_data[["p_nom_max", "CAPEX"]].to_csv(snakemake.output["egs_potentials"]) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index b1695f16..1660aae8 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3304,7 +3304,7 @@ def add_enhanced_geothermal( overlap = pd.read_csv(egs_overlap, index_col=0) egs_potentials = pd.read_csv(egs_potentials, index_col=0) - + Nyears = n.snapshot_weightings.generators.sum() / 8760 dr = config["costs"]["fill_values"]["discount rate"] lt = costs.at["geothermal", "lifetime"] @@ -3312,9 +3312,7 @@ def add_enhanced_geothermal( egs_annuity = calculate_annuity(lt, dr) egs_potentials["capital_cost"] = ( - (egs_annuity + 0.02 / 1.02) * - egs_potentials["CAPEX"] * - Nyears + (egs_annuity + 0.02 / 1.02) * egs_potentials["CAPEX"] * Nyears ) # Uncommented for causing a crash for runs with default config. @@ -3352,15 +3350,15 @@ def add_enhanced_geothermal( if not bus_overlap.sum(): continue - overlap = bus_overlap.loc[bus_overlap > 0.] + overlap = bus_overlap.loc[bus_overlap > 0.0] - bus_egs = egs_potentials.loc[bus_overlap.loc[bus_overlap > 0.].index] + bus_egs = egs_potentials.loc[bus_overlap.loc[bus_overlap > 0.0].index] if not len(bus_egs): continue - + bus_egs["p_nom_max"] = bus_egs["p_nom_max"].multiply(bus_overlap) - bus_egs = bus_egs.loc[bus_egs.p_nom_max > 0.] + bus_egs = bus_egs.loc[bus_egs.p_nom_max > 0.0] if config["sector"]["enhanced_geothermal_best_only"]: bus_egs = bus_egs.sort_values(by="capital_cost").iloc[:1] @@ -3391,7 +3389,6 @@ def add_enhanced_geothermal( ) - if __name__ == "__main__": if "snakemake" not in globals(): from _helpers import mock_snakemake @@ -3567,7 +3564,6 @@ if __name__ == "__main__": if options.get("enhanced_geothermal"): logger.info("Adding Enhanced Geothermal Potential.") - """ add_enhanced_geothermal( n, From 489cbcd880683d55bfedfc484a94fac0354162cd Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 5 Sep 2023 15:04:46 +0100 Subject: [PATCH 07/63] added minor cleanup correcting local adjustment --- rules/build_sector.smk | 9 ++++----- scripts/prepare_sector_network.py | 2 -- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 25efd7db..27e8d5d6 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -268,11 +268,10 @@ rule build_biomass_potentials: params: biomass=config["biomass"], input: - # enspreso_biomass=HTTP.remote( - # "https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx", - # keep_local=True, - # ), - enspreso_biomass="cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx", # dealing with temporary server issues + enspreso_biomass=HTTP.remote( + "https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx", + keep_local=True, + ), nuts2="data/bundle-sector/nuts/NUTS_RG_10M_2013_4326_LEVL_2.geojson", # https://gisco-services.ec.europa.eu/distribution/v2/nuts/download/#nuts21 regions_onshore=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson", nuts3_population=ancient("data/bundle/nama_10r_3popgdp.tsv.gz"), diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index b1695f16..a3b0e6a8 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3568,14 +3568,12 @@ if __name__ == "__main__": if options.get("enhanced_geothermal"): logger.info("Adding Enhanced Geothermal Potential.") - """ add_enhanced_geothermal( n, snakemake.input["egs_potentials"], snakemake.input["egs_overlap"], costs ) - """ n.meta = dict(snakemake.config, **dict(wildcards=dict(snakemake.wildcards))) From de605e2b6b089c8aa8c0e429cc343913cc2c622b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:06:24 +0000 Subject: [PATCH 08/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/prepare_sector_network.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index cf6a585e..cb8af957 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3565,10 +3565,7 @@ if __name__ == "__main__": if options.get("enhanced_geothermal"): logger.info("Adding Enhanced Geothermal Potential.") add_enhanced_geothermal( - n, - snakemake.input["egs_potentials"], - snakemake.input["egs_overlap"], - costs + n, snakemake.input["egs_potentials"], snakemake.input["egs_overlap"], costs ) n.meta = dict(snakemake.config, **dict(wildcards=dict(snakemake.wildcards))) From a7376f542c38596eb47497d4606c4b57eab27e3d Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sun, 24 Sep 2023 21:31:49 +0100 Subject: [PATCH 09/63] changed config name to egs_performant, added saturation check --- config/config.default.yaml | 2 +- scripts/solve_network.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index 000f34a4..31775472 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -493,7 +493,7 @@ sector: biosng: false enhanced_geothermal: true enhanced_geothermal_optimism: false # if true, egs costs are reducing towards 2050 according to Aghahosseini et al., (2020) - enhanced_geothermal_best_only: true # if true, adds only the cheapest patch of EGS potential to each region + enhanced_geothermal_performant: true # if true, adds only the cheapest patch of EGS potential to each region # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry industry: diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 836544b4..0adb048c 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -643,6 +643,24 @@ def solve_network(n, config, solving, opts="", **kwargs): if "infeasible" in condition: raise RuntimeError("Solving status 'infeasible'") + # check if enhanced_geothermal_performant might have changed model results + if ( + snakemake.config["sector"]["enhanced_geothermal"] and + snakemake.config["sector"]["enhanced_geothermal_performant"] + ): + mask = ( + (mask := n.links.carrier == "geothermal heat") & + (n.links.loc[mask, "p_nom_max"] > 0.) + ) + + saturated = n.links.loc[mask, "p_nom_max"] == n.links.loc[mask, "p_nom_opt"] + + if len(satbus := n.links.loc[saturated, "location"].unique()) > 0: + logger.warning(( + f"Potential for enhanced geothermal heat is saturated at bus(es): {satbus}\n" + "Consider setting config['sector']['enhanced_geothermal_performant'] to False." + )) + return n From 550256890171b0976a2f4d18468247ae035db018 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 24 Sep 2023 20:35:21 +0000 Subject: [PATCH 10/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/solve_network.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 0adb048c..985b5ffa 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -645,21 +645,22 @@ def solve_network(n, config, solving, opts="", **kwargs): # check if enhanced_geothermal_performant might have changed model results if ( - snakemake.config["sector"]["enhanced_geothermal"] and - snakemake.config["sector"]["enhanced_geothermal_performant"] - ): - mask = ( - (mask := n.links.carrier == "geothermal heat") & - (n.links.loc[mask, "p_nom_max"] > 0.) + snakemake.config["sector"]["enhanced_geothermal"] + and snakemake.config["sector"]["enhanced_geothermal_performant"] + ): + mask = (mask := n.links.carrier == "geothermal heat") & ( + n.links.loc[mask, "p_nom_max"] > 0.0 ) - + saturated = n.links.loc[mask, "p_nom_max"] == n.links.loc[mask, "p_nom_opt"] if len(satbus := n.links.loc[saturated, "location"].unique()) > 0: - logger.warning(( - f"Potential for enhanced geothermal heat is saturated at bus(es): {satbus}\n" - "Consider setting config['sector']['enhanced_geothermal_performant'] to False." - )) + logger.warning( + ( + f"Potential for enhanced geothermal heat is saturated at bus(es): {satbus}\n" + "Consider setting config['sector']['enhanced_geothermal_performant'] to False." + ) + ) return n From e98430e3ceac42c3eb08402c75afd474e4a276a5 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Mon, 25 Sep 2023 15:15:51 +0100 Subject: [PATCH 11/63] cleanup of saturation check --- scripts/prepare_sector_network.py | 4 +++- scripts/solve_network.py | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index cb8af957..442a4f45 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3301,6 +3301,7 @@ def add_enhanced_geothermal( ) config = snakemake.config + print(costs.loc[costs.index.str.contains("geothermal")]) overlap = pd.read_csv(egs_overlap, index_col=0) egs_potentials = pd.read_csv(egs_potentials, index_col=0) @@ -3360,7 +3361,7 @@ def add_enhanced_geothermal( bus_egs["p_nom_max"] = bus_egs["p_nom_max"].multiply(bus_overlap) bus_egs = bus_egs.loc[bus_egs.p_nom_max > 0.0] - if config["sector"]["enhanced_geothermal_best_only"]: + if config["sector"]["enhanced_geothermal_performant"]: bus_egs = bus_egs.sort_values(by="capital_cost").iloc[:1] appendix = pd.Index([""]) else: @@ -3377,6 +3378,7 @@ def add_enhanced_geothermal( n.madd( "Link", f"{bus} enhanced geothermal" + appendix, + location=bus, bus0="EU geothermal heat", bus1=bus, bus2="co2 atmosphere", diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 0adb048c..da42a5e7 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -652,12 +652,13 @@ def solve_network(n, config, solving, opts="", **kwargs): (mask := n.links.carrier == "geothermal heat") & (n.links.loc[mask, "p_nom_max"] > 0.) ) - + saturated = n.links.loc[mask, "p_nom_max"] == n.links.loc[mask, "p_nom_opt"] - if len(satbus := n.links.loc[saturated, "location"].unique()) > 0: + if saturated.any(): logger.warning(( - f"Potential for enhanced geothermal heat is saturated at bus(es): {satbus}\n" + "Potential for enhanced geothermal heat is saturated at bus(es):\n" + f"{', '.join(n.links.loc[saturated.loc[saturated.astype(bool)].index, 'location'].tolist())}.\n" "Consider setting config['sector']['enhanced_geothermal_performant'] to False." )) From d2624f80707835a451ad74c352482dc8bb89578d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 14:17:16 +0000 Subject: [PATCH 12/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/solve_network.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/solve_network.py b/scripts/solve_network.py index b2449237..1537a59b 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -655,11 +655,13 @@ def solve_network(n, config, solving, opts="", **kwargs): saturated = n.links.loc[mask, "p_nom_max"] == n.links.loc[mask, "p_nom_opt"] if saturated.any(): - logger.warning(( - "Potential for enhanced geothermal heat is saturated at bus(es):\n" - f"{', '.join(n.links.loc[saturated.loc[saturated.astype(bool)].index, 'location'].tolist())}.\n" - "Consider setting config['sector']['enhanced_geothermal_performant'] to False." - )) + logger.warning( + ( + "Potential for enhanced geothermal heat is saturated at bus(es):\n" + f"{', '.join(n.links.loc[saturated.loc[saturated.astype(bool)].index, 'location'].tolist())}.\n" + "Consider setting config['sector']['enhanced_geothermal_performant'] to False." + ) + ) return n From b3ce30e19338a259a190910fb562a1d731a0fcfc Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Mon, 25 Sep 2023 15:52:02 +0100 Subject: [PATCH 13/63] added source for FOM --- scripts/prepare_sector_network.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 442a4f45..ad6ee6fa 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3301,7 +3301,6 @@ def add_enhanced_geothermal( ) config = snakemake.config - print(costs.loc[costs.index.str.contains("geothermal")]) overlap = pd.read_csv(egs_overlap, index_col=0) egs_potentials = pd.read_csv(egs_potentials, index_col=0) @@ -3314,7 +3313,11 @@ def add_enhanced_geothermal( egs_potentials["capital_cost"] = ( (egs_annuity + 0.02 / 1.02) * egs_potentials["CAPEX"] * Nyears + # (egs_annuity + (opex := costs.at["geothermal", "FOM"]) / (1. + opex)) + # * egs_potentials["CAPEX"] * Nyears ) + # fixed OPEX of 2 % taken from NREL https://atb.nrel.gov/electricity/2023/index + # out-commented version will replace current one, once tech-data is updated # Uncommented for causing a crash for runs with default config. # this throws an error, as the retrieved costs are not From 45e5ab15c2d11ecd9ad162973d5b3fc5c1c2fe43 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 14:52:51 +0000 Subject: [PATCH 14/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/prepare_sector_network.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index ad6ee6fa..dd86b435 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3312,8 +3312,10 @@ def add_enhanced_geothermal( egs_annuity = calculate_annuity(lt, dr) egs_potentials["capital_cost"] = ( - (egs_annuity + 0.02 / 1.02) * egs_potentials["CAPEX"] * Nyears - # (egs_annuity + (opex := costs.at["geothermal", "FOM"]) / (1. + opex)) + (egs_annuity + 0.02 / 1.02) + * egs_potentials["CAPEX"] + * Nyears + # (egs_annuity + (opex := costs.at["geothermal", "FOM"]) / (1. + opex)) # * egs_potentials["CAPEX"] * Nyears ) # fixed OPEX of 2 % taken from NREL https://atb.nrel.gov/electricity/2023/index From 9a5c010c25198de317a2a46fecd6d3d4b8855550 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 26 Sep 2023 00:06:44 +0100 Subject: [PATCH 15/63] changed overlap indexing, general cleanup --- scripts/build_egs_potentials.py | 22 +++++++++++++++++----- scripts/prepare_sector_network.py | 11 ++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/scripts/build_egs_potentials.py b/scripts/build_egs_potentials.py index 4a66f416..d0cc2acd 100644 --- a/scripts/build_egs_potentials.py +++ b/scripts/build_egs_potentials.py @@ -67,7 +67,12 @@ def prepare_egs_data(egs_file): for col in df.columns: country_df[col] = country_data[0][years.index(year)][col] - df = pd.concat((df, country_df.dropna()), axis=0, ignore_index=True) + if country_df.dropna().empty: + continue + elif df.empty: + df = country_df.dropna() + else: + df = pd.concat((df, country_df.dropna()), ignore_index=True) gdf = gpd.GeoDataFrame( df.drop(columns=["Lon", "Lat"]), geometry=gpd.points_from_xy(df.Lon, df.Lat) @@ -89,7 +94,12 @@ if __name__ == "__main__": clusters=37, ) - sustainability_factor = 0.0025 # factor sustainable p_nom vs p_nom + sustainability_factor = 0.0025 + # the share of heat that is replenished from the earth's core. + # we are not constraining ourselves to the sustainable share, but + # inversely apply it to our underlying data, which refers to the + # sustainable heat. + config = snakemake.config egs_data = prepare_egs_data(snakemake.input.egs_cost) @@ -97,7 +107,7 @@ if __name__ == "__main__": if config["sector"]["enhanced_geothermal_optimism"]: egs_data = egs_data[(year := config["costs"]["year"])] logger.info( - f"EGS optimism! Builing EGS potentials with costs estimated for {year}." + f"EGS optimism! Building EGS potentials with costs estimated for {year}." ) else: @@ -106,7 +116,7 @@ if __name__ == "__main__": f"No EGS optimism! Building EGS potentials with {default_year} costs." ) - egs_data.index = egs_data.geometry.astype(str) + egs_data = egs_data.loc[egs_data["PowerSust"] > 0].reset_index(drop=True) egs_shapes = egs_data.geometry network_shapes = ( @@ -117,7 +127,7 @@ if __name__ == "__main__": overlap_matrix = pd.DataFrame( index=network_shapes.index, - columns=(egs_shapes := egs_data.geometry).astype(str).values, + columns=egs_data.index, ) for name, polygon in network_shapes.geometry.items(): @@ -127,5 +137,7 @@ if __name__ == "__main__": overlap_matrix.to_csv(snakemake.output["egs_overlap"]) + # consider not only replenished heat egs_data["p_nom_max"] = egs_data["PowerSust"] / sustainability_factor + egs_data[["p_nom_max", "CAPEX"]].to_csv(snakemake.output["egs_potentials"]) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index ad6ee6fa..f19d10ff 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3303,6 +3303,7 @@ def add_enhanced_geothermal( config = snakemake.config overlap = pd.read_csv(egs_overlap, index_col=0) + overlap.columns = overlap.columns.astype(int) egs_potentials = pd.read_csv(egs_potentials, index_col=0) Nyears = n.snapshot_weightings.generators.sum() / 8760 @@ -3343,20 +3344,16 @@ def add_enhanced_geothermal( "EU geothermal heat", bus="EU geothermal heat", carrier="geothermal heat", - p_nom_max=np.inf, + p_nom_max=egs_potentials["p_nom_max"].sum() / efficiency, p_nom_extendable=True, ) - egs_potentials.index = np.arange(len(egs_potentials)).astype(str) - overlap.columns = egs_potentials.index - for bus, bus_overlap in overlap.iterrows(): if not bus_overlap.sum(): continue overlap = bus_overlap.loc[bus_overlap > 0.0] - - bus_egs = egs_potentials.loc[bus_overlap.loc[bus_overlap > 0.0].index] + bus_egs = egs_potentials.loc[overlap.index] if not len(bus_egs): continue @@ -3567,7 +3564,7 @@ if __name__ == "__main__": if options.get("cluster_heat_buses", False) and not first_year_myopic: cluster_heat_buses(n) - if options.get("enhanced_geothermal"): + if options.get("enhanced_geothermal", False): logger.info("Adding Enhanced Geothermal Potential.") add_enhanced_geothermal( n, snakemake.input["egs_potentials"], snakemake.input["egs_overlap"], costs From fa0811df3f5fcc4713c2ac61611b30b8fd9966f7 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 26 Sep 2023 00:09:37 +0100 Subject: [PATCH 16/63] added release notes --- doc/release_notes.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 3a787104..42e1f8e3 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -20,6 +20,8 @@ Upcoming Release * Files extracted from sector-coupled data bundle have been moved from ``data/`` to ``data/sector-bundle``. +* Added Enhanced Geothermal Systems for electricity generation. + PyPSA-Eur 0.8.1 (27th July 2023) ================================ From 6cd46bf26125f7e08d99d8f52c15709e06c6fcee Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sat, 11 Nov 2023 23:15:41 +0000 Subject: [PATCH 17/63] added option for hourly egs capacity factors --- config/config.default.yaml | 2 + rules/build_sector.smk | 13 ++++++- scripts/build_egs_potentials.py | 67 +++++++++++++++++++++++++++++---- 3 files changed, 73 insertions(+), 9 deletions(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index 1a35c5b1..c00c6e25 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -511,6 +511,8 @@ sector: enhanced_geothermal: true enhanced_geothermal_optimism: false # if true, egs costs are reducing towards 2050 according to Aghahosseini et al., (2020) enhanced_geothermal_performant: true # if true, adds only the cheapest patch of EGS potential to each region + enhanced_geothermal_flexible: true # if true, adds a storage unit simulating flexible operation of EGS, see Ricks et al. 2023 + enhanced_geothermal_var_cf: true # if true, adds time-dependent capacity factor to EGS, see Ricks et al. 2023 # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry industry: diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 8ac3f6ed..94725dca 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -705,12 +705,20 @@ rule build_transport_demand: rule build_egs_potentials: + params: + snapshots=config["snapshots"], input: egs_cost="data/egs_costs.json", - shapes=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson", + regions=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson", + air_temperature=RESOURCES + "temp_air_total_elec_s{simpl}_{clusters}.nc" + if config["sector"]["enhanced_geothermal_var_cf"] + else [], output: egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv", egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv", + egs_capacity_factors=RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv", + if config["sector"]["enhanced_geothermal_var_cf"] + else [], threads: 1 resources: mem_mb=2000, @@ -790,6 +798,9 @@ rule prepare_sector_network: cop_air_urban=RESOURCES + "cop_air_urban_elec_s{simpl}_{clusters}.nc", egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv", egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv", + egs_capacity_factors=RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv", + if config["sector"]["enhanced_geothermal_var_cf"] + else [], solar_thermal_total=RESOURCES + "solar_thermal_total_elec_s{simpl}_{clusters}.nc" if config["sector"]["solar_thermal"] diff --git a/scripts/build_egs_potentials.py b/scripts/build_egs_potentials.py index d0cc2acd..b7de14ff 100644 --- a/scripts/build_egs_potentials.py +++ b/scripts/build_egs_potentials.py @@ -22,8 +22,10 @@ logger = logging.getLogger(__name__) import json -import geopandas as gpd +import numpy as np import pandas as pd +import xarray as xr +import geopandas as gpd from shapely.geometry import Polygon @@ -84,6 +86,48 @@ def prepare_egs_data(egs_file): return egs_data +def get_capacity_factors( + network_regions_file, + air_temperatures_file + ): + """ + Performance of EGS is higher for lower temperatures, due to more efficient air cooling + Data from Ricks et al.: The Role of Flexible Geothermal Power in Decarbonized Elec Systems + """ + + delta_T = [-15, -10, -5, 0, 5, 10, 15, 20] + cf = [1.17, 1.13, 1.07, 1, 0.925, 0.84, 0.75, 0.65] + + x = np.linspace(-15, 20, 200) + y = np.interp(x, delta_T, cf) + + upper_x = np.linspace(20, 25, 50) + m_upper = (y[-1] - y[-2]) / (x[-1] - x[-2]) + upper_y = upper_x * m_upper - x[-1] * m_upper + y[-1] + + lower_x = np.linspace(-20, -15, 50) + m_lower = (y[1] - y[0]) / (x[1] - x[0]) + lower_y = lower_x * m_lower - x[0] * m_lower + y[0] + + x = np.hstack((lower_x, x, upper_x)) + y = np.hstack((lower_y, y, upper_y)) + + network_regions = gpd.read_file(network_regions_file).set_crs(epsg=4326) + index = network_regions["name"] + + air_temp = xr.open_dataset(air_temperatures_file) + + snapshots = pd.date_range(freq="h", **snakemake.params.snapshots) + capacity_factors = pd.DataFrame(index=snapshots) + + for bus in index: + temp = air_temp.sel(name=bus).to_dataframe()["temperature"] + capacity_factors[bus] = np.interp((temp - temp.mean()).values, x, y) + + return capacity_factors + + + if __name__ == "__main__": if "snakemake" not in globals(): from _helpers import mock_snakemake @@ -117,23 +161,23 @@ if __name__ == "__main__": ) egs_data = egs_data.loc[egs_data["PowerSust"] > 0].reset_index(drop=True) - egs_shapes = egs_data.geometry + egs_regions = egs_data.geometry - network_shapes = ( - gpd.read_file(snakemake.input.shapes) + network_regions = ( + gpd.read_file(snakemake.input.regions) .set_index("name", drop=True) .set_crs(epsg=4326) ) overlap_matrix = pd.DataFrame( - index=network_shapes.index, + index=network_regions.index, columns=egs_data.index, ) - for name, polygon in network_shapes.geometry.items(): + for name, polygon in network_regions.geometry.items(): overlap_matrix.loc[name] = ( - egs_shapes.intersection(polygon).area - ) / egs_shapes.area + egs_regions.intersection(polygon).area + ) / egs_regions.area overlap_matrix.to_csv(snakemake.output["egs_overlap"]) @@ -141,3 +185,10 @@ if __name__ == "__main__": egs_data["p_nom_max"] = egs_data["PowerSust"] / sustainability_factor egs_data[["p_nom_max", "CAPEX"]].to_csv(snakemake.output["egs_potentials"]) + + capacity_factors = get_capacity_factors( + snakemake.input["regions"], + snakemake.input["air_temperature"], + ) + + capacity_factors.to_csv(snakemake.output["egs_capacity_factors"]) \ No newline at end of file From ff209bbd76a5b37ad0529ce4e402a9635e26ed23 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 11 Nov 2023 23:16:02 +0000 Subject: [PATCH 18/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- rules/build_sector.smk | 2 +- scripts/build_egs_potentials.py | 19 ++++++++----------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 94725dca..c412effb 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -710,7 +710,7 @@ rule build_egs_potentials: input: egs_cost="data/egs_costs.json", regions=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson", - air_temperature=RESOURCES + "temp_air_total_elec_s{simpl}_{clusters}.nc" + air_temperature=RESOURCES + "temp_air_total_elec_s{simpl}_{clusters}.nc" if config["sector"]["enhanced_geothermal_var_cf"] else [], output: diff --git a/scripts/build_egs_potentials.py b/scripts/build_egs_potentials.py index b7de14ff..c86421eb 100644 --- a/scripts/build_egs_potentials.py +++ b/scripts/build_egs_potentials.py @@ -22,10 +22,10 @@ logger = logging.getLogger(__name__) import json +import geopandas as gpd import numpy as np import pandas as pd import xarray as xr -import geopandas as gpd from shapely.geometry import Polygon @@ -86,14 +86,12 @@ def prepare_egs_data(egs_file): return egs_data -def get_capacity_factors( - network_regions_file, - air_temperatures_file - ): +def get_capacity_factors(network_regions_file, air_temperatures_file): + """ + Performance of EGS is higher for lower temperatures, due to more efficient + air cooling Data from Ricks et al.: The Role of Flexible Geothermal Power + in Decarbonized Elec Systems. """ - Performance of EGS is higher for lower temperatures, due to more efficient air cooling - Data from Ricks et al.: The Role of Flexible Geothermal Power in Decarbonized Elec Systems - """ delta_T = [-15, -10, -5, 0, 5, 10, 15, 20] cf = [1.17, 1.13, 1.07, 1, 0.925, 0.84, 0.75, 0.65] @@ -123,9 +121,8 @@ def get_capacity_factors( for bus in index: temp = air_temp.sel(name=bus).to_dataframe()["temperature"] capacity_factors[bus] = np.interp((temp - temp.mean()).values, x, y) - - return capacity_factors + return capacity_factors if __name__ == "__main__": @@ -191,4 +188,4 @@ if __name__ == "__main__": snakemake.input["air_temperature"], ) - capacity_factors.to_csv(snakemake.output["egs_capacity_factors"]) \ No newline at end of file + capacity_factors.to_csv(snakemake.output["egs_capacity_factors"]) From 24c3d28b35012f4add4b522beaecb3edd681f969 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sun, 12 Nov 2023 00:35:10 +0000 Subject: [PATCH 19/63] towards adding district heating, included spatial --- rules/build_sector.smk | 4 +-- scripts/prepare_sector_network.py | 47 +++++++++++++++++++------------ 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 94725dca..919ba26f 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -716,7 +716,7 @@ rule build_egs_potentials: output: egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv", egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv", - egs_capacity_factors=RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv", + egs_capacity_factors=RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv" if config["sector"]["enhanced_geothermal_var_cf"] else [], threads: 1 @@ -798,7 +798,7 @@ rule prepare_sector_network: cop_air_urban=RESOURCES + "cop_air_urban_elec_s{simpl}_{clusters}.nc", egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv", egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv", - egs_capacity_factors=RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv", + egs_capacity_factors=RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv" if config["sector"]["enhanced_geothermal_var_cf"] else [], solar_thermal_total=RESOURCES diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index a4a6d274..563be666 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -151,6 +151,11 @@ def define_spatial(nodes, options): spatial.lignite.nodes = ["EU lignite"] spatial.lignite.locations = ["EU"] + # deep geothermal + spatial.geothermal_heat = SimpleNamespace() + spatial.geothermal_heat.nodes = ["EU deep geothermal"] + spatial.geothermal_heat.locations = ["EU"] + return spatial @@ -3310,16 +3315,9 @@ def add_enhanced_geothermal( Built in scripts/build_egs_potentials.py """ - n.add( - "Carrier", - "geothermal heat", - nice_name="Geothermal Heat", - color=snakemake.config["plotting"]["tech_colors"]["geothermal"], - co2_emissions=costs.at["geothermal", "CO2 intensity"], - ) - config = snakemake.config + # matrix defining the overlap between gridded geothermal potential estimation, and bus regions overlap = pd.read_csv(egs_overlap, index_col=0) overlap.columns = overlap.columns.astype(int) egs_potentials = pd.read_csv(egs_potentials, index_col=0) @@ -3351,23 +3349,31 @@ def add_enhanced_geothermal( egs_potentials["p_nom_max"] = egs_potentials["p_nom_max"] * 1000.0 egs_potentials["capital_cost"] = egs_potentials["capital_cost"] * 1000.0 - n.add( + # not using add_carrier_buses, as we are not interested in a Store + n.add("Carrier", "geothermal heat") + + n.madd( "Bus", - "EU geothermal heat", + spatial.geothermal_heat.nodes, + location=spatial.geothermal_heat.locations, carrier="geothermal heat", unit="MWh_th", - location="EU", ) + if len(spatial.geothermal.nodes) > 1: + logger.warning("'add_geothermal' not implemented for multiple geothermal nodes.") + n.add( "Generator", - "EU geothermal heat", - bus="EU geothermal heat", + spatial.geothermal_heat.nodes, + bus=spatial.geothermal_heat.nodes, carrier="geothermal heat", - p_nom_max=egs_potentials["p_nom_max"].sum() / efficiency, p_nom_extendable=True, ) + if + + for bus, bus_overlap in overlap.iterrows(): if not bus_overlap.sum(): continue @@ -3395,19 +3401,24 @@ def add_enhanced_geothermal( capital_cost = bus_egs["capital_cost"] capital_cost.index = f"{bus} enhanced geothermal" + appendix + # add surface bus + n.add( + "Bus", + f"geothermal heat surface {bus}", + location=bus, + ) + n.madd( "Link", f"{bus} enhanced geothermal" + appendix, location=bus, - bus0="EU geothermal heat", - bus1=bus, - bus2="co2 atmosphere", + bus0=spatial.geothermal_heat.nodes, + bus1=f"geothermal heat surface {bus}", carrier="geothermal heat", p_nom_extendable=True, p_nom_max=p_nom_max / efficiency, capital_cost=capital_cost * efficiency, efficiency=efficiency, - efficiency2=costs.at["geothermal", "CO2 intensity"] * efficiency, ) From a8dde158cb9b6efe76922d50b8a1edd07cd989de Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 12 Nov 2023 00:36:01 +0000 Subject: [PATCH 20/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/prepare_sector_network.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 563be666..7f821770 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3371,7 +3371,7 @@ def add_enhanced_geothermal( p_nom_extendable=True, ) - if + if for bus, bus_overlap in overlap.iterrows(): @@ -3407,7 +3407,7 @@ def add_enhanced_geothermal( f"geothermal heat surface {bus}", location=bus, ) - + n.madd( "Link", f"{bus} enhanced geothermal" + appendix, From 468177cfda8b9bf470e207173b2c22bb8fc8d529 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sun, 12 Nov 2023 19:31:06 +0000 Subject: [PATCH 21/63] added chp operation to geothermal --- scripts/prepare_sector_network.py | 83 ++++++++++++++++++++++++------- scripts/solve_network.py | 17 +++++++ 2 files changed, 83 insertions(+), 17 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 563be666..68374785 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3315,6 +3315,9 @@ def add_enhanced_geothermal( Built in scripts/build_egs_potentials.py """ + if len(spatial.geothermal_heat.nodes) > 1: + logger.warning("'add_enhanced_geothermal' not implemented for multiple geothermal nodes.") + config = snakemake.config # matrix defining the overlap between gridded geothermal potential estimation, and bus regions @@ -3325,24 +3328,32 @@ def add_enhanced_geothermal( Nyears = n.snapshot_weightings.generators.sum() / 8760 dr = config["costs"]["fill_values"]["discount rate"] lt = costs.at["geothermal", "lifetime"] + FOM = costs.at["geothermal", "FOM"] egs_annuity = calculate_annuity(lt, dr) + # cost for ORC is subtracted, as it is already included in the geothermal cost. + # The orc cost are attributed to a separate link representing the ORC. egs_potentials["capital_cost"] = ( - (egs_annuity + 0.02 / 1.02) - * egs_potentials["CAPEX"] + (egs_annuity + FOM / (1. + FOM)) + * (egs_potentials["CAPEX"] - costs.at["organice rankine cycle", "investment"]) * Nyears - # (egs_annuity + (opex := costs.at["geothermal", "FOM"]) / (1. + opex)) - # * egs_potentials["CAPEX"] * Nyears + * 1000. ) - # fixed OPEX of 2 % taken from NREL https://atb.nrel.gov/electricity/2023/index - # out-commented version will replace current one, once tech-data is updated + assert (egs_potentials["capital_cost"] > 0).all(), "Error in EGS cost, negative values found." - # Uncommented for causing a crash for runs with default config. - # this throws an error, as the retrieved costs are not - # the same as the ones built by tech-data. - # efficiency = costs.at["geothermal", "efficiency electricity"] - efficiency = 0.1 + plant_annuity = calculate_annuity( + costs.at["organic rankine cycle", "lifetime"], + dr + ) + plant_capital_cost = ( + (plant_annuity + FOM / (1 + FOM)) * + costs.at["organic rankine cycle", "investment"] * + Nyears + ) + + efficiency_orc = costs.at["organic rankine cycle", "efficiency"] + efficiency_dh = costs.at["geothermal", "efficiency residential heat"] # p_nom_max conversion GW -> MW # capital_cost conversion Euro/kW -> Euro/MW @@ -3360,9 +3371,6 @@ def add_enhanced_geothermal( unit="MWh_th", ) - if len(spatial.geothermal.nodes) > 1: - logger.warning("'add_geothermal' not implemented for multiple geothermal nodes.") - n.add( "Generator", spatial.geothermal_heat.nodes, @@ -3371,8 +3379,20 @@ def add_enhanced_geothermal( p_nom_extendable=True, ) - if + if snakemake.params.sector["enhanced_geothermal_var_cf"]: + efficiency = pd.read_csv( + snakemake.input.egs_capacity_factors, + parse_dates=True, + index_col=0 + ) + logger.info("Adding Enhanced Geothermal with time-varying capacity factors.") + else: + efficiency = pd.Series(1, overlap.index) + # if urban central heat exists, adds geothermal as CHP + as_chp = 'urban central heat' in n.buses.carrier + if as_chp: + logger.info("Adding Enhanced Geothermal as Combined Heat and Power.") for bus, bus_overlap in overlap.iterrows(): if not bus_overlap.sum(): @@ -3407,7 +3427,12 @@ def add_enhanced_geothermal( f"geothermal heat surface {bus}", location=bus, ) - + + bus_eta = pd.concat(( + efficiency[bus].rename(idx) + for idx in f"{bus} enhanced geothermal" + appendix + ), axis=1) + n.madd( "Link", f"{bus} enhanced geothermal" + appendix, @@ -3418,9 +3443,33 @@ def add_enhanced_geothermal( p_nom_extendable=True, p_nom_max=p_nom_max / efficiency, capital_cost=capital_cost * efficiency, - efficiency=efficiency, + efficiency=bus_eta, ) + n.add( + "Link", + bus + ' geothermal organic rankine cycle', + bus0=f"geothermal heat surface {bus}", + bus1=bus, + p_nom_extendable=True, + carrier="geothermal organic rankine cycle", + capital_cost=plant_capital_cost * efficiency_orc, + efficiency=efficiency_orc if not as_chp else efficiency_orc * 2., + ) + + if as_chp and bus + " urban central heat" in n.buses.index: + n.add( + "Link", + bus + ' geothermal heat district heat', + bus0=f"geothermal heat surface {bus}", + bus1=bus + ' urban central heat', + carrier="geothermal district heat", + capital_cost=plant_capital_cost * efficiency_orc * costs.at["geothermal", "district heating cost"], + efficiency=efficiency_dh * 2., + p_nom_extendable=True, + ) + + if __name__ == "__main__": if "snakemake" not in globals(): diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 8e8d7960..bdd75532 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -762,6 +762,21 @@ def add_pipe_retrofit_constraint(n): n.model.add_constraints(lhs == rhs, name="Link-pipe_retrofit") +def add_geothermal_chp_constraint(n): + elec_index = n.links.loc[n.links.carrier == 'geothermal organic rankine cycle'].index + heat_index = n.links.loc[n.links.carrier == 'geothermal heat district heat'].index + + p_nom_lhs = ( + n.model["Link-p_nom"].loc[heat_index] + - n.model["Link-p_nom"].loc[elec_index] + ) + + n.model.add_constraints( + p_nom_lhs == 0, + name="equalizes_p_nom_of_chp_elec_and_chp_district_heat", + ) + + def extra_functionality(n, snapshots): """ Collects supplementary constraints which will be passed to @@ -791,6 +806,8 @@ def extra_functionality(n, snapshots): add_carbon_constraint(n, snapshots) add_carbon_budget_constraint(n, snapshots) add_retrofit_gas_boiler_constraint(n, snapshots) + if "geothermal district heat" in n.links.carrier: + add_geothermal_chp_constraint(n) def solve_network(n, config, solving, opts="", **kwargs): From 6b100d4b88ebe77204e9c10b816bcd4e6d506979 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 12 Nov 2023 19:32:50 +0000 Subject: [PATCH 22/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/prepare_sector_network.py | 59 ++++++++++++++++--------------- scripts/solve_network.py | 11 +++--- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 68374785..c3384122 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3316,7 +3316,9 @@ def add_enhanced_geothermal( """ if len(spatial.geothermal_heat.nodes) > 1: - logger.warning("'add_enhanced_geothermal' not implemented for multiple geothermal nodes.") + logger.warning( + "'add_enhanced_geothermal' not implemented for multiple geothermal nodes." + ) config = snakemake.config @@ -3335,21 +3337,20 @@ def add_enhanced_geothermal( # cost for ORC is subtracted, as it is already included in the geothermal cost. # The orc cost are attributed to a separate link representing the ORC. egs_potentials["capital_cost"] = ( - (egs_annuity + FOM / (1. + FOM)) + (egs_annuity + FOM / (1.0 + FOM)) * (egs_potentials["CAPEX"] - costs.at["organice rankine cycle", "investment"]) * Nyears - * 1000. + * 1000.0 ) - assert (egs_potentials["capital_cost"] > 0).all(), "Error in EGS cost, negative values found." + assert ( + egs_potentials["capital_cost"] > 0 + ).all(), "Error in EGS cost, negative values found." - plant_annuity = calculate_annuity( - costs.at["organic rankine cycle", "lifetime"], - dr - ) + plant_annuity = calculate_annuity(costs.at["organic rankine cycle", "lifetime"], dr) plant_capital_cost = ( - (plant_annuity + FOM / (1 + FOM)) * - costs.at["organic rankine cycle", "investment"] * - Nyears + (plant_annuity + FOM / (1 + FOM)) + * costs.at["organic rankine cycle", "investment"] + * Nyears ) efficiency_orc = costs.at["organic rankine cycle", "efficiency"] @@ -3381,16 +3382,14 @@ def add_enhanced_geothermal( if snakemake.params.sector["enhanced_geothermal_var_cf"]: efficiency = pd.read_csv( - snakemake.input.egs_capacity_factors, - parse_dates=True, - index_col=0 - ) + snakemake.input.egs_capacity_factors, parse_dates=True, index_col=0 + ) logger.info("Adding Enhanced Geothermal with time-varying capacity factors.") else: efficiency = pd.Series(1, overlap.index) # if urban central heat exists, adds geothermal as CHP - as_chp = 'urban central heat' in n.buses.carrier + as_chp = "urban central heat" in n.buses.carrier if as_chp: logger.info("Adding Enhanced Geothermal as Combined Heat and Power.") @@ -3426,12 +3425,15 @@ def add_enhanced_geothermal( "Bus", f"geothermal heat surface {bus}", location=bus, - ) + ) - bus_eta = pd.concat(( - efficiency[bus].rename(idx) - for idx in f"{bus} enhanced geothermal" + appendix - ), axis=1) + bus_eta = pd.concat( + ( + efficiency[bus].rename(idx) + for idx in f"{bus} enhanced geothermal" + appendix + ), + axis=1, + ) n.madd( "Link", @@ -3448,29 +3450,30 @@ def add_enhanced_geothermal( n.add( "Link", - bus + ' geothermal organic rankine cycle', + bus + " geothermal organic rankine cycle", bus0=f"geothermal heat surface {bus}", bus1=bus, p_nom_extendable=True, carrier="geothermal organic rankine cycle", capital_cost=plant_capital_cost * efficiency_orc, - efficiency=efficiency_orc if not as_chp else efficiency_orc * 2., + efficiency=efficiency_orc if not as_chp else efficiency_orc * 2.0, ) if as_chp and bus + " urban central heat" in n.buses.index: n.add( "Link", - bus + ' geothermal heat district heat', + bus + " geothermal heat district heat", bus0=f"geothermal heat surface {bus}", - bus1=bus + ' urban central heat', + bus1=bus + " urban central heat", carrier="geothermal district heat", - capital_cost=plant_capital_cost * efficiency_orc * costs.at["geothermal", "district heating cost"], - efficiency=efficiency_dh * 2., + capital_cost=plant_capital_cost + * efficiency_orc + * costs.at["geothermal", "district heating cost"], + efficiency=efficiency_dh * 2.0, p_nom_extendable=True, ) - if __name__ == "__main__": if "snakemake" not in globals(): from _helpers import mock_snakemake diff --git a/scripts/solve_network.py b/scripts/solve_network.py index bdd75532..dbc850a0 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -763,13 +763,14 @@ def add_pipe_retrofit_constraint(n): def add_geothermal_chp_constraint(n): - elec_index = n.links.loc[n.links.carrier == 'geothermal organic rankine cycle'].index - heat_index = n.links.loc[n.links.carrier == 'geothermal heat district heat'].index + elec_index = n.links.loc[ + n.links.carrier == "geothermal organic rankine cycle" + ].index + heat_index = n.links.loc[n.links.carrier == "geothermal heat district heat"].index p_nom_lhs = ( - n.model["Link-p_nom"].loc[heat_index] - - n.model["Link-p_nom"].loc[elec_index] - ) + n.model["Link-p_nom"].loc[heat_index] - n.model["Link-p_nom"].loc[elec_index] + ) n.model.add_constraints( p_nom_lhs == 0, From bf79b4a817b33c8909121ff58ee405f629d676e0 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sun, 12 Nov 2023 20:14:04 +0000 Subject: [PATCH 23/63] added flexible operation --- config/config.default.yaml | 2 ++ scripts/prepare_sector_network.py | 22 ++++++++++++++++++++++ scripts/solve_network.py | 19 +++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/config/config.default.yaml b/config/config.default.yaml index c00c6e25..7bb75c40 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -513,6 +513,8 @@ sector: enhanced_geothermal_performant: true # if true, adds only the cheapest patch of EGS potential to each region enhanced_geothermal_flexible: true # if true, adds a storage unit simulating flexible operation of EGS, see Ricks et al. 2023 enhanced_geothermal_var_cf: true # if true, adds time-dependent capacity factor to EGS, see Ricks et al. 2023 + enhanced_geothermal_reservoir_max_hours: 240 # relavant for flexible EGS, see Ricks et al. 2023 + enhanced_geothermal_reservoir_max_boost: 0.25 # share of generation that can be added by flexible EGS, see Ricks et al. 2023 # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry industry: diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 68374785..2017e9d6 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3468,6 +3468,28 @@ def add_enhanced_geothermal( efficiency=efficiency_dh * 2., p_nom_extendable=True, ) + else: + n.links.at[bus + " geothermal organic rankine cycle", "efficiency"] = efficiency_orc + + if snakemake.params.sector["enhanced_geothermal_flexible"]: + + # this StorageUnit represents flexible operation using the geothermal reservoir. + # Hence, it is intuitively wrong to install it at the surface bus, + # this is however the more lean and computationally efficient solution. + + max_hours = snakemake.params.sector["enhanced_geothermal_reservoir_max_hours"] + boost = snakemake.params.sector["enhanced_geothermal_reservoir_max_boost"] + + max_hours = max_hours * boost + n.add( + "StorageUnit", + bus + ' geothermal reservoir', + bus=f"geothermal heat surface {bus}", + carrier="geothermal heat", + p_nom_extendable=True, + p_min_pu=-1. - boost, + max_hours=max_hours, + ) diff --git a/scripts/solve_network.py b/scripts/solve_network.py index bdd75532..c299a0f1 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -777,6 +777,23 @@ def add_geothermal_chp_constraint(n): ) +def add_flexible_egs_constraint(n): + well_index = n.links.loc[n.links.carrier == 'geothermal heat'].index + storage_index = n.storage_units.loc[n.storage_units.carrier == 'geothermal heat '].index + + p_nom_rhs = ( + n.model["Link-p_nom"].loc[well_index] + ) + p_nom_lhs = ( + n.model["StorageUnit-p_nom"].loc[storage_index] + ) + + n.model.add_constraints( + p_nom_lhs <= p_nom_rhs, + name="Upper bounds the charging capacity of the storage unit", + ) + + def extra_functionality(n, snapshots): """ Collects supplementary constraints which will be passed to @@ -808,6 +825,8 @@ def extra_functionality(n, snapshots): add_retrofit_gas_boiler_constraint(n, snapshots) if "geothermal district heat" in n.links.carrier: add_geothermal_chp_constraint(n) + if config["sector"]["enhanced_geothermal_flexible"]: + add_flexible_egs_constraint(n) def solve_network(n, config, solving, opts="", **kwargs): From a892f0c0eccaf1026a9bb999f018039a576e5f9b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 12 Nov 2023 20:15:04 +0000 Subject: [PATCH 24/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/prepare_sector_network.py | 15 +++++++++------ scripts/solve_network.py | 14 ++++++-------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 5d6c40e8..79b8c6af 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3473,25 +3473,28 @@ def add_enhanced_geothermal( p_nom_extendable=True, ) else: - n.links.at[bus + " geothermal organic rankine cycle", "efficiency"] = efficiency_orc + n.links.at[ + bus + " geothermal organic rankine cycle", "efficiency" + ] = efficiency_orc if snakemake.params.sector["enhanced_geothermal_flexible"]: - # this StorageUnit represents flexible operation using the geothermal reservoir. # Hence, it is intuitively wrong to install it at the surface bus, # this is however the more lean and computationally efficient solution. - - max_hours = snakemake.params.sector["enhanced_geothermal_reservoir_max_hours"] + + max_hours = snakemake.params.sector[ + "enhanced_geothermal_reservoir_max_hours" + ] boost = snakemake.params.sector["enhanced_geothermal_reservoir_max_boost"] max_hours = max_hours * boost n.add( "StorageUnit", - bus + ' geothermal reservoir', + bus + " geothermal reservoir", bus=f"geothermal heat surface {bus}", carrier="geothermal heat", p_nom_extendable=True, - p_min_pu=-1. - boost, + p_min_pu=-1.0 - boost, max_hours=max_hours, ) diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 3c29e295..deb456c5 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -779,15 +779,13 @@ def add_geothermal_chp_constraint(n): def add_flexible_egs_constraint(n): - well_index = n.links.loc[n.links.carrier == 'geothermal heat'].index - storage_index = n.storage_units.loc[n.storage_units.carrier == 'geothermal heat '].index + well_index = n.links.loc[n.links.carrier == "geothermal heat"].index + storage_index = n.storage_units.loc[ + n.storage_units.carrier == "geothermal heat " + ].index - p_nom_rhs = ( - n.model["Link-p_nom"].loc[well_index] - ) - p_nom_lhs = ( - n.model["StorageUnit-p_nom"].loc[storage_index] - ) + p_nom_rhs = n.model["Link-p_nom"].loc[well_index] + p_nom_lhs = n.model["StorageUnit-p_nom"].loc[storage_index] n.model.add_constraints( p_nom_lhs <= p_nom_rhs, From 928c73138f0e3add83ef17fcdb2153528a57bb3a Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 14 Nov 2023 01:35:37 +0000 Subject: [PATCH 25/63] fixed bug, first functional version --- config/config.default.yaml | 1 + rules/build_sector.smk | 4 +-- scripts/prepare_sector_network.py | 43 ++++++++++++++----------------- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index 7bb75c40..3baf87a2 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -984,6 +984,7 @@ plotting: other: '#000000' geothermal: '#ba91b1' geothermal heat: '#ba91b1' + geothermal organic rankine cycle: '#ba91b1' AC: "#70af1d" AC-AC: "#70af1d" AC line: "#70af1d" diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 85897789..169a6129 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -224,8 +224,8 @@ rule build_solar_thermal_profiles: output: solar_thermal=RESOURCES + "solar_thermal_{scope}_elec_s{simpl}_{clusters}.nc", resources: - mem_mb=20000, - threads: 16 + mem_mb=2000, + threads: 1 log: LOGS + "build_solar_thermal_profiles_{scope}_s{simpl}_{clusters}.log", benchmark: diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 5d6c40e8..e26dd39e 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3338,9 +3338,8 @@ def add_enhanced_geothermal( # The orc cost are attributed to a separate link representing the ORC. egs_potentials["capital_cost"] = ( (egs_annuity + FOM / (1.0 + FOM)) - * (egs_potentials["CAPEX"] - costs.at["organice rankine cycle", "investment"]) + * (egs_potentials["CAPEX"] * 1000. - costs.at["organic rankine cycle", "investment"]) * Nyears - * 1000.0 ) assert ( egs_potentials["capital_cost"] > 0 @@ -3372,7 +3371,7 @@ def add_enhanced_geothermal( unit="MWh_th", ) - n.add( + n.madd( "Generator", spatial.geothermal_heat.nodes, bus=spatial.geothermal_heat.nodes, @@ -3412,46 +3411,44 @@ def add_enhanced_geothermal( else: appendix = " " + pd.Index(np.arange(len(bus_egs)).astype(str)) - bus_egs.index = np.arange(len(bus_egs)).astype(str) - - p_nom_max = bus_egs["p_nom_max"] - p_nom_max.index = f"{bus} enhanced geothermal" + appendix - - capital_cost = bus_egs["capital_cost"] - capital_cost.index = f"{bus} enhanced geothermal" + appendix - # add surface bus n.add( "Bus", - f"geothermal heat surface {bus}", - location=bus, + f"{bus} geothermal heat surface", ) + bus_egs.index = np.arange(len(bus_egs)).astype(str) + well_name = f"{bus} enhanced geothermal" + appendix + bus_eta = pd.concat( ( efficiency[bus].rename(idx) - for idx in f"{bus} enhanced geothermal" + appendix + for idx in well_name ), axis=1, ) + p_nom_max = bus_egs["p_nom_max"] + capital_cost = bus_egs["capital_cost"] + bus1 = pd.Series(f"{bus} geothermal heat surface", well_name) + n.madd( "Link", - f"{bus} enhanced geothermal" + appendix, + well_name, location=bus, bus0=spatial.geothermal_heat.nodes, - bus1=f"geothermal heat surface {bus}", + bus1=bus1, carrier="geothermal heat", p_nom_extendable=True, - p_nom_max=p_nom_max / efficiency, - capital_cost=capital_cost * efficiency, + p_nom_max=p_nom_max.set_axis(well_name) / efficiency_orc, + capital_cost=capital_cost.set_axis(well_name), efficiency=bus_eta, ) n.add( "Link", bus + " geothermal organic rankine cycle", - bus0=f"geothermal heat surface {bus}", + bus0=f"{bus} geothermal heat surface", bus1=bus, p_nom_extendable=True, carrier="geothermal organic rankine cycle", @@ -3463,7 +3460,7 @@ def add_enhanced_geothermal( n.add( "Link", bus + " geothermal heat district heat", - bus0=f"geothermal heat surface {bus}", + bus0=f"{bus} geothermal heat surface", bus1=bus + " urban central heat", carrier="geothermal district heat", capital_cost=plant_capital_cost @@ -3472,13 +3469,13 @@ def add_enhanced_geothermal( efficiency=efficiency_dh * 2.0, p_nom_extendable=True, ) - else: + elif as_chp and not bus + " urban central heat" in n.buses.index: n.links.at[bus + " geothermal organic rankine cycle", "efficiency"] = efficiency_orc if snakemake.params.sector["enhanced_geothermal_flexible"]: # this StorageUnit represents flexible operation using the geothermal reservoir. - # Hence, it is intuitively wrong to install it at the surface bus, + # Hence, it is counter-intuitive to install it at the surface bus, # this is however the more lean and computationally efficient solution. max_hours = snakemake.params.sector["enhanced_geothermal_reservoir_max_hours"] @@ -3488,7 +3485,7 @@ def add_enhanced_geothermal( n.add( "StorageUnit", bus + ' geothermal reservoir', - bus=f"geothermal heat surface {bus}", + bus=f"{bus} geothermal heat surface", carrier="geothermal heat", p_nom_extendable=True, p_min_pu=-1. - boost, From 5b2efe313ff551e06d876b9f9e942df6b18e88d1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 14 Nov 2023 01:37:36 +0000 Subject: [PATCH 26/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/prepare_sector_network.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 595bfa27..83f007d2 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3338,7 +3338,10 @@ def add_enhanced_geothermal( # The orc cost are attributed to a separate link representing the ORC. egs_potentials["capital_cost"] = ( (egs_annuity + FOM / (1.0 + FOM)) - * (egs_potentials["CAPEX"] * 1000. - costs.at["organic rankine cycle", "investment"]) + * ( + egs_potentials["CAPEX"] * 1000.0 + - costs.at["organic rankine cycle", "investment"] + ) * Nyears ) assert ( @@ -3421,10 +3424,7 @@ def add_enhanced_geothermal( well_name = f"{bus} enhanced geothermal" + appendix bus_eta = pd.concat( - ( - efficiency[bus].rename(idx) - for idx in well_name - ), + (efficiency[bus].rename(idx) for idx in well_name), axis=1, ) @@ -3470,7 +3470,9 @@ def add_enhanced_geothermal( p_nom_extendable=True, ) elif as_chp and not bus + " urban central heat" in n.buses.index: - n.links.at[bus + " geothermal organic rankine cycle", "efficiency"] = efficiency_orc + n.links.at[ + bus + " geothermal organic rankine cycle", "efficiency" + ] = efficiency_orc if snakemake.params.sector["enhanced_geothermal_flexible"]: # this StorageUnit represents flexible operation using the geothermal reservoir. @@ -3485,7 +3487,7 @@ def add_enhanced_geothermal( max_hours = max_hours * boost n.add( "StorageUnit", - bus + ' geothermal reservoir', + bus + " geothermal reservoir", bus=f"{bus} geothermal heat surface", carrier="geothermal heat", p_nom_extendable=True, From 4569af2647f0d182a060211b4811de5d5a2e9f80 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 14 Nov 2023 03:20:58 +0000 Subject: [PATCH 27/63] fixed cost calculation for EGS --- scripts/prepare_sector_network.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 595bfa27..7ad265f7 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3334,13 +3334,24 @@ def add_enhanced_geothermal( egs_annuity = calculate_annuity(lt, dr) + # under egs optimism, the expected cost reductions also cover costs for ORC + # hence, the ORC costs are no longer taken from technology-data + orc_capex = ( + costs.at["organic rankine cycle", "investment"] + if not snakemake.params.sector["enhanced_geothermal_optimism"] + else 0. + ) + # cost for ORC is subtracted, as it is already included in the geothermal cost. # The orc cost are attributed to a separate link representing the ORC. + # also capital_cost conversion Euro/kW -> Euro/MW + egs_potentials["capital_cost"] = ( (egs_annuity + FOM / (1.0 + FOM)) - * (egs_potentials["CAPEX"] * 1000. - costs.at["organic rankine cycle", "investment"]) + * (egs_potentials["CAPEX"] * 1000. - orc_capex) * Nyears ) + assert ( egs_potentials["capital_cost"] > 0 ).all(), "Error in EGS cost, negative values found." @@ -3348,7 +3359,7 @@ def add_enhanced_geothermal( plant_annuity = calculate_annuity(costs.at["organic rankine cycle", "lifetime"], dr) plant_capital_cost = ( (plant_annuity + FOM / (1 + FOM)) - * costs.at["organic rankine cycle", "investment"] + * orc_capex * Nyears ) @@ -3356,9 +3367,7 @@ def add_enhanced_geothermal( efficiency_dh = costs.at["geothermal", "efficiency residential heat"] # p_nom_max conversion GW -> MW - # capital_cost conversion Euro/kW -> Euro/MW egs_potentials["p_nom_max"] = egs_potentials["p_nom_max"] * 1000.0 - egs_potentials["capital_cost"] = egs_potentials["capital_cost"] * 1000.0 # not using add_carrier_buses, as we are not interested in a Store n.add("Carrier", "geothermal heat") @@ -3388,7 +3397,8 @@ def add_enhanced_geothermal( efficiency = pd.Series(1, overlap.index) # if urban central heat exists, adds geothermal as CHP - as_chp = "urban central heat" in n.buses.carrier + as_chp = "urban central heat" in n.loads.carrier.unique() + if as_chp: logger.info("Adding Enhanced Geothermal as Combined Heat and Power.") @@ -3441,7 +3451,7 @@ def add_enhanced_geothermal( carrier="geothermal heat", p_nom_extendable=True, p_nom_max=p_nom_max.set_axis(well_name) / efficiency_orc, - capital_cost=capital_cost.set_axis(well_name), + capital_cost=capital_cost.set_axis(well_name) * efficiency_orc, efficiency=bus_eta, ) @@ -3492,6 +3502,7 @@ def add_enhanced_geothermal( p_min_pu=-1.0 - boost, max_hours=max_hours, ) + n.links.to_csv('links.csv') if __name__ == "__main__": From 649e0a2a78c8cffd7cc42d0f7b493c25c6180221 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 14 Nov 2023 03:21:55 +0000 Subject: [PATCH 28/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/prepare_sector_network.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 55313452..37a5be0b 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3339,7 +3339,7 @@ def add_enhanced_geothermal( orc_capex = ( costs.at["organic rankine cycle", "investment"] if not snakemake.params.sector["enhanced_geothermal_optimism"] - else 0. + else 0.0 ) # cost for ORC is subtracted, as it is already included in the geothermal cost. @@ -3348,7 +3348,7 @@ def add_enhanced_geothermal( egs_potentials["capital_cost"] = ( (egs_annuity + FOM / (1.0 + FOM)) - * (egs_potentials["CAPEX"] * 1000. - orc_capex) + * (egs_potentials["CAPEX"] * 1000.0 - orc_capex) * Nyears ) @@ -3357,11 +3357,7 @@ def add_enhanced_geothermal( ).all(), "Error in EGS cost, negative values found." plant_annuity = calculate_annuity(costs.at["organic rankine cycle", "lifetime"], dr) - plant_capital_cost = ( - (plant_annuity + FOM / (1 + FOM)) - * orc_capex - * Nyears - ) + plant_capital_cost = (plant_annuity + FOM / (1 + FOM)) * orc_capex * Nyears efficiency_orc = costs.at["organic rankine cycle", "efficiency"] efficiency_dh = costs.at["geothermal", "efficiency residential heat"] @@ -3501,7 +3497,7 @@ def add_enhanced_geothermal( p_min_pu=-1.0 - boost, max_hours=max_hours, ) - n.links.to_csv('links.csv') + n.links.to_csv("links.csv") if __name__ == "__main__": From 7555fa0d2d80f5866347a7314ab228b7c19dbbef Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 14 Nov 2023 10:50:36 +0000 Subject: [PATCH 29/63] switched enhanced geothermal off by default --- config/config.default.yaml | 2 +- scripts/prepare_sector_network.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index 3baf87a2..73b6c68f 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -508,7 +508,7 @@ sector: solar: 3 offwind-ac: 3 offwind-dc: 3 - enhanced_geothermal: true + enhanced_geothermal: false enhanced_geothermal_optimism: false # if true, egs costs are reducing towards 2050 according to Aghahosseini et al., (2020) enhanced_geothermal_performant: true # if true, adds only the cheapest patch of EGS potential to each region enhanced_geothermal_flexible: true # if true, adds a storage unit simulating flexible operation of EGS, see Ricks et al. 2023 diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 55313452..4bfbc9c0 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3344,7 +3344,7 @@ def add_enhanced_geothermal( # cost for ORC is subtracted, as it is already included in the geothermal cost. # The orc cost are attributed to a separate link representing the ORC. - # also capital_cost conversion Euro/kW -> Euro/MW + # also capital_cost conversion Eurofalse/kW -> Euro/MW egs_potentials["capital_cost"] = ( (egs_annuity + FOM / (1.0 + FOM)) @@ -3501,7 +3501,6 @@ def add_enhanced_geothermal( p_min_pu=-1.0 - boost, max_hours=max_hours, ) - n.links.to_csv('links.csv') if __name__ == "__main__": From 52041fc656c794821af7615a7b114814041f5d10 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Wed, 15 Nov 2023 14:00:26 +0000 Subject: [PATCH 30/63] reverted unintended change in thermal rule --- rules/build_sector.smk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 169a6129..85897789 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -224,8 +224,8 @@ rule build_solar_thermal_profiles: output: solar_thermal=RESOURCES + "solar_thermal_{scope}_elec_s{simpl}_{clusters}.nc", resources: - mem_mb=2000, - threads: 1 + mem_mb=20000, + threads: 16 log: LOGS + "build_solar_thermal_profiles_{scope}_s{simpl}_{clusters}.log", benchmark: From 31b1ffb8d678025f0ee2be0f793f3accd35fc196 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Fri, 17 Nov 2023 11:42:11 +0000 Subject: [PATCH 31/63] adjusted egs storage parameters --- scripts/prepare_sector_network.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index eb37130f..654722f8 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3480,14 +3480,13 @@ def add_enhanced_geothermal( ] boost = snakemake.params.sector["enhanced_geothermal_reservoir_max_boost"] - max_hours = max_hours * boost n.add( "StorageUnit", bus + " geothermal reservoir", bus=f"{bus} geothermal heat surface", carrier="geothermal heat", p_nom_extendable=True, - p_min_pu=-1.0 - boost, + p_min_pu=-boost, max_hours=max_hours, ) From 97acf2f12e39046fabe5f94140550a89ba9e507a Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 19 Mar 2024 19:30:23 +0100 Subject: [PATCH 32/63] included Lisas PR suggestions --- config/config.default.yaml | 16 +++++++------ envs/environment.yaml | 2 +- rules/build_sector.smk | 37 ------------------------------- scripts/build_egs_potentials.py | 22 +++++++++++++----- scripts/prepare_sector_network.py | 21 +++++++++--------- scripts/solve_network.py | 2 +- 6 files changed, 37 insertions(+), 63 deletions(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index 472efe0e..5ae2aea4 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -577,13 +577,15 @@ sector: solar: 3 offwind-ac: 3 offwind-dc: 3 - enhanced_geothermal: false - enhanced_geothermal_optimism: false # if true, egs costs are reducing towards 2050 according to Aghahosseini et al., (2020) - enhanced_geothermal_performant: true # if true, adds only the cheapest patch of EGS potential to each region - enhanced_geothermal_flexible: true # if true, adds a storage unit simulating flexible operation of EGS, see Ricks et al. 2023 - enhanced_geothermal_var_cf: true # if true, adds time-dependent capacity factor to EGS, see Ricks et al. 2023 - enhanced_geothermal_reservoir_max_hours: 240 # relavant for flexible EGS, see Ricks et al. 2023 - enhanced_geothermal_reservoir_max_boost: 0.25 # share of generation that can be added by flexible EGS, see Ricks et al. 2023 + enhanced_geothermal: + enable: false + optimism: false # if true, egs costs are reducing towards 2050 according to Aghahosseini et al., (2020) + performant: true # if true, adds only the cheapest patch of EGS potential to each region + flexible: true # if true, adds a storage unit simulating flexible operation of EGS, see Ricks et al. 2023 + var_cf: true # if true, adds time-dependent capacity factor to EGS, see Ricks et al. 2023 + max_hours: 240 # relavant for flexible EGS, see Ricks et al. 2023 + max_boost: 0.25 # share of generation that can be added by flexible EGS, see Ricks et al. 2023 + sustainability_factor: 0.0025 # share of capacity that is replenished from earth's core # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry industry: diff --git a/envs/environment.yaml b/envs/environment.yaml index ee1d1605..264a5dbd 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -20,7 +20,7 @@ dependencies: - openpyxl!=3.1.1 - pycountry - seaborn -- snakemake-minimal>=8.5 +- snakemake-minimal>=8.5,<8.6 - memory_profiler - yaml - pytables diff --git a/rules/build_sector.smk b/rules/build_sector.smk index f740e6be..8d41e893 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -816,36 +816,6 @@ def input_profile_offwind(w): } -rule build_egs_potentials: - params: - snapshots=config_provider("snapshots"), - input: - egs_cost="data/egs_costs.json", - regions=resources("regions_onshore_elec_s{simpl}_{clusters}.geojson"), - air_temperature=( - resources("temp_air_total_elec_s{simpl}_{clusters}.nc") - if config_provider("sector", "enhanced_geothermal_var_cf") - else [] - ), - output: - egs_potentials=resources("egs_potentials_s{simpl}_{clusters}.csv"), - egs_overlap=resources("egs_overlap_s{simpl}_{clusters}.csv"), - egs_capacity_factors=( - resources("egs_capacity_factors_s{simpl}_{clusters}.csv") - if config_provider("sector", "enhanced_geothermal_var_cf") - else [] - ), - threads: 1 - resources: - mem_mb=2000, - log: - logs("build_egs_potentials_s{simpl}_{clusters}.log"), - conda: - "../envs/environment.yaml" - script: - "../scripts/build_egs_potentials.py" - - rule prepare_sector_network: params: time_resolution=config_provider("clustering", "temporal", "resolution_sector"), @@ -946,13 +916,6 @@ rule prepare_sector_network: cop_air_total=resources("cop_air_total_elec_s{simpl}_{clusters}.nc"), cop_air_rural=resources("cop_air_rural_elec_s{simpl}_{clusters}.nc"), cop_air_urban=resources("cop_air_urban_elec_s{simpl}_{clusters}.nc"), - egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv", - egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv", - egs_capacity_factors=( - RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv" - if config["sector"]["enhanced_geothermal_var_cf"] - else [] - ), solar_thermal_total=lambda w: ( resources("solar_thermal_total_elec_s{simpl}_{clusters}.nc") if config_provider("sector", "solar_thermal")(w) diff --git a/scripts/build_egs_potentials.py b/scripts/build_egs_potentials.py index c86421eb..9216dce2 100644 --- a/scripts/build_egs_potentials.py +++ b/scripts/build_egs_potentials.py @@ -93,6 +93,10 @@ def get_capacity_factors(network_regions_file, air_temperatures_file): in Decarbonized Elec Systems. """ + # these values are taken from the paper's + # Supplementary Figure 20 from https://zenodo.org/records/7093330 + # and relate deviations of the ambient temperature from the year-average + # ambient temperature to EGS capacity factors. delta_T = [-15, -10, -5, 0, 5, 10, 15, 20] cf = [1.17, 1.13, 1.07, 1, 0.925, 0.84, 0.75, 0.65] @@ -118,6 +122,10 @@ def get_capacity_factors(network_regions_file, air_temperatures_file): snapshots = pd.date_range(freq="h", **snakemake.params.snapshots) capacity_factors = pd.DataFrame(index=snapshots) + # bespoke computation of capacity factors for each bus. + # Considering the respective temperatures, we compute + # the deviation from the average temperature and relate it + # to capacity factors based on the data from above. for bus in index: temp = air_temp.sel(name=bus).to_dataframe()["temperature"] capacity_factors[bus] = np.interp((temp - temp.mean()).values, x, y) @@ -135,18 +143,20 @@ if __name__ == "__main__": clusters=37, ) - sustainability_factor = 0.0025 + egs_config = snakemake.params["sector"]["enhanced_geothermal"] + costs_config = snakemake.params["costs"] + + sustainability_factor = egs_config["sustainability_factor"] # the share of heat that is replenished from the earth's core. # we are not constraining ourselves to the sustainable share, but # inversely apply it to our underlying data, which refers to the - # sustainable heat. - - config = snakemake.config + # sustainable heat. Source: Relative magnitude of sustainable heat vs + # nonsustainable heat in the paper "From hot rock to useful energy..." egs_data = prepare_egs_data(snakemake.input.egs_cost) - if config["sector"]["enhanced_geothermal_optimism"]: - egs_data = egs_data[(year := config["costs"]["year"])] + if egs_config["optimism"]: + egs_data = egs_data[(year := costs_config["year"])] logger.info( f"EGS optimism! Building EGS potentials with costs estimated for {year}." ) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index b7502f56..2d895c65 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3582,7 +3582,8 @@ def add_enhanced_geothermal( "'add_enhanced_geothermal' not implemented for multiple geothermal nodes." ) - config = snakemake.config + egs_config = snakemake.params["sector"]["enhanced_geothermal"] + costs_config = snakemake.config["costs"] # matrix defining the overlap between gridded geothermal potential estimation, and bus regions overlap = pd.read_csv(egs_overlap, index_col=0) @@ -3590,7 +3591,7 @@ def add_enhanced_geothermal( egs_potentials = pd.read_csv(egs_potentials, index_col=0) Nyears = n.snapshot_weightings.generators.sum() / 8760 - dr = config["costs"]["fill_values"]["discount rate"] + dr = costs_config["fill_values"]["discount rate"] lt = costs.at["geothermal", "lifetime"] FOM = costs.at["geothermal", "FOM"] @@ -3673,7 +3674,7 @@ def add_enhanced_geothermal( bus_egs["p_nom_max"] = bus_egs["p_nom_max"].multiply(bus_overlap) bus_egs = bus_egs.loc[bus_egs.p_nom_max > 0.0] - if config["sector"]["enhanced_geothermal_performant"]: + if egs_config["performant"]: bus_egs = bus_egs.sort_values(by="capital_cost").iloc[:1] appendix = pd.Index([""]) else: @@ -3718,7 +3719,7 @@ def add_enhanced_geothermal( p_nom_extendable=True, carrier="geothermal organic rankine cycle", capital_cost=plant_capital_cost * efficiency_orc, - efficiency=efficiency_orc if not as_chp else efficiency_orc * 2.0, + efficiency=efficiency_orc, ) if as_chp and bus + " urban central heat" in n.buses.index: @@ -3731,7 +3732,7 @@ def add_enhanced_geothermal( capital_cost=plant_capital_cost * efficiency_orc * costs.at["geothermal", "district heating cost"], - efficiency=efficiency_dh * 2.0, + efficiency=efficiency_dh, p_nom_extendable=True, ) elif as_chp and not bus + " urban central heat" in n.buses.index: @@ -3739,15 +3740,13 @@ def add_enhanced_geothermal( efficiency_orc ) - if snakemake.params.sector["enhanced_geothermal_flexible"]: + if egs_config["flexible"]: # this StorageUnit represents flexible operation using the geothermal reservoir. # Hence, it is counter-intuitive to install it at the surface bus, # this is however the more lean and computationally efficient solution. - max_hours = snakemake.params.sector[ - "enhanced_geothermal_reservoir_max_hours" - ] - boost = snakemake.params.sector["enhanced_geothermal_reservoir_max_boost"] + max_hours = egs_config["reservoir_max_hours"] + boost = egs_config["reservoir_max_boost"] n.add( "StorageUnit", @@ -3912,7 +3911,7 @@ if __name__ == "__main__": if options.get("cluster_heat_buses", False) and not first_year_myopic: cluster_heat_buses(n) - if options.get("enhanced_geothermal", False): + if options["enhanced_geothermal"].get("enable", False): logger.info("Adding Enhanced Geothermal Potential.") add_enhanced_geothermal( n, snakemake.input["egs_potentials"], snakemake.input["egs_overlap"], costs diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 09069d12..83c23691 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -816,7 +816,7 @@ def add_geothermal_chp_constraint(n): def add_flexible_egs_constraint(n): well_index = n.links.loc[n.links.carrier == "geothermal heat"].index storage_index = n.storage_units.loc[ - n.storage_units.carrier == "geothermal heat " + n.storage_units.carrier == "geothermal heat" ].index p_nom_rhs = n.model["Link-p_nom"].loc[well_index] From 46cd9a82743a2aa25ee7e9e81a1ea6bda9224a80 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Tue, 26 Mar 2024 23:54:25 +0100 Subject: [PATCH 33/63] changed implementation to always use 2020 cost --- envs/environment.yaml | 2 +- rules/build_sector.smk | 47 +++++++++++++++- scripts/build_egs_potentials.py | 90 +++++++++++++++++++++++-------- scripts/prepare_sector_network.py | 71 ++++++++++++------------ scripts/solve_network.py | 26 +-------- 5 files changed, 154 insertions(+), 82 deletions(-) diff --git a/envs/environment.yaml b/envs/environment.yaml index 264a5dbd..ee1d1605 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -20,7 +20,7 @@ dependencies: - openpyxl!=3.1.1 - pycountry - seaborn -- snakemake-minimal>=8.5,<8.6 +- snakemake-minimal>=8.5 - memory_profiler - yaml - pytables diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 8d41e893..a17e031f 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -248,8 +248,8 @@ rule build_solar_thermal_profiles: output: solar_thermal=resources("solar_thermal_{scope}_elec_s{simpl}_{clusters}.nc"), resources: - mem_mb=20000, - threads: 16 + mem_mb=8000, + threads: 1 log: logs("build_solar_thermal_profiles_{scope}_s{simpl}_{clusters}.log"), benchmark: @@ -816,6 +816,34 @@ def input_profile_offwind(w): } +rule build_egs_potentials: + params: + snapshots=config_provider("snapshots"), + sector=config_provider("sector"), + costs=config_provider("costs"), + input: + egs_cost="data/egs_costs.json", + regions=resources("regions_onshore_elec_s{simpl}_{clusters}.geojson"), + air_temperature=( + resources("temp_air_total_elec_s{simpl}_{clusters}.nc") + if config_provider("sector", "enhanced_geothermal", "var_cf") + else [] + ), + output: + egs_potentials=resources("egs_potentials_s{simpl}_{clusters}.csv"), + egs_overlap=resources("egs_overlap_s{simpl}_{clusters}.csv"), + egs_capacity_factors=resources("egs_capacity_factors_s{simpl}_{clusters}.csv"), + threads: 1 + resources: + mem_mb=2000, + log: + logs("build_egs_potentials_s{simpl}_{clusters}.log"), + conda: + "../envs/environment.yaml" + script: + "../scripts/build_egs_potentials.py" + + rule prepare_sector_network: params: time_resolution=config_provider("clustering", "temporal", "resolution_sector"), @@ -931,6 +959,21 @@ rule prepare_sector_network: if config_provider("sector", "solar_thermal")(w) else [] ), + egs_potentials=lambda w: ( + resources("egs_potentials_s{simpl}_{clusters}.csv") + if config_provider("sector", "enhanced_geothermal", "enable")(w) + else [] + ), + egs_overlap=lambda w: ( + resources("egs_overlap_s{simpl}_{clusters}.csv") + if config_provider("sector", "enhanced_geothermal", "enable")(w) + else [] + ), + egs_capacity_factors=lambda w: ( + resources("egs_capacity_factors_s{simpl}_{clusters}.csv") + if config_provider("sector", "enhanced_geothermal", "enable")(w) + else [] + ), output: RESULTS + "prenetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc", diff --git a/scripts/build_egs_potentials.py b/scripts/build_egs_potentials.py index 9216dce2..0fc1ff8a 100644 --- a/scripts/build_egs_potentials.py +++ b/scripts/build_egs_potentials.py @@ -30,6 +30,9 @@ from shapely.geometry import Polygon def prepare_egs_data(egs_file): + """ + Processes the original .json file EGS data to a more human-readable format. + """ with open(egs_file) as f: jsondata = json.load(f) @@ -86,6 +89,65 @@ def prepare_egs_data(egs_file): return egs_data +def prepare_capex(prepared_data): + """ + The source paper provides only data for year and regions where LCOE < + 100Euro/MWh. However, this implementations starts with the costs for 2020 + for all regions and then adjusts the costs according to the user's chosen + setting in the config file. + + As such, for regions where cost data is available only from, say, + 2035, we need to reverse-engineer the costs for 2020. This is done + in the following (unfortunately verbose) function. + """ + + default_year = 2020 + + # obtains all available CAPEX data + capex_df = pd.DataFrame(columns=prepared_data.keys()) + + for year in capex_df.columns: + + year_data = prepared_data[year].groupby("geometry").mean().reset_index() + + for g in year_data.geometry: + + if not g in year_data.geometry.tolist(): + # weird but apparently necessary + continue + + capex_df.loc[g, year] = year_data.loc[ + year_data.geometry == g, "CAPEX" + ].values[0] + + capex_df = capex_df.loc[:, default_year:] + + # fill up missing values assuming cost reduction factors similar to existing values + for sooner, later in zip(capex_df.columns[::-1][1:], capex_df.columns[::-1]): + + missing_mask = capex_df[sooner].isna() + cr_factor = ( + capex_df.loc[~missing_mask, later] / capex_df.loc[~missing_mask, sooner] + ) + + capex_df.loc[missing_mask, sooner] = ( + capex_df.loc[missing_mask, later] / cr_factor.mean() + ) + + # harmonice capacity and CAPEX + p_nom_max = prepared_data[2050].groupby("geometry")["PowerSust"].mean() + p_nom_max = p_nom_max.loc[p_nom_max > 0] + + capex_df = capex_df.loc[p_nom_max.index] + + data = ( + pd.concat((capex_df[default_year], p_nom_max), axis=1) + .reset_index() + .rename(columns={2020: "CAPEX"}) + ) + return gpd.GeoDataFrame(data, geometry=data.geometry) + + def get_capacity_factors(network_regions_file, air_temperatures_file): """ Performance of EGS is higher for lower temperatures, due to more efficient @@ -146,28 +208,9 @@ if __name__ == "__main__": egs_config = snakemake.params["sector"]["enhanced_geothermal"] costs_config = snakemake.params["costs"] - sustainability_factor = egs_config["sustainability_factor"] - # the share of heat that is replenished from the earth's core. - # we are not constraining ourselves to the sustainable share, but - # inversely apply it to our underlying data, which refers to the - # sustainable heat. Source: Relative magnitude of sustainable heat vs - # nonsustainable heat in the paper "From hot rock to useful energy..." - egs_data = prepare_egs_data(snakemake.input.egs_cost) + egs_data = prepare_capex(egs_data) - if egs_config["optimism"]: - egs_data = egs_data[(year := costs_config["year"])] - logger.info( - f"EGS optimism! Building EGS potentials with costs estimated for {year}." - ) - - else: - egs_data = egs_data[(default_year := 2020)] - logger.info( - f"No EGS optimism! Building EGS potentials with {default_year} costs." - ) - - egs_data = egs_data.loc[egs_data["PowerSust"] > 0].reset_index(drop=True) egs_regions = egs_data.geometry network_regions = ( @@ -188,7 +231,12 @@ if __name__ == "__main__": overlap_matrix.to_csv(snakemake.output["egs_overlap"]) - # consider not only replenished heat + # the share of heat that is replenished from the earth's core. + # we are not constraining ourselves to the sustainable share, but + # inversely apply it to our underlying data, which refers to the + # sustainable heat. Source: Relative magnitude of sustainable heat vs + # nonsustainable heat in the paper "From hot rock to useful energy..." + sustainability_factor = egs_config["sustainability_factor"] egs_data["p_nom_max"] = egs_data["PowerSust"] / sustainability_factor egs_data[["p_nom_max", "CAPEX"]].to_csv(snakemake.output["egs_potentials"]) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 2d895c65..71445735 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -190,7 +190,7 @@ def define_spatial(nodes, options): # deep geothermal spatial.geothermal_heat = SimpleNamespace() - spatial.geothermal_heat.nodes = ["EU deep geothermal"] + spatial.geothermal_heat.nodes = ["EU enhanced geothermal systems"] spatial.geothermal_heat.locations = ["EU"] return spatial @@ -3599,15 +3599,11 @@ def add_enhanced_geothermal( # under egs optimism, the expected cost reductions also cover costs for ORC # hence, the ORC costs are no longer taken from technology-data - orc_capex = ( - costs.at["organic rankine cycle", "investment"] - if not snakemake.params.sector["enhanced_geothermal_optimism"] - else 0.0 - ) + orc_capex = costs.at["organic rankine cycle", "investment"] # cost for ORC is subtracted, as it is already included in the geothermal cost. # The orc cost are attributed to a separate link representing the ORC. - # also capital_cost conversion Eurofalse/kW -> Euro/MW + # also capital_cost conversion Euro/kW -> Euro/MW egs_potentials["capital_cost"] = ( (egs_annuity + FOM / (1.0 + FOM)) @@ -3619,8 +3615,8 @@ def add_enhanced_geothermal( egs_potentials["capital_cost"] > 0 ).all(), "Error in EGS cost, negative values found." - plant_annuity = calculate_annuity(costs.at["organic rankine cycle", "lifetime"], dr) - plant_capital_cost = (plant_annuity + FOM / (1 + FOM)) * orc_capex * Nyears + orc_annuity = calculate_annuity(costs.at["organic rankine cycle", "lifetime"], dr) + orc_capital_cost = (orc_annuity + FOM / (1 + FOM)) * orc_capex * Nyears efficiency_orc = costs.at["organic rankine cycle", "efficiency"] efficiency_dh = costs.at["geothermal", "efficiency residential heat"] @@ -3647,19 +3643,22 @@ def add_enhanced_geothermal( p_nom_extendable=True, ) - if snakemake.params.sector["enhanced_geothermal_var_cf"]: + if egs_config["var_cf"]: efficiency = pd.read_csv( snakemake.input.egs_capacity_factors, parse_dates=True, index_col=0 ) logger.info("Adding Enhanced Geothermal with time-varying capacity factors.") else: - efficiency = pd.Series(1, overlap.index) + efficiency = 1.0 # if urban central heat exists, adds geothermal as CHP as_chp = "urban central heat" in n.loads.carrier.unique() if as_chp: - logger.info("Adding Enhanced Geothermal as Combined Heat and Power.") + logger.info("Adding EGS as Combined Heat and Power.") + + else: + logger.info("Adding EGS for Electricity Only.") for bus, bus_overlap in overlap.iterrows(): if not bus_overlap.sum(): @@ -3674,34 +3673,36 @@ def add_enhanced_geothermal( bus_egs["p_nom_max"] = bus_egs["p_nom_max"].multiply(bus_overlap) bus_egs = bus_egs.loc[bus_egs.p_nom_max > 0.0] - if egs_config["performant"]: - bus_egs = bus_egs.sort_values(by="capital_cost").iloc[:1] - appendix = pd.Index([""]) - else: - appendix = " " + pd.Index(np.arange(len(bus_egs)).astype(str)) + appendix = " " + pd.Index(np.arange(len(bus_egs)).astype(str)) # add surface bus - n.add( + n.madd( "Bus", - f"{bus} geothermal heat surface", + pd.Index([f"{bus} geothermal heat surface"]), + location=bus, + unit="MWh_th", + carrier="geothermal heat", ) bus_egs.index = np.arange(len(bus_egs)).astype(str) well_name = f"{bus} enhanced geothermal" + appendix - bus_eta = pd.concat( - (efficiency[bus].rename(idx) for idx in well_name), - axis=1, - ) + if egs_config["var_cf"]: + bus_eta = pd.concat( + (efficiency[bus].rename(idx) for idx in well_name), + axis=1, + ) + else: + bus_eta = efficiency p_nom_max = bus_egs["p_nom_max"] capital_cost = bus_egs["capital_cost"] bus1 = pd.Series(f"{bus} geothermal heat surface", well_name) + # adding geothermal wells as multiple generators to represent supply curve n.madd( "Link", well_name, - location=bus, bus0=spatial.geothermal_heat.nodes, bus1=bus1, carrier="geothermal heat", @@ -3711,6 +3712,7 @@ def add_enhanced_geothermal( efficiency=bus_eta, ) + # adding Organic Rankine Cycle as a single link n.add( "Link", bus + " geothermal organic rankine cycle", @@ -3718,7 +3720,7 @@ def add_enhanced_geothermal( bus1=bus, p_nom_extendable=True, carrier="geothermal organic rankine cycle", - capital_cost=plant_capital_cost * efficiency_orc, + capital_cost=orc_capital_cost * efficiency_orc, efficiency=efficiency_orc, ) @@ -3729,7 +3731,7 @@ def add_enhanced_geothermal( bus0=f"{bus} geothermal heat surface", bus1=bus + " urban central heat", carrier="geothermal district heat", - capital_cost=plant_capital_cost + capital_cost=orc_capital_cost * efficiency_orc * costs.at["geothermal", "district heating cost"], efficiency=efficiency_dh, @@ -3745,8 +3747,8 @@ def add_enhanced_geothermal( # Hence, it is counter-intuitive to install it at the surface bus, # this is however the more lean and computationally efficient solution. - max_hours = egs_config["reservoir_max_hours"] - boost = egs_config["reservoir_max_boost"] + max_hours = egs_config["max_hours"] + boost = egs_config["max_boost"] n.add( "StorageUnit", @@ -3756,6 +3758,7 @@ def add_enhanced_geothermal( p_nom_extendable=True, p_min_pu=-boost, max_hours=max_hours, + cyclic_state_of_charge=True, ) @@ -3884,6 +3887,12 @@ if __name__ == "__main__": if options["electricity_distribution_grid"]: insert_electricity_distribution_grid(n, costs) + if options["enhanced_geothermal"].get("enable", False): + logger.info("Adding Enhanced Geothermal Systems (EGS).") + add_enhanced_geothermal( + n, snakemake.input["egs_potentials"], snakemake.input["egs_overlap"], costs + ) + maybe_adjust_costs_and_potentials(n, snakemake.params["adjustments"]) if options["gas_distribution_grid"]: @@ -3911,12 +3920,6 @@ if __name__ == "__main__": if options.get("cluster_heat_buses", False) and not first_year_myopic: cluster_heat_buses(n) - if options["enhanced_geothermal"].get("enable", False): - logger.info("Adding Enhanced Geothermal Potential.") - add_enhanced_geothermal( - n, snakemake.input["egs_potentials"], snakemake.input["egs_overlap"], costs - ) - n.meta = dict(snakemake.config, **dict(wildcards=dict(snakemake.wildcards))) sanitize_carriers(n, snakemake.config) diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 83c23691..9477ce6d 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -801,7 +801,7 @@ def add_geothermal_chp_constraint(n): elec_index = n.links.loc[ n.links.carrier == "geothermal organic rankine cycle" ].index - heat_index = n.links.loc[n.links.carrier == "geothermal heat district heat"].index + heat_index = n.links.loc[n.links.carrier == "geothermal district heat"].index p_nom_lhs = ( n.model["Link-p_nom"].loc[heat_index] - n.model["Link-p_nom"].loc[elec_index] @@ -824,7 +824,7 @@ def add_flexible_egs_constraint(n): n.model.add_constraints( p_nom_lhs <= p_nom_rhs, - name="Upper bounds the charging capacity of the storage unit", + name="Upper bounds the charging capacity of the geothermal reservoir according to the well capacity", ) @@ -954,28 +954,6 @@ def solve_network(n, config, solving, **kwargs): n.model.print_infeasibilities() raise RuntimeError("Solving status 'infeasible'") - # check if enhanced_geothermal_performant might have changed model results - if ( - snakemake.config["sector"]["enhanced_geothermal"] - and snakemake.config["sector"]["enhanced_geothermal_performant"] - ): - mask = (mask := n.links.carrier == "geothermal heat") & ( - n.links.loc[mask, "p_nom_max"] > 0.0 - ) - - saturated = n.links.loc[mask, "p_nom_max"] == n.links.loc[mask, "p_nom_opt"] - - if saturated.any(): - logger.warning( - ( - "Potential for enhanced geothermal heat is saturated at bus(es):\n" - f"{', '.join(n.links.loc[saturated.loc[saturated.astype(bool)].index, 'location'].tolist())}.\n" - "Consider setting config['sector']['enhanced_geothermal_performant'] to False." - ) - ) - - return n - if __name__ == "__main__": if "snakemake" not in globals(): From 9abe1a10d8f9fb853fc7986265c9a5c96a7b0c17 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Wed, 27 Mar 2024 00:04:51 +0100 Subject: [PATCH 34/63] removed geothermal chp constraint --- scripts/prepare_sector_network.py | 2 +- scripts/solve_network.py | 29 ++++++++--------------------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 71445735..aa9c9801 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3607,7 +3607,7 @@ def add_enhanced_geothermal( egs_potentials["capital_cost"] = ( (egs_annuity + FOM / (1.0 + FOM)) - * (egs_potentials["CAPEX"] * 1000.0 - orc_capex) + * (egs_potentials["CAPEX"] * 1e3 - orc_capex) * Nyears ) diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 9477ce6d..1f0096ba 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -797,23 +797,11 @@ def add_pipe_retrofit_constraint(n): n.model.add_constraints(lhs == rhs, name="Link-pipe_retrofit") -def add_geothermal_chp_constraint(n): - elec_index = n.links.loc[ - n.links.carrier == "geothermal organic rankine cycle" - ].index - heat_index = n.links.loc[n.links.carrier == "geothermal district heat"].index - - p_nom_lhs = ( - n.model["Link-p_nom"].loc[heat_index] - n.model["Link-p_nom"].loc[elec_index] - ) - - n.model.add_constraints( - p_nom_lhs == 0, - name="equalizes_p_nom_of_chp_elec_and_chp_district_heat", - ) - - def add_flexible_egs_constraint(n): + """ + Upper bounds the charging capacity of the geothermal reservoir according to + the well capacity. + """ well_index = n.links.loc[n.links.carrier == "geothermal heat"].index storage_index = n.storage_units.loc[ n.storage_units.carrier == "geothermal heat" @@ -824,7 +812,7 @@ def add_flexible_egs_constraint(n): n.model.add_constraints( p_nom_lhs <= p_nom_rhs, - name="Upper bounds the charging capacity of the geothermal reservoir according to the well capacity", + name="upper_bound_charging_capacity_of_geothermal_reservoir", ) @@ -883,13 +871,12 @@ def extra_functionality(n, snapshots): add_carbon_constraint(n, snapshots) add_carbon_budget_constraint(n, snapshots) add_retrofit_gas_boiler_constraint(n, snapshots) - if "geothermal district heat" in n.links.carrier: - add_geothermal_chp_constraint(n) - if config["sector"]["enhanced_geothermal_flexible"]: - add_flexible_egs_constraint(n) else: add_co2_atmosphere_constraint(n, snapshots) + if config["sector"]["enhanced_geothermal_flexible"]: + add_flexible_egs_constraint(n) + if snakemake.params.custom_extra_functionality: source_path = snakemake.params.custom_extra_functionality assert os.path.exists(source_path), f"{source_path} does not exist" From 08ccd4d233402120801e010fd3044769b2b58fa2 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Wed, 27 Mar 2024 11:16:23 +0100 Subject: [PATCH 35/63] moved docs from config file to docs --- config/config.default.yaml | 12 +++++------- doc/configtables/sector.csv | 8 ++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index 0237c358..cf6e0bc3 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -586,13 +586,11 @@ sector: offwind-dc: 3 enhanced_geothermal: enable: false - optimism: false # if true, egs costs are reducing towards 2050 according to Aghahosseini et al., (2020) - performant: true # if true, adds only the cheapest patch of EGS potential to each region - flexible: true # if true, adds a storage unit simulating flexible operation of EGS, see Ricks et al. 2023 - var_cf: true # if true, adds time-dependent capacity factor to EGS, see Ricks et al. 2023 - max_hours: 240 # relavant for flexible EGS, see Ricks et al. 2023 - max_boost: 0.25 # share of generation that can be added by flexible EGS, see Ricks et al. 2023 - sustainability_factor: 0.0025 # share of capacity that is replenished from earth's core + flexible: true + max_hours: 240 + max_boost: 0.25 + var_cf: true + sustainability_factor: 0.0025 # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry industry: diff --git a/doc/configtables/sector.csv b/doc/configtables/sector.csv index 1f8bb030..69b3375b 100644 --- a/doc/configtables/sector.csv +++ b/doc/configtables/sector.csv @@ -145,3 +145,11 @@ limit_max_growth,,, -- -- {carrier},GW,float,The historic maximum growth of a carrier -- max_relative_growth, -- -- {carrier},p.u.,float,The historic maximum relative growth of a carrier +,,, +enhanced_geothermal,,, +-- enable,--,"{true, false}",Add option to include Enhanced Geothermal Systems +-- flexible,--,"{true, false}",Add option for flexible operation (see Ricks et al. 2024) +-- max_hours,--,int,The maximum hours the reservoir can be charged under flexible operation +-- max_boost,--,float,The maximum boost in power output under flexible operation +-- var_cf,--,"{true, false}",Add option for variable capacity factor (see Ricks et al. 2024) +-- sustainability_factor,--,float,Share of sourced heat that is replenished by the earth's core (see details in `build_egs_potentials.py `_) From 2f1d6d20b143178cd3617696deecbefbbcac5d9a Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sat, 1 Jun 2024 00:20:31 +0100 Subject: [PATCH 36/63] final corrections, improved docs --- rules/build_sector.smk | 4 ++-- scripts/prepare_sector_network.py | 14 ++++++++++---- scripts/solve_network.py | 4 +++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/rules/build_sector.smk b/rules/build_sector.smk index dea9e4a1..6614b163 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -269,8 +269,8 @@ rule build_solar_thermal_profiles: output: solar_thermal=resources("solar_thermal_{scope}_elec_s{simpl}_{clusters}.nc"), resources: - mem_mb=8000, - threads: 1 + mem_mb=20000, + threads: 16 log: logs("build_solar_thermal_profiles_{scope}_s{simpl}_{clusters}.log"), benchmark: diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 7198c081..99f9ae67 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -981,7 +981,7 @@ def insert_electricity_distribution_grid(n, costs): .get("efficiency_static") ): logger.info( - f"Deducting distribution losses from electricity demand: {100*(1-efficiency)}%" + f"Deducting distribution losses from electricity demand: {np.around(100*(1-efficiency), decimals=2)}%" ) n.loads_t.p_set.loc[:, n.loads.carrier == "electricity"] *= efficiency @@ -3742,6 +3742,12 @@ def add_enhanced_geothermal(n, egs_potentials, egs_overlap, costs): logger.warning( "'add_enhanced_geothermal' not implemented for multiple geothermal nodes." ) + logger.info( + "EGS implemented with 2020 CAPEX from Aghahosseini et al 2021: 'From hot rock to...'." + ) + logger.info( + "Recommended usage scales CAPEX to future cost expectations using config 'adjustments'." + ) egs_config = snakemake.params["sector"]["enhanced_geothermal"] costs_config = snakemake.config["costs"] @@ -3780,7 +3786,7 @@ def add_enhanced_geothermal(n, egs_potentials, egs_overlap, costs): orc_capital_cost = (orc_annuity + FOM / (1 + FOM)) * orc_capex * Nyears efficiency_orc = costs.at["organic rankine cycle", "efficiency"] - efficiency_dh = costs.at["geothermal", "efficiency residential heat"] + efficiency_dh = costs.at["geothermal", "district heat-input"] # p_nom_max conversion GW -> MW egs_potentials["p_nom_max"] = egs_potentials["p_nom_max"] * 1000.0 @@ -3791,7 +3797,6 @@ def add_enhanced_geothermal(n, egs_potentials, egs_overlap, costs): n.madd( "Bus", spatial.geothermal_heat.nodes, - location=spatial.geothermal_heat.locations, carrier="geothermal heat", unit="MWh_th", ) @@ -3894,7 +3899,8 @@ def add_enhanced_geothermal(n, egs_potentials, egs_overlap, costs): carrier="geothermal district heat", capital_cost=orc_capital_cost * efficiency_orc - * costs.at["geothermal", "district heating cost"], + * costs.at["geothermal", "district heat surcharge"] + / 100.0, efficiency=efficiency_dh, p_nom_extendable=True, ) diff --git a/scripts/solve_network.py b/scripts/solve_network.py index e5884b3f..65dae0c4 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -1032,7 +1032,7 @@ def extra_functionality(n, snapshots): else: add_co2_atmosphere_constraint(n, snapshots) - if config["sector"]["enhanced_geothermal_flexible"]: + if config["sector"]["enhanced_geothermal"]["enable"]: add_flexible_egs_constraint(n) if snakemake.params.custom_extra_functionality: @@ -1102,6 +1102,8 @@ def solve_network(n, config, solving, **kwargs): n.model.print_infeasibilities() raise RuntimeError("Solving status 'infeasible'") + return n + if __name__ == "__main__": if "snakemake" not in globals(): From 4752840009e813e4d0a40d935c5f3a266bc3c740 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sat, 1 Jun 2024 00:32:44 +0100 Subject: [PATCH 37/63] improved docs on EGS cost scaling --- scripts/prepare_sector_network.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 99f9ae67..ab4096e2 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -3743,11 +3743,17 @@ def add_enhanced_geothermal(n, egs_potentials, egs_overlap, costs): "'add_enhanced_geothermal' not implemented for multiple geothermal nodes." ) logger.info( - "EGS implemented with 2020 CAPEX from Aghahosseini et al 2021: 'From hot rock to...'." + "[EGS] implemented with 2020 CAPEX from Aghahosseini et al 2021: 'From hot rock to...'." ) logger.info( - "Recommended usage scales CAPEX to future cost expectations using config 'adjustments'." + "[EGS] Recommended usage scales CAPEX to future cost expectations using config 'adjustments'." ) + logger.info("[EGS] During this the relevant carriers are:") + logger.info("[EGS] drilling part -> 'geothermal heat'") + logger.info( + "[EGS] electricity generation part -> 'geothermal organic rankine cycle'" + ) + logger.info("[EGS] district heat distribution part -> 'geothermal district heat'") egs_config = snakemake.params["sector"]["enhanced_geothermal"] costs_config = snakemake.config["costs"] From 4819b9021b8419ed870e1046eda7b8f71bf8d2a7 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sat, 1 Jun 2024 11:13:13 +0100 Subject: [PATCH 38/63] added release note on EGS --- doc/release_notes.rst | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 2e5487ac..efb9deb6 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -7,8 +7,15 @@ Release Notes ########################################## -.. Upcoming Release -.. ================ +Upcoming Release +================ + +* Added Enhanced Geothermal Systems for generation of electricity and district heat. + Cost and available capacity assumptions based on `Aghahosseini et al. (2020) + `__. + See configuration ``sector: enhanced_geothermal`` for details; by default switched off. + + PyPSA-Eur 0.11.0 (25th May 2024) ===================================== @@ -808,7 +815,7 @@ PyPSA-Eur 0.9.0 (5th January 2024) * The minimum PyPSA version is now 0.26.1. -* Update to ``tsam>=0.2.3`` for performance improvents in temporal clustering. +* Update to ``tsam>=0.2.3`` for performance improvements in temporal clustering. * Pin ``snakemake`` version to below 8.0.0, as the new version is not yet supported. The next release will switch to the requirement ``snakemake>=8``. From b0d7a45ea78b55e2479033c803c373e6cb0189a1 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sat, 1 Jun 2024 18:21:49 +0100 Subject: [PATCH 39/63] changed EGS paper link to doi-containing version --- scripts/build_egs_potentials.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_egs_potentials.py b/scripts/build_egs_potentials.py index 0fc1ff8a..65ebab3a 100644 --- a/scripts/build_egs_potentials.py +++ b/scripts/build_egs_potentials.py @@ -7,7 +7,7 @@ This rule extracts potential and cost for electricity generation through enhanced geothermal systems. For this, we use data from "From hot rock to useful energy..." by Aghahosseini, Breyer (2020) -'https://www.sciencedirect.com/science/article/pii/S0306261920312551' +'https://doi.org/10.1016/j.apenergy.2020.115769' Note that we input data used here is not the same as in the paper, but was passed on by the authors. The data provides a lon-lat gridded map of Europe (1° x 1°), with each grid cell assigned From 7a62574fe220e319d044b5ba5cf7bafa51ef65f8 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sun, 2 Jun 2024 12:56:14 +0100 Subject: [PATCH 40/63] added egs costs file --- data/egs_costs.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 data/egs_costs.json diff --git a/data/egs_costs.json b/data/egs_costs.json new file mode 100644 index 00000000..1ea153b7 --- /dev/null +++ b/data/egs_costs.json @@ -0,0 +1 @@ +{"Country":["Norway","Sweden","Belarus","Ukraine","Poland","Austria","Hungary","Moldova","Romania","Lithuania","Latvia","Estonia","Germany","Bulgaria","Greece","Albania","Croatia","Switzerland","Luxembourg","Belgium","Netherlands","Portugal","Spain","Ireland","Italy","Denmark","United Kingdom","Iceland","Slovenia","Finland","Slovakia","Czechia","Bosnia and Herz.","Macedonia","Serbia","Montenegro","Kosovo","France"],"LCOE100":[[[{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,63.5,61.5,64.5,65.5,66.5,78.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,11.5,13.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,7622.4892377208771,null,null,null,null,7271.2996621068824,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,47.013329815863635,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,0.021666414832391505,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,60.5,59.5,60.5,61.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,63.5,61.5,64.5,65.5,66.5,78.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[5.5,6.5,7.5,7.5,7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,11.5,13.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[7163.10981992388,6998.0487120093012,7257.1051428883457,null,6576.1305030118128,null,null,null,null,null,null,null,5486.1065925726371,null,null,null,null,5240.9577287176489,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[48.887038921730223,50.105589257523071,60.160559602871956,null,38.716356361222076,null,null,null,null,null,null,null,47.013329815863635,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[0.019489798560901245,0.021606553428581449,0.02523026895908163,null,0.016815197658385215,null,null,null,null,null,null,null,0.021666414832391505,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,59.5,60.5,61.5,59.5,60.5,61.5,62.5,59.5,60.5,61.5,62.5,61.5,62.5,61.5,62.5,63.5,61.5,64.5,64.5,65.5,66.5,78.5,66.5,67.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[5.5,6.5,6.5,6.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,11.5,11.5,13.5,13.5,13.5,13.5,14.5,15.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[5216.5992785830094,6668.9569359793022,5098.4886689435707,7501.8433861541625,5280.5039380766484,null,4801.7279838153609,null,6938.2147850250112,null,null,6233.6135944236694,null,null,null,null,4034.9258280431741,null,5700.3667613874559,null,null,null,3861.9642521428354,null,6277.4514203966555,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[48.887038921730223,38.0320782168351,50.105589257523071,37.316850893623979,60.160559602871956,null,38.716356361222076,null,42.04276957144203,null,null,33.101608930848919,null,null,null,null,47.013329815863635,null,39.161647327308749,null,null,null,0,null,34.361702756004341,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[0.019489798560901245,0.015505049928864565,0.021606553428581449,0.014800434448335476,0.02523026895908163,null,0.016815197658385215,null,0.0167012576040563,null,null,0.014562461711005597,null,null,null,null,0.021666414832391505,null,0.016524838114285418,null,null,null,0,null,0.014140735524933673,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,59.5,60.5,61.5,59.5,60.5,61.5,62.5,59.5,60.5,61.5,62.5,61.5,62.5,59.5,61.5,62.5,63.5,61.5,64.5,64.5,65.5,66.5,78.5,66.5,67.5,67.5,78.5,78.5,68.5,69.5,69.5,80.5,69.5,79.5,80.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[5.5,6.5,6.5,6.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,10.5,11.5,11.5,13.5,13.5,13.5,13.5,14.5,14.5,15.5,15.5,16.5,19.5,19.5,20.5,20.5,21.5,21.5,22.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[4181.9259121927407,5285.6635431783689,4062.2895852566921,5933.7732756505775,4202.9509138981812,null,3830.7149699527758,null,5493.2919635613007,null,null,4929.2477506850191,null,null,7734.1499374606319,null,null,3233.8304672275503,null,4531.2574329585868,null,null,null,3097.4801164006662,null,6695.6523234228744,4980.830285377926,6345.5119075811463,7389.1881415854605,null,null,null,7203.9685207025459,null,null,6459.3800145666273,null,null,null,null,null,null,null,null,null,null],"HeatSust":[48.887038921730223,38.0320782168351,50.105589257523071,37.316850893623979,60.160559602871956,null,38.716356361222076,null,42.04276957144203,null,null,33.101608930848919,null,null,55.627265236006771,null,null,47.013329815863635,null,39.161647327308749,null,null,null,0,null,24.74293952246223,34.361702756004341,0,0,null,null,null,28.308417161474551,null,null,25.216618234515586,null,null,null,null,null,null,null,null,null,null],"PowerSust":[0.019489798560901245,0.015505049928864565,0.021606553428581449,0.014800434448335476,0.02523026895908163,null,0.016815197658385215,null,0.0167012576040563,null,null,0.014562461711005597,null,null,0.0227358524088195,null,null,0.021666414832391505,null,0.016524838114285418,null,null,null,0,null,0.0102700113824071,0.014140735524933673,0,0,null,null,null,0.011170105309658736,null,null,0.010220786817510263,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,59.5,60.5,61.5,62.5,58.5,59.5,60.5,61.5,62.5,59.5,60.5,61.5,62.5,60.5,61.5,62.5,59.5,61.5,62.5,63.5,61.5,64.5,78.5,64.5,65.5,66.5,78.5,66.5,67.5,77.5,67.5,78.5,78.5,68.5,69.5,69.5,80.5,69.5,79.5,80.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[5.5,6.5,6.5,6.5,6.5,7.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,9.5,9.5,9.5,10.5,10.5,10.5,10.5,11.5,11.5,12.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,15.5,15.5,16.5,19.5,19.5,20.5,20.5,21.5,21.5,22.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[3670.7829558055164,4639.6143910278606,3565.7693809519733,5208.5078170243105,7028.0023927908969,7824.2507522376291,3689.2381411738406,null,3362.4993640498528,null,4821.865077119729,null,null,4326.7621206301519,6892.2138920029638,null,null,6788.8304011556829,null,null,2838.5700775935638,null,3977.4168415504023,7703.2861841335643,null,null,null,2718.8853786432205,null,5877.2649116428211,7802.65019874971,4372.03989291586,5569.9209993886352,6486.0321432978144,null,null,null,6323.4513033466674,null,null,5669.8713847155186,null,null,null,null,null,null,null,null,null,null],"HeatSust":[48.887038921730223,38.0320782168351,50.105589257523071,37.316850893623979,24.815591290190557,57.027602712306368,60.160559602871956,null,38.716356361222076,null,42.04276957144203,null,null,33.101608930848919,30.820307012283966,null,null,55.627265236006771,null,null,47.013329815863635,null,39.161647327308749,0,null,null,null,0,null,24.74293952246223,0,34.361702756004341,0,0,null,null,null,28.308417161474551,null,null,25.216618234515586,null,null,null,null,null,null,null,null,null,null],"PowerSust":[0.019489798560901245,0.015505049928864565,0.021606553428581449,0.014800434448335476,0.010004087603401187,0.023370431146044736,0.02523026895908163,null,0.016815197658385215,null,0.0167012576040563,null,null,0.014562461711005597,0.012455966654527424,null,null,0.0227358524088195,null,null,0.021666414832391505,null,0.016524838114285418,0,null,null,null,0,null,0.0102700113824071,0,0.014140735524933673,0,0,null,null,null,0.011170105309658736,null,null,0.010220786817510263,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,61.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,57.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,7285.8330143004332,null,null,null,null,null,null,null,null,null,null,null,null,7577.0102891477954,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,41.637486937589472,null,null,null,null,null,null,null,null,null,null,null,null,60.478627497621559,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,0.017127555817574185,null,null,null,null,null,null,null,null,null,null,null,null,0.024497047822371533,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,61.5,62.5,63.5,56.5,58.5,61.5,62.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,57.5,65.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,16.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,6395.3097709748545,null,null,null,null,null,7257.8364338854672,null,null,null,null,null,null,null,6650.8974117102571,7590.2042030580906,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,41.637486937589472,null,null,null,null,null,74.777278033224889,null,null,null,null,null,null,null,60.478627497621559,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,0.017127555817574185,null,null,null,null,null,0.030959201671045728,null,null,null,null,null,null,null,0.024497047822371533,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[48.5,51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[22.5,24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[6862.7592068588192,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[135.94694317911404,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[0.055313215426622327,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[48.5,48.5,51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,49.5,51.5,47.5,47.5,47.5,49.5,47.5,48.5,49.5],"Lon":[22.5,23.5,24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,33.5,34.5,35.5,36.5,36.5,37.5,37.5,37.5],"CAPEX":[5437.861424766661,6451.3104226267842,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,6989.1221284879421,null,null,null,null,7536.8168375066689,7119.3473706324812,7181.9981404270784,7346.9258806746029],"HeatSust":[135.94694317911404,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,56.435599999743268,null,null,null,null,0,0,0,0],"PowerSust":[0.055313215426622327,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,0.023993283026186706,null,null,null,null,0,0,0,0]},{"Lat":[48.5,48.5,49.5,51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,45.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,46.5,47.5,48.5,49.5,50.5,46.5,47.5,48.5,49.5,50.5,51.5,47.5,47.5,47.5,49.5,47.5,48.5,49.5,48.5],"Lon":[22.5,23.5,24.5,24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,32.5,32.5,33.5,33.5,33.5,33.5,33.5,33.5,34.5,35.5,36.5,36.5,37.5,37.5,37.5,38.5],"CAPEX":[4773.2096295315159,5662.7881122771632,7446.1556186112612,null,null,null,null,null,null,null,null,null,null,null,null,null,7120.4733396166266,null,null,null,null,null,null,null,null,null,null,null,7160.1573016460825,null,null,null,7408.65589248449,7617.2096739356639,null,null,6134.8648742188125,6957.049513962007,null,null,null,null,6615.6166725682579,6249.1731162386168,6304.1662899004423,6448.9354585925521,7482.438101646916],"HeatSust":[135.94694317911404,0,50.896104187789376,null,null,null,null,null,null,null,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,65.834951729368541,null,null,null,0,0,null,null,56.435599999743268,0,null,null,null,null,0,0,0,0,0],"PowerSust":[0.055313215426622327,0,0.020758246458334163,null,null,null,null,null,null,null,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,0.028262034759660468,null,null,null,0,0,null,null,0.023993283026186706,0,null,null,null,null,0,0,0,0,0]}]],[[{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[52.5,54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[15.5,17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[7752.0323771053654,null,null,null,null,null,null],"HeatSust":[78.920273541151175,null,null,null,null,null,null],"PowerSust":[0.033513450281764667,null,null,null,null,null,null]},{"Lat":[52.5,52.5,51.5,54.5,52.5,53.5,53.5,49.5,53.5,53.5,53.5],"Lon":[14.5,15.5,16.5,17.5,18.5,18.5,19.5,20.5,20.5,21.5,23.5],"CAPEX":[6701.9765452541524,6109.0672006643354,7410.4046850031245,null,7755.1878774969982,null,null,6772.5645453125908,null,null,null],"HeatSust":[103.51153369341698,78.920273541151175,89.841815773377135,null,102.97905273162117,null,null,57.257712005849385,null,null,null],"PowerSust":[0.044108663319881412,0.033513450281764667,0.037497598725992842,null,0.042484858547240649,null,null,0.024171970022278142,null,null,null]},{"Lat":[52.5,51.5,52.5,51.5,52.5,54.5,50.5,51.5,52.5,53.5,50.5,52.5,53.5,49.5,52.5,53.5,50.5,53.5,50.5,50.5,51.5,53.5],"Lon":[14.5,15.5,15.5,16.5,16.5,17.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,20.5,20.5,20.5,21.5,21.5,22.5,23.5,23.5,23.5],"CAPEX":[5882.8161447814336,7017.9465251635293,5362.3761460448395,6504.65545886914,7140.5339559860395,null,7521.8062423237325,7551.2576744355438,6807.2969434455854,null,7515.7236522986077,7752.8344658177,null,5944.7764073349736,7595.7852185312977,null,7316.0325417143431,null,7601.099410132013,7165.040466912551,7618.6929753215518,null],"HeatSust":[103.51153369341698,86.90367597185957,78.920273541151175,89.841815773377135,84.153828449252416,null,71.3908691718809,87.608955624861991,102.97905273162117,null,66.415401778944812,74.114095477815056,null,57.257712005849385,69.72144623714081,null,85.7387227387003,null,84.012954523264938,85.725874516288158,96.545852732711992,null],"PowerSust":[0.044108663319881412,0.036784396339524184,0.033513450281764667,0.037497598725992842,0.033854875485683236,null,0.029049393202046032,0.035558072294488,0.042484858547240649,null,0.027004507585372255,0.029880559277050755,null,0.024171970022278142,0.028997863779848206,null,0.035963627808390658,null,0.034964230127189695,0.035030858028054626,0.040391775794545517,null]}]],[[{"Lat":48.5,"Lon":14.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":48.5,"Lon":14.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":[47.5,48.5],"Lon":[12.5,14.5],"CAPEX":[7191.7180593791236,null],"HeatSust":[170.33404823371092,null],"PowerSust":[0.076233951987499007,null]},{"Lat":[47.5,48.5],"Lon":[12.5,14.5],"CAPEX":[5582.3584178869341,null],"HeatSust":[170.33404823371092,null],"PowerSust":[0.076233951987499007,null]},{"Lat":[47.5,47.5,47.5,46.5,48.5],"Lon":[11.5,12.5,13.5,14.5,14.5],"CAPEX":[6622.9079463201,4096.9891394557153,5822.69794237936,6671.5918908511749,null],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,119.01655357087456,null],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.051906195797978651,null]},{"Lat":[47.5,47.5,47.5,46.5,48.5],"Lon":[11.5,12.5,13.5,14.5,14.5],"CAPEX":[4836.8399985517508,3060.0175755960972,4271.7012860567065,4868.9427822019979,null],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,119.01655357087456,null],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.051906195797978651,null]},{"Lat":[47.5,47.5,47.5,46.5,48.5,47.5],"Lon":[11.5,12.5,13.5,14.5,14.5,16.5],"CAPEX":[3882.1862437103887,2487.6018890078426,3417.7990547403524,3883.627584371683,null,7407.6423840610587],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,119.01655357087456,null,129.12043074306817],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.051906195797978651,null,0.053663704505203053]},{"Lat":[47.5,47.5,47.5,46.5,48.5,47.5,48.5],"Lon":[11.5,12.5,13.5,14.5,14.5,16.5,16.5],"CAPEX":[3407.6794744559638,2183.5505474585593,3000.0527938408059,3408.9446448210251,null,6502.23078482425,6937.5208392163613],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,119.01655357087456,null,129.12043074306817,73.726036297402587],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.051906195797978651,null,0.053663704505203053,0.030444201000930773]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[46.5,46.5,47.5],"Lon":[17.5,19.5,21.5],"CAPEX":[7614.3569438132472,5994.4553868933,7434.1278767307913],"HeatSust":[0,169.73950811352361,146.95903846318478],"PowerSust":[0,0.07168335892990145,0.0594795750555533]},{"Lat":[46.5,47.5,46.5,47.5,46.5,46.5,47.5,47.5],"Lon":[17.5,17.5,18.5,18.5,19.5,20.5,20.5,21.5],"CAPEX":[6024.4178637412151,7455.6616960924857,7538.0734080615848,7075.4808023225023,4762.1796856604151,7773.6736217697135,6586.5343036483837,5883.8601813927917],"HeatSust":[0,117.48227606124362,176.75691468619951,119.41242943514806,169.73950811352361,138.70041697840574,147.73230732086634,146.95903846318478],"PowerSust":[0,0.048217323934071452,0.072328806938598583,0.049411064788034427,0.07168335892990145,0.056508601166202738,0.061860740015383643,0.0594795750555533]},{"Lat":[46.5,47.5,46.5,47.5,46.5,46.5,47.5,48.5,47.5],"Lon":[17.5,17.5,18.5,18.5,19.5,20.5,20.5,20.5,21.5],"CAPEX":[5288.073217269447,6544.3808553552817,6616.7196566652028,6210.6682133151908,4180.1142319710807,6823.5232364087933,5781.4840260963756,7725.7147704753743,5164.6954349974549],"HeatSust":[0,117.48227606124362,176.75691468619951,119.41242943514806,169.73950811352361,138.70041697840574,147.73230732086634,57.116344559444244,146.95903846318478],"PowerSust":[0,0.048217323934071452,0.072328806938598583,0.049411064788034427,0.07168335892990145,0.056508601166202738,0.061860740015383643,0.022893741501233755,0.0594795750555533]}]],[[{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,47.5,46.5],"Lon":[27.5,28.5,29.5],"CAPEX":[null,7541.8498702758343,null],"HeatSust":[null,0,null],"PowerSust":[null,0,null]}]],[[{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[46.5,47.5,47.5,45.5,47.5,44.5,44.5,44.5],"Lon":[21.5,22.5,23.5,24.5,25.5,26.5,27.5,28.5],"CAPEX":[6825.8710722345841,6735.2654347439675,6932.3348918607244,null,null,null,null,null],"HeatSust":[136.12083607775932,128.65854262906151,156.20925880646371,null,null,null,null,null],"PowerSust":[0.059654606553251832,0.056383711161739306,0.067574971902121125,null,null,null,null,null]},{"Lat":[46.5,47.5,47.5,44.5,45.5,47.5,44.5,44.5,46.5,44.5],"Lon":[21.5,22.5,23.5,24.5,24.5,25.5,26.5,27.5,27.5,28.5],"CAPEX":[5390.7340809431107,5320.0983200662413,5473.1238666201625,7521.5335661362378,null,null,null,null,7037.4548568763139,null],"HeatSust":[136.12083607775932,128.65854262906151,156.20925880646371,66.936010540986288,null,null,null,null,93.885872427104644,null],"PowerSust":[0.059654606553251832,0.056383711161739306,0.067574971902121125,0.028911860840880266,null,null,null,null,0.03966350528841326,null]},{"Lat":[45.5,46.5,46.5,47.5,44.5,47.5,44.5,45.5,46.5,44.5,46.5,47.5,44.5,44.5,46.5,44.5],"Lon":[21.5,21.5,22.5,22.5,23.5,23.5,24.5,24.5,24.5,25.5,25.5,25.5,26.5,27.5,27.5,28.5],"CAPEX":[7628.4413570105653,4731.8425048879417,6899.430219772682,4669.8403191626539,7576.7431578222922,4804.1620598838872,6602.2014248490286,null,7699.1248211365437,7259.5660254641507,7157.8161746201285,null,null,null,6177.290053263313,null],"HeatSust":[135.58166125525847,136.12083607775932,123.50435162973938,128.65854262906151,45.649227187013629,156.20925880646371,66.936010540986288,null,42.793832812575744,0,106.43102525886405,null,null,null,93.885872427104644,null],"PowerSust":[0.057122421516024285,0.059654606553251832,0.0522809649799578,0.056383711161739306,0.019157587919620446,0.067574971902121125,0.028911860840880266,null,0.017461934629654834,0,0.044403867956099373,null,null,null,0.03966350528841326,null]}]],[[{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,55.5,54.5,54.5,54.5,55.5],"Lon":[21.5,22.5,23.5,24.5,25.5,26.5],"CAPEX":[7312.2152552813659,null,null,null,null,null],"HeatSust":[120.69496566113145,null,null,null,null,null],"PowerSust":[0.048576552485773777,null,null,null,null,null]},{"Lat":[55.5,55.5,54.5,54.5,54.5,55.5],"Lon":[21.5,22.5,23.5,24.5,25.5,26.5],"CAPEX":[5788.0014744609452,null,null,null,null,null],"HeatSust":[120.69496566113145,null,null,null,null,null],"PowerSust":[0.048576552485773777,null,null,null,null,null]},{"Lat":[55.5,55.5,54.5,54.5,54.5,55.5],"Lon":[21.5,22.5,23.5,24.5,25.5,26.5],"CAPEX":[5080.553220391248,null,null,null,null,null],"HeatSust":[120.69496566113145,null,null,null,null,null],"PowerSust":[0.048576552485773777,null,null,null,null,null]}]],[[{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,56.5,57.5,56.5],"Lon":[22.5,23.5,24.5,27.5],"CAPEX":[null,7292.108177635444,null,null],"HeatSust":[null,49.794609298258443,null,null],"PowerSust":[null,0.020211053278707564,null,null]}]],[[{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5,59.5],"Lon":[24.5,26.5,26.5],"CAPEX":[null,null,7418.16331084629],"HeatSust":[null,null,49.623597719434642],"PowerSust":[null,null,0.020665048650144294]},{"Lat":[58.5,57.5,59.5],"Lon":[24.5,26.5,26.5],"CAPEX":[null,null,6511.4657735670944],"HeatSust":[null,null,49.623597719434642],"PowerSust":[null,null,0.020665048650144294]}]],[[{"Lat":50.5,"Lon":8.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":50.5,"Lon":8.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":[50.5,50.5],"Lon":[7.5,8.5],"CAPEX":[7453.4401161755577,null],"HeatSust":[85.160392178883427,null],"PowerSust":[0.038451142758912836,null]},{"Lat":[50.5,49.5,50.5],"Lon":[7.5,8.5,8.5],"CAPEX":[5779.5402816429141,7416.2810368171477,null],"HeatSust":[85.160392178883427,133.14482427635787,null],"PowerSust":[0.038451142758912836,0.056642008731078108,null]},{"Lat":[50.5,50.5,49.5,50.5],"Lon":[6.5,7.5,8.5,8.5],"CAPEX":[6076.2944778908823,4235.012326865859,5374.7124580982154,null],"HeatSust":[86.695209314826442,85.160392178883427,133.14482427635787,null],"PowerSust":[0.035816225635009379,0.038451142758912836,0.056642008731078108,null]},{"Lat":[50.5,50.5,52.5,49.5,50.5,47.5,51.5],"Lon":[6.5,7.5,7.5,8.5,8.5,10.5,10.5],"CAPEX":[4452.6787439064356,3157.326447554572,7070.7170513224046,3959.4247952619012,null,6101.0712476249428,6773.0138445631746],"HeatSust":[86.695209314826442,85.160392178883427,0,133.14482427635787,null,131.08951546311761,0],"PowerSust":[0.035816225635009379,0.038451142758912836,0,0.056642008731078108,null,0.057943437064028276,0]},{"Lat":[49.5,50.5,50.5,52.5,49.5,50.5,49.5,52.5,47.5,51.5,52.5,48.5,53.5,50.5,51.5],"Lon":[6.5,6.5,7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,11.5,11.5,12.5,14.5],"CAPEX":[7250.3928836772338,3582.0455454791181,2564.5911975621366,5580.4655860033918,3195.5463704583576,null,6703.4016945005887,7747.3296795252509,4826.8620965422542,5349.0166206766144,7734.957624981399,7305.56178528512,7185.5753227459963,7618.8226948446681,7793.3660005470956],"HeatSust":[107.40755367344758,86.695209314826442,85.160392178883427,0,133.14482427635787,null,0,64.788589621184457,131.08951546311761,0,97.7947279996018,92.978458662845071,81.542955371913578,109.50387903882454,80.94531498822731],"PowerSust":[0.044999227730391826,0.035816225635009379,0.038451142758912836,0,0.056642008731078108,null,0,0.027789605889037148,0.057943437064028276,0,0.039771849532480155,0.038887745792438311,0.034377186271151945,0.045209179826616354,0.033548610860872068]},{"Lat":[49.5,50.5,51.5,49.5,50.5,52.5,53.5,49.5,50.5,52.5,53.5,49.5,52.5,47.5,48.5,49.5,51.5,52.5,48.5,52.5,53.5,48.5,50.5,52.5,53.5,52.5,51.5],"Lon":[6.5,6.5,6.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,12.5,12.5,12.5,12.5,13.5,14.5],"CAPEX":[6364.2013701627147,3144.2239798957489,7187.941959015835,7270.4903013659514,2251.1297077675408,4898.3837563539246,6977.74042777067,2804.9653192000619,null,7784.1563530936264,7332.2563141633191,5884.0671027546605,6800.3992269906075,4236.89072595755,7324.4846237959309,7789.478135656349,4695.2240316483094,6789.5393677053307,6412.6271596111346,7519.56034344116,6307.3062450698562,7588.6623944438406,6687.5992255147075,7239.805693592134,7278.59116394802,6945.4373661912205,6840.8086809367605],"HeatSust":[107.40755367344758,86.695209314826442,101.10075133147673,77.842851286292813,85.160392178883427,0,0,133.14482427635787,null,98.639884499591588,0,0,64.788589621184457,131.08951546311761,103.20129976459971,0,0,97.7947279996018,92.978458662845071,89.570800445766437,81.542955371913578,0,109.50387903882454,90.3749945130452,86.495513703832245,77.1617948925391,80.94531498822731],"PowerSust":[0.044999227730391826,0.035816225635009379,0.042779495262267805,0.031323068727910429,0.038451142758912836,0,0,0.056642008731078108,null,0.041051331170865749,0,0,0.027789605889037148,0.057943437064028276,0.043269644910171018,0,0,0.039771849532480155,0.038887745792438311,0.036499484598581641,0.034377186271151945,0,0.045209179826616354,0.036385244325907611,0.0354169350829264,0.03285222134941089,0.033548610860872068]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":41.5,"Lon":25.5,"CAPEX":7162.8744771084539,"HeatSust":0,"PowerSust":0},{"Lat":[42.5,41.5,42.5],"Lon":[23.5,25.5,27.5],"CAPEX":[6562.9876559017912,5653.057556369703,7792.8954633091125],"HeatSust":[112.52612965452607,0,86.216045722389],"PowerSust":[0.046835472549953079,0,0.036096246921925805]},{"Lat":[41.5,42.5,41.5,43.5,42.5,43.5,42.5],"Lon":[23.5,23.5,25.5,25.5,26.5,26.5,27.5],"CAPEX":[7413.5849142401921,5760.8154071324325,4962.103050560474,7692.11564249073,7301.6646360210825,7141.815979206056,6840.39565590726],"HeatSust":[0,112.52612965452607,0,100.82385902167488,0,112.03960418254539,86.216045722389],"PowerSust":[0,0.046835472549953079,0,0.041208125376613579,0,0.046304080327081491,0.036096246921925805]}]],[[{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5,39.5],"Lon":[20.5,21.5,22.5,22.5,22.5],"CAPEX":[null,null,null,null,7087.5153048527482],"HeatSust":[null,null,null,null,228.59334161849839],"PowerSust":[null,null,null,null,0.10097806161142672]},{"Lat":[39.5,38.5,36.5,37.5,39.5],"Lon":[20.5,21.5,22.5,22.5,22.5],"CAPEX":[null,null,null,null,5161.7085289363167],"HeatSust":[null,null,null,null,228.59334161849839],"PowerSust":[null,null,null,null,0.10097806161142672]},{"Lat":[39.5,38.5,36.5,37.5,39.5],"Lon":[20.5,21.5,22.5,22.5,22.5],"CAPEX":[null,null,null,null,4114.2672556657189],"HeatSust":[null,null,null,null,228.59334161849839],"PowerSust":[null,null,null,null,0.10097806161142672]},{"Lat":[39.5,38.5,36.5,37.5,39.5,40.5],"Lon":[20.5,21.5,22.5,22.5,22.5,23.5],"CAPEX":[null,null,null,null,3611.3939928236578,7159.4027457187212],"HeatSust":[null,null,null,null,228.59334161849839,0],"PowerSust":[null,null,null,null,0.10097806161142672,0]}]],[[{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]}]],[[{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5,18.5],"CAPEX":[null,null,null,null,null,7698.7040767255385],"HeatSust":[null,null,null,null,null,133.60721363814409],"PowerSust":[null,null,null,null,null,0.0562371934985082]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":47.5,"Lon":8.5,"CAPEX":6066.0848131360763,"HeatSust":169.87753041795551,"PowerSust":0.080780089298402052},{"Lat":[47.5,47.5],"Lon":[8.5,9.5],"CAPEX":[4734.4333583167208,7435.1974323365821],"HeatSust":[169.87753041795551,142.54615643065978],"PowerSust":[0.080780089298402052,0.059903832184067439]},{"Lat":[47.5,46.5,47.5],"Lon":[8.5,9.5,9.5],"CAPEX":[3507.6960772436464,6079.3244292932832,5386.1537890942209],"HeatSust":[169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.080780089298402052,0.044228996035661605,0.059903832184067439]},{"Lat":[47.5,46.5,47.5],"Lon":[8.5,9.5,9.5],"CAPEX":[2644.7361915271513,4452.2250681862279,3967.3688587152756],"HeatSust":[169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.080780089298402052,0.044228996035661605,0.059903832184067439]},{"Lat":[46.5,47.5,47.5,46.5,47.5],"Lon":[6.5,7.5,8.5,9.5,9.5],"CAPEX":[6290.3879449655351,7178.7387810088549,2161.8554200392587,3558.2171286321272,3200.6475440754843],"HeatSust":[112.77574841739151,146.46527019518641,169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.047458032175485478,0.061381246722722348,0.080780089298402052,0.044228996035661605,0.059903832184067439]},{"Lat":[46.5,46.5,47.5,46.5,47.5,46.5,47.5],"Lon":[6.5,7.5,7.5,8.5,8.5,9.5,9.5],"CAPEX":[5521.5346561882734,7304.1603905547745,6301.3053111909976,7214.926706792904,1897.6189907283413,3123.3080315355119,2809.4429932577868],"HeatSust":[112.77574841739151,130.73931811291797,146.46527019518641,92.718848502459053,169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.047458032175485478,0.054186924557491682,0.061381246722722348,0.038312398527048382,0.080780089298402052,0.044228996035661605,0.059903832184067439]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":50.5,"Lon":5.5,"CAPEX":7819.0398448806673,"HeatSust":0,"PowerSust":0},{"Lat":50.5,"Lon":5.5,"CAPEX":6863.3444962927688,"HeatSust":0,"PowerSust":0}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":52.5,"Lon":6.5,"CAPEX":7298.2528686026762,"HeatSust":0,"PowerSust":0},{"Lat":[51.5,52.5,52.5,52.5],"Lon":[4.5,4.5,5.5,6.5],"CAPEX":[7583.8355695006567,6224.9427785032112,7813.4649436036489,5757.225579846965],"HeatSust":[85.51306062492732,0,0,0],"PowerSust":[0.036907359580420282,0,0,0]},{"Lat":[51.5,52.5,51.5,52.5,52.5],"Lon":[4.5,4.5,5.5,5.5,6.5],"CAPEX":[6656.8884606465454,5464.0886357101663,7596.0442803357946,6858.4509967383374,5053.5389614658843],"HeatSust":[85.51306062492732,0,90.7497560552032,0,0],"PowerSust":[0.036907359580420282,0,0.036398078059291308,0,0]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[38.5,41.5],"Lon":[-8.5,-6.5],"CAPEX":[7584.3527258449085,7424.5379521950326],"HeatSust":[0,147.44345754470169],"PowerSust":[0,0.062002176552010214]},{"Lat":[38.5,41.5,41.5],"Lon":[-8.5,-8.5,-6.5],"CAPEX":[6657.3424066833295,7329.9340012621469,6517.0612636125088],"HeatSust":[0,111.05779867135188,147.44345754470169],"PowerSust":[0,0.046194859964748383,0.062002176552010214]}]],[[{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[42.5,36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-7.5,-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[6699.7048136478088,null,null,null,null,null,null,null],"HeatSust":[238.05002225341866,null,null,null,null,null,null,null],"PowerSust":[0.10539271669868776,null,null,null,null,null,null,null]},{"Lat":[42.5,42.5,36.5,37.5,43.5,37.5,37.5,37.5,37.5,42.5],"Lon":[-8.5,-7.5,-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5,-0.5],"CAPEX":[7194.8959281423558,4888.9595953924454,null,null,null,null,null,null,null,7127.9008110770419],"HeatSust":[209.70173095348832,238.05002225341866,null,null,null,null,null,null,null,0],"PowerSust":[0.091729557904964037,0.10539271669868776,null,null,null,null,null,null,null,0]},{"Lat":[42.5,42.5,36.5,37.5,43.5,37.5,38.5,40.5,37.5,37.5,37.5,38.5,41.5,42.5,41.5],"Lon":[-8.5,-7.5,-5.5,-5.5,-5.5,-4.5,-4.5,-4.5,-3.5,-2.5,-1.5,-0.5,-0.5,-0.5,0.5],"CAPEX":[5678.8178592984777,3901.1047811787112,null,null,null,null,7615.7999290866028,7662.4406099062935,null,null,null,6503.1543664977225,7808.3514897274044,5625.56764113722,7459.3872703005336],"HeatSust":[209.70173095348832,238.05002225341866,null,null,null,null,0,121.55026319856707,null,null,null,0,0,0,0],"PowerSust":[0.091729557904964037,0.10539271669868776,null,null,null,null,0,0.0509556493042746,null,null,null,0,0,0,0]},{"Lat":[42.5,42.5,37.5,36.5,37.5,40.5,43.5,37.5,38.5,40.5,37.5,40.5,37.5,37.5,40.5,38.5,39.5,41.5,42.5,40.5,41.5],"Lon":[-8.5,-7.5,-6.5,-5.5,-5.5,-5.5,-5.5,-4.5,-4.5,-4.5,-3.5,-3.5,-2.5,-1.5,-1.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5],"CAPEX":[4984.7147569638882,3424.2856617356115,7065.8224944392359,null,null,7799.7364274804668,null,null,6684.9459224057873,6725.8858672529495,null,7831.3284941187912,null,null,7523.5358704395294,5708.295342562692,7833.9581232382234,6853.9625433969022,4937.9731366378646,7480.9375054762959,6547.6510649645952],"HeatSust":[209.70173095348832,238.05002225341866,0,null,null,111.45664227461478,null,null,0,121.55026319856707,null,0,null,null,0,0,0,0,0,124.1675102315527,0],"PowerSust":[0.091729557904964037,0.10539271669868776,0,null,null,0.045635976336069868,null,null,0,0.0509556493042746,null,0,null,null,0,0,0,0,0,0.050784404840660706,0]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[43.5,46.5,44.5,43.5,46.5,42.5,43.5],"Lon":[10.5,10.5,11.5,12.5,12.5,13.5,13.5],"CAPEX":[6747.4118060916517,null,null,null,null,null,null],"HeatSust":[0,null,null,null,null,null,null],"PowerSust":[0,null,null,null,null,null,null]},{"Lat":[43.5,46.5,44.5,43.5,46.5,42.5,43.5],"Lon":[10.5,10.5,11.5,12.5,12.5,13.5,13.5],"CAPEX":[4585.4251261657146,null,null,null,null,null,null],"HeatSust":[0,null,null,null,null,null,null],"PowerSust":[0,null,null,null,null,null,null]},{"Lat":[43.5,46.5,44.5,41.5,43.5,46.5,42.5,43.5],"Lon":[10.5,10.5,11.5,12.5,12.5,12.5,13.5,13.5],"CAPEX":[3420.5747406951505,null,null,7737.7530486165479,null,null,null,null],"HeatSust":[0,null,null,0,null,null,null,null],"PowerSust":[0,null,null,0,null,null,null,null]},{"Lat":[43.5,46.5,42.5,44.5,41.5,43.5,46.5,42.5,43.5],"Lon":[10.5,10.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5],"CAPEX":[2743.616406659502,null,7132.5147235795166,null,5993.8384687630978,null,null,null,null],"HeatSust":[0,null,0,null,0,null,null,null,null],"PowerSust":[0,null,0,null,0,null,null,null,null]},{"Lat":[39.5,45.5,43.5,46.5,42.5,44.5,41.5,43.5,46.5,37.5,42.5,43.5,46.5],"Lon":[8.5,8.5,10.5,10.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5],"CAPEX":[5904.2260304090032,5982.3492394516807,2145.244771656292,null,5179.93063107959,null,4386.9633580469908,null,null,7416.9397736734591,null,null,6448.949182493905],"HeatSust":[0,89.742885374182435,0,null,0,null,0,null,null,0,null,null,70.146815275442492],"PowerSust":[0,0.040497523805045836,0,null,0,null,0,null,null,0,null,null,0.028272457577980355]},{"Lat":[39.5,45.5,43.5,45.5,46.5,42.5,43.5,44.5,41.5,43.5,46.5,37.5,42.5,43.5,46.5,41.5],"Lon":[8.5,8.5,10.5,10.5,10.5,11.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,15.5],"CAPEX":[4329.5617138154312,4384.0839437294626,1687.50949603198,7143.905764193486,null,3822.584844802584,6849.9083706390456,null,3264.5917252951413,null,null,5395.1530093377942,null,null,4714.58802360664,6492.0809018299924],"HeatSust":[0,89.742885374182435,0,68.825116586857391,null,0,0,null,0,null,null,0,null,null,70.146815275442492,134.1914067053257],"PowerSust":[0,0.040497523805045836,0,0.029773498619766983,null,0,0,null,0,null,null,0,null,null,0.028272457577980355,0.0601787401685285]},{"Lat":[44.5,39.5,40.5,44.5,45.5,39.5,40.5,43.5,44.5,45.5,46.5,42.5,43.5,44.5,41.5,43.5,46.5,37.5,42.5,43.5,46.5,41.5,41.5],"Lon":[7.5,8.5,8.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,14.5,15.5],"CAPEX":[6541.1780784859611,3465.7203995567111,6488.143003158214,7362.120949147512,3505.618976547993,7091.7677332726853,7607.6560642207951,1424.6157391029881,7781.7354192278162,5635.97924803974,null,3089.7495715473974,5429.8444473564505,null,2650.7373369286584,null,null,4326.3873020412375,null,null,3786.6957365013695,7537.6448970338861,5132.47390068234],"HeatSust":[124.56394682022697,0,70.44204901842015,158.54199841160522,89.742885374182435,74.701925480418,126.90664630694967,0,120.48184308297493,68.825116586857391,null,0,0,null,0,null,null,0,null,null,70.146815275442492,0,134.1914067053257],"PowerSust":[0.052737591010295015,0,0.028894711799159371,0.068914251845437188,0.040497523805045836,0.03179668224197936,0.055558942052614468,0,0.050326975003538756,0.029773498619766983,null,0,0,null,0,null,null,0,null,null,0.028272457577980355,0,0.0601787401685285]},{"Lat":[44.5,39.5,40.5,44.5,45.5,39.5,40.5,45.5,43.5,44.5,45.5,46.5,42.5,43.5,44.5,45.5,41.5,43.5,46.5,37.5,42.5,43.5,46.5,41.5,40.5,41.5],"Lon":[7.5,8.5,8.5,8.5,8.5,9.5,9.5,9.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,14.5,15.5,15.5],"CAPEX":[5741.671542144788,3042.1168713650609,5695.118768456151,6462.273284162352,3077.1387774092309,6224.9644466272148,6677.7974551752623,7622.4675230594112,1250.4896747272903,6830.5996670591021,4947.1121673052621,null,2712.0997126887528,4766.17254072306,null,7297.2401255273626,2326.7464897801292,null,null,3797.5873083364268,null,null,3323.8604557397048,6616.3435211214655,7461.6327012362908,4505.1486112681441],"HeatSust":[124.56394682022697,0,70.44204901842015,158.54199841160522,89.742885374182435,74.701925480418,126.90664630694967,49.762722598735138,0,120.48184308297493,68.825116586857391,null,0,0,null,85.701631569066862,0,null,null,0,null,null,70.146815275442492,0,0,134.1914067053257],"PowerSust":[0.052737591010295015,0,0.028894711799159371,0.068914251845437188,0.040497523805045836,0.03179668224197936,0.055558942052614468,0.020000578326455964,0,0.050326975003538756,0.029773498619766983,null,0,0,null,0.034993987387498385,0,null,null,0,null,null,0.028272457577980355,0,0,0.0601787401685285]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":56.5,"Lon":10.5,"CAPEX":7636.7544437184642,"HeatSust":0,"PowerSust":0},{"Lat":[55.5,56.5,56.5,56.5,55.5],"Lon":[8.5,8.5,9.5,10.5,11.5],"CAPEX":[7760.1898217330627,7689.8538660150325,7817.4537015930273,6703.339236102127,7778.5360071188134],"HeatSust":[71.533758839181218,72.188362133021684,61.727197154397452,0,70.593242256303185],"PowerSust":[0.029027238332988013,0.029342635738602695,0.025594927925874256,0,0.028610188496733073]}]],[[{"Lat":[55.5,56.5,56.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[55.5,56.5,56.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[55.5,56.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,6715.3494195477933,null,null,null,null],"HeatSust":[null,null,null,0,null,null,null,null],"PowerSust":[null,null,null,0,null,null,null,null]},{"Lat":[55.5,56.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,5223.5744208038222,null,null,null,null],"HeatSust":[null,null,null,0,null,null,null,null],"PowerSust":[null,null,null,0,null,null,null,null]},{"Lat":[55.5,56.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,3847.8204613572912,null,null,null,null],"HeatSust":[null,null,null,0,null,null,null,null],"PowerSust":[null,null,null,0,null,null,null,null]},{"Lat":[55.5,56.5,50.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,6451.5007898527956,null,2884.5105701077855,null,null,null,null],"HeatSust":[null,null,124.92073161484262,null,0,null,null,null,null],"PowerSust":[null,null,0.05566652389944915,null,0,null,null,null,null]},{"Lat":[55.5,56.5,50.5,56.5,57.5,51.5,52.5,54.5,55.5,53.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-4.5,-3.5,-3.5,-3.5,-2.5,-0.5,0.5],"CAPEX":[null,null,5100.58735124536,null,2350.0334783902413,null,null,7185.3122647082992,null,7330.2833750579366,null],"HeatSust":[null,null,124.92073161484262,null,0,null,null,51.283985617766859,null,85.965739947359651,null],"PowerSust":[null,null,0.05566652389944915,null,0,null,null,0.021574651412428481,null,0.03714885965285708,null]},{"Lat":[55.5,56.5,50.5,55.5,56.5,57.5,51.5,52.5,54.5,55.5,51.5,54.5,55.5,51.5,53.5,52.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-4.5,-4.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-0.5,-0.5,0.5,1.5],"CAPEX":[null,null,4477.1594491810165,7428.8164965542928,null,2062.7966681322837,null,null,6307.0753397450262,7275.2115068429484,7685.2402869591933,7161.8245197267443,null,7055.3634210364044,6434.3271113280916,null,6981.0778817936061],"HeatSust":[null,null,124.92073161484262,64.925680295024009,null,0,null,null,51.283985617766859,56.7656397983824,46.934375211968245,0,null,0,85.965739947359651,null,0],"PowerSust":[null,null,0.05566652389944915,0.026075259190025103,null,0,null,null,0.021574651412428481,0.02324893564570038,0.019768609096146663,0,null,0,0.03714885965285708,null,0]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":64.5,"Lon":-20.5,"CAPEX":6083.6256658849934,"HeatSust":293.63522216276573,"PowerSust":0.15365559259944336},{"Lat":[65.5,64.5,65.5,64.5],"Lon":[-22.5,-21.5,-21.5,-20.5],"CAPEX":[7827.0534367146975,5801.7500836725148,6525.9696208974283,4383.5016690855446],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-18.5,-17.5,-17.5,-16.5],"CAPEX":[6060.8939940247028,4535.2167211363685,5080.9131021156527,3465.3301758768403,7471.2018670557509,7615.198752590788,6527.8363944792345,7316.4432985860658,7413.51268993868,7439.45992249065],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,164.16318357228866,0,158.564059377303,0],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.077146998688386884,0,0.064832051018036269,0]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-18.5,-17.5,-17.5,-16.5,-16.5,-15.5,-14.5],"CAPEX":[4430.67941978394,3368.9229615755021,3748.6174411402926,2622.296590008204,5382.2368092222741,5509.3641280517868,5973.1825461414282,6752.2979818068989,4729.3812541469961,5273.1911535918334,5369.43683697434,5358.1790022363057,5962.2963491521259,7788.9554810169584,5996.8065876533719],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,122.8418253884563,164.16318357228866,0,158.564059377303,0,124.43521521870916,117.15661140704627,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.047352538294562235,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.04795869123507765,0.062215123404191351]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-18.5,-17.5,-17.5,-16.5,-16.5,-15.5,-15.5,-14.5],"CAPEX":[3295.0916734511775,2546.8007478888276,2814.5953885421145,2018.4166148957077,3961.9097270040625,4053.9072115858303,4377.714488443673,4927.7142654135514,3502.0428276641546,3884.8292238234753,3955.5082499285568,3944.661881901874,4369.9763441733849,6630.9109552546815,5654.4966757906022,4394.3333574003091],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,122.8418253884563,164.16318357228866,0,158.564059377303,0,124.43521521870916,110.32733701296324,117.15661140704627,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.047352538294562235,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.043417552603414358,0.04795869123507765,0.062215123404191351]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-18.5,-17.5,-17.5,-16.5,-16.5,-15.5,-15.5,-14.5],"CAPEX":[2672.7778416882816,2084.8549027328236,2295.1554973643306,1668.9142431649682,3177.3740650025807,3267.3209019173505,3501.1086225898466,3952.2296631573258,2818.4846156996618,3115.9600914352782,3190.2433235124304,3162.5636791084339,3494.633973665349,5254.8763131227051,4495.0040920588808,3514.0473699220274],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,122.8418253884563,164.16318357228866,0,158.564059377303,0,124.43521521870916,110.32733701296324,117.15661140704627,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.047352538294562235,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.043417552603414358,0.04795869123507765,0.062215123404191351]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-18.5,-17.5,-17.5,-16.5,-16.5,-15.5,-15.5,-14.5],"CAPEX":[2346.0930566270176,1830.029991675877,2014.6262410064469,1464.928381597947,2789.0141544651083,2867.9670873500986,3073.1797090799846,3469.1617186828444,2473.9905741384978,2735.1066075231925,2800.31044612204,2776.0139929962911,3067.4964350536384,4612.5901821543139,3945.5946264610238,3084.5369961705969],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,122.8418253884563,164.16318357228866,0,158.564059377303,0,124.43521521870916,110.32733701296324,117.15661140704627,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.047352538294562235,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.043417552603414358,0.04795869123507765,0.062215123404191351]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":46.5,"Lon":16.5,"CAPEX":6539.7845664851993,"HeatSust":159.16235427913463,"PowerSust":0.068016317898611386},{"Lat":46.5,"Lon":16.5,"CAPEX":5740.44835450146,"HeatSust":159.16235427913463,"PowerSust":0.068016317898611386}]],[[{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":48.5,"Lon":21.5,"CAPEX":7767.0254499113071,"HeatSust":81.569783989790835,"PowerSust":0.0344383876699136},{"Lat":48.5,"Lon":21.5,"CAPEX":6120.7700912164191,"HeatSust":81.569783989790835,"PowerSust":0.0344383876699136},{"Lat":[48.5,48.5,48.5,48.5],"Lon":[17.5,18.5,19.5,21.5],"CAPEX":[7343.9452281487465,7046.5985307794108,7799.5636211002156,5372.6486310372193],"HeatSust":[90.086224371055081,122.54842423034756,84.467964557659485,81.569783989790835],"PowerSust":[0.037889627313245258,0.051513765866612674,0.033717790760439008,0.0344383876699136]}]],[[{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":[50.5,50.5,49.5],"Lon":[14.5,15.5,16.5],"CAPEX":[7816.495990018735,6701.3607364952577,null],"HeatSust":[77.8441879856747,100.30184872073551,null],"PowerSust":[0.032134544900304353,0.042519962462128,null]},{"Lat":[50.5,50.5,50.5,49.5],"Lon":[13.5,14.5,15.5,16.5],"CAPEX":[7811.6066498576092,6861.1115683869912,5882.2756042879746,null],"HeatSust":[100.5461188001249,77.8441879856747,100.30184872073551,null],"PowerSust":[0.040362923235730971,0.032134544900304353,0.042519962462128,null]}]],[[{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]}]],[[{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[43.5,44.5,44.5],"Lon":[20.5,21.5,22.5],"CAPEX":[7621.32190565313,6877.972685027793,7238.7267672767475],"HeatSust":[200.60006652959569,0,75.80585838379865],"PowerSust":[0.080906496208979439,0,0.031805513512506087]},{"Lat":[45.5,43.5,44.5,45.5,43.5,44.5,44.5],"Lon":[19.5,20.5,20.5,20.5,21.5,21.5,22.5],"CAPEX":[7352.9877221470588,6689.7929660618374,6975.1858874001482,7449.5247081369516,6997.1684888396749,6037.3008591770313,6353.9611645391533],"HeatSust":[190.52043158185771,200.60006652959569,196.66813253983307,144.928626945719,200.69211282320859,0,75.80585838379865],"PowerSust":[0.080186038065368045,0.080906496208979439,0.083545392313219613,0.059308109719445674,0.084765325809156689,0,0.031805513512506087]}]],[[{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]}]],[[{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null}]],[[{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5,47.5,45.5,43.5,45.5,46.5,47.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5,1.5,3.5,4.5,4.5,4.5,4.5,5.5,7.5],"CAPEX":[null,null,null,7742.3096847699908,7110.0809250229495,7305.1739693164991,6910.1818372699772,7661.9674480204412,6665.368781175649,6518.4599154329562,7025.19128718042],"HeatSust":[null,null,null,155.77205253388351,130.09217854947082,0,129.38846474224923,172.30228849294505,244.3241449219216,255.93544012557058,155.52131650814601],"PowerSust":[null,null,null,0.066606085759113837,0.0561085392250562,0,0.056411238613988855,0.07349683507449549,0.10711623972617214,0.11275458584830628,0.067446228214511308]},{"Lat":[48.5,47.5,43.5,45.5,48.5,47.5,48.5,45.5,47.5,46.5,47.5,43.5,44.5,45.5,47.5,43.5,45.5,46.5,47.5,49.5,46.5,47.5,48.5,49.5,45.5,48.5,48.5],"Lon":[-2.5,-1.5,-0.5,-0.5,-0.5,0.5,0.5,1.5,1.5,2.5,2.5,3.5,3.5,3.5,3.5,4.5,4.5,4.5,4.5,4.5,5.5,5.5,5.5,5.5,6.5,6.5,7.5],"CAPEX":[null,null,7383.8503314191485,7121.3111331349073,null,7393.9056698257536,6819.1853597676509,6996.9637646595856,6102.7643469710765,6487.8203379372426,7027.3197655083759,7228.7192195270163,7669.56309776082,5611.2421899587307,6758.4813675124351,5785.3361341086911,5455.8394101888516,6039.9799873624943,5266.8430263139044,7326.8543149700581,7488.6190829949255,5152.7783143263869,6480.1740011182092,7546.5992881658531,7192.568952149757,7133.9779354563289,5545.7525171390016],"HeatSust":[null,null,121.74900041869613,164.78312264991558,null,124.25959874963934,126.17941423324069,155.64737276480656,155.77205253388351,216.21722060085418,188.00084530248421,63.338271893013385,157.52602060023605,130.09217854947082,159.73580232983227,0,129.38846474224923,172.30228849294505,244.3241449219216,0,166.04452693631572,255.93544012557058,162.47136676993154,61.006292681040563,116.37550992360207,118.75065017339492,155.52131650814601],"PowerSust":[null,null,0.0514880989931345,0.070241635807015909,null,0.053856736555629794,0.053745074883084873,0.0658812043375488,0.066606085759113837,0.090830636688757654,0.082089085628184344,0.0268790710571605,0.066709308347935967,0.0561085392250562,0.06674370319674082,0,0.056411238613988855,0.07349683507449549,0.10711623972617214,0,0.07129235603123131,0.11275458584830628,0.068215606241721211,0.025577798434813042,0.047280828110033639,0.051488432644702528,0.067446228214511308]},{"Lat":[48.5,43.5,47.5,49.5,43.5,45.5,48.5,49.5,47.5,48.5,45.5,47.5,45.5,46.5,47.5,49.5,43.5,44.5,45.5,47.5,43.5,45.5,46.5,47.5,49.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,44.5,45.5,47.5,48.5,48.5],"Lon":[-2.5,-1.5,-1.5,-1.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,1.5,1.5,2.5,2.5,2.5,2.5,3.5,3.5,3.5,3.5,4.5,4.5,4.5,4.5,4.5,5.5,5.5,5.5,5.5,5.5,5.5,5.5,6.5,6.5,6.5,6.5,7.5],"CAPEX":[null,6922.8094729616887,null,7483.7830362479735,6481.3467559927212,6250.8968545530961,null,7804.6147021679653,6490.1730636827288,5985.6989140174692,6141.7480531676729,5356.8436692874939,7567.7963725368154,5694.8355415366786,6168.3937405523475,7593.7047558364484,6345.1768062122856,6732.1377970021349,4925.3986379202042,5932.4145697228669,5078.2136557643489,4788.9902253271257,5301.7332340522835,4623.0942436182422,6431.3171738999026,7076.7629642300344,7199.416024422012,7487.4952996590628,6573.3099699903923,4522.9712836676918,5688.1237911472654,6624.2034466765808,7283.5412697796364,6313.445066310016,7339.5919899886812,6262.0154355711056,4867.91355094938],"HeatSust":[null,102.98980953617722,null,89.915268594007884,121.74900041869613,164.78312264991558,null,71.40663068493123,124.25959874963934,126.17941423324069,155.64737276480656,155.77205253388351,96.809104962715324,216.21722060085418,188.00084530248421,134.01400287141215,63.338271893013385,157.52602060023605,130.09217854947082,159.73580232983227,0,129.38846474224923,172.30228849294505,244.3241449219216,0,0,0,111.15181288452771,166.04452693631572,255.93544012557058,162.47136676993154,61.006292681040563,148.3587196703208,116.37550992360207,131.85276875746791,118.75065017339492,155.52131650814601],"PowerSust":[null,0.043273542093039449,null,0.036374444170051964,0.0514880989931345,0.070241635807015909,null,0.029177569565562996,0.053856736555629794,0.053745074883084873,0.0658812043375488,0.066606085759113837,0.0402501632519034,0.090830636688757654,0.082089085628184344,0.056057138909439676,0.0268790710571605,0.066709308347935967,0.0561085392250562,0.06674370319674082,0,0.056411238613988855,0.07349683507449549,0.10711623972617214,0,0,0,0.046564464198719548,0.07129235603123131,0.11275458584830628,0.068215606241721211,0.025577798434813042,0.059469714335476674,0.047280828110033639,0.055329915861056893,0.051488432644702528,0.067446228214511308]}]]],"LCOE150":[[[{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,63.5,61.5,64.5,65.5,66.5,78.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,11.5,13.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,9903.7124594735578,null,null,null,null,9437.688491090481,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,47.013329815863635,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,0.021666414832391505,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,60.5,59.5,60.5,61.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,63.5,61.5,64.5,64.5,65.5,66.5,78.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[5.5,6.5,7.5,7.5,7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,11.5,11.5,13.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[9990.8688467976244,9811.35465809712,10188.879197750945,null,9201.3896273097926,null,null,null,null,null,null,null,7622.4892377208771,null,11050.627577310323,null,null,null,7271.2996621068824,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[48.887038921730223,50.105589257523071,60.160559602871956,null,38.716356361222076,null,null,null,null,null,null,null,47.013329815863635,null,39.161647327308749,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[0.019489798560901245,0.021606553428581449,0.02523026895908163,null,0.016815197658385215,null,null,null,null,null,null,null,0.021666414832391505,null,0.016524838114285418,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,59.5,60.5,61.5,59.5,60.5,61.5,62.5,59.5,60.5,61.5,62.5,61.5,62.5,61.5,62.5,63.5,61.5,64.5,64.5,65.5,66.5,78.5,66.5,67.5,78.5,68.5,69.5,69.5,69.5,79.5,80.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[5.5,6.5,6.5,6.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,11.5,11.5,13.5,13.5,13.5,13.5,14.5,15.5,15.5,19.5,19.5,20.5,21.5,21.5,22.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[7163.10981992388,9232.2857329332855,6998.0487120093012,10417.660193691714,7257.1051428883457,null,6576.1305030118128,null,9615.6488748821175,null,null,8615.556959506257,null,null,null,null,5486.1065925726371,null,7854.1363279825382,null,null,null,5240.9577287176489,null,8675.1763556069018,11224.36722613683,null,null,null,null,null,11436.647607280474,null,null,null,null,null,null,null,null,null,null],"HeatSust":[48.887038921730223,38.0320782168351,50.105589257523071,37.316850893623979,60.160559602871956,null,38.716356361222076,null,42.04276957144203,null,null,33.101608930848919,null,null,null,null,47.013329815863635,null,39.161647327308749,null,null,null,0,null,34.361702756004341,0,null,null,null,null,null,25.216618234515586,null,null,null,null,null,null,null,null,null,null],"PowerSust":[0.019489798560901245,0.015505049928864565,0.021606553428581449,0.014800434448335476,0.02523026895908163,null,0.016815197658385215,null,0.0167012576040563,null,null,0.014562461711005597,null,null,null,null,0.021666414832391505,null,0.016524838114285418,null,null,null,0,null,0.014140735524933673,0,null,null,null,null,null,0.010220786817510263,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,59.5,60.5,61.5,62.5,58.5,59.5,60.5,61.5,62.5,59.5,60.5,61.5,62.5,60.5,61.5,62.5,59.5,61.5,62.5,63.5,61.5,64.5,78.5,64.5,65.5,66.5,78.5,66.5,67.5,77.5,67.5,78.5,78.5,68.5,69.5,69.5,80.5,69.5,79.5,80.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[5.5,6.5,6.5,6.5,6.5,7.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,9.5,9.5,9.5,10.5,10.5,10.5,10.5,11.5,11.5,12.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,15.5,15.5,16.5,19.5,19.5,20.5,20.5,21.5,21.5,22.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[5216.5992785830094,6668.9569359793022,5098.4886689435707,7501.8433861541625,10200.804026824773,11397.242312597426,5280.5039380766484,null,4801.7279838153609,null,6938.2147850250112,null,null,6233.6135944236694,10014.015911959483,null,null,9857.2937268316364,null,null,4034.9258280431741,null,5700.3667613874559,11217.245650307375,null,null,null,3861.9642521428354,null,8510.4589711418612,11365.840502820605,6277.4514203966555,8066.634878798639,9425.8701042273024,null,null,null,9176.741101585716,null,null,8215.63403414263,null,null,null,null,null,null,null,null,null,null],"HeatSust":[48.887038921730223,38.0320782168351,50.105589257523071,37.316850893623979,24.815591290190557,57.027602712306368,60.160559602871956,null,38.716356361222076,null,42.04276957144203,null,null,33.101608930848919,30.820307012283966,null,null,55.627265236006771,null,null,47.013329815863635,null,39.161647327308749,0,null,null,null,0,null,24.74293952246223,0,34.361702756004341,0,0,null,null,null,28.308417161474551,null,null,25.216618234515586,null,null,null,null,null,null,null,null,null,null],"PowerSust":[0.019489798560901245,0.015505049928864565,0.021606553428581449,0.014800434448335476,0.010004087603401187,0.023370431146044736,0.02523026895908163,null,0.016815197658385215,null,0.0167012576040563,null,null,0.014562461711005597,0.012455966654527424,null,null,0.0227358524088195,null,null,0.021666414832391505,null,0.016524838114285418,0,null,null,null,0,null,0.0102700113824071,0,0.014140735524933673,0,0,null,null,null,0.011170105309658736,null,null,0.010220786817510263,null,null,null,null,null,null,null,null,null,null]},{"Lat":[59.5,60.5,61.5,59.5,60.5,61.5,62.5,58.5,59.5,60.5,61.5,62.5,59.5,60.5,61.5,62.5,60.5,61.5,62.5,59.5,60.5,61.5,62.5,63.5,60.5,61.5,64.5,79.5,78.5,64.5,65.5,66.5,78.5,66.5,67.5,77.5,78.5,79.5,67.5,78.5,79.5,78.5,79.5,77.5,78.5,79.5,78.5,79.5,68.5,69.5,69.5,80.5,69.5,79.5,80.5,69.5,80.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[5.5,5.5,5.5,6.5,6.5,6.5,6.5,7.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,9.5,9.5,9.5,10.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,11.5,12.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,16.5,16.5,17.5,17.5,17.5,18.5,18.5,19.5,19.5,20.5,20.5,21.5,21.5,22.5,23.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[9611.3530900368878,4181.9259121927407,9621.45990871329,5285.6635431783689,4062.2895852566921,5933.7732756505775,8006.6257447562339,8913.7487446723517,4202.9509138981812,null,3830.7149699527758,null,5493.2919635613007,null,null,4929.2477506850191,7851.9291972186675,null,null,7734.1499374606319,9317.7861488375329,null,null,3233.8304672275503,10573.753527678964,null,4531.2574329585868,10174.995419168074,8775.9403076435319,null,null,null,3097.4801164006662,null,6695.6523234228744,8889.14039396451,10604.585166044722,10912.277414248363,4980.830285377926,6345.5119075811463,10590.317803336919,7389.1881415854605,10982.504737333269,10370.64830708879,10380.111972407014,11400.789366505165,10633.960886252342,9924.9739109993025,null,null,null,7203.9685207025459,null,null,6459.3800145666273,null,11444.084968769715,null,null,null,null,null,null,null,null,null],"HeatSust":[76.1775428612708,48.887038921730223,92.431071791153983,38.0320782168351,50.105589257523071,37.316850893623979,24.815591290190557,57.027602712306368,60.160559602871956,null,38.716356361222076,null,42.04276957144203,null,null,33.101608930848919,30.820307012283966,null,null,55.627265236006771,36.964014719915106,null,null,47.013329815863635,59.620438179678068,null,39.161647327308749,34.1192380865561,0,null,null,null,0,null,24.74293952246223,0,0,0,34.361702756004341,0,26.625579592507872,0,0,0,0,0,0,0,null,null,null,28.308417161474551,null,null,25.216618234515586,null,27.787283043607953,null,null,null,null,null,null,null,null,null],"PowerSust":[0.031191620423547946,0.019489798560901245,0.037577226947096226,0.015505049928864565,0.021606553428581449,0.014800434448335476,0.010004087603401187,0.023370431146044736,0.02523026895908163,null,0.016815197658385215,null,0.0167012576040563,null,null,0.014562461711005597,0.012455966654527424,null,null,0.0227358524088195,0.014942986213234413,null,null,0.021666414832391505,0.023522406887300014,null,0.016524838114285418,0.013586573886226727,0,null,null,null,0,null,0.0102700113824071,0,0,0,0.014140735524933673,0,0.010479915854331343,0,0,0,0,0,0,0,null,null,null,0.011170105309658736,null,null,0.010220786817510263,null,0.010717320041339471,null,null,null,null,null,null,null,null,null]},{"Lat":[59.5,60.5,61.5,58.5,59.5,60.5,61.5,62.5,58.5,59.5,60.5,61.5,62.5,59.5,60.5,61.5,62.5,60.5,61.5,62.5,59.5,60.5,61.5,62.5,63.5,60.5,61.5,64.5,79.5,65.5,78.5,79.5,64.5,65.5,66.5,78.5,66.5,67.5,77.5,78.5,79.5,67.5,78.5,79.5,78.5,79.5,77.5,78.5,79.5,78.5,79.5,68.5,69.5,80.5,69.5,80.5,69.5,79.5,79.5,80.5,69.5,79.5,80.5,80.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[5.5,5.5,5.5,6.5,6.5,6.5,6.5,6.5,7.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,9.5,9.5,9.5,10.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,16.5,16.5,17.5,17.5,17.5,18.5,18.5,19.5,19.5,19.5,20.5,20.5,21.5,21.5,22.5,22.5,23.5,23.5,23.5,24.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[8436.5892284870333,3670.7829558055164,8445.46072418393,11335.105554127051,4639.6143910278606,3565.7693809519733,5208.5078170243105,7028.0023927908969,7824.2507522376291,3689.2381411738406,null,3362.4993640498528,null,4821.865077119729,null,null,4326.7621206301519,6892.2138920029638,null,null,6788.8304011556829,8178.9040024047972,null,null,2838.5700775935638,9281.358647489953,null,3977.4168415504023,8931.3394221508952,11481.4765156666,7703.2861841335643,11546.9809840469,null,null,null,2718.8853786432205,null,5877.2649116428211,7802.65019874971,9308.4218367929,9578.50588037826,4372.03989291586,5569.9209993886352,9295.8983265845054,6486.0321432978144,9640.14955031041,9103.0783054581116,9111.3852583020853,10007.308634349405,9334.2070599931121,8711.8772150144978,null,null,11217.436249617303,null,6323.4513033466674,null,null,10348.950163512995,5669.8713847155186,null,10410.232484322047,10045.312358516463,11172.599907952872,null,null,null,null,null,null,null,null,null],"HeatSust":[76.1775428612708,48.887038921730223,92.431071791153983,30.832241123828183,38.0320782168351,50.105589257523071,37.316850893623979,24.815591290190557,57.027602712306368,60.160559602871956,null,38.716356361222076,null,42.04276957144203,null,null,33.101608930848919,30.820307012283966,null,null,55.627265236006771,36.964014719915106,null,null,47.013329815863635,59.620438179678068,null,39.161647327308749,34.1192380865561,43.964359195237058,0,28.303633504527209,null,null,null,0,null,24.74293952246223,0,0,0,34.361702756004341,0,26.625579592507872,0,0,0,0,0,0,0,null,null,26.624724656465187,null,28.308417161474551,null,null,0,25.216618234515586,null,0,27.787283043607953,25.795528137439781,null,null,null,null,null,null,null,null,null],"PowerSust":[0.031191620423547946,0.019489798560901245,0.037577226947096226,0.012436398489762345,0.015505049928864565,0.021606553428581449,0.014800434448335476,0.010004087603401187,0.023370431146044736,0.02523026895908163,null,0.016815197658385215,null,0.0167012576040563,null,null,0.014562461711005597,0.012455966654527424,null,null,0.0227358524088195,0.014942986213234413,null,null,0.021666414832391505,0.023522406887300014,null,0.016524838114285418,0.013586573886226727,0.017452318495714696,0,0.010999489571765551,null,null,null,0,null,0.0102700113824071,0,0,0,0.014140735524933673,0,0.010479915854331343,0,0,0,0,0,0,0,null,null,0.010401218057903743,null,0.011170105309658736,null,null,0,0.010220786817510263,null,0,0.010717320041339471,0.010051361367733443,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,61.5,62.5,63.5,56.5,58.5,60.5,61.5,62.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,57.5,65.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,16.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,9283.6702262115268,null,null,null,null,11520.823699932427,null,10564.05392406678,null,null,null,null,null,null,null,9646.2077461297649,11050.266886668009,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,41.637486937589472,null,null,null,null,41.420977103553071,null,74.777278033224889,null,null,null,null,null,null,null,60.478627497621559,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,0.017127555817574185,null,null,null,null,0.017135300272543185,null,0.030959201671045728,null,null,null,null,null,null,null,0.024497047822371533,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,56.5,57.5,60.5,62.5,63.5,55.5,57.5,58.5,59.5,60.5,61.5,62.5,63.5,56.5,58.5,60.5,61.5,62.5,64.5,65.5,58.5,60.5,61.5,64.5,65.5,66.5,57.5,59.5,65.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,15.5,16.5,16.5,16.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,10917.785028867325,10630.801512368062,null,null,null,null,11466.069488819903,null,null,null,7285.8330143004332,null,null,null,null,9006.3006707400418,null,8268.4633264190925,null,null,null,null,11468.688013817522,null,null,null,7577.0102891477954,9701.2827542539053,8647.11207874656,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,62.735944274125309,78.216163975130769,null,null,null,null,63.015881068272066,null,null,null,41.637486937589472,null,null,null,null,41.420977103553071,null,74.777278033224889,null,null,null,null,49.177924188507575,null,null,null,60.478627497621559,58.527017134204826,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,0.026179801069386104,0.032542491981156392,null,null,null,null,0.025804586990553772,null,null,null,0.017127555817574185,null,null,null,null,0.017135300272543185,null,0.030959201671045728,null,null,null,null,0.019982115115616424,null,null,null,0.024497047822371533,0.023888585402697431,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,56.5,57.5,58.5,60.5,62.5,63.5,55.5,57.5,58.5,59.5,60.5,61.5,62.5,63.5,56.5,58.5,60.5,61.5,62.5,64.5,65.5,56.5,57.5,58.5,60.5,61.5,64.5,65.5,66.5,57.5,59.5,61.5,65.5,66.5,59.5,60.5,62.5,63.5,64.5,65.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,65.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,15.5,15.5,15.5,16.5,16.5,16.5,16.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,9583.3403175000367,9331.4338459168866,11275.775552931867,null,null,null,null,10064.609783479566,null,null,null,6395.3097709748545,null,null,null,null,7905.4903628547645,null,7257.8364338854672,null,null,11214.625465998424,11084.993077214789,null,null,10066.908254837605,null,null,null,6650.8974117102571,8515.527087636252,11647.250465052261,7590.2042030580906,null,11511.760092199884,null,null,null,null,10594.388369808581,null,null,null,null,null,null,null,null,null,null,10682.839574590756,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,62.735944274125309,78.216163975130769,0,null,null,null,null,63.015881068272066,null,null,null,41.637486937589472,null,null,null,null,41.420977103553071,null,74.777278033224889,null,null,59.343705946449568,52.069453262636621,null,null,49.177924188507575,null,null,null,60.478627497621559,58.527017134204826,52.584533633468965,0,null,58.4990101341358,null,null,null,null,56.676560778614565,null,null,null,null,null,null,null,null,null,null,27.401645658296381,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,0.026179801069386104,0.032542491981156392,0,null,null,null,null,0.025804586990553772,null,null,null,0.017127555817574185,null,null,null,null,0.017135300272543185,null,0.030959201671045728,null,null,0.023940830338591821,0.02098648287383921,null,null,0.019982115115616424,null,null,null,0.024497047822371533,0.023888585402697431,0.020829065347340924,0,null,0.024088753130630226,null,null,null,null,0.02243815848254593,null,null,null,null,null,null,null,null,null,null,0.010986255210172713,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[48.5,48.5,51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[22.5,23.5,24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[9507.9700112049868,11416.303856197306,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[135.94694317911404,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[0.055313215426622327,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[48.5,48.5,49.5,51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,45.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,46.5,47.5,48.5,49.5,50.5,46.5,47.5,48.5,49.5,50.5,51.5,47.5,47.5,47.5,49.5,47.5,48.5,49.5,48.5],"Lon":[22.5,23.5,24.5,24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,32.5,32.5,33.5,33.5,33.5,33.5,33.5,33.5,34.5,35.5,36.5,36.5,37.5,37.5,37.5,38.5],"CAPEX":[6862.7592068588192,8201.6401635524453,10827.504359807333,null,null,null,null,null,null,null,null,null,null,null,null,null,10342.108271330471,null,null,null,null,null,null,null,null,null,null,null,10415.279386886412,null,null,null,10771.23442755571,11076.031626105503,null,null,8898.16922127958,10106.995981115226,null,null,null,null,9604.2788661656268,9064.4206559785616,9145.3172831667252,9359.5788309491818,10879.237132237646],"HeatSust":[135.94694317911404,0,50.896104187789376,null,null,null,null,null,null,null,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,65.834951729368541,null,null,null,0,0,null,null,56.435599999743268,0,null,null,null,null,0,0,0,0,0],"PowerSust":[0.055313215426622327,0,0.020758246458334163,null,null,null,null,null,null,null,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,0.028262034759660468,null,null,null,0,0,null,null,0.023993283026186706,0,null,null,null,null,0,0,0,0,0]},{"Lat":[48.5,48.5,49.5,48.5,49.5,51.5,48.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,45.5,48.5,49.5,45.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,51.5,46.5,47.5,48.5,49.5,50.5,51.5,46.5,47.5,48.5,49.5,50.5,51.5,46.5,47.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,48.5,49.5,48.5],"Lon":[22.5,23.5,23.5,24.5,24.5,24.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,31.5,31.5,32.5,32.5,32.5,32.5,32.5,32.5,33.5,33.5,33.5,33.5,33.5,33.5,34.5,34.5,35.5,35.5,35.5,35.5,36.5,36.5,36.5,37.5,37.5,37.5,38.5,38.5,39.5],"CAPEX":[5437.861424766661,6451.3104226267842,10694.29683497549,9686.5930488200029,8483.005261436605,null,9728.2364812520736,null,null,null,null,null,null,null,null,null,null,10389.21181681208,null,null,8111.972929079383,null,null,null,null,null,null,null,null,null,null,null,10443.297177975173,10844.874527084379,8157.18273611714,null,null,null,8440.283837076262,9489.1920292202049,8677.87796160958,null,null,6989.1221284879421,7925.79293985015,null,9369.9605196623743,null,null,9627.88409477886,9254.77943495803,11262.877810354939,null,10795.662167601209,7536.8168375066689,7119.3473706324812,7181.9981404270784,7346.9258806746029,8524.3399461053123,11408.286833541573,9875.7271035123267],"HeatSust":[135.94694317911404,0,0,70.815911728404373,50.896104187789376,null,55.218158178516752,null,null,null,null,null,null,null,null,null,null,71.217906251443,null,null,0,null,null,null,null,null,null,null,null,null,null,null,45.6071742626492,43.811838391262441,65.834951729368541,null,null,null,0,51.008307394938633,0,null,null,56.435599999743268,0,null,0,null,null,0,0,65.826409671242686,null,0,0,0,0,0,0,0,0],"PowerSust":[0.055313215426622327,0,0,0.028867984452880417,0.020758246458334163,null,0.02269726074798304,null,null,null,null,null,null,null,null,null,null,0.029089746050464042,null,null,0,null,null,null,null,null,null,null,null,null,null,null,0.018680549877809038,0.017772749360207743,0.028262034759660468,null,null,null,0,0.020378840042253456,0,null,null,0.023993283026186706,0,null,0,null,null,0,0,0.027226319447840954,null,0,0,0,0,0,0,0,0]},{"Lat":[48.5,48.5,49.5,48.5,49.5,51.5,48.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,45.5,48.5,49.5,45.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,51.5,46.5,47.5,48.5,49.5,50.5,51.5,46.5,47.5,48.5,49.5,50.5,51.5,46.5,47.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,48.5,49.5,48.5],"Lon":[22.5,23.5,23.5,24.5,24.5,24.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,31.5,31.5,32.5,32.5,32.5,32.5,32.5,32.5,33.5,33.5,33.5,33.5,33.5,33.5,34.5,34.5,34.5,35.5,35.5,35.5,35.5,36.5,36.5,36.5,37.5,37.5,37.5,38.5,38.5,39.5],"CAPEX":[4773.2096295315159,5662.7881122771632,9387.1683454978483,8502.63285625464,7446.1556186112612,null,8539.1863498369148,null,null,null,null,null,null,null,null,null,null,9119.37285885838,null,null,7120.4733396166266,null,null,null,null,null,null,null,null,null,null,null,9166.8475454225845,9519.3414249171383,7160.1573016460825,null,null,null,7408.65589248449,8329.3595096147856,7617.2096739356639,null,null,6134.8648742188125,6957.049513962007,null,8224.7012726518151,null,10566.190496622772,null,8451.0997032594951,8123.5983905249068,9886.25355103268,null,9476.144129173781,6615.6166725682579,6249.1731162386168,6304.1662899004423,6448.9354585925521,7482.438101646916,10013.88971081676,8668.6496817327716],"HeatSust":[135.94694317911404,0,0,70.815911728404373,50.896104187789376,null,55.218158178516752,null,null,null,null,null,null,null,null,null,null,71.217906251443,null,null,0,null,null,null,null,null,null,null,null,null,null,null,45.6071742626492,43.811838391262441,65.834951729368541,null,null,null,0,51.008307394938633,0,null,null,56.435599999743268,0,null,0,null,45.859397144678212,null,0,0,65.826409671242686,null,0,0,0,0,0,0,0,0],"PowerSust":[0.055313215426622327,0,0,0.028867984452880417,0.020758246458334163,null,0.02269726074798304,null,null,null,null,null,null,null,null,null,null,0.029089746050464042,null,null,0,null,null,null,null,null,null,null,null,null,null,null,0.018680549877809038,0.017772749360207743,0.028262034759660468,null,null,null,0,0.020378840042253456,0,null,null,0.023993283026186706,0,null,0,null,0.018882476725031197,null,0,0,0.027226319447840954,null,0,0,0,0,0,0,0,0]}]],[[{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[52.5,54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[15.5,17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[10775.601386835651,null,null,null,null,null,null],"HeatSust":[78.920273541151175,null,null,null,null,null,null],"PowerSust":[0.033513450281764667,null,null,null,null,null,null]},{"Lat":[52.5,51.5,52.5,50.5,51.5,52.5,54.5,50.5,51.5,52.5,53.5,50.5,52.5,53.5,49.5,52.5,53.5,50.5,53.5,50.5,50.5,51.5,53.5],"Lon":[14.5,15.5,15.5,16.5,16.5,16.5,17.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,20.5,20.5,20.5,21.5,21.5,22.5,23.5,23.5,23.5],"CAPEX":[8524.5242593247513,10206.285089983165,7752.0323771053654,11731.049000001771,9439.4999573829027,10363.141076403386,null,10936.09103308723,10978.135877545177,9883.76528734719,null,10927.892862383604,11274.327327519573,null,8617.91907746064,11057.104258378196,null,10645.210665445533,null,11064.944139114321,10411.09062378196,11093.837780229978,null],"HeatSust":[103.51153369341698,86.90367597185957,78.920273541151175,93.569003741645091,89.841815773377135,84.153828449252416,null,71.3908691718809,87.608955624861991,102.97905273162117,null,66.415401778944812,74.114095477815056,null,57.257712005849385,69.72144623714081,null,85.7387227387003,null,84.012954523264938,85.725874516288158,96.545852732711992,null],"PowerSust":[0.044108663319881412,0.036784396339524184,0.033513450281764667,0.03731700249101013,0.037497598725992842,0.033854875485683236,null,0.029049393202046032,0.035558072294488,0.042484858547240649,null,0.027004507585372255,0.029880559277050755,null,0.024171970022278142,0.028997863779848206,null,0.035963627808390658,null,0.034964230127189695,0.035030858028054626,0.040391775794545517,null]},{"Lat":[52.5,53.5,51.5,52.5,53.5,50.5,51.5,52.5,51.5,54.5,50.5,51.5,52.5,53.5,54.5,49.5,50.5,51.5,52.5,53.5,49.5,50.5,51.5,52.5,53.5,49.5,50.5,52.5,53.5,50.5,53.5,50.5,51.5,53.5],"Lon":[14.5,14.5,15.5,15.5,15.5,16.5,16.5,16.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5,23.5],"CAPEX":[6701.9765452541524,9386.72479332615,7995.1696347364486,6109.0672006643354,9881.99946362661,9185.8002517714958,7410.4046850031245,8134.8269121178319,11578.039990394609,null,8569.18995483461,8602.7423899914684,7755.1878774969982,null,11463.274104804386,11480.542216378106,8562.2603866347,10315.306154964357,8832.3880043813078,null,6772.5645453125908,10806.908331387769,10563.854742156338,8653.4702299924247,null,11314.70876334129,8334.7630271228445,10747.357352087061,null,8659.52440312795,9868.5300348104156,8162.7458640948016,8679.5678072299652,null],"HeatSust":[103.51153369341698,0,86.90367597185957,78.920273541151175,0,93.569003741645091,89.841815773377135,84.153828449252416,69.471531299905422,null,71.3908691718809,87.608955624861991,102.97905273162117,null,47.657598463415873,64.455328245147157,66.415401778944812,71.906553792269932,74.114095477815056,null,57.257712005849385,65.468529552681417,64.2836017013068,69.72144623714081,null,89.879452242877107,85.7387227387003,86.792197013789078,null,84.012954523264938,0,85.725874516288158,96.545852732711992,null],"PowerSust":[0.044108663319881412,0,0.036784396339524184,0.033513450281764667,0,0.03731700249101013,0.037497598725992842,0.033854875485683236,0.028715553019687236,null,0.029049393202046032,0.035558072294488,0.042484858547240649,null,0.019830010459699312,0.025572516177090398,0.027004507585372255,0.029030830587380298,0.029880559277050755,null,0.024171970022278142,0.02623027988627152,0.025834723694347542,0.028997863779848206,null,0.0368692442783376,0.035963627808390658,0.034932685458536894,null,0.034964230127189695,0,0.035030858028054626,0.040391775794545517,null]},{"Lat":[52.5,53.5,51.5,52.5,53.5,50.5,51.5,52.5,50.5,51.5,52.5,53.5,54.5,50.5,51.5,52.5,53.5,54.5,49.5,50.5,51.5,52.5,53.5,49.5,50.5,51.5,52.5,53.5,49.5,50.5,52.5,53.5,50.5,53.5,50.5,51.5,53.5],"Lon":[14.5,14.5,15.5,15.5,15.5,16.5,16.5,16.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5,23.5],"CAPEX":[5882.8161447814336,8239.4165046582057,7017.9465251635293,5362.3761460448395,8674.1553920403258,8063.0503044843863,6504.65545886914,7140.5339559860395,10471.461965946148,10162.89450142138,10594.371882470819,10746.582990068051,null,7521.8062423237325,7551.2576744355438,6807.2969434455854,null,10062.156069995748,10077.313557472735,7515.7236522986077,9054.5004413300867,7752.8344658177,null,5944.7764073349736,9486.0157116008013,9272.6697577433169,7595.7852185312977,null,9931.74937826643,7316.0325417143431,9433.74345130532,null,7601.099410132013,8662.332286906214,7165.040466912551,7618.6929753215518,null],"HeatSust":[103.51153369341698,0,86.90367597185957,78.920273541151175,0,93.569003741645091,89.841815773377135,84.153828449252416,69.6137749397759,69.471531299905422,48.812125600312456,46.600054692572847,null,71.3908691718809,87.608955624861991,102.97905273162117,null,47.657598463415873,64.455328245147157,66.415401778944812,71.906553792269932,74.114095477815056,null,57.257712005849385,65.468529552681417,64.2836017013068,69.72144623714081,null,89.879452242877107,85.7387227387003,86.792197013789078,null,84.012954523264938,0,85.725874516288158,96.545852732711992,null],"PowerSust":[0.044108663319881412,0,0.036784396339524184,0.033513450281764667,0,0.03731700249101013,0.037497598725992842,0.033854875485683236,0.028487197242952841,0.028715553019687236,0.019494833729269488,0.019127056502216331,null,0.029049393202046032,0.035558072294488,0.042484858547240649,null,0.019830010459699312,0.025572516177090398,0.027004507585372255,0.029030830587380298,0.029880559277050755,null,0.024171970022278142,0.02623027988627152,0.025834723694347542,0.028997863779848206,null,0.0368692442783376,0.035963627808390658,0.034932685458536894,null,0.034964230127189695,0,0.035030858028054626,0.040391775794545517,null]}]],[[{"Lat":48.5,"Lon":14.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":[47.5,48.5],"Lon":[12.5,14.5],"CAPEX":[10284.361187914465,null],"HeatSust":[170.33404823371092,null],"PowerSust":[0.076233951987499007,null]},{"Lat":[47.5,47.5,48.5],"Lon":[12.5,13.5,14.5],"CAPEX":[7191.7180593791236,10552.290899723113,null],"HeatSust":[170.33404823371092,112.94185355179111,null],"PowerSust":[0.076233951987499007,0.050835096945801739,null]},{"Lat":[47.5,47.5,47.5,46.5,48.5],"Lon":[11.5,12.5,13.5,14.5,14.5],"CAPEX":[9216.9583014402,5582.3584178869341,8110.761827051203,9338.38191092297,null],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,119.01655357087456,null],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.051906195797978651,null]},{"Lat":[47.5,47.5,47.5,46.5,48.5],"Lon":[11.5,12.5,13.5,14.5,14.5],"CAPEX":[6622.9079463201,4096.9891394557153,5822.69794237936,6671.5918908511749,null],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,119.01655357087456,null],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.051906195797978651,null]},{"Lat":[47.5,47.5,47.5,46.5,48.5,47.5,48.5],"Lon":[11.5,12.5,13.5,14.5,14.5,16.5,16.5],"CAPEX":[4836.8399985517508,3060.0175755960972,4271.7012860567065,4868.9427822019979,null,9435.0580693373668,10077.435223107283],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,119.01655357087456,null,129.12043074306817,73.726036297402587],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.051906195797978651,null,0.053663704505203053,0.030444201000930773]},{"Lat":[47.5,47.5,47.5,48.5,46.5,48.5,47.5,48.5],"Lon":[11.5,12.5,13.5,13.5,14.5,14.5,16.5,16.5],"CAPEX":[3882.1862437103887,2487.6018890078426,3417.7990547403524,10794.665311135526,3883.627584371683,null,7407.6423840610587,7903.5449693400878],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,58.307318636722435,119.01655357087456,null,129.12043074306817,73.726036297402587],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.024178138368931335,0.051906195797978651,null,0.053663704505203053,0.030444201000930773]},{"Lat":[47.5,47.5,47.5,48.5,46.5,48.5,47.5,48.5],"Lon":[11.5,12.5,13.5,13.5,14.5,14.5,16.5,16.5],"CAPEX":[3407.6794744559638,2183.5505474585593,3000.0527938408059,9475.26911517295,3408.9446448210251,null,6502.23078482425,6937.5208392163613],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,58.307318636722435,119.01655357087456,null,129.12043074306817,73.726036297402587],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.024178138368931335,0.051906195797978651,null,0.053663704505203053,0.030444201000930773]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":46.5,"Lon":19.5,"CAPEX":11652.184971154917,"HeatSust":169.73950811352361,"PowerSust":0.07168335892990145},{"Lat":[46.5,46.5,47.5,47.5],"Lon":[17.5,19.5,20.5,21.5],"CAPEX":[10577.589853892037,8272.3137529664564,11649.339230031166,10321.07845902718],"HeatSust":[0,169.73950811352361,147.73230732086634,146.95903846318478],"PowerSust":[0,0.07168335892990145,0.061860740015383643,0.0594795750555533]},{"Lat":[46.5,47.5,46.5,47.5,46.5,47.5,46.5,47.5,48.5,47.5],"Lon":[17.5,17.5,18.5,18.5,19.5,19.5,20.5,20.5,20.5,21.5],"CAPEX":[7614.3569438132472,9486.9397070347131,9591.8588797040939,8997.1614014137667,5994.4553868933,11545.490448421468,9895.7978646197844,8366.0627919140916,11235.422489252322,7434.1278767307913],"HeatSust":[0,117.48227606124362,176.75691468619951,119.41242943514806,169.73950811352361,96.357511431450845,138.70041697840574,147.73230732086634,57.116344559444244,146.95903846318478],"PowerSust":[0,0.048217323934071452,0.072328806938598583,0.049411064788034427,0.07168335892990145,0.040343776500777528,0.056508601166202738,0.061860740015383643,0.022893741501233755,0.0594795750555533]},{"Lat":[46.5,47.5,46.5,47.5,46.5,47.5,46.5,47.5,48.5,47.5],"Lon":[17.5,17.5,18.5,18.5,19.5,19.5,20.5,20.5,20.5,21.5],"CAPEX":[6024.4178637412151,7455.6616960924857,7538.0734080615848,7075.4808023225023,4762.1796856604151,9029.3693588760179,7773.6736217697135,6586.5343036483837,8801.4919917190837,5883.8601813927917],"HeatSust":[0,117.48227606124362,176.75691468619951,119.41242943514806,169.73950811352361,96.357511431450845,138.70041697840574,147.73230732086634,57.116344559444244,146.95903846318478],"PowerSust":[0,0.048217323934071452,0.072328806938598583,0.049411064788034427,0.07168335892990145,0.040343776500777528,0.056508601166202738,0.061860740015383643,0.022893741501233755,0.0594795750555533]},{"Lat":[46.5,47.5,46.5,47.5,46.5,47.5,46.5,47.5,48.5,47.5],"Lon":[17.5,17.5,18.5,18.5,19.5,19.5,20.5,20.5,20.5,21.5],"CAPEX":[5288.073217269447,6544.3808553552817,6616.7196566652028,6210.6682133151908,4180.1142319710807,7925.7394416286015,6823.5232364087933,5781.4840260963756,7725.7147704753743,5164.6954349974549],"HeatSust":[0,117.48227606124362,176.75691468619951,119.41242943514806,169.73950811352361,96.357511431450845,138.70041697840574,147.73230732086634,57.116344559444244,146.95903846318478],"PowerSust":[0,0.048217323934071452,0.072328806938598583,0.049411064788034427,0.07168335892990145,0.040343776500777528,0.056508601166202738,0.061860740015383643,0.022893741501233755,0.0594795750555533]}]],[[{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,47.5,46.5],"Lon":[27.5,28.5,29.5],"CAPEX":[null,10977.684801015939,null],"HeatSust":[null,0,null],"PowerSust":[null,0,null]},{"Lat":[47.5,46.5,47.5,46.5],"Lon":[27.5,28.5,28.5,29.5],"CAPEX":[null,10444.522478258947,8592.02458388144,null],"HeatSust":[null,0,0,null],"PowerSust":[null,0,0,null]},{"Lat":[47.5,46.5,47.5,46.5],"Lon":[27.5,28.5,28.5,29.5],"CAPEX":[null,9167.9230813100785,7541.8498702758343,null],"HeatSust":[null,0,0,null],"PowerSust":[null,0,0,null]}]],[[{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[46.5,47.5,47.5,45.5,47.5,44.5,44.5,44.5],"Lon":[21.5,22.5,23.5,24.5,25.5,26.5,27.5,28.5],"CAPEX":[9457.7042202875255,9328.8538181064523,9609.214974760358,null,null,null,null,null],"HeatSust":[136.12083607775932,128.65854262906151,156.20925880646371,null,null,null,null,null],"PowerSust":[0.059654606553251832,0.056383711161739306,0.067574971902121125,null,null,null,null,null]},{"Lat":[45.5,46.5,46.5,47.5,44.5,45.5,47.5,44.5,45.5,46.5,44.5,46.5,47.5,44.5,44.5,46.5,44.5],"Lon":[21.5,21.5,22.5,22.5,23.5,23.5,23.5,24.5,24.5,24.5,25.5,25.5,25.5,26.5,27.5,27.5,28.5],"CAPEX":[11105.86287922705,6825.8710722345841,10031.265325192955,6735.2654347439675,11030.236499581544,11608.177973670377,6932.3348918607244,9595.6433925037527,null,11200.698817454118,10562.826405830048,10413.03536069678,null,null,null,8958.5111448620282,null],"HeatSust":[135.58166125525847,136.12083607775932,123.50435162973938,128.65854262906151,45.649227187013629,0,156.20925880646371,66.936010540986288,null,42.793832812575744,0,106.43102525886405,null,null,null,93.885872427104644,null],"PowerSust":[0.057122421516024285,0.059654606553251832,0.0522809649799578,0.056383711161739306,0.019157587919620446,0,0.067574971902121125,0.028911860840880266,null,0.017461934629654834,0,0.044403867956099373,null,null,null,0.03966350528841326,null]},{"Lat":[45.5,46.5,45.5,46.5,47.5,44.5,45.5,47.5,44.5,45.5,46.5,47.5,44.5,45.5,46.5,47.5,44.5,45.5,44.5,45.5,46.5,44.5],"Lon":[21.5,21.5,22.5,22.5,22.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,26.5,26.5,27.5,27.5,27.5,28.5],"CAPEX":[8690.673615031199,5390.7340809431107,10735.975369904396,7860.1503719528819,5320.0983200662413,8631.77663272468,9078.6312754468763,5473.1238666201625,7521.5335661362378,null,8771.19949023297,9540.7826879711265,8270.4337572311251,11568.486155484752,8154.5156158075379,null,null,10991.608465707031,null,10430.235703502627,7037.4548568763139,null],"HeatSust":[135.58166125525847,136.12083607775932,113.18215518289681,123.50435162973938,128.65854262906151,45.649227187013629,0,156.20925880646371,66.936010540986288,null,42.793832812575744,65.42348205026687,0,65.206217072182113,106.43102525886405,null,null,67.398032977386791,null,74.8783018629848,93.885872427104644,null],"PowerSust":[0.057122421516024285,0.059654606553251832,0.0469644605225425,0.0522809649799578,0.056383711161739306,0.019157587919620446,0,0.067574971902121125,0.028911860840880266,null,0.017461934629654834,0.026793083268461703,0,0.026810211155738842,0.044403867956099373,null,null,0.027056722683618067,null,0.030339190024202243,0.03966350528841326,null]},{"Lat":[45.5,46.5,45.5,46.5,47.5,44.5,45.5,47.5,44.5,45.5,46.5,47.5,44.5,45.5,46.5,47.5,44.5,45.5,44.5,45.5,46.5,44.5],"Lon":[21.5,21.5,22.5,22.5,22.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,26.5,26.5,27.5,27.5,27.5,28.5],"CAPEX":[7628.4413570105653,4731.8425048879417,9423.7526511150063,6899.430219772682,4669.8403191626539,7576.7431578222922,7968.9802372609165,4804.1620598838872,6602.2014248490286,null,7699.1248211365437,8374.6444129818028,7259.5660254641507,10154.508400116374,7157.8161746201285,null,null,9648.1405601107672,null,9155.3825317235769,6177.290053263313,null],"HeatSust":[135.58166125525847,136.12083607775932,113.18215518289681,123.50435162973938,128.65854262906151,45.649227187013629,0,156.20925880646371,66.936010540986288,null,42.793832812575744,65.42348205026687,0,65.206217072182113,106.43102525886405,null,null,67.398032977386791,null,74.8783018629848,93.885872427104644,null],"PowerSust":[0.057122421516024285,0.059654606553251832,0.0469644605225425,0.0522809649799578,0.056383711161739306,0.019157587919620446,0,0.067574971902121125,0.028911860840880266,null,0.017461934629654834,0.026793083268461703,0,0.026810211155738842,0.044403867956099373,null,null,0.027056722683618067,null,0.030339190024202243,0.03966350528841326,null]}]],[[{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,55.5,54.5,54.5,54.5,55.5],"Lon":[21.5,22.5,23.5,24.5,25.5,26.5],"CAPEX":[10147.628222089636,null,null,null,null,null],"HeatSust":[120.69496566113145,null,null,null,null,null],"PowerSust":[0.048576552485773777,null,null,null,null,null]},{"Lat":[55.5,55.5,54.5,54.5,54.5,55.5],"Lon":[21.5,22.5,23.5,24.5,25.5,26.5],"CAPEX":[7312.2152552813659,null,null,null,null,null],"HeatSust":[120.69496566113145,null,null,null,null,null],"PowerSust":[0.048576552485773777,null,null,null,null,null]},{"Lat":[55.5,55.5,54.5,55.5,54.5,54.5,55.5],"Lon":[21.5,22.5,23.5,23.5,24.5,25.5,26.5],"CAPEX":[5788.0014744609452,null,null,10550.343549853071,null,null,null],"HeatSust":[120.69496566113145,null,null,60.313483331810509,null,null,null],"PowerSust":[0.048576552485773777,null,null,0.024250287187102048,null,null,null]},{"Lat":[55.5,55.5,54.5,55.5,54.5,54.5,55.5],"Lon":[21.5,22.5,23.5,23.5,24.5,25.5,26.5],"CAPEX":[5080.553220391248,null,null,9260.809993734867,null,null,null],"HeatSust":[120.69496566113145,null,null,60.313483331810509,null,null,null],"PowerSust":[0.048576552485773777,null,null,0.024250287187102048,null,null,null]}]],[[{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,56.5,57.5,56.5],"Lon":[22.5,23.5,24.5,27.5],"CAPEX":[null,10599.807827750961,null,null],"HeatSust":[null,49.794609298258443,null,null],"PowerSust":[null,0.020211053278707564,null,null]},{"Lat":[56.5,56.5,57.5,56.5],"Lon":[22.5,23.5,24.5,27.5],"CAPEX":[null,8307.5072837899279,null,null],"HeatSust":[null,49.794609298258443,null,null],"PowerSust":[null,0.020211053278707564,null,null]},{"Lat":[56.5,56.5,57.5,56.5,56.5],"Lon":[22.5,23.5,24.5,25.5,27.5],"CAPEX":[null,7292.108177635444,null,10335.253105301892,null],"HeatSust":[null,49.794609298258443,null,43.70780132681476,null],"PowerSust":[null,0.020211053278707564,null,0.017870154194403059,null]}]],[[{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5,59.5],"Lon":[24.5,26.5,26.5],"CAPEX":[null,null,9451.9836867456961],"HeatSust":[null,null,49.623597719434642],"PowerSust":[null,null,0.020665048650144294]},{"Lat":[58.5,59.5,57.5,59.5],"Lon":[24.5,25.5,26.5,26.5],"CAPEX":[null,11683.684597307802,null,7418.16331084629],"HeatSust":[null,34.286605580975305,null,49.623597719434642],"PowerSust":[null,0.01418698652024401,null,0.020665048650144294]},{"Lat":[58.5,59.5,57.5,59.5],"Lon":[24.5,25.5,26.5,26.5],"CAPEX":[null,10255.626517858847,null,6511.4657735670944],"HeatSust":[null,34.286605580975305,null,49.623597719434642],"PowerSust":[null,0.01418698652024401,null,0.020665048650144294]}]],[[{"Lat":50.5,"Lon":8.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":[50.5,50.5],"Lon":[7.5,8.5],"CAPEX":[10674.198909229877,null],"HeatSust":[85.160392178883427,null],"PowerSust":[0.038451142758912836,null]},{"Lat":[50.5,50.5,49.5,50.5],"Lon":[6.5,7.5,8.5,8.5],"CAPEX":[10970.410908739848,7453.4401161755577,9627.1969157829244,null],"HeatSust":[86.695209314826442,85.160392178883427,133.14482427635787,null],"PowerSust":[0.035816225635009379,0.038451142758912836,0.056642008731078108,null]},{"Lat":[50.5,50.5,49.5,50.5],"Lon":[6.5,7.5,8.5,8.5],"CAPEX":[8427.3149318411633,5779.5402816429141,7416.2810368171477,null],"HeatSust":[86.695209314826442,85.160392178883427,133.14482427635787,null],"PowerSust":[0.035816225635009379,0.038451142758912836,0.056642008731078108,null]},{"Lat":[50.5,50.5,52.5,49.5,50.5,47.5,51.5],"Lon":[6.5,7.5,7.5,8.5,8.5,10.5,10.5],"CAPEX":[6076.2944778908823,4235.012326865859,9806.1129235760163,5374.7124580982154,null,8426.9352854575445,9382.6242768859775],"HeatSust":[86.695209314826442,85.160392178883427,0,133.14482427635787,null,131.08951546311761,0],"PowerSust":[0.035816225635009379,0.038451142758912836,0,0.056642008731078108,null,0.057943437064028276,0]},{"Lat":[49.5,50.5,51.5,49.5,50.5,52.5,53.5,48.5,49.5,50.5,51.5,52.5,53.5,49.5,52.5,47.5,48.5,49.5,51.5,52.5,48.5,52.5,53.5,48.5,50.5,52.5,53.5,52.5,51.5],"Lon":[6.5,6.5,6.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,12.5,12.5,12.5,12.5,13.5,14.5],"CAPEX":[9232.2688461288944,4452.6787439064356,10455.218738924465,10554.836668067981,3157.326447554572,7070.7170513224046,10133.757538633259,11510.625760710562,3959.4247952619012,null,11747.586591670532,11332.984419784849,10656.07408977695,8525.0960420171268,9886.8824103211427,6101.0712476249428,10657.030268125507,11343.973317879947,6773.0138445631746,9847.5123677094343,9303.7155410132127,10930.763347767417,9149.3618961108386,11032.839802934581,9708.19377366459,10508.618954715866,10576.595818672595,10099.293657789176,9933.9813978509446],"HeatSust":[107.40755367344758,86.695209314826442,101.10075133147673,77.842851286292813,85.160392178883427,0,0,150.70293915815816,133.14482427635787,null,99.751137997577686,98.639884499591588,0,0,64.788589621184457,131.08951546311761,103.20129976459971,0,0,97.7947279996018,92.978458662845071,89.570800445766437,81.542955371913578,0,109.50387903882454,90.3749945130452,86.495513703832245,77.1617948925391,80.94531498822731],"PowerSust":[0.044999227730391826,0.035816225635009379,0.042779495262267805,0.031323068727910429,0.038451142758912836,0,0,0.062283262212011234,0.056642008731078108,null,0.041450782476005685,0.041051331170865749,0,0,0.027789605889037148,0.057943437064028276,0.043269644910171018,0,0,0.039771849532480155,0.038887745792438311,0.036499484598581641,0.034377186271151945,0,0.045209179826616354,0.036385244325907611,0.0354169350829264,0.03285222134941089,0.033548610860872068]},{"Lat":[49.5,50.5,51.5,49.5,50.5,51.5,52.5,53.5,48.5,49.5,50.5,51.5,52.5,53.5,48.5,49.5,51.5,52.5,53.5,54.5,47.5,48.5,49.5,51.5,52.5,53.5,48.5,51.5,52.5,53.5,48.5,50.5,51.5,52.5,53.5,52.5,53.5,51.5],"Lon":[6.5,6.5,6.5,7.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,8.5,8.5,9.5,9.5,9.5,9.5,9.5,9.5,10.5,10.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,11.5,12.5,12.5,12.5,12.5,12.5,13.5,13.5,14.5],"CAPEX":[7250.3928836772338,3582.0455454791181,8188.8363043108693,8282.8791981672184,2564.5911975621366,9528.8973368608658,5580.4655860033918,7949.3649869161727,9006.3676029671915,3195.5463704583576,null,9185.9482699000473,8868.07134866916,8353.2458999090413,9897.2183979333367,6703.4016945005887,11319.079542109503,7747.3296795252509,11506.641808347147,9562.4021794216478,4826.8620965422542,8344.3920303885025,8874.134169780089,5349.0166206766144,7734.957624981399,10052.658436338845,7305.56178528512,11022.354434395338,8566.6313228353119,7185.5753227459963,8645.3555789825587,7618.8226948446681,9277.7880594332437,8247.92187219624,8292.1080759164415,7912.5638434302537,10815.081813368639,7793.3660005470956],"HeatSust":[107.40755367344758,86.695209314826442,101.10075133147673,77.842851286292813,85.160392178883427,0,0,0,150.70293915815816,133.14482427635787,null,99.751137997577686,98.639884499591588,0,118.08787946752166,0,101.78274683725695,64.788589621184457,58.126709108870315,69.0351944316705,131.08951546311761,103.20129976459971,0,0,97.7947279996018,74.243495099434739,92.978458662845071,0,89.570800445766437,81.542955371913578,0,109.50387903882454,91.714941298370448,90.3749945130452,86.495513703832245,77.1617948925391,0,80.94531498822731],"PowerSust":[0.044999227730391826,0.035816225635009379,0.042779495262267805,0.031323068727910429,0.038451142758912836,0,0,0,0.062283262212011234,0.056642008731078108,null,0.041450782476005685,0.041051331170865749,0,0.047973031550091152,0,0.04200129571430667,0.027789605889037148,0.023231066521822961,0.027674621565087376,0.057943437064028276,0.043269644910171018,0,0,0.039771849532480155,0.030225890892266769,0.038887745792438311,0,0.036499484598581641,0.034377186271151945,0,0.045209179826616354,0.037840352962308962,0.036385244325907611,0.0354169350829264,0.03285222134941089,0,0.033548610860872068]},{"Lat":[49.5,50.5,51.5,49.5,50.5,51.5,52.5,53.5,48.5,49.5,50.5,51.5,52.5,53.5,48.5,49.5,50.5,51.5,52.5,53.5,54.5,47.5,48.5,49.5,51.5,52.5,53.5,48.5,49.5,51.5,52.5,53.5,48.5,50.5,51.5,52.5,53.5,51.5,52.5,53.5,51.5],"Lon":[6.5,6.5,6.5,7.5,7.5,7.5,7.5,7.5,8.5,8.5,8.5,8.5,8.5,8.5,9.5,9.5,9.5,9.5,9.5,9.5,9.5,10.5,10.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,11.5,11.5,12.5,12.5,12.5,12.5,12.5,13.5,13.5,13.5,14.5],"CAPEX":[6364.2013701627147,3144.2239798957489,7187.941959015835,7270.4903013659514,2251.1297077675408,8364.2117689810766,4898.3837563539246,6977.74042777067,7905.5491141774291,2804.9653192000619,null,8063.1802308472279,7784.1563530936264,7332.2563141633191,8687.514166402103,5884.0671027546605,11139.502662360379,9935.5859312190223,6800.3992269906075,10100.223082740531,8393.62142558223,4236.89072595755,7324.4846237959309,7789.478135656349,4695.2240316483094,6789.5393677053307,8823.95528363115,6412.6271596111346,11494.991867198272,9675.1285508572564,7519.56034344116,6307.3062450698562,7588.6623944438406,6687.5992255147075,8143.7947470203408,7239.805693592134,7278.59116394802,11402.986723028114,6945.4373661912205,9493.19017594449,6840.8086809367605],"HeatSust":[107.40755367344758,86.695209314826442,101.10075133147673,77.842851286292813,85.160392178883427,0,0,0,150.70293915815816,133.14482427635787,null,99.751137997577686,98.639884499591588,0,118.08787946752166,0,77.609207396282784,101.78274683725695,64.788589621184457,58.126709108870315,69.0351944316705,131.08951546311761,103.20129976459971,0,0,97.7947279996018,74.243495099434739,92.978458662845071,0,0,89.570800445766437,81.542955371913578,0,109.50387903882454,91.714941298370448,90.3749945130452,86.495513703832245,86.349954790329548,77.1617948925391,0,80.94531498822731],"PowerSust":[0.044999227730391826,0.035816225635009379,0.042779495262267805,0.031323068727910429,0.038451142758912836,0,0,0,0.062283262212011234,0.056642008731078108,null,0.041450782476005685,0.041051331170865749,0,0.047973031550091152,0,0.031538723359407682,0.04200129571430667,0.027789605889037148,0.023231066521822961,0.027674621565087376,0.057943437064028276,0.043269644910171018,0,0,0.039771849532480155,0.030225890892266769,0.038887745792438311,0,0,0.036499484598581641,0.034377186271151945,0,0.045209179826616354,0.037840352962308962,0.036385244325907611,0.0354169350829264,0.034926209821381712,0.03285222134941089,0,0.033548610860872068]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[42.5,41.5],"Lon":[23.5,25.5],"CAPEX":[11608.537501382931,9937.0769675636948],"HeatSust":[112.52612965452607,0],"PowerSust":[0.046835472549953079,0]},{"Lat":[41.5,42.5,41.5,43.5,42.5,43.5,42.5],"Lon":[23.5,23.5,25.5,25.5,26.5,26.5,27.5],"CAPEX":[10787.200309658556,8337.3003267221266,7162.8744771084539,11183.299484489822,10610.689336601237,10374.534689697606,9932.2527027166216],"HeatSust":[0,112.52612965452607,0,100.82385902167488,0,112.03960418254539,86.216045722389],"PowerSust":[0,0.046835472549953079,0,0.041208125376613579,0,0.046304080327081491,0.036096246921925805]},{"Lat":[41.5,42.5,43.5,42.5,43.5,41.5,42.5,43.5,42.5,43.5,42.5,43.5],"Lon":[23.5,23.5,23.5,24.5,24.5,25.5,25.5,25.5,26.5,26.5,27.5,27.5],"CAPEX":[8445.8992068897587,6562.9876559017912,11206.261483846192,9354.2470701392049,11207.957888245131,5653.057556369703,9403.39004885627,8763.214309372368,8318.3944436773,8136.2874523318324,7792.8954633091125,9725.3679745603131],"HeatSust":[0,112.52612965452607,121.30783364161465,69.9621834666122,114.98354998913186,0,0,100.82385902167488,0,112.03960418254539,86.216045722389,93.695351874543377],"PowerSust":[0,0.046835472549953079,0.048603157416210033,0.028982579401098971,0.046247326786249737,0,0,0.041208125376613579,0,0.046304080327081491,0.036096246921925805,0.038905544758263792]},{"Lat":[41.5,42.5,43.5,42.5,43.5,41.5,42.5,43.5,42.5,43.5,42.5,43.5],"Lon":[23.5,23.5,23.5,24.5,24.5,25.5,25.5,25.5,26.5,26.5,27.5,27.5],"CAPEX":[7413.5849142401921,5760.8154071324325,9836.5572506360877,8210.9084260309828,9838.04630914275,4962.103050560474,8254.0448211895327,7692.11564249073,7301.6646360210825,7141.815979206056,6840.39565590726,8536.6684512194315],"HeatSust":[0,112.52612965452607,121.30783364161465,69.9621834666122,114.98354998913186,0,0,100.82385902167488,0,112.03960418254539,86.216045722389,93.695351874543377],"PowerSust":[0,0.046835472549953079,0.048603157416210033,0.028982579401098971,0.046247326786249737,0,0,0.041208125376613579,0,0.046304080327081491,0.036096246921925805,0.038905544758263792]}]],[[{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5,39.5],"Lon":[20.5,21.5,22.5,22.5,22.5],"CAPEX":[null,null,null,null,9934.9484917555565],"HeatSust":[null,null,null,null,228.59334161849839],"PowerSust":[null,null,null,null,0.10097806161142672]},{"Lat":[39.5,38.5,36.5,37.5,39.5],"Lon":[20.5,21.5,22.5,22.5,22.5],"CAPEX":[null,null,null,null,7087.5153048527482],"HeatSust":[null,null,null,null,228.59334161849839],"PowerSust":[null,null,null,null,0.10097806161142672]},{"Lat":[39.5,38.5,36.5,37.5,39.5,40.5,41.5],"Lon":[20.5,21.5,22.5,22.5,22.5,23.5,24.5],"CAPEX":[null,null,null,null,5161.7085289363167,10411.015035741935,11573.492473908937],"HeatSust":[null,null,null,null,228.59334161849839,0,0],"PowerSust":[null,null,null,null,0.10097806161142672,0,0]},{"Lat":[39.5,38.5,39.5,36.5,37.5,39.5,40.5,41.5,41.5],"Lon":[20.5,21.5,21.5,22.5,22.5,22.5,23.5,24.5,26.5],"CAPEX":[null,null,10439.146333799605,null,null,4114.2672556657189,8156.3231110663492,9054.28447791238,9641.829968012622],"HeatSust":[null,null,0,null,null,228.59334161849839,0,0,0],"PowerSust":[null,null,0,null,null,0.10097806161142672,0,0,0]},{"Lat":[39.5,38.5,39.5,36.5,37.5,38.5,39.5,40.5,41.5,41.5],"Lon":[20.5,21.5,21.5,22.5,22.5,22.5,22.5,23.5,24.5,26.5],"CAPEX":[null,null,9163.2040451856556,null,null,10469.559178864372,3611.3939928236578,7159.4027457187212,7947.6092681680657,8463.3410185876946],"HeatSust":[null,null,0,null,null,0,228.59334161849839,0,0,0],"PowerSust":[null,null,0,null,null,0,0.10097806161142672,0,0,0]}]],[[{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]}]],[[{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5,18.5],"CAPEX":[null,null,null,null,null,11209.431865397128],"HeatSust":[null,null,null,null,null,133.60721363814409],"PowerSust":[null,null,null,null,null,0.0562371934985082]},{"Lat":[45.5,44.5,45.5,43.5,45.5,45.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5,17.5,18.5],"CAPEX":[null,null,null,null,null,10839.828482007988,8770.7201587181444],"HeatSust":[null,null,null,null,null,120.73829503176549,133.60721363814409],"PowerSust":[null,null,null,null,null,0.048919737656883552,0.0562371934985082]},{"Lat":[45.5,44.5,45.5,43.5,45.5,45.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5,17.5,18.5],"CAPEX":[null,null,null,null,null,9514.9121412211662,7698.7040767255385],"HeatSust":[null,null,null,null,null,120.73829503176549,133.60721363814409],"PowerSust":[null,null,null,null,null,0.048919737656883552,0.0562371934985082]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":47.5,"Lon":8.5,"CAPEX":8597.794623133108,"HeatSust":169.87753041795551,"PowerSust":0.080780089298402052},{"Lat":[47.5,46.5,47.5],"Lon":[8.5,9.5,9.5],"CAPEX":[6066.0848131360763,11046.349319597779,9652.419258996626],"HeatSust":[169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.080780089298402052,0.044228996035661605,0.059903832184067439]},{"Lat":[47.5,46.5,47.5],"Lon":[8.5,9.5,9.5],"CAPEX":[4734.4333583167208,8482.7061398624173,7435.1974323365821],"HeatSust":[169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.080780089298402052,0.044228996035661605,0.059903832184067439]},{"Lat":[46.5,47.5,46.5,47.5],"Lon":[6.5,8.5,9.5,9.5],"CAPEX":[11109.303691262608,3507.6960772436464,6079.3244292932832,5386.1537890942209],"HeatSust":[112.77574841739151,169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.047458032175485478,0.080780089298402052,0.044228996035661605,0.059903832184067439]},{"Lat":[46.5,46.5,47.5,46.5,47.5,46.5,47.5],"Lon":[6.5,7.5,7.5,8.5,8.5,9.5,9.5],"CAPEX":[7986.4732381535641,10631.67565955188,9138.79622874106,10498.81249552764,2644.7361915271513,4452.2250681862279,3967.3688587152756],"HeatSust":[112.77574841739151,130.73931811291797,146.46527019518641,92.718848502459053,169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.047458032175485478,0.054186924557491682,0.061381246722722348,0.038312398527048382,0.080780089298402052,0.044228996035661605,0.059903832184067439]},{"Lat":[46.5,46.5,47.5,46.5,47.5,46.5,47.5],"Lon":[6.5,7.5,7.5,8.5,8.5,9.5,9.5],"CAPEX":[6290.3879449655351,8321.2377228034638,7178.7387810088549,8219.57857845825,2161.8554200392587,3558.2171286321272,3200.6475440754843],"HeatSust":[112.77574841739151,130.73931811291797,146.46527019518641,92.718848502459053,169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.047458032175485478,0.054186924557491682,0.061381246722722348,0.038312398527048382,0.080780089298402052,0.044228996035661605,0.059903832184067439]},{"Lat":[46.5,46.5,47.5,46.5,47.5,46.5,47.5],"Lon":[6.5,7.5,7.5,8.5,8.5,9.5,9.5],"CAPEX":[5521.5346561882734,7304.1603905547745,6301.3053111909976,7214.926706792904,1897.6189907283413,3123.3080315355119,2809.4429932577868],"HeatSust":[112.77574841739151,130.73931811291797,146.46527019518641,92.718848502459053,169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.047458032175485478,0.054186924557491682,0.061381246722722348,0.038312398527048382,0.080780089298402052,0.044228996035661605,0.059903832184067439]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":50.5,"Lon":5.5,"CAPEX":9965.1946257087657,"HeatSust":0,"PowerSust":0},{"Lat":[50.5,50.5,50.5],"Lon":[3.5,4.5,5.5],"CAPEX":[11193.96048265579,10608.749707637415,7819.0398448806673],"HeatSust":[0,0,0],"PowerSust":[0,0,0]},{"Lat":[50.5,50.5,50.5],"Lon":[3.5,4.5,5.5],"CAPEX":[9825.7597600881527,9312.0773602570152,6863.3444962927688],"HeatSust":[0,0,0],"PowerSust":[0,0,0]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[52.5,52.5],"Lon":[4.5,6.5],"CAPEX":[10987.124691396373,10129.839228775018],"HeatSust":[0,0],"PowerSust":[0,0]},{"Lat":[51.5,52.5,51.5,52.5,52.5],"Lon":[4.5,4.5,5.5,5.5,6.5],"CAPEX":[9674.01225884504,7900.7143863669262,11031.105755593388,9947.9744367350158,7298.2528686026762],"HeatSust":[85.51306062492732,0,90.7497560552032,0,0],"PowerSust":[0.036907359580420282,0,0.036398078059291308,0,0]},{"Lat":[51.5,52.5,51.5,52.5,52.5],"Lon":[4.5,4.5,5.5,5.5,6.5],"CAPEX":[7583.8355695006567,6224.9427785032112,8653.7653651954934,7813.4649436036489,5757.225579846965],"HeatSust":[85.51306062492732,0,90.7497560552032,0,0],"PowerSust":[0.036907359580420282,0,0.036398078059291308,0,0]},{"Lat":[51.5,52.5,51.5,52.5,52.5],"Lon":[4.5,4.5,5.5,5.5,6.5],"CAPEX":[6656.8884606465454,5464.0886357101663,7596.0442803357946,6858.4509967383374,5053.5389614658843],"HeatSust":[85.51306062492732,0,90.7497560552032,0,0],"PowerSust":[0.036907359580420282,0,0.036398078059291308,0,0]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[38.5,41.5,37.5,41.5],"Lon":[-8.5,-8.5,-7.5,-6.5],"CAPEX":[9670.022498867429,10647.679185088495,11679.699319305228,9453.3278512839224],"HeatSust":[0,111.05779867135188,0,147.44345754470169],"PowerSust":[0,0.046194859964748383,0,0.062002176552010214]},{"Lat":[38.5,40.5,41.5,37.5,38.5,39.5,40.5,41.5,41.5],"Lon":[-8.5,-8.5,-8.5,-7.5,-7.5,-7.5,-7.5,-7.5,-6.5],"CAPEX":[7584.3527258449085,11032.218885404563,8350.600213521544,9153.7080978113972,9199.0908901322782,10827.376422018684,11105.177727889979,9754.94682383127,7424.5379521950326],"HeatSust":[0,96.696733746653678,111.05779867135188,0,0,0,0,93.737039617472121,147.44345754470169],"PowerSust":[0,0.040949387968730828,0.046194859964748383,0,0,0,0,0.038829802323872335,0.062002176552010214]},{"Lat":[38.5,39.5,40.5,41.5,37.5,38.5,39.5,40.5,41.5,41.5],"Lon":[-8.5,-8.5,-8.5,-8.5,-7.5,-7.5,-7.5,-7.5,-7.5,-6.5],"CAPEX":[6657.3424066833295,10493.310573627914,9683.7873026843663,7329.9340012621469,8034.8806682341719,8074.7164721284134,9503.982055291106,9747.828627445746,8562.631975690203,6517.0612636125088],"HeatSust":[0,0,96.696733746653678,111.05779867135188,0,0,0,0,93.737039617472121,147.44345754470169],"PowerSust":[0,0,0.040949387968730828,0.046194859964748383,0,0,0,0,0.038829802323872335,0.062002176552010214]}]],[[{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[42.5,36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-7.5,-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[9374.9665406228123,null,null,null,null,null,null,null],"HeatSust":[238.05002225341866,null,null,null,null,null,null,null],"PowerSust":[0.10539271669868776,null,null,null,null,null,null,null]},{"Lat":[42.5,42.5,36.5,37.5,43.5,37.5,37.5,37.5,37.5,38.5,42.5],"Lon":[-8.5,-7.5,-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5,-0.5,-0.5],"CAPEX":[9982.5104476498054,6699.7048136478088,null,null,null,null,null,null,null,11445.504309898211,9887.3650865801719],"HeatSust":[209.70173095348832,238.05002225341866,null,null,null,null,null,null,null,0,0],"PowerSust":[0.091729557904964037,0.10539271669868776,null,null,null,null,null,null,null,0,0]},{"Lat":[42.5,42.5,37.5,38.5,36.5,37.5,40.5,43.5,37.5,38.5,40.5,37.5,40.5,37.5,38.5,42.5,37.5,40.5,38.5,39.5,41.5,42.5,40.5,41.5],"Lon":[-8.5,-7.5,-6.5,-6.5,-5.5,-5.5,-5.5,-5.5,-4.5,-4.5,-4.5,-3.5,-3.5,-2.5,-2.5,-2.5,-1.5,-1.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5],"CAPEX":[7194.8959281423558,4888.9595953924454,10259.509085418813,11452.369299907306,null,null,11340.001940626466,null,null,9699.55437812822,9762.3205222927263,null,11388.098021821035,null,11425.359871222585,11568.237459062,null,10950.73515994843,8224.2450176382481,11404.440345535862,9962.29397501381,7127.9008110770419,10858.068445457393,9499.9652494755246],"HeatSust":[209.70173095348832,238.05002225341866,0,0,null,null,111.45664227461478,null,null,0,121.55026319856707,null,0,null,0,0,null,0,0,0,0,0,124.1675102315527,0],"PowerSust":[0.091729557904964037,0.10539271669868776,0,0,null,null,0.045635976336069868,null,null,0,0.0509556493042746,null,0,null,0,0,null,0,0,0,0,0,0.050784404840660706,0]},{"Lat":[42.5,42.5,43.5,37.5,38.5,39.5,36.5,37.5,38.5,39.5,40.5,41.5,42.5,43.5,37.5,38.5,39.5,40.5,41.5,42.5,37.5,38.5,39.5,40.5,42.5,37.5,38.5,41.5,42.5,37.5,38.5,40.5,41.5,42.5,38.5,39.5,41.5,42.5,40.5,41.5,42.5,41.5],"Lon":[-8.5,-7.5,-7.5,-6.5,-6.5,-6.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-4.5,-4.5,-4.5,-4.5,-4.5,-4.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,0.5,1.5],"CAPEX":[5678.8178592984777,3901.1047811787112,9405.2182831487735,8049.7121557451537,8975.3387366834831,9776.6743061888628,null,null,9367.6443736488618,10929.56934073396,8885.8208908176985,10984.772208949515,10604.387452581346,null,null,7615.7999290866028,11048.336929400639,7662.4406099062935,9949.14916086861,9249.2515234877847,null,9884.1055080702336,11601.927566188473,8921.8120359453551,11323.11306401814,null,8952.6277527143557,10538.333666084698,9046.5682990418718,null,9689.9665222198328,8571.1604272714139,9874.3283169866972,9388.23164631459,6503.1543664977225,8924.8078311984154,7808.3514897274044,5625.56764113722,8522.63039746536,7459.3872703005336,9427.9630729523014,11376.00019494488],"HeatSust":[209.70173095348832,238.05002225341866,120.21963738190202,0,0,0,null,null,0,0,111.45664227461478,93.561413939067208,46.862528026347256,null,null,0,0,121.55026319856707,83.38281645705905,0,null,0,0,0,0,null,0,0,0,null,0,0,0,0,0,0,0,0,124.1675102315527,0,90.279405817365145,98.79881334542452],"PowerSust":[0.091729557904964037,0.10539271669868776,0.050159359572352347,0,0,0,null,null,0,0,0.045635976336069868,0.037986083698256026,0.019184050306765104,null,null,0,0,0.0509556493042746,0.034707692399630133,0,null,0,0,0,0,null,0,0,0,null,0,0,0,0,0,0,0,0,0.050784404840660706,0,0.037348289502414138,0.040077042844987025]},{"Lat":[42.5,42.5,43.5,37.5,38.5,39.5,42.5,36.5,37.5,38.5,39.5,40.5,41.5,42.5,43.5,37.5,38.5,39.5,40.5,41.5,42.5,37.5,38.5,39.5,40.5,41.5,42.5,37.5,38.5,41.5,42.5,37.5,38.5,39.5,40.5,41.5,42.5,38.5,39.5,41.5,42.5,40.5,41.5,42.5,41.5],"Lon":[-8.5,-7.5,-7.5,-6.5,-6.5,-6.5,-6.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-5.5,-4.5,-4.5,-4.5,-4.5,-4.5,-4.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-1.5,-1.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,0.5,1.5],"CAPEX":[4984.7147569638882,3424.2856617356115,8255.6495964584046,7065.8224944392359,7878.3128034718447,8581.703779826732,10809.780019728852,null,null,8222.6682214959437,9593.684271949307,7799.7364274804668,9642.1398763794168,9308.2482891914533,null,null,6684.9459224057873,9697.9352915354411,6725.8858672529495,8733.0976041452232,8118.7461373687656,null,8676.0040216454763,10183.862377926311,7831.3284941187912,11689.960529408232,9939.12644910121,null,7858.3777078690318,9250.2680382904546,7940.836212289857,null,8505.5940011715938,10322.192382931067,7523.5358704395294,8667.4218642522846,8240.7391799956022,5708.295342562692,7833.9581232382234,6853.9625433969022,4937.9731366378646,7480.9375054762959,6547.6510649645952,8275.61436592042,9985.5493611430775],"HeatSust":[209.70173095348832,238.05002225341866,120.21963738190202,0,0,0,113.00131155981234,null,null,0,0,111.45664227461478,93.561413939067208,46.862528026347256,null,null,0,0,121.55026319856707,83.38281645705905,0,null,0,0,0,53.840825524359126,0,null,0,0,0,null,0,0,0,0,0,0,0,0,0,124.1675102315527,0,90.279405817365145,98.79881334542452],"PowerSust":[0.091729557904964037,0.10539271669868776,0.050159359572352347,0,0,0,0.046122293372931333,null,null,0,0,0.045635976336069868,0.037986083698256026,0.019184050306765104,null,null,0,0,0.0509556493042746,0.034707692399630133,0,null,0,0,0,0.021985533886665742,0,null,0,0,0,null,0,0,0,0,0,0,0,0,0,0.050784404840660706,0,0.037348289502414138,0.040077042844987025]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[53.5,54.5,53.5],"Lon":[-7.5,-7.5,-6.5],"CAPEX":[10379.634826034728,9404.2339797577333,11570.655513182299],"HeatSust":[89.322614714798576,111.15828309636834,0],"PowerSust":[0.036414706931581324,0.046018052925876164,0]},{"Lat":[53.5,54.5,53.5],"Lon":[-7.5,-7.5,-6.5],"CAPEX":[9110.9664319508829,8254.785601211468,10156.412604406074],"HeatSust":[89.322614714798576,111.15828309636834,0],"PowerSust":[0.036414706931581324,0.046018052925876164,0]}]],[[{"Lat":[43.5,46.5,44.5,43.5,46.5,42.5,43.5],"Lon":[10.5,10.5,11.5,12.5,12.5,13.5,13.5],"CAPEX":[6747.4118060916517,null,null,null,null,null,null],"HeatSust":[0,null,null,null,null,null,null],"PowerSust":[0,null,null,null,null,null,null]},{"Lat":[43.5,46.5,44.5,41.5,43.5,46.5,42.5,43.5],"Lon":[10.5,10.5,11.5,12.5,12.5,12.5,13.5,13.5],"CAPEX":[4585.4251261657146,null,null,11093.15120495321,null,null,null,null],"HeatSust":[0,null,null,0,null,null,null,null],"PowerSust":[0,null,null,0,null,null,null,null]},{"Lat":[39.5,45.5,43.5,46.5,42.5,44.5,41.5,43.5,46.5,42.5,43.5,46.5],"Lon":[8.5,8.5,10.5,10.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5,13.5],"CAPEX":[10700.23004269089,10858.391918929883,3420.5747406951505,null,9250.1036308859148,null,7737.7530486165479,null,null,null,null,11685.635894802452],"HeatSust":[0,89.742885374182435,0,null,0,null,0,null,null,null,null,70.146815275442492],"PowerSust":[0,0.040497523805045836,0,null,0,null,0,null,null,null,null,0.028272457577980355]},{"Lat":[39.5,45.5,43.5,46.5,42.5,44.5,41.5,43.5,46.5,37.5,42.5,43.5,46.5],"Lon":[8.5,8.5,10.5,10.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5],"CAPEX":[8222.484768075361,8341.2573869113421,2743.616406659502,null,7132.5147235795166,null,5993.8384687630978,null,null,10346.9966334115,null,null,8965.60223263103],"HeatSust":[0,89.742885374182435,0,null,0,null,0,null,null,0,null,null,70.146815275442492],"PowerSust":[0,0.040497523805045836,0,null,0,null,0,null,null,0,null,null,0.028272457577980355]},{"Lat":[44.5,39.5,40.5,45.5,43.5,45.5,46.5,42.5,43.5,44.5,41.5,43.5,46.5,37.5,42.5,43.5,46.5,41.5],"Lon":[7.5,8.5,8.5,8.5,10.5,10.5,10.5,11.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,15.5],"CAPEX":[11582.413871521809,5904.2260304090032,11420.44743702469,5982.3492394516807,2145.244771656292,9910.45231333452,null,5179.93063107959,9489.5151084500321,null,4386.9633580469908,null,null,7416.9397736734591,null,null,6448.949182493905,8982.6874387409516],"HeatSust":[124.56394682022697,0,70.44204901842015,89.742885374182435,0,68.825116586857391,null,0,0,null,0,null,null,0,null,null,70.146815275442492,134.1914067053257],"PowerSust":[0.052737591010295015,0,0.028894711799159371,0.040497523805045836,0,0.029773498619766983,null,0,0,null,0,null,null,0,null,null,0.028272457577980355,0.0601787401685285]},{"Lat":[44.5,39.5,40.5,44.5,45.5,39.5,40.5,45.5,43.5,44.5,45.5,46.5,42.5,43.5,44.5,45.5,41.5,43.5,45.5,46.5,37.5,42.5,43.5,46.5,41.5,40.5,41.5],"Lon":[7.5,8.5,8.5,8.5,8.5,9.5,9.5,9.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,11.5,12.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,14.5,15.5,15.5],"CAPEX":[8318.3101828132767,4329.5617138154312,8206.5964884721416,9385.6482786631186,4384.0839437294626,9016.88180752711,9701.5538728128868,11073.171475657024,1687.50949603198,9916.2484721189085,7143.905764193486,null,3822.584844802584,6849.9083706390456,null,10605.17424865771,3264.5917252951413,null,11706.859965584857,null,5395.1530093377942,null,null,4714.58802360664,9600.1765048762663,10841.314336166504,6492.0809018299924],"HeatSust":[124.56394682022697,0,70.44204901842015,158.54199841160522,89.742885374182435,74.701925480418,126.90664630694967,49.762722598735138,0,120.48184308297493,68.825116586857391,null,0,0,null,85.701631569066862,0,null,87.40539327074724,null,0,null,null,70.146815275442492,0,0,134.1914067053257],"PowerSust":[0.052737591010295015,0,0.028894711799159371,0.068914251845437188,0.040497523805045836,0.03179668224197936,0.055558942052614468,0.020000578326455964,0,0.050326975003538756,0.029773498619766983,null,0,0,null,0.034993987387498385,0,null,0.036412915446389471,null,0,null,null,0.028272457577980355,0,0,0.0601787401685285]},{"Lat":[44.5,39.5,40.5,44.5,45.5,39.5,40.5,45.5,43.5,44.5,45.5,46.5,42.5,43.5,44.5,45.5,41.5,42.5,43.5,45.5,46.5,37.5,41.5,42.5,43.5,46.5,41.5,40.5,41.5,39.5,40.5],"Lon":[7.5,8.5,8.5,8.5,8.5,9.5,9.5,9.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,11.5,12.5,12.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,14.5,15.5,15.5,16.5,16.5],"CAPEX":[6541.1780784859611,3465.7203995567111,6488.143003158214,7362.120949147512,3505.618976547993,7091.7677332726853,7607.6560642207951,8683.86794678651,1424.6157391029881,7781.7354192278162,5635.97924803974,null,3089.7495715473974,5429.8444473564505,null,8313.353836453929,2650.7373369286584,10165.574858619682,null,9157.3683014883736,null,4326.3873020412375,9248.9218274080176,null,null,3786.6957365013695,7537.6448970338861,8500.637470601243,5132.47390068234,10753.822430987442,10558.840532021835],"HeatSust":[124.56394682022697,0,70.44204901842015,158.54199841160522,89.742885374182435,74.701925480418,126.90664630694967,49.762722598735138,0,120.48184308297493,68.825116586857391,null,0,0,null,85.701631569066862,0,0,null,87.40539327074724,null,0,167.46199799301809,null,null,70.146815275442492,0,0,134.1914067053257,64.549880302659929,0],"PowerSust":[0.052737591010295015,0,0.028894711799159371,0.068914251845437188,0.040497523805045836,0.03179668224197936,0.055558942052614468,0.020000578326455964,0,0.050326975003538756,0.029773498619766983,null,0,0,null,0.034993987387498385,0,0,null,0.036412915446389471,null,0,0.070272909706157932,null,null,0.028272457577980355,0,0,0.0601787401685285,0.026801087276206514,0]},{"Lat":[44.5,45.5,39.5,40.5,44.5,45.5,39.5,40.5,44.5,45.5,43.5,44.5,45.5,46.5,42.5,43.5,44.5,45.5,41.5,42.5,43.5,45.5,46.5,37.5,41.5,42.5,43.5,46.5,41.5,40.5,41.5,39.5,40.5],"Lon":[7.5,7.5,8.5,8.5,8.5,8.5,9.5,9.5,9.5,9.5,10.5,10.5,10.5,10.5,11.5,11.5,11.5,11.5,12.5,12.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,14.5,15.5,15.5,16.5,16.5],"CAPEX":[5741.671542144788,11328.784171991792,3042.1168713650609,5695.118768456151,6462.273284162352,3077.1387774092309,6224.9644466272148,6677.7974551752623,10550.507609508322,7622.4675230594112,1250.4896747272903,6830.5996670591021,4947.1121673052621,null,2712.0997126887528,4766.17254072306,null,7297.2401255273626,2326.7464897801292,8923.0703055234735,null,8038.0934973359617,null,3797.5873083364268,8118.4567389490876,null,null,3323.8604557397048,6616.3435211214655,7461.6327012362908,4505.1486112681441,9439.4183250199058,9268.2684179097032],"HeatSust":[124.56394682022697,92.233054193347087,0,70.44204901842015,158.54199841160522,89.742885374182435,74.701925480418,126.90664630694967,119.0532142639654,49.762722598735138,0,120.48184308297493,68.825116586857391,null,0,0,null,85.701631569066862,0,0,null,87.40539327074724,null,0,167.46199799301809,null,null,70.146815275442492,0,0,134.1914067053257,64.549880302659929,0],"PowerSust":[0.052737591010295015,0.03614106706062109,0,0.028894711799159371,0.068914251845437188,0.040497523805045836,0.03179668224197936,0.055558942052614468,0.049382706467076196,0.020000578326455964,0,0.050326975003538756,0.029773498619766983,null,0,0,null,0.034993987387498385,0,0,null,0.036412915446389471,null,0,0.070272909706157932,null,null,0.028272457577980355,0,0,0.0601787401685285,0.026801087276206514,0]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[55.5,56.5,56.5,56.5,55.5],"Lon":[8.5,8.5,9.5,10.5,11.5],"CAPEX":[11285.005753068986,11181.926265949382,11382.917319308093,9731.7688730755235,11312.097529550878],"HeatSust":[71.533758839181218,72.188362133021684,61.727197154397452,0,70.593242256303185],"PowerSust":[0.029027238332988013,0.029342635738602695,0.025594927925874256,0,0.028610188496733073]},{"Lat":[55.5,56.5,55.5,56.5,56.5,55.5],"Lon":[8.5,8.5,9.5,9.5,10.5,11.5],"CAPEX":[8840.767566416489,8760.6375888838011,10999.881516292093,8906.0052298529317,7636.7544437184642,8861.6683902947352],"HeatSust":[71.533758839181218,72.188362133021684,64.934548877794825,61.727197154397452,0,70.593242256303185],"PowerSust":[0.029027238332988013,0.029342635738602695,0.026225025611007442,0.025594927925874256,0,0.028610188496733073]},{"Lat":[55.5,56.5,55.5,56.5,56.5,57.5,55.5,55.5],"Lon":[8.5,8.5,9.5,9.5,10.5,10.5,11.5,12.5],"CAPEX":[7760.1898217330627,7689.8538660150325,9655.4024231178573,7817.4537015930273,6703.339236102127,10731.75046356687,7778.5360071188134,10493.312091630534],"HeatSust":[71.533758839181218,72.188362133021684,64.934548877794825,61.727197154397452,0,29.800945120691026,70.593242256303185,44.455300592721684],"PowerSust":[0.029027238332988013,0.029342635738602695,0.026225025611007442,0.025594927925874256,0,0.012239965521635445,0.028610188496733073,0.017781249658542251]}]],[[{"Lat":[55.5,56.5,56.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[55.5,56.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,9570.2209296547171,null,null,null,null],"HeatSust":[null,null,null,0,null,null,null,null],"PowerSust":[null,null,null,0,null,null,null,null]},{"Lat":[55.5,56.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,6715.3494195477933,null,null,null,null],"HeatSust":[null,null,null,0,null,null,null,null],"PowerSust":[null,null,null,0,null,null,null,null]},{"Lat":[55.5,56.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,5223.5744208038222,null,null,null,null],"HeatSust":[null,null,null,0,null,null,null,null],"PowerSust":[null,null,null,0,null,null,null,null]},{"Lat":[55.5,56.5,50.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,8925.03042972679,null,3847.8204613572912,null,null,null,null],"HeatSust":[null,null,124.92073161484262,null,0,null,null,null,null],"PowerSust":[null,null,0.05566652389944915,null,0,null,null,null,null]},{"Lat":[55.5,56.5,50.5,55.5,56.5,57.5,51.5,52.5,54.5,55.5,51.5,54.5,55.5,51.5,53.5,52.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-4.5,-4.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-0.5,-0.5,0.5,1.5],"CAPEX":[null,null,6451.5007898527956,10787.045618693277,null,2884.5105701077855,null,null,9147.9596437711261,10574.708369574266,11190.230394834402,10417.913130111076,null,10250.040310804425,9346.553280430333,null,10151.593176817778],"HeatSust":[null,null,124.92073161484262,64.925680295024009,null,0,null,null,51.283985617766859,56.7656397983824,46.934375211968245,0,null,0,85.965739947359651,null,0],"PowerSust":[null,null,0.05566652389944915,0.026075259190025103,null,0,null,null,0.021574651412428481,0.02324893564570038,0.019768609096146663,0,null,0,0.03714885965285708,null,0]},{"Lat":[54.5,55.5,56.5,50.5,55.5,56.5,57.5,50.5,51.5,52.5,54.5,55.5,56.5,57.5,51.5,54.5,55.5,51.5,52.5,51.5,53.5,52.5,52.5],"Lon":[-6.5,-5.5,-5.5,-4.5,-4.5,-4.5,-4.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-1.5,-1.5,-0.5,-0.5,0.5,1.5],"CAPEX":[11575.472188056063,null,null,5100.58735124536,8463.2517307327435,null,2350.0334783902413,9399.3514453559674,null,null,7185.3122647082992,8288.257814053457,10852.138022315432,9501.7597611894544,8755.3815859999868,8159.0821081521362,null,11591.407559139208,11369.918440541232,8037.796695036247,7330.2833750579366,null,7953.1671690738494],"HeatSust":[66.0279074144805,null,null,124.92073161484262,64.925680295024009,null,0,109.54013098814653,null,null,51.283985617766859,56.7656397983824,24.384321213943938,67.863022372539973,46.934375211968245,0,null,0,0,0,85.965739947359651,null,0],"PowerSust":[0.02651018510076026,null,null,0.05566652389944915,0.026075259190025103,null,0,0.045601203355691317,null,null,0.021574651412428481,0.02324893564570038,0.0098603419390112055,0.027940380952441245,0.019768609096146663,0,null,0,0,0,0.03714885965285708,null,0]},{"Lat":[54.5,55.5,56.5,50.5,55.5,56.5,57.5,50.5,51.5,52.5,54.5,55.5,56.5,57.5,51.5,54.5,55.5,51.5,52.5,51.5,52.5,53.5,52.5,52.5],"Lon":[-6.5,-5.5,-5.5,-4.5,-4.5,-4.5,-4.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-3.5,-2.5,-2.5,-2.5,-1.5,-1.5,-0.5,-0.5,-0.5,0.5,1.5],"CAPEX":[10160.64055305976,null,null,4477.1594491810165,7428.8164965542928,null,2062.7966681322837,8250.4998428218041,null,null,6307.0753397450262,7275.2115068429484,9525.7171271781426,8340.3911293217116,7685.2402869591933,7161.8245197267443,null,10174.628196503152,9980.2109594413087,7055.3634210364044,10808.394921851668,6434.3271113280916,null,6981.0778817936061],"HeatSust":[66.0279074144805,null,null,124.92073161484262,64.925680295024009,null,0,109.54013098814653,null,null,51.283985617766859,56.7656397983824,24.384321213943938,67.863022372539973,46.934375211968245,0,null,0,0,0,0,85.965739947359651,null,0],"PowerSust":[0.02651018510076026,null,null,0.05566652389944915,0.026075259190025103,null,0,0.045601203355691317,null,null,0.021574651412428481,0.02324893564570038,0.0098603419390112055,0.027940380952441245,0.019768609096146663,0,null,0,0,0,0,0.03714885965285708,null,0]}]],[[{"Lat":64.5,"Lon":-20.5,"CAPEX":9311.2464145071881,"HeatSust":293.63522216276573,"PowerSust":0.15365559259944336},{"Lat":[65.5,64.5,65.5,64.5],"Lon":[-22.5,-21.5,-21.5,-20.5],"CAPEX":[11233.624428730671,8202.4259597722685,9286.5974138426773,6083.6256658849934],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5,64.5,65.5,64.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-17.5,-17.5,-16.5,-16.5,-14.5],"CAPEX":[7827.0534367146975,5801.7500836725148,6525.9696208974283,4383.5016690855446,9702.70901342663,9891.6391339247366,10839.368382505785,8450.1851639774814,9497.4800888768023,9623.7077173538582,9660.8409899166418,10819.820827576807,10884.815010503047],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,164.16318357228866,0,158.564059377303,0,124.43521521870916,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.062215123404191351]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-18.5,-17.5,-17.5,-16.5,-16.5,-15.5,-14.5],"CAPEX":[6060.8939940247028,4535.2167211363685,5080.9131021156527,3465.3301758768403,7471.2018670557509,7615.198752590788,8326.98984847554,9405.928003140707,6527.8363944792345,7316.4432985860658,7413.51268993868,7439.45992249065,8312.2187687957176,10957.378459286567,8361.20402478111],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,122.8418253884563,164.16318357228866,0,158.564059377303,0,124.43521521870916,117.15661140704627,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.047352538294562235,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.04795869123507765,0.062215123404191351]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-18.5,-17.5,-17.5,-16.5,-16.5,-15.5,-15.5,-14.5],"CAPEX":[4430.67941978394,3368.9229615755021,3748.6174411402926,2622.296590008204,5382.2368092222741,5509.3641280517868,5973.1825461414282,6752.2979818068989,4729.3812541469961,5273.1911535918334,5369.43683697434,5358.1790022363057,5962.2963491521259,9178.2586337624416,7788.9554810169584,5996.8065876533719],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,122.8418253884563,164.16318357228866,0,158.564059377303,0,124.43521521870916,110.32733701296324,117.15661140704627,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.047352538294562235,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.043417552603414358,0.04795869123507765,0.062215123404191351]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-18.5,-17.5,-17.5,-16.5,-16.5,-15.5,-15.5,-14.5],"CAPEX":[3295.0916734511775,2546.8007478888276,2814.5953885421145,2018.4166148957077,3961.9097270040625,4053.9072115858303,4377.714488443673,4927.7142654135514,3502.0428276641546,3884.8292238234753,3955.5082499285568,3944.661881901874,4369.9763441733849,6630.9109552546815,5654.4966757906022,4394.3333574003091],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,122.8418253884563,164.16318357228866,0,158.564059377303,0,124.43521521870916,110.32733701296324,117.15661140704627,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.047352538294562235,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.043417552603414358,0.04795869123507765,0.062215123404191351]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-18.5,-17.5,-17.5,-16.5,-16.5,-15.5,-15.5,-14.5],"CAPEX":[2672.7778416882816,2084.8549027328236,2295.1554973643306,1668.9142431649682,3177.3740650025807,3267.3209019173505,3501.1086225898466,3952.2296631573258,2818.4846156996618,3115.9600914352782,3190.2433235124304,3162.5636791084339,3494.633973665349,5254.8763131227051,4495.0040920588808,3514.0473699220274],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,122.8418253884563,164.16318357228866,0,158.564059377303,0,124.43521521870916,110.32733701296324,117.15661140704627,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.047352538294562235,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.043417552603414358,0.04795869123507765,0.062215123404191351]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-18.5,-17.5,-17.5,-16.5,-16.5,-15.5,-15.5,-14.5],"CAPEX":[2346.0930566270176,1830.029991675877,2014.6262410064469,1464.928381597947,2789.0141544651083,2867.9670873500986,3073.1797090799846,3469.1617186828444,2473.9905741384978,2735.1066075231925,2800.31044612204,2776.0139929962911,3067.4964350536384,4612.5901821543139,3945.5946264610238,3084.5369961705969],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,122.8418253884563,164.16318357228866,0,158.564059377303,0,124.43521521870916,110.32733701296324,117.15661140704627,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.047352538294562235,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.043417552603414358,0.04795869123507765,0.062215123404191351]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":46.5,"Lon":16.5,"CAPEX":11576.56245121159,"HeatSust":159.16235427913463,"PowerSust":0.068016317898611386},{"Lat":46.5,"Lon":16.5,"CAPEX":8314.36341328686,"HeatSust":159.16235427913463,"PowerSust":0.068016317898611386},{"Lat":46.5,"Lon":16.5,"CAPEX":6539.7845664851993,"HeatSust":159.16235427913463,"PowerSust":0.068016317898611386},{"Lat":[46.5,46.5],"Lon":[15.5,16.5],"CAPEX":[10322.456270904788,5740.44835450146],"HeatSust":[154.09018632235623,159.16235427913463],"PowerSust":[0.062523407062037822,0.068016317898611386]}]],[[{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,11155.283970758081,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,64.049929484789189,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,0.025634725659536138,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":48.5,"Lon":21.5,"CAPEX":10796.92848398254,"HeatSust":81.569783989790835,"PowerSust":0.0344383876699136},{"Lat":[48.5,48.5,48.5,48.5],"Lon":[17.5,18.5,19.5,21.5],"CAPEX":[10686.103633014305,10247.848141040033,11343.496452918118,7767.0254499113071],"HeatSust":[90.086224371055081,122.54842423034756,84.467964557659485,81.569783989790835],"PowerSust":[0.037889627313245258,0.051513765866612674,0.033717790760439008,0.0344383876699136]},{"Lat":[48.5,48.5,48.5,48.5],"Lon":[17.5,18.5,19.5,21.5],"CAPEX":[8366.5624519551766,8027.8113262131492,8885.6240217878312,6120.7700912164191],"HeatSust":[90.086224371055081,122.54842423034756,84.467964557659485,81.569783989790835],"PowerSust":[0.037889627313245258,0.051513765866612674,0.033717790760439008,0.0344383876699136]},{"Lat":[48.5,48.5,48.5,48.5],"Lon":[17.5,18.5,19.5,21.5],"CAPEX":[7343.9452281487465,7046.5985307794108,7799.5636211002156,5372.6486310372193],"HeatSust":[90.086224371055081,122.54842423034756,84.467964557659485,81.569783989790835],"PowerSust":[0.037889627313245258,0.051513765866612674,0.033717790760439008,0.0344383876699136]}]],[[{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":[50.5,50.5,50.5,49.5],"Lon":[13.5,14.5,15.5,16.5],"CAPEX":[11360.893698778034,9963.7320637886824,8524.6035209476067,null],"HeatSust":[100.5461188001249,77.8441879856747,100.30184872073551,null],"PowerSust":[0.040362923235730971,0.032134544900304353,0.042519962462128,null]},{"Lat":[50.5,50.5,50.5,49.5,49.5,49.5],"Lon":[13.5,14.5,15.5,16.5,17.5,18.5],"CAPEX":[8899.343997778833,7816.495990018735,6701.3607364952577,null,9830.0162381571972,9353.6019253998384],"HeatSust":[100.5461188001249,77.8441879856747,100.30184872073551,null,75.095842712958586,90.864806661992645],"PowerSust":[0.040362923235730971,0.032134544900304353,0.042519962462128,null,0.030709027698531316,0.037412423744456073]},{"Lat":[49.5,50.5,50.5,49.5,50.5,49.5,49.5,49.5],"Lon":[13.5,13.5,14.5,15.5,15.5,16.5,17.5,18.5],"CAPEX":[11378.23624096839,7811.6066498576092,6861.1115683869912,10868.971648550732,5882.2756042879746,null,8628.5259040848887,8210.3421351968045],"HeatSust":[88.146748193731057,100.5461188001249,77.8441879856747,76.6746178498659,100.30184872073551,null,75.095842712958586,90.864806661992645],"PowerSust":[0.035415428587393036,0.040362923235730971,0.032134544900304353,0.031153232295654417,0.042519962462128,null,0.030709027698531316,0.037412423744456073]}]],[[{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,44.5,43.5,44.5],"Lon":[16.5,17.5,18.5,18.5],"CAPEX":[null,11484.84323896529,null,11203.402196260993],"HeatSust":[null,101.76659889860568,null,114.68708194107802],"PowerSust":[null,0.042082886083116729,null,0.046371044833868023]}]],[[{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":[41.5,41.5],"Lon":[20.5,21.5],"CAPEX":[null,9799.1495790566569],"HeatSust":[null,0],"PowerSust":[null,0]},{"Lat":[41.5,41.5,41.5],"Lon":[20.5,21.5,22.5],"CAPEX":[null,8601.4319745156045,10752.509402070684],"HeatSust":[null,0,0],"PowerSust":[null,0,0]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[45.5,43.5,44.5,45.5,43.5,44.5,44.5],"Lon":[19.5,20.5,20.5,20.5,21.5,21.5,22.5],"CAPEX":[10696.336303562774,9700.7002104198964,10140.427599586124,10825.475045148491,10173.290905189826,8749.94119760984,9218.1677144841451],"HeatSust":[190.52043158185771,200.60006652959569,196.66813253983307,144.928626945719,200.69211282320859,0,75.80585838379865],"PowerSust":[0.080186038065368045,0.080906496208979439,0.083545392313219613,0.059308109719445674,0.084765325809156689,0,0.031805513512506087]},{"Lat":[44.5,45.5,43.5,44.5,45.5,43.5,44.5,42.5,43.5,44.5],"Lon":[19.5,19.5,20.5,20.5,20.5,21.5,21.5,22.5,22.5,22.5],"CAPEX":[10393.257898906861,8376.8640798143169,7621.32190565313,7946.45473624272,8486.8434842238421,7971.49833366707,6877.972685027793,9549.59475445942,11733.142659893885,7238.7267672767475],"HeatSust":[179.53052777529331,190.52043158185771,200.60006652959569,196.66813253983307,144.928626945719,200.69211282320859,0,0,62.912874711655014,75.80585838379865],"PowerSust":[0.072475886055436575,0.080186038065368045,0.080906496208979439,0.083545392313219613,0.059308109719445674,0.084765325809156689,0,0,0.025181968828976879,0.031805513512506087]},{"Lat":[44.5,45.5,43.5,44.5,45.5,43.5,44.5,42.5,43.5,44.5],"Lon":[19.5,19.5,20.5,20.5,20.5,21.5,21.5,22.5,22.5,22.5],"CAPEX":[9122.9244017367455,7352.9877221470588,6689.7929660618374,6975.1858874001482,7449.5247081369516,6997.1684888396749,6037.3008591770313,8382.3794097631489,10299.039485228455,6353.9611645391533],"HeatSust":[179.53052777529331,190.52043158185771,200.60006652959569,196.66813253983307,144.928626945719,200.69211282320859,0,0,62.912874711655014,75.80585838379865],"PowerSust":[0.072475886055436575,0.080186038065368045,0.080906496208979439,0.083545392313219613,0.059308109719445674,0.084765325809156689,0,0,0.025181968828976879,0.031805513512506087]}]],[[{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]}]],[[{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":[42.5,42.5],"Lon":[20.5,21.5],"CAPEX":[null,10285.85264623763],"HeatSust":[null,190.01511824426044],"PowerSust":[null,0.0765165168189448]},{"Lat":[42.5,42.5],"Lon":[20.5,21.5],"CAPEX":[null,9028.646937443873],"HeatSust":[null,190.01511824426044],"PowerSust":[null,0.0765165168189448]}]],[[{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5,47.5,46.5,45.5,43.5,45.5,46.5,47.5,47.5,48.5,48.5],"Lon":[-2.5,-1.5,-0.5,1.5,2.5,3.5,4.5,4.5,4.5,4.5,5.5,5.5,7.5],"CAPEX":[null,null,null,10761.607856825738,11467.690910960624,9862.08560027121,10137.404845217985,9577.7117109153769,10647.330641600427,9229.2395171771841,9020.24569896266,11454.314046203626,9741.2404615321466],"HeatSust":[null,null,null,155.77205253388351,216.21722060085418,130.09217854947082,0,129.38846474224923,172.30228849294505,244.3241449219216,255.93544012557058,162.47136676993154,155.52131650814601],"PowerSust":[null,null,null,0.066606085759113837,0.090830636688757654,0.0561085392250562,0,0.056411238613988855,0.07349683507449549,0.10711623972617214,0.11275458584830628,0.068215606241721211,0.067446228214511308]},{"Lat":[48.5,43.5,47.5,49.5,43.5,45.5,48.5,49.5,47.5,48.5,45.5,47.5,49.5,45.5,46.5,47.5,48.5,49.5,43.5,44.5,45.5,47.5,48.5,43.5,45.5,46.5,47.5,49.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,44.5,45.5,47.5,48.5,48.5],"Lon":[-2.5,-1.5,-1.5,-1.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,1.5,1.5,1.5,2.5,2.5,2.5,2.5,2.5,3.5,3.5,3.5,3.5,3.5,4.5,4.5,4.5,4.5,4.5,5.5,5.5,5.5,5.5,5.5,5.5,5.5,6.5,6.5,6.5,6.5,7.5],"CAPEX":[null,10051.045729784693,null,10865.253307290457,9402.6054039554911,9062.4312889257017,null,11347.958463214085,9427.5180151329023,8674.8029347599877,8903.5734092744933,7742.3096847699908,11537.277244276251,11013.843428156002,8238.4540805492288,8953.2573597240171,11733.899080156049,11051.529590585433,9203.0141016735342,9784.4787714156155,7110.0809250229495,8587.35954972583,11752.2771778955,7305.1739693164991,6910.1818372699772,7661.9674480204412,6665.368781175649,9340.5088782385828,10276.664352065045,10472.711667855148,10896.096425141408,9549.7831425527966,6518.4599154329562,8229.02944855259,9617.3632620968528,10584.508228036379,9150.3133801763142,10678.12714397446,9092.14832727541,7025.19128718042],"HeatSust":[null,102.98980953617722,null,89.915268594007884,121.74900041869613,164.78312264991558,null,71.40663068493123,124.25959874963934,126.17941423324069,155.64737276480656,155.77205253388351,104.68655677498715,96.809104962715324,216.21722060085418,188.00084530248421,105.16721509804816,134.01400287141215,63.338271893013385,157.52602060023605,130.09217854947082,159.73580232983227,113.1716482904077,0,129.38846474224923,172.30228849294505,244.3241449219216,0,0,0,111.15181288452771,166.04452693631572,255.93544012557058,162.47136676993154,61.006292681040563,148.3587196703208,116.37550992360207,131.85276875746791,118.75065017339492,155.52131650814601],"PowerSust":[null,0.043273542093039449,null,0.036374444170051964,0.0514880989931345,0.070241635807015909,null,0.029177569565562996,0.053856736555629794,0.053745074883084873,0.0658812043375488,0.066606085759113837,0.043921221146169531,0.0402501632519034,0.090830636688757654,0.082089085628184344,0.043663284105040771,0.056057138909439676,0.0268790710571605,0.066709308347935967,0.0561085392250562,0.06674370319674082,0.04693977403100065,0,0.056411238613988855,0.07349683507449549,0.10711623972617214,0,0,0,0.046564464198719548,0.07129235603123131,0.11275458584830628,0.068215606241721211,0.025577798434813042,0.059469714335476674,0.047280828110033639,0.055329915861056893,0.051488432644702528,0.067446228214511308]},{"Lat":[48.5,47.5,48.5,43.5,47.5,49.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,43.5,44.5,45.5,46.5,47.5,48.5,42.5,43.5,45.5,46.5,47.5,49.5,42.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,50.5,43.5,44.5,45.5,47.5,48.5,49.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,43.5,44.5,45.5,47.5,48.5,48.5],"Lon":[-3.5,-2.5,-2.5,-1.5,-1.5,-1.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.5,1.5,1.5,1.5,1.5,1.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,3.5,3.5,3.5,3.5,3.5,3.5,4.5,4.5,4.5,4.5,4.5,4.5,4.5,5.5,5.5,5.5,5.5,5.5,5.5,5.5,6.5,6.5,6.5,6.5,6.5,7.5],"CAPEX":[10936.282109464302,11198.385908110109,null,7886.7850997196647,null,8525.8721578775931,7383.8503314191485,10714.917236482343,7121.3111331349073,9602.19689825349,9557.7230913463718,null,8891.3784472213465,11102.466519625375,9881.6752472392145,10057.53058207745,9519.5703735694078,7393.9056698257536,6819.1853597676509,9556.151733178096,10565.713365638603,6996.9637646595856,9536.2358598781284,6102.7643469710765,9024.1511149134658,10291.277681177824,9357.1957501210563,10666.441638655851,8621.5840406628213,6487.8203379372426,7027.3197655083759,9179.1517824154253,8651.1000705584047,10840.175385966144,7228.7192195270163,7669.56309776082,5611.2421899587307,6758.4813675124351,9193.2856010807336,10570.219214297525,5785.3361341086911,9383.6940761212045,5455.8394101888516,6039.9799873624943,5266.8430263139044,9374.3699872639463,7326.8543149700581,8062.1760455094181,8201.90809090735,8530.1013402451226,7488.6190829949255,5152.7783143263869,6480.1740011182092,7546.5992881658531,9939.3966967472334,8297.74746568548,7192.568952149757,8361.6030414744437,7133.9779354563289,5545.7525171390016],"HeatSust":[120.76898385910249,116.3881999035753,null,102.98980953617722,null,89.915268594007884,121.74900041869613,137.68438252270536,164.78312264991558,68.918770937505755,106.52443364347715,null,71.40663068493123,136.3240755800305,136.05734941803718,90.978656196458928,83.71927180211641,124.25959874963934,126.17941423324069,90.868512528924285,125.87277164778016,155.64737276480656,125.47624725816479,155.77205253388351,104.68655677498715,115.05589527615508,0,116.56619868827667,96.809104962715324,216.21722060085418,188.00084530248421,105.16721509804816,134.01400287141215,0,63.338271893013385,157.52602060023605,130.09217854947082,159.73580232983227,113.1716482904077,103.18079005360715,0,104.84682807882504,129.38846474224923,172.30228849294505,244.3241449219216,93.146583023168247,0,0,0,111.15181288452771,166.04452693631572,255.93544012557058,162.47136676993154,61.006292681040563,0,148.3587196703208,116.37550992360207,131.85276875746791,118.75065017339492,155.52131650814601],"PowerSust":[0.0506602472552158,0.047365298648888644,null,0.043273542093039449,null,0.036374444170051964,0.0514880989931345,0.056649794608529695,0.070241635807015909,0.027874593028673875,0.042893985798859724,null,0.029177569565562996,0.055279903043954942,0.056469955433383894,0.037334789904647163,0.034626591974014367,0.053856736555629794,0.053745074883084873,0.037406883104988728,0.051139955796445556,0.0658812043375488,0.051666193771911478,0.066606085759113837,0.043921221146169531,0.046660730945597563,0,0.046905138776673752,0.0402501632519034,0.090830636688757654,0.082089085628184344,0.043663284105040771,0.056057138909439676,0,0.0268790710571605,0.066709308347935967,0.0561085392250562,0.06674370319674082,0.04693977403100065,0.041757473045503708,0,0.04316032119579092,0.056411238613988855,0.07349683507449549,0.10711623972617214,0.038409283422949719,0,0,0,0.046564464198719548,0.07129235603123131,0.11275458584830628,0.068215606241721211,0.025577798434813042,0,0.059469714335476674,0.047280828110033639,0.055329915861056893,0.051488432644702528,0.067446228214511308]},{"Lat":[48.5,48.5,47.5,48.5,43.5,47.5,48.5,49.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,42.5,43.5,45.5,46.5,47.5,49.5,50.5,42.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,50.5,43.5,44.5,45.5,47.5,48.5,49.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,43.5,44.5,45.5,47.5,48.5,48.5],"Lon":[-4.5,-3.5,-2.5,-2.5,-1.5,-1.5,-1.5,-1.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,3.5,3.5,3.5,3.5,3.5,3.5,4.5,4.5,4.5,4.5,4.5,4.5,4.5,5.5,5.5,5.5,5.5,5.5,5.5,5.5,6.5,6.5,6.5,6.5,6.5,7.5],"CAPEX":[10416.016594211311,9599.57656118613,9829.6442804433627,null,6922.8094729616887,null,10424.288262370412,7483.7830362479735,6481.3467559927212,9405.2683836100787,6250.8968545530961,8428.5521677058787,8389.5142469482544,null,7804.6147021679653,9745.4488011895428,8673.8708035483633,8828.2319231295569,8356.0248095278039,6490.1730636827288,5985.6989140174692,11428.202569587511,8388.1349506855549,9274.3012078319152,6141.7480531676729,8370.6533286304257,5356.8436692874939,7921.15900634611,10955.710870070765,9033.4088883275654,8213.4966986227919,9362.7177975857885,7567.7963725368154,5694.8355415366786,6168.3937405523475,8057.2144555222376,7593.7047558364484,9515.2166442572361,6345.1768062122856,6732.1377970021349,4925.3986379202042,5932.4145697228669,8069.62074433424,9278.256321529745,5078.2136557643489,8236.7562219814263,4788.9902253271257,5301.7332340522835,4623.0942436182422,8228.57178562978,6431.3171738999026,7076.7629642300344,7199.416024422012,7487.4952996590628,6573.3099699903923,4522.9712836676918,5688.1237911472654,6624.2034466765808,8724.5371514194867,7283.5412697796364,6313.445066310016,7339.5919899886812,6262.0154355711056,4867.91355094938],"HeatSust":[67.747938686808,120.76898385910249,116.3881999035753,null,102.98980953617722,null,78.656681417089928,89.915268594007884,121.74900041869613,137.68438252270536,164.78312264991558,68.918770937505755,106.52443364347715,null,71.40663068493123,136.3240755800305,136.05734941803718,90.978656196458928,83.71927180211641,124.25959874963934,126.17941423324069,75.405829353323412,90.868512528924285,125.87277164778016,155.64737276480656,125.47624725816479,155.77205253388351,104.68655677498715,0,115.05589527615508,0,116.56619868827667,96.809104962715324,216.21722060085418,188.00084530248421,105.16721509804816,134.01400287141215,0,63.338271893013385,157.52602060023605,130.09217854947082,159.73580232983227,113.1716482904077,103.18079005360715,0,104.84682807882504,129.38846474224923,172.30228849294505,244.3241449219216,93.146583023168247,0,0,0,111.15181288452771,166.04452693631572,255.93544012557058,162.47136676993154,61.006292681040563,0,148.3587196703208,116.37550992360207,131.85276875746791,118.75065017339492,155.52131650814601],"PowerSust":[0.027415824021999578,0.0506602472552158,0.047365298648888644,null,0.043273542093039449,null,0.0326311655568747,0.036374444170051964,0.0514880989931345,0.056649794608529695,0.070241635807015909,0.027874593028673875,0.042893985798859724,null,0.029177569565562996,0.055279903043954942,0.056469955433383894,0.037334789904647163,0.034626591974014367,0.053856736555629794,0.053745074883084873,0.030709488796899807,0.037406883104988728,0.051139955796445556,0.0658812043375488,0.051666193771911478,0.066606085759113837,0.043921221146169531,0,0.046660730945597563,0,0.046905138776673752,0.0402501632519034,0.090830636688757654,0.082089085628184344,0.043663284105040771,0.056057138909439676,0,0.0268790710571605,0.066709308347935967,0.0561085392250562,0.06674370319674082,0.04693977403100065,0.041757473045503708,0,0.04316032119579092,0.056411238613988855,0.07349683507449549,0.10711623972617214,0.038409283422949719,0,0,0,0.046564464198719548,0.07129235603123131,0.11275458584830628,0.068215606241721211,0.025577798434813042,0,0.059469714335476674,0.047280828110033639,0.055329915861056893,0.051488432644702528,0.067446228214511308]}]]],"LCOE50":[[[{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,61.5,64.5,65.5,66.5,78.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,11.5,13.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,3861.9642521428354,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,61.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,63.5,61.5,64.5,65.5,66.5,78.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[7.5,7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,11.5,13.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[null,3830.7149699527758,null,null,null,null,null,null,null,3233.8304672275503,null,null,null,null,3097.4801164006662,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,38.716356361222076,null,null,null,null,null,null,null,47.013329815863635,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,0.016815197658385215,null,null,null,null,null,null,null,0.021666414832391505,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[60.5,60.5,59.5,60.5,61.5,62.5,60.5,61.5,61.5,62.5,61.5,62.5,63.5,61.5,64.5,65.5,66.5,78.5,66.5,68.5,69.5,69.5,69.5,79.5,69.5,69.5,70.5,70.5,70.5,70.5,69.5,70.5,69.5,70.5],"Lon":[5.5,6.5,7.5,7.5,7.5,7.5,8.5,8.5,9.5,9.5,10.5,10.5,10.5,11.5,13.5,13.5,13.5,13.5,14.5,19.5,19.5,20.5,21.5,21.5,23.5,25.5,25.5,26.5,27.5,28.5,29.5,29.5,30.5,30.5],"CAPEX":[3670.7829558055164,3565.7693809519733,3689.2381411738406,null,3362.4993640498528,null,null,null,null,null,null,null,2838.5700775935638,null,null,null,null,2718.8853786432205,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[48.887038921730223,50.105589257523071,60.160559602871956,null,38.716356361222076,null,null,null,null,null,null,null,47.013329815863635,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[0.019489798560901245,0.021606553428581449,0.02523026895908163,null,0.016815197658385215,null,null,null,null,null,null,null,0.021666414832391505,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[58.5,60.5,62.5,63.5,55.5,58.5,59.5,60.5,62.5,63.5,56.5,58.5,61.5,64.5,65.5,58.5,60.5,64.5,65.5,66.5,66.5,60.5,62.5,63.5,64.5,66.5,67.5,63.5,64.5,65.5,66.5,67.5,68.5,63.5,64.5,66.5,67.5,64.5,65.5,67.5,68.5,65.5,66.5,67.5,68.5,66.5,67.5,66.5,67.5],"Lon":[11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5,13.5,13.5,14.5,14.5,14.5,14.5,14.5,15.5,15.5,15.5,15.5,15.5,16.5,17.5,17.5,17.5,17.5,17.5,17.5,18.5,18.5,18.5,18.5,18.5,18.5,19.5,19.5,19.5,19.5,20.5,20.5,20.5,20.5,21.5,21.5,21.5,21.5,22.5,22.5,23.5,23.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[53.5,52.5,53.5,52.5,53.5,54.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,51.5,52.5,53.5,54.5,55.5,53.5,53.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,30.5,31.5,32.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[51.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,50.5,51.5,48.5,49.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,50.5,47.5,48.5,49.5,47.5,48.5,49.5,47.5,48.5,51.5,47.5,47.5,47.5],"Lon":[24.5,25.5,25.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,28.5,28.5,29.5,29.5,29.5,29.5,30.5,30.5,30.5,30.5,31.5,31.5,31.5,32.5,32.5,32.5,33.5,33.5,33.5,34.5,35.5,36.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[54.5,53.5,53.5,53.5,53.5,53.5],"Lon":[17.5,18.5,19.5,20.5,21.5,23.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]}]],[[{"Lat":48.5,"Lon":14.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":48.5,"Lon":14.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":48.5,"Lon":14.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":48.5,"Lon":14.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":48.5,"Lon":14.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":[47.5,48.5],"Lon":[12.5,14.5],"CAPEX":[3060.0175755960972,null],"HeatSust":[170.33404823371092,null],"PowerSust":[0.076233951987499007,null]},{"Lat":[47.5,47.5,47.5,46.5,48.5],"Lon":[11.5,12.5,13.5,14.5,14.5],"CAPEX":[3882.1862437103887,2487.6018890078426,3417.7990547403524,3883.627584371683,null],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,119.01655357087456,null],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.051906195797978651,null]},{"Lat":[47.5,47.5,47.5,46.5,48.5],"Lon":[11.5,12.5,13.5,14.5,14.5],"CAPEX":[3407.6794744559638,2183.5505474585593,3000.0527938408059,3408.9446448210251,null],"HeatSust":[109.53610574572916,170.33404823371092,112.94185355179111,119.01655357087456,null],"PowerSust":[0.043669005729263626,0.076233951987499007,0.050835096945801739,0.051906195797978651,null]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[47.5,46.5],"Lon":[27.5,29.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]}]],[[{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,47.5,44.5,44.5,44.5],"Lon":[24.5,25.5,26.5,27.5,28.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]}]],[[{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[55.5,54.5,54.5,54.5,55.5],"Lon":[22.5,23.5,24.5,25.5,26.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]}]],[[{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[56.5,57.5,56.5],"Lon":[22.5,24.5,27.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]}]],[[{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[58.5,57.5],"Lon":[24.5,26.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]}]],[[{"Lat":50.5,"Lon":8.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":50.5,"Lon":8.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":50.5,"Lon":8.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":50.5,"Lon":8.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":50.5,"Lon":8.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":[50.5,50.5],"Lon":[7.5,8.5],"CAPEX":[3157.326447554572,null],"HeatSust":[85.160392178883427,null],"PowerSust":[0.038451142758912836,null]},{"Lat":[50.5,50.5,49.5,50.5],"Lon":[6.5,7.5,8.5,8.5],"CAPEX":[3582.0455454791181,2564.5911975621366,3195.5463704583576,null],"HeatSust":[86.695209314826442,85.160392178883427,133.14482427635787,null],"PowerSust":[0.035816225635009379,0.038451142758912836,0.056642008731078108,null]},{"Lat":[50.5,50.5,49.5,50.5],"Lon":[6.5,7.5,8.5,8.5],"CAPEX":[3144.2239798957489,2251.1297077675408,2804.9653192000619,null],"HeatSust":[86.695209314826442,85.160392178883427,133.14482427635787,null],"PowerSust":[0.035816225635009379,0.038451142758912836,0.056642008731078108,null]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5],"Lon":[20.5,21.5,22.5,22.5],"CAPEX":[null,null,null,null],"HeatSust":[null,null,null,null],"PowerSust":[null,null,null,null]},{"Lat":[39.5,38.5,36.5,37.5,39.5],"Lon":[20.5,21.5,22.5,22.5,22.5],"CAPEX":[null,null,null,null,3611.3939928236578],"HeatSust":[null,null,null,null,228.59334161849839],"PowerSust":[null,null,null,null,0.10097806161142672]}]],[[{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]}]],[[{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]},{"Lat":[45.5,44.5,45.5,43.5,45.5],"Lon":[14.5,15.5,15.5,16.5,16.5],"CAPEX":[null,null,null,null,null],"HeatSust":[null,null,null,null,null],"PowerSust":[null,null,null,null,null]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":47.5,"Lon":8.5,"CAPEX":3507.6960772436464,"HeatSust":169.87753041795551,"PowerSust":0.080780089298402052},{"Lat":47.5,"Lon":8.5,"CAPEX":2644.7361915271513,"HeatSust":169.87753041795551,"PowerSust":0.080780089298402052},{"Lat":[47.5,46.5,47.5],"Lon":[8.5,9.5,9.5],"CAPEX":[2161.8554200392587,3558.2171286321272,3200.6475440754843],"HeatSust":[169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.080780089298402052,0.044228996035661605,0.059903832184067439]},{"Lat":[47.5,46.5,47.5],"Lon":[8.5,9.5,9.5],"CAPEX":[1897.6189907283413,3123.3080315355119,2809.4429932577868],"HeatSust":[169.87753041795551,99.45974390278495,142.54615643065978],"PowerSust":[0.080780089298402052,0.044228996035661605,0.059903832184067439]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[42.5,36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-7.5,-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[3901.1047811787112,null,null,null,null,null,null,null],"HeatSust":[238.05002225341866,null,null,null,null,null,null,null],"PowerSust":[0.10539271669868776,null,null,null,null,null,null,null]},{"Lat":[42.5,36.5,37.5,43.5,37.5,37.5,37.5,37.5],"Lon":[-7.5,-5.5,-5.5,-5.5,-4.5,-3.5,-2.5,-1.5],"CAPEX":[3424.2856617356115,null,null,null,null,null,null,null],"HeatSust":[238.05002225341866,null,null,null,null,null,null,null],"PowerSust":[0.10539271669868776,null,null,null,null,null,null,null]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[46.5,44.5,43.5,46.5,42.5,43.5],"Lon":[10.5,11.5,12.5,12.5,13.5,13.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[46.5,44.5,43.5,46.5,42.5,43.5],"Lon":[10.5,11.5,12.5,12.5,13.5,13.5],"CAPEX":[null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null]},{"Lat":[43.5,46.5,44.5,43.5,46.5,42.5,43.5],"Lon":[10.5,10.5,11.5,12.5,12.5,13.5,13.5],"CAPEX":[3420.5747406951505,null,null,null,null,null,null],"HeatSust":[0,null,null,null,null,null,null],"PowerSust":[0,null,null,null,null,null,null]},{"Lat":[43.5,46.5,44.5,43.5,46.5,42.5,43.5],"Lon":[10.5,10.5,11.5,12.5,12.5,13.5,13.5],"CAPEX":[2743.616406659502,null,null,null,null,null,null],"HeatSust":[0,null,null,null,null,null,null],"PowerSust":[0,null,null,null,null,null,null]},{"Lat":[43.5,46.5,44.5,43.5,46.5,42.5,43.5],"Lon":[10.5,10.5,11.5,12.5,12.5,13.5,13.5],"CAPEX":[2145.244771656292,null,null,null,null,null,null],"HeatSust":[0,null,null,null,null,null,null],"PowerSust":[0,null,null,null,null,null,null]},{"Lat":[43.5,46.5,42.5,44.5,41.5,43.5,46.5,42.5,43.5],"Lon":[10.5,10.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5],"CAPEX":[1687.50949603198,null,3822.584844802584,null,3264.5917252951413,null,null,null,null],"HeatSust":[0,null,0,null,0,null,null,null,null],"PowerSust":[0,null,0,null,0,null,null,null,null]},{"Lat":[39.5,45.5,43.5,46.5,42.5,44.5,41.5,43.5,46.5,42.5,43.5,46.5],"Lon":[8.5,8.5,10.5,10.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5,13.5],"CAPEX":[3465.7203995567111,3505.618976547993,1424.6157391029881,null,3089.7495715473974,null,2650.7373369286584,null,null,null,null,3786.6957365013695],"HeatSust":[0,89.742885374182435,0,null,0,null,0,null,null,null,null,70.146815275442492],"PowerSust":[0,0.040497523805045836,0,null,0,null,0,null,null,null,null,0.028272457577980355]},{"Lat":[39.5,45.5,43.5,46.5,42.5,44.5,41.5,43.5,46.5,37.5,42.5,43.5,46.5],"Lon":[8.5,8.5,10.5,10.5,11.5,11.5,12.5,12.5,12.5,13.5,13.5,13.5,13.5],"CAPEX":[3042.1168713650609,3077.1387774092309,1250.4896747272903,null,2712.0997126887528,null,2326.7464897801292,null,null,3797.5873083364268,null,null,3323.8604557397048],"HeatSust":[0,89.742885374182435,0,null,0,null,0,null,null,0,null,null,70.146815275442492],"PowerSust":[0,0.040497523805045836,0,null,0,null,0,null,null,0,null,null,0.028272457577980355]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[55.5,56.5,56.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[55.5,56.5,56.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[55.5,56.5,56.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[55.5,56.5,56.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null]},{"Lat":[55.5,56.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,3847.8204613572912,null,null,null,null],"HeatSust":[null,null,null,0,null,null,null,null],"PowerSust":[null,null,null,0,null,null,null,null]},{"Lat":[55.5,56.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,2884.5105701077855,null,null,null,null],"HeatSust":[null,null,null,0,null,null,null,null],"PowerSust":[null,null,null,0,null,null,null,null]},{"Lat":[55.5,56.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,2350.0334783902413,null,null,null,null],"HeatSust":[null,null,null,0,null,null,null,null],"PowerSust":[null,null,null,0,null,null,null,null]},{"Lat":[55.5,56.5,56.5,57.5,51.5,52.5,55.5,52.5],"Lon":[-5.5,-5.5,-4.5,-4.5,-3.5,-3.5,-2.5,0.5],"CAPEX":[null,null,null,2062.7966681322837,null,null,null,null],"HeatSust":[null,null,null,0,null,null,null,null],"PowerSust":[null,null,null,0,null,null,null,null]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":64.5,"Lon":-20.5,"CAPEX":3465.3301758768403,"HeatSust":293.63522216276573,"PowerSust":0.15365559259944336},{"Lat":[64.5,65.5,64.5],"Lon":[-21.5,-21.5,-20.5],"CAPEX":[3368.9229615755021,3748.6174411402926,2622.296590008204],"HeatSust":[254.16430337715855,201.88526057110826,293.63522216276573],"PowerSust":[0.12101697807611003,0.092370138710358637,0.15365559259944336]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-18.5,-17.5],"CAPEX":[3295.0916734511775,2546.8007478888276,2814.5953885421145,2018.4166148957077,3502.0428276641546,3884.8292238234753],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,164.16318357228866,0],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.077146998688386884,0]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5,64.5,65.5,64.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-17.5,-17.5,-16.5,-16.5,-14.5],"CAPEX":[2672.7778416882816,2084.8549027328236,2295.1554973643306,1668.9142431649682,3177.3740650025807,3267.3209019173505,3501.1086225898466,2818.4846156996618,3115.9600914352782,3190.2433235124304,3162.5636791084339,3494.633973665349,3514.0473699220274],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,164.16318357228866,0,158.564059377303,0,124.43521521870916,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.062215123404191351]},{"Lat":[65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,64.5,65.5,65.5],"Lon":[-22.5,-21.5,-21.5,-20.5,-20.5,-19.5,-19.5,-18.5,-18.5,-17.5,-17.5,-16.5,-16.5,-14.5],"CAPEX":[2346.0930566270176,1830.029991675877,2014.6262410064469,1464.928381597947,2789.0141544651083,2867.9670873500986,3073.1797090799846,3469.1617186828444,2473.9905741384978,2735.1066075231925,2800.31044612204,2776.0139929962911,3067.4964350536384,3084.5369961705969],"HeatSust":[197.42383748461498,254.16430337715855,201.88526057110826,293.63522216276573,150.93461110484992,191.61076740133495,141.61693094415654,122.8418253884563,164.16318357228866,0,158.564059377303,0,124.43521521870916,141.33136745128635],"PowerSust":[0.086130065215834523,0.12101697807611003,0.092370138710358637,0.15365559259944336,0.06882560908578271,0.077713946700087536,0.062417031504409227,0.047352538294562235,0.077146998688386884,0,0.064832051018036269,0,0.05447279233241311,0.062215123404191351]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{"Lat":[61.5,62.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,68.5,60.5,61.5,62.5,63.5,64.5,66.5,67.5,68.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,69.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,62.5],"Lon":[21.5,21.5,22.5,22.5,22.5,22.5,23.5,23.5,23.5,23.5,23.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,24.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,27.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,28.5,29.5,29.5,29.5,29.5,29.5,29.5,29.5,30.5],"CAPEX":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"HeatSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"PowerSust":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":49.5,"Lon":16.5,"CAPEX":null,"HeatSust":null,"PowerSust":null}]],[[{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[44.5,43.5],"Lon":[16.5,18.5],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]}]],[[{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":41.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null}]],[[{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]},{"Lat":[],"Lon":[],"CAPEX":[],"HeatSust":[],"PowerSust":[]}]],[[{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]},{"Lat":[],"Lon":[],"CAPEX":[null,null],"HeatSust":[null,null],"PowerSust":[null,null]}]],[[{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null},{"Lat":42.5,"Lon":20.5,"CAPEX":null,"HeatSust":null,"PowerSust":null}]],[[{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]},{"Lat":[48.5,47.5,48.5],"Lon":[-2.5,-1.5,-0.5],"CAPEX":[null,null,null],"HeatSust":[null,null,null],"PowerSust":[null,null,null]}]]]} From 7eba0ba36d3ecd642c8dfb5788632f262e7cb523 Mon Sep 17 00:00:00 2001 From: LukasFrankenQ Date: Sun, 2 Jun 2024 13:14:31 +0100 Subject: [PATCH 41/63] adjusted and added colours for EGS --- config/config.default.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index a0b44cb4..533c1e5d 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -1192,7 +1192,8 @@ plotting: other: '#000000' geothermal: '#ba91b1' geothermal heat: '#ba91b1' - geothermal organic rankine cycle: '#ba91b1' + geothermal district heat: '#d19D00' + geothermal organic rankine cycle: '#ffbf00' AC: "#70af1d" AC-AC: "#70af1d" AC line: "#70af1d" From 4a6b5c662cf47ac089b1ecf2cbb99d8a5ea23a03 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 19:48:47 +0000 Subject: [PATCH 42/63] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/fsfe/reuse-tool: v3.0.2 → v3.1.0a1](https://github.com/fsfe/reuse-tool/compare/v3.0.2...v3.1.0a1) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 37c781c8..cb2d98fd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -87,6 +87,6 @@ repos: # Check for FSFE REUSE compliance (licensing) - repo: https://github.com/fsfe/reuse-tool - rev: v3.0.2 + rev: v3.1.0a1 hooks: - id: reuse From 4ceb397de0a56e1d57686dc9430f7baee5f5859d Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Tue, 4 Jun 2024 13:56:54 +0200 Subject: [PATCH 43/63] skip MD for synthetic load data --- scripts/build_electricity_demand.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_electricity_demand.py b/scripts/build_electricity_demand.py index fc8af372..622fdafa 100755 --- a/scripts/build_electricity_demand.py +++ b/scripts/build_electricity_demand.py @@ -312,7 +312,7 @@ if __name__ == "__main__": fn = snakemake.input.synthetic synthetic_load = pd.read_csv(fn, index_col=0, parse_dates=True) # "UA" does not appear in synthetic load data - countries = list(set(countries) - set(["UA"])) + countries = list(set(countries) - set(["UA", "MD"])) synthetic_load = synthetic_load.loc[snapshots, countries] load = load.combine_first(synthetic_load) From d62e959c85cd6b68eeb90ac639ca8b4b7cc31d17 Mon Sep 17 00:00:00 2001 From: Toni Seibold <153275395+toniseibold@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:02:56 +0200 Subject: [PATCH 44/63] Fix offshore wind capacity by adding it as offwind-AC (#1089) * Fix existing offshore wind capacity by adding it as offwind-ac --------- Co-authored-by: Fabian Neumann --- scripts/add_existing_baseyear.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/scripts/add_existing_baseyear.py b/scripts/add_existing_baseyear.py index 8b8ea6b0..4e6f5dda 100644 --- a/scripts/add_existing_baseyear.py +++ b/scripts/add_existing_baseyear.py @@ -61,7 +61,7 @@ def add_existing_renewables(df_agg, costs): Append existing renewables to the df_agg pd.DataFrame with the conventional power plants. """ - tech_map = {"solar": "PV", "onwind": "Onshore", "offwind": "Offshore"} + tech_map = {"solar": "PV", "onwind": "Onshore", "offwind-ac": "Offshore"} countries = snakemake.config["countries"] # noqa: F841 irena = pm.data.IRENASTAT().powerplant.convert_country_to_alpha2() @@ -109,12 +109,13 @@ def add_existing_renewables(df_agg, costs): name = f"{node}-{carrier}-{year}" capacity = nodal_df.loc[node, year] if capacity > 0.0: + cost_key = carrier.split("-")[0] df_agg.at[name, "Fueltype"] = carrier df_agg.at[name, "Capacity"] = capacity df_agg.at[name, "DateIn"] = year - df_agg.at[name, "lifetime"] = costs.at[carrier, "lifetime"] + df_agg.at[name, "lifetime"] = costs.at[cost_key, "lifetime"] df_agg.at[name, "DateOut"] = ( - year + costs.at[carrier, "lifetime"] - 1 + year + costs.at[cost_key, "lifetime"] - 1 ) df_agg.at[name, "cluster_bus"] = node @@ -254,7 +255,8 @@ def add_power_capacities_installed_before_baseyear(n, grouping_years, costs, bas name_suffix = f" {generator}{suffix}-{grouping_year}" name_suffix_by = f" {generator}{suffix}-{baseyear}" asset_i = capacity.index + name_suffix - if generator in ["solar", "onwind", "offwind"]: + if generator in ["solar", "onwind", "offwind-ac"]: + cost_key = generator.split("-")[0] # to consider electricity grid connection costs or a split between # solar utility and rooftop as well, rather take cost assumptions # from existing network than from the cost database @@ -299,10 +301,10 @@ def add_power_capacities_installed_before_baseyear(n, grouping_years, costs, bas / len(inv_ind), # split among regions in a country marginal_cost=marginal_cost, capital_cost=capital_cost, - efficiency=costs.at[generator, "efficiency"], + efficiency=costs.at[cost_key, "efficiency"], p_max_pu=p_max_pu, build_year=grouping_year, - lifetime=costs.at[generator, "lifetime"], + lifetime=costs.at[cost_key, "lifetime"], ) else: @@ -318,10 +320,10 @@ def add_power_capacities_installed_before_baseyear(n, grouping_years, costs, bas p_nom=new_capacity, marginal_cost=marginal_cost, capital_cost=capital_cost, - efficiency=costs.at[generator, "efficiency"], + efficiency=costs.at[cost_key, "efficiency"], p_max_pu=p_max_pu.rename(columns=n.generators.bus), build_year=grouping_year, - lifetime=costs.at[generator, "lifetime"], + lifetime=costs.at[cost_key, "lifetime"], ) else: @@ -594,13 +596,13 @@ if __name__ == "__main__": snakemake = mock_snakemake( "add_existing_baseyear", - configfiles="config/test/config.myopic.yaml", + configfiles="config/config.yaml", simpl="", - clusters="37", - ll="v1.0", + clusters="20", + ll="v1.5", opts="", - sector_opts="8760-T-H-B-I-A-dist1", - planning_horizons=2020, + sector_opts="none", + planning_horizons=2030, ) configure_logging(snakemake) From 180d93951dc8c8b1cca35568f8ed4ca74f5abe42 Mon Sep 17 00:00:00 2001 From: Toni Seibold <153275395+toniseibold@users.noreply.github.com> Date: Wed, 5 Jun 2024 15:02:44 +0200 Subject: [PATCH 45/63] documentation for industry rules (#1086) * documentation for industry rules --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- scripts/build_ammonia_production.py | 15 ++++ scripts/build_industrial_distribution_key.py | 30 ++++++++ ...ustrial_energy_demand_per_country_today.py | 54 ++++++++++++++ ...build_industrial_energy_demand_per_node.py | 30 ++++++++ ...industrial_energy_demand_per_node_today.py | 19 +++++ ...build_industrial_production_per_country.py | 57 ++++++++++++++- ...ustrial_production_per_country_tomorrow.py | 53 ++++++++++++++ .../build_industrial_production_per_node.py | 19 +++++ scripts/build_industry_sector_ratios.py | 44 +++++++++++- ...ild_industry_sector_ratios_intermediate.py | 71 +++++++++++++++++++ 10 files changed, 390 insertions(+), 2 deletions(-) diff --git a/scripts/build_ammonia_production.py b/scripts/build_ammonia_production.py index 84d547da..37692f2f 100644 --- a/scripts/build_ammonia_production.py +++ b/scripts/build_ammonia_production.py @@ -4,6 +4,21 @@ # SPDX-License-Identifier: MIT """ Build historical annual ammonia production per country in ktonNH3/a. + +Inputs +------- + +- ``data/bundle-sector/myb1-2017-nitro.xls`` + +Outputs +------- + +- ``resources/ammonia_production.csv`` + +Description +------- + +This functions takes data from the `Minerals Yearbook `_ (June 2024) published by the US Geological Survey (USGS) and the National Minerals Information Center and extracts the annual ammonia production per country in ktonN/a. The data is converted to ktonNH3/a. """ import country_converter as coco diff --git a/scripts/build_industrial_distribution_key.py b/scripts/build_industrial_distribution_key.py index 7cba0af5..bfbba35e 100644 --- a/scripts/build_industrial_distribution_key.py +++ b/scripts/build_industrial_distribution_key.py @@ -4,6 +4,36 @@ # SPDX-License-Identifier: MIT """ Build spatial distribution of industries from Hotmaps database. + +Inputs +------- + +- ``resources/regions_onshore_elec_s{simpl}_{clusters}.geojson`` +- ``resources/pop_layout_elec_s{simpl}_{clusters}.csv`` + +Outputs +------- + +- ``resources/industrial_distribution_key_elec_s{simpl}_{clusters}.csv`` + +Description +------- + +This rule uses the `Hotmaps database `. After removing entries without valid locations, it assigns each industrial site to a bus region based on its location. +Then, it calculates the nodal distribution key for each sector based on the emissions of the industrial sites in each region. This leads to a distribution key of 1 if there is only one bus per country and <1 if there are multiple buses per country. The sum over buses of one country is 1. + +The following subcategories of industry are considered: +- Iron and steel +- Cement +- Refineries +- Paper and printing +- Chemical industry +- Glass +- Non-ferrous metals +- Non-metallic mineral products +- Other non-classified +Furthermore, the population distribution is added +- Population """ import logging diff --git a/scripts/build_industrial_energy_demand_per_country_today.py b/scripts/build_industrial_energy_demand_per_country_today.py index 8129177a..9c8f2e98 100644 --- a/scripts/build_industrial_energy_demand_per_country_today.py +++ b/scripts/build_industrial_energy_demand_per_country_today.py @@ -4,6 +4,60 @@ # SPDX-License-Identifier: MIT """ Build industrial energy demand per country. + +Inputs +------- + +- ``data/bundle/jrc-idees-2015`` +- ``industrial_production_per_country.csv`` + +Outputs +------- + +- ``resources/industrial_energy_demand_per_country_today.csv`` + +Description +------- + +This rule uses the industrial_production_per_country.csv file and the JRC-IDEES data to derive an energy demand per country and sector. If the country is not in the EU28, an average energy demand depending on the production volume is derived. +For each country and each subcategory of + +- Alumina production +- Aluminium - primary production +- Aluminium - secondary production +- Ammonia +- Cement +- Ceramics & other NMM +- Chlorine +- Electric arc +- Food, beverages and tobacco +- Glass production +- HVC +- Integrated steelworks +- Machinery Equipment +- Methanol +- Other Industrial Sectors +- Other chemicals +- Other non-ferrous metals +- Paper production +- Pharmaceutical products etc. +- Printing and media reproduction +- Pulp production +- Textiles and leather +- Transport Equipment +- Wood and wood products + +the output file contains the energy demand in TWh/a for the following carriers + +- biomass +- electricity +- gas +- heat +- hydrogen +- liquid +- other +- solid +- waste """ import multiprocessing as mp diff --git a/scripts/build_industrial_energy_demand_per_node.py b/scripts/build_industrial_energy_demand_per_node.py index ce72ea7a..eb022dae 100644 --- a/scripts/build_industrial_energy_demand_per_node.py +++ b/scripts/build_industrial_energy_demand_per_node.py @@ -4,6 +4,36 @@ # SPDX-License-Identifier: MIT """ Build industrial energy demand per model region. + +Inputs +------ + +- ``resources/industrial_energy_demand_today_elec_s{simpl}_{clusters}.csv`` +- ``resources/industry_sector_ratios_{planning_horizons}.csv`` +- ``resources/industrial_production_elec_s{simpl}_{clusters}_{planning_horizons}.csv`` + +Outputs +------- + +- ``resources/industrial_energy_demand_elec_s{simpl}_{clusters}_{planning_horizons}.csv`` + +Description +------- +This rule aggregates the energy demand of the industrial sectors per model region. +For each bus, the following carriers are considered: +- electricity +- coal +- coke +- solid biomass +- methane +- hydrogen +- low-temperature heat +- naphtha +- ammonia +- process emission +- process emission from feedstock + +which can later be used as values for the industry load. """ import pandas as pd diff --git a/scripts/build_industrial_energy_demand_per_node_today.py b/scripts/build_industrial_energy_demand_per_node_today.py index 8b2b70a0..7a1ee7ac 100644 --- a/scripts/build_industrial_energy_demand_per_node_today.py +++ b/scripts/build_industrial_energy_demand_per_node_today.py @@ -4,6 +4,25 @@ # SPDX-License-Identifier: MIT """ Build industrial energy demand per model region. + +Inputs +------- + +- ``resources/industrial_distribution_key_elec_s{simpl}_{clusters}.csv`` +- ``resources/industrial_energy_demand_per_country_today.csv`` + +Outputs +------- + +- ``resources/industrial_energy_demand_per_node_today_elec_s{simpl}_{clusters}.csv`` + +Description +------- + +This rule maps the industrial energy demand per country `industrial_energy_demand_per_country_today.csv` to each bus region. +The energy demand per country is multiplied by the mapping value from the file ``industrial_distribution_key_elec_s{simpl}_{clusters}.csv`` between 0 and 1 to get the industrial energy demand per bus. + +The unit of the energy demand is TWh/a. """ from itertools import product diff --git a/scripts/build_industrial_production_per_country.py b/scripts/build_industrial_production_per_country.py index 5c14b065..45806205 100644 --- a/scripts/build_industrial_production_per_country.py +++ b/scripts/build_industrial_production_per_country.py @@ -3,7 +3,62 @@ # # SPDX-License-Identifier: MIT """ -Build industrial production per country. +This rule builds the historical industrial production per country. + +Relevant Settings +----------------- + +.. code:: yaml + + countries: +.. + +Inputs +------- +- ``resources/ammonia_production.csv`` +- ``data/bundle-sector/jrc-idees-2015`` +- ``data/eurostat`` + +Outputs +------- + +- ``resources/industrial_production_per_country.csv`` + +Description +------- + +The industrial production is taken from the `JRC-IDEES `. +This dataset provides detailed information about the consumption of energy for various processes. +If the country is not part of the EU28, the energy consumption in the industrial sectors is taken from the `Eurostat ` dataset. The industrial production is calculated for the year specified in the config["industry"]["reference_year"]. + +The ammonia production is provided by the rule `build_ammonia_production `. Since Switzerland is not part of the EU28 nor reported by eurostat, the energy consumption in the industrial sectors is taken from the `BFE dataset. +After the industrial production is calculated, the basic chemicals are separated into ammonia, chlorine, methanol and HVC. The production of these chemicals is assumed to be proportional to the production of basic chemicals without ammonia. + +The following subcategories [kton/a] are considered: +- Electric arc +- Integrated steelworks +- Other chemicals +- Pharmaceutical products etc. +- Cement +- Ceramics & other NMM +- Glass production +- Pulp production +- Paper production +- Printing and media reproduction +- Food, beverages and tobacco +- Alumina production +- Aluminium - primary production +- Aluminium - secondary production +- Other non-ferrous metals +- Transport Equipment +- Machinery Equipment +- Textiles and leather +- Wood and wood products +- Other Industrial Sectors +- Ammonia +- HVC +- Chlorine +- Methanol """ import logging diff --git a/scripts/build_industrial_production_per_country_tomorrow.py b/scripts/build_industrial_production_per_country_tomorrow.py index a8b6c312..9bcb7e5a 100644 --- a/scripts/build_industrial_production_per_country_tomorrow.py +++ b/scripts/build_industrial_production_per_country_tomorrow.py @@ -4,6 +4,59 @@ # SPDX-License-Identifier: MIT """ Build future industrial production per country. + +Relevant Settings +----------------- + +.. code:: yaml + + industry: + St_primary_fraction: + DRI_fraction: + Al_primary_fraction: + HVC_primary_fraction: + HVC_mechanical_recycling_fraction: + HVC_chemical_recycling_fraction: +.. seealso:: + Documentation of the configuration file ``config/config.yaml`` at + :ref:`industry` + +Inputs +------- + +- ``resources/industrial_production_per_country.csv`` + +Outputs +------- + +- ``resources/industrial_production_per_country_tomorrow_{planning_horizons}.csv`` + +Description +------- + +This rule uses the ``industrial_production_per_country.csv`` file and the expected recycling rates to calculate the future production of the industrial sectors. + +**St_primary_fraction** +The fraction of steel that is coming from primary production. This is more energy intensive than recycling steel (secondary production). + +**DRI_fraction** +The fraction of primary steel that is produced in DRI plants. + +**Al_primary_fraction** +The fraction of aluminium that is coming from primary production. This is more energy intensive than recycling aluminium (secondary production). + +**HVC_primary_fraction** +The fraction of high value chemicals that are coming from primary production (crude oil or Fischer Tropsch). + +**HVC_mechanical_recycling_fraction** +The fraction of high value chemicals that are coming from mechanical recycling. + +**HVC_chemical_recycling_fraction** +The fraction of high value chemicals that are coming from chemical recycling. + +If not already present, the information is added as new column in the output file. + +The unit of the production is kt/a. """ import pandas as pd diff --git a/scripts/build_industrial_production_per_node.py b/scripts/build_industrial_production_per_node.py index 1eeecbae..d3edfa45 100644 --- a/scripts/build_industrial_production_per_node.py +++ b/scripts/build_industrial_production_per_node.py @@ -4,6 +4,25 @@ # SPDX-License-Identifier: MIT """ Build industrial production per model region. + +Inputs +------- + +- ``resources/industrial_distribution_key_elec_s{simpl}_{clusters}.csv`` +- ``resources/industrial_production_per_country_tomorrow_{planning_horizons}.csv`` + +Outputs +------- + +- ``resources/industrial_production_per_node_elec_s{simpl}_{clusters}_{planning_horizons}.csv`` + +Description +------- + +This rule maps the industrial production per country from a certain time horizon to each bus region. +The mapping file provides a value between 0 and 1 for each bus and industry subcategory, indicating the share of the country's production of that sector in that bus. +The industrial production per country is multiplied by the mapping value to get the industrial production per bus. +The unit of the production is kt/a. """ from itertools import product diff --git a/scripts/build_industry_sector_ratios.py b/scripts/build_industry_sector_ratios.py index 06c8ecb7..b7a62d91 100644 --- a/scripts/build_industry_sector_ratios.py +++ b/scripts/build_industry_sector_ratios.py @@ -3,7 +3,49 @@ # # SPDX-License-Identifier: MIT """ -Build specific energy consumption by carrier and industries. +Build best case specific energy consumption by carrier and category. + +Relevant Settings +----------------- + +.. code:: yaml + + industry: + ammonia: +.. + +Inputs +------- +- ``resources/ammonia_production.csv`` +- ``data/bundle-sector/jrc-idees-2015`` + +Outputs +------- + +- ``resources/industry_sector_ratios.csv`` + +Description +------- + +This script uses the `JRC-IDEES ` data to calculate an EU28 average specific energy consumption by carrier and industries. +The industries are according to the rule `industrial_production_per_country `. + +The following carriers are considered: +- elec +- coal +- coke +- biomass +- methane +- hydrogen +- heat +- naphtha +- process emission +- process emission from feedstock +- (ammonia) + +If the `config["industry"]["ammonia"] ` is set to true the ammonia demand is not converted to hydrogen and electricity but is considered as a separate carrier. + +The unit of the specific energy consumption is MWh/t material and tCO2/t material for process emissions. """ import pandas as pd diff --git a/scripts/build_industry_sector_ratios_intermediate.py b/scripts/build_industry_sector_ratios_intermediate.py index a9cda852..5fe042ab 100644 --- a/scripts/build_industry_sector_ratios_intermediate.py +++ b/scripts/build_industry_sector_ratios_intermediate.py @@ -6,6 +6,77 @@ Build specific energy consumption by carrier and industries and by country, that interpolates between the current average energy consumption (from 2015-2020) and the ideal future best-in-class consumption. + +Relevant Settings +----------------- + +.. code:: yaml + + industry: + sector_ratios_fraction_future: + ammonia: + +Inputs +------ + +- ``resources/industry_sector_ratios.csv`` +- ``resources/industrial_energy_demand_per_country_today.csv`` +- ``resources/industrial_production_per_country.csv`` + +Outputs +------- + +- ``resources/industry_sector_ratios_{planning_horizons}.csv`` + +Description +------- + +The config["industry"]["sector_ratios_fraction_future"] parameter determines the progress towards the future best-in-class consumption. +For each bus, the following industry subcategories + +- Electric arc +- DRI + Electric arc +- Integrated steelworks +- HVC +- HVC (mechanical recycling) +- HVC (chemical recycling) +- Ammonia +- Chlorine +- Methanol +- Other chemicals +- Pharmaceutical products etc. +- Cement +- Ceramics & other NMM +- Glass production +- Pulp production +- Paper production +- Printing and media reproduction +- Food, beverages and tobacco +- Alumina production +- Aluminium - primary production +- Aluminium - secondary production +- Other non-ferrous metals +- Transport Equipment +- Machinery Equipment +- Textiles and leather +- Wood and wood products +- Other Industrial Sectors + +with the following carriers are considered: + +- elec +- coal +- coke +- biomass +- methane +- hydrogen +- heat +- naphtha +- process emission +- process emission from feedstock +- (ammonia) + +Unit of the output file is MWh/t. """ import pandas as pd From 136442b87cf0bfec6dee06f52a8c6f1363c93016 Mon Sep 17 00:00:00 2001 From: Michael Lindner Date: Fri, 7 Jun 2024 14:20:58 +0200 Subject: [PATCH 46/63] revert hotfix for #1016 --- scripts/solve_network.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 65dae0c4..3212c2ff 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -132,9 +132,7 @@ def _add_land_use_constraint(n): "offwind-dc", "offwind-float", ]: - extendable_i = (n.generators.carrier == carrier) & n.generators.p_nom_extendable - n.generators.loc[extendable_i, "p_nom_min"] = 0 - + ext_i = (n.generators.carrier == carrier) & ~n.generators.p_nom_extendable existing = ( n.generators.loc[ext_i, "p_nom"] @@ -174,9 +172,7 @@ def _add_land_use_constraint_m(n, planning_horizons, config): "offwind-ac", "offwind-dc", ]: - extendable_i = (n.generators.carrier == carrier) & n.generators.p_nom_extendable - n.generators.loc[extendable_i, "p_nom_min"] = 0 - + existing = n.generators.loc[n.generators.carrier == carrier, "p_nom"] ind = list( {i.split(sep=" ")[0] + " " + i.split(sep=" ")[1] for i in existing.index} From bcef24f913f476081780b6d97090b304187bfff2 Mon Sep 17 00:00:00 2001 From: Michael Lindner Date: Fri, 7 Jun 2024 14:32:14 +0200 Subject: [PATCH 47/63] add release note --- doc/release_notes.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index efb9deb6..988b8803 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -10,6 +10,8 @@ Release Notes Upcoming Release ================ +* Reverted outdated hotfix for doubled renewable capacity in myopic optimization. + * Added Enhanced Geothermal Systems for generation of electricity and district heat. Cost and available capacity assumptions based on `Aghahosseini et al. (2020) `__. From 47889d728f50b5a200c41282973740926a294aa4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 7 Jun 2024 12:34:49 +0000 Subject: [PATCH 48/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/solve_network.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 3212c2ff..ba2fac7f 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -132,7 +132,7 @@ def _add_land_use_constraint(n): "offwind-dc", "offwind-float", ]: - + ext_i = (n.generators.carrier == carrier) & ~n.generators.p_nom_extendable existing = ( n.generators.loc[ext_i, "p_nom"] @@ -172,7 +172,7 @@ def _add_land_use_constraint_m(n, planning_horizons, config): "offwind-ac", "offwind-dc", ]: - + existing = n.generators.loc[n.generators.carrier == carrier, "p_nom"] ind = list( {i.split(sep=" ")[0] + " " + i.split(sep=" ")[1] for i in existing.index} From c24b7f657b97a2874ca9447f9ed939e7d925bec2 Mon Sep 17 00:00:00 2001 From: Michael Lindner Date: Fri, 7 Jun 2024 17:59:43 +0200 Subject: [PATCH 49/63] set generator baseyear p_nom to p_nom_min --- scripts/add_existing_baseyear.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/add_existing_baseyear.py b/scripts/add_existing_baseyear.py index 4e6f5dda..83ba91e4 100644 --- a/scripts/add_existing_baseyear.py +++ b/scripts/add_existing_baseyear.py @@ -272,9 +272,11 @@ def add_power_capacities_installed_before_baseyear(n, grouping_years, costs, bas # this is for the year 2020 if not already_build.empty: - n.generators.loc[already_build, "p_nom_min"] = capacity.loc[ - already_build.str.replace(name_suffix, "") - ].values + n.generators.loc[already_build, "p_nom"] = \ + n.generators.loc[already_build, "p_nom_min"] = \ + capacity.loc[ + already_build.str.replace(name_suffix, "") + ].values new_capacity = capacity.loc[new_build.str.replace(name_suffix, "")] if "m" in snakemake.wildcards.clusters: From 5168b3fe0b66230e9aadc5a843a27d921b7ed956 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:01:59 +0000 Subject: [PATCH 50/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/add_existing_baseyear.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/scripts/add_existing_baseyear.py b/scripts/add_existing_baseyear.py index 83ba91e4..a209e934 100644 --- a/scripts/add_existing_baseyear.py +++ b/scripts/add_existing_baseyear.py @@ -272,11 +272,9 @@ def add_power_capacities_installed_before_baseyear(n, grouping_years, costs, bas # this is for the year 2020 if not already_build.empty: - n.generators.loc[already_build, "p_nom"] = \ - n.generators.loc[already_build, "p_nom_min"] = \ - capacity.loc[ - already_build.str.replace(name_suffix, "") - ].values + n.generators.loc[already_build, "p_nom"] = n.generators.loc[ + already_build, "p_nom_min" + ] = capacity.loc[already_build.str.replace(name_suffix, "")].values new_capacity = capacity.loc[new_build.str.replace(name_suffix, "")] if "m" in snakemake.wildcards.clusters: From a4a048f1292a013669afe7e679323441a6c4778b Mon Sep 17 00:00:00 2001 From: Michael Lindner Date: Mon, 10 Jun 2024 11:21:43 +0200 Subject: [PATCH 51/63] add release note --- doc/release_notes.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 988b8803..ae003d07 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -10,6 +10,8 @@ Release Notes Upcoming Release ================ +* Set p_nom = p_nom_min for generators with baseyear == grouping_year in add_existing_baseyear. This has no effect on the optimization but helps n.statistics to correctly report already installed capacities. + * Reverted outdated hotfix for doubled renewable capacity in myopic optimization. * Added Enhanced Geothermal Systems for generation of electricity and district heat. From 0db78a93e641f0bdccb64bc0ac6bbfba9f010a3e Mon Sep 17 00:00:00 2001 From: Bobby Xiong Date: Tue, 11 Jun 2024 15:10:12 +0200 Subject: [PATCH 52/63] Fixed bug which generated empty pdfs when calling plot_summary from CI or snakemake. Using .svg exports instead. --- rules/postprocess.smk | 6 +++--- scripts/plot_summary.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/rules/postprocess.smk b/rules/postprocess.smk index 39fd46c9..edeff1ef 100644 --- a/rules/postprocess.smk +++ b/rules/postprocess.smk @@ -233,9 +233,9 @@ rule plot_summary: eurostat="data/eurostat/Balances-April2023", co2="data/bundle/eea/UNFCCC_v23.csv", output: - costs=RESULTS + "graphs/costs.pdf", - energy=RESULTS + "graphs/energy.pdf", - balances=RESULTS + "graphs/balances-energy.pdf", + costs=RESULTS + "graphs/costs.svg", + energy=RESULTS + "graphs/energy.svg", + balances=RESULTS + "graphs/balances-energy.svg", threads: 2 resources: mem_mb=10000, diff --git a/scripts/plot_summary.py b/scripts/plot_summary.py index 39fbba03..d131e937 100644 --- a/scripts/plot_summary.py +++ b/scripts/plot_summary.py @@ -353,7 +353,7 @@ def plot_balances(): frameon=False, ) - fig.savefig(snakemake.output.balances[:-10] + k + ".pdf", bbox_inches="tight") + fig.savefig(snakemake.output.balances[:-10] + k + ".svg", bbox_inches="tight") def historical_emissions(countries): @@ -563,7 +563,7 @@ def plot_carbon_budget_distribution(input_eurostat, options): ) plt.grid(axis="y") - path = snakemake.output.balances.split("balances")[0] + "carbon_budget.pdf" + path = snakemake.output.balances.split("balances")[0] + "carbon_budget.svg" plt.savefig(path, bbox_inches="tight") From 1b0ef5ebd57d4b638be6e1ecc516d8c7daef0dc1 Mon Sep 17 00:00:00 2001 From: Bobby Xiong Date: Tue, 11 Jun 2024 15:36:51 +0200 Subject: [PATCH 53/63] Bug fix Snakefile: rule all input updated to 'graphs/costs.svg'. --- Snakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Snakefile b/Snakefile index 412d520d..be2545ad 100644 --- a/Snakefile +++ b/Snakefile @@ -73,7 +73,7 @@ if config["foresight"] == "perfect": rule all: input: - expand(RESULTS + "graphs/costs.pdf", run=config["run"]["name"]), + expand(RESULTS + "graphs/costs.svg", run=config["run"]["name"]), default_target: True From 37bbbc6225f8850c5caef6cded8a328722aa7af7 Mon Sep 17 00:00:00 2001 From: Micha Date: Thu, 13 Jun 2024 14:51:32 +0200 Subject: [PATCH 54/63] Fix grouping logic again --- config/config.default.yaml | 4 ++-- doc/release_notes.rst | 2 ++ scripts/add_existing_baseyear.py | 27 ++++++++++++++++----------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index 533c1e5d..ee61d366 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -390,8 +390,8 @@ solar_thermal: # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#existing-capacities existing_capacities: - grouping_years_power: [1895, 1920, 1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020, 2025, 2030] - grouping_years_heat: [1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020] # heat grouping years >= baseyear will be ignored + grouping_years_power: [1920, 1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020, 2025] + grouping_years_heat: [1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2019] # heat grouping years >= baseyear will be ignored threshold_capacity: 10 default_heating_lifetime: 20 conventional_carriers: diff --git a/doc/release_notes.rst b/doc/release_notes.rst index ae003d07..019a1f35 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -19,6 +19,8 @@ Upcoming Release `__. See configuration ``sector: enhanced_geothermal`` for details; by default switched off. +* Partially revert https://github.com/PyPSA/pypsa-eur/pull/967 to return to old grouping year logic (which was mostly correct) + PyPSA-Eur 0.11.0 (25th May 2024) ===================================== diff --git a/scripts/add_existing_baseyear.py b/scripts/add_existing_baseyear.py index a209e934..d5333675 100644 --- a/scripts/add_existing_baseyear.py +++ b/scripts/add_existing_baseyear.py @@ -201,19 +201,19 @@ def add_power_capacities_installed_before_baseyear(n, grouping_years, costs, bas phased_out = df_agg[df_agg["DateOut"] < baseyear].index df_agg.drop(phased_out, inplace=True) - older_assets = (df_agg.DateIn < min(grouping_years)).sum() - if older_assets: + newer_assets = (df_agg.DateIn > max(grouping_years)).sum() + if newer_assets: logger.warning( - f"There are {older_assets} assets with build year " - f"before first power grouping year {min(grouping_years)}. " + f"There are {newer_assets} assets with build year " + f"after last power grouping year {max(grouping_years)}. " "These assets are dropped and not considered." "Consider to redefine the grouping years to keep them." ) - to_drop = df_agg[df_agg.DateIn < min(grouping_years)].index + to_drop = df_agg[df_agg.DateIn > max(grouping_years)].index df_agg.drop(to_drop, inplace=True) df_agg["grouping_year"] = np.take( - grouping_years[::-1], np.digitize(df_agg.DateIn, grouping_years[::-1]) + grouping_years, np.digitize(df_agg.DateIn, grouping_years, right=True) ) # calculate (adjusted) remaining lifetime before phase-out (+1 because assuming @@ -464,6 +464,11 @@ def add_heating_capacities_installed_before_baseyear( else: efficiency = costs.at[costs_name, "efficiency"] + too_large_grouping_years = [gy for gy in grouping_years if gy >= int(baseyear)] + if too_large_grouping_years: + logger.warning( + f"Grouping years >= baseyear are ignored. Dropping {too_large_grouping_years}." + ) valid_grouping_years = pd.Series( [ int(grouping_year) @@ -473,12 +478,12 @@ def add_heating_capacities_installed_before_baseyear( ] ) + assert valid_grouping_years.is_monotonic_increasing + # get number of years of each interval - _years = ( - valid_grouping_years.diff() - .shift(-1) - .fillna(baseyear - valid_grouping_years.iloc[-1]) - ) + _years = valid_grouping_years.diff() + # Fill NA from .diff() with value for the first interval + _years[0] = valid_grouping_years[0] - baseyear + default_lifetime # Installation is assumed to be linear for the past ratios = _years / _years.sum() From b174a53480fc7c81a070d5ffabcd8313fbc7ac48 Mon Sep 17 00:00:00 2001 From: Michael Lindner Date: Fri, 14 Jun 2024 11:29:59 +0200 Subject: [PATCH 55/63] non-zero capital_cost for methanol stores --- doc/release_notes.rst | 2 ++ scripts/prepare_sector_network.py | 1 + 2 files changed, 3 insertions(+) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 019a1f35..2cedace6 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -10,6 +10,8 @@ Release Notes Upcoming Release ================ +* Set non-zero capital_cost for methanol stores to avoid unrealistic storage sizes + * Set p_nom = p_nom_min for generators with baseyear == grouping_year in add_existing_baseyear. This has no effect on the optimization but helps n.statistics to correctly report already installed capacities. * Reverted outdated hotfix for doubled renewable capacity in myopic optimization. diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index ab4096e2..4e8f7f41 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -2702,6 +2702,7 @@ def add_industry(n, costs): e_nom_extendable=True, e_cyclic=True, carrier="methanol", + capital_cost=0.02, ) n.madd( From d2018e1088d857776209722735f92c9baf721e03 Mon Sep 17 00:00:00 2001 From: AmosSchledorn Date: Mon, 17 Jun 2024 11:38:23 +0200 Subject: [PATCH 56/63] Document heating rules --- scripts/build_cop_profiles.py | 38 +- scripts/build_daily_heat_demand.py | 39 +- scripts/build_district_heat_share.py | 23 + scripts/build_energy_totals.py | 430 ++++++++++++++++-- .../build_existing_heating_distribution.py | 33 ++ scripts/build_heat_totals.py | 34 +- scripts/build_hourly_heat_demand.py | 26 +- scripts/build_solar_thermal_profiles.py | 31 +- scripts/build_temperature_profiles.py | 31 ++ 9 files changed, 640 insertions(+), 45 deletions(-) diff --git a/scripts/build_cop_profiles.py b/scripts/build_cop_profiles.py index 16e44c18..3115f9ab 100644 --- a/scripts/build_cop_profiles.py +++ b/scripts/build_cop_profiles.py @@ -6,11 +6,41 @@ Build coefficient of performance (COP) time series for air- or ground-sourced heat pumps. -The COP is a function of the temperature difference between source and -sink. +The COP is approximated as a quatratic function of the temperature difference between source and +sink, based on Staffell et al. 2012. + +This rule is executed in ``build_sector.smk``. + +Relevant Settings +----------------- + +.. code:: yaml + heat_pump_sink_T: + + +Inputs: +------- +- ``resources//temp_soil_total_elec_s_.nc``: Soil temperature (total) time series. +- ``resources//temp_soil_rural_elec_s_.nc``: Soil temperature (rural) time series. +- ``resources//temp_soil_urban_elec_s_.nc``: Soil temperature (urban) time series. +- ``resources//temp_air_total_elec_s_.nc``: Ambient air temperature (total) time series. +- ``resources//temp_air_rural_elec_s_.nc``: Ambient air temperature (rural) time series. +- ``resources//temp_air_urban_elec_s_.nc``: Ambient air temperature (urban) time series. + +Outputs: +-------- +- ``resources/cop_soil_total_elec_s_.nc``: COP (ground-sourced) time series (total). +- ``resources/cop_soil_rural_elec_s_.nc``: COP (ground-sourced) time series (rural). +- ``resources/cop_soil_urban_elec_s_.nc``: COP (ground-sourced) time series (urban). +- ``resources/cop_air_total_elec_s_.nc``: COP (air-sourced) time series (total). +- ``resources/cop_air_rural_elec_s_.nc``: COP (air-sourced) time series (rural). +- ``resources/cop_air_urban_elec_s_.nc``: COP (air-sourced) time series (urban). + + +References +---------- +[1] Staffell et al., Energy & Environmental Science 11 (2012): A review of domestic heat pumps, https://doi.org/10.1039/C2EE22653G. -The quadratic regression used is based on Staffell et al. (2012) -https://doi.org/10.1039/C2EE22653G. """ import xarray as xr diff --git a/scripts/build_daily_heat_demand.py b/scripts/build_daily_heat_demand.py index b5a69e89..e6e14271 100644 --- a/scripts/build_daily_heat_demand.py +++ b/scripts/build_daily_heat_demand.py @@ -3,7 +3,44 @@ # # SPDX-License-Identifier: MIT """ -Build heat demand time series using heating degree day (HDD) approximation. +This rule builds heat demand time series using heating degree day (HDD) approximation. + +Snapshots are resampled to daily time resolution and ``Atlite.convert.heat_demand`` is used to convert ambient temperature from the default weather cutout to heat demand time series for the respective cutout. + +Heat demand is distributed by population to clustered onshore regions. + +The rule is executed in ``build_sector.smk``. + +.. seealso:: + `Atlite.Cutout.heat_demand `_ + +Relevant Settings +----------------- + +.. code:: yaml + + snapshots: + drop_leap_day: + +Inputs +------ + +- ``resources//pop_layout_.nc``: Population layout (spatial population distribution). +- ``resources//regions_onshore_elec_s_.geojson``: Onshore region shapes. +- ``cutout``: Weather data cutout, as specified in config + +Outputs +------- + +- ``resources/daily_heat_demand__elec_s_.nc``: + +Relevant settings +----------------- + +.. code:: yaml + + atlite: + default_cutout``: """ import atlite diff --git a/scripts/build_district_heat_share.py b/scripts/build_district_heat_share.py index 178f2c0d..d62d2ab0 100644 --- a/scripts/build_district_heat_share.py +++ b/scripts/build_district_heat_share.py @@ -4,6 +4,29 @@ # SPDX-License-Identifier: MIT """ Build district heat shares at each node, depending on investment year. + +Inputs: +------- +- `resources//pop_layout.csv`: Population layout for each node: Total, urban and rural population. +- `resources//district_heat_share.csv`: Historical district heat share at each country. Output of `scripts/build_energy_totals.py`. + +Outputs: +-------- +- `resources//district_heat_share.csv`: District heat share at each node, potential for each investment year. + +Relevant settings: +------------------ +.. code:: yaml + sector: + district_heating: + energy: + energy_totals_year: + +Notes: +------ +- The district heat share is calculated as the share of urban population at each node, multiplied by the share of district heating in the respective country. +- The `sector.district_heating.potential` setting defines the max. district heating share. +- The max. share of district heating is increased by a progress factor, depending on the investment year (See `sector.district_heating.progress` setting). """ import logging diff --git a/scripts/build_energy_totals.py b/scripts/build_energy_totals.py index fff95733..20490f0c 100644 --- a/scripts/build_energy_totals.py +++ b/scripts/build_energy_totals.py @@ -3,7 +3,39 @@ # # SPDX-License-Identifier: MIT """ -Build total energy demands per country using JRC IDEES, eurostat, and EEA data. +Build total energy demands and carbon emissions per country using JRC IDEES, eurostat, and EEA data. + + +- Country-specific data is read in :func:`build_eurostat`, :func:`build_idees` and `build_swiss`. +- :func:`build_energy_totals` then combines energy data from Eurostat, Swiss, and IDEES data and :func:`rescale_idees_from_eurostat` rescales IDEES data to match Eurostat data. +- :func:`build_district_heat_share` calculates the share of district heating for each country from IDEES data. +- Historical CO2 emissions are calculated in :func:`build_eea_co2` and :func:`build_eurostat_co2` and combined in :func:`build_co2_totals`. + +Relevant Settings +----------------- + +.. code:: yaml + countries: + energy: + +Inputs +------ + +- `resources//nuts3_shapes.gejson`: NUTS3 shapes. +- `data/bundle/eea_UNFCCC_v23.csv`: CO2 emissions data from EEA. +- `data/switzerland-new_format-all_years.csv`: Swiss energy data. +- `data/gr-e-11.03.02.01.01-cc.csv`: Swiss transport data +- `data/bundle/jrc-idees`: JRC IDEES data. +- `data/district_heat_share.csv`: District heating shares. +- `data/eurostat/Balances-April2023`: Eurostat energy balances. +- `data/eurostat/eurostat-household_energy_balances-february_2024.csv`: Eurostat household energy balances. + +Outputs +------- +- `resources//energy_totals.csv`: Energy totals per country, sector and year. +- `resources//co2_totals.csv`: CO2 emissions per country, sector and year. +- `resources//transport_data.csv`: Transport data per country and year. +- `resources//district_heat_share.csv`: District heating share per by country and year. """ import logging @@ -16,22 +48,60 @@ import numpy as np import pandas as pd from _helpers import configure_logging, mute_print, set_scenario_config from tqdm import tqdm +from typing import List cc = coco.CountryConverter() logger = logging.getLogger(__name__) idx = pd.IndexSlice -def cartesian(s1, s2): +def cartesian(s1: pd.Series, s2: pd.Series) -> pd.DataFrame: """ - Cartesian product of two pd.Series. + Compute the Cartesian product of two pandas Series. + + Parameters + ---------- + s1: pd.Series + The first pandas Series + s2: pd.Series: + The second pandas Series. + + Returns + ---------- + pd.DataFrame + A DataFrame representing the Cartesian product of s1 and s2. + + Examples + -------- + >>> s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c']) + >>> s2 = pd.Series([4, 5, 6], index=['d', 'e', 'f']) + >>> cartesian(s1, s2) + d e f + a 4 5 6 + b 8 10 12 + c 12 15 18 """ return pd.DataFrame(np.outer(s1, s2), index=s1.index, columns=s2.index) - -def reverse(dictionary): +def reverse(dictionary: dict) -> dict: """ - Reverses a keys and values of a dictionary. + Reverses the keys and values of a dictionary. + + Parameters + ---------- + dictionary : dict + The dictionary to be reversed. + + Returns + ------- + dict + A new dictionary with the keys and values reversed. + + Examples + -------- + >>> d = {'a': 1, 'b': 2, 'c': 3} + >>> reverse(d) + {1: 'a', 2: 'b', 3: 'c'} """ return {v: k for k, v in dictionary.items()} @@ -68,7 +138,28 @@ to_ipcc = { } -def eurostat_per_country(input_eurostat, country): +def eurostat_per_country(input_eurostat: str, country: str) -> pd.DataFrame: + """ + Read energy balance data for a specific country from Eurostat. + + Parameters + ---------- + input_eurostat : str + Path to the directory containing Eurostat data files. + country : str + Country code for the specific country. + + Returns + ------- + pd.DataFrame + Concatenated energy balance data for the specified country. + + Notes + ----- + - The function reads `/.-Energy-balance-sheets-April-2023-edition.xlsb` + - It removes the "Cover" sheet from the data and concatenates all the remaining sheets into a single DataFrame. + """ + filename = ( f"{input_eurostat}/{country}-Energy-balance-sheets-April-2023-edition.xlsb" ) @@ -83,10 +174,33 @@ def eurostat_per_country(input_eurostat, country): return pd.concat(sheet) -def build_eurostat(input_eurostat, countries, nprocesses=1, disable_progressbar=False): +def build_eurostat(input_eurostat: str, countries: List[str], nprocesses: int=1, disable_progressbar: bool=False) -> pd.DataFrame: """ Return multi-index for all countries' energy data in TWh/a. + + Parameters: + ----------- + input_eurostat : str + Path to the Eurostat database. + countries : List[str] + List of countries for which energy data is to be retrieved. + nprocesses : int, optional + Number of processes to use for parallel execution, by default 1. + disable_progressbar : bool, optional + Whether to disable the progress bar, by default False. + + Returns: + -------- + pd.DataFrame + Multi-index DataFrame containing energy data for all countries in TWh/a. + + Notes: + ------ + - The function first renames the countries in the input list using the `idees_rename` mapping and removes "CH". + - It then reads country-wise data using :func:`eurostat_per_country` into a single DataFrame. + - The data is reordered, converted to TWh/a, and missing values are filled. """ + countries = {idees_rename.get(country, country) for country in countries} - {"CH"} func = partial(eurostat_per_country, input_eurostat) @@ -152,9 +266,21 @@ def build_eurostat(input_eurostat, countries, nprocesses=1, disable_progressbar= return df -def build_swiss(): +def build_swiss() -> pd.DataFrame: """ Return a pd.DataFrame of Swiss energy data in TWh/a. + + + Returns + -------- + pd.DataFrame + Swiss energy data in TWh/a. + + Notes + ----- + - Reads Swiss energy data from `data/switzerland-new_format-all_years.csv`. + - Reshapes and renames data. + - Converts energy units from PJ/a to TWh/a. """ fn = snakemake.input.swiss @@ -174,7 +300,29 @@ def build_swiss(): return df -def idees_per_country(ct, base_dir): +def idees_per_country(ct: str, base_dir: str) -> pd.DataFrame: + """ + Calculate energy totals per country using JRC-IDEES data. + + Parameters + ---------- + ct : str + The country code. + base_dir : str + The base directory where the JRC-IDEES data files are located. + + Returns + ------- + pd.DataFrame + A DataFrame containing the energy totals per country. Columns are energy uses. + + Notes + ----- + - Retrieves JRC-IDEES data for the specified country from `base_dir` for residential, tertiary, and transport sectors. + - Calculates energy totals for each sector, stores them in a dictionary and returns them as data frame. + - Assertions ensure indeces of JRC-IDEES data are as expected. + """ + ct_idees = idees_rename.get(ct, ct) fn_residential = f"{base_dir}/JRC-IDEES-2015_Residential_{ct_idees}.xlsx" fn_tertiary = f"{base_dir}/JRC-IDEES-2015_Tertiary_{ct_idees}.xlsx" @@ -371,8 +519,26 @@ def idees_per_country(ct, base_dir): return pd.DataFrame(ct_totals) +def build_idees(countries: List[str]) -> pd.DataFrame: + """ + Build energy totals from IDEES database for the given list of countries using :func:`idees_per_country`. + + Parameters + ---------- + countries : List[str] + List of country names for which energy totals need to be built. + + Returns + ------- + pd.DataFrame + Energy totals for the given countries. + + Notes + ----- + - Retrieves energy totals per country and year using :func:`idees_per_country`. + - Returns a DataFrame with columns: country, year, and energy totals for different categories. + """ -def build_idees(countries): nprocesses = snakemake.threads disable_progress = snakemake.config["run"].get("disable_progressbar", False) @@ -403,7 +569,36 @@ def build_idees(countries): return totals -def build_energy_totals(countries, eurostat, swiss, idees): +def build_energy_totals(countries: List[str], eurostat: pd.DataFrame, swiss: pd.DataFrame, idees: pd.DataFrame) -> pd.DataFrame: + """ + Combine energy totals for the specified countries from Eurostat, Swiss, and IDEES data. + + Parameters + ---------- + countries : List[str] + List of country codes for which energy totals are to be calculated. + eurostat : pd.DataFrame + Eurostat energy balances dataframe. + swiss : pd.DataFrame + Swiss energy data dataframe. + idees : pd.DataFrame + IDEES energy data dataframe. + + Returns + ------- + pd.DataFrame + Energy totals dataframe for the given countries. + + Notes + ----- + - Missing values are filled based on Eurostat energy balances and average values in EU28. + - The function also performs specific calculations for Norway and splits road, rail, and aviation traffic for non-IDEES data. + + References + ---------- + - `Norway heating data `_ + """ + eurostat_fuels = {"electricity": "Electricity", "total": "Total all products"} eurostat_countries = eurostat.index.levels[0] eurostat_years = eurostat.index.levels[1] @@ -591,7 +786,30 @@ def build_energy_totals(countries, eurostat, swiss, idees): return df -def build_district_heat_share(countries, idees): +def build_district_heat_share(countries: List[str], idees: pd.DataFrame) -> pd.Series: + """ + Calculate the share of district heating for each country. + + Parameters + ---------- + countries : List[str] + List of country codes for which to calculate district heating share. + idees : pd.DataFrame + IDEES energy data dataframe. + + Returns + ------- + pd.Series + Series with the district heating share for each country. + + Notes + ----- + - The function calculates the district heating share as the sum of residential and services derived heat, divided by the sum of residential and services thermal uses. + - The district heating share is then reindexed to match the provided list of countries. + - Missing district heating shares are filled from `data/district_heat_share.csv`. + - The function makes a conservative assumption and takes the minimum district heating share from both the IDEES data and `data/district_heat_share.csv`. + """ + # district heating share district_heat = idees[["derived heat residential", "derived heat services"]].sum( axis=1 @@ -625,9 +843,35 @@ def build_district_heat_share(countries, idees): return district_heat_share -def build_eea_co2(input_co2, year=1990, emissions_scope="CO2"): - # https://www.eea.europa.eu/data-and-maps/data/national-emissions-reported-to-the-unfccc-and-to-the-eu-greenhouse-gas-monitoring-mechanism-16 - # downloaded 201228 (modified by EEA last on 201221) +def build_eea_co2(input_co2: str, year: int = 1990, emissions_scope: str = "CO2") -> pd.DataFrame: + """ + Calculate CO2 emissions for a given year based on EEA data in Mt + + Parameters + ---------- + input_co2 : str + Path to the input CSV file with CO2 data. + year : int, optional + Year for which to calculate emissions, by default 1990. + emissions_scope : str, optional + Scope of the emissions to consider, by default "CO2". + + Returns + ------- + pd.DataFrame + DataFrame with CO2 emissions for the given year. + + Notes + ----- + - The function reads the `input_co2` data and for a specific `year` and `emission scope` + - It calculates "industrial non-elec" and "agriculture" emissions from that data + - It drops unneeded columns and converts the emissions to Mt. + + References + --------- + - `EEA CO2 data `_ (downloaded 201228, modified by EEA last on 201221) + """ + df = pd.read_csv(input_co2, encoding="latin-1", low_memory=False) df.replace(dict(Year="1985-1987"), 1986, inplace=True) @@ -673,11 +917,42 @@ def build_eea_co2(input_co2, year=1990, emissions_scope="CO2"): ] emissions.drop(columns=to_drop, inplace=True) - # convert from Gg to Mt + # convert from Gt to Mt return emissions / 1e3 -def build_eurostat_co2(eurostat, year=1990): +def build_eurostat_co2(eurostat: pd.DataFrame, year: int = 1990) -> pd.Series: + """ + Calculate CO2 emissions for a given year based on Eurostat fuel consumption data and fuel-specific emissions. + + Parameters + ---------- + eurostat : pd.DataFrame + DataFrame with Eurostat data. + year : int, optional + Year for which to calculate emissions, by default 1990. + + Returns + ------- + pd.Series + Series with CO2 emissions for the given year. + + Notes + ----- + - The function hard-sets fuel-specific emissions: + - solid fuels: 0.36 tCO2_equi/MW_th (approximates coal) + - oil: 0.285 tCO2_equi/MW_th (average of distillate and residue) + - natural gas: 0.2 tCO2_equi/MW_th + - It then multiplies the Eurostat fuel consumption data for `year` by the specific emissions and sums the result. + + References + ---------- + - Oil values from `EIA `_ + - Distillate oil (No. 2) 0.276 + - Residual oil (No. 6) 0.298 + - `EIA Electricity Annual `_ + """ + eurostat_year = eurostat.xs(year, level="year") specific_emissions = pd.Series(index=eurostat.columns, dtype=float) @@ -687,15 +962,32 @@ def build_eurostat_co2(eurostat, year=1990): specific_emissions["Oil (total)"] = 0.285 # Average of distillate and residue specific_emissions["Gas"] = 0.2 # For natural gas - # oil values from https://www.eia.gov/tools/faqs/faq.cfm?id=74&t=11 - # Distillate oil (No. 2) 0.276 - # Residual oil (No. 6) 0.298 - # https://www.eia.gov/electricity/annual/html/epa_a_03.html - return eurostat_year.multiply(specific_emissions).sum(axis=1) -def build_co2_totals(countries, eea_co2, eurostat_co2): +def build_co2_totals(countries: List[str], eea_co2: pd.DataFrame, eurostat_co2: pd.DataFrame) -> pd.DataFrame: + """ + Combine CO2 emissions data from EEA and Eurostat for a list of countries. + + Parameters + ---------- + countries : List[str] + List of country codes for which CO2 totals need to be built. + eea_co2 : pd.DataFrame + DataFrame with EEA CO2 emissions data. + eurostat_co2 : pd.DataFrame + DataFrame with Eurostat CO2 emissions data. + + Returns + ------- + pd.DataFrame + Combined CO2 emissions data for the given countries. + + Notes + ----- + - The function combines the CO2 emissions from EEA and Eurostat into a single DataFrame for the given countries. + """ + co2 = eea_co2.reindex(countries) for ct in pd.Index(countries).intersection(["BA", "RS", "AL", "ME", "MK"]): @@ -722,9 +1014,36 @@ def build_co2_totals(countries, eea_co2, eurostat_co2): return co2 -def build_transport_data(countries, population, idees): - # first collect number of cars +def build_transport_data(countries: List[str], population: pd.DataFrame, idees: pd.DataFrame) -> pd.DataFrame: + """ + Build transport data for a set of countries based on IDEES data. + Parameters + ---------- + countries : List[str] + List of country codes. + population : pd.DataFrame + DataFrame with population data. + idees : pd.DataFrame + DataFrame with IDEES data. + + Returns + ------- + pd.DataFrame + DataFrame with transport data. + + Notes + ----- + - The function first collects the number of passenger cars. + - For Switzerland, it reads the data from `data/gr-e-11.03.02.01.01-cc.csv`. + - It fills missing data on the number of cars and fuel efficiency with average data. + + References + ---------- + - Swiss transport data: `BFS `_ + """ + + # first collect number of cars transport_data = pd.DataFrame(idees["passenger cars"]) countries_without_ch = set(countries) - {"CH"} @@ -735,7 +1054,6 @@ def build_transport_data(countries, population, idees): transport_data = transport_data.reindex(index=new_index) - # https://www.bfs.admin.ch/bfs/en/home/statistics/mobility-transport/transport-infrastructure-vehicles/vehicles/road-vehicles-stock-level-motorisation.html if "CH" in countries: fn = snakemake.input.swiss_transport swiss_cars = pd.read_csv(fn, index_col=0).loc[2000:2015, ["passenger cars"]] @@ -782,16 +1100,40 @@ def build_transport_data(countries, population, idees): def rescale_idees_from_eurostat( - idees_countries, - energy, - eurostat, -): + idees_countries: List[str], + energy: pd.DataFrame, + eurostat: pd.DataFrame +) -> pd.DataFrame: """ - Takes JRC IDEES data from 2015 and rescales it by the ratio of the eurostat - data and the 2015 eurostat data. + Takes JRC IDEES data from 2015 and rescales it by the ratio of the Eurostat + data and the 2015 Eurostat data. + Missing data: ['passenger car efficiency', 'passenger cars'] - missing data: ['passenger car efficiency', 'passenger cars'] + Parameters + ---------- + idees_countries : List[str] + List of IDEES country codes. + energy : pd.DataFrame + DataFrame with JRC IDEES data. + eurostat : pd.DataFrame + DataFrame with Eurostat data. + + Returns + ------- + pd.DataFrame + DataFrame with rescaled IDEES data. + + Notes + ----- + - The function first reads in the Eurostat data for 2015 and calculates the ratio of that data with other Eurostat data. + - This ratio is mapped to the IDEES data. + + References + ---------- + - JRC IDEES data: `JRC IDEES `_ + - Eurostat data: `Eurostat `_ """ + main_cols = ["Total all products", "Electricity"] # read in the eurostat data for 2015 eurostat_2015 = eurostat.xs(2015, level="year")[main_cols] @@ -959,10 +1301,24 @@ def rescale_idees_from_eurostat( return energy -def update_residential_from_eurostat(energy): +def update_residential_from_eurostat(energy: pd.DataFrame) -> pd.DataFrame: """ - Updates energy balances for residential from disaggregated data from - Eurostat. + Updates energy balances for residential from disaggregated data from Eurostat by mutating input data DataFrame. + + Parameters + ---------- + energy : pd.DataFrame + DataFrame with energy data. + + Returns + ------- + pd.DataFrame + DataFrame with updated energy balances. + + Notes + ----- + - The function first reads in the Eurostat data for households and maps the energy types to the corresponding Eurostat codes. + - For each energy type, it selects the corresponding data, converts units, and drops unnecessary data. """ eurostat_households = pd.read_csv(snakemake.input.eurostat_households) diff --git a/scripts/build_existing_heating_distribution.py b/scripts/build_existing_heating_distribution.py index af4a50a7..29b4ba8d 100644 --- a/scripts/build_existing_heating_distribution.py +++ b/scripts/build_existing_heating_distribution.py @@ -5,6 +5,39 @@ """ Builds table of existing heat generation capacities for initial planning horizon. + +Existing heat generation capacities are distributed to nodes based on population. +Within the nodes, the capacities are distributed to sectors (residential and services) based on sectoral consumption and urban/rural based population distribution. + +Inputs: +------- +- Existing heating generators: `data/existing_heating_raw.csv` per country +- Population layout: `resources/{run_name}/pop_layout_s_.csv`. Output of `scripts/build_clustered_population_layout.py` +- Population layout with energy demands: `resources//pop_weighted_energy_totals_s_.csv` +- District heating share: `resources//district_heat_share_elec_s__.csv` + +Outputs: +-------- +- Existing heat generation capacities distributed to nodes: `resources/{run_name}/existing_heating_distribution_elec_s{simpl}_{clusters}_{planning_horizons}.csv` + +Relevant settings: +------------------ +.. code:: yaml + scenario: + planning_horizons + sector: + existing_capacities: + +Notes: +------ +- Data for Albania, Montenegro and Macedonia is not included in input database and assumed 0. +- Coal and oil boilers are assimilated to oil boilers. +- All ground-source heat pumps are assumed in rural areas and all air-source heat pumps are assumed to be in urban areas. + +References: +----------- +- "Mapping and analyses of the current and future (2020 - 2030) heating/cooling fuel deployment (fossil/renewables)" (https://energy.ec.europa.eu/publications/mapping-and-analyses-current-and-future-2020-2030-heatingcooling-fuel-deployment-fossilrenewables-1_en) + """ import country_converter as coco import numpy as np diff --git a/scripts/build_heat_totals.py b/scripts/build_heat_totals.py index 9bee63e5..dbd69725 100644 --- a/scripts/build_heat_totals.py +++ b/scripts/build_heat_totals.py @@ -4,6 +4,17 @@ # SPDX-License-Identifier: MIT """ Approximate heat demand for all weather years. + +:func:`approximate_heat_demand` approximates annual heat demand based on energy totals and heating degree days (HDD) using a regression of heat demand on HDDs. + +Inputs +------ +- `resources//energy_totals.csv`: Energy consumption by sector (columns), country and year. Output of :func:`scripts.build_energy_totals.py`. +- `data/era5-annual-HDD-per-country.csv`: Number of heating degree days by year (columns) and country (index). + +Outputs +------- +- `resources//heat_totals.csv`: Approximated annual heat demand for each country. """ from itertools import product @@ -14,7 +25,28 @@ from numpy.polynomial import Polynomial idx = pd.IndexSlice -def approximate_heat_demand(energy_totals, hdd): +def approximate_heat_demand(energy_totals: pd.DataFrame, hdd: pd.DataFrame): + """ + Approximate heat demand for a set of countries based on energy totals and heating degree days (HDD). + A polynomial regression of heat demand on HDDs is performed on the data from 2007 to 2021. Then, for 2022 and 2023, the heat demand is estimated from known HDDs based on the regression. + + Parameters + ---------- + energy_totals : pd.DataFrame + DataFrame with energy consumption by sector (columns), country and year. Output of :func:`scripts.build_energy_totals.py`. + hdd : pd.DataFrame + DataFrame with numer of heating degree days by year (columns) and country (index). + + Returns + ------- + pd.DataFrame + DataFrame with approximated heat demand for each country. + + Notes + ----- + - Missing data is filled forward for GB in 2020 and backward for CH from 2007 to 2009. + - If only one year of heating data is available for a country, a point (0, 0) is added to make the polynomial fit work. + """ countries = hdd.columns.intersection(energy_totals.index.levels[0]) diff --git a/scripts/build_hourly_heat_demand.py b/scripts/build_hourly_heat_demand.py index 1fb4f5a4..2ddd12d1 100644 --- a/scripts/build_hourly_heat_demand.py +++ b/scripts/build_hourly_heat_demand.py @@ -3,7 +3,31 @@ # # SPDX-License-Identifier: MIT """ -Build hourly heat demand time series from daily ones. +Build hourly heat demand time series from daily heat demand. + +Water and space heating demand profiles are generated using intraday profiles from BDEW. Different profiles are used for the residential and services sectors as well as weekdays and weekend. + +The daily heat demand is multiplied by the intraday profile to obtain the hourly heat demand time series. The rule is executed in ``build_sector.smk``. + + +Relevant Settings +----------------- + +.. code:: yaml + + snapshots: + drop_leap_day: + +Inputs +------ + +- ``data/heat_load_profile_BDEW.csv``: Intraday heat profile fpr water and space heating demand for the residential and services sectors for weekends and weekdays. +- ``resources/daily_heat_demand__elec_s_.nc``: Daily heat demand per cluster. + +Outputs +------- + +- ``resources/hourly_heat_demand__elec_s_.nc``: """ from itertools import product diff --git a/scripts/build_solar_thermal_profiles.py b/scripts/build_solar_thermal_profiles.py index bb5180b9..9873bf37 100644 --- a/scripts/build_solar_thermal_profiles.py +++ b/scripts/build_solar_thermal_profiles.py @@ -3,7 +3,36 @@ # # SPDX-License-Identifier: MIT """ -Build solar thermal collector time series. +Build solar thermal collector profile time series. + +Uses ``atlite.Cutout.solar_thermal` to compute heat generation for clustered onshore regions from population layout and weather data cutout. +The rule is executed in ``build_sector.smk``. + +.. seealso:: + `Atlite.Cutout.solar_thermal `_ + +Relevant Settings +----------------- + +.. code:: yaml + + snapshots: + drop_leap_day: + solar_thermal: + atlite: + default_cutout: + +Inputs +------ + +- ``resources/.nc``: +- ``resources/_.geojson``: +- ``cutout``: Weather data cutout, as specified in config + +Outputs +------- + +- ``resources/solar_thermal__elec_s_.nc``: """ import atlite diff --git a/scripts/build_temperature_profiles.py b/scripts/build_temperature_profiles.py index 00c88b5b..e7b29367 100644 --- a/scripts/build_temperature_profiles.py +++ b/scripts/build_temperature_profiles.py @@ -4,6 +4,37 @@ # SPDX-License-Identifier: MIT """ Build time series for air and soil temperatures per clustered model region. + +Uses ``atlite.Cutout.temperature`` and ``atlite.Cutout.soil_temperature compute temperature ambient air and soil temperature for the respective cutout. The rule is executed in ``build_sector.smk``. + + +.. seealso:: + `Atlite.Cutout.temperature `_ + `Atlite.Cutout.soil_temperature `_ + +Relevant Settings +----------------- + +.. code:: yaml + + snapshots: + drop_leap_day: + atlite: + default_cutout: + +Inputs +------ + +- ``resources//pop_layout_.nc``: +- ``resources//regions_onshore_elec_s_.geojson``: +- ``cutout``: Weather data cutout, as specified in config + +Outputs +------- + +- ``resources/temp_soil__elec_s_.nc``: +- ``resources/temp_air__elec_s_.nc` + """ import atlite From 4a1933f49aaf2ed530d13100efbd34b8f32e103e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 09:44:03 +0000 Subject: [PATCH 57/63] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/build_cop_profiles.py | 1 - scripts/build_daily_heat_demand.py | 7 +- scripts/build_energy_totals.py | 73 ++++++++++++------- .../build_existing_heating_distribution.py | 3 +- scripts/build_heat_totals.py | 8 +- scripts/build_hourly_heat_demand.py | 2 +- scripts/build_solar_thermal_profiles.py | 2 +- scripts/build_temperature_profiles.py | 1 - 8 files changed, 58 insertions(+), 39 deletions(-) diff --git a/scripts/build_cop_profiles.py b/scripts/build_cop_profiles.py index 3115f9ab..2a47198b 100644 --- a/scripts/build_cop_profiles.py +++ b/scripts/build_cop_profiles.py @@ -40,7 +40,6 @@ Outputs: References ---------- [1] Staffell et al., Energy & Environmental Science 11 (2012): A review of domestic heat pumps, https://doi.org/10.1039/C2EE22653G. - """ import xarray as xr diff --git a/scripts/build_daily_heat_demand.py b/scripts/build_daily_heat_demand.py index e6e14271..97d1368e 100644 --- a/scripts/build_daily_heat_demand.py +++ b/scripts/build_daily_heat_demand.py @@ -3,11 +3,12 @@ # # SPDX-License-Identifier: MIT """ -This rule builds heat demand time series using heating degree day (HDD) approximation. +This rule builds heat demand time series using heating degree day (HDD) +approximation. -Snapshots are resampled to daily time resolution and ``Atlite.convert.heat_demand`` is used to convert ambient temperature from the default weather cutout to heat demand time series for the respective cutout. +Snapshots are resampled to daily time resolution and ``Atlite.convert.heat_demand`` is used to convert ambient temperature from the default weather cutout to heat demand time series for the respective cutout. -Heat demand is distributed by population to clustered onshore regions. +Heat demand is distributed by population to clustered onshore regions. The rule is executed in ``build_sector.smk``. diff --git a/scripts/build_energy_totals.py b/scripts/build_energy_totals.py index 20490f0c..54c27f81 100644 --- a/scripts/build_energy_totals.py +++ b/scripts/build_energy_totals.py @@ -3,8 +3,8 @@ # # SPDX-License-Identifier: MIT """ -Build total energy demands and carbon emissions per country using JRC IDEES, eurostat, and EEA data. - +Build total energy demands and carbon emissions per country using JRC IDEES, +eurostat, and EEA data. - Country-specific data is read in :func:`build_eurostat`, :func:`build_idees` and `build_swiss`. - :func:`build_energy_totals` then combines energy data from Eurostat, Swiss, and IDEES data and :func:`rescale_idees_from_eurostat` rescales IDEES data to match Eurostat data. @@ -16,7 +16,7 @@ Relevant Settings .. code:: yaml countries: - energy: + energy: Inputs ------ @@ -41,6 +41,7 @@ Outputs import logging import multiprocessing as mp from functools import partial +from typing import List import country_converter as coco import geopandas as gpd @@ -48,7 +49,6 @@ import numpy as np import pandas as pd from _helpers import configure_logging, mute_print, set_scenario_config from tqdm import tqdm -from typing import List cc = coco.CountryConverter() logger = logging.getLogger(__name__) @@ -63,7 +63,7 @@ def cartesian(s1: pd.Series, s2: pd.Series) -> pd.DataFrame: ---------- s1: pd.Series The first pandas Series - s2: pd.Series: + s2: pd.Series: The second pandas Series. Returns @@ -73,8 +73,8 @@ def cartesian(s1: pd.Series, s2: pd.Series) -> pd.DataFrame: Examples -------- - >>> s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c']) - >>> s2 = pd.Series([4, 5, 6], index=['d', 'e', 'f']) + >>> s1 = pd.Series([1, 2, 3], index=["a", "b", "c"]) + >>> s2 = pd.Series([4, 5, 6], index=["d", "e", "f"]) >>> cartesian(s1, s2) d e f a 4 5 6 @@ -83,6 +83,7 @@ def cartesian(s1: pd.Series, s2: pd.Series) -> pd.DataFrame: """ return pd.DataFrame(np.outer(s1, s2), index=s1.index, columns=s2.index) + def reverse(dictionary: dict) -> dict: """ Reverses the keys and values of a dictionary. @@ -99,7 +100,7 @@ def reverse(dictionary: dict) -> dict: Examples -------- - >>> d = {'a': 1, 'b': 2, 'c': 3} + >>> d = {"a": 1, "b": 2, "c": 3} >>> reverse(d) {1: 'a', 2: 'b', 3: 'c'} """ @@ -174,7 +175,12 @@ def eurostat_per_country(input_eurostat: str, country: str) -> pd.DataFrame: return pd.concat(sheet) -def build_eurostat(input_eurostat: str, countries: List[str], nprocesses: int=1, disable_progressbar: bool=False) -> pd.DataFrame: +def build_eurostat( + input_eurostat: str, + countries: List[str], + nprocesses: int = 1, + disable_progressbar: bool = False, +) -> pd.DataFrame: """ Return multi-index for all countries' energy data in TWh/a. @@ -270,7 +276,6 @@ def build_swiss() -> pd.DataFrame: """ Return a pd.DataFrame of Swiss energy data in TWh/a. - Returns -------- pd.DataFrame @@ -322,7 +327,7 @@ def idees_per_country(ct: str, base_dir: str) -> pd.DataFrame: - Calculates energy totals for each sector, stores them in a dictionary and returns them as data frame. - Assertions ensure indeces of JRC-IDEES data are as expected. """ - + ct_idees = idees_rename.get(ct, ct) fn_residential = f"{base_dir}/JRC-IDEES-2015_Residential_{ct_idees}.xlsx" fn_tertiary = f"{base_dir}/JRC-IDEES-2015_Tertiary_{ct_idees}.xlsx" @@ -519,9 +524,11 @@ def idees_per_country(ct: str, base_dir: str) -> pd.DataFrame: return pd.DataFrame(ct_totals) + def build_idees(countries: List[str]) -> pd.DataFrame: """ - Build energy totals from IDEES database for the given list of countries using :func:`idees_per_country`. + Build energy totals from IDEES database for the given list of countries + using :func:`idees_per_country`. Parameters ---------- @@ -569,9 +576,15 @@ def build_idees(countries: List[str]) -> pd.DataFrame: return totals -def build_energy_totals(countries: List[str], eurostat: pd.DataFrame, swiss: pd.DataFrame, idees: pd.DataFrame) -> pd.DataFrame: +def build_energy_totals( + countries: List[str], + eurostat: pd.DataFrame, + swiss: pd.DataFrame, + idees: pd.DataFrame, +) -> pd.DataFrame: """ - Combine energy totals for the specified countries from Eurostat, Swiss, and IDEES data. + Combine energy totals for the specified countries from Eurostat, Swiss, and + IDEES data. Parameters ---------- @@ -593,10 +606,10 @@ def build_energy_totals(countries: List[str], eurostat: pd.DataFrame, swiss: pd. ----- - Missing values are filled based on Eurostat energy balances and average values in EU28. - The function also performs specific calculations for Norway and splits road, rail, and aviation traffic for non-IDEES data. - + References ---------- - - `Norway heating data `_ + - `Norway heating data `_ """ eurostat_fuels = {"electricity": "Electricity", "total": "Total all products"} @@ -843,9 +856,11 @@ def build_district_heat_share(countries: List[str], idees: pd.DataFrame) -> pd.S return district_heat_share -def build_eea_co2(input_co2: str, year: int = 1990, emissions_scope: str = "CO2") -> pd.DataFrame: +def build_eea_co2( + input_co2: str, year: int = 1990, emissions_scope: str = "CO2" +) -> pd.DataFrame: """ - Calculate CO2 emissions for a given year based on EEA data in Mt + Calculate CO2 emissions for a given year based on EEA data in Mt. Parameters ---------- @@ -923,7 +938,8 @@ def build_eea_co2(input_co2: str, year: int = 1990, emissions_scope: str = "CO2" def build_eurostat_co2(eurostat: pd.DataFrame, year: int = 1990) -> pd.Series: """ - Calculate CO2 emissions for a given year based on Eurostat fuel consumption data and fuel-specific emissions. + Calculate CO2 emissions for a given year based on Eurostat fuel consumption + data and fuel-specific emissions. Parameters ---------- @@ -939,7 +955,7 @@ def build_eurostat_co2(eurostat: pd.DataFrame, year: int = 1990) -> pd.Series: Notes ----- - - The function hard-sets fuel-specific emissions: + - The function hard-sets fuel-specific emissions: - solid fuels: 0.36 tCO2_equi/MW_th (approximates coal) - oil: 0.285 tCO2_equi/MW_th (average of distillate and residue) - natural gas: 0.2 tCO2_equi/MW_th @@ -952,7 +968,7 @@ def build_eurostat_co2(eurostat: pd.DataFrame, year: int = 1990) -> pd.Series: - Residual oil (No. 6) 0.298 - `EIA Electricity Annual `_ """ - + eurostat_year = eurostat.xs(year, level="year") specific_emissions = pd.Series(index=eurostat.columns, dtype=float) @@ -965,7 +981,9 @@ def build_eurostat_co2(eurostat: pd.DataFrame, year: int = 1990) -> pd.Series: return eurostat_year.multiply(specific_emissions).sum(axis=1) -def build_co2_totals(countries: List[str], eea_co2: pd.DataFrame, eurostat_co2: pd.DataFrame) -> pd.DataFrame: +def build_co2_totals( + countries: List[str], eea_co2: pd.DataFrame, eurostat_co2: pd.DataFrame +) -> pd.DataFrame: """ Combine CO2 emissions data from EEA and Eurostat for a list of countries. @@ -1014,7 +1032,9 @@ def build_co2_totals(countries: List[str], eea_co2: pd.DataFrame, eurostat_co2: return co2 -def build_transport_data(countries: List[str], population: pd.DataFrame, idees: pd.DataFrame) -> pd.DataFrame: +def build_transport_data( + countries: List[str], population: pd.DataFrame, idees: pd.DataFrame +) -> pd.DataFrame: """ Build transport data for a set of countries based on IDEES data. @@ -1100,9 +1120,7 @@ def build_transport_data(countries: List[str], population: pd.DataFrame, idees: def rescale_idees_from_eurostat( - idees_countries: List[str], - energy: pd.DataFrame, - eurostat: pd.DataFrame + idees_countries: List[str], energy: pd.DataFrame, eurostat: pd.DataFrame ) -> pd.DataFrame: """ Takes JRC IDEES data from 2015 and rescales it by the ratio of the Eurostat @@ -1303,7 +1321,8 @@ def rescale_idees_from_eurostat( def update_residential_from_eurostat(energy: pd.DataFrame) -> pd.DataFrame: """ - Updates energy balances for residential from disaggregated data from Eurostat by mutating input data DataFrame. + Updates energy balances for residential from disaggregated data from + Eurostat by mutating input data DataFrame. Parameters ---------- diff --git a/scripts/build_existing_heating_distribution.py b/scripts/build_existing_heating_distribution.py index 29b4ba8d..d37fcfee 100644 --- a/scripts/build_existing_heating_distribution.py +++ b/scripts/build_existing_heating_distribution.py @@ -6,7 +6,7 @@ Builds table of existing heat generation capacities for initial planning horizon. -Existing heat generation capacities are distributed to nodes based on population. +Existing heat generation capacities are distributed to nodes based on population. Within the nodes, the capacities are distributed to sectors (residential and services) based on sectoral consumption and urban/rural based population distribution. Inputs: @@ -37,7 +37,6 @@ Notes: References: ----------- - "Mapping and analyses of the current and future (2020 - 2030) heating/cooling fuel deployment (fossil/renewables)" (https://energy.ec.europa.eu/publications/mapping-and-analyses-current-and-future-2020-2030-heatingcooling-fuel-deployment-fossilrenewables-1_en) - """ import country_converter as coco import numpy as np diff --git a/scripts/build_heat_totals.py b/scripts/build_heat_totals.py index dbd69725..22b6bd21 100644 --- a/scripts/build_heat_totals.py +++ b/scripts/build_heat_totals.py @@ -27,8 +27,10 @@ idx = pd.IndexSlice def approximate_heat_demand(energy_totals: pd.DataFrame, hdd: pd.DataFrame): """ - Approximate heat demand for a set of countries based on energy totals and heating degree days (HDD). - A polynomial regression of heat demand on HDDs is performed on the data from 2007 to 2021. Then, for 2022 and 2023, the heat demand is estimated from known HDDs based on the regression. + Approximate heat demand for a set of countries based on energy totals and + heating degree days (HDD). A polynomial regression of heat demand on HDDs + is performed on the data from 2007 to 2021. Then, for 2022 and 2023, the + heat demand is estimated from known HDDs based on the regression. Parameters ---------- @@ -46,7 +48,7 @@ def approximate_heat_demand(energy_totals: pd.DataFrame, hdd: pd.DataFrame): ----- - Missing data is filled forward for GB in 2020 and backward for CH from 2007 to 2009. - If only one year of heating data is available for a country, a point (0, 0) is added to make the polynomial fit work. - """ + """ countries = hdd.columns.intersection(energy_totals.index.levels[0]) diff --git a/scripts/build_hourly_heat_demand.py b/scripts/build_hourly_heat_demand.py index 2ddd12d1..71b65c5d 100644 --- a/scripts/build_hourly_heat_demand.py +++ b/scripts/build_hourly_heat_demand.py @@ -5,7 +5,7 @@ """ Build hourly heat demand time series from daily heat demand. -Water and space heating demand profiles are generated using intraday profiles from BDEW. Different profiles are used for the residential and services sectors as well as weekdays and weekend. +Water and space heating demand profiles are generated using intraday profiles from BDEW. Different profiles are used for the residential and services sectors as well as weekdays and weekend. The daily heat demand is multiplied by the intraday profile to obtain the hourly heat demand time series. The rule is executed in ``build_sector.smk``. diff --git a/scripts/build_solar_thermal_profiles.py b/scripts/build_solar_thermal_profiles.py index 9873bf37..9de04f45 100644 --- a/scripts/build_solar_thermal_profiles.py +++ b/scripts/build_solar_thermal_profiles.py @@ -5,7 +5,7 @@ """ Build solar thermal collector profile time series. -Uses ``atlite.Cutout.solar_thermal` to compute heat generation for clustered onshore regions from population layout and weather data cutout. +Uses ``atlite.Cutout.solar_thermal` to compute heat generation for clustered onshore regions from population layout and weather data cutout. The rule is executed in ``build_sector.smk``. .. seealso:: diff --git a/scripts/build_temperature_profiles.py b/scripts/build_temperature_profiles.py index e7b29367..493bd08f 100644 --- a/scripts/build_temperature_profiles.py +++ b/scripts/build_temperature_profiles.py @@ -34,7 +34,6 @@ Outputs - ``resources/temp_soil__elec_s_.nc``: - ``resources/temp_air__elec_s_.nc` - """ import atlite From c787437350f8e92d23ac252e95d10514010a9fa0 Mon Sep 17 00:00:00 2001 From: AmosSchledorn Date: Mon, 17 Jun 2024 11:47:55 +0200 Subject: [PATCH 58/63] correct typos in heating rule docs --- scripts/build_energy_totals.py | 2 +- scripts/build_heat_totals.py | 2 +- scripts/build_hourly_heat_demand.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/build_energy_totals.py b/scripts/build_energy_totals.py index 54c27f81..a476ec65 100644 --- a/scripts/build_energy_totals.py +++ b/scripts/build_energy_totals.py @@ -325,7 +325,7 @@ def idees_per_country(ct: str, base_dir: str) -> pd.DataFrame: ----- - Retrieves JRC-IDEES data for the specified country from `base_dir` for residential, tertiary, and transport sectors. - Calculates energy totals for each sector, stores them in a dictionary and returns them as data frame. - - Assertions ensure indeces of JRC-IDEES data are as expected. + - Assertions ensure indices of JRC-IDEES data are as expected. """ ct_idees = idees_rename.get(ct, ct) diff --git a/scripts/build_heat_totals.py b/scripts/build_heat_totals.py index 22b6bd21..7a43c9ca 100644 --- a/scripts/build_heat_totals.py +++ b/scripts/build_heat_totals.py @@ -37,7 +37,7 @@ def approximate_heat_demand(energy_totals: pd.DataFrame, hdd: pd.DataFrame): energy_totals : pd.DataFrame DataFrame with energy consumption by sector (columns), country and year. Output of :func:`scripts.build_energy_totals.py`. hdd : pd.DataFrame - DataFrame with numer of heating degree days by year (columns) and country (index). + DataFrame with number of heating degree days by year (columns) and country (index). Returns ------- diff --git a/scripts/build_hourly_heat_demand.py b/scripts/build_hourly_heat_demand.py index 71b65c5d..0dcf3524 100644 --- a/scripts/build_hourly_heat_demand.py +++ b/scripts/build_hourly_heat_demand.py @@ -21,7 +21,7 @@ Relevant Settings Inputs ------ -- ``data/heat_load_profile_BDEW.csv``: Intraday heat profile fpr water and space heating demand for the residential and services sectors for weekends and weekdays. +- ``data/heat_load_profile_BDEW.csv``: Intraday heat profile for water and space heating demand for the residential and services sectors for weekends and weekdays. - ``resources/daily_heat_demand__elec_s_.nc``: Daily heat demand per cluster. Outputs From ad38016f6dad3225655721b2111b5c308ef8637e Mon Sep 17 00:00:00 2001 From: Philipp Glaum Date: Mon, 17 Jun 2024 15:22:33 +0200 Subject: [PATCH 59/63] prepare_sector_network: add floating wind to update cost function --- scripts/prepare_sector_network.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index ab4096e2..c278734b 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -456,7 +456,7 @@ def update_wind_solar_costs(n, costs): clustermaps = busmap_s.map(busmap) # code adapted from pypsa-eur/scripts/add_electricity.py - for connection in ["dc", "ac"]: + for connection in ["dc", "ac", "float"]: tech = "offwind-" + connection if tech not in n.generators.carrier.values: continue From 450f75a989dd9b84e27a7690a96107bdca4e8035 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 19 Jun 2024 15:54:23 +0200 Subject: [PATCH 60/63] bugfix: correctly read threshold capacity in add_brownfield --- doc/release_notes.rst | 1 + rules/solve_myopic.smk | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 2cedace6..8388946f 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -23,6 +23,7 @@ Upcoming Release * Partially revert https://github.com/PyPSA/pypsa-eur/pull/967 to return to old grouping year logic (which was mostly correct) +* Bugfix: Correctly read in threshold capacity below which to remove components from previous planning horizons in :mod:`add_brownfield`. PyPSA-Eur 0.11.0 (25th May 2024) ===================================== diff --git a/rules/solve_myopic.smk b/rules/solve_myopic.smk index 6220af2a..21fb7169 100644 --- a/rules/solve_myopic.smk +++ b/rules/solve_myopic.smk @@ -65,7 +65,7 @@ rule add_brownfield: H2_retrofit_capacity_per_CH4=config_provider( "sector", "H2_retrofit_capacity_per_CH4" ), - threshold_capacity=config_provider("existing_capacities", " threshold_capacity"), + threshold_capacity=config_provider("existing_capacities", "threshold_capacity"), snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), carriers=config_provider("electricity", "renewable_carriers"), From 14b8de834846873fec9e44f5fdbbc481e3e3e1a8 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 20 Jun 2024 14:38:04 +0200 Subject: [PATCH 61/63] compatibility with snakemake 8.14 closes #1108 --- envs/environment.yaml | 2 +- scripts/_helpers.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/envs/environment.yaml b/envs/environment.yaml index 37c3870b..8f2ecd27 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -20,7 +20,7 @@ dependencies: - openpyxl!=3.1.1 - pycountry - seaborn -- snakemake-minimal>=8.11 +- snakemake-minimal>=8.14 - memory_profiler - yaml - pytables diff --git a/scripts/_helpers.py b/scripts/_helpers.py index 5008b32a..ff304f5f 100644 --- a/scripts/_helpers.py +++ b/scripts/_helpers.py @@ -407,12 +407,12 @@ def mock_snakemake( from snakemake.common import SNAKEFILE_CHOICES from snakemake.script import Snakemake from snakemake.settings import ( - ConfigSettings, DAGSettings, ResourceSettings, StorageSettings, WorkflowSettings, ) + from snakemake.settings.types import ConfigSettings script_dir = Path(__file__).parent.resolve() if root_dir is None: From 6962ba0cfbbf090efb2338fcb13392216b6b7a27 Mon Sep 17 00:00:00 2001 From: bobbyxng Date: Thu, 20 Jun 2024 15:46:14 +0200 Subject: [PATCH 62/63] Fixed mock_snakemake for snakemake v.8.14: All snakemake settings moved to snakemake.settings.types. --- scripts/_helpers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/_helpers.py b/scripts/_helpers.py index ff304f5f..a3b77c1c 100644 --- a/scripts/_helpers.py +++ b/scripts/_helpers.py @@ -406,13 +406,13 @@ def mock_snakemake( from snakemake.api import Workflow from snakemake.common import SNAKEFILE_CHOICES from snakemake.script import Snakemake - from snakemake.settings import ( + from snakemake.settings.types import ( + ConfigSettings, DAGSettings, ResourceSettings, StorageSettings, WorkflowSettings, ) - from snakemake.settings.types import ConfigSettings script_dir = Path(__file__).parent.resolve() if root_dir is None: From 54009e7af88a13faa6530ebec96deae3a4b26532 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Mon, 1 Jul 2024 13:33:29 +0100 Subject: [PATCH 63/63] increase mem_mb for build_powerplants rule --- rules/build_electricity.smk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rules/build_electricity.smk b/rules/build_electricity.smk index 43cadb93..eff0d9e0 100644 --- a/rules/build_electricity.smk +++ b/rules/build_electricity.smk @@ -58,7 +58,7 @@ rule build_powerplants: logs("build_powerplants.log"), threads: 1 resources: - mem_mb=5000, + mem_mb=7000, conda: "../envs/environment.yaml" script: