diff --git a/scripts/extract_blank_scenario_inputs.py b/scripts/extract_blank_scenario_inputs.py new file mode 100644 index 0000000..fc9770a --- /dev/null +++ b/scripts/extract_blank_scenario_inputs.py @@ -0,0 +1,702 @@ +import requests +import csv + +# Define the base URL of the API +base_url = "https://engine.energytransitionmodel.com/api/v3" + +# List of area codes for which you want to create blank scenarios +# By default, the list contains all municipalities in the Netherlands as of baseyear 2019 +area_codes = [ + "GM0014_groningen", + "GM0034_almere", + "GM0037_stadskanaal", + "GM0047_veendam", + "GM0050_zeewolde", + "GM0059_achtkarspelen", + "GM0060_ameland", + "GM0072_harlingen", + "GM0074_heerenveen", + "GM0080_leeuwarden", + "GM0085_ooststellingwerf", + "GM0086_opsterland", + "GM0088_schiermonnikoog", + "GM0090_smallingerland", + "GM0093_terschelling", + "GM0096_vlieland", + "GM0098_weststellingwerf", + "GM0106_assen", + "GM0109_coevorden", + "GM0114_emmen", + "GM0118_hoogeveen", + "GM0119_meppel", + "GM0141_almelo", + "GM0147_borne", + "GM0148_dalfsen", + "GM0150_deventer", + "GM0153_enschede", + "GM0158_haaksbergen", + "GM0160_hardenberg", + "GM0163_hellendoorn", + "GM0164_hengelo", + "GM0166_kampen", + "GM0168_losser", + "GM0171_noordoostpolder", + "GM0173_oldenzaal", + "GM0175_ommen", + "GM0177_raalte", + "GM0180_staphorst", + "GM0183_tubbergen", + "GM0184_urk", + "GM0189_wierden", + "GM0193_zwolle", + "GM0197_aalten", + "GM0200_apeldoorn", + "GM0202_arnhem", + "GM0203_barneveld", + "GM0209_beuningen", + "GM0213_brummen", + "GM0214_buren", + "GM0216_culemborg", + "GM0221_doesburg", + "GM0222_doetinchem", + "GM0225_druten", + "GM0226_duiven", + "GM0228_ede", + "GM0230_elburg", + "GM0232_epe", + "GM0233_ermelo", + "GM0243_harderwijk", + "GM0244_hattem", + "GM0246_heerde", + "GM0252_heumen", + "GM0262_lochem", + "GM0263_maasdriel", + "GM0267_nijkerk", + "GM0268_nijmegen", + "GM0269_oldebroek", + "GM0273_putten", + "GM0274_renkum", + "GM0275_rheden", + "GM0277_rozendaal", + "GM0279_scherpenzeel", + "GM0281_tiel", + "GM0285_voorst", + "GM0289_wageningen", + "GM0293_westervoort", + "GM0294_winterswijk", + "GM0296_wijchen", + "GM0297_zaltbommel", + "GM0299_zevenaar", + "GM0301_zutphen", + "GM0302_nunspeet", + "GM0303_dronten", + "GM0307_amersfoort", + "GM0308_baarn", + "GM0310_de_bilt", + "GM0312_bunnik", + "GM0313_bunschoten", + "GM0317_eemnes", + "GM0321_houten", + "GM0327_leusden", + "GM0331_lopik", + "GM0335_montfoort", + "GM0339_renswoude", + "GM0340_rhenen", + "GM0342_soest", + "GM0344_utrecht", + "GM0345_veenendaal", + "GM0351_woudenberg", + "GM0352_wijk_bij_duurstede", + "GM0353_ijsselstein", + "GM0355_zeist", + "GM0356_nieuwegein", + "GM0358_aalsmeer", + "GM0361_alkmaar", + "GM0362_amstelveen", + "GM0363_amsterdam", + "GM0370_beemster", + "GM0373_bergen", + "GM0375_beverwijk", + "GM0376_blaricum", + "GM0377_bloemendaal", + "GM0383_castricum", + "GM0384_diemen", + "GM0385_edam_volendam", + "GM0388_enkhuizen", + "GM0392_haarlem", + "GM0394_haarlemmermeer", + "GM0396_heemskerk", + "GM0397_heemstede", + "GM0398_heerhugowaard", + "GM0399_heiloo", + "GM0400_den_helder", + "GM0402_hilversum", + "GM0405_hoorn", + "GM0406_huizen", + "GM0415_landsmeer", + "GM0416_langedijk", + "GM0417_laren", + "GM0420_medemblik", + "GM0431_oostzaan", + "GM0432_opmeer", + "GM0437_ouder_amstel", + "GM0439_purmerend", + "GM0441_schagen", + "GM0014_groningen", + "GM0034_almere", + "GM0037_stadskanaal", + "GM0047_veendam", + "GM0050_zeewolde", + "GM0059_achtkarspelen", + "GM0060_ameland", + "GM0072_harlingen", + "GM0074_heerenveen", + "GM0080_leeuwarden", + "GM0085_ooststellingwerf", + "GM0086_opsterland", + "GM0088_schiermonnikoog", + "GM0090_smallingerland", + "GM0093_terschelling", + "GM0096_vlieland", + "GM0098_weststellingwerf", + "GM0106_assen", + "GM0109_coevorden", + "GM0114_emmen", + "GM0118_hoogeveen", + "GM0119_meppel", + "GM0141_almelo", + "GM0147_borne", + "GM0148_dalfsen", + "GM0150_deventer", + "GM0153_enschede", + "GM0158_haaksbergen", + "GM0160_hardenberg", + "GM0163_hellendoorn", + "GM0164_hengelo", + "GM0166_kampen", + "GM0168_losser", + "GM0171_noordoostpolder", + "GM0173_oldenzaal", + "GM0175_ommen", + "GM0177_raalte", + "GM0180_staphorst", + "GM0183_tubbergen", + "GM0184_urk", + "GM0189_wierden", + "GM0193_zwolle", + "GM0197_aalten", + "GM0200_apeldoorn", + "GM0202_arnhem", + "GM0203_barneveld", + "GM0209_beuningen", + "GM0213_brummen", + "GM0214_buren", + "GM0216_culemborg", + "GM0221_doesburg", + "GM0222_doetinchem", + "GM0225_druten", + "GM0226_duiven", + "GM0228_ede", + "GM0230_elburg", + "GM0232_epe", + "GM0233_ermelo", + "GM0243_harderwijk", + "GM0244_hattem", + "GM0246_heerde", + "GM0252_heumen", + "GM0262_lochem", + "GM0263_maasdriel", + "GM0267_nijkerk", + "GM0268_nijmegen", + "GM0269_oldebroek", + "GM0273_putten", + "GM0274_renkum", + "GM0275_rheden", + "GM0277_rozendaal", + "GM0279_scherpenzeel", + "GM0281_tiel", + "GM0285_voorst", + "GM0289_wageningen", + "GM0293_westervoort", + "GM0294_winterswijk", + "GM0296_wijchen", + "GM0297_zaltbommel", + "GM0299_zevenaar", + "GM0301_zutphen", + "GM0302_nunspeet", + "GM0303_dronten", + "GM0307_amersfoort", + "GM0308_baarn", + "GM0310_de_bilt", + "GM0312_bunnik", + "GM0313_bunschoten", + "GM0317_eemnes", + "GM0321_houten", + "GM0327_leusden", + "GM0331_lopik", + "GM0335_montfoort", + "GM0339_renswoude", + "GM0340_rhenen", + "GM0342_soest", + "GM0344_utrecht", + "GM0345_veenendaal", + "GM0351_woudenberg", + "GM0352_wijk_bij_duurstede", + "GM0353_ijsselstein", + "GM0355_zeist", + "GM0356_nieuwegein", + "GM0358_aalsmeer", + "GM0361_alkmaar", + "GM0362_amstelveen", + "GM0363_amsterdam", + "GM0370_beemster", + "GM0373_bergen", + "GM0375_beverwijk", + "GM0376_blaricum", + "GM0377_bloemendaal", + "GM0383_castricum", + "GM0384_diemen", + "GM0385_edam_volendam", + "GM0388_enkhuizen", + "GM0392_haarlem", + "GM0394_haarlemmermeer", + "GM0396_heemskerk", + "GM0397_heemstede", + "GM0398_heerhugowaard", + "GM0399_heiloo", + "GM0400_den_helder", + "GM0402_hilversum", + "GM0405_hoorn", + "GM0406_huizen", + "GM0415_landsmeer", + "GM0416_langedijk", + "GM0417_laren", + "GM0420_medemblik", + "GM0431_oostzaan", + "GM0432_opmeer", + "GM0437_ouder_amstel", + "GM0439_purmerend", + "GM0441_schagen", + "GM0014_groningen", + "GM0034_almere", + "GM0037_stadskanaal", + "GM0047_veendam", + "GM0050_zeewolde", + "GM0059_achtkarspelen", + "GM0060_ameland", + "GM0072_harlingen", + "GM0074_heerenveen", + "GM0080_leeuwarden", + "GM0085_ooststellingwerf", + "GM0086_opsterland", + "GM0088_schiermonnikoog", + "GM0090_smallingerland", + "GM0093_terschelling", + "GM0096_vlieland", + "GM0098_weststellingwerf", + "GM0106_assen", + "GM0109_coevorden", + "GM0114_emmen", + "GM0118_hoogeveen", + "GM0119_meppel", + "GM0141_almelo", + "GM0147_borne", + "GM0148_dalfsen", + "GM0150_deventer", + "GM0153_enschede", + "GM0158_haaksbergen", + "GM0160_hardenberg", + "GM0163_hellendoorn", + "GM0164_hengelo", + "GM0166_kampen", + "GM0168_losser", + "GM0171_noordoostpolder", + "GM0173_oldenzaal", + "GM0175_ommen", + "GM0177_raalte", + "GM0180_staphorst", + "GM0183_tubbergen", + "GM0184_urk", + "GM0189_wierden", + "GM0193_zwolle", + "GM0197_aalten", + "GM0200_apeldoorn", + "GM0202_arnhem", + "GM0203_barneveld", + "GM0209_beuningen", + "GM0213_brummen", + "GM0214_buren", + "GM0216_culemborg", + "GM0221_doesburg", + "GM0222_doetinchem", + "GM0225_druten", + "GM0226_duiven", + "GM0228_ede", + "GM0230_elburg", + "GM0232_epe", + "GM0233_ermelo", + "GM0243_harderwijk", + "GM0244_hattem", + "GM0246_heerde", + "GM0252_heumen", + "GM0262_lochem", + "GM0263_maasdriel", + "GM0267_nijkerk", + "GM0268_nijmegen", + "GM0269_oldebroek", + "GM0273_putten", + "GM0274_renkum", + "GM0275_rheden", + "GM0277_rozendaal", + "GM0279_scherpenzeel", + "GM0281_tiel", + "GM0285_voorst", + "GM0289_wageningen", + "GM0293_westervoort", + "GM0294_winterswijk", + "GM0296_wijchen", + "GM0297_zaltbommel", + "GM0299_zevenaar", + "GM0301_zutphen", + "GM0302_nunspeet", + "GM0303_dronten", + "GM0307_amersfoort", + "GM0308_baarn", + "GM0310_de_bilt", + "GM0312_bunnik", + "GM0313_bunschoten", + "GM0317_eemnes", + "GM0321_houten", + "GM0327_leusden", + "GM0331_lopik", + "GM0335_montfoort", + "GM0339_renswoude", + "GM0340_rhenen", + "GM0342_soest", + "GM0344_utrecht", + "GM0345_veenendaal", + "GM0351_woudenberg", + "GM0352_wijk_bij_duurstede", + "GM0353_ijsselstein", + "GM0355_zeist", + "GM0356_nieuwegein", + "GM0358_aalsmeer", + "GM0361_alkmaar", + "GM0362_amstelveen", + "GM0363_amsterdam", + "GM0370_beemster", + "GM0373_bergen", + "GM0375_beverwijk", + "GM0376_blaricum", + "GM0377_bloemendaal", + "GM0383_castricum", + "GM0384_diemen", + "GM0385_edam_volendam", + "GM0388_enkhuizen", + "GM0392_haarlem", + "GM0394_haarlemmermeer", + "GM0396_heemskerk", + "GM0397_heemstede", + "GM0398_heerhugowaard", + "GM0399_heiloo", + "GM0400_den_helder", + "GM0402_hilversum", + "GM0405_hoorn", + "GM0406_huizen", + "GM0415_landsmeer", + "GM0416_langedijk", + "GM0417_laren", + "GM0420_medemblik", + "GM0431_oostzaan", + "GM0432_opmeer", + "GM0437_ouder_amstel", + "GM0439_purmerend", + "GM0441_schagen", + "GM0448_texel", + "GM0450_uitgeest", + "GM0451_uithoorn", + "GM0453_velsen", + "GM0457_weesp", + "GM0473_zandvoort", + "GM0479_zaanstad", + "GM0482_alblasserdam", + "GM0484_alphen_aan_den_rijn", + "GM0489_barendrecht", + "GM0498_drechterland", + "GM0501_brielle", + "GM0502_capelle_aan_den_ijssel", + "GM0503_delft", + "GM0505_dordrecht", + "GM0512_gorinchem", + "GM0513_gouda", + "GM0518_s_gravenhage", + "GM0523_hardinxveld_giessendam", + "GM0530_hellevoetsluis", + "GM0531_hendrik_ido_ambacht", + "GM0532_stede_broec", + "GM0534_hillegom", + "GM0537_katwijk", + "GM0542_krimpen_aan_den_ijssel", + "GM0546_leiden", + "GM0547_leiderdorp", + "GM0553_lisse", + "GM0556_maassluis", + "GM0569_nieuwkoop", + "GM0575_noordwijk", + "GM0579_oegstgeest", + "GM0589_oudewater", + "GM0590_papendrecht", + "GM0597_ridderkerk", + "GM0599_rotterdam", + "GM0603_rijswijk", + "GM0606_schiedam", + "GM0610_sliedrecht", + "GM0613_albrandswaard", + "GM0614_westvoorne", + "GM0622_vlaardingen", + "GM0626_voorschoten", + "GM0627_waddinxveen", + "GM0629_wassenaar", + "GM0632_woerden", + "GM0637_zoetermeer", + "GM0638_zoeterwoude", + "GM0642_zwijndrecht", + "GM0654_borsele", + "GM0664_goes", + "GM0668_west_maas_en_waal", + "GM0677_hulst", + "GM0678_kapelle", + "GM0687_middelburg", + "GM0703_reimerswaal", + "GM0715_terneuzen", + "GM0716_tholen", + "GM0717_veere", + "GM0718_vlissingen", + "GM0736_de_ronde_venen", + "GM0737_tytsjerksteradiel", + "GM0743_asten", + "GM0744_baarle_nassau", + "GM0748_bergen_op_zoom", + "GM0753_best", + "GM0755_boekel", + "GM0756_boxmeer", + "GM0757_boxtel", + "GM0758_breda", + "GM0762_deurne", + "GM0765_pekela", + "GM0766_dongen", + "GM0770_eersel", + "GM0772_eindhoven", + "GM0777_etten_leur", + "GM0779_geertruidenberg", + "GM0784_gilze_en_rijen", + "GM0785_goirle", + "GM0786_grave", + "GM0794_helmond", + "GM0796_s_hertogenbosch", + "GM0797_heusden", + "GM0798_hilvarenbeek", + "GM0809_loon_op_zand", + "GM0815_mill_en_sint_hubert", + "GM0820_nuenen_gerwen_en_nederwetten", + "GM0823_oirschot", + "GM0824_oisterwijk", + "GM0826_oosterhout", + "GM0828_oss", + "GM0840_rucphen", + "GM0845_sint_michielsgestel", + "GM0847_someren", + "GM0848_son_en_breugel", + "GM0851_steenbergen", + "GM0852_waterland", + "GM0855_tilburg", + "GM0856_uden", + "GM0858_valkenswaard", + "GM0861_veldhoven", + "GM0865_vught", + "GM0866_waalre", + "GM0867_waalwijk", + "GM0873_woensdrecht", + "GM0879_zundert", + "GM0880_wormerland", + "GM0882_landgraaf", + "GM0888_beek", + "GM0889_beesel", + "GM0893_bergen", + "GM0899_brunssum", + "GM0907_gennep", + "GM0917_heerlen", + "GM0928_kerkrade", + "GM0935_maastricht", + "GM0938_meerssen", + "GM0944_mook_en_middelaar", + "GM0946_nederweert", + "GM0957_roermond", + "GM0965_simpelveld", + "GM0971_stein", + "GM0981_vaals", + "GM0983_venlo", + "GM0984_venray", + "GM0986_voerendaal", + "GM0988_weert", + "GM0994_valkenburg_aan_de_geul", + "GM0995_lelystad", + "GM1507_horst_aan_de_maas", + "GM1509_oude_ijsselstreek", + "GM1525_teylingen", + "GM1581_utrechtse_heuvelrug", + "GM1586_oost_gelre", + "GM1598_koggenland", + "GM1621_lansingerland", + "GM1640_leudal", + "GM1641_maasgouw", + "GM1652_gemert_bakel", + "GM1655_halderberge", + "GM1658_heeze_leende", + "GM1659_laarbeek", + "GM1667_reusel_de_mierden", + "GM1669_roerdalen", + "GM1674_roosendaal", + "GM1676_schouwen_duiveland", + "GM1680_aa_en_hunze", + "GM1681_borger_odoorn", + "GM1684_cuijk", + "GM1685_landerd", + "GM1690_de_wolden", + "GM1695_noord_beveland", + "GM1696_wijdemeren", + "GM1699_noordenveld", + "GM1700_twenterand", + "GM1701_westerveld", + "GM1702_sint_anthonis", + "GM1705_lingewaard", + "GM1706_cranendonck", + "GM1708_steenwijkerland", + "GM1709_moerdijk", + "GM1711_echt_susteren", + "GM1714_sluis", + "GM1719_drimmelen", + "GM1721_bernheze", + "GM1723_alphen_chaam", + "GM1724_bergeijk", + "GM1728_bladel", + "GM1729_gulpen_wittem", + "GM1730_tynaarlo", + "GM1731_midden_drenthe", + "GM1734_overbetuwe", + "GM1735_hof_van_twente", + "GM1740_neder_betuwe", + "GM1742_rijssen_holten", + "GM1771_geldrop_mierlo", + "GM1773_olst_wijhe", + "GM1774_dinkelland", + "GM1783_westland", + "GM1842_midden_delfland", + "GM1859_berkelland", + "GM1876_bronckhorst", + "GM1883_sittard_geleen", + "GM1884_kaag_en_braassem", + "GM1891_dantumadiel", + "GM1892_zuidplas", + "GM1894_peel_en_maas", + "GM1895_oldambt", + "GM1896_zwartewaterland", + "GM1900_sudwest_fryslan", + "GM1901_bodegraven_reeuwijk", + "GM1903_eijsden_margraten", + "GM1904_stichtse_vecht", + "GM1911_hollands_kroon", + "GM1916_leidschendam_voorburg", + "GM1924_goeree_overflakkee", + "GM1926_pijnacker_nootdorp", + "GM1930_nissewaard", + "GM1931_krimpenerwaard", + "GM1940_de_fryske_marren", + "GM1942_gooise_meren", + "GM1945_berg_en_dal", + "GM1948_meierijstad", + "GM1949_waadhoeke", + "GM1950_westerwolde", + "GM1952_midden_groningen", + "GM1954_beekdaelen", + "GM1955_montferland", + "GM1959_altena", + "GM1960_west_betuwe", + "GM1961_vijfheerenlanden", + "GM1963_hoeksche_waard", + "GM1966_het_hogeland", + "GM1969_westerkwartier", + "GM1970_noardeast_fryslan", + "GM1978_molenlanden", + "GM1979_eemsdelta" +] + + +# Personal Access Token for authentication +access_token = "PERSONAL_ACCESS_TOKEN_FROM_ETM_ACCOUNT" # Replace with your actual access token + +# Function to create a blank scenario +def create_blank_scenario(area_code): + url = f"{base_url}/scenarios" + payload = { + "scenario": { + "area_code": area_code, + "end_year": 2050 + } + } + headers = { + "Authorization": f"Bearer {access_token}" + } + response = requests.post(url, json=payload, headers=headers) + if response.status_code == 422: + print(f"Error creating scenario for area code {area_code}: {response.json().get('errors')}") + return None + response.raise_for_status() + scenario_id = response.json()["id"] + return scenario_id + +# Function to get all scenario inputs and their values +def get_scenario_inputs(scenario_id): + url = f"{base_url}/scenarios/{scenario_id}/inputs" + headers = { + "Authorization": f"Bearer {access_token}" + } + response = requests.get(url, headers=headers) + response.raise_for_status() + return response.json() + +# Main script +scenario_inputs = {} + +for area_code in area_codes: + scenario_id = create_blank_scenario(area_code) + print(f"Created scenario for area code {area_code} with ID: {scenario_id}") + + inputs = get_scenario_inputs(scenario_id) + + scenario_inputs[area_code] = {} + + # Store the inputs in a dictionary with area codes as keys + for input_item in inputs: + scenario_inputs[area_code].update({input_item: inputs[input_item]['default']}) + +# Get the list of all unique input keys +all_input_keys = set() +for inputs in scenario_inputs.values(): + all_input_keys.update(inputs.keys()) + +# Create a CSV file with scenario inputs +csv_filename = "scenario_inputs_municipalities_nl_2019.csv" +with open(csv_filename, mode='w', newline='') as csv_file: + writer = csv.writer(csv_file) + + # Write the header row + header = ["Input Name"] + area_codes + writer.writerow(header) + + # Write the input values for each input key + for input_key in sorted(all_input_keys): + row = [input_key] + [scenario_inputs[area_code].get(input_key, "") for area_code in area_codes] + writer.writerow(row) + +print(f"Scenario inputs have been exported to {csv_filename}") \ No newline at end of file