From f1d7d7842c6ef54355fd93a7b6651ac2417f201e Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Thu, 30 May 2024 16:08:25 +0200
Subject: [PATCH 01/28] add general implementation to add tyndp and nep. TODO:
Remove duplicate?
---
data/nep/new_lines.csv | 16 +++
data/nep/new_links.csv | 12 ++
data/tyndp/new_lines.csv | 139 +++++++++++++++++++
data/tyndp/new_links.csv | 51 +++++++
data/tyndp/upgraded_lines.csv | 37 +++++
data/tyndp/upgraded_links.csv | 8 ++
scripts/base_network.py | 246 +++++++++++++++++++++++++++++++++-
7 files changed, 507 insertions(+), 2 deletions(-)
create mode 100644 data/nep/new_lines.csv
create mode 100644 data/nep/new_links.csv
create mode 100644 data/tyndp/new_lines.csv
create mode 100644 data/tyndp/new_links.csv
create mode 100644 data/tyndp/upgraded_lines.csv
create mode 100644 data/tyndp/upgraded_links.csv
diff --git a/data/nep/new_lines.csv b/data/nep/new_lines.csv
new file mode 100644
index 000000000..d404c80d7
--- /dev/null
+++ b/data/nep/new_lines.csv
@@ -0,0 +1,16 @@
+,bus0,bus1,length,v_nom,num_parallel,project_status,build_year,tags,geometry
+P43,Dipperz/Hessen,Bergrheinfeld//Bayern,85,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.807198712581199 50.54115855, 10.1810033 50.0082136)"
+P71,Kiel/Schleswig-Holstein,Göhl/Schleswig-Holstein,85,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.135555 54.3227085, 10.9399634 54.2861191)"
+P84,Hamburg,Sahms/Schleswig-Holstein,35,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.000654 53.550341, 10.5331297 53.5252973)"
+P227,Lübeck/Schleswig-Holstein,Sahms/Schleswig-Holstein,52,380.0,2.0,confirmed,2030,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.684738 53.866444, 10.5331297 53.5252973)"
+P402,Westerkappeln/Nordrhein-Westfalen,Gersteinwerk/Nordrhein-Westfalen,89,380.0,2.0,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (7.8772237 52.3141716, 7.722207887811252 51.6749132)"
+P470,Emden/Niedersachsen,Dörpen/West /Niedersachsen,66,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (7.2058304 53.3670541, 7.256622642835093 52.9807372)"
+P476,Hochwöhrden/Schleswig-Holstein,Mehlbek/Schleswig-Holstein,39,380.0,2.0,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.0323968 54.158602, 9.4346536 54.0045912)"
+P478,Pöschendorf/Schleswig-Holstein,Alfstedt/Niedersachsen,37,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.4944931 54.0409041, 9.0666915 53.5499782)"
+P485,Herlasgrün/Sachsen,Marktleuthen/Bayern,69,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.2299537 50.5680975, 11.9945062 50.1279651)"
+P490,Petersgmünd /Bayern,Goldshöfe /Baden-Württemberg,104,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (11.0252473 49.185644, 10.1279814 48.8940723)"
+P540,Eisfeld/Thüringen,Grafenrheinfeld /Bayern,126,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.908994 50.4269984, 10.1966808 50.0055317)"
+P625,Streumen/Sachsen,Schmölln/Sachsen,92,380.0,2.0,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (13.4054041 51.3582767, 14.2347005 51.1244043)"
+P627,Schossin/Mecklenburg-Vorpommern,Perleberg/Brandenburg,89,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (11.2823593 53.5284043, 11.8627933 53.0762716)"
+P635,Grabowhöfe/Mecklenburg-Vorpommern,Marke/Sachsen-Anhalt,280,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.594171 53.5683057, 12.252458735300388 51.7301547)"
+P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,na,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.342857 51.5255661, 12.5130329 51.1496022)"
diff --git a/data/nep/new_links.csv b/data/nep/new_links.csv
new file mode 100644
index 000000000..87c3b7f26
--- /dev/null
+++ b/data/nep/new_links.csv
@@ -0,0 +1,12 @@
+,bus0,bus1,p_nom,length,project_status,build_year,tags,geometry
+DC21,Wilhelmshaven/Niedersachsen,Lippetal/Nordrhein-Westfalen,2000.0,270,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (8.106301 53.5278793, 8.0787633 51.6516157)"
+DC25,Heide/Schleswig-Holstein,Polsum/Nordrhein-Westfalen,2000.0,440,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.0929015 54.1948456, 7.0528322 51.6264919)"
+DC31,Hemmingstedt/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,212,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.08263 54.1506435, 11.3010418 53.572637)"
+DC32,Pöschendorf/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,170,confirmed,2034,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.4944931 54.0409041, 11.3010418 53.572637)"
+DC34,Ovelgönne/Niedersachsen,Bürstadt/Hessen,2000.0,523,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (8.4209977 53.3427799, 8.4747076 49.6531823)"
+DC35,Ovelgönne/Niedersachsen,Marxheim/Taunus,2000.0,461,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (8.4209977 53.3427799, 8.4320722 50.0724011)"
+DC40,Nüttermoor/Niedersachsen,Streumen/Sachsen,2000.0,594,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (7.4360347 53.2625382, 13.4054041 51.3582767)"
+DC40plus,Dörpen/West,Klostermansfeld/Sachsen-Anhalt,2000.0,426,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (7.256622642835093 52.9807372, 11.4933395 51.5841525)"
+DC41,Alfstedt/Niedersachsen,Hüffenhardt/Baden-Württemberg,2000.0,607,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.0666915 53.5499782, 9.0827453 49.2908862)"
+DC42,Sahms/Schleswig-Holstein,Böblingen/Baden-Württemberg,2000.0,737,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.5331297 53.5252973, 9.0113444 48.684969)"
+DC42plus,Sahms/Schleswig-Holstein,Trennfeld/Bayern,2000.0,546,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.5331297 53.5252973, 9.6151453 49.7950676)"
diff --git a/data/tyndp/new_lines.csv b/data/tyndp/new_lines.csv
new file mode 100644
index 000000000..56c80aae7
--- /dev/null
+++ b/data/tyndp/new_lines.csv
@@ -0,0 +1,139 @@
+,project_status,length,build_year,underground,v_nom,tags,geometry,num_parallel
+TYNDP2020_0,in_permitting,131.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""","LINESTRING (-7.793621146853301 41.52102394053344, -8.38943499999999 40.95916)",2
+TYNDP2020_1,in_permitting,30.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""18"", ""tyndp_status""=>""in_permitting""","LINESTRING (-8.273869552394737 42.46748640601422, -7.94998199999999 42.383908)",2
+TYNDP2020_2,in_permitting,140.21,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""","LINESTRING (-7.94998199999999 42.383908, -8.582626164089064 41.764651842353146)",2
+TYNDP2020_3,in_permitting,140.21,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""","LINESTRING (-8.582626164089064 41.764651842353146, -8.67645299999999 41.303603)",2
+TYNDP2020_4,under_construction,23.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/23"", ""tyndp2020_proj_id""=>""23"", ""tyndp2020_invest_id""=>""60"", ""tyndp_status""=>""under_construction""","LINESTRING (3.08990499999999 50.50906, 3.429108 50.773813)",2
+TYNDP2020_5,under_construction,26.0,2023,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/26"", ""tyndp2020_proj_id""=>""26"", ""tyndp2020_invest_id""=>""614"", ""tyndp_status""=>""under_construction""","LINESTRING (10.465851 46.8808455082082, 10.465851 46.8808455082082)",2
+TYNDP2020_6,in_permitting,80.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""90"", ""tyndp_status""=>""in_permitting""","LINESTRING (11.126404 43.872158, 11.413422 44.580687)",2
+TYNDP2020_7,planned_not_yet_permitting,350.0,2026,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""1041"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (14.028168 42.409263, 13.345642 42.426498)",2
+TYNDP2020_8,in_permitting,120.5,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""313"", ""tyndp_status""=>""in_permitting""","LINESTRING (14.3524 49.1584, 15.687103 49.531448)",2
+TYNDP2020_9,in_permitting,117.0,2028,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""315"", ""tyndp_status""=>""in_permitting""","LINESTRING (14.3524 49.1584, 13.282471 49.60804)",2
+TYNDP2020_10,under_construction,24.0,2020,True,150,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/36"", ""tyndp2020_proj_id""=>""36"", ""tyndp2020_invest_id""=>""141"", ""tyndp_status""=>""under_construction""","LINESTRING (12.311554 55.670615, 12.271729 54.068253)",2
+TYNDP2020_11,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/39"", ""tyndp2020_proj_id""=>""39"", ""tyndp2020_invest_id""=>""144"", ""tyndp_status""=>""under_construction""","LINESTRING (9.75860599999998 54.306108, 9.29580699999999 55.075223)",2
+TYNDP2020_12,planned_not_yet_permitting,157.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/47"", ""tyndp2020_proj_id""=>""47"", ""tyndp2020_invest_id""=>""689"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (10.06485 48.282279, 10.897064 47.236355)",2
+TYNDP2020_13,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""","LINESTRING (17.539673 47.882276, 17.786865 47.653363)",2
+TYNDP2020_14,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""","LINESTRING (17.539673 47.882276, 18.540802 48.236565)",2
+TYNDP2020_15,under_construction,48.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1501"", ""tyndp_status""=>""under_construction""","LINESTRING (19.958038 48.380882, 20.55954 48.263084)",2
+TYNDP2020_16,in_permitting,60.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/78"", ""tyndp2020_proj_id""=>""78"", ""tyndp2020_invest_id""=>""458"", ""tyndp_status""=>""in_permitting""","LINESTRING (-3.21075400000001 51.135416, -2.633972 51.533523)",2
+TYNDP2020_17,in_permitting,138.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/81"", ""tyndp2020_proj_id""=>""81"", ""tyndp2020_invest_id""=>""462"", ""tyndp_status""=>""in_permitting""","LINESTRING (-6.61376999999999 53.441446, -6.65496799999999 54.509921)",2
+TYNDP2020_18,planned_not_yet_permitting,83.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""463"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-8.41964699999999 54.209042, -8.0041 54.6773)",2
+TYNDP2020_19,planned_not_yet_permitting,58.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""896"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-8.0041 54.6773, -7.2811 54.5781)",2
+TYNDP2020_20,planned_not_yet_permitting,61.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""897"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-7.2811 54.5781, -6.65496799999999 54.509921)",2
+TYNDP2020_21,planned_not_yet_permitting,61.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-8.046112 38.05458, -8.1897 37.6672)",2
+TYNDP2020_22,planned_not_yet_permitting,61.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-8.1897 37.6672, -7.73025499999999 37.397437)",2
+TYNDP2020_23,planned_not_yet_permitting,75.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""1670"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-7.55310100000001 38.17991, -7.89230299999999 38.808681)",2
+TYNDP2020_24,under_construction,75.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1488"", ""tyndp_status""=>""under_construction""","LINESTRING (4.9617 52.333661, 5.763702 52.619725)",2
+TYNDP2020_25,in_permitting,200.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""396"", ""tyndp_status""=>""in_permitting""","LINESTRING (24.612122 65.877531, 20.232697 66.70191)",2
+TYNDP2020_26,in_permitting,156.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""1710"", ""tyndp_status""=>""in_permitting""","LINESTRING (24.612122 65.877531, 26.114502 64.778807)",2
+TYNDP2020_27,under_construction,108.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/123"", ""tyndp2020_proj_id""=>""123"", ""tyndp2020_invest_id""=>""373"", ""tyndp_status""=>""under_construction""","LINESTRING (21.625214 53.051946, 21.40686 52.213497)",2
+TYNDP2020_28,in_permitting,160.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/124"", ""tyndp2020_proj_id""=>""124"", ""tyndp2020_invest_id""=>""733"", ""tyndp_status""=>""in_permitting""","LINESTRING (16.659393 57.43682, 14.749146 56.326437)",2
+TYNDP2020_29,in_permitting,178.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""86"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.636292 41.359288, 14.028168 42.409263)",2
+TYNDP2020_30,under_construction,30.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""96"", ""tyndp_status""=>""under_construction""","LINESTRING (15.555267 41.165216, 15.3286 40.9749)",2
+TYNDP2020_31,under_construction,159.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""273"", ""tyndp_status""=>""under_construction""","LINESTRING (28.02475 44.323848, 26.7166 45.0762)",2
+TYNDP2020_32,in_permitting,140.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""275"", ""tyndp_status""=>""in_permitting""","LINESTRING (27.960205 45.447607, 26.872559 46.265341)",2
+TYNDP2020_33,under_construction,86.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""800"", ""tyndp_status""=>""under_construction""","LINESTRING (27.610016 43.326177, 27.358704 42.576344)",2
+TYNDP2020_34,in_permitting,151.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""256"", ""tyndp_status""=>""in_permitting""","LINESTRING (26.003265 42.200038, 23.083964803314 40.8967964275543)",2
+TYNDP2020_35,under_construction,13.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""258"", ""tyndp_status""=>""under_construction""","LINESTRING (26.003265 42.200038, 25.804138 41.964596)",2
+TYNDP2020_36,under_construction,150.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""262"", ""tyndp_status""=>""under_construction""","LINESTRING (26.003265 42.200038, 27.358704 42.576344)",2
+TYNDP2020_37,under_construction,131.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""238"", ""tyndp_status""=>""under_construction""","LINESTRING (21.88777 45.30413, 20.706482 44.86755)",2
+TYNDP2020_38,under_construction,116.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""269"", ""tyndp_status""=>""under_construction""","LINESTRING (22.578278 44.679395, 21.88777 45.30413)",2
+TYNDP2020_39,in_permitting,274.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""","LINESTRING (21.2815 45.7426, 21.2815 45.7426)",2
+TYNDP2020_40,in_permitting,60.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1011"", ""tyndp_status""=>""in_permitting""","LINESTRING (26.154327 57.918495, 25.473175 57.541628)",2
+TYNDP2020_41,in_permitting,243.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1013"", ""tyndp_status""=>""in_permitting""","LINESTRING (28.063202 59.310067, 26.154327 57.918495)",2
+TYNDP2020_42,in_permitting,190.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1634"", ""tyndp_status""=>""in_permitting""","LINESTRING (22.740326 55.10273, 24.252319 54.796727)",2
+TYNDP2020_43,planned_not_yet_permitting,57.11,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1661"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (16.11557 54.132674, 16.6857237480894 54.0342010066989)",2
+TYNDP2020_44,planned_not_yet_permitting,119.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1662"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (16.858521 53.16571, 16.6857237480894 54.0342010066989)",2
+TYNDP2020_45,planned_not_yet_permitting,288.5,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1664"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (14.831543 53.330873, 18.104095 54.714309)",2
+TYNDP2020_46,planned_not_yet_permitting,77.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1665"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (18.104095 54.714309, 18.684998 54.266026)",2
+TYNDP2020_47,in_permitting,92.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/183"", ""tyndp2020_proj_id""=>""183"", ""tyndp2020_invest_id""=>""1018"", ""tyndp_status""=>""in_permitting""","LINESTRING (8.86459400000001 55.074436, 8.66683999999999 55.481966)",2
+TYNDP2020_48,under_construction,60.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/186"", ""tyndp2020_proj_id""=>""186"", ""tyndp2020_invest_id""=>""886"", ""tyndp_status""=>""under_construction""","LINESTRING (16.399841 48.323387, 16.820068 48.943249)",2
+TYNDP2020_49,in_permitting,60.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/187"", ""tyndp2020_proj_id""=>""187"", ""tyndp2020_invest_id""=>""997"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.080597 48.256684, 13.080597 48.256684)",2
+TYNDP2020_50,under_construction,300.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/197"", ""tyndp2020_proj_id""=>""197"", ""tyndp2020_invest_id""=>""742"", ""tyndp_status""=>""under_construction""","LINESTRING (26.114502 64.778807, 25.180664 62.262171)",2
+TYNDP2020_51,in_permitting,83.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""308"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.191833 50.341955, 12.675274 50.160683)",2
+TYNDP2020_52,under_construction,87.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""309"", ""tyndp_status""=>""under_construction""","LINESTRING (12.675274 50.160683, 13.282471 49.60804)",2
+TYNDP2020_53,under_construction,60.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""939"", ""tyndp_status""=>""under_construction""","LINESTRING (8.09143099999999 53.313647, 7.23587000000001 53.374317)",2
+TYNDP2020_54,under_construction,30.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""1684"", ""tyndp_status""=>""under_construction""","LINESTRING (8.09143099999999 53.313647, 8.00079299999999 53.55581)",2
+TYNDP2020_55,under_construction,95.0,2023,False,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/208"", ""tyndp2020_proj_id""=>""208"", ""tyndp2020_invest_id""=>""151"", ""tyndp_status""=>""under_construction""","LINESTRING (8.283691 52.344569, 8.61877400000001 53.065976)",2
+TYNDP2020_56,under_construction,182.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/208"", ""tyndp2020_proj_id""=>""208"", ""tyndp2020_invest_id""=>""156"", ""tyndp_status""=>""under_construction""","LINESTRING (6.615143 51.630805, 7.38830599999999 53.076703)",2
+TYNDP2020_57,in_permitting,45.2,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""627"", ""tyndp_status""=>""in_permitting""","LINESTRING (19.500315 43.953021, 19.388123 43.723475)",2
+TYNDP2020_58,in_permitting,100.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""","LINESTRING (19.500315 43.953021, 19.315338 43.347152)",2
+TYNDP2020_59,under_construction,151.0,2019,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1526"", ""tyndp_status""=>""under_construction""","LINESTRING (18.772888 42.315909, 19.315338 43.347152)",2
+TYNDP2020_60,under_construction,,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1527"", ""tyndp_status""=>""under_construction""","LINESTRING (20.928955 44.056999, 20.739984 43.680615)",2
+TYNDP2020_61,planned_not_yet_permitting,32.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/228"", ""tyndp2020_proj_id""=>""228"", ""tyndp2020_invest_id""=>""1231"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (7.50366199999999 47.891485, 7.71240200000001 48.103763)",2
+TYNDP2020_62,under_consideration,40.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1270"", ""tyndp_status""=>""under_consideration""","LINESTRING (15.038505 52.76751, 15.5 51.93333)",2
+TYNDP2020_63,under_consideration,40.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1271"", ""tyndp_status""=>""under_consideration""","LINESTRING (15.5 51.93333, 16.729431 52.32359)",2
+TYNDP2020_64,under_consideration,90.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1673"", ""tyndp_status""=>""under_consideration""","LINESTRING (15.5 51.93333, 16.056519 51.449728)",2
+TYNDP2020_65,under_consideration,80.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1674"", ""tyndp_status""=>""under_consideration""","LINESTRING (15.5 51.93333, 14.615936 52.125058)",2
+TYNDP2020_66,in_permitting,100.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""355"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.086975 51.069017, 16.365509 50.816348)",2
+TYNDP2020_67,under_consideration,11.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/231"", ""tyndp2020_proj_id""=>""231"", ""tyndp2020_invest_id""=>""1282"", ""tyndp_status""=>""under_consideration""","LINESTRING (8.16970799999999 47.523693, 8.205414 47.649662)",2
+TYNDP2020_68,under_consideration,91.0,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1276"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.420959 45.289022, 18.538055 44.455349)",2
+TYNDP2020_69,under_consideration,46.2,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1277"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.420959 45.289022, 18.436344 44.904884)",2
+TYNDP2020_70,under_consideration,25.0,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1279"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.420959 45.289022, 18.420959 45.289022)",2
+TYNDP2020_71,under_consideration,47.8,2032,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1530"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.436344 44.904884, 18.538055 44.455349)",2
+TYNDP2020_72,under_consideration,70.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/243"", ""tyndp2020_proj_id""=>""243"", ""tyndp2020_invest_id""=>""1269"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.663025 45.454351, 19.175262 45.75411)",2
+TYNDP2020_73,planned_not_yet_permitting,65.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/244"", ""tyndp2020_proj_id""=>""244"", ""tyndp2020_invest_id""=>""1245"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (6.25122100000001 49.182601, 7.028503 49.340336)",2
+TYNDP2020_74,under_construction,27.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/245"", ""tyndp2020_proj_id""=>""245"", ""tyndp2020_invest_id""=>""1246"", ""tyndp_status""=>""under_construction""","LINESTRING (6.936493 53.145947, 7.389679 53.097323)",2
+TYNDP2020_75,in_permitting,14.0,2024,True,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/250"", ""tyndp2020_proj_id""=>""250"", ""tyndp2020_invest_id""=>""1384"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.503174 46.35925, 9.34661899999999 46.251099)",2
+TYNDP2020_76,planned_not_yet_permitting,90.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1050"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (5.71701000000001 51.094036, 5.35583499999999 50.557942)",2
+TYNDP2020_77,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1456"", ""tyndp_status""=>""in_permitting""","LINESTRING (4.603271 51.209464, 5.71701000000001 51.094036)",2
+TYNDP2020_78,planned_not_yet_permitting,60.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1515"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (5.35583499999999 50.557942, 4.35470599999999 50.529143)",2
+TYNDP2020_79,planned_not_yet_permitting,47.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1516"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (4.22012299999999 50.864911, 4.35470599999999 50.529143)",2
+TYNDP2020_80,planned_not_yet_permitting,16.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1517"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (4.177551 51.162122, 4.22012299999999 50.864911)",2
+TYNDP2020_81,planned_not_yet_permitting,36.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1676"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (4.177551 51.162122, 4.603271 51.209464)",2
+TYNDP2020_82,under_construction,125.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/258"", ""tyndp2020_proj_id""=>""258"", ""tyndp2020_invest_id""=>""667"", ""tyndp_status""=>""under_construction""","LINESTRING (9.24087500000001 53.906765, 8.86459400000001 55.074436)",2
+TYNDP2020_83,under_consideration,120.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/259"", ""tyndp2020_proj_id""=>""259"", ""tyndp2020_invest_id""=>""1205"", ""tyndp_status""=>""under_consideration""","LINESTRING (21.566162 47.659838, 22.026215 47.044861)",2
+TYNDP2020_84,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.556022 47.302744, 8.298798 47.148634)",2
+TYNDP2020_85,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.556022 47.302744, 9.253235 46.824496)",2
+TYNDP2020_86,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.556022 47.302744, 9.80228979023356 47.6377345779987)",2
+TYNDP2020_87,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.556022 47.302744, 9.790192 47.138359)",2
+TYNDP2020_88,in_permitting,64.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1259"", ""tyndp_status""=>""in_permitting""","LINESTRING (8.16970799999999 47.523693, 8.298798 47.148634)",2
+TYNDP2020_89,in_permitting,45.4,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1287"", ""tyndp_status""=>""in_permitting""","LINESTRING (7.19192499999999 47.364874, 7.22213700000001 47.007416)",2
+TYNDP2020_90,in_permitting,87.1,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1288"", ""tyndp_status""=>""in_permitting""","LINESTRING (8.298798 47.148634, 8.32488999999999 46.532414)",2
+TYNDP2020_91,planned_not_yet_permitting,,2035,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/265"", ""tyndp2020_proj_id""=>""265"", ""tyndp2020_invest_id""=>""1290"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (8.85498 46.16081, 8.32488999999999 46.532414)",2
+TYNDP2020_92,in_permitting,124.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1286"", ""tyndp_status""=>""in_permitting""","LINESTRING (7.555847 46.336499, 8.795929 46.401882)",2
+TYNDP2020_93,in_permitting,106.6,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1733"", ""tyndp_status""=>""in_permitting""","LINESTRING (7.64236499999999 47.079475, 7.555847 46.336499)",2
+TYNDP2020_94,under_construction,30.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1734"", ""tyndp_status""=>""under_construction""","LINESTRING (7.165833 46.200745, 7.555847 46.336499)",2
+TYNDP2020_95,planned_not_yet_permitting,110.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1212"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-1.14818 42.10892, -1.671123 41.952398)",2
+TYNDP2020_96,planned_not_yet_permitting,80.0,2029,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1208"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-0.812988000000009 43.979969, -0.575409000000004 43.345155)",2
+TYNDP2020_97,under_construction,1.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""","LINESTRING (4.307132 51.301299, 4.307132 51.301299)",2
+TYNDP2020_98,under_construction,128.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/312"", ""tyndp2020_proj_id""=>""312"", ""tyndp2020_invest_id""=>""1472"", ""tyndp_status""=>""under_construction""","LINESTRING (13.080597 48.256684, 12.803192 47.244746)",2
+TYNDP2020_99,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/313"", ""tyndp2020_proj_id""=>""313"", ""tyndp2020_invest_id""=>""1473"", ""tyndp_status""=>""in_permitting""","LINESTRING (12.172852 48.638354, 13.080597 48.256684)",2
+TYNDP2020_100,under_construction,80.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/320"", ""tyndp2020_proj_id""=>""320"", ""tyndp2020_invest_id""=>""1558"", ""tyndp_status""=>""under_construction""","LINESTRING (15.724182 46.386728, 16.689606 46.633408)",2
+TYNDP2020_101,in_permitting,85.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""","LINESTRING (10.06485 48.282279, 9.73251299999999 47.623752)",2
+TYNDP2020_102,in_permitting,11.0,2025,True,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/323"", ""tyndp2020_proj_id""=>""323"", ""tyndp2020_invest_id""=>""1478"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.717804 45.526555, 13.791962 45.691792)",2
+TYNDP2020_103,in_permitting,22.5,2023,True,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/324"", ""tyndp2020_proj_id""=>""324"", ""tyndp2020_invest_id""=>""1482"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.471985 45.801042, 13.654633 45.967379)",2
+TYNDP2020_104,planned_not_yet_permitting,40.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/328"", ""tyndp2020_proj_id""=>""328"", ""tyndp2020_invest_id""=>""1630"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (6.590884 49.789617, 6.140853 49.688695)",2
+TYNDP2020_105,under_consideration,78.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/330"", ""tyndp2020_proj_id""=>""330"", ""tyndp2020_invest_id""=>""1498"", ""tyndp_status""=>""under_consideration""","LINESTRING (17.440796 49.236431, 18.287416 49.038186)",2
+TYNDP2020_106,under_construction,139.0,2023,False,132,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/336"", ""tyndp2020_proj_id""=>""336"", ""tyndp2020_invest_id""=>""1556"", ""tyndp_status""=>""under_construction""","LINESTRING (11.604309 47.081345, 11.604309 47.081345)",2
+TYNDP2020_107,planned_not_yet_permitting,100.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/340"", ""tyndp2020_proj_id""=>""340"", ""tyndp2020_invest_id""=>""1519"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (3.429108 50.773813, 4.35470599999999 50.529143)",2
+TYNDP2020_108,under_consideration,60.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1538"", ""tyndp_status""=>""under_consideration""","LINESTRING (20.9729 44.874362, 20.378265 44.819838)",2
+TYNDP2020_109,planned_not_yet_permitting,180.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1532"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (17.201843 44.772087, 15.26017 44.886816)",2
+TYNDP2020_110,planned_not_yet_permitting,68.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1533"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (15.26017 44.886816, 14.558258 45.323186)",2
+TYNDP2020_111,under_consideration,165.0,2040,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/344"", ""tyndp2020_proj_id""=>""344"", ""tyndp2020_invest_id""=>""1541"", ""tyndp_status""=>""under_consideration""","LINESTRING (6.14410399999999 52.52207, 5.671692 51.908696)",2
+TYNDP2020_112,planned_not_yet_permitting,160.0,2025,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1639"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-9.578832 54.120411, -8.268819 53.134319)",2
+TYNDP2020_113,under_construction,161.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""","LINESTRING (20.725963 41.239159, 19.966278 41.16108)",2
+TYNDP2020_114,planned_not_yet_permitting,140.0,2027,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/375"", ""tyndp2020_proj_id""=>""375"", ""tyndp2020_invest_id""=>""1555"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (12.693329 46.798179, 11.666107 45.792425)",2
+TYNDP2020_115,under_consideration,38.8,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1593"", ""tyndp_status""=>""under_consideration""","LINESTRING (-2.880286 43.349776, -3.05282599999999 43.265206)",2
+TYNDP2020_116,under_consideration,69.12,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1595"", ""tyndp_status""=>""under_consideration""","LINESTRING (-2.880286 43.349776, -2.24395799999999 43.047816)",2
+TYNDP2020_117,under_consideration,57.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1597"", ""tyndp_status""=>""under_consideration""","LINESTRING (-2.880286 43.349776, -2.20687899999999 43.098977)",2
+TYNDP2020_118,under_consideration,170.0,2030,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1042"", ""tyndp2020_proj_id""=>""1042"", ""tyndp2020_invest_id""=>""1694"", ""tyndp_status""=>""under_consideration""","LINESTRING (21.295624 56.032924, 23.506622 56.113404)",2
+TYNDP2020_119,under_consideration,72.0,2030,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1042"", ""tyndp2020_proj_id""=>""1042"", ""tyndp2020_invest_id""=>""1695"", ""tyndp_status""=>""under_consideration""","LINESTRING (24.307251 55.762668, 23.506622 56.113404)",2
+TYNDP2020_120,under_construction,14.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1685"", ""tyndp_status""=>""under_construction""","LINESTRING (9.48532099999999 53.629168, 9.48532099999999 53.629168)",2
+TYNDP2020_121,under_construction,60.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""","LINESTRING (10.299683 52.286643, 9.988131 51.954234)",2
+TYNDP2020_122,under_construction,45.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""","LINESTRING (9.988131 51.954234, 9.852428 51.649318)",2
+TYNDP2020_123,under_construction,105.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""","LINESTRING (9.852428 51.649318, 9.621277 50.85971)",2
+TYNDP2020_124,in_permitting,290.0,2028,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1688"", ""tyndp_status""=>""in_permitting""","LINESTRING (26.842346 64.556701, 27.766571 62.262171)",2
+TYNDP2020_125,in_permitting,100.0,2029,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1689"", ""tyndp_status""=>""in_permitting""","LINESTRING (25.692902 65.279688, 26.842346 64.556701)",2
+TYNDP2020_126,planned_not_yet_permitting,175.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1697"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (25.180664 62.262171, 24.915619 60.90707)",2
+TYNDP2020_127,under_consideration,31.0,2035,True,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1047"", ""tyndp2020_proj_id""=>""1047"", ""tyndp2020_invest_id""=>""1691"", ""tyndp_status""=>""under_consideration""","LINESTRING (7.23587000000001 53.374317, 6.86370800000001 53.418536)",2
+TYNDP2020_128,planned_not_yet_permitting,170.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1052"", ""tyndp2020_proj_id""=>""1052"", ""tyndp2020_invest_id""=>""1713"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (12.693329 46.798179, 14.5912685597917 46.536256583087)",2
+TYNDP2020_129,planned_not_yet_permitting,105.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1054"", ""tyndp2020_proj_id""=>""1054"", ""tyndp2020_invest_id""=>""1715"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (10.897064 47.236355, 11.964111 47.292271)",2
+TYNDP2020_130,under_consideration,90.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1723"", ""tyndp_status""=>""under_consideration""","LINESTRING (16.78425 43.503952, 17.436701 43.052743)",2
+TYNDP2020_131,under_consideration,105.0,2035,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1724"", ""tyndp_status""=>""under_consideration""","LINESTRING (17.436701 43.052743, 18.23576 42.610562)",2
+TYNDP2020_132,in_permitting,50.0,2027,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""645"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.996094 39.990799, 16.020813 39.780047)",2
+TYNDP2020_133,in_permitting,,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.03067 40.66814, 15.058136 40.941527)",2
+TYNDP2020_134,in_permitting,,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.058136 40.941527, 14.957886 41.143501)",2
+TYNDP2020_135,under_construction,40.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1063"", ""tyndp2020_proj_id""=>""1063"", ""tyndp2020_invest_id""=>""1731"", ""tyndp_status""=>""under_construction""","LINESTRING (4.218787 51.424034, 4.218787 51.424034)",2
+TYNDP2020_136,under_consideration,50.6,2036,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1742"", ""tyndp_status""=>""under_consideration""","LINESTRING (19.720459 46.020807, 20.170898 46.29856)",2
+TYNDP2020_137,under_consideration,80.0,2036,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1743"", ""tyndp_status""=>""under_consideration""","LINESTRING (19.175262 45.75411, 19.756165 45.527517)",2
diff --git a/data/tyndp/new_links.csv b/data/tyndp/new_links.csv
new file mode 100644
index 000000000..10c87f224
--- /dev/null
+++ b/data/tyndp/new_links.csv
@@ -0,0 +1,51 @@
+,project_status,length,build_year,underground,p_nom,tags,geometry
+TYNDP2020_0,under_consideration,330.0,2033,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/234"", ""tyndp2020_proj_id""=>""234"", ""tyndp2020_invest_id""=>""1236"", ""tyndp_status""=>""under_consideration""","LINESTRING (12.492828 55.609384, 16.11557 54.132674)"
+TYNDP2020_1,in_permitting,700.0,2026,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.24087500000001 53.906765, 9.12211621382025 49.0939516665424)"
+TYNDP2020_2,in_permitting,558.0,2026,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.327393 53.931837, 10.081329 49.950336)"
+TYNDP2020_3,under_consideration,200.0,2035,True,800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/239"", ""tyndp2020_proj_id""=>""239"", ""tyndp2020_invest_id""=>""1241"", ""tyndp_status""=>""under_consideration""","LINESTRING (17.166138 63.184727, 21.901245 63.03068)"
+TYNDP2020_4,planned_not_yet_permitting,267.0,2030,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1692"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (8.00079299999999 53.55581, 8.06808499999999 51.653815)"
+TYNDP2020_5,planned_not_yet_permitting,407.0,2030,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1693"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (9.13101199999999 54.20101, 7.06420899999999 51.66063)"
+TYNDP2020_6,under_construction,445.0,2026,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/28"", ""tyndp2020_proj_id""=>""28"", ""tyndp2020_invest_id""=>""1503"", ""tyndp_status""=>""under_construction""","LINESTRING (14.028168 42.409263, 18.772888 42.315909)"
+TYNDP2020_7,in_permitting,240.0,2023,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/247"", ""tyndp2020_proj_id""=>""247"", ""tyndp2020_invest_id""=>""1381"", ""tyndp_status""=>""in_permitting""","LINESTRING (-1.05331400000001 50.900435, 1.11373900000001 49.712937)"
+TYNDP2020_8,under_consideration,133.0,2027,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1040"", ""tyndp2020_proj_id""=>""1040"", ""tyndp2020_invest_id""=>""1677"", ""tyndp_status""=>""under_consideration""","LINESTRING (-5.80902099999999 54.726206, -4.880676 55.704677)"
+TYNDP2020_9,under_construction,623.0,2020,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/37"", ""tyndp2020_proj_id""=>""37"", ""tyndp2020_invest_id""=>""142"", ""tyndp_status""=>""under_construction""","LINESTRING (6.82251000000001 58.660514, 9.327393 53.931837)"
+TYNDP2020_10,in_permitting,340.0,2024,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/254"", ""tyndp2020_proj_id""=>""254"", ""tyndp2020_invest_id""=>""660"", ""tyndp_status""=>""in_permitting""","LINESTRING (6.58493 51.245584, 8.478699 49.283036)"
+TYNDP2020_11,under_consideration,230.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1049"", ""tyndp2020_proj_id""=>""1049"", ""tyndp2020_invest_id""=>""1706"", ""tyndp_status""=>""under_consideration""","LINESTRING (0.763549999999995 51.403489, 3.18054200000001 51.330612)"
+TYNDP2020_12,under_consideration,610.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1050"", ""tyndp2020_proj_id""=>""1050"", ""tyndp2020_invest_id""=>""1707"", ""tyndp_status""=>""under_consideration""","LINESTRING (0.482024999999987 51.519853, 7.23587000000001 53.374317)"
+TYNDP2020_13,under_consideration,640.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1051"", ""tyndp2020_proj_id""=>""1051"", ""tyndp2020_invest_id""=>""1708"", ""tyndp_status""=>""under_consideration""","LINESTRING (1.30737299999999 52.593038, 9.22851599999999 55.481188)"
+TYNDP2020_14,under_consideration,300.0,2030,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/267"", ""tyndp2020_proj_id""=>""267"", ""tyndp2020_invest_id""=>""1262"", ""tyndp_status""=>""under_consideration""","LINESTRING (13.580475 55.86067, 12.204437 53.760078)"
+TYNDP2020_15,planned_not_yet_permitting,230.0,2030,False,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1211"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-1.671123 41.952398, -0.575409000000004 43.345155)"
+TYNDP2020_16,under_consideration,200.0,2040,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1058"", ""tyndp2020_proj_id""=>""1058"", ""tyndp2020_invest_id""=>""1726"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.43585963014029 48.6383575221442, 8.298798 47.148634)"
+TYNDP2020_17,in_permitting,500.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/107"", ""tyndp2020_proj_id""=>""107"", ""tyndp2020_invest_id""=>""810"", ""tyndp_status""=>""in_permitting""","LINESTRING (-8.36471600000001 51.892597, -4.237976 48.518424)"
+TYNDP2020_18,under_construction,720.0,2021,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/110"", ""tyndp2020_proj_id""=>""110"", ""tyndp2020_invest_id""=>""424"", ""tyndp_status""=>""under_construction""","LINESTRING (6.649475 59.461826, -1.572418 55.113728)"
+TYNDP2020_19,planned_not_yet_permitting,225.0,2029,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1206"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-1.645402 42.818157, -0.812988000000009 43.979969)"
+TYNDP2020_20,under_consideration,195.0,2036,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1740"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.227692 57.571097, 21.100616 56.489036)"
+TYNDP2020_21,planned_not_yet_permitting,156.0,2022,True,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/285"", ""tyndp2020_proj_id""=>""285"", ""tyndp2020_invest_id""=>""1383"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (0.575409000000004 51.430896, 2.16293300000001 50.923813)"
+TYNDP2020_22,in_permitting,540.0,2025,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/130"", ""tyndp2020_proj_id""=>""130"", ""tyndp2020_invest_id""=>""665"", ""tyndp_status""=>""in_permitting""","LINESTRING (11.637268 52.27404, 12.292328 48.659222)"
+TYNDP2020_23,in_permitting,300.0,2025,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/132"", ""tyndp2020_proj_id""=>""132"", ""tyndp2020_invest_id""=>""661"", ""tyndp_status""=>""in_permitting""","LINESTRING (7.23587000000001 53.374317, 6.58493 51.245584)"
+TYNDP2020_24,under_consideration,110.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1747"", ""tyndp_status""=>""under_consideration""","LINESTRING (22.9422 40.662931, 22.111359 41.50035)"
+TYNDP2020_25,under_consideration,170.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1748"", ""tyndp_status""=>""under_consideration""","LINESTRING (22.111359 41.50035, 23.03833 42.549034)"
+TYNDP2020_26,under_consideration,180.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1081"", ""tyndp2020_proj_id""=>""1081"", ""tyndp2020_invest_id""=>""1749"", ""tyndp_status""=>""under_consideration""","LINESTRING (21.137695 39.279042, 19.966278 41.16108)"
+TYNDP2020_27,under_consideration,665.0,2026,True,1800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""","LINESTRING (-1.972046 43.32318, -1.847076 47.30531)"
+TYNDP2020_28,under_consideration,665.0,2026,True,1800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""","LINESTRING (-1.847076 47.30531, -3.967438 50.489842)"
+TYNDP2020_29,in_permitting,100.0,2024,True,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""","LINESTRING (8.63662699999999 40.644178, 9.45098899999999 42.538916)"
+TYNDP2020_30,in_permitting,50.0,2024,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.45098899999999 42.538916, 10.671844 43.014689)"
+TYNDP2020_31,in_permitting,170.0,2028,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/150"", ""tyndp2020_proj_id""=>""150"", ""tyndp2020_invest_id""=>""616"", ""tyndp_status""=>""in_permitting""","LINESTRING (12.516174 45.825928, 14.615936 46.084662)"
+TYNDP2020_32,in_permitting,700.0,2024,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/309"", ""tyndp2020_proj_id""=>""309"", ""tyndp2020_invest_id""=>""1628"", ""tyndp_status""=>""in_permitting""","LINESTRING (0.763549999999995 51.403489, 8.00079299999999 53.55581)"
+TYNDP2020_33,in_permitting,400.0,2026,True,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1034"", ""tyndp_status""=>""in_permitting""","LINESTRING (21.295624 56.032924, 18.104095 54.714309)"
+TYNDP2020_34,under_consideration,328.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1505"", ""tyndp_status""=>""under_consideration""","LINESTRING (8.66683999999999 55.481966, 3.590555 55.343106)"
+TYNDP2020_35,under_consideration,360.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1506"", ""tyndp_status""=>""under_consideration""","LINESTRING (4.05120799999999 51.942572, 3.590555 55.343106)"
+TYNDP2020_36,under_construction,69.0,2021,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/172"", ""tyndp2020_proj_id""=>""172"", ""tyndp2020_invest_id""=>""1487"", ""tyndp_status""=>""under_construction""","LINESTRING (0.95855700000001 51.059523, 1.833344 50.902167)"
+TYNDP2020_37,in_permitting,165.0,2024,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/174"", ""tyndp2020_proj_id""=>""174"", ""tyndp2020_invest_id""=>""1014"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.449615 45.620761, 9.253235 46.824496)"
+TYNDP2020_38,in_permitting,300.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/176"", ""tyndp2020_proj_id""=>""176"", ""tyndp2020_invest_id""=>""995"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.580475 55.86067, 12.204437 53.760078)"
+TYNDP2020_39,under_consideration,170.0,2030,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/179"", ""tyndp2020_proj_id""=>""179"", ""tyndp2020_invest_id""=>""1016"", ""tyndp_status""=>""under_consideration""","LINESTRING (11.969604 55.468735, 12.271729 54.068253)"
+TYNDP2020_40,under_consideration,290.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1507"", ""tyndp_status""=>""under_consideration""","LINESTRING (6.86370800000001 53.418536, 3.590555 55.343106)"
+TYNDP2020_41,under_consideration,390.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1508"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.24087500000001 53.906765, 3.590555 55.343106)"
+TYNDP2020_42,under_consideration,400.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1509"", ""tyndp_status""=>""under_consideration""","LINESTRING (8.418274 53.182996, 3.590555 55.343106)"
+TYNDP2020_43,under_consideration,490.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1511"", ""tyndp_status""=>""under_consideration""","LINESTRING (10.458984 53.435719, 3.590555 55.343106)"
+TYNDP2020_44,planned_not_yet_permitting,400.0,2030,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/338"", ""tyndp2020_proj_id""=>""338"", ""tyndp2020_invest_id""=>""1521"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (14.028168 42.409263, 12.811432 43.915702)"
+TYNDP2020_45,planned_not_yet_permitting,400.0,2025,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (9.18319700000001 39.374649, 13.304443 38.159396)"
+TYNDP2020_46,planned_not_yet_permitting,500.0,2025,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (9.18319700000001 39.374649, 14.639282 40.688969)"
+TYNDP2020_47,under_consideration,150.0,2035,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/225"", ""tyndp2020_proj_id""=>""225"", ""tyndp2020_invest_id""=>""1107"", ""tyndp_status""=>""under_consideration""","LINESTRING (5.35583499999999 50.557942, 6.568451 50.403266)"
+TYNDP2020_48,planned_not_yet_permitting,211.0,2025,False,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1638"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-3.474151 53.250084, -6.602175 53.348929)"
+TYNDP2020_49,planned_not_yet_permitting,255.0,2025,False,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1640"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-6.602175 53.348929, -9.578832 54.120411)"
diff --git a/data/tyndp/upgraded_lines.csv b/data/tyndp/upgraded_lines.csv
new file mode 100644
index 000000000..f360a54da
--- /dev/null
+++ b/data/tyndp/upgraded_lines.csv
@@ -0,0 +1,37 @@
+,project_status,length,build_year,underground,v_nom,tags,geometry,num_parallel
+14637,under_construction,205.0,2020,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""386"", ""tyndp_status""=>""under_construction""","LINESTRING (25.166931 58.185909, 24.271545 56.917998)",2
+5735,under_construction,15.0,2020,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""1062"", ""tyndp_status""=>""under_construction""","LINESTRING (24.271545 56.917998, 24.264679 56.854228)",2
+6031,in_permitting,32.0,2024,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1490"", ""tyndp_status""=>""in_permitting""","LINESTRING (5.763702 52.619725, 6.14410399999999 52.52207)",2
+5123,in_permitting,35.0,2023,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1539"", ""tyndp_status""=>""in_permitting""","LINESTRING (4.592285 51.916321, 4.83398400000001 51.704055)",2
+8591,in_permitting,80.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""382"", ""tyndp_status""=>""in_permitting""","LINESTRING (25.132599 54.591958, 25.415497 54.854478)",2
+6377,under_consideration,76.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1004"", ""tyndp_status""=>""under_consideration""","LINESTRING (24.689026 58.377959, 25.19989 58.921664)",2
+14651,in_permitting,133.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1010"", ""tyndp_status""=>""in_permitting""","LINESTRING (26.559448 58.359953, 25.473175 57.541628)",2
+8435,planned_not_yet_permitting,41.5,2023,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1663"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (14.440155 53.16571, 14.831543 53.330873)",2
+12697,in_permitting,70.0,2021,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""353"", ""tyndp_status""=>""in_permitting""","LINESTRING (14.440155 53.16571, 15.038505 52.76751)",2
+14734,under_construction,49.0,2022,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1284"", ""tyndp_status""=>""under_construction""","LINESTRING (10.362854 46.809459, 9.79568500000001 46.561693)",2
+6348,under_construction,17.0,2020,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""","LINESTRING (4.26544200000001 51.358062, 4.307132 51.301299)",2
+6347,in_permitting,4.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""","LINESTRING (4.307132 51.301299, 4.27917500000001 51.25504)",2
+10813,in_permitting,10.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.73251299999999 47.623752, 9.80228979023356 47.6377345779987)",2
+14499,under_consideration,2.0,2030,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1536"", ""tyndp_status""=>""under_consideration""","LINESTRING (22.578278 44.679395, 22.542572 44.612956)",2
+9296,planned_not_yet_permitting,203.0,2030,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1534"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (15.26017 44.886816, 16.500092 43.603267)",2
+6044,in_permitting,80.0,2029,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/346"", ""tyndp2020_proj_id""=>""346"", ""tyndp2020_invest_id""=>""1544"", ""tyndp_status""=>""in_permitting""","LINESTRING (4.218787 51.424034, 5.061511 51.608344)",2
+6087,under_construction,40.0,2023,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/348"", ""tyndp2020_proj_id""=>""348"", ""tyndp2020_invest_id""=>""1546"", ""tyndp_status""=>""under_construction""","LINESTRING (6.86370800000001 53.418536, 6.474759 53.213488)",2
+14697,under_consideration,35.512,2036,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/376"", ""tyndp2020_proj_id""=>""376"", ""tyndp2020_invest_id""=>""1559"", ""tyndp_status""=>""under_consideration""","LINESTRING (21.474152 40.839788, 21.475525 41.045181)",2
+14758,under_consideration,12.0,2030,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/377"", ""tyndp2020_proj_id""=>""377"", ""tyndp2020_invest_id""=>""1561"", ""tyndp_status""=>""under_consideration""","LINESTRING (5.71701000000001 51.094036, 5.89691199999999 51.140586)",2
+8621,in_permitting,131.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""","LINESTRING (-7.72338899999999 41.614416, -7.793621146853301 41.52102394053344)",2
+6066,under_construction,175.0,2021,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""735"", ""tyndp_status""=>""under_construction""","LINESTRING (24.588776 59.38778, 24.689026 58.377959)",2
+6036,in_permitting,50.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1540"", ""tyndp_status""=>""in_permitting""","LINESTRING (5.46295200000001 51.422333, 5.89691199999999 51.140586)",2
+3715,in_permitting,94.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""257"", ""tyndp_status""=>""in_permitting""","LINESTRING (26.003265 42.200038, 24.483032 42.09007)",2
+8260,in_permitting,74.0,2025,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""","LINESTRING (21.88777 45.30413, 21.2815 45.7426)",2
+8367,in_permitting,274.0,2025,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""","LINESTRING (21.2815 45.7426, 21.409607 46.176978)",2
+6040,in_permitting,168.0,2023,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1012"", ""tyndp_status""=>""in_permitting""","LINESTRING (28.063202 59.310067, 26.559448 58.359953)",2
+10487,in_permitting,44.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1634"", ""tyndp_status""=>""in_permitting""","LINESTRING (22.067413 55.076009, 22.740326 55.10273)",2
+8589,in_permitting,147.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1659"", ""tyndp_status""=>""in_permitting""","LINESTRING (21.295624 56.032924, 22.067413 55.076009)",2
+9503,in_permitting,51.0,2023,False,220.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/210"", ""tyndp2020_proj_id""=>""210"", ""tyndp2020_invest_id""=>""1380"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.022919 46.263443, 12.947388 46.363041)",2
+1693,in_permitting,,2026,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""","LINESTRING (20.187378 44.664746, 19.500315 43.953021)",2
+12696,in_permitting,147.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""1232"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.038505 52.76751, 16.729431 52.32359)",2
+3966,planned_not_yet_permitting,70.0,2029,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1207"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-0.812988000000009 43.979969, -0.547943 44.563077)",2
+14277,in_permitting,15.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""","LINESTRING (4.27917500000001 51.25504, 4.177551 51.162122)",2
+14594,under_consideration,70.0,2034,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/325"", ""tyndp2020_proj_id""=>""325"", ""tyndp2020_invest_id""=>""1483"", ""tyndp_status""=>""under_consideration""","LINESTRING (14.5912685597917 46.536256583087, 15.119934 46.263443)",2
+12655,under_construction,161.0,2020,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""","LINESTRING (21.475525 41.045181, 20.725963 41.239159)",2
+6355,under_consideration,90.0,2036,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1744"", ""tyndp_status""=>""under_consideration""","LINESTRING (19.756165 45.527517, 19.609222 45.021127)",2
diff --git a/data/tyndp/upgraded_links.csv b/data/tyndp/upgraded_links.csv
new file mode 100644
index 000000000..e1fbb3ba2
--- /dev/null
+++ b/data/tyndp/upgraded_links.csv
@@ -0,0 +1,8 @@
+,project_status,length,build_year,underground,p_nom,tags,geometry
+T0,in_permitting,370.0,2027,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/16"", ""tyndp2020_proj_id""=>""16"", ""tyndp2020_invest_id""=>""38"", ""tyndp_status""=>""in_permitting""","LINESTRING (-2.880286 43.349776, -0.341949000000001 45.030833)"
+14801,under_construction,90.0,2020,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/92"", ""tyndp2020_proj_id""=>""92"", ""tyndp2020_invest_id""=>""146"", ""tyndp_status""=>""under_construction""","LINESTRING (6.46545399999999 50.831096, 5.688171 50.729502)"
+T17,in_permitting,665.0,2024,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/190"", ""tyndp2020_proj_id""=>""190"", ""tyndp2020_invest_id""=>""1382"", ""tyndp_status""=>""in_permitting""","LINESTRING (7.23331357825616 60.5160767478361, -1.815491 57.484833)"
+T25,planned_not_yet_permitting,195.0,2023,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/286"", ""tyndp2020_proj_id""=>""286"", ""tyndp2020_invest_id""=>""1385"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-6.96670499999999 52.27404, -4.850464 51.728729)"
+T12,in_permitting,220.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/153"", ""tyndp2020_proj_id""=>""153"", ""tyndp2020_invest_id""=>""987"", ""tyndp_status""=>""in_permitting""","LINESTRING (-1.47628799999999 49.460984, -3.357697 50.739062)"
+T13,under_construction,770.0,2023,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/167"", ""tyndp2020_proj_id""=>""167"", ""tyndp2020_invest_id""=>""998"", ""tyndp_status""=>""under_construction""","LINESTRING (9.22851599999999 55.481188, -0.208961173685554 52.9600676434916)"
+5635,under_consideration,125.0,2036,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1741"", ""tyndp_status""=>""under_consideration""","LINESTRING (16.659393 57.43682, 18.227692 57.571097)"
diff --git a/scripts/base_network.py b/scripts/base_network.py
index 870fcf19e..6bc92b416 100644
--- a/scripts/base_network.py
+++ b/scripts/base_network.py
@@ -72,6 +72,7 @@
"""
import logging
+import os
from itertools import product
import geopandas as gpd
@@ -722,6 +723,241 @@ def _set_shapes(n, country_shapes, offshore_shapes):
)
+def _add_new_buses(n, new_buses, lines, port):
+ new_buses = n.madd(
+ "Bus",
+ name=lines.loc[new_buses.values].index,
+ x=lines.loc[new_buses.values, f"x{port}"],
+ y=lines.loc[new_buses.values, f"y{port}"],
+ carrier="AC",
+ )
+
+
+def _find_closest_bus(lines, n, offshore_shapes=None, distance_upper_bound=np.inf):
+ # Find closest bus to each line
+ bus_tree = spatial.KDTree(n.buses[["x", "y"]])
+
+ def _assign_closest_bus(port):
+ """
+ Find the closest existing bus to the port of each line.
+
+ If closest bus is further away than distance_upper_bound, a new
+ bus is created. and the line is connected to it.
+ """
+ lines_coords = lines.geometry.apply(
+ lambda x: pd.Series(get_coords_from_port(x, port=port), index=["x", "y"])
+ )
+ distances, indices = bus_tree.query(lines_coords)
+
+ # Series of lines which have a close bus in the existing network
+ close_buses = distances < distance_upper_bound
+ closest_bus_series = pd.Series(close_buses, index=n.buses.iloc[indices].index)
+ # For buses which are not close to any existing bus, only add a new bus if the line is going offshore (e.g. North Sea Wind Power Hub)
+ if not closest_bus_series.all() and offshore_shapes:
+ offshore_shape = gpd.read_file(offshore_shapes)
+ potential_buses = closest_bus_series[~closest_bus_series]
+ potential_buses = n.buses.loc[potential_buses.index]
+ is_offshore = potential_buses.apply(
+ lambda x: offshore_shape.unary_union.contains(Point(x.x, x.y)), axis=1
+ )
+ new_buses = potential_buses[is_offshore]
+
+ closest_bus_series[:] = True
+ closest_bus_series.loc[new_buses.index] = False
+
+ if not new_buses.empty:
+ new_buses = _add_new_buses(n, ~closest_bus_series, lines, port)
+ lines.loc[~closest_bus_series.values, f"bus{port}"] = new_buses.index
+ else:
+ closest_bus_series[:] = True
+
+ lines.loc[closest_bus_series.values, f"bus{port}"] = n.buses.iloc[
+ indices[closest_bus_series]
+ ].index
+
+ for port in [0, 1]:
+ _assign_closest_bus(port)
+ #
+ lines.loc[:, "under_construction"] = True
+
+ return lines
+
+
+def reduce_linestring_to_endpoints(linestring_wkt, reversed=False):
+ """
+ Reduces a linestring to its start and end points. Used to simplify the
+ linestring which can have more than two points.
+
+ Parameters:
+ linestring_wkt (str): Well-known text representation of the linestring.
+ reversed (bool, optional): If True, returns the end and start points instead of the start and end points.
+ Defaults to False.
+
+ Returns:
+ numpy.ndarray: Flattened array of start and end coordinates.
+ """
+ linestring = shapely.wkt.loads(linestring_wkt)
+ coords = np.asarray(linestring.coords)
+ ind = [0, -1] if not reversed else [-1, 0]
+ start_end_coords = coords[ind]
+ return start_end_coords.flatten()
+
+
+def get_coords_from_port(linestring_wkt, port=0):
+ """
+ Extracts the coordinates of a specified port from a given linestring.
+
+ Parameters:
+ linestring_wkt (str): The well-known text representation of the linestring.
+ port (int): The index of the port to extract coordinates from. Default is 0.
+
+ Returns:
+ tuple: The coordinates of the specified port as a tuple (x, y).
+ """
+ linestring = shapely.wkt.loads(linestring_wkt)
+ coords = np.asarray(linestring.coords)
+ ind = [0, -1]
+ coords = coords[ind]
+ coords = coords[port]
+ return coords
+
+
+def _find_closest_lines(lines, new_lines, distance_upper_bound=1.5):
+ """
+ Find the closest lines in a given set of lines to a set of new lines.
+
+ Parameters:
+ lines (pandas.DataFrame): DataFrame with column geometry containing the existing lines.
+ new_lines (pandas.DataFrame): DataFrame with column geometry containing the new lines.
+ distance_upper_bound (float, optional): Maximum distance to consider a line as a match. Defaults to 1.5.
+
+ Returns:
+ pandas.Series: Series containing with index the new lines and values providing closest existing line.
+ """
+
+ # get coordinates of start and end points of all lines, for new lines we need to check both directions
+ treelines = lines.geometry.apply(reduce_linestring_to_endpoints)
+ querylines = pd.concat(
+ [
+ new_lines.geometry.apply(reduce_linestring_to_endpoints),
+ new_lines.geometry.apply(reduce_linestring_to_endpoints, reversed=True),
+ ]
+ )
+ treelines = np.vstack(treelines)
+ querylines = np.vstack(querylines)
+ tree = spatial.KDTree(treelines)
+ dist, ind = tree.query(querylines, distance_upper_bound=distance_upper_bound)
+ found_b = ind < len(lines)
+ # since the new lines are checked in both directions, we need to find the correct index of the new line
+ found_i = np.arange(len(querylines))[found_b] % len(new_lines)
+ if len(found_i) < len(new_lines):
+ not_found = new_lines.index.difference(new_lines.index[found_i])
+ logger.warning(
+ "Could not find lines close enough to the upgraded lines:\n"
+ + str(not_found.to_list())
+ + "\n Hence, the given upgraded lines are ignored."
+ )
+ # create a DataFrame with the distances, new line and its closest existing line
+ line_map = pd.DataFrame(
+ dict(D=dist[found_b], i=lines.index[ind[found_b] % len(lines)]),
+ index=new_lines.index[found_i].rename("new_lines"),
+ )
+ # only keep the closer line of the new line pair (since lines are checked in both directions)
+ line_map = line_map.sort_values(by="D")[
+ lambda ds: ~ds.index.duplicated(keep="first")
+ ].sort_index()["i"]
+ return line_map
+
+
+def _adjust_decommissing(branch, n, upgraded_lines, line_map):
+ """
+ Adjust the decommissioning year of the existing lines to the built year of
+ the upgraded lines.
+ """
+ n.df(branch).loc[
+ line_map, "build_year"
+ ] = 2015 # dummy build_year to make existing lines decommissioned when upgraded lines are built
+ n.df(branch).loc[line_map, "lifetime"] = (
+ upgraded_lines.rename(line_map)["build_year"]
+ - n.df(branch).loc[line_map, "build_year"]
+ ) # set lifetime to the difference between build year of upgraded line and existing line
+
+
+def _get_upgraded_lines(branch_componnent, n, upgraded_lines, line_map):
+ """
+ Get upgraded lines by merging information of existing line and upgraded
+ line.
+ """
+ # get first the information of the existing lines which will be upgraded
+ lines_to_add = n.df(branch_componnent).loc[line_map].copy()
+ # get columns of upgraded lines which are not in existing lines
+ new_columns = upgraded_lines.columns.difference(lines_to_add.columns)
+ # rename upgraded lines to match existing lines
+ upgraded_lines = upgraded_lines.rename(line_map)
+ # set the same index names to be able to merge
+ upgraded_lines.index.name = lines_to_add.index.name
+ # merge upgraded lines with existing lines
+ lines_to_add.update(upgraded_lines)
+ # add column which was added in upgraded lines
+ lines_to_add = pd.concat([lines_to_add, upgraded_lines[new_columns]], axis=1)
+ # change index of new lines to avoid duplicates
+ lines_to_add.index = lines_to_add.index.astype(str) + "_upgraded"
+ return lines_to_add
+
+
+def _get_project_files(plan="tyndp"):
+ path = f"data/{plan}/"
+ lines = dict()
+ try:
+ files = os.listdir(path)
+ except FileNotFoundError:
+ files = []
+ if files:
+ for file in files:
+ if file.endswith(".csv"):
+ name = file.split(".")[0]
+ lines[name] = pd.read_csv(path + file, index_col=0)
+ else:
+ logger.warning(f"No projects found for {plan}")
+ return lines
+
+
+def _add_projects(n, offshore_shapes, plan="tyndp"):
+ lines = _get_project_files(plan)
+ for key, df in lines.items():
+ if "new_lines" in key:
+ new_lines = _find_closest_bus(df, n)
+ duplicate_lines = _find_closest_lines(
+ n.lines, new_lines, distance_upper_bound=0.1
+ )
+ n.import_components_from_dataframe(new_lines, "Line")
+ elif "new_links" in key:
+ new_links = _find_closest_bus(
+ df, n, offshore_shapes, distance_upper_bound=0.4
+ )
+ duplicate_lines = _find_closest_lines(
+ n.links, new_links, distance_upper_bound=0.20
+ )
+ n.import_components_from_dataframe(new_links, "Link")
+ elif "upgraded_lines" in key:
+ line_map = _find_closest_lines(n.lines, df, distance_upper_bound=0.20)
+ upgraded_lines = df.loc[line_map.index]
+ _adjust_decommissing("Line", n, upgraded_lines, line_map)
+ upgraded_lines = _get_upgraded_lines("Line", n, upgraded_lines, line_map)
+ n.import_components_from_dataframe(upgraded_lines, "Line")
+ elif "upgraded_links" in key:
+ line_map = _find_closest_lines(
+ n.links.query("carrier=='DC'"), df, distance_upper_bound=0.20
+ )
+ upgraded_links = df.loc[line_map.index]
+ _adjust_decommissing("Link", n, upgraded_links, line_map)
+ upgraded_links = _get_upgraded_lines("Link", n, upgraded_links, line_map)
+ n.import_components_from_dataframe(upgraded_links, "Link")
+ else:
+ logger.warning(f"Unknown project type {key}")
+ continue
+
+
def base_network(
eg_buses,
eg_converters,
@@ -739,8 +975,8 @@ def base_network(
buses = _load_buses_from_eg(eg_buses, europe_shape, config["electricity"])
links = _load_links_from_eg(buses, eg_links)
- if config["links"].get("include_tyndp"):
- buses, links = _add_links_from_tyndp(buses, links, links_tyndp, europe_shape)
+ # if config["links"].get("include_tyndp"):
+ # buses, links = _add_links_from_tyndp(buses, links, links_tyndp, europe_shape)
converters = _load_converters_from_eg(buses, eg_converters)
@@ -768,6 +1004,12 @@ def base_network(
n.import_components_from_dataframe(links, "Link")
n.import_components_from_dataframe(converters, "Link")
+ include_nep = True
+ if include_nep:
+ _add_projects(
+ n, offshore_shapes, plan="tyndp"
+ ) # TODO: add path with snakemake.params.path
+
_set_lines_s_nom_from_linetypes(n)
_apply_parameter_corrections(n, parameter_corrections)
From bcd3623839399403881c6e9d9dc11da1d569fc84 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Tue, 18 Jun 2024 15:10:39 +0200
Subject: [PATCH 02/28] pre_osm_merge
---
config/config.default.yaml | 9 +++-
rules/build_electricity.smk | 2 +-
scripts/base_network.py | 91 ++++++++++++++++++++++++++++---------
3 files changed, 79 insertions(+), 23 deletions(-)
diff --git a/config/config.default.yaml b/config/config.default.yaml
index 1e7af9ea9..e3b4d1027 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -291,9 +291,16 @@ links:
p_max_pu: 1.0
p_nom_max: .inf
max_extension: 30000 #MW
- include_tyndp: true
+ include_tyndp: false
under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
+# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#line_projects
+line_projects:
+ include_projects:
+ tyndp: true
+ nep: true
+ status: ['confirmed', 'in_permitting', 'under_construction'] # 'planned_not_yet_permitting', 'under_consideration'
+
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transformers
transformers:
x: 0.1
diff --git a/rules/build_electricity.smk b/rules/build_electricity.smk
index b415d2d92..80568f09e 100644
--- a/rules/build_electricity.smk
+++ b/rules/build_electricity.smk
@@ -70,8 +70,8 @@ rule base_network:
countries=config_provider("countries"),
snapshots=config_provider("snapshots"),
drop_leap_day=config_provider("enable", "drop_leap_day"),
+ line_projects=config_provider("line_projects"),
lines=config_provider("lines"),
- links=config_provider("links"),
transformers=config_provider("transformers"),
input:
eg_buses="data/entsoegridkit/buses.csv",
diff --git a/scripts/base_network.py b/scripts/base_network.py
index 6bc92b416..688cf133f 100644
--- a/scripts/base_network.py
+++ b/scripts/base_network.py
@@ -745,7 +745,7 @@ def _assign_closest_bus(port):
bus is created. and the line is connected to it.
"""
lines_coords = lines.geometry.apply(
- lambda x: pd.Series(get_coords_from_port(x, port=port), index=["x", "y"])
+ lambda x: pd.Series(_get_coords_from_port(x, port=port), index=["x", "y"])
)
distances, indices = bus_tree.query(lines_coords)
@@ -803,7 +803,7 @@ def reduce_linestring_to_endpoints(linestring_wkt, reversed=False):
return start_end_coords.flatten()
-def get_coords_from_port(linestring_wkt, port=0):
+def _get_coords_from_port(linestring_wkt, port=0):
"""
Extracts the coordinates of a specified port from a given linestring.
@@ -822,14 +822,14 @@ def get_coords_from_port(linestring_wkt, port=0):
return coords
-def _find_closest_lines(lines, new_lines, distance_upper_bound=1.5):
+def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1):
"""
Find the closest lines in a given set of lines to a set of new lines.
Parameters:
lines (pandas.DataFrame): DataFrame with column geometry containing the existing lines.
new_lines (pandas.DataFrame): DataFrame with column geometry containing the new lines.
- distance_upper_bound (float, optional): Maximum distance to consider a line as a match. Defaults to 1.5.
+ distance_upper_bound (float, optional): Maximum distance to consider a line as a match. Defaults to 0.1 which corresponds to approximately 15 km.
Returns:
pandas.Series: Series containing with index the new lines and values providing closest existing line.
@@ -853,9 +853,8 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=1.5):
if len(found_i) < len(new_lines):
not_found = new_lines.index.difference(new_lines.index[found_i])
logger.warning(
- "Could not find lines close enough to the upgraded lines:\n"
+ "Could not find lines close enough to provided lines:\n"
+ str(not_found.to_list())
- + "\n Hence, the given upgraded lines are ignored."
)
# create a DataFrame with the distances, new line and its closest existing line
line_map = pd.DataFrame(
@@ -922,22 +921,72 @@ def _get_project_files(plan="tyndp"):
return lines
-def _add_projects(n, offshore_shapes, plan="tyndp"):
+def _remove_projects_outside_countries(lines, europe_shape):
+ """
+ Remove projects which are not in the considered countries.
+ """
+ europe_shape = gpd.read_file(europe_shape).loc[0, "geometry"]
+ europe_shape_prepped = shapely.prepared.prep(europe_shape)
+ is_within_covered_countries = lines.geometry.apply(
+ lambda x: europe_shape_prepped.contains(shapely.wkt.loads(x))
+ )
+
+ if not is_within_covered_countries.all():
+ logger.info(
+ "Project lines outside of the covered area (skipping): "
+ + ", ".join(str(i) for i in lines.loc[~is_within_covered_countries].index)
+ )
+
+ lines = lines.loc[is_within_covered_countries]
+ return lines
+
+
+def _is_similar(ds1, ds2, percentage=10):
+ """
+ Check if values in series ds2 are within a specified percentage of series
+ ds1.
+
+ Returns:
+ - A boolean series where True indicates ds2 values are within the percentage range of ds2.
+ """
+ lower_bound = ds1 * (1 - percentage / 100)
+ upper_bound = ds1 * (1 + percentage / 100)
+ return np.logical_and(ds2 >= lower_bound, ds2 <= upper_bound)
+
+
+def _add_projects(
+ n,
+ europe_shape,
+ offshore_shapes,
+ plan="tyndp",
+ status=["confirmed", "under construction"],
+):
lines = _get_project_files(plan)
+
for key, df in lines.items():
+ df = _remove_projects_outside_countries(df, europe_shape)
+ df = df.query("status in @status")
if "new_lines" in key:
new_lines = _find_closest_bus(df, n)
duplicate_lines = _find_closest_lines(
- n.lines, new_lines, distance_upper_bound=0.1
+ n.lines, new_lines, distance_upper_bound=0.10
)
+ # ignore duplicates where v_nom is not within a tolerance of 10%
+ to_ignore = _is_similar(
+ new_lines.loc[duplicate_lines.index, "v_nom"],
+ duplicate_lines.map(n.lines["v_nom"]),
+ )
+ duplicate_lines = duplicate_lines[~to_ignore]
+ new_lines = new_lines.drop(duplicate_lines.index, errors="ignore")
n.import_components_from_dataframe(new_lines, "Line")
elif "new_links" in key:
new_links = _find_closest_bus(
df, n, offshore_shapes, distance_upper_bound=0.4
)
- duplicate_lines = _find_closest_lines(
- n.links, new_links, distance_upper_bound=0.20
+ duplicate_links = _find_closest_lines(
+ n.links, new_links, distance_upper_bound=0.10
)
+ new_links = new_links.drop(duplicate_lines.index, errors="ignore")
n.import_components_from_dataframe(new_links, "Link")
elif "upgraded_lines" in key:
line_map = _find_closest_lines(n.lines, df, distance_upper_bound=0.20)
@@ -964,8 +1013,7 @@ def base_network(
eg_transformers,
eg_lines,
eg_links,
- links_p_nom,
- links_tyndp,
+ line_projects,
europe_shape,
country_shapes,
offshore_shapes,
@@ -975,8 +1023,6 @@ def base_network(
buses = _load_buses_from_eg(eg_buses, europe_shape, config["electricity"])
links = _load_links_from_eg(buses, eg_links)
- # if config["links"].get("include_tyndp"):
- # buses, links = _add_links_from_tyndp(buses, links, links_tyndp, europe_shape)
converters = _load_converters_from_eg(buses, eg_converters)
@@ -1004,11 +1050,15 @@ def base_network(
n.import_components_from_dataframe(links, "Link")
n.import_components_from_dataframe(converters, "Link")
- include_nep = True
- if include_nep:
- _add_projects(
- n, offshore_shapes, plan="tyndp"
- ) # TODO: add path with snakemake.params.path
+ for project, include in line_projects.include_projects.items():
+ if include:
+ _add_projects(
+ n,
+ europe_shape,
+ offshore_shapes,
+ plan=project,
+ status=line_projects.status,
+ )
_set_lines_s_nom_from_linetypes(n)
@@ -1182,8 +1232,7 @@ def append_bus_shapes(n, shapes, type):
snakemake.input.eg_transformers,
snakemake.input.eg_lines,
snakemake.input.eg_links,
- snakemake.input.links_p_nom,
- snakemake.input.links_tyndp,
+ snakemake.params.line_projects,
snakemake.input.europe_shape,
snakemake.input.country_shapes,
snakemake.input.offshore_shapes,
From 040af14ca9d339cbd023aff1b45ff43a6515f7ca Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Fri, 5 Jul 2024 12:38:49 +0200
Subject: [PATCH 03/28] clean and update base_network.py update default config
settings
---
config/config.default.yaml | 18 ++--
data/nep/new_lines.csv | 2 +-
rules/build_electricity.smk | 2 +-
scripts/base_network.py | 172 +++++++++++++++++++++---------------
4 files changed, 116 insertions(+), 78 deletions(-)
diff --git a/config/config.default.yaml b/config/config.default.yaml
index 76a06bd91..90ae58c8f 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -305,15 +305,21 @@ links:
p_max_pu: 1.0
p_nom_max: .inf
max_extension: 30000 #MW
- include_tyndp: false
+ include_tyndp: true
under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
-# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#line_projects
-line_projects:
- include_projects:
- tyndp: true
+# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transmission_projects
+transmission_projects:
+ include:
+ #tyndp: true # For later, when other TYNDP projects are combined with new version
nep: true
- status: ['confirmed', 'in_permitting', 'under_construction'] # 'planned_not_yet_permitting', 'under_consideration'
+ status:
+ - confirmed
+ - in_permitting
+ - under_construction
+ #- under_consideration
+ line_under_construction: keep
+ link_under_construction: zero
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transformers
transformers:
diff --git a/data/nep/new_lines.csv b/data/nep/new_lines.csv
index d404c80d7..4e6e2d4b2 100644
--- a/data/nep/new_lines.csv
+++ b/data/nep/new_lines.csv
@@ -13,4 +13,4 @@ P540,Eisfeld/Thüringen,Grafenrheinfeld /Bayern,126,380.0,2.0,confirmed,2037,"{"
P625,Streumen/Sachsen,Schmölln/Sachsen,92,380.0,2.0,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (13.4054041 51.3582767, 14.2347005 51.1244043)"
P627,Schossin/Mecklenburg-Vorpommern,Perleberg/Brandenburg,89,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (11.2823593 53.5284043, 11.8627933 53.0762716)"
P635,Grabowhöfe/Mecklenburg-Vorpommern,Marke/Sachsen-Anhalt,280,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.594171 53.5683057, 12.252458735300388 51.7301547)"
-P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,na,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.342857 51.5255661, 12.5130329 51.1496022)"
+P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.342857 51.5255661, 12.5130329 51.1496022)"
diff --git a/rules/build_electricity.smk b/rules/build_electricity.smk
index 633476908..909687510 100644
--- a/rules/build_electricity.smk
+++ b/rules/build_electricity.smk
@@ -70,7 +70,7 @@ rule base_network:
countries=config_provider("countries"),
snapshots=config_provider("snapshots"),
drop_leap_day=config_provider("enable", "drop_leap_day"),
- line_projects=config_provider("line_projects"),
+ transmission_projects=config_provider("transmission_projects"),
lines=config_provider("lines"),
transformers=config_provider("transformers"),
input:
diff --git a/scripts/base_network.py b/scripts/base_network.py
index 46c5bb9d5..716977662 100644
--- a/scripts/base_network.py
+++ b/scripts/base_network.py
@@ -724,62 +724,70 @@ def _set_shapes(n, country_shapes, offshore_shapes):
)
-def _add_new_buses(n, new_buses, lines, port):
- new_buses = n.madd(
+def _add_new_buses(n, new_buses, port):
+ duplicated = new_buses.duplicated(subset=["x", "y"], keep="first")
+ to_add = new_buses[~duplicated]
+ # new_buses.groupby(["x", "y"])["neighbor"].transform("first")
+ added_buses = n.madd(
"Bus",
- name=lines.loc[new_buses.values].index,
- x=lines.loc[new_buses.values, f"x{port}"],
- y=lines.loc[new_buses.values, f"y{port}"],
+ names=to_add.index,
+ suffix=" bus",
+ x=to_add.x,
+ y=to_add.y,
+ v_nom=380,
+ under_construction=True,
+ symbol="substation",
carrier="AC",
)
+ new_buses.loc[to_add.index, "neighbor"] = added_buses
+ new_buses["neighbor"] = new_buses.groupby(["x", "y"])["neighbor"].transform("first")
+ return new_buses
def _find_closest_bus(lines, n, offshore_shapes=None, distance_upper_bound=np.inf):
- # Find closest bus to each line
- bus_tree = spatial.KDTree(n.buses[["x", "y"]])
+ """
+ Find the closest existing bus to the port of each line.
- def _assign_closest_bus(port):
- """
- Find the closest existing bus to the port of each line.
+ If closest bus is further away than distance_upper_bound and is
+ inside an offshore region, a new bus is created. and the line is
+ connected to it.
+ """
+ bus_tree = spatial.KDTree(n.buses[["x", "y"]])
- If closest bus is further away than distance_upper_bound, a new
- bus is created. and the line is connected to it.
- """
- lines_coords = lines.geometry.apply(
+ for port in [0, 1]:
+ lines_port = lines.geometry.apply(
lambda x: pd.Series(_get_coords_from_port(x, port=port), index=["x", "y"])
)
- distances, indices = bus_tree.query(lines_coords)
+ distances, indices = bus_tree.query(lines_port)
+ # Series of lines with closest bus in the existing network and whether they match the distance criterion
+ lines_port["neighbor"] = n.buses.iloc[indices].index
+ lines_port["match_distance"] = distances < distance_upper_bound
- # Series of lines which have a close bus in the existing network
- close_buses = distances < distance_upper_bound
- closest_bus_series = pd.Series(close_buses, index=n.buses.iloc[indices].index)
# For buses which are not close to any existing bus, only add a new bus if the line is going offshore (e.g. North Sea Wind Power Hub)
- if not closest_bus_series.all() and offshore_shapes:
+ if not lines_port.match_distance.all() and offshore_shapes:
offshore_shape = gpd.read_file(offshore_shapes)
- potential_buses = closest_bus_series[~closest_bus_series]
- potential_buses = n.buses.loc[potential_buses.index]
- is_offshore = potential_buses.apply(
+ potential_new_buses = lines_port[~lines_port.match_distance]
+ is_offshore = potential_new_buses.apply(
lambda x: offshore_shape.unary_union.contains(Point(x.x, x.y)), axis=1
)
- new_buses = potential_buses[is_offshore]
-
- closest_bus_series[:] = True
- closest_bus_series.loc[new_buses.index] = False
-
+ new_buses = potential_new_buses[is_offshore]
if not new_buses.empty:
- new_buses = _add_new_buses(n, ~closest_bus_series, lines, port)
- lines.loc[~closest_bus_series.values, f"bus{port}"] = new_buses.index
- else:
- closest_bus_series[:] = True
+ new_buses = _add_new_buses(n, new_buses, port)
+ lines_port.loc[new_buses.index, "match_distance"] = True
+ lines_port.loc[new_buses.index, "neighbor"] = new_buses.neighbor
+
+ if not lines_port.match_distance.all():
+ logging.warning(
+ "Could not find bus close enough to connect the the following lines:\n"
+ + str(lines_port[~lines_port.match_distance].index.to_list())
+ + "\n Lines will be ignored."
+ )
+ lines.drop(lines_port[~lines_port.match_distance].index, inplace=True)
+ lines_port = lines_port[lines_port.match_distance]
- lines.loc[closest_bus_series.values, f"bus{port}"] = n.buses.iloc[
- indices[closest_bus_series]
- ].index
+ lines.loc[lines_port.index, f"bus{port}"] = lines_port.loc[:, "neighbor"]
- for port in [0, 1]:
- _assign_closest_bus(port)
- #
- lines.loc[:, "under_construction"] = True
+ lines = lines.assign(under_construction=True)
return lines
@@ -823,9 +831,9 @@ def _get_coords_from_port(linestring_wkt, port=0):
return coords
-def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1):
+def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
"""
- Find the closest lines in a given set of lines to a set of new lines.
+ Find the closest lines in the existing set of lines to a set of new lines.
Parameters:
lines (pandas.DataFrame): DataFrame with column geometry containing the existing lines.
@@ -837,6 +845,7 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1):
"""
# get coordinates of start and end points of all lines, for new lines we need to check both directions
+ lines = lines[~lines.geometry.isna()]
treelines = lines.geometry.apply(reduce_linestring_to_endpoints)
querylines = pd.concat(
[
@@ -851,12 +860,22 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1):
found_b = ind < len(lines)
# since the new lines are checked in both directions, we need to find the correct index of the new line
found_i = np.arange(len(querylines))[found_b] % len(new_lines)
- if len(found_i) < len(new_lines):
- not_found = new_lines.index.difference(new_lines.index[found_i])
- logger.warning(
- "Could not find lines close enough to provided lines:\n"
- + str(not_found.to_list())
- )
+ if type == "new":
+ if len(found_i) != 0:
+ found = new_lines.index[found_i]
+ logger.warning(
+ "Found new lines similar to existing lines:\n"
+ + str(found.to_list())
+ + "\n Lines are assumed to be duplicated and will be ignored."
+ )
+ elif type == "upgraded":
+ if len(found_i) < len(new_lines):
+ not_found = new_lines.index.difference(new_lines.index[found_i])
+ logger.warning(
+ "Could not find upgraded lines close enough to provided lines:\n"
+ + str(not_found.to_list())
+ + "\n Lines will be ignored."
+ )
# create a DataFrame with the distances, new line and its closest existing line
line_map = pd.DataFrame(
dict(D=dist[found_b], i=lines.index[ind[found_b] % len(lines)]),
@@ -876,7 +895,7 @@ def _adjust_decommissing(branch, n, upgraded_lines, line_map):
"""
n.df(branch).loc[
line_map, "build_year"
- ] = 2015 # dummy build_year to make existing lines decommissioned when upgraded lines are built
+ ] = 1990 # dummy build_year to make existing lines decommissioned when upgraded lines are built
n.df(branch).loc[line_map, "lifetime"] = (
upgraded_lines.rename(line_map)["build_year"]
- n.df(branch).loc[line_map, "build_year"]
@@ -908,17 +927,16 @@ def _get_upgraded_lines(branch_componnent, n, upgraded_lines, line_map):
def _get_project_files(plan="tyndp"):
path = f"data/{plan}/"
lines = dict()
- try:
+ if os.path.exists(path):
files = os.listdir(path)
- except FileNotFoundError:
+ else:
+ logger.warning(f"No projects found for {plan}")
files = []
if files:
for file in files:
if file.endswith(".csv"):
name = file.split(".")[0]
lines[name] = pd.read_csv(path + file, index_col=0)
- else:
- logger.warning(f"No projects found for {plan}")
return lines
@@ -933,7 +951,7 @@ def _remove_projects_outside_countries(lines, europe_shape):
)
if not is_within_covered_countries.all():
- logger.info(
+ logger.warning(
"Project lines outside of the covered area (skipping): "
+ ", ".join(str(i) for i in lines.loc[~is_within_covered_countries].index)
)
@@ -962,15 +980,17 @@ def _add_projects(
plan="tyndp",
status=["confirmed", "under construction"],
):
- lines = _get_project_files(plan)
-
- for key, df in lines.items():
- df = _remove_projects_outside_countries(df, europe_shape)
- df = df.query("status in @status")
+ # todo remove
+ status = ["confirmed", "under construction", "under_consideration"]
+ lines_dict = _get_project_files(plan)
+ logging.info(f"Adding {len(lines_dict)} projects from {plan} to the network.")
+ for key, lines in lines_dict.items():
+ lines = _remove_projects_outside_countries(lines, europe_shape)
+ lines = lines.loc[lines.project_status.isin(status)]
if "new_lines" in key:
- new_lines = _find_closest_bus(df, n)
+ new_lines = _find_closest_bus(lines, n)
duplicate_lines = _find_closest_lines(
- n.lines, new_lines, distance_upper_bound=0.10
+ n.lines, new_lines, distance_upper_bound=0.10, type="new"
)
# ignore duplicates where v_nom is not within a tolerance of 10%
to_ignore = _is_similar(
@@ -982,24 +1002,30 @@ def _add_projects(
n.import_components_from_dataframe(new_lines, "Line")
elif "new_links" in key:
new_links = _find_closest_bus(
- df, n, offshore_shapes, distance_upper_bound=0.4
+ lines, n, offshore_shapes, distance_upper_bound=0.4
)
duplicate_links = _find_closest_lines(
- n.links, new_links, distance_upper_bound=0.10
+ n.links, new_links, distance_upper_bound=0.10, type="new"
)
- new_links = new_links.drop(duplicate_lines.index, errors="ignore")
+ new_links = new_links.drop(duplicate_links.index, errors="ignore")
n.import_components_from_dataframe(new_links, "Link")
elif "upgraded_lines" in key:
- line_map = _find_closest_lines(n.lines, df, distance_upper_bound=0.20)
- upgraded_lines = df.loc[line_map.index]
+ line_map = _find_closest_lines(
+ n.lines, lines, distance_upper_bound=0.20, type="upgraded"
+ )
+ upgraded_lines = lines.loc[line_map.index]
_adjust_decommissing("Line", n, upgraded_lines, line_map)
upgraded_lines = _get_upgraded_lines("Line", n, upgraded_lines, line_map)
+ # TODO need to adjust type of upgraded lines to new line type after added to pypsa.line_types
n.import_components_from_dataframe(upgraded_lines, "Line")
elif "upgraded_links" in key:
line_map = _find_closest_lines(
- n.links.query("carrier=='DC'"), df, distance_upper_bound=0.20
+ n.links.query("carrier=='DC'"),
+ lines,
+ distance_upper_bound=0.20,
+ type="upgraded",
)
- upgraded_links = df.loc[line_map.index]
+ upgraded_links = lines.loc[line_map.index]
_adjust_decommissing("Link", n, upgraded_links, line_map)
upgraded_links = _get_upgraded_lines("Link", n, upgraded_links, line_map)
n.import_components_from_dataframe(upgraded_links, "Link")
@@ -1014,7 +1040,9 @@ def base_network(
eg_transformers,
eg_lines,
eg_links,
- line_projects,
+ links_p_nom,
+ links_tyndp,
+ transmission_projects,
europe_shape,
country_shapes,
offshore_shapes,
@@ -1024,6 +1052,8 @@ def base_network(
buses = _load_buses_from_eg(eg_buses, europe_shape, config["electricity"])
links = _load_links_from_eg(buses, eg_links)
+ # if config["links"].get("include_tyndp"):
+ # buses, links = _add_links_from_tyndp(buses, links, links_tyndp, europe_shape)
converters = _load_converters_from_eg(buses, eg_converters)
@@ -1051,14 +1081,14 @@ def base_network(
n.import_components_from_dataframe(links, "Link")
n.import_components_from_dataframe(converters, "Link")
- for project, include in line_projects.include_projects.items():
+ for project, include in transmission_projects["include"].items():
if include:
_add_projects(
n,
europe_shape,
offshore_shapes,
plan=project,
- status=line_projects.status,
+ status=transmission_projects["status"],
)
_set_lines_s_nom_from_linetypes(n)
@@ -1233,7 +1263,9 @@ def append_bus_shapes(n, shapes, type):
snakemake.input.eg_transformers,
snakemake.input.eg_lines,
snakemake.input.eg_links,
- snakemake.params.line_projects,
+ snakemake.input.links_p_nom,
+ snakemake.input.links_tyndp,
+ snakemake.params.transmission_projects,
snakemake.input.europe_shape,
snakemake.input.country_shapes,
snakemake.input.offshore_shapes,
From b2ad68827e6e01bdac22d893cbe616fc525a19ff Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Fri, 5 Jul 2024 12:38:49 +0200
Subject: [PATCH 04/28] clean and update base_network.py update default config
settings
---
config/config.default.yaml | 18 ++--
data/nep/new_lines.csv | 2 +-
rules/build_electricity.smk | 2 +-
scripts/base_network.py | 170 +++++++++++++++++++++---------------
4 files changed, 114 insertions(+), 78 deletions(-)
diff --git a/config/config.default.yaml b/config/config.default.yaml
index 76a06bd91..90ae58c8f 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -305,15 +305,21 @@ links:
p_max_pu: 1.0
p_nom_max: .inf
max_extension: 30000 #MW
- include_tyndp: false
+ include_tyndp: true
under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
-# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#line_projects
-line_projects:
- include_projects:
- tyndp: true
+# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transmission_projects
+transmission_projects:
+ include:
+ #tyndp: true # For later, when other TYNDP projects are combined with new version
nep: true
- status: ['confirmed', 'in_permitting', 'under_construction'] # 'planned_not_yet_permitting', 'under_consideration'
+ status:
+ - confirmed
+ - in_permitting
+ - under_construction
+ #- under_consideration
+ line_under_construction: keep
+ link_under_construction: zero
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transformers
transformers:
diff --git a/data/nep/new_lines.csv b/data/nep/new_lines.csv
index d404c80d7..4e6e2d4b2 100644
--- a/data/nep/new_lines.csv
+++ b/data/nep/new_lines.csv
@@ -13,4 +13,4 @@ P540,Eisfeld/Thüringen,Grafenrheinfeld /Bayern,126,380.0,2.0,confirmed,2037,"{"
P625,Streumen/Sachsen,Schmölln/Sachsen,92,380.0,2.0,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (13.4054041 51.3582767, 14.2347005 51.1244043)"
P627,Schossin/Mecklenburg-Vorpommern,Perleberg/Brandenburg,89,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (11.2823593 53.5284043, 11.8627933 53.0762716)"
P635,Grabowhöfe/Mecklenburg-Vorpommern,Marke/Sachsen-Anhalt,280,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.594171 53.5683057, 12.252458735300388 51.7301547)"
-P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,na,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.342857 51.5255661, 12.5130329 51.1496022)"
+P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.342857 51.5255661, 12.5130329 51.1496022)"
diff --git a/rules/build_electricity.smk b/rules/build_electricity.smk
index 633476908..909687510 100644
--- a/rules/build_electricity.smk
+++ b/rules/build_electricity.smk
@@ -70,7 +70,7 @@ rule base_network:
countries=config_provider("countries"),
snapshots=config_provider("snapshots"),
drop_leap_day=config_provider("enable", "drop_leap_day"),
- line_projects=config_provider("line_projects"),
+ transmission_projects=config_provider("transmission_projects"),
lines=config_provider("lines"),
transformers=config_provider("transformers"),
input:
diff --git a/scripts/base_network.py b/scripts/base_network.py
index 46c5bb9d5..c2051a46b 100644
--- a/scripts/base_network.py
+++ b/scripts/base_network.py
@@ -724,62 +724,70 @@ def _set_shapes(n, country_shapes, offshore_shapes):
)
-def _add_new_buses(n, new_buses, lines, port):
- new_buses = n.madd(
+def _add_new_buses(n, new_buses, port):
+ duplicated = new_buses.duplicated(subset=["x", "y"], keep="first")
+ to_add = new_buses[~duplicated]
+ # new_buses.groupby(["x", "y"])["neighbor"].transform("first")
+ added_buses = n.madd(
"Bus",
- name=lines.loc[new_buses.values].index,
- x=lines.loc[new_buses.values, f"x{port}"],
- y=lines.loc[new_buses.values, f"y{port}"],
+ names=to_add.index,
+ suffix=" bus",
+ x=to_add.x,
+ y=to_add.y,
+ v_nom=380,
+ under_construction=True,
+ symbol="substation",
carrier="AC",
)
+ new_buses.loc[to_add.index, "neighbor"] = added_buses
+ new_buses["neighbor"] = new_buses.groupby(["x", "y"])["neighbor"].transform("first")
+ return new_buses
def _find_closest_bus(lines, n, offshore_shapes=None, distance_upper_bound=np.inf):
- # Find closest bus to each line
- bus_tree = spatial.KDTree(n.buses[["x", "y"]])
+ """
+ Find the closest existing bus to the port of each line.
- def _assign_closest_bus(port):
- """
- Find the closest existing bus to the port of each line.
+ If closest bus is further away than distance_upper_bound and is
+ inside an offshore region, a new bus is created. and the line is
+ connected to it.
+ """
+ bus_tree = spatial.KDTree(n.buses[["x", "y"]])
- If closest bus is further away than distance_upper_bound, a new
- bus is created. and the line is connected to it.
- """
- lines_coords = lines.geometry.apply(
+ for port in [0, 1]:
+ lines_port = lines.geometry.apply(
lambda x: pd.Series(_get_coords_from_port(x, port=port), index=["x", "y"])
)
- distances, indices = bus_tree.query(lines_coords)
+ distances, indices = bus_tree.query(lines_port)
+ # Series of lines with closest bus in the existing network and whether they match the distance criterion
+ lines_port["neighbor"] = n.buses.iloc[indices].index
+ lines_port["match_distance"] = distances < distance_upper_bound
- # Series of lines which have a close bus in the existing network
- close_buses = distances < distance_upper_bound
- closest_bus_series = pd.Series(close_buses, index=n.buses.iloc[indices].index)
# For buses which are not close to any existing bus, only add a new bus if the line is going offshore (e.g. North Sea Wind Power Hub)
- if not closest_bus_series.all() and offshore_shapes:
+ if not lines_port.match_distance.all() and offshore_shapes:
offshore_shape = gpd.read_file(offshore_shapes)
- potential_buses = closest_bus_series[~closest_bus_series]
- potential_buses = n.buses.loc[potential_buses.index]
- is_offshore = potential_buses.apply(
+ potential_new_buses = lines_port[~lines_port.match_distance]
+ is_offshore = potential_new_buses.apply(
lambda x: offshore_shape.unary_union.contains(Point(x.x, x.y)), axis=1
)
- new_buses = potential_buses[is_offshore]
-
- closest_bus_series[:] = True
- closest_bus_series.loc[new_buses.index] = False
-
+ new_buses = potential_new_buses[is_offshore]
if not new_buses.empty:
- new_buses = _add_new_buses(n, ~closest_bus_series, lines, port)
- lines.loc[~closest_bus_series.values, f"bus{port}"] = new_buses.index
- else:
- closest_bus_series[:] = True
+ new_buses = _add_new_buses(n, new_buses, port)
+ lines_port.loc[new_buses.index, "match_distance"] = True
+ lines_port.loc[new_buses.index, "neighbor"] = new_buses.neighbor
+
+ if not lines_port.match_distance.all():
+ logging.warning(
+ "Could not find bus close enough to connect the the following lines:\n"
+ + str(lines_port[~lines_port.match_distance].index.to_list())
+ + "\n Lines will be ignored."
+ )
+ lines.drop(lines_port[~lines_port.match_distance].index, inplace=True)
+ lines_port = lines_port[lines_port.match_distance]
- lines.loc[closest_bus_series.values, f"bus{port}"] = n.buses.iloc[
- indices[closest_bus_series]
- ].index
+ lines.loc[lines_port.index, f"bus{port}"] = lines_port.loc[:, "neighbor"]
- for port in [0, 1]:
- _assign_closest_bus(port)
- #
- lines.loc[:, "under_construction"] = True
+ lines = lines.assign(under_construction=True)
return lines
@@ -823,9 +831,9 @@ def _get_coords_from_port(linestring_wkt, port=0):
return coords
-def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1):
+def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
"""
- Find the closest lines in a given set of lines to a set of new lines.
+ Find the closest lines in the existing set of lines to a set of new lines.
Parameters:
lines (pandas.DataFrame): DataFrame with column geometry containing the existing lines.
@@ -837,6 +845,7 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1):
"""
# get coordinates of start and end points of all lines, for new lines we need to check both directions
+ lines = lines[~lines.geometry.isna()]
treelines = lines.geometry.apply(reduce_linestring_to_endpoints)
querylines = pd.concat(
[
@@ -851,12 +860,22 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1):
found_b = ind < len(lines)
# since the new lines are checked in both directions, we need to find the correct index of the new line
found_i = np.arange(len(querylines))[found_b] % len(new_lines)
- if len(found_i) < len(new_lines):
- not_found = new_lines.index.difference(new_lines.index[found_i])
- logger.warning(
- "Could not find lines close enough to provided lines:\n"
- + str(not_found.to_list())
- )
+ if type == "new":
+ if len(found_i) != 0:
+ found = new_lines.index[found_i]
+ logger.warning(
+ "Found new lines similar to existing lines:\n"
+ + str(found.to_list())
+ + "\n Lines are assumed to be duplicated and will be ignored."
+ )
+ elif type == "upgraded":
+ if len(found_i) < len(new_lines):
+ not_found = new_lines.index.difference(new_lines.index[found_i])
+ logger.warning(
+ "Could not find upgraded lines close enough to provided lines:\n"
+ + str(not_found.to_list())
+ + "\n Lines will be ignored."
+ )
# create a DataFrame with the distances, new line and its closest existing line
line_map = pd.DataFrame(
dict(D=dist[found_b], i=lines.index[ind[found_b] % len(lines)]),
@@ -876,7 +895,7 @@ def _adjust_decommissing(branch, n, upgraded_lines, line_map):
"""
n.df(branch).loc[
line_map, "build_year"
- ] = 2015 # dummy build_year to make existing lines decommissioned when upgraded lines are built
+ ] = 1990 # dummy build_year to make existing lines decommissioned when upgraded lines are built
n.df(branch).loc[line_map, "lifetime"] = (
upgraded_lines.rename(line_map)["build_year"]
- n.df(branch).loc[line_map, "build_year"]
@@ -908,17 +927,16 @@ def _get_upgraded_lines(branch_componnent, n, upgraded_lines, line_map):
def _get_project_files(plan="tyndp"):
path = f"data/{plan}/"
lines = dict()
- try:
+ if os.path.exists(path):
files = os.listdir(path)
- except FileNotFoundError:
+ else:
+ logger.warning(f"No projects found for {plan}")
files = []
if files:
for file in files:
if file.endswith(".csv"):
name = file.split(".")[0]
lines[name] = pd.read_csv(path + file, index_col=0)
- else:
- logger.warning(f"No projects found for {plan}")
return lines
@@ -933,7 +951,7 @@ def _remove_projects_outside_countries(lines, europe_shape):
)
if not is_within_covered_countries.all():
- logger.info(
+ logger.warning(
"Project lines outside of the covered area (skipping): "
+ ", ".join(str(i) for i in lines.loc[~is_within_covered_countries].index)
)
@@ -962,15 +980,15 @@ def _add_projects(
plan="tyndp",
status=["confirmed", "under construction"],
):
- lines = _get_project_files(plan)
-
- for key, df in lines.items():
- df = _remove_projects_outside_countries(df, europe_shape)
- df = df.query("status in @status")
+ lines_dict = _get_project_files(plan)
+ logging.info(f"Adding {len(lines_dict)} projects from {plan} to the network.")
+ for key, lines in lines_dict.items():
+ lines = _remove_projects_outside_countries(lines, europe_shape)
+ lines = lines.loc[lines.project_status.isin(status)]
if "new_lines" in key:
- new_lines = _find_closest_bus(df, n)
+ new_lines = _find_closest_bus(lines, n)
duplicate_lines = _find_closest_lines(
- n.lines, new_lines, distance_upper_bound=0.10
+ n.lines, new_lines, distance_upper_bound=0.10, type="new"
)
# ignore duplicates where v_nom is not within a tolerance of 10%
to_ignore = _is_similar(
@@ -982,24 +1000,30 @@ def _add_projects(
n.import_components_from_dataframe(new_lines, "Line")
elif "new_links" in key:
new_links = _find_closest_bus(
- df, n, offshore_shapes, distance_upper_bound=0.4
+ lines, n, offshore_shapes, distance_upper_bound=0.4
)
duplicate_links = _find_closest_lines(
- n.links, new_links, distance_upper_bound=0.10
+ n.links, new_links, distance_upper_bound=0.10, type="new"
)
- new_links = new_links.drop(duplicate_lines.index, errors="ignore")
+ new_links = new_links.drop(duplicate_links.index, errors="ignore")
n.import_components_from_dataframe(new_links, "Link")
elif "upgraded_lines" in key:
- line_map = _find_closest_lines(n.lines, df, distance_upper_bound=0.20)
- upgraded_lines = df.loc[line_map.index]
+ line_map = _find_closest_lines(
+ n.lines, lines, distance_upper_bound=0.20, type="upgraded"
+ )
+ upgraded_lines = lines.loc[line_map.index]
_adjust_decommissing("Line", n, upgraded_lines, line_map)
upgraded_lines = _get_upgraded_lines("Line", n, upgraded_lines, line_map)
+ # TODO need to adjust type of upgraded lines to new line type after added to pypsa.line_types
n.import_components_from_dataframe(upgraded_lines, "Line")
elif "upgraded_links" in key:
line_map = _find_closest_lines(
- n.links.query("carrier=='DC'"), df, distance_upper_bound=0.20
+ n.links.query("carrier=='DC'"),
+ lines,
+ distance_upper_bound=0.20,
+ type="upgraded",
)
- upgraded_links = df.loc[line_map.index]
+ upgraded_links = lines.loc[line_map.index]
_adjust_decommissing("Link", n, upgraded_links, line_map)
upgraded_links = _get_upgraded_lines("Link", n, upgraded_links, line_map)
n.import_components_from_dataframe(upgraded_links, "Link")
@@ -1014,7 +1038,9 @@ def base_network(
eg_transformers,
eg_lines,
eg_links,
- line_projects,
+ links_p_nom,
+ links_tyndp,
+ transmission_projects,
europe_shape,
country_shapes,
offshore_shapes,
@@ -1024,6 +1050,8 @@ def base_network(
buses = _load_buses_from_eg(eg_buses, europe_shape, config["electricity"])
links = _load_links_from_eg(buses, eg_links)
+ # if config["links"].get("include_tyndp"):
+ # buses, links = _add_links_from_tyndp(buses, links, links_tyndp, europe_shape)
converters = _load_converters_from_eg(buses, eg_converters)
@@ -1051,14 +1079,14 @@ def base_network(
n.import_components_from_dataframe(links, "Link")
n.import_components_from_dataframe(converters, "Link")
- for project, include in line_projects.include_projects.items():
+ for project, include in transmission_projects["include"].items():
if include:
_add_projects(
n,
europe_shape,
offshore_shapes,
plan=project,
- status=line_projects.status,
+ status=transmission_projects["status"],
)
_set_lines_s_nom_from_linetypes(n)
@@ -1233,7 +1261,9 @@ def append_bus_shapes(n, shapes, type):
snakemake.input.eg_transformers,
snakemake.input.eg_lines,
snakemake.input.eg_links,
- snakemake.params.line_projects,
+ snakemake.input.links_p_nom,
+ snakemake.input.links_tyndp,
+ snakemake.params.transmission_projects,
snakemake.input.europe_shape,
snakemake.input.country_shapes,
snakemake.input.offshore_shapes,
From 50938733d52c57d852b8a409d664403580229746 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Tue, 16 Jul 2024 13:33:04 +0200
Subject: [PATCH 05/28] base_network.py:remove adding of transmission projects
add_transmission_project.py: add new script for creating lines and link csv
from transmission projects add_electricity.py: add new projects from created
csv files
---
config/config.default.yaml | 1 +
data/nep/new_lines.csv | 32 +-
data/nep/new_links.csv | 24 +-
data/tyndp/new_lines.csv | 278 +++++++-------
data/tyndp/new_links.csv | 102 ++---
data/tyndp/upgraded_lines.csv | 74 ++--
data/tyndp/upgraded_links.csv | 16 +-
rules/build_electricity.smk | 36 +-
scripts/add_electricity.py | 22 ++
scripts/add_transmission_projects.py | 534 +++++++++++++++++++++++++++
scripts/base_network.py | 324 +---------------
11 files changed, 857 insertions(+), 586 deletions(-)
create mode 100644 scripts/add_transmission_projects.py
diff --git a/config/config.default.yaml b/config/config.default.yaml
index 90ae58c8f..ed6e503c1 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -310,6 +310,7 @@ links:
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transmission_projects
transmission_projects:
+ enable: true
include:
#tyndp: true # For later, when other TYNDP projects are combined with new version
nep: true
diff --git a/data/nep/new_lines.csv b/data/nep/new_lines.csv
index 4e6e2d4b2..441243e18 100644
--- a/data/nep/new_lines.csv
+++ b/data/nep/new_lines.csv
@@ -1,16 +1,16 @@
-,bus0,bus1,length,v_nom,num_parallel,project_status,build_year,tags,geometry
-P43,Dipperz/Hessen,Bergrheinfeld//Bayern,85,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.807198712581199 50.54115855, 10.1810033 50.0082136)"
-P71,Kiel/Schleswig-Holstein,Göhl/Schleswig-Holstein,85,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.135555 54.3227085, 10.9399634 54.2861191)"
-P84,Hamburg,Sahms/Schleswig-Holstein,35,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.000654 53.550341, 10.5331297 53.5252973)"
-P227,Lübeck/Schleswig-Holstein,Sahms/Schleswig-Holstein,52,380.0,2.0,confirmed,2030,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.684738 53.866444, 10.5331297 53.5252973)"
-P402,Westerkappeln/Nordrhein-Westfalen,Gersteinwerk/Nordrhein-Westfalen,89,380.0,2.0,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (7.8772237 52.3141716, 7.722207887811252 51.6749132)"
-P470,Emden/Niedersachsen,Dörpen/West /Niedersachsen,66,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (7.2058304 53.3670541, 7.256622642835093 52.9807372)"
-P476,Hochwöhrden/Schleswig-Holstein,Mehlbek/Schleswig-Holstein,39,380.0,2.0,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.0323968 54.158602, 9.4346536 54.0045912)"
-P478,Pöschendorf/Schleswig-Holstein,Alfstedt/Niedersachsen,37,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.4944931 54.0409041, 9.0666915 53.5499782)"
-P485,Herlasgrün/Sachsen,Marktleuthen/Bayern,69,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.2299537 50.5680975, 11.9945062 50.1279651)"
-P490,Petersgmünd /Bayern,Goldshöfe /Baden-Württemberg,104,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (11.0252473 49.185644, 10.1279814 48.8940723)"
-P540,Eisfeld/Thüringen,Grafenrheinfeld /Bayern,126,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.908994 50.4269984, 10.1966808 50.0055317)"
-P625,Streumen/Sachsen,Schmölln/Sachsen,92,380.0,2.0,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (13.4054041 51.3582767, 14.2347005 51.1244043)"
-P627,Schossin/Mecklenburg-Vorpommern,Perleberg/Brandenburg,89,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (11.2823593 53.5284043, 11.8627933 53.0762716)"
-P635,Grabowhöfe/Mecklenburg-Vorpommern,Marke/Sachsen-Anhalt,280,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.594171 53.5683057, 12.252458735300388 51.7301547)"
-P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (12.342857 51.5255661, 12.5130329 51.1496022)"
+,bus0,bus1,length,v_nom,num_parallel,project_status,build_year,tags,x0,y0,x1,y1
+P43,Dipperz/Hessen,Bergrheinfeld//Bayern,85,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.807198712581199,50.54115855,10.1810033,50.0082136
+P71,Kiel/Schleswig-Holstein,Göhl/Schleswig-Holstein,85,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.135555,54.3227085,10.9399634,54.2861191
+P84,Hamburg,Sahms/Schleswig-Holstein,35,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.000654,53.550341,10.5331297,53.5252973
+P227,Lübeck/Schleswig-Holstein,Sahms/Schleswig-Holstein,52,380.0,2.0,confirmed,2030,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.684738,53.866444,10.5331297,53.5252973
+P402,Westerkappeln/Nordrhein-Westfalen,Gersteinwerk/Nordrhein-Westfalen,89,380.0,2.0,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",7.8772237,52.3141716,7.722207887811252,51.6749132
+P470,Emden/Niedersachsen,Dörpen/West /Niedersachsen,66,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",7.2058304,53.3670541,7.256622642835093,52.9807372
+P476,Hochwöhrden/Schleswig-Holstein,Mehlbek/Schleswig-Holstein,39,380.0,2.0,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.0323968,54.158602,9.4346536,54.0045912
+P478,Pöschendorf/Schleswig-Holstein,Alfstedt/Niedersachsen,37,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.4944931,54.0409041,9.0666915,53.5499782
+P485,Herlasgrün/Sachsen,Marktleuthen/Bayern,69,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",12.2299537,50.5680975,11.9945062,50.1279651
+P490,Petersgmünd /Bayern,Goldshöfe /Baden-Württemberg,104,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",11.0252473,49.185644,10.1279814,48.8940723
+P540,Eisfeld/Thüringen,Grafenrheinfeld /Bayern,126,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.908994,50.4269984,10.1966808,50.0055317
+P625,Streumen/Sachsen,Schmölln/Sachsen,92,380.0,2.0,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",13.4054041,51.3582767,14.2347005,51.1244043
+P627,Schossin/Mecklenburg-Vorpommern,Perleberg/Brandenburg,89,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",11.2823593,53.5284043,11.8627933,53.0762716
+P635,Grabowhöfe/Mecklenburg-Vorpommern,Marke/Sachsen-Anhalt,280,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",12.594171,53.5683057,12.252458735300388,51.7301547
+P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",12.342857,51.5255661,12.5130329,51.1496022
diff --git a/data/nep/new_links.csv b/data/nep/new_links.csv
index 87c3b7f26..f65719392 100644
--- a/data/nep/new_links.csv
+++ b/data/nep/new_links.csv
@@ -1,12 +1,12 @@
-,bus0,bus1,p_nom,length,project_status,build_year,tags,geometry
-DC21,Wilhelmshaven/Niedersachsen,Lippetal/Nordrhein-Westfalen,2000.0,270,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (8.106301 53.5278793, 8.0787633 51.6516157)"
-DC25,Heide/Schleswig-Holstein,Polsum/Nordrhein-Westfalen,2000.0,440,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.0929015 54.1948456, 7.0528322 51.6264919)"
-DC31,Hemmingstedt/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,212,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.08263 54.1506435, 11.3010418 53.572637)"
-DC32,Pöschendorf/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,170,confirmed,2034,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.4944931 54.0409041, 11.3010418 53.572637)"
-DC34,Ovelgönne/Niedersachsen,Bürstadt/Hessen,2000.0,523,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (8.4209977 53.3427799, 8.4747076 49.6531823)"
-DC35,Ovelgönne/Niedersachsen,Marxheim/Taunus,2000.0,461,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (8.4209977 53.3427799, 8.4320722 50.0724011)"
-DC40,Nüttermoor/Niedersachsen,Streumen/Sachsen,2000.0,594,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (7.4360347 53.2625382, 13.4054041 51.3582767)"
-DC40plus,Dörpen/West,Klostermansfeld/Sachsen-Anhalt,2000.0,426,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (7.256622642835093 52.9807372, 11.4933395 51.5841525)"
-DC41,Alfstedt/Niedersachsen,Hüffenhardt/Baden-Württemberg,2000.0,607,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (9.0666915 53.5499782, 9.0827453 49.2908862)"
-DC42,Sahms/Schleswig-Holstein,Böblingen/Baden-Württemberg,2000.0,737,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.5331297 53.5252973, 9.0113444 48.684969)"
-DC42plus,Sahms/Schleswig-Holstein,Trennfeld/Bayern,2000.0,546,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""","LINESTRING (10.5331297 53.5252973, 9.6151453 49.7950676)"
+,bus0,bus1,p_nom,length,project_status,build_year,tags,x0,y0,x1,y1
+DC21,Wilhelmshaven/Niedersachsen,Lippetal/Nordrhein-Westfalen,2000.0,270,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",8.106301,53.5278793,8.0787633,51.6516157
+DC25,Heide/Schleswig-Holstein,Polsum/Nordrhein-Westfalen,2000.0,440,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.0929015,54.1948456,7.0528322,51.6264919
+DC31,Hemmingstedt/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,212,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.08263,54.1506435,11.3010418,53.572637
+DC32,Pöschendorf/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,170,confirmed,2034,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.4944931,54.0409041,11.3010418,53.572637
+DC34,Ovelgönne/Niedersachsen,Bürstadt/Hessen,2000.0,523,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",8.4209977,53.3427799,8.4747076,49.6531823
+DC35,Ovelgönne/Niedersachsen,Marxheim/Taunus,2000.0,461,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",8.4209977,53.3427799,8.4320722,50.0724011
+DC40,Nüttermoor/Niedersachsen,Streumen/Sachsen,2000.0,594,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",7.4360347,53.2625382,13.4054041,51.3582767
+DC40plus,Dörpen/West,Klostermansfeld/Sachsen-Anhalt,2000.0,426,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",7.256622642835093,52.9807372,11.4933395,51.5841525
+DC41,Alfstedt/Niedersachsen,Hüffenhardt/Baden-Württemberg,2000.0,607,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.0666915,53.5499782,9.0827453,49.2908862
+DC42,Sahms/Schleswig-Holstein,Böblingen/Baden-Württemberg,2000.0,737,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.5331297,53.5252973,9.0113444,48.684969
+DC42plus,Sahms/Schleswig-Holstein,Trennfeld/Bayern,2000.0,546,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.5331297,53.5252973,9.6151453,49.7950676
diff --git a/data/tyndp/new_lines.csv b/data/tyndp/new_lines.csv
index 56c80aae7..2c5f02391 100644
--- a/data/tyndp/new_lines.csv
+++ b/data/tyndp/new_lines.csv
@@ -1,139 +1,139 @@
-,project_status,length,build_year,underground,v_nom,tags,geometry,num_parallel
-TYNDP2020_0,in_permitting,131.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""","LINESTRING (-7.793621146853301 41.52102394053344, -8.38943499999999 40.95916)",2
-TYNDP2020_1,in_permitting,30.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""18"", ""tyndp_status""=>""in_permitting""","LINESTRING (-8.273869552394737 42.46748640601422, -7.94998199999999 42.383908)",2
-TYNDP2020_2,in_permitting,140.21,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""","LINESTRING (-7.94998199999999 42.383908, -8.582626164089064 41.764651842353146)",2
-TYNDP2020_3,in_permitting,140.21,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""","LINESTRING (-8.582626164089064 41.764651842353146, -8.67645299999999 41.303603)",2
-TYNDP2020_4,under_construction,23.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/23"", ""tyndp2020_proj_id""=>""23"", ""tyndp2020_invest_id""=>""60"", ""tyndp_status""=>""under_construction""","LINESTRING (3.08990499999999 50.50906, 3.429108 50.773813)",2
-TYNDP2020_5,under_construction,26.0,2023,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/26"", ""tyndp2020_proj_id""=>""26"", ""tyndp2020_invest_id""=>""614"", ""tyndp_status""=>""under_construction""","LINESTRING (10.465851 46.8808455082082, 10.465851 46.8808455082082)",2
-TYNDP2020_6,in_permitting,80.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""90"", ""tyndp_status""=>""in_permitting""","LINESTRING (11.126404 43.872158, 11.413422 44.580687)",2
-TYNDP2020_7,planned_not_yet_permitting,350.0,2026,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""1041"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (14.028168 42.409263, 13.345642 42.426498)",2
-TYNDP2020_8,in_permitting,120.5,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""313"", ""tyndp_status""=>""in_permitting""","LINESTRING (14.3524 49.1584, 15.687103 49.531448)",2
-TYNDP2020_9,in_permitting,117.0,2028,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""315"", ""tyndp_status""=>""in_permitting""","LINESTRING (14.3524 49.1584, 13.282471 49.60804)",2
-TYNDP2020_10,under_construction,24.0,2020,True,150,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/36"", ""tyndp2020_proj_id""=>""36"", ""tyndp2020_invest_id""=>""141"", ""tyndp_status""=>""under_construction""","LINESTRING (12.311554 55.670615, 12.271729 54.068253)",2
-TYNDP2020_11,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/39"", ""tyndp2020_proj_id""=>""39"", ""tyndp2020_invest_id""=>""144"", ""tyndp_status""=>""under_construction""","LINESTRING (9.75860599999998 54.306108, 9.29580699999999 55.075223)",2
-TYNDP2020_12,planned_not_yet_permitting,157.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/47"", ""tyndp2020_proj_id""=>""47"", ""tyndp2020_invest_id""=>""689"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (10.06485 48.282279, 10.897064 47.236355)",2
-TYNDP2020_13,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""","LINESTRING (17.539673 47.882276, 17.786865 47.653363)",2
-TYNDP2020_14,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""","LINESTRING (17.539673 47.882276, 18.540802 48.236565)",2
-TYNDP2020_15,under_construction,48.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1501"", ""tyndp_status""=>""under_construction""","LINESTRING (19.958038 48.380882, 20.55954 48.263084)",2
-TYNDP2020_16,in_permitting,60.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/78"", ""tyndp2020_proj_id""=>""78"", ""tyndp2020_invest_id""=>""458"", ""tyndp_status""=>""in_permitting""","LINESTRING (-3.21075400000001 51.135416, -2.633972 51.533523)",2
-TYNDP2020_17,in_permitting,138.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/81"", ""tyndp2020_proj_id""=>""81"", ""tyndp2020_invest_id""=>""462"", ""tyndp_status""=>""in_permitting""","LINESTRING (-6.61376999999999 53.441446, -6.65496799999999 54.509921)",2
-TYNDP2020_18,planned_not_yet_permitting,83.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""463"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-8.41964699999999 54.209042, -8.0041 54.6773)",2
-TYNDP2020_19,planned_not_yet_permitting,58.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""896"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-8.0041 54.6773, -7.2811 54.5781)",2
-TYNDP2020_20,planned_not_yet_permitting,61.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""897"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-7.2811 54.5781, -6.65496799999999 54.509921)",2
-TYNDP2020_21,planned_not_yet_permitting,61.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-8.046112 38.05458, -8.1897 37.6672)",2
-TYNDP2020_22,planned_not_yet_permitting,61.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-8.1897 37.6672, -7.73025499999999 37.397437)",2
-TYNDP2020_23,planned_not_yet_permitting,75.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""1670"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-7.55310100000001 38.17991, -7.89230299999999 38.808681)",2
-TYNDP2020_24,under_construction,75.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1488"", ""tyndp_status""=>""under_construction""","LINESTRING (4.9617 52.333661, 5.763702 52.619725)",2
-TYNDP2020_25,in_permitting,200.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""396"", ""tyndp_status""=>""in_permitting""","LINESTRING (24.612122 65.877531, 20.232697 66.70191)",2
-TYNDP2020_26,in_permitting,156.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""1710"", ""tyndp_status""=>""in_permitting""","LINESTRING (24.612122 65.877531, 26.114502 64.778807)",2
-TYNDP2020_27,under_construction,108.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/123"", ""tyndp2020_proj_id""=>""123"", ""tyndp2020_invest_id""=>""373"", ""tyndp_status""=>""under_construction""","LINESTRING (21.625214 53.051946, 21.40686 52.213497)",2
-TYNDP2020_28,in_permitting,160.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/124"", ""tyndp2020_proj_id""=>""124"", ""tyndp2020_invest_id""=>""733"", ""tyndp_status""=>""in_permitting""","LINESTRING (16.659393 57.43682, 14.749146 56.326437)",2
-TYNDP2020_29,in_permitting,178.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""86"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.636292 41.359288, 14.028168 42.409263)",2
-TYNDP2020_30,under_construction,30.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""96"", ""tyndp_status""=>""under_construction""","LINESTRING (15.555267 41.165216, 15.3286 40.9749)",2
-TYNDP2020_31,under_construction,159.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""273"", ""tyndp_status""=>""under_construction""","LINESTRING (28.02475 44.323848, 26.7166 45.0762)",2
-TYNDP2020_32,in_permitting,140.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""275"", ""tyndp_status""=>""in_permitting""","LINESTRING (27.960205 45.447607, 26.872559 46.265341)",2
-TYNDP2020_33,under_construction,86.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""800"", ""tyndp_status""=>""under_construction""","LINESTRING (27.610016 43.326177, 27.358704 42.576344)",2
-TYNDP2020_34,in_permitting,151.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""256"", ""tyndp_status""=>""in_permitting""","LINESTRING (26.003265 42.200038, 23.083964803314 40.8967964275543)",2
-TYNDP2020_35,under_construction,13.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""258"", ""tyndp_status""=>""under_construction""","LINESTRING (26.003265 42.200038, 25.804138 41.964596)",2
-TYNDP2020_36,under_construction,150.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""262"", ""tyndp_status""=>""under_construction""","LINESTRING (26.003265 42.200038, 27.358704 42.576344)",2
-TYNDP2020_37,under_construction,131.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""238"", ""tyndp_status""=>""under_construction""","LINESTRING (21.88777 45.30413, 20.706482 44.86755)",2
-TYNDP2020_38,under_construction,116.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""269"", ""tyndp_status""=>""under_construction""","LINESTRING (22.578278 44.679395, 21.88777 45.30413)",2
-TYNDP2020_39,in_permitting,274.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""","LINESTRING (21.2815 45.7426, 21.2815 45.7426)",2
-TYNDP2020_40,in_permitting,60.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1011"", ""tyndp_status""=>""in_permitting""","LINESTRING (26.154327 57.918495, 25.473175 57.541628)",2
-TYNDP2020_41,in_permitting,243.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1013"", ""tyndp_status""=>""in_permitting""","LINESTRING (28.063202 59.310067, 26.154327 57.918495)",2
-TYNDP2020_42,in_permitting,190.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1634"", ""tyndp_status""=>""in_permitting""","LINESTRING (22.740326 55.10273, 24.252319 54.796727)",2
-TYNDP2020_43,planned_not_yet_permitting,57.11,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1661"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (16.11557 54.132674, 16.6857237480894 54.0342010066989)",2
-TYNDP2020_44,planned_not_yet_permitting,119.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1662"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (16.858521 53.16571, 16.6857237480894 54.0342010066989)",2
-TYNDP2020_45,planned_not_yet_permitting,288.5,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1664"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (14.831543 53.330873, 18.104095 54.714309)",2
-TYNDP2020_46,planned_not_yet_permitting,77.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1665"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (18.104095 54.714309, 18.684998 54.266026)",2
-TYNDP2020_47,in_permitting,92.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/183"", ""tyndp2020_proj_id""=>""183"", ""tyndp2020_invest_id""=>""1018"", ""tyndp_status""=>""in_permitting""","LINESTRING (8.86459400000001 55.074436, 8.66683999999999 55.481966)",2
-TYNDP2020_48,under_construction,60.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/186"", ""tyndp2020_proj_id""=>""186"", ""tyndp2020_invest_id""=>""886"", ""tyndp_status""=>""under_construction""","LINESTRING (16.399841 48.323387, 16.820068 48.943249)",2
-TYNDP2020_49,in_permitting,60.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/187"", ""tyndp2020_proj_id""=>""187"", ""tyndp2020_invest_id""=>""997"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.080597 48.256684, 13.080597 48.256684)",2
-TYNDP2020_50,under_construction,300.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/197"", ""tyndp2020_proj_id""=>""197"", ""tyndp2020_invest_id""=>""742"", ""tyndp_status""=>""under_construction""","LINESTRING (26.114502 64.778807, 25.180664 62.262171)",2
-TYNDP2020_51,in_permitting,83.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""308"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.191833 50.341955, 12.675274 50.160683)",2
-TYNDP2020_52,under_construction,87.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""309"", ""tyndp_status""=>""under_construction""","LINESTRING (12.675274 50.160683, 13.282471 49.60804)",2
-TYNDP2020_53,under_construction,60.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""939"", ""tyndp_status""=>""under_construction""","LINESTRING (8.09143099999999 53.313647, 7.23587000000001 53.374317)",2
-TYNDP2020_54,under_construction,30.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""1684"", ""tyndp_status""=>""under_construction""","LINESTRING (8.09143099999999 53.313647, 8.00079299999999 53.55581)",2
-TYNDP2020_55,under_construction,95.0,2023,False,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/208"", ""tyndp2020_proj_id""=>""208"", ""tyndp2020_invest_id""=>""151"", ""tyndp_status""=>""under_construction""","LINESTRING (8.283691 52.344569, 8.61877400000001 53.065976)",2
-TYNDP2020_56,under_construction,182.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/208"", ""tyndp2020_proj_id""=>""208"", ""tyndp2020_invest_id""=>""156"", ""tyndp_status""=>""under_construction""","LINESTRING (6.615143 51.630805, 7.38830599999999 53.076703)",2
-TYNDP2020_57,in_permitting,45.2,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""627"", ""tyndp_status""=>""in_permitting""","LINESTRING (19.500315 43.953021, 19.388123 43.723475)",2
-TYNDP2020_58,in_permitting,100.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""","LINESTRING (19.500315 43.953021, 19.315338 43.347152)",2
-TYNDP2020_59,under_construction,151.0,2019,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1526"", ""tyndp_status""=>""under_construction""","LINESTRING (18.772888 42.315909, 19.315338 43.347152)",2
-TYNDP2020_60,under_construction,,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1527"", ""tyndp_status""=>""under_construction""","LINESTRING (20.928955 44.056999, 20.739984 43.680615)",2
-TYNDP2020_61,planned_not_yet_permitting,32.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/228"", ""tyndp2020_proj_id""=>""228"", ""tyndp2020_invest_id""=>""1231"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (7.50366199999999 47.891485, 7.71240200000001 48.103763)",2
-TYNDP2020_62,under_consideration,40.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1270"", ""tyndp_status""=>""under_consideration""","LINESTRING (15.038505 52.76751, 15.5 51.93333)",2
-TYNDP2020_63,under_consideration,40.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1271"", ""tyndp_status""=>""under_consideration""","LINESTRING (15.5 51.93333, 16.729431 52.32359)",2
-TYNDP2020_64,under_consideration,90.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1673"", ""tyndp_status""=>""under_consideration""","LINESTRING (15.5 51.93333, 16.056519 51.449728)",2
-TYNDP2020_65,under_consideration,80.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1674"", ""tyndp_status""=>""under_consideration""","LINESTRING (15.5 51.93333, 14.615936 52.125058)",2
-TYNDP2020_66,in_permitting,100.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""355"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.086975 51.069017, 16.365509 50.816348)",2
-TYNDP2020_67,under_consideration,11.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/231"", ""tyndp2020_proj_id""=>""231"", ""tyndp2020_invest_id""=>""1282"", ""tyndp_status""=>""under_consideration""","LINESTRING (8.16970799999999 47.523693, 8.205414 47.649662)",2
-TYNDP2020_68,under_consideration,91.0,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1276"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.420959 45.289022, 18.538055 44.455349)",2
-TYNDP2020_69,under_consideration,46.2,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1277"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.420959 45.289022, 18.436344 44.904884)",2
-TYNDP2020_70,under_consideration,25.0,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1279"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.420959 45.289022, 18.420959 45.289022)",2
-TYNDP2020_71,under_consideration,47.8,2032,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1530"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.436344 44.904884, 18.538055 44.455349)",2
-TYNDP2020_72,under_consideration,70.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/243"", ""tyndp2020_proj_id""=>""243"", ""tyndp2020_invest_id""=>""1269"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.663025 45.454351, 19.175262 45.75411)",2
-TYNDP2020_73,planned_not_yet_permitting,65.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/244"", ""tyndp2020_proj_id""=>""244"", ""tyndp2020_invest_id""=>""1245"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (6.25122100000001 49.182601, 7.028503 49.340336)",2
-TYNDP2020_74,under_construction,27.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/245"", ""tyndp2020_proj_id""=>""245"", ""tyndp2020_invest_id""=>""1246"", ""tyndp_status""=>""under_construction""","LINESTRING (6.936493 53.145947, 7.389679 53.097323)",2
-TYNDP2020_75,in_permitting,14.0,2024,True,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/250"", ""tyndp2020_proj_id""=>""250"", ""tyndp2020_invest_id""=>""1384"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.503174 46.35925, 9.34661899999999 46.251099)",2
-TYNDP2020_76,planned_not_yet_permitting,90.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1050"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (5.71701000000001 51.094036, 5.35583499999999 50.557942)",2
-TYNDP2020_77,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1456"", ""tyndp_status""=>""in_permitting""","LINESTRING (4.603271 51.209464, 5.71701000000001 51.094036)",2
-TYNDP2020_78,planned_not_yet_permitting,60.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1515"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (5.35583499999999 50.557942, 4.35470599999999 50.529143)",2
-TYNDP2020_79,planned_not_yet_permitting,47.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1516"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (4.22012299999999 50.864911, 4.35470599999999 50.529143)",2
-TYNDP2020_80,planned_not_yet_permitting,16.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1517"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (4.177551 51.162122, 4.22012299999999 50.864911)",2
-TYNDP2020_81,planned_not_yet_permitting,36.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1676"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (4.177551 51.162122, 4.603271 51.209464)",2
-TYNDP2020_82,under_construction,125.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/258"", ""tyndp2020_proj_id""=>""258"", ""tyndp2020_invest_id""=>""667"", ""tyndp_status""=>""under_construction""","LINESTRING (9.24087500000001 53.906765, 8.86459400000001 55.074436)",2
-TYNDP2020_83,under_consideration,120.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/259"", ""tyndp2020_proj_id""=>""259"", ""tyndp2020_invest_id""=>""1205"", ""tyndp_status""=>""under_consideration""","LINESTRING (21.566162 47.659838, 22.026215 47.044861)",2
-TYNDP2020_84,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.556022 47.302744, 8.298798 47.148634)",2
-TYNDP2020_85,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.556022 47.302744, 9.253235 46.824496)",2
-TYNDP2020_86,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.556022 47.302744, 9.80228979023356 47.6377345779987)",2
-TYNDP2020_87,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.556022 47.302744, 9.790192 47.138359)",2
-TYNDP2020_88,in_permitting,64.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1259"", ""tyndp_status""=>""in_permitting""","LINESTRING (8.16970799999999 47.523693, 8.298798 47.148634)",2
-TYNDP2020_89,in_permitting,45.4,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1287"", ""tyndp_status""=>""in_permitting""","LINESTRING (7.19192499999999 47.364874, 7.22213700000001 47.007416)",2
-TYNDP2020_90,in_permitting,87.1,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1288"", ""tyndp_status""=>""in_permitting""","LINESTRING (8.298798 47.148634, 8.32488999999999 46.532414)",2
-TYNDP2020_91,planned_not_yet_permitting,,2035,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/265"", ""tyndp2020_proj_id""=>""265"", ""tyndp2020_invest_id""=>""1290"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (8.85498 46.16081, 8.32488999999999 46.532414)",2
-TYNDP2020_92,in_permitting,124.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1286"", ""tyndp_status""=>""in_permitting""","LINESTRING (7.555847 46.336499, 8.795929 46.401882)",2
-TYNDP2020_93,in_permitting,106.6,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1733"", ""tyndp_status""=>""in_permitting""","LINESTRING (7.64236499999999 47.079475, 7.555847 46.336499)",2
-TYNDP2020_94,under_construction,30.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1734"", ""tyndp_status""=>""under_construction""","LINESTRING (7.165833 46.200745, 7.555847 46.336499)",2
-TYNDP2020_95,planned_not_yet_permitting,110.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1212"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-1.14818 42.10892, -1.671123 41.952398)",2
-TYNDP2020_96,planned_not_yet_permitting,80.0,2029,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1208"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-0.812988000000009 43.979969, -0.575409000000004 43.345155)",2
-TYNDP2020_97,under_construction,1.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""","LINESTRING (4.307132 51.301299, 4.307132 51.301299)",2
-TYNDP2020_98,under_construction,128.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/312"", ""tyndp2020_proj_id""=>""312"", ""tyndp2020_invest_id""=>""1472"", ""tyndp_status""=>""under_construction""","LINESTRING (13.080597 48.256684, 12.803192 47.244746)",2
-TYNDP2020_99,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/313"", ""tyndp2020_proj_id""=>""313"", ""tyndp2020_invest_id""=>""1473"", ""tyndp_status""=>""in_permitting""","LINESTRING (12.172852 48.638354, 13.080597 48.256684)",2
-TYNDP2020_100,under_construction,80.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/320"", ""tyndp2020_proj_id""=>""320"", ""tyndp2020_invest_id""=>""1558"", ""tyndp_status""=>""under_construction""","LINESTRING (15.724182 46.386728, 16.689606 46.633408)",2
-TYNDP2020_101,in_permitting,85.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""","LINESTRING (10.06485 48.282279, 9.73251299999999 47.623752)",2
-TYNDP2020_102,in_permitting,11.0,2025,True,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/323"", ""tyndp2020_proj_id""=>""323"", ""tyndp2020_invest_id""=>""1478"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.717804 45.526555, 13.791962 45.691792)",2
-TYNDP2020_103,in_permitting,22.5,2023,True,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/324"", ""tyndp2020_proj_id""=>""324"", ""tyndp2020_invest_id""=>""1482"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.471985 45.801042, 13.654633 45.967379)",2
-TYNDP2020_104,planned_not_yet_permitting,40.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/328"", ""tyndp2020_proj_id""=>""328"", ""tyndp2020_invest_id""=>""1630"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (6.590884 49.789617, 6.140853 49.688695)",2
-TYNDP2020_105,under_consideration,78.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/330"", ""tyndp2020_proj_id""=>""330"", ""tyndp2020_invest_id""=>""1498"", ""tyndp_status""=>""under_consideration""","LINESTRING (17.440796 49.236431, 18.287416 49.038186)",2
-TYNDP2020_106,under_construction,139.0,2023,False,132,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/336"", ""tyndp2020_proj_id""=>""336"", ""tyndp2020_invest_id""=>""1556"", ""tyndp_status""=>""under_construction""","LINESTRING (11.604309 47.081345, 11.604309 47.081345)",2
-TYNDP2020_107,planned_not_yet_permitting,100.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/340"", ""tyndp2020_proj_id""=>""340"", ""tyndp2020_invest_id""=>""1519"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (3.429108 50.773813, 4.35470599999999 50.529143)",2
-TYNDP2020_108,under_consideration,60.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1538"", ""tyndp_status""=>""under_consideration""","LINESTRING (20.9729 44.874362, 20.378265 44.819838)",2
-TYNDP2020_109,planned_not_yet_permitting,180.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1532"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (17.201843 44.772087, 15.26017 44.886816)",2
-TYNDP2020_110,planned_not_yet_permitting,68.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1533"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (15.26017 44.886816, 14.558258 45.323186)",2
-TYNDP2020_111,under_consideration,165.0,2040,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/344"", ""tyndp2020_proj_id""=>""344"", ""tyndp2020_invest_id""=>""1541"", ""tyndp_status""=>""under_consideration""","LINESTRING (6.14410399999999 52.52207, 5.671692 51.908696)",2
-TYNDP2020_112,planned_not_yet_permitting,160.0,2025,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1639"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-9.578832 54.120411, -8.268819 53.134319)",2
-TYNDP2020_113,under_construction,161.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""","LINESTRING (20.725963 41.239159, 19.966278 41.16108)",2
-TYNDP2020_114,planned_not_yet_permitting,140.0,2027,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/375"", ""tyndp2020_proj_id""=>""375"", ""tyndp2020_invest_id""=>""1555"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (12.693329 46.798179, 11.666107 45.792425)",2
-TYNDP2020_115,under_consideration,38.8,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1593"", ""tyndp_status""=>""under_consideration""","LINESTRING (-2.880286 43.349776, -3.05282599999999 43.265206)",2
-TYNDP2020_116,under_consideration,69.12,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1595"", ""tyndp_status""=>""under_consideration""","LINESTRING (-2.880286 43.349776, -2.24395799999999 43.047816)",2
-TYNDP2020_117,under_consideration,57.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1597"", ""tyndp_status""=>""under_consideration""","LINESTRING (-2.880286 43.349776, -2.20687899999999 43.098977)",2
-TYNDP2020_118,under_consideration,170.0,2030,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1042"", ""tyndp2020_proj_id""=>""1042"", ""tyndp2020_invest_id""=>""1694"", ""tyndp_status""=>""under_consideration""","LINESTRING (21.295624 56.032924, 23.506622 56.113404)",2
-TYNDP2020_119,under_consideration,72.0,2030,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1042"", ""tyndp2020_proj_id""=>""1042"", ""tyndp2020_invest_id""=>""1695"", ""tyndp_status""=>""under_consideration""","LINESTRING (24.307251 55.762668, 23.506622 56.113404)",2
-TYNDP2020_120,under_construction,14.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1685"", ""tyndp_status""=>""under_construction""","LINESTRING (9.48532099999999 53.629168, 9.48532099999999 53.629168)",2
-TYNDP2020_121,under_construction,60.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""","LINESTRING (10.299683 52.286643, 9.988131 51.954234)",2
-TYNDP2020_122,under_construction,45.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""","LINESTRING (9.988131 51.954234, 9.852428 51.649318)",2
-TYNDP2020_123,under_construction,105.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""","LINESTRING (9.852428 51.649318, 9.621277 50.85971)",2
-TYNDP2020_124,in_permitting,290.0,2028,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1688"", ""tyndp_status""=>""in_permitting""","LINESTRING (26.842346 64.556701, 27.766571 62.262171)",2
-TYNDP2020_125,in_permitting,100.0,2029,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1689"", ""tyndp_status""=>""in_permitting""","LINESTRING (25.692902 65.279688, 26.842346 64.556701)",2
-TYNDP2020_126,planned_not_yet_permitting,175.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1697"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (25.180664 62.262171, 24.915619 60.90707)",2
-TYNDP2020_127,under_consideration,31.0,2035,True,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1047"", ""tyndp2020_proj_id""=>""1047"", ""tyndp2020_invest_id""=>""1691"", ""tyndp_status""=>""under_consideration""","LINESTRING (7.23587000000001 53.374317, 6.86370800000001 53.418536)",2
-TYNDP2020_128,planned_not_yet_permitting,170.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1052"", ""tyndp2020_proj_id""=>""1052"", ""tyndp2020_invest_id""=>""1713"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (12.693329 46.798179, 14.5912685597917 46.536256583087)",2
-TYNDP2020_129,planned_not_yet_permitting,105.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1054"", ""tyndp2020_proj_id""=>""1054"", ""tyndp2020_invest_id""=>""1715"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (10.897064 47.236355, 11.964111 47.292271)",2
-TYNDP2020_130,under_consideration,90.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1723"", ""tyndp_status""=>""under_consideration""","LINESTRING (16.78425 43.503952, 17.436701 43.052743)",2
-TYNDP2020_131,under_consideration,105.0,2035,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1724"", ""tyndp_status""=>""under_consideration""","LINESTRING (17.436701 43.052743, 18.23576 42.610562)",2
-TYNDP2020_132,in_permitting,50.0,2027,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""645"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.996094 39.990799, 16.020813 39.780047)",2
-TYNDP2020_133,in_permitting,,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.03067 40.66814, 15.058136 40.941527)",2
-TYNDP2020_134,in_permitting,,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.058136 40.941527, 14.957886 41.143501)",2
-TYNDP2020_135,under_construction,40.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1063"", ""tyndp2020_proj_id""=>""1063"", ""tyndp2020_invest_id""=>""1731"", ""tyndp_status""=>""under_construction""","LINESTRING (4.218787 51.424034, 4.218787 51.424034)",2
-TYNDP2020_136,under_consideration,50.6,2036,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1742"", ""tyndp_status""=>""under_consideration""","LINESTRING (19.720459 46.020807, 20.170898 46.29856)",2
-TYNDP2020_137,under_consideration,80.0,2036,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1743"", ""tyndp_status""=>""under_consideration""","LINESTRING (19.175262 45.75411, 19.756165 45.527517)",2
+,project_status,length,build_year,underground,v_nom,tags,x0,y0,x1,y1,num_parallel
+TYNDP2020_0,in_permitting,131.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""",-7.793621146853301,41.52102394053344,-8.38943499999999,40.95916,2
+TYNDP2020_1,in_permitting,30.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""18"", ""tyndp_status""=>""in_permitting""",-8.273869552394737,42.46748640601422,-7.94998199999999,42.383908,2
+TYNDP2020_2,in_permitting,140.21,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""",-7.94998199999999,42.383908,-8.582626164089064,41.764651842353146,2
+TYNDP2020_3,in_permitting,140.21,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""",-8.582626164089064,41.764651842353146,-8.67645299999999,41.303603,2
+TYNDP2020_4,under_construction,23.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/23"", ""tyndp2020_proj_id""=>""23"", ""tyndp2020_invest_id""=>""60"", ""tyndp_status""=>""under_construction""",3.08990499999999,50.50906,3.429108,50.773813,2
+TYNDP2020_5,under_construction,26.0,2023,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/26"", ""tyndp2020_proj_id""=>""26"", ""tyndp2020_invest_id""=>""614"", ""tyndp_status""=>""under_construction""",10.465851,46.8808455082082,10.465851,46.8808455082082,2
+TYNDP2020_6,in_permitting,80.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""90"", ""tyndp_status""=>""in_permitting""",11.126404,43.872158,11.413422,44.580687,2
+TYNDP2020_7,planned_not_yet_permitting,350.0,2026,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""1041"", ""tyndp_status""=>""planned_not_yet_permitting""",14.028168,42.409263,13.345642,42.426498,2
+TYNDP2020_8,in_permitting,120.5,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""313"", ""tyndp_status""=>""in_permitting""",14.3524,49.1584,15.687103,49.531448,2
+TYNDP2020_9,in_permitting,117.0,2028,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""315"", ""tyndp_status""=>""in_permitting""",14.3524,49.1584,13.282471,49.60804,2
+TYNDP2020_10,under_construction,24.0,2020,True,150,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/36"", ""tyndp2020_proj_id""=>""36"", ""tyndp2020_invest_id""=>""141"", ""tyndp_status""=>""under_construction""",12.311554,55.670615,12.271729,54.068253,2
+TYNDP2020_11,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/39"", ""tyndp2020_proj_id""=>""39"", ""tyndp2020_invest_id""=>""144"", ""tyndp_status""=>""under_construction""",9.75860599999998,54.306108,9.29580699999999,55.075223,2
+TYNDP2020_12,planned_not_yet_permitting,157.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/47"", ""tyndp2020_proj_id""=>""47"", ""tyndp2020_invest_id""=>""689"", ""tyndp_status""=>""planned_not_yet_permitting""",10.06485,48.282279,10.897064,47.236355,2
+TYNDP2020_13,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""",17.539673,47.882276,17.786865,47.653363,2
+TYNDP2020_14,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""",17.539673,47.882276,18.540802,48.236565,2
+TYNDP2020_15,under_construction,48.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1501"", ""tyndp_status""=>""under_construction""",19.958038,48.380882,20.55954,48.263084,2
+TYNDP2020_16,in_permitting,60.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/78"", ""tyndp2020_proj_id""=>""78"", ""tyndp2020_invest_id""=>""458"", ""tyndp_status""=>""in_permitting""",-3.21075400000001,51.135416,-2.633972,51.533523,2
+TYNDP2020_17,in_permitting,138.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/81"", ""tyndp2020_proj_id""=>""81"", ""tyndp2020_invest_id""=>""462"", ""tyndp_status""=>""in_permitting""",-6.61376999999999,53.441446,-6.65496799999999,54.509921,2
+TYNDP2020_18,planned_not_yet_permitting,83.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""463"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.41964699999999,54.209042,-8.0041,54.6773,2
+TYNDP2020_19,planned_not_yet_permitting,58.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""896"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.0041,54.6773,-7.2811,54.5781,2
+TYNDP2020_20,planned_not_yet_permitting,61.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""897"", ""tyndp_status""=>""planned_not_yet_permitting""",-7.2811,54.5781,-6.65496799999999,54.509921,2
+TYNDP2020_21,planned_not_yet_permitting,61.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.046112,38.05458,-8.1897,37.6672,2
+TYNDP2020_22,planned_not_yet_permitting,61.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.1897,37.6672,-7.73025499999999,37.397437,2
+TYNDP2020_23,planned_not_yet_permitting,75.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""1670"", ""tyndp_status""=>""planned_not_yet_permitting""",-7.55310100000001,38.17991,-7.89230299999999,38.808681,2
+TYNDP2020_24,under_construction,75.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1488"", ""tyndp_status""=>""under_construction""",4.9617,52.333661,5.763702,52.619725,2
+TYNDP2020_25,in_permitting,200.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""396"", ""tyndp_status""=>""in_permitting""",24.612122,65.877531,20.232697,66.70191,2
+TYNDP2020_26,in_permitting,156.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""1710"", ""tyndp_status""=>""in_permitting""",24.612122,65.877531,26.114502,64.778807,2
+TYNDP2020_27,under_construction,108.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/123"", ""tyndp2020_proj_id""=>""123"", ""tyndp2020_invest_id""=>""373"", ""tyndp_status""=>""under_construction""",21.625214,53.051946,21.40686,52.213497,2
+TYNDP2020_28,in_permitting,160.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/124"", ""tyndp2020_proj_id""=>""124"", ""tyndp2020_invest_id""=>""733"", ""tyndp_status""=>""in_permitting""",16.659393,57.43682,14.749146,56.326437,2
+TYNDP2020_29,in_permitting,178.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""86"", ""tyndp_status""=>""in_permitting""",15.636292,41.359288,14.028168,42.409263,2
+TYNDP2020_30,under_construction,30.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""96"", ""tyndp_status""=>""under_construction""",15.555267,41.165216,15.3286,40.9749,2
+TYNDP2020_31,under_construction,159.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""273"", ""tyndp_status""=>""under_construction""",28.02475,44.323848,26.7166,45.0762,2
+TYNDP2020_32,in_permitting,140.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""275"", ""tyndp_status""=>""in_permitting""",27.960205,45.447607,26.872559,46.265341,2
+TYNDP2020_33,under_construction,86.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""800"", ""tyndp_status""=>""under_construction""",27.610016,43.326177,27.358704,42.576344,2
+TYNDP2020_34,in_permitting,151.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""256"", ""tyndp_status""=>""in_permitting""",26.003265,42.200038,23.083964803314,40.8967964275543,2
+TYNDP2020_35,under_construction,13.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""258"", ""tyndp_status""=>""under_construction""",26.003265,42.200038,25.804138,41.964596,2
+TYNDP2020_36,under_construction,150.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""262"", ""tyndp_status""=>""under_construction""",26.003265,42.200038,27.358704,42.576344,2
+TYNDP2020_37,under_construction,131.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""238"", ""tyndp_status""=>""under_construction""",21.88777,45.30413,20.706482,44.86755,2
+TYNDP2020_38,under_construction,116.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""269"", ""tyndp_status""=>""under_construction""",22.578278,44.679395,21.88777,45.30413,2
+TYNDP2020_39,in_permitting,274.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.2815,45.7426,21.2815,45.7426,2
+TYNDP2020_40,in_permitting,60.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1011"", ""tyndp_status""=>""in_permitting""",26.154327,57.918495,25.473175,57.541628,2
+TYNDP2020_41,in_permitting,243.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1013"", ""tyndp_status""=>""in_permitting""",28.063202,59.310067,26.154327,57.918495,2
+TYNDP2020_42,in_permitting,190.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1634"", ""tyndp_status""=>""in_permitting""",22.740326,55.10273,24.252319,54.796727,2
+TYNDP2020_43,planned_not_yet_permitting,57.11,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1661"", ""tyndp_status""=>""planned_not_yet_permitting""",16.11557,54.132674,16.6857237480894,54.0342010066989,2
+TYNDP2020_44,planned_not_yet_permitting,119.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1662"", ""tyndp_status""=>""planned_not_yet_permitting""",16.858521,53.16571,16.6857237480894,54.0342010066989,2
+TYNDP2020_45,planned_not_yet_permitting,288.5,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1664"", ""tyndp_status""=>""planned_not_yet_permitting""",14.831543,53.330873,18.104095,54.714309,2
+TYNDP2020_46,planned_not_yet_permitting,77.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1665"", ""tyndp_status""=>""planned_not_yet_permitting""",18.104095,54.714309,18.684998,54.266026,2
+TYNDP2020_47,in_permitting,92.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/183"", ""tyndp2020_proj_id""=>""183"", ""tyndp2020_invest_id""=>""1018"", ""tyndp_status""=>""in_permitting""",8.86459400000001,55.074436,8.66683999999999,55.481966,2
+TYNDP2020_48,under_construction,60.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/186"", ""tyndp2020_proj_id""=>""186"", ""tyndp2020_invest_id""=>""886"", ""tyndp_status""=>""under_construction""",16.399841,48.323387,16.820068,48.943249,2
+TYNDP2020_49,in_permitting,60.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/187"", ""tyndp2020_proj_id""=>""187"", ""tyndp2020_invest_id""=>""997"", ""tyndp_status""=>""in_permitting""",13.080597,48.256684,13.080597,48.256684,2
+TYNDP2020_50,under_construction,300.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/197"", ""tyndp2020_proj_id""=>""197"", ""tyndp2020_invest_id""=>""742"", ""tyndp_status""=>""under_construction""",26.114502,64.778807,25.180664,62.262171,2
+TYNDP2020_51,in_permitting,83.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""308"", ""tyndp_status""=>""in_permitting""",13.191833,50.341955,12.675274,50.160683,2
+TYNDP2020_52,under_construction,87.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""309"", ""tyndp_status""=>""under_construction""",12.675274,50.160683,13.282471,49.60804,2
+TYNDP2020_53,under_construction,60.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""939"", ""tyndp_status""=>""under_construction""",8.09143099999999,53.313647,7.23587000000001,53.374317,2
+TYNDP2020_54,under_construction,30.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""1684"", ""tyndp_status""=>""under_construction""",8.09143099999999,53.313647,8.00079299999999,53.55581,2
+TYNDP2020_55,under_construction,95.0,2023,False,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/208"", ""tyndp2020_proj_id""=>""208"", ""tyndp2020_invest_id""=>""151"", ""tyndp_status""=>""under_construction""",8.283691,52.344569,8.61877400000001,53.065976,2
+TYNDP2020_56,under_construction,182.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/208"", ""tyndp2020_proj_id""=>""208"", ""tyndp2020_invest_id""=>""156"", ""tyndp_status""=>""under_construction""",6.615143,51.630805,7.38830599999999,53.076703,2
+TYNDP2020_57,in_permitting,45.2,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""627"", ""tyndp_status""=>""in_permitting""",19.500315,43.953021,19.388123,43.723475,2
+TYNDP2020_58,in_permitting,100.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""",19.500315,43.953021,19.315338,43.347152,2
+TYNDP2020_59,under_construction,151.0,2019,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1526"", ""tyndp_status""=>""under_construction""",18.772888,42.315909,19.315338,43.347152,2
+TYNDP2020_60,under_construction,,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1527"", ""tyndp_status""=>""under_construction""",20.928955,44.056999,20.739984,43.680615,2
+TYNDP2020_61,planned_not_yet_permitting,32.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/228"", ""tyndp2020_proj_id""=>""228"", ""tyndp2020_invest_id""=>""1231"", ""tyndp_status""=>""planned_not_yet_permitting""",7.50366199999999,47.891485,7.71240200000001,48.103763,2
+TYNDP2020_62,under_consideration,40.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1270"", ""tyndp_status""=>""under_consideration""",15.038505,52.76751,15.5,51.93333,2
+TYNDP2020_63,under_consideration,40.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1271"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,16.729431,52.32359,2
+TYNDP2020_64,under_consideration,90.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1673"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,16.056519,51.449728,2
+TYNDP2020_65,under_consideration,80.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1674"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,14.615936,52.125058,2
+TYNDP2020_66,in_permitting,100.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""355"", ""tyndp_status""=>""in_permitting""",15.086975,51.069017,16.365509,50.816348,2
+TYNDP2020_67,under_consideration,11.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/231"", ""tyndp2020_proj_id""=>""231"", ""tyndp2020_invest_id""=>""1282"", ""tyndp_status""=>""under_consideration""",8.16970799999999,47.523693,8.205414,47.649662,2
+TYNDP2020_68,under_consideration,91.0,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1276"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.538055,44.455349,2
+TYNDP2020_69,under_consideration,46.2,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1277"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.436344,44.904884,2
+TYNDP2020_70,under_consideration,25.0,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1279"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.420959,45.289022,2
+TYNDP2020_71,under_consideration,47.8,2032,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1530"", ""tyndp_status""=>""under_consideration""",18.436344,44.904884,18.538055,44.455349,2
+TYNDP2020_72,under_consideration,70.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/243"", ""tyndp2020_proj_id""=>""243"", ""tyndp2020_invest_id""=>""1269"", ""tyndp_status""=>""under_consideration""",18.663025,45.454351,19.175262,45.75411,2
+TYNDP2020_73,planned_not_yet_permitting,65.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/244"", ""tyndp2020_proj_id""=>""244"", ""tyndp2020_invest_id""=>""1245"", ""tyndp_status""=>""planned_not_yet_permitting""",6.25122100000001,49.182601,7.028503,49.340336,2
+TYNDP2020_74,under_construction,27.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/245"", ""tyndp2020_proj_id""=>""245"", ""tyndp2020_invest_id""=>""1246"", ""tyndp_status""=>""under_construction""",6.936493,53.145947,7.389679,53.097323,2
+TYNDP2020_75,in_permitting,14.0,2024,True,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/250"", ""tyndp2020_proj_id""=>""250"", ""tyndp2020_invest_id""=>""1384"", ""tyndp_status""=>""in_permitting""",9.503174,46.35925,9.34661899999999,46.251099,2
+TYNDP2020_76,planned_not_yet_permitting,90.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1050"", ""tyndp_status""=>""planned_not_yet_permitting""",5.71701000000001,51.094036,5.35583499999999,50.557942,2
+TYNDP2020_77,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1456"", ""tyndp_status""=>""in_permitting""",4.603271,51.209464,5.71701000000001,51.094036,2
+TYNDP2020_78,planned_not_yet_permitting,60.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1515"", ""tyndp_status""=>""planned_not_yet_permitting""",5.35583499999999,50.557942,4.35470599999999,50.529143,2
+TYNDP2020_79,planned_not_yet_permitting,47.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1516"", ""tyndp_status""=>""planned_not_yet_permitting""",4.22012299999999,50.864911,4.35470599999999,50.529143,2
+TYNDP2020_80,planned_not_yet_permitting,16.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1517"", ""tyndp_status""=>""planned_not_yet_permitting""",4.177551,51.162122,4.22012299999999,50.864911,2
+TYNDP2020_81,planned_not_yet_permitting,36.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1676"", ""tyndp_status""=>""planned_not_yet_permitting""",4.177551,51.162122,4.603271,51.209464,2
+TYNDP2020_82,under_construction,125.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/258"", ""tyndp2020_proj_id""=>""258"", ""tyndp2020_invest_id""=>""667"", ""tyndp_status""=>""under_construction""",9.24087500000001,53.906765,8.86459400000001,55.074436,2
+TYNDP2020_83,under_consideration,120.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/259"", ""tyndp2020_proj_id""=>""259"", ""tyndp2020_invest_id""=>""1205"", ""tyndp_status""=>""under_consideration""",21.566162,47.659838,22.026215,47.044861,2
+TYNDP2020_84,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,8.298798,47.148634,2
+TYNDP2020_85,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.253235,46.824496,2
+TYNDP2020_86,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.80228979023356,47.6377345779987,2
+TYNDP2020_87,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.790192,47.138359,2
+TYNDP2020_88,in_permitting,64.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1259"", ""tyndp_status""=>""in_permitting""",8.16970799999999,47.523693,8.298798,47.148634,2
+TYNDP2020_89,in_permitting,45.4,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1287"", ""tyndp_status""=>""in_permitting""",7.19192499999999,47.364874,7.22213700000001,47.007416,2
+TYNDP2020_90,in_permitting,87.1,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1288"", ""tyndp_status""=>""in_permitting""",8.298798,47.148634,8.32488999999999,46.532414,2
+TYNDP2020_91,planned_not_yet_permitting,,2035,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/265"", ""tyndp2020_proj_id""=>""265"", ""tyndp2020_invest_id""=>""1290"", ""tyndp_status""=>""planned_not_yet_permitting""",8.85498,46.16081,8.32488999999999,46.532414,2
+TYNDP2020_92,in_permitting,124.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1286"", ""tyndp_status""=>""in_permitting""",7.555847,46.336499,8.795929,46.401882,2
+TYNDP2020_93,in_permitting,106.6,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1733"", ""tyndp_status""=>""in_permitting""",7.64236499999999,47.079475,7.555847,46.336499,2
+TYNDP2020_94,under_construction,30.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1734"", ""tyndp_status""=>""under_construction""",7.165833,46.200745,7.555847,46.336499,2
+TYNDP2020_95,planned_not_yet_permitting,110.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1212"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.14818,42.10892,-1.671123,41.952398,2
+TYNDP2020_96,planned_not_yet_permitting,80.0,2029,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1208"", ""tyndp_status""=>""planned_not_yet_permitting""",-0.812988000000009,43.979969,-0.575409000000004,43.345155,2
+TYNDP2020_97,under_construction,1.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""",4.307132,51.301299,4.307132,51.301299,2
+TYNDP2020_98,under_construction,128.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/312"", ""tyndp2020_proj_id""=>""312"", ""tyndp2020_invest_id""=>""1472"", ""tyndp_status""=>""under_construction""",13.080597,48.256684,12.803192,47.244746,2
+TYNDP2020_99,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/313"", ""tyndp2020_proj_id""=>""313"", ""tyndp2020_invest_id""=>""1473"", ""tyndp_status""=>""in_permitting""",12.172852,48.638354,13.080597,48.256684,2
+TYNDP2020_100,under_construction,80.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/320"", ""tyndp2020_proj_id""=>""320"", ""tyndp2020_invest_id""=>""1558"", ""tyndp_status""=>""under_construction""",15.724182,46.386728,16.689606,46.633408,2
+TYNDP2020_101,in_permitting,85.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""",10.06485,48.282279,9.73251299999999,47.623752,2
+TYNDP2020_102,in_permitting,11.0,2025,True,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/323"", ""tyndp2020_proj_id""=>""323"", ""tyndp2020_invest_id""=>""1478"", ""tyndp_status""=>""in_permitting""",13.717804,45.526555,13.791962,45.691792,2
+TYNDP2020_103,in_permitting,22.5,2023,True,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/324"", ""tyndp2020_proj_id""=>""324"", ""tyndp2020_invest_id""=>""1482"", ""tyndp_status""=>""in_permitting""",13.471985,45.801042,13.654633,45.967379,2
+TYNDP2020_104,planned_not_yet_permitting,40.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/328"", ""tyndp2020_proj_id""=>""328"", ""tyndp2020_invest_id""=>""1630"", ""tyndp_status""=>""planned_not_yet_permitting""",6.590884,49.789617,6.140853,49.688695,2
+TYNDP2020_105,under_consideration,78.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/330"", ""tyndp2020_proj_id""=>""330"", ""tyndp2020_invest_id""=>""1498"", ""tyndp_status""=>""under_consideration""",17.440796,49.236431,18.287416,49.038186,2
+TYNDP2020_106,under_construction,139.0,2023,False,132,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/336"", ""tyndp2020_proj_id""=>""336"", ""tyndp2020_invest_id""=>""1556"", ""tyndp_status""=>""under_construction""",11.604309,47.081345,11.604309,47.081345,2
+TYNDP2020_107,planned_not_yet_permitting,100.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/340"", ""tyndp2020_proj_id""=>""340"", ""tyndp2020_invest_id""=>""1519"", ""tyndp_status""=>""planned_not_yet_permitting""",3.429108,50.773813,4.35470599999999,50.529143,2
+TYNDP2020_108,under_consideration,60.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1538"", ""tyndp_status""=>""under_consideration""",20.9729,44.874362,20.378265,44.819838,2
+TYNDP2020_109,planned_not_yet_permitting,180.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1532"", ""tyndp_status""=>""planned_not_yet_permitting""",17.201843,44.772087,15.26017,44.886816,2
+TYNDP2020_110,planned_not_yet_permitting,68.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1533"", ""tyndp_status""=>""planned_not_yet_permitting""",15.26017,44.886816,14.558258,45.323186,2
+TYNDP2020_111,under_consideration,165.0,2040,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/344"", ""tyndp2020_proj_id""=>""344"", ""tyndp2020_invest_id""=>""1541"", ""tyndp_status""=>""under_consideration""",6.14410399999999,52.52207,5.671692,51.908696,2
+TYNDP2020_112,planned_not_yet_permitting,160.0,2025,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1639"", ""tyndp_status""=>""planned_not_yet_permitting""",-9.578832,54.120411,-8.268819,53.134319,2
+TYNDP2020_113,under_construction,161.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""",20.725963,41.239159,19.966278,41.16108,2
+TYNDP2020_114,planned_not_yet_permitting,140.0,2027,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/375"", ""tyndp2020_proj_id""=>""375"", ""tyndp2020_invest_id""=>""1555"", ""tyndp_status""=>""planned_not_yet_permitting""",12.693329,46.798179,11.666107,45.792425,2
+TYNDP2020_115,under_consideration,38.8,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1593"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-3.05282599999999,43.265206,2
+TYNDP2020_116,under_consideration,69.12,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1595"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-2.24395799999999,43.047816,2
+TYNDP2020_117,under_consideration,57.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1597"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-2.20687899999999,43.098977,2
+TYNDP2020_118,under_consideration,170.0,2030,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1042"", ""tyndp2020_proj_id""=>""1042"", ""tyndp2020_invest_id""=>""1694"", ""tyndp_status""=>""under_consideration""",21.295624,56.032924,23.506622,56.113404,2
+TYNDP2020_119,under_consideration,72.0,2030,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1042"", ""tyndp2020_proj_id""=>""1042"", ""tyndp2020_invest_id""=>""1695"", ""tyndp_status""=>""under_consideration""",24.307251,55.762668,23.506622,56.113404,2
+TYNDP2020_120,under_construction,14.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1685"", ""tyndp_status""=>""under_construction""",9.48532099999999,53.629168,9.48532099999999,53.629168,2
+TYNDP2020_121,under_construction,60.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",10.299683,52.286643,9.988131,51.954234,2
+TYNDP2020_122,under_construction,45.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",9.988131,51.954234,9.852428,51.649318,2
+TYNDP2020_123,under_construction,105.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",9.852428,51.649318,9.621277,50.85971,2
+TYNDP2020_124,in_permitting,290.0,2028,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1688"", ""tyndp_status""=>""in_permitting""",26.842346,64.556701,27.766571,62.262171,2
+TYNDP2020_125,in_permitting,100.0,2029,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1689"", ""tyndp_status""=>""in_permitting""",25.692902,65.279688,26.842346,64.556701,2
+TYNDP2020_126,planned_not_yet_permitting,175.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1697"", ""tyndp_status""=>""planned_not_yet_permitting""",25.180664,62.262171,24.915619,60.90707,2
+TYNDP2020_127,under_consideration,31.0,2035,True,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1047"", ""tyndp2020_proj_id""=>""1047"", ""tyndp2020_invest_id""=>""1691"", ""tyndp_status""=>""under_consideration""",7.23587000000001,53.374317,6.86370800000001,53.418536,2
+TYNDP2020_128,planned_not_yet_permitting,170.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1052"", ""tyndp2020_proj_id""=>""1052"", ""tyndp2020_invest_id""=>""1713"", ""tyndp_status""=>""planned_not_yet_permitting""",12.693329,46.798179,14.5912685597917,46.536256583087,2
+TYNDP2020_129,planned_not_yet_permitting,105.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1054"", ""tyndp2020_proj_id""=>""1054"", ""tyndp2020_invest_id""=>""1715"", ""tyndp_status""=>""planned_not_yet_permitting""",10.897064,47.236355,11.964111,47.292271,2
+TYNDP2020_130,under_consideration,90.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1723"", ""tyndp_status""=>""under_consideration""",16.78425,43.503952,17.436701,43.052743,2
+TYNDP2020_131,under_consideration,105.0,2035,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1724"", ""tyndp_status""=>""under_consideration""",17.436701,43.052743,18.23576,42.610562,2
+TYNDP2020_132,in_permitting,50.0,2027,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""645"", ""tyndp_status""=>""in_permitting""",15.996094,39.990799,16.020813,39.780047,2
+TYNDP2020_133,in_permitting,,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""",15.03067,40.66814,15.058136,40.941527,2
+TYNDP2020_134,in_permitting,,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""",15.058136,40.941527,14.957886,41.143501,2
+TYNDP2020_135,under_construction,40.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1063"", ""tyndp2020_proj_id""=>""1063"", ""tyndp2020_invest_id""=>""1731"", ""tyndp_status""=>""under_construction""",4.218787,51.424034,4.218787,51.424034,2
+TYNDP2020_136,under_consideration,50.6,2036,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1742"", ""tyndp_status""=>""under_consideration""",19.720459,46.020807,20.170898,46.29856,2
+TYNDP2020_137,under_consideration,80.0,2036,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1743"", ""tyndp_status""=>""under_consideration""",19.175262,45.75411,19.756165,45.527517,2
diff --git a/data/tyndp/new_links.csv b/data/tyndp/new_links.csv
index 10c87f224..a0dfb7338 100644
--- a/data/tyndp/new_links.csv
+++ b/data/tyndp/new_links.csv
@@ -1,51 +1,51 @@
-,project_status,length,build_year,underground,p_nom,tags,geometry
-TYNDP2020_0,under_consideration,330.0,2033,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/234"", ""tyndp2020_proj_id""=>""234"", ""tyndp2020_invest_id""=>""1236"", ""tyndp_status""=>""under_consideration""","LINESTRING (12.492828 55.609384, 16.11557 54.132674)"
-TYNDP2020_1,in_permitting,700.0,2026,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.24087500000001 53.906765, 9.12211621382025 49.0939516665424)"
-TYNDP2020_2,in_permitting,558.0,2026,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.327393 53.931837, 10.081329 49.950336)"
-TYNDP2020_3,under_consideration,200.0,2035,True,800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/239"", ""tyndp2020_proj_id""=>""239"", ""tyndp2020_invest_id""=>""1241"", ""tyndp_status""=>""under_consideration""","LINESTRING (17.166138 63.184727, 21.901245 63.03068)"
-TYNDP2020_4,planned_not_yet_permitting,267.0,2030,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1692"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (8.00079299999999 53.55581, 8.06808499999999 51.653815)"
-TYNDP2020_5,planned_not_yet_permitting,407.0,2030,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1693"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (9.13101199999999 54.20101, 7.06420899999999 51.66063)"
-TYNDP2020_6,under_construction,445.0,2026,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/28"", ""tyndp2020_proj_id""=>""28"", ""tyndp2020_invest_id""=>""1503"", ""tyndp_status""=>""under_construction""","LINESTRING (14.028168 42.409263, 18.772888 42.315909)"
-TYNDP2020_7,in_permitting,240.0,2023,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/247"", ""tyndp2020_proj_id""=>""247"", ""tyndp2020_invest_id""=>""1381"", ""tyndp_status""=>""in_permitting""","LINESTRING (-1.05331400000001 50.900435, 1.11373900000001 49.712937)"
-TYNDP2020_8,under_consideration,133.0,2027,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1040"", ""tyndp2020_proj_id""=>""1040"", ""tyndp2020_invest_id""=>""1677"", ""tyndp_status""=>""under_consideration""","LINESTRING (-5.80902099999999 54.726206, -4.880676 55.704677)"
-TYNDP2020_9,under_construction,623.0,2020,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/37"", ""tyndp2020_proj_id""=>""37"", ""tyndp2020_invest_id""=>""142"", ""tyndp_status""=>""under_construction""","LINESTRING (6.82251000000001 58.660514, 9.327393 53.931837)"
-TYNDP2020_10,in_permitting,340.0,2024,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/254"", ""tyndp2020_proj_id""=>""254"", ""tyndp2020_invest_id""=>""660"", ""tyndp_status""=>""in_permitting""","LINESTRING (6.58493 51.245584, 8.478699 49.283036)"
-TYNDP2020_11,under_consideration,230.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1049"", ""tyndp2020_proj_id""=>""1049"", ""tyndp2020_invest_id""=>""1706"", ""tyndp_status""=>""under_consideration""","LINESTRING (0.763549999999995 51.403489, 3.18054200000001 51.330612)"
-TYNDP2020_12,under_consideration,610.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1050"", ""tyndp2020_proj_id""=>""1050"", ""tyndp2020_invest_id""=>""1707"", ""tyndp_status""=>""under_consideration""","LINESTRING (0.482024999999987 51.519853, 7.23587000000001 53.374317)"
-TYNDP2020_13,under_consideration,640.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1051"", ""tyndp2020_proj_id""=>""1051"", ""tyndp2020_invest_id""=>""1708"", ""tyndp_status""=>""under_consideration""","LINESTRING (1.30737299999999 52.593038, 9.22851599999999 55.481188)"
-TYNDP2020_14,under_consideration,300.0,2030,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/267"", ""tyndp2020_proj_id""=>""267"", ""tyndp2020_invest_id""=>""1262"", ""tyndp_status""=>""under_consideration""","LINESTRING (13.580475 55.86067, 12.204437 53.760078)"
-TYNDP2020_15,planned_not_yet_permitting,230.0,2030,False,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1211"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-1.671123 41.952398, -0.575409000000004 43.345155)"
-TYNDP2020_16,under_consideration,200.0,2040,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1058"", ""tyndp2020_proj_id""=>""1058"", ""tyndp2020_invest_id""=>""1726"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.43585963014029 48.6383575221442, 8.298798 47.148634)"
-TYNDP2020_17,in_permitting,500.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/107"", ""tyndp2020_proj_id""=>""107"", ""tyndp2020_invest_id""=>""810"", ""tyndp_status""=>""in_permitting""","LINESTRING (-8.36471600000001 51.892597, -4.237976 48.518424)"
-TYNDP2020_18,under_construction,720.0,2021,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/110"", ""tyndp2020_proj_id""=>""110"", ""tyndp2020_invest_id""=>""424"", ""tyndp_status""=>""under_construction""","LINESTRING (6.649475 59.461826, -1.572418 55.113728)"
-TYNDP2020_19,planned_not_yet_permitting,225.0,2029,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1206"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-1.645402 42.818157, -0.812988000000009 43.979969)"
-TYNDP2020_20,under_consideration,195.0,2036,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1740"", ""tyndp_status""=>""under_consideration""","LINESTRING (18.227692 57.571097, 21.100616 56.489036)"
-TYNDP2020_21,planned_not_yet_permitting,156.0,2022,True,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/285"", ""tyndp2020_proj_id""=>""285"", ""tyndp2020_invest_id""=>""1383"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (0.575409000000004 51.430896, 2.16293300000001 50.923813)"
-TYNDP2020_22,in_permitting,540.0,2025,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/130"", ""tyndp2020_proj_id""=>""130"", ""tyndp2020_invest_id""=>""665"", ""tyndp_status""=>""in_permitting""","LINESTRING (11.637268 52.27404, 12.292328 48.659222)"
-TYNDP2020_23,in_permitting,300.0,2025,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/132"", ""tyndp2020_proj_id""=>""132"", ""tyndp2020_invest_id""=>""661"", ""tyndp_status""=>""in_permitting""","LINESTRING (7.23587000000001 53.374317, 6.58493 51.245584)"
-TYNDP2020_24,under_consideration,110.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1747"", ""tyndp_status""=>""under_consideration""","LINESTRING (22.9422 40.662931, 22.111359 41.50035)"
-TYNDP2020_25,under_consideration,170.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1748"", ""tyndp_status""=>""under_consideration""","LINESTRING (22.111359 41.50035, 23.03833 42.549034)"
-TYNDP2020_26,under_consideration,180.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1081"", ""tyndp2020_proj_id""=>""1081"", ""tyndp2020_invest_id""=>""1749"", ""tyndp_status""=>""under_consideration""","LINESTRING (21.137695 39.279042, 19.966278 41.16108)"
-TYNDP2020_27,under_consideration,665.0,2026,True,1800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""","LINESTRING (-1.972046 43.32318, -1.847076 47.30531)"
-TYNDP2020_28,under_consideration,665.0,2026,True,1800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""","LINESTRING (-1.847076 47.30531, -3.967438 50.489842)"
-TYNDP2020_29,in_permitting,100.0,2024,True,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""","LINESTRING (8.63662699999999 40.644178, 9.45098899999999 42.538916)"
-TYNDP2020_30,in_permitting,50.0,2024,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.45098899999999 42.538916, 10.671844 43.014689)"
-TYNDP2020_31,in_permitting,170.0,2028,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/150"", ""tyndp2020_proj_id""=>""150"", ""tyndp2020_invest_id""=>""616"", ""tyndp_status""=>""in_permitting""","LINESTRING (12.516174 45.825928, 14.615936 46.084662)"
-TYNDP2020_32,in_permitting,700.0,2024,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/309"", ""tyndp2020_proj_id""=>""309"", ""tyndp2020_invest_id""=>""1628"", ""tyndp_status""=>""in_permitting""","LINESTRING (0.763549999999995 51.403489, 8.00079299999999 53.55581)"
-TYNDP2020_33,in_permitting,400.0,2026,True,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1034"", ""tyndp_status""=>""in_permitting""","LINESTRING (21.295624 56.032924, 18.104095 54.714309)"
-TYNDP2020_34,under_consideration,328.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1505"", ""tyndp_status""=>""under_consideration""","LINESTRING (8.66683999999999 55.481966, 3.590555 55.343106)"
-TYNDP2020_35,under_consideration,360.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1506"", ""tyndp_status""=>""under_consideration""","LINESTRING (4.05120799999999 51.942572, 3.590555 55.343106)"
-TYNDP2020_36,under_construction,69.0,2021,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/172"", ""tyndp2020_proj_id""=>""172"", ""tyndp2020_invest_id""=>""1487"", ""tyndp_status""=>""under_construction""","LINESTRING (0.95855700000001 51.059523, 1.833344 50.902167)"
-TYNDP2020_37,in_permitting,165.0,2024,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/174"", ""tyndp2020_proj_id""=>""174"", ""tyndp2020_invest_id""=>""1014"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.449615 45.620761, 9.253235 46.824496)"
-TYNDP2020_38,in_permitting,300.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/176"", ""tyndp2020_proj_id""=>""176"", ""tyndp2020_invest_id""=>""995"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.580475 55.86067, 12.204437 53.760078)"
-TYNDP2020_39,under_consideration,170.0,2030,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/179"", ""tyndp2020_proj_id""=>""179"", ""tyndp2020_invest_id""=>""1016"", ""tyndp_status""=>""under_consideration""","LINESTRING (11.969604 55.468735, 12.271729 54.068253)"
-TYNDP2020_40,under_consideration,290.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1507"", ""tyndp_status""=>""under_consideration""","LINESTRING (6.86370800000001 53.418536, 3.590555 55.343106)"
-TYNDP2020_41,under_consideration,390.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1508"", ""tyndp_status""=>""under_consideration""","LINESTRING (9.24087500000001 53.906765, 3.590555 55.343106)"
-TYNDP2020_42,under_consideration,400.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1509"", ""tyndp_status""=>""under_consideration""","LINESTRING (8.418274 53.182996, 3.590555 55.343106)"
-TYNDP2020_43,under_consideration,490.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1511"", ""tyndp_status""=>""under_consideration""","LINESTRING (10.458984 53.435719, 3.590555 55.343106)"
-TYNDP2020_44,planned_not_yet_permitting,400.0,2030,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/338"", ""tyndp2020_proj_id""=>""338"", ""tyndp2020_invest_id""=>""1521"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (14.028168 42.409263, 12.811432 43.915702)"
-TYNDP2020_45,planned_not_yet_permitting,400.0,2025,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (9.18319700000001 39.374649, 13.304443 38.159396)"
-TYNDP2020_46,planned_not_yet_permitting,500.0,2025,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (9.18319700000001 39.374649, 14.639282 40.688969)"
-TYNDP2020_47,under_consideration,150.0,2035,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/225"", ""tyndp2020_proj_id""=>""225"", ""tyndp2020_invest_id""=>""1107"", ""tyndp_status""=>""under_consideration""","LINESTRING (5.35583499999999 50.557942, 6.568451 50.403266)"
-TYNDP2020_48,planned_not_yet_permitting,211.0,2025,False,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1638"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-3.474151 53.250084, -6.602175 53.348929)"
-TYNDP2020_49,planned_not_yet_permitting,255.0,2025,False,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1640"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-6.602175 53.348929, -9.578832 54.120411)"
+,project_status,length,build_year,underground,p_nom,tags,x0,y0,x1,y1
+TYNDP2020_0,under_consideration,330.0,2033,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/234"", ""tyndp2020_proj_id""=>""234"", ""tyndp2020_invest_id""=>""1236"", ""tyndp_status""=>""under_consideration""",12.492828,55.609384,16.11557,54.132674
+TYNDP2020_1,in_permitting,700.0,2026,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""",9.24087500000001,53.906765,9.12211621382025,49.0939516665424
+TYNDP2020_2,in_permitting,558.0,2026,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""",9.327393,53.931837,10.081329,49.950336
+TYNDP2020_3,under_consideration,200.0,2035,True,800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/239"", ""tyndp2020_proj_id""=>""239"", ""tyndp2020_invest_id""=>""1241"", ""tyndp_status""=>""under_consideration""",17.166138,63.184727,21.901245,63.03068
+TYNDP2020_4,planned_not_yet_permitting,267.0,2030,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1692"", ""tyndp_status""=>""planned_not_yet_permitting""",8.00079299999999,53.55581,8.06808499999999,51.653815
+TYNDP2020_5,planned_not_yet_permitting,407.0,2030,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1693"", ""tyndp_status""=>""planned_not_yet_permitting""",9.13101199999999,54.20101,7.06420899999999,51.66063
+TYNDP2020_6,under_construction,445.0,2026,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/28"", ""tyndp2020_proj_id""=>""28"", ""tyndp2020_invest_id""=>""1503"", ""tyndp_status""=>""under_construction""",14.028168,42.409263,18.772888,42.315909
+TYNDP2020_7,in_permitting,240.0,2023,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/247"", ""tyndp2020_proj_id""=>""247"", ""tyndp2020_invest_id""=>""1381"", ""tyndp_status""=>""in_permitting""",-1.05331400000001,50.900435,1.11373900000001,49.712937
+TYNDP2020_8,under_consideration,133.0,2027,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1040"", ""tyndp2020_proj_id""=>""1040"", ""tyndp2020_invest_id""=>""1677"", ""tyndp_status""=>""under_consideration""",-5.80902099999999,54.726206,-4.880676,55.704677
+TYNDP2020_9,under_construction,623.0,2020,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/37"", ""tyndp2020_proj_id""=>""37"", ""tyndp2020_invest_id""=>""142"", ""tyndp_status""=>""under_construction""",6.82251000000001,58.660514,9.327393,53.931837
+TYNDP2020_10,in_permitting,340.0,2024,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/254"", ""tyndp2020_proj_id""=>""254"", ""tyndp2020_invest_id""=>""660"", ""tyndp_status""=>""in_permitting""",6.58493,51.245584,8.478699,49.283036
+TYNDP2020_11,under_consideration,230.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1049"", ""tyndp2020_proj_id""=>""1049"", ""tyndp2020_invest_id""=>""1706"", ""tyndp_status""=>""under_consideration""",0.763549999999995,51.403489,3.18054200000001,51.330612
+TYNDP2020_12,under_consideration,610.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1050"", ""tyndp2020_proj_id""=>""1050"", ""tyndp2020_invest_id""=>""1707"", ""tyndp_status""=>""under_consideration""",0.482024999999987,51.519853,7.23587000000001,53.374317
+TYNDP2020_13,under_consideration,640.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1051"", ""tyndp2020_proj_id""=>""1051"", ""tyndp2020_invest_id""=>""1708"", ""tyndp_status""=>""under_consideration""",1.30737299999999,52.593038,9.22851599999999,55.481188
+TYNDP2020_14,under_consideration,300.0,2030,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/267"", ""tyndp2020_proj_id""=>""267"", ""tyndp2020_invest_id""=>""1262"", ""tyndp_status""=>""under_consideration""",13.580475,55.86067,12.204437,53.760078
+TYNDP2020_15,planned_not_yet_permitting,230.0,2030,False,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1211"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.671123,41.952398,-0.575409000000004,43.345155
+TYNDP2020_16,under_consideration,200.0,2040,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1058"", ""tyndp2020_proj_id""=>""1058"", ""tyndp2020_invest_id""=>""1726"", ""tyndp_status""=>""under_consideration""",9.43585963014029,48.6383575221442,8.298798,47.148634
+TYNDP2020_17,in_permitting,500.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/107"", ""tyndp2020_proj_id""=>""107"", ""tyndp2020_invest_id""=>""810"", ""tyndp_status""=>""in_permitting""",-8.36471600000001,51.892597,-4.237976,48.518424
+TYNDP2020_18,under_construction,720.0,2021,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/110"", ""tyndp2020_proj_id""=>""110"", ""tyndp2020_invest_id""=>""424"", ""tyndp_status""=>""under_construction""",6.649475,59.461826,-1.572418,55.113728
+TYNDP2020_19,planned_not_yet_permitting,225.0,2029,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1206"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.645402,42.818157,-0.812988000000009,43.979969
+TYNDP2020_20,under_consideration,195.0,2036,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1740"", ""tyndp_status""=>""under_consideration""",18.227692,57.571097,21.100616,56.489036
+TYNDP2020_21,planned_not_yet_permitting,156.0,2022,True,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/285"", ""tyndp2020_proj_id""=>""285"", ""tyndp2020_invest_id""=>""1383"", ""tyndp_status""=>""planned_not_yet_permitting""",0.575409000000004,51.430896,2.16293300000001,50.923813
+TYNDP2020_22,in_permitting,540.0,2025,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/130"", ""tyndp2020_proj_id""=>""130"", ""tyndp2020_invest_id""=>""665"", ""tyndp_status""=>""in_permitting""",11.637268,52.27404,12.292328,48.659222
+TYNDP2020_23,in_permitting,300.0,2025,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/132"", ""tyndp2020_proj_id""=>""132"", ""tyndp2020_invest_id""=>""661"", ""tyndp_status""=>""in_permitting""",7.23587000000001,53.374317,6.58493,51.245584
+TYNDP2020_24,under_consideration,110.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1747"", ""tyndp_status""=>""under_consideration""",22.9422,40.662931,22.111359,41.50035
+TYNDP2020_25,under_consideration,170.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1748"", ""tyndp_status""=>""under_consideration""",22.111359,41.50035,23.03833,42.549034
+TYNDP2020_26,under_consideration,180.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1081"", ""tyndp2020_proj_id""=>""1081"", ""tyndp2020_invest_id""=>""1749"", ""tyndp_status""=>""under_consideration""",21.137695,39.279042,19.966278,41.16108
+TYNDP2020_27,under_consideration,665.0,2026,True,1800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""",-1.972046,43.32318,-1.847076,47.30531
+TYNDP2020_28,under_consideration,665.0,2026,True,1800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""",-1.847076,47.30531,-3.967438,50.489842
+TYNDP2020_29,in_permitting,100.0,2024,True,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""",8.63662699999999,40.644178,9.45098899999999,42.538916
+TYNDP2020_30,in_permitting,50.0,2024,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""",9.45098899999999,42.538916,10.671844,43.014689
+TYNDP2020_31,in_permitting,170.0,2028,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/150"", ""tyndp2020_proj_id""=>""150"", ""tyndp2020_invest_id""=>""616"", ""tyndp_status""=>""in_permitting""",12.516174,45.825928,14.615936,46.084662
+TYNDP2020_32,in_permitting,700.0,2024,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/309"", ""tyndp2020_proj_id""=>""309"", ""tyndp2020_invest_id""=>""1628"", ""tyndp_status""=>""in_permitting""",0.763549999999995,51.403489,8.00079299999999,53.55581
+TYNDP2020_33,in_permitting,400.0,2026,True,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1034"", ""tyndp_status""=>""in_permitting""",21.295624,56.032924,18.104095,54.714309
+TYNDP2020_34,under_consideration,328.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1505"", ""tyndp_status""=>""under_consideration""",8.66683999999999,55.481966,3.590555,55.343106
+TYNDP2020_35,under_consideration,360.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1506"", ""tyndp_status""=>""under_consideration""",4.05120799999999,51.942572,3.590555,55.343106
+TYNDP2020_36,under_construction,69.0,2021,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/172"", ""tyndp2020_proj_id""=>""172"", ""tyndp2020_invest_id""=>""1487"", ""tyndp_status""=>""under_construction""",0.95855700000001,51.059523,1.833344,50.902167
+TYNDP2020_37,in_permitting,165.0,2024,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/174"", ""tyndp2020_proj_id""=>""174"", ""tyndp2020_invest_id""=>""1014"", ""tyndp_status""=>""in_permitting""",9.449615,45.620761,9.253235,46.824496
+TYNDP2020_38,in_permitting,300.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/176"", ""tyndp2020_proj_id""=>""176"", ""tyndp2020_invest_id""=>""995"", ""tyndp_status""=>""in_permitting""",13.580475,55.86067,12.204437,53.760078
+TYNDP2020_39,under_consideration,170.0,2030,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/179"", ""tyndp2020_proj_id""=>""179"", ""tyndp2020_invest_id""=>""1016"", ""tyndp_status""=>""under_consideration""",11.969604,55.468735,12.271729,54.068253
+TYNDP2020_40,under_consideration,290.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1507"", ""tyndp_status""=>""under_consideration""",6.86370800000001,53.418536,3.590555,55.343106
+TYNDP2020_41,under_consideration,390.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1508"", ""tyndp_status""=>""under_consideration""",9.24087500000001,53.906765,3.590555,55.343106
+TYNDP2020_42,under_consideration,400.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1509"", ""tyndp_status""=>""under_consideration""",8.418274,53.182996,3.590555,55.343106
+TYNDP2020_43,under_consideration,490.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1511"", ""tyndp_status""=>""under_consideration""",10.458984,53.435719,3.590555,55.343106
+TYNDP2020_44,planned_not_yet_permitting,400.0,2030,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/338"", ""tyndp2020_proj_id""=>""338"", ""tyndp2020_invest_id""=>""1521"", ""tyndp_status""=>""planned_not_yet_permitting""",14.028168,42.409263,12.811432,43.915702
+TYNDP2020_45,planned_not_yet_permitting,400.0,2025,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""",9.18319700000001,39.374649,13.304443,38.159396
+TYNDP2020_46,planned_not_yet_permitting,500.0,2025,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""",9.18319700000001,39.374649,14.639282,40.688969
+TYNDP2020_47,under_consideration,150.0,2035,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/225"", ""tyndp2020_proj_id""=>""225"", ""tyndp2020_invest_id""=>""1107"", ""tyndp_status""=>""under_consideration""",5.35583499999999,50.557942,6.568451,50.403266
+TYNDP2020_48,planned_not_yet_permitting,211.0,2025,False,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1638"", ""tyndp_status""=>""planned_not_yet_permitting""",-3.474151,53.250084,-6.602175,53.348929
+TYNDP2020_49,planned_not_yet_permitting,255.0,2025,False,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1640"", ""tyndp_status""=>""planned_not_yet_permitting""",-6.602175,53.348929,-9.578832,54.120411
diff --git a/data/tyndp/upgraded_lines.csv b/data/tyndp/upgraded_lines.csv
index f360a54da..2ac6ac757 100644
--- a/data/tyndp/upgraded_lines.csv
+++ b/data/tyndp/upgraded_lines.csv
@@ -1,37 +1,37 @@
-,project_status,length,build_year,underground,v_nom,tags,geometry,num_parallel
-14637,under_construction,205.0,2020,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""386"", ""tyndp_status""=>""under_construction""","LINESTRING (25.166931 58.185909, 24.271545 56.917998)",2
-5735,under_construction,15.0,2020,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""1062"", ""tyndp_status""=>""under_construction""","LINESTRING (24.271545 56.917998, 24.264679 56.854228)",2
-6031,in_permitting,32.0,2024,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1490"", ""tyndp_status""=>""in_permitting""","LINESTRING (5.763702 52.619725, 6.14410399999999 52.52207)",2
-5123,in_permitting,35.0,2023,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1539"", ""tyndp_status""=>""in_permitting""","LINESTRING (4.592285 51.916321, 4.83398400000001 51.704055)",2
-8591,in_permitting,80.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""382"", ""tyndp_status""=>""in_permitting""","LINESTRING (25.132599 54.591958, 25.415497 54.854478)",2
-6377,under_consideration,76.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1004"", ""tyndp_status""=>""under_consideration""","LINESTRING (24.689026 58.377959, 25.19989 58.921664)",2
-14651,in_permitting,133.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1010"", ""tyndp_status""=>""in_permitting""","LINESTRING (26.559448 58.359953, 25.473175 57.541628)",2
-8435,planned_not_yet_permitting,41.5,2023,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1663"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (14.440155 53.16571, 14.831543 53.330873)",2
-12697,in_permitting,70.0,2021,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""353"", ""tyndp_status""=>""in_permitting""","LINESTRING (14.440155 53.16571, 15.038505 52.76751)",2
-14734,under_construction,49.0,2022,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1284"", ""tyndp_status""=>""under_construction""","LINESTRING (10.362854 46.809459, 9.79568500000001 46.561693)",2
-6348,under_construction,17.0,2020,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""","LINESTRING (4.26544200000001 51.358062, 4.307132 51.301299)",2
-6347,in_permitting,4.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""","LINESTRING (4.307132 51.301299, 4.27917500000001 51.25504)",2
-10813,in_permitting,10.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""","LINESTRING (9.73251299999999 47.623752, 9.80228979023356 47.6377345779987)",2
-14499,under_consideration,2.0,2030,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1536"", ""tyndp_status""=>""under_consideration""","LINESTRING (22.578278 44.679395, 22.542572 44.612956)",2
-9296,planned_not_yet_permitting,203.0,2030,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1534"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (15.26017 44.886816, 16.500092 43.603267)",2
-6044,in_permitting,80.0,2029,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/346"", ""tyndp2020_proj_id""=>""346"", ""tyndp2020_invest_id""=>""1544"", ""tyndp_status""=>""in_permitting""","LINESTRING (4.218787 51.424034, 5.061511 51.608344)",2
-6087,under_construction,40.0,2023,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/348"", ""tyndp2020_proj_id""=>""348"", ""tyndp2020_invest_id""=>""1546"", ""tyndp_status""=>""under_construction""","LINESTRING (6.86370800000001 53.418536, 6.474759 53.213488)",2
-14697,under_consideration,35.512,2036,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/376"", ""tyndp2020_proj_id""=>""376"", ""tyndp2020_invest_id""=>""1559"", ""tyndp_status""=>""under_consideration""","LINESTRING (21.474152 40.839788, 21.475525 41.045181)",2
-14758,under_consideration,12.0,2030,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/377"", ""tyndp2020_proj_id""=>""377"", ""tyndp2020_invest_id""=>""1561"", ""tyndp_status""=>""under_consideration""","LINESTRING (5.71701000000001 51.094036, 5.89691199999999 51.140586)",2
-8621,in_permitting,131.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""","LINESTRING (-7.72338899999999 41.614416, -7.793621146853301 41.52102394053344)",2
-6066,under_construction,175.0,2021,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""735"", ""tyndp_status""=>""under_construction""","LINESTRING (24.588776 59.38778, 24.689026 58.377959)",2
-6036,in_permitting,50.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1540"", ""tyndp_status""=>""in_permitting""","LINESTRING (5.46295200000001 51.422333, 5.89691199999999 51.140586)",2
-3715,in_permitting,94.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""257"", ""tyndp_status""=>""in_permitting""","LINESTRING (26.003265 42.200038, 24.483032 42.09007)",2
-8260,in_permitting,74.0,2025,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""","LINESTRING (21.88777 45.30413, 21.2815 45.7426)",2
-8367,in_permitting,274.0,2025,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""","LINESTRING (21.2815 45.7426, 21.409607 46.176978)",2
-6040,in_permitting,168.0,2023,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1012"", ""tyndp_status""=>""in_permitting""","LINESTRING (28.063202 59.310067, 26.559448 58.359953)",2
-10487,in_permitting,44.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1634"", ""tyndp_status""=>""in_permitting""","LINESTRING (22.067413 55.076009, 22.740326 55.10273)",2
-8589,in_permitting,147.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1659"", ""tyndp_status""=>""in_permitting""","LINESTRING (21.295624 56.032924, 22.067413 55.076009)",2
-9503,in_permitting,51.0,2023,False,220.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/210"", ""tyndp2020_proj_id""=>""210"", ""tyndp2020_invest_id""=>""1380"", ""tyndp_status""=>""in_permitting""","LINESTRING (13.022919 46.263443, 12.947388 46.363041)",2
-1693,in_permitting,,2026,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""","LINESTRING (20.187378 44.664746, 19.500315 43.953021)",2
-12696,in_permitting,147.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""1232"", ""tyndp_status""=>""in_permitting""","LINESTRING (15.038505 52.76751, 16.729431 52.32359)",2
-3966,planned_not_yet_permitting,70.0,2029,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1207"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-0.812988000000009 43.979969, -0.547943 44.563077)",2
-14277,in_permitting,15.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""","LINESTRING (4.27917500000001 51.25504, 4.177551 51.162122)",2
-14594,under_consideration,70.0,2034,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/325"", ""tyndp2020_proj_id""=>""325"", ""tyndp2020_invest_id""=>""1483"", ""tyndp_status""=>""under_consideration""","LINESTRING (14.5912685597917 46.536256583087, 15.119934 46.263443)",2
-12655,under_construction,161.0,2020,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""","LINESTRING (21.475525 41.045181, 20.725963 41.239159)",2
-6355,under_consideration,90.0,2036,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1744"", ""tyndp_status""=>""under_consideration""","LINESTRING (19.756165 45.527517, 19.609222 45.021127)",2
+,project_status,length,build_year,underground,v_nom,tags,x0,y0,x1,y1,num_parallel
+14637,under_construction,205.0,2020,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""386"", ""tyndp_status""=>""under_construction""",25.166931,58.185909,24.271545,56.917998,2
+5735,under_construction,15.0,2020,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""1062"", ""tyndp_status""=>""under_construction""",24.271545,56.917998,24.264679,56.854228,2
+6031,in_permitting,32.0,2024,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1490"", ""tyndp_status""=>""in_permitting""",5.763702,52.619725,6.14410399999999,52.52207,2
+5123,in_permitting,35.0,2023,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1539"", ""tyndp_status""=>""in_permitting""",4.592285,51.916321,4.83398400000001,51.704055,2
+8591,in_permitting,80.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""382"", ""tyndp_status""=>""in_permitting""",25.132599,54.591958,25.415497,54.854478,2
+6377,under_consideration,76.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1004"", ""tyndp_status""=>""under_consideration""",24.689026,58.377959,25.19989,58.921664,2
+14651,in_permitting,133.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1010"", ""tyndp_status""=>""in_permitting""",26.559448,58.359953,25.473175,57.541628,2
+8435,planned_not_yet_permitting,41.5,2023,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1663"", ""tyndp_status""=>""planned_not_yet_permitting""",14.440155,53.16571,14.831543,53.330873,2
+12697,in_permitting,70.0,2021,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""353"", ""tyndp_status""=>""in_permitting""",14.440155,53.16571,15.038505,52.76751,2
+14734,under_construction,49.0,2022,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1284"", ""tyndp_status""=>""under_construction""",10.362854,46.809459,9.79568500000001,46.561693,2
+6348,under_construction,17.0,2020,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""",4.26544200000001,51.358062,4.307132,51.301299,2
+6347,in_permitting,4.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""",4.307132,51.301299,4.27917500000001,51.25504,2
+10813,in_permitting,10.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""",9.73251299999999,47.623752,9.80228979023356,47.6377345779987,2
+14499,under_consideration,2.0,2030,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1536"", ""tyndp_status""=>""under_consideration""",22.578278,44.679395,22.542572,44.612956,2
+9296,planned_not_yet_permitting,203.0,2030,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1534"", ""tyndp_status""=>""planned_not_yet_permitting""",15.26017,44.886816,16.500092,43.603267,2
+6044,in_permitting,80.0,2029,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/346"", ""tyndp2020_proj_id""=>""346"", ""tyndp2020_invest_id""=>""1544"", ""tyndp_status""=>""in_permitting""",4.218787,51.424034,5.061511,51.608344,2
+6087,under_construction,40.0,2023,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/348"", ""tyndp2020_proj_id""=>""348"", ""tyndp2020_invest_id""=>""1546"", ""tyndp_status""=>""under_construction""",6.86370800000001,53.418536,6.474759,53.213488,2
+14697,under_consideration,35.512,2036,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/376"", ""tyndp2020_proj_id""=>""376"", ""tyndp2020_invest_id""=>""1559"", ""tyndp_status""=>""under_consideration""",21.474152,40.839788,21.475525,41.045181,2
+14758,under_consideration,12.0,2030,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/377"", ""tyndp2020_proj_id""=>""377"", ""tyndp2020_invest_id""=>""1561"", ""tyndp_status""=>""under_consideration""",5.71701000000001,51.094036,5.89691199999999,51.140586,2
+8621,in_permitting,131.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""",-7.72338899999999,41.614416,-7.793621146853301,41.52102394053344,2
+6066,under_construction,175.0,2021,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""735"", ""tyndp_status""=>""under_construction""",24.588776,59.38778,24.689026,58.377959,2
+6036,in_permitting,50.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1540"", ""tyndp_status""=>""in_permitting""",5.46295200000001,51.422333,5.89691199999999,51.140586,2
+3715,in_permitting,94.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""257"", ""tyndp_status""=>""in_permitting""",26.003265,42.200038,24.483032,42.09007,2
+8260,in_permitting,74.0,2025,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.88777,45.30413,21.2815,45.7426,2
+8367,in_permitting,274.0,2025,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.2815,45.7426,21.409607,46.176978,2
+6040,in_permitting,168.0,2023,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1012"", ""tyndp_status""=>""in_permitting""",28.063202,59.310067,26.559448,58.359953,2
+10487,in_permitting,44.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1634"", ""tyndp_status""=>""in_permitting""",22.067413,55.076009,22.740326,55.10273,2
+8589,in_permitting,147.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1659"", ""tyndp_status""=>""in_permitting""",21.295624,56.032924,22.067413,55.076009,2
+9503,in_permitting,51.0,2023,False,220.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/210"", ""tyndp2020_proj_id""=>""210"", ""tyndp2020_invest_id""=>""1380"", ""tyndp_status""=>""in_permitting""",13.022919,46.263443,12.947388,46.363041,2
+1693,in_permitting,,2026,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""",20.187378,44.664746,19.500315,43.953021,2
+12696,in_permitting,147.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""1232"", ""tyndp_status""=>""in_permitting""",15.038505,52.76751,16.729431,52.32359,2
+3966,planned_not_yet_permitting,70.0,2029,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1207"", ""tyndp_status""=>""planned_not_yet_permitting""",-0.812988000000009,43.979969,-0.547943,44.563077,2
+14277,in_permitting,15.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""",4.27917500000001,51.25504,4.177551,51.162122,2
+14594,under_consideration,70.0,2034,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/325"", ""tyndp2020_proj_id""=>""325"", ""tyndp2020_invest_id""=>""1483"", ""tyndp_status""=>""under_consideration""",14.5912685597917,46.536256583087,15.119934,46.263443,2
+12655,under_construction,161.0,2020,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""",21.475525,41.045181,20.725963,41.239159,2
+6355,under_consideration,90.0,2036,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1744"", ""tyndp_status""=>""under_consideration""",19.756165,45.527517,19.609222,45.021127,2
diff --git a/data/tyndp/upgraded_links.csv b/data/tyndp/upgraded_links.csv
index e1fbb3ba2..5fe56694d 100644
--- a/data/tyndp/upgraded_links.csv
+++ b/data/tyndp/upgraded_links.csv
@@ -1,8 +1,8 @@
-,project_status,length,build_year,underground,p_nom,tags,geometry
-T0,in_permitting,370.0,2027,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/16"", ""tyndp2020_proj_id""=>""16"", ""tyndp2020_invest_id""=>""38"", ""tyndp_status""=>""in_permitting""","LINESTRING (-2.880286 43.349776, -0.341949000000001 45.030833)"
-14801,under_construction,90.0,2020,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/92"", ""tyndp2020_proj_id""=>""92"", ""tyndp2020_invest_id""=>""146"", ""tyndp_status""=>""under_construction""","LINESTRING (6.46545399999999 50.831096, 5.688171 50.729502)"
-T17,in_permitting,665.0,2024,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/190"", ""tyndp2020_proj_id""=>""190"", ""tyndp2020_invest_id""=>""1382"", ""tyndp_status""=>""in_permitting""","LINESTRING (7.23331357825616 60.5160767478361, -1.815491 57.484833)"
-T25,planned_not_yet_permitting,195.0,2023,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/286"", ""tyndp2020_proj_id""=>""286"", ""tyndp2020_invest_id""=>""1385"", ""tyndp_status""=>""planned_not_yet_permitting""","LINESTRING (-6.96670499999999 52.27404, -4.850464 51.728729)"
-T12,in_permitting,220.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/153"", ""tyndp2020_proj_id""=>""153"", ""tyndp2020_invest_id""=>""987"", ""tyndp_status""=>""in_permitting""","LINESTRING (-1.47628799999999 49.460984, -3.357697 50.739062)"
-T13,under_construction,770.0,2023,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/167"", ""tyndp2020_proj_id""=>""167"", ""tyndp2020_invest_id""=>""998"", ""tyndp_status""=>""under_construction""","LINESTRING (9.22851599999999 55.481188, -0.208961173685554 52.9600676434916)"
-5635,under_consideration,125.0,2036,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1741"", ""tyndp_status""=>""under_consideration""","LINESTRING (16.659393 57.43682, 18.227692 57.571097)"
+,project_status,length,build_year,underground,p_nom,tags,x0,y0,x1,y1
+T0,in_permitting,370.0,2027,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/16"", ""tyndp2020_proj_id""=>""16"", ""tyndp2020_invest_id""=>""38"", ""tyndp_status""=>""in_permitting""",-2.880286,43.349776,-0.341949000000001,45.030833
+14801,under_construction,90.0,2020,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/92"", ""tyndp2020_proj_id""=>""92"", ""tyndp2020_invest_id""=>""146"", ""tyndp_status""=>""under_construction""",6.46545399999999,50.831096,5.688171,50.729502
+T17,in_permitting,665.0,2024,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/190"", ""tyndp2020_proj_id""=>""190"", ""tyndp2020_invest_id""=>""1382"", ""tyndp_status""=>""in_permitting""",7.23331357825616,60.5160767478361,-1.815491,57.484833
+T25,planned_not_yet_permitting,195.0,2023,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/286"", ""tyndp2020_proj_id""=>""286"", ""tyndp2020_invest_id""=>""1385"", ""tyndp_status""=>""planned_not_yet_permitting""",-6.96670499999999,52.27404,-4.850464,51.728729
+T12,in_permitting,220.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/153"", ""tyndp2020_proj_id""=>""153"", ""tyndp2020_invest_id""=>""987"", ""tyndp_status""=>""in_permitting""",-1.47628799999999,49.460984,-3.357697,50.739062
+T13,under_construction,770.0,2023,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/167"", ""tyndp2020_proj_id""=>""167"", ""tyndp2020_invest_id""=>""998"", ""tyndp_status""=>""under_construction""",9.22851599999999,55.481188,-0.208961173685554,52.9600676434916
+5635,under_consideration,125.0,2036,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1741"", ""tyndp_status""=>""under_consideration""",16.659393,57.43682,18.227692,57.571097
diff --git a/rules/build_electricity.smk b/rules/build_electricity.smk
index 909687510..4f5e47d5c 100644
--- a/rules/build_electricity.smk
+++ b/rules/build_electricity.smk
@@ -70,7 +70,6 @@ rule base_network:
countries=config_provider("countries"),
snapshots=config_provider("snapshots"),
drop_leap_day=config_provider("enable", "drop_leap_day"),
- transmission_projects=config_provider("transmission_projects"),
lines=config_provider("lines"),
transformers=config_provider("transformers"),
input:
@@ -358,6 +357,29 @@ rule build_line_rating:
"../scripts/build_line_rating.py"
+rule add_transmission_projects:
+ params:
+ transmission_projects=config_provider("transmission_projects"),
+ input:
+ base_network=resources("networks/base.nc"),
+ offshore_shapes=resources("offshore_shapes.geojson"),
+ europe_shape=resources("europe_shape.geojson"),
+ output:
+ new_lines=resources("transmission_project/new_lines.csv"),
+ new_links=resources("transmission_project/new_links.csv"),
+ adjust_lines=resources("transmission_project/adjust_lines.csv"),
+ adjust_links=resources("transmission_project/adjust_links.csv"),
+ new_buses=resources("transmission_project/new_buses.csv"),
+ log:
+ logs("add_transmission_project.log"),
+ benchmark:
+ benchmarks("add_transmission_project")
+ conda:
+ "../envs/environment.yaml"
+ script:
+ "../scripts/add_transmission_projects.py"
+
+
def input_profile_tech(w):
return {
f"profile_{tech}": resources(f"profile_{tech}.nc")
@@ -387,6 +409,7 @@ rule add_electricity:
costs=config_provider("costs"),
foresight=config_provider("foresight"),
drop_leap_day=config_provider("enable", "drop_leap_day"),
+ transmission_projects=config_provider("transmission_projects"),
input:
unpack(input_profile_tech),
unpack(input_conventional),
@@ -396,6 +419,17 @@ rule add_electricity:
if config_provider("lines", "dynamic_line_rating", "activate")(w)
else resources("networks/base.nc")
),
+ transmission_projects=lambda w: (
+ [
+ resources("transmission_project/new_buses.csv"),
+ resources("transmission_project/new_lines.csv"),
+ resources("transmission_project/new_links.csv"),
+ resources("transmission_project/adjust_lines.csv"),
+ resources("transmission_project/adjust_links.csv"),
+ ]
+ if config_provider("transmission_projects", "enable")(w)
+ else []
+ ),
tech_costs=lambda w: resources(
f"costs_{config_provider('costs', 'year')(w)}.csv"
),
diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py
index 49d0bdf75..4b5e8cdb7 100755
--- a/scripts/add_electricity.py
+++ b/scripts/add_electricity.py
@@ -791,6 +791,25 @@ def attach_line_rating(
n.lines_t.s_max_pu *= s_max_pu
+def add_transmission_projects(n, transmission_projects):
+ logger.info(f"Adding transmission projects to network")
+ for project in transmission_projects:
+ df = pd.read_csv(project, index_col=0, dtype={"bus0": str, "bus1": str})
+ if df.empty:
+ continue
+ file_name = project.split("/")[-1]
+ if "new_buses" in file_name:
+ n.import_components_from_dataframe(df, "Bus")
+ elif "new_lines" in file_name:
+ n.import_components_from_dataframe(df, "Line")
+ elif "new_links" in file_name:
+ n.import_components_from_dataframe(df, "Link")
+ elif "adjust_lines":
+ n.lines.update(df)
+ elif "adjust_links":
+ n.links.update(df)
+
+
if __name__ == "__main__":
if "snakemake" not in globals():
from _helpers import mock_snakemake
@@ -803,6 +822,9 @@ def attach_line_rating(
n = pypsa.Network(snakemake.input.base_network)
+ if params["transmission_projects"]["enable"]:
+ add_transmission_projects(n, snakemake.input.transmission_projects)
+
time = get_snapshots(snakemake.params.snapshots, snakemake.params.drop_leap_day)
n.set_snapshots(time)
diff --git a/scripts/add_transmission_projects.py b/scripts/add_transmission_projects.py
new file mode 100644
index 000000000..0124531e5
--- /dev/null
+++ b/scripts/add_transmission_projects.py
@@ -0,0 +1,534 @@
+# -*- coding: utf-8 -*-
+# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
+#
+# SPDX-License-Identifier: MIT
+
+# coding: utf-8
+"""
+Gets the transmission projects defined in the config file and adds them to the
+network. Projects are then later included in ` add_electricity.py`.
+
+Relevant Settings
+-----------------
+
+.. code:: yaml
+
+transmission_projects:
+ include:
+ #tyndp: true # For later, when other TYNDP projects are combined with new version
+ nep: true
+ status:
+ - confirmed
+ - in_permitting
+ - under_construction
+ #- under_consideration
+ line_under_construction: keep
+ link_under_construction: zero
+
+.. seealso::
+ Documentation of the configuration file ``config/config.yaml`` at
+ :ref:`transmission_projects`
+Inputs
+------
+
+- ``networks/base_network.nc``: Extract from the geographical vector data of the online `ENTSO-E Interactive Map `_ by the `GridKit `_ toolkit dating back to March 2022.
+- ``data/"project_name"/``: confer :ref:`links`
+
+Outputs
+-------
+
+- ``project_lines.csv``
+
+Description
+-----------
+Gets the transmission projects from e.g. TYNDP or other network development plan and brings them in a network compaitbile formal which then can be imported in `add_electricity`.
+"""
+import logging
+import os
+
+import geopandas as gpd
+import numpy as np
+import pandas as pd
+import pypsa
+import shapely
+from _helpers import configure_logging, set_scenario_config
+from pypsa.descriptors import nominal_attrs
+from scipy import spatial
+from shapely.geometry import LineString, Point
+
+logger = logging.getLogger(__name__)
+
+
+def _add_new_buses(n, new_ports, port):
+ # Add new buses for the ports which do not have an existing bus close by. If there are multiple ports at the same location, only one bus is added.
+ duplicated = new_ports.duplicated(subset=["x", "y"], keep="first")
+ to_add = new_ports[~duplicated]
+ added_buses = n.madd(
+ "Bus",
+ names=to_add.index,
+ suffix=" bus",
+ x=to_add.x,
+ y=to_add.y,
+ v_nom=380,
+ under_construction=True,
+ symbol="substation",
+ substation_off=True,
+ substation_lv=False,
+ carrier="AC",
+ )
+ new_buses = n.buses.loc[added_buses].copy().dropna(axis=1, how="all")
+ new_ports.loc[to_add.index, "neighbor"] = added_buses
+ new_ports["neighbor"] = new_ports.groupby(["x", "y"])["neighbor"].transform("first")
+ return new_ports, new_buses
+
+
+def _find_country_for_bus(bus, shapes):
+ """
+ Find the country of a bus based on its coordinates and the provided
+ shapefile.
+
+ Shapefile must contain a column "country" with the country names.
+ """
+ point = Point(bus.x, bus.y)
+ country = shapes.loc[shapes.contains(point), "country"]
+ return country.values[0]
+
+
+def _connect_new_lines(
+ lines, n, new_buses_df, offshore_shapes=None, distance_upper_bound=np.inf
+):
+ """
+ Find the closest existing bus to the port of each line.
+
+ If closest bus is further away than distance_upper_bound and is
+ inside an offshore region, a new bus is created. and the line is
+ connected to it.
+ """
+ bus_tree = spatial.KDTree(n.buses[["x", "y"]])
+
+ for port in [0, 1]:
+ lines_port = lines.geometry.apply(
+ lambda x: pd.Series(
+ _get_bus_coords_from_port(x, port=port), index=["x", "y"]
+ )
+ )
+ distances, indices = bus_tree.query(lines_port)
+ # Series of lines with closest bus in the existing network and whether they match the distance criterion
+ lines_port["neighbor"] = n.buses.iloc[indices].index
+ lines_port["match_distance"] = distances < distance_upper_bound
+
+ # For buses which are not close to any existing bus, only add a new bus if the line is going offshore (e.g. North Sea Wind Power Hub)
+ if not lines_port.match_distance.all() and offshore_shapes.unary_union:
+ potential_new_buses = lines_port[~lines_port.match_distance]
+ is_offshore = potential_new_buses.apply(
+ lambda x: offshore_shapes.unary_union.contains(Point(x.x, x.y)), axis=1
+ )
+ new_buses = potential_new_buses[is_offshore]
+ if not new_buses.empty:
+ new_port, new_buses = _add_new_buses(n, new_buses, port)
+ new_buses.loc[:, "country"] = new_buses.apply(
+ lambda bus: _find_country_for_bus(bus, offshore_shapes), axis=1
+ )
+ lines_port.loc[new_port.index, "match_distance"] = True
+ lines_port.loc[new_port.index, "neighbor"] = new_port.neighbor
+ new_buses_df = pd.concat([new_buses_df, new_buses])
+
+ if not lines_port.match_distance.all():
+ logging.warning(
+ "Could not find bus close enough to connect the the following lines:\n"
+ + str(lines_port[~lines_port.match_distance].index.to_list())
+ + "\n Lines will be ignored."
+ )
+ lines.drop(lines_port[~lines_port.match_distance].index, inplace=True)
+ lines_port = lines_port[lines_port.match_distance]
+
+ lines.loc[lines_port.index, f"bus{port}"] = lines_port.loc[:, "neighbor"]
+
+ lines = lines.assign(under_construction=True)
+
+ return lines, new_buses_df
+
+
+def _get_branch_coords_from_geometry(linestring, reversed=False):
+ """
+ Reduces a linestring to its start and end points. Used to simplify the
+ linestring which can have more than two points.
+
+ Parameters:
+ linestring: Shapely linestring
+ reversed (bool, optional): If True, returns the end and start points instead of the start and end points.
+ Defaults to False.
+
+ Returns:
+ numpy.ndarray: Flattened array of start and end coordinates.
+ """
+ coords = np.asarray(linestring.coords)
+ ind = [0, -1] if not reversed else [-1, 0]
+ start_end_coords = coords[ind]
+ return start_end_coords.flatten()
+
+
+def _get_branch_coords_from_buses(line):
+ """
+ Gets line string for branch component in an pypsa network.
+
+ Parameters:
+ linestring: shapely linestring
+ reversed (bool, optional): If True, returns the end and start points instead of the start and end points.
+ Defaults to False.
+
+ Returns:
+ numpy.ndarray: Flattened array of start and end coordinates.
+ """
+ start_coords = n.buses.loc[line.bus0, ["x", "y"]].values
+ end_coords = n.buses.loc[line.bus1, ["x", "y"]].values
+ return np.array([start_coords, end_coords]).flatten()
+
+
+def _get_bus_coords_from_port(linestring, port=0):
+ """
+ Extracts the coordinates of a specified port from a given linestring.
+
+ Parameters:
+ linestring: The shapely linestring.
+ port (int): The index of the port to extract coordinates from. Default is 0.
+
+ Returns:
+ tuple: The coordinates of the specified port as a tuple (x, y).
+ """
+ coords = np.asarray(linestring.coords)
+ ind = [0, -1]
+ coords = coords[ind]
+ coords = coords[port]
+ return coords
+
+
+def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
+ """
+ Find the closest lines in the existing set of lines to a set of new lines.
+
+ Parameters:
+ lines (pandas.DataFrame): DataFrame with column geometry containing the existing lines.
+ new_lines (pandas.DataFrame): DataFrame with column geometry containing the new lines.
+ distance_upper_bound (float, optional): Maximum distance to consider a line as a match. Defaults to 0.1 which corresponds to approximately 15 km.
+
+ Returns:
+ pandas.Series: Series containing with index the new lines and values providing closest existing line.
+ """
+
+ # get coordinates of start and end points of all lines, for new lines we need to check both directions
+ lines = lines[~lines.geometry.isna()]
+ treelines = lines.apply(_get_branch_coords_from_buses, axis=1)
+ querylines = pd.concat(
+ [
+ new_lines.geometry.apply(_get_branch_coords_from_geometry),
+ new_lines.geometry.apply(_get_branch_coords_from_geometry, reversed=True),
+ ]
+ )
+ treelines = np.vstack(treelines)
+ querylines = np.vstack(querylines)
+ tree = spatial.KDTree(treelines)
+ dist, ind = tree.query(querylines, distance_upper_bound=distance_upper_bound)
+ found_b = ind < len(lines)
+ # since the new lines are checked in both directions, we need to find the correct index of the new line
+ found_i = np.arange(len(querylines))[found_b] % len(new_lines)
+ if type == "new":
+ if len(found_i) != 0:
+ found = new_lines.index[found_i]
+ logger.warning(
+ "Found new lines similar to existing lines:\n"
+ + str(found.to_list())
+ + "\n Lines are assumed to be duplicated and will be ignored."
+ )
+ elif type == "upgraded":
+ if len(found_i) < len(new_lines):
+ not_found = new_lines.index.difference(new_lines.index[found_i])
+ logger.warning(
+ "Could not find upgraded lines close enough to provided lines:\n"
+ + str(not_found.to_list())
+ + "\n Lines will be ignored."
+ )
+ # create a DataFrame with the distances, new line and its closest existing line
+ line_map = pd.DataFrame(
+ dict(D=dist[found_b], i=lines.index[ind[found_b] % len(lines)]),
+ index=new_lines.index[found_i].rename("new_lines"),
+ )
+ # only keep the closer line of the new line pair (since lines are checked in both directions)
+ line_map = line_map.sort_values(by="D")[
+ lambda ds: ~ds.index.duplicated(keep="first")
+ ].sort_index()["i"]
+ return line_map
+
+
+def _adjust_decommissing(upgraded_lines, line_map):
+ """
+ Adjust the decommissioning year of the existing lines to the built year of
+ the upgraded lines.
+ """
+ to_update = pd.DataFrame(index=line_map)
+ to_update.loc[:, "build_year"] = (
+ 1990 # dummy build_year to make existing lines decommissioned when upgraded lines are built
+ )
+ to_update.loc[:, "lifetime"] = (
+ upgraded_lines.rename(line_map)["build_year"] - 1990
+ ) # set lifetime to the difference between build year of upgraded line and existing line
+ return to_update
+
+
+def _adjust_min_expansion(branch, n, upgraded_lines, line_map):
+ """
+ Set minimal nominal capacity for upgraded lines to at least the installed
+ capacity of the existing lines.
+ """
+
+ upgraded_lines[nominal_attrs[branch] + "_nom"] = n.df["branch"].loc[
+ line_map, n.df(branch)[nominal_attrs[branch] + "_nom"]
+ ]
+
+
+def _get_upgraded_lines(branch_componnent, n, upgraded_lines, line_map):
+ """
+ Get upgraded lines by merging information of existing line and upgraded
+ line.
+ """
+ # get first the information of the existing lines which will be upgraded
+ lines_to_add = n.df(branch_componnent).loc[line_map].copy()
+ # get columns of upgraded lines which are not in existing lines
+ new_columns = upgraded_lines.columns.difference(lines_to_add.columns)
+ # rename upgraded lines to match existing lines
+ upgraded_lines = upgraded_lines.rename(line_map)
+ # set the same index names to be able to merge
+ upgraded_lines.index.name = lines_to_add.index.name
+ # merge upgraded lines with existing lines
+ lines_to_add.update(upgraded_lines)
+ # add column which was added in upgraded lines
+ lines_to_add = pd.concat([lines_to_add, upgraded_lines[new_columns]], axis=1)
+ # only consider columns of original upgraded lines and bus0 and bus1
+ lines_to_add = lines_to_add.loc[:, ["bus0", "bus1", *upgraded_lines.columns]]
+ # change index of new lines to avoid duplicates
+ lines_to_add.index = lines_to_add.index.astype(str) + "_upgraded"
+ return lines_to_add
+
+
+def _get_project_files(plan="tyndp"):
+ path = f"data/{plan}/"
+ lines = dict()
+ if os.path.exists(path):
+ files = os.listdir(path)
+ else:
+ logger.warning(f"No projects found for {plan}")
+ files = []
+ if files:
+ for file in files:
+ if file.endswith(".csv"):
+ name = file.split(".")[0]
+ df = pd.read_csv(path + file, index_col=0)
+ df["geometry"] = df.apply(
+ lambda x: LineString([[x.x0, x.y0], [x.x1, x.y1]]), axis=1
+ )
+ df.drop(columns=["x0", "y0", "x1", "y1"], inplace=True)
+ lines[name] = df
+ return lines
+
+
+def _remove_projects_outside_countries(lines, europe_shape):
+ """
+ Remove projects which are not in the considered countries.
+ """
+ europe_shape_prepped = shapely.prepared.prep(europe_shape)
+ is_within_covered_countries = lines.geometry.apply(
+ lambda x: europe_shape_prepped.contains(x)
+ )
+
+ if not is_within_covered_countries.all():
+ logger.warning(
+ "Project lines outside of the covered area (skipping): "
+ + ", ".join(str(i) for i in lines.loc[~is_within_covered_countries].index)
+ )
+
+ lines = lines.loc[is_within_covered_countries]
+ return lines
+
+
+def _is_similar(ds1, ds2, percentage=10):
+ """
+ Check if values in series ds2 are within a specified percentage of series
+ ds1.
+
+ Returns:
+ - A boolean series where True indicates ds2 values are within the percentage range of ds2.
+ """
+ lower_bound = ds1 * (1 - percentage / 100)
+ upper_bound = ds1 * (1 + percentage / 100)
+ return np.logical_and(ds2 >= lower_bound, ds2 <= upper_bound)
+
+
+def _set_underwater_fraction(new_links, offshore_shapes):
+ new_links_gds = gpd.GeoSeries(new_links.geometry)
+ new_links.loc[:, "underwater_fraction"] = (
+ new_links_gds.intersection(offshore_shapes.unary_union).length
+ / new_links_gds.length
+ ).round(2)
+
+
+def _add_projects(
+ n,
+ new_lines_df,
+ new_links_df,
+ adjust_lines_df,
+ adjust_links_df,
+ new_buses_df,
+ europe_shape,
+ offshore_shapes,
+ plan="tyndp",
+ status=["confirmed", "under construction"],
+):
+ lines_dict = _get_project_files(plan)
+ logging.info(f"Adding {len(lines_dict)} projects from {plan} to the network.")
+ for key, lines in lines_dict.items():
+ lines = _remove_projects_outside_countries(lines, europe_shape)
+ lines = lines.loc[lines.project_status.isin(status)]
+ if "new_lines" in key:
+ new_lines, new_buses_df = _connect_new_lines(lines, n, new_buses_df)
+ duplicate_lines = _find_closest_lines(
+ n.lines, new_lines, distance_upper_bound=0.10, type="new"
+ )
+ # TODO: think about using build_year instead of v_nom
+ # ignore duplicates where v_nom is not within a tolerance of 10%
+ to_ignore = _is_similar(
+ new_lines.loc[duplicate_lines.index, "v_nom"],
+ duplicate_lines.map(n.lines["v_nom"]),
+ )
+ duplicate_lines = duplicate_lines[~to_ignore]
+ new_lines = new_lines.drop(duplicate_lines.index, errors="ignore")
+ new_lines_df = pd.concat([new_lines_df, new_lines])
+ # add new lines to network to be able to find added duplicates
+ n.import_components_from_dataframe(new_lines, "Line")
+ elif "new_links" in key:
+ new_links, new_buses_df = _connect_new_lines(
+ lines,
+ n,
+ new_buses_df,
+ offshore_shapes=offshore_shapes,
+ distance_upper_bound=0.4,
+ )
+ duplicate_links = _find_closest_lines(
+ n.links, new_links, distance_upper_bound=0.10, type="new"
+ )
+ # TODO: think about using build_year instead of p_nom
+ # ignore duplicates where p_nom is not within a tolerance of 10%
+ to_ignore = _is_similar(
+ new_links.loc[duplicate_links.index, "p_nom"],
+ duplicate_links.map(n.links["p_nom"]),
+ )
+ duplicate_links = duplicate_links[~to_ignore]
+ new_links = new_links.drop(duplicate_links.index, errors="ignore")
+ _set_underwater_fraction(new_links, offshore_shapes)
+ new_links_df = pd.concat([new_links_df, new_links])
+ # add new links to network to be able to find added duplicates
+ n.import_components_from_dataframe(new_links, "Link")
+ elif "upgraded_lines" in key:
+ line_map = _find_closest_lines(
+ n.lines, lines, distance_upper_bound=0.20, type="upgraded"
+ )
+ upgraded_lines = lines.loc[line_map.index]
+ upgraded_lines = _get_upgraded_lines("Line", n, upgraded_lines, line_map)
+ new_lines_df = pd.concat([new_lines_df, upgraded_lines])
+ lines_to_adjust = _adjust_decommissing(upgraded_lines, line_map)
+ adjust_lines_df = pd.concat([adjust_lines_df, lines_to_adjust])
+ elif "upgraded_links" in key:
+ line_map = _find_closest_lines(
+ n.links.query("carrier=='DC'"),
+ lines,
+ distance_upper_bound=0.20,
+ type="upgraded",
+ )
+ upgraded_links = lines.loc[line_map.index]
+ upgraded_links = _get_upgraded_lines("Link", n, upgraded_links, line_map)
+ new_links_df = pd.concat([new_links_df, upgraded_links])
+ links_to_adjust = _adjust_decommissing(upgraded_links, line_map)
+ adjust_links_df = pd.concat([adjust_links_df, links_to_adjust])
+ else:
+ logger.warning(f"Unknown project type {key}")
+ continue
+ return new_lines_df, new_links_df, adjust_lines_df, adjust_links_df, new_buses_df
+
+
+def fill_length_from_geometry(line, line_factor=1.2):
+ length = gpd.GeoSeries(line.geometry, crs=4326).to_crs(3035).length.values[0]
+ length = length / 1000 * line_factor
+ return round(length, 1)
+
+
+if __name__ == "__main__":
+ if "snakemake" not in globals():
+ from _helpers import mock_snakemake
+
+ snakemake = mock_snakemake("add_transmission_projects")
+ configure_logging(snakemake)
+ set_scenario_config(snakemake)
+
+ config = snakemake.config
+ line_factor = config["lines"]["length_factor"]
+
+ n = pypsa.Network(snakemake.input.base_network)
+
+ new_lines_df = pd.DataFrame()
+ new_links_df = pd.DataFrame()
+ adjust_lines_df = pd.DataFrame()
+ adjust_links_df = pd.DataFrame()
+ new_buses_df = pd.DataFrame()
+
+ europe_shape = gpd.read_file(snakemake.input.europe_shape).loc[0, "geometry"]
+ offshore_shapes = gpd.read_file(snakemake.input.offshore_shapes).rename(
+ {"name": "country"}, axis=1
+ )
+
+ transmission_projects = snakemake.params.transmission_projects
+ for project, include in transmission_projects["include"].items():
+ if include:
+ (
+ new_lines_df,
+ new_links_df,
+ adjust_lines_df,
+ adjust_links_df,
+ new_buses_df,
+ ) = _add_projects(
+ n,
+ new_lines_df,
+ new_links_df,
+ adjust_lines_df,
+ adjust_links_df,
+ new_buses_df,
+ europe_shape,
+ offshore_shapes,
+ plan=project,
+ status=transmission_projects["status"],
+ )
+
+ # Add new line type for new lines
+ new_lines_df["type"] = "Al/St 240/40 4-bundle 380.0"
+ new_lines_df["underground"].fillna(False, inplace=True)
+
+ # Add carrier types of lines and links
+ new_lines_df["carrier"] = "AC"
+ new_links_df["carrier"] = "DC"
+ # Fill empty length values with length calculated from geometry
+ new_lines_df["length"] = new_lines_df.apply(
+ lambda x: (
+ fill_length_from_geometry(x, line_factor) if pd.isna(x.length) else x.length
+ ),
+ axis=1,
+ )
+ new_links_df["length"] = new_links_df.apply(
+ lambda x: (
+ fill_length_from_geometry(x, line_factor) if pd.isna(x.length) else x.length
+ ),
+ axis=1,
+ )
+ # export csv files for new buses, lines, links and adjusted lines and links
+ new_lines_df.to_csv(snakemake.output.new_lines)
+ new_links_df.to_csv(snakemake.output.new_links)
+ adjust_lines_df.to_csv(snakemake.output.adjust_lines)
+ adjust_links_df.to_csv(snakemake.output.adjust_links)
+ new_buses_df.to_csv(snakemake.output.new_buses)
diff --git a/scripts/base_network.py b/scripts/base_network.py
index c2051a46b..4728825dc 100644
--- a/scripts/base_network.py
+++ b/scripts/base_network.py
@@ -724,314 +724,6 @@ def _set_shapes(n, country_shapes, offshore_shapes):
)
-def _add_new_buses(n, new_buses, port):
- duplicated = new_buses.duplicated(subset=["x", "y"], keep="first")
- to_add = new_buses[~duplicated]
- # new_buses.groupby(["x", "y"])["neighbor"].transform("first")
- added_buses = n.madd(
- "Bus",
- names=to_add.index,
- suffix=" bus",
- x=to_add.x,
- y=to_add.y,
- v_nom=380,
- under_construction=True,
- symbol="substation",
- carrier="AC",
- )
- new_buses.loc[to_add.index, "neighbor"] = added_buses
- new_buses["neighbor"] = new_buses.groupby(["x", "y"])["neighbor"].transform("first")
- return new_buses
-
-
-def _find_closest_bus(lines, n, offshore_shapes=None, distance_upper_bound=np.inf):
- """
- Find the closest existing bus to the port of each line.
-
- If closest bus is further away than distance_upper_bound and is
- inside an offshore region, a new bus is created. and the line is
- connected to it.
- """
- bus_tree = spatial.KDTree(n.buses[["x", "y"]])
-
- for port in [0, 1]:
- lines_port = lines.geometry.apply(
- lambda x: pd.Series(_get_coords_from_port(x, port=port), index=["x", "y"])
- )
- distances, indices = bus_tree.query(lines_port)
- # Series of lines with closest bus in the existing network and whether they match the distance criterion
- lines_port["neighbor"] = n.buses.iloc[indices].index
- lines_port["match_distance"] = distances < distance_upper_bound
-
- # For buses which are not close to any existing bus, only add a new bus if the line is going offshore (e.g. North Sea Wind Power Hub)
- if not lines_port.match_distance.all() and offshore_shapes:
- offshore_shape = gpd.read_file(offshore_shapes)
- potential_new_buses = lines_port[~lines_port.match_distance]
- is_offshore = potential_new_buses.apply(
- lambda x: offshore_shape.unary_union.contains(Point(x.x, x.y)), axis=1
- )
- new_buses = potential_new_buses[is_offshore]
- if not new_buses.empty:
- new_buses = _add_new_buses(n, new_buses, port)
- lines_port.loc[new_buses.index, "match_distance"] = True
- lines_port.loc[new_buses.index, "neighbor"] = new_buses.neighbor
-
- if not lines_port.match_distance.all():
- logging.warning(
- "Could not find bus close enough to connect the the following lines:\n"
- + str(lines_port[~lines_port.match_distance].index.to_list())
- + "\n Lines will be ignored."
- )
- lines.drop(lines_port[~lines_port.match_distance].index, inplace=True)
- lines_port = lines_port[lines_port.match_distance]
-
- lines.loc[lines_port.index, f"bus{port}"] = lines_port.loc[:, "neighbor"]
-
- lines = lines.assign(under_construction=True)
-
- return lines
-
-
-def reduce_linestring_to_endpoints(linestring_wkt, reversed=False):
- """
- Reduces a linestring to its start and end points. Used to simplify the
- linestring which can have more than two points.
-
- Parameters:
- linestring_wkt (str): Well-known text representation of the linestring.
- reversed (bool, optional): If True, returns the end and start points instead of the start and end points.
- Defaults to False.
-
- Returns:
- numpy.ndarray: Flattened array of start and end coordinates.
- """
- linestring = shapely.wkt.loads(linestring_wkt)
- coords = np.asarray(linestring.coords)
- ind = [0, -1] if not reversed else [-1, 0]
- start_end_coords = coords[ind]
- return start_end_coords.flatten()
-
-
-def _get_coords_from_port(linestring_wkt, port=0):
- """
- Extracts the coordinates of a specified port from a given linestring.
-
- Parameters:
- linestring_wkt (str): The well-known text representation of the linestring.
- port (int): The index of the port to extract coordinates from. Default is 0.
-
- Returns:
- tuple: The coordinates of the specified port as a tuple (x, y).
- """
- linestring = shapely.wkt.loads(linestring_wkt)
- coords = np.asarray(linestring.coords)
- ind = [0, -1]
- coords = coords[ind]
- coords = coords[port]
- return coords
-
-
-def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
- """
- Find the closest lines in the existing set of lines to a set of new lines.
-
- Parameters:
- lines (pandas.DataFrame): DataFrame with column geometry containing the existing lines.
- new_lines (pandas.DataFrame): DataFrame with column geometry containing the new lines.
- distance_upper_bound (float, optional): Maximum distance to consider a line as a match. Defaults to 0.1 which corresponds to approximately 15 km.
-
- Returns:
- pandas.Series: Series containing with index the new lines and values providing closest existing line.
- """
-
- # get coordinates of start and end points of all lines, for new lines we need to check both directions
- lines = lines[~lines.geometry.isna()]
- treelines = lines.geometry.apply(reduce_linestring_to_endpoints)
- querylines = pd.concat(
- [
- new_lines.geometry.apply(reduce_linestring_to_endpoints),
- new_lines.geometry.apply(reduce_linestring_to_endpoints, reversed=True),
- ]
- )
- treelines = np.vstack(treelines)
- querylines = np.vstack(querylines)
- tree = spatial.KDTree(treelines)
- dist, ind = tree.query(querylines, distance_upper_bound=distance_upper_bound)
- found_b = ind < len(lines)
- # since the new lines are checked in both directions, we need to find the correct index of the new line
- found_i = np.arange(len(querylines))[found_b] % len(new_lines)
- if type == "new":
- if len(found_i) != 0:
- found = new_lines.index[found_i]
- logger.warning(
- "Found new lines similar to existing lines:\n"
- + str(found.to_list())
- + "\n Lines are assumed to be duplicated and will be ignored."
- )
- elif type == "upgraded":
- if len(found_i) < len(new_lines):
- not_found = new_lines.index.difference(new_lines.index[found_i])
- logger.warning(
- "Could not find upgraded lines close enough to provided lines:\n"
- + str(not_found.to_list())
- + "\n Lines will be ignored."
- )
- # create a DataFrame with the distances, new line and its closest existing line
- line_map = pd.DataFrame(
- dict(D=dist[found_b], i=lines.index[ind[found_b] % len(lines)]),
- index=new_lines.index[found_i].rename("new_lines"),
- )
- # only keep the closer line of the new line pair (since lines are checked in both directions)
- line_map = line_map.sort_values(by="D")[
- lambda ds: ~ds.index.duplicated(keep="first")
- ].sort_index()["i"]
- return line_map
-
-
-def _adjust_decommissing(branch, n, upgraded_lines, line_map):
- """
- Adjust the decommissioning year of the existing lines to the built year of
- the upgraded lines.
- """
- n.df(branch).loc[
- line_map, "build_year"
- ] = 1990 # dummy build_year to make existing lines decommissioned when upgraded lines are built
- n.df(branch).loc[line_map, "lifetime"] = (
- upgraded_lines.rename(line_map)["build_year"]
- - n.df(branch).loc[line_map, "build_year"]
- ) # set lifetime to the difference between build year of upgraded line and existing line
-
-
-def _get_upgraded_lines(branch_componnent, n, upgraded_lines, line_map):
- """
- Get upgraded lines by merging information of existing line and upgraded
- line.
- """
- # get first the information of the existing lines which will be upgraded
- lines_to_add = n.df(branch_componnent).loc[line_map].copy()
- # get columns of upgraded lines which are not in existing lines
- new_columns = upgraded_lines.columns.difference(lines_to_add.columns)
- # rename upgraded lines to match existing lines
- upgraded_lines = upgraded_lines.rename(line_map)
- # set the same index names to be able to merge
- upgraded_lines.index.name = lines_to_add.index.name
- # merge upgraded lines with existing lines
- lines_to_add.update(upgraded_lines)
- # add column which was added in upgraded lines
- lines_to_add = pd.concat([lines_to_add, upgraded_lines[new_columns]], axis=1)
- # change index of new lines to avoid duplicates
- lines_to_add.index = lines_to_add.index.astype(str) + "_upgraded"
- return lines_to_add
-
-
-def _get_project_files(plan="tyndp"):
- path = f"data/{plan}/"
- lines = dict()
- if os.path.exists(path):
- files = os.listdir(path)
- else:
- logger.warning(f"No projects found for {plan}")
- files = []
- if files:
- for file in files:
- if file.endswith(".csv"):
- name = file.split(".")[0]
- lines[name] = pd.read_csv(path + file, index_col=0)
- return lines
-
-
-def _remove_projects_outside_countries(lines, europe_shape):
- """
- Remove projects which are not in the considered countries.
- """
- europe_shape = gpd.read_file(europe_shape).loc[0, "geometry"]
- europe_shape_prepped = shapely.prepared.prep(europe_shape)
- is_within_covered_countries = lines.geometry.apply(
- lambda x: europe_shape_prepped.contains(shapely.wkt.loads(x))
- )
-
- if not is_within_covered_countries.all():
- logger.warning(
- "Project lines outside of the covered area (skipping): "
- + ", ".join(str(i) for i in lines.loc[~is_within_covered_countries].index)
- )
-
- lines = lines.loc[is_within_covered_countries]
- return lines
-
-
-def _is_similar(ds1, ds2, percentage=10):
- """
- Check if values in series ds2 are within a specified percentage of series
- ds1.
-
- Returns:
- - A boolean series where True indicates ds2 values are within the percentage range of ds2.
- """
- lower_bound = ds1 * (1 - percentage / 100)
- upper_bound = ds1 * (1 + percentage / 100)
- return np.logical_and(ds2 >= lower_bound, ds2 <= upper_bound)
-
-
-def _add_projects(
- n,
- europe_shape,
- offshore_shapes,
- plan="tyndp",
- status=["confirmed", "under construction"],
-):
- lines_dict = _get_project_files(plan)
- logging.info(f"Adding {len(lines_dict)} projects from {plan} to the network.")
- for key, lines in lines_dict.items():
- lines = _remove_projects_outside_countries(lines, europe_shape)
- lines = lines.loc[lines.project_status.isin(status)]
- if "new_lines" in key:
- new_lines = _find_closest_bus(lines, n)
- duplicate_lines = _find_closest_lines(
- n.lines, new_lines, distance_upper_bound=0.10, type="new"
- )
- # ignore duplicates where v_nom is not within a tolerance of 10%
- to_ignore = _is_similar(
- new_lines.loc[duplicate_lines.index, "v_nom"],
- duplicate_lines.map(n.lines["v_nom"]),
- )
- duplicate_lines = duplicate_lines[~to_ignore]
- new_lines = new_lines.drop(duplicate_lines.index, errors="ignore")
- n.import_components_from_dataframe(new_lines, "Line")
- elif "new_links" in key:
- new_links = _find_closest_bus(
- lines, n, offshore_shapes, distance_upper_bound=0.4
- )
- duplicate_links = _find_closest_lines(
- n.links, new_links, distance_upper_bound=0.10, type="new"
- )
- new_links = new_links.drop(duplicate_links.index, errors="ignore")
- n.import_components_from_dataframe(new_links, "Link")
- elif "upgraded_lines" in key:
- line_map = _find_closest_lines(
- n.lines, lines, distance_upper_bound=0.20, type="upgraded"
- )
- upgraded_lines = lines.loc[line_map.index]
- _adjust_decommissing("Line", n, upgraded_lines, line_map)
- upgraded_lines = _get_upgraded_lines("Line", n, upgraded_lines, line_map)
- # TODO need to adjust type of upgraded lines to new line type after added to pypsa.line_types
- n.import_components_from_dataframe(upgraded_lines, "Line")
- elif "upgraded_links" in key:
- line_map = _find_closest_lines(
- n.links.query("carrier=='DC'"),
- lines,
- distance_upper_bound=0.20,
- type="upgraded",
- )
- upgraded_links = lines.loc[line_map.index]
- _adjust_decommissing("Link", n, upgraded_links, line_map)
- upgraded_links = _get_upgraded_lines("Link", n, upgraded_links, line_map)
- n.import_components_from_dataframe(upgraded_links, "Link")
- else:
- logger.warning(f"Unknown project type {key}")
- continue
-
-
def base_network(
eg_buses,
eg_converters,
@@ -1040,7 +732,6 @@ def base_network(
eg_links,
links_p_nom,
links_tyndp,
- transmission_projects,
europe_shape,
country_shapes,
offshore_shapes,
@@ -1050,8 +741,8 @@ def base_network(
buses = _load_buses_from_eg(eg_buses, europe_shape, config["electricity"])
links = _load_links_from_eg(buses, eg_links)
- # if config["links"].get("include_tyndp"):
- # buses, links = _add_links_from_tyndp(buses, links, links_tyndp, europe_shape)
+ if config["links"].get("include_tyndp"):
+ buses, links = _add_links_from_tyndp(buses, links, links_tyndp, europe_shape)
converters = _load_converters_from_eg(buses, eg_converters)
@@ -1079,16 +770,6 @@ def base_network(
n.import_components_from_dataframe(links, "Link")
n.import_components_from_dataframe(converters, "Link")
- for project, include in transmission_projects["include"].items():
- if include:
- _add_projects(
- n,
- europe_shape,
- offshore_shapes,
- plan=project,
- status=transmission_projects["status"],
- )
-
_set_lines_s_nom_from_linetypes(n)
_apply_parameter_corrections(n, parameter_corrections)
@@ -1263,7 +944,6 @@ def append_bus_shapes(n, shapes, type):
snakemake.input.eg_links,
snakemake.input.links_p_nom,
snakemake.input.links_tyndp,
- snakemake.params.transmission_projects,
snakemake.input.europe_shape,
snakemake.input.country_shapes,
snakemake.input.offshore_shapes,
From 982d75b8974ba280d6dcd1a268f8586b21801342 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Tue, 16 Jul 2024 13:35:49 +0200
Subject: [PATCH 06/28] cluster_network.py: do not allow to group lines with
different build years together-> requires pypsa update simplify_network.py:
fix bug of simplify links
---
scripts/cluster_network.py | 1 +
scripts/simplify_network.py | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/scripts/cluster_network.py b/scripts/cluster_network.py
index da7bd1788..79184167e 100644
--- a/scripts/cluster_network.py
+++ b/scripts/cluster_network.py
@@ -410,6 +410,7 @@ def clustering_for_n_clusters(
generator_strategies=generator_strategies,
one_port_strategies=one_port_strategies,
scale_link_capital_costs=False,
+ custom_line_groupers=["build_year"],
)
if not n.links.empty:
diff --git a/scripts/simplify_network.py b/scripts/simplify_network.py
index 558e4cf28..2d36b9f78 100644
--- a/scripts/simplify_network.py
+++ b/scripts/simplify_network.py
@@ -298,7 +298,8 @@ def simplify_links(
_, labels = connected_components(adjacency_matrix, directed=False)
labels = pd.Series(labels, n.buses.index)
- G = n.graph()
+ # TODO: I changed this because I got an error because the graph included lines and links in the function split_links which lead to an error later on
+ G = n.graph(branch_components=["Link"])
def split_links(nodes):
nodes = frozenset(nodes)
From f189b4e92f6d0a24ffbac566320d4b7126c2e5ef Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Tue, 16 Jul 2024 13:47:07 +0200
Subject: [PATCH 07/28] remove legacies of removing transmission projects from
base_network
---
scripts/base_network.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/scripts/base_network.py b/scripts/base_network.py
index 81927bd9b..f87d666b1 100644
--- a/scripts/base_network.py
+++ b/scripts/base_network.py
@@ -72,7 +72,6 @@
"""
import logging
-import os
from itertools import product
import geopandas as gpd
From 65c5e82189defb1c22585749fac9a8899668f010 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Wed, 24 Jul 2024 10:42:33 +0200
Subject: [PATCH 08/28] restructure folders:new folder for tranmission project
csv add_transmission_projects: improve logging, cleanup
---
config/config.default.yaml | 8 +-
.../nep/new_lines.csv | 0
.../nep/new_links.csv | 0
.../tyndp2020}/new_lines.csv | 0
.../tyndp2020}/new_links.csv | 0
.../tyndp2020}/upgraded_lines.csv | 0
.../tyndp2020}/upgraded_links.csv | 0
scripts/add_transmission_projects.py | 111 ++++++++++--------
8 files changed, 65 insertions(+), 54 deletions(-)
rename data/{ => transmission_projects}/nep/new_lines.csv (100%)
rename data/{ => transmission_projects}/nep/new_links.csv (100%)
rename data/{tyndp => transmission_projects/tyndp2020}/new_lines.csv (100%)
rename data/{tyndp => transmission_projects/tyndp2020}/new_links.csv (100%)
rename data/{tyndp => transmission_projects/tyndp2020}/upgraded_lines.csv (100%)
rename data/{tyndp => transmission_projects/tyndp2020}/upgraded_links.csv (100%)
diff --git a/config/config.default.yaml b/config/config.default.yaml
index 2d45df428..7fc09623a 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -305,23 +305,21 @@ links:
p_max_pu: 1.0
p_nom_max: .inf
max_extension: 30000 #MW
- include_tyndp: true
+ include_tyndp: true #remove when PR TYNDP data is included
under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transmission_projects
transmission_projects:
enable: true
include:
- #tyndp: true # For later, when other TYNDP projects are combined with new version
+ #tyndp2020: true # For later, when other TYNDP projects are combined with new version
nep: true
status:
- confirmed
- in_permitting
- under_construction
#- under_consideration
- line_under_construction: keep
- link_under_construction: zero
-
+ new_link_capacity: keep #keep or zero
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transformers
transformers:
x: 0.1
diff --git a/data/nep/new_lines.csv b/data/transmission_projects/nep/new_lines.csv
similarity index 100%
rename from data/nep/new_lines.csv
rename to data/transmission_projects/nep/new_lines.csv
diff --git a/data/nep/new_links.csv b/data/transmission_projects/nep/new_links.csv
similarity index 100%
rename from data/nep/new_links.csv
rename to data/transmission_projects/nep/new_links.csv
diff --git a/data/tyndp/new_lines.csv b/data/transmission_projects/tyndp2020/new_lines.csv
similarity index 100%
rename from data/tyndp/new_lines.csv
rename to data/transmission_projects/tyndp2020/new_lines.csv
diff --git a/data/tyndp/new_links.csv b/data/transmission_projects/tyndp2020/new_links.csv
similarity index 100%
rename from data/tyndp/new_links.csv
rename to data/transmission_projects/tyndp2020/new_links.csv
diff --git a/data/tyndp/upgraded_lines.csv b/data/transmission_projects/tyndp2020/upgraded_lines.csv
similarity index 100%
rename from data/tyndp/upgraded_lines.csv
rename to data/transmission_projects/tyndp2020/upgraded_lines.csv
diff --git a/data/tyndp/upgraded_links.csv b/data/transmission_projects/tyndp2020/upgraded_links.csv
similarity index 100%
rename from data/tyndp/upgraded_links.csv
rename to data/transmission_projects/tyndp2020/upgraded_links.csv
diff --git a/scripts/add_transmission_projects.py b/scripts/add_transmission_projects.py
index 0124531e5..60b65d5ed 100644
--- a/scripts/add_transmission_projects.py
+++ b/scripts/add_transmission_projects.py
@@ -118,10 +118,10 @@ def _connect_new_lines(
lines_port["match_distance"] = distances < distance_upper_bound
# For buses which are not close to any existing bus, only add a new bus if the line is going offshore (e.g. North Sea Wind Power Hub)
- if not lines_port.match_distance.all() and offshore_shapes.unary_union:
+ if not lines_port.match_distance.all() and offshore_shapes.union_all():
potential_new_buses = lines_port[~lines_port.match_distance]
is_offshore = potential_new_buses.apply(
- lambda x: offshore_shapes.unary_union.contains(Point(x.x, x.y)), axis=1
+ lambda x: offshore_shapes.union_all().contains(Point(x.x, x.y)), axis=1
)
new_buses = potential_new_buses[is_offshore]
if not new_buses.empty:
@@ -232,27 +232,27 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
found_b = ind < len(lines)
# since the new lines are checked in both directions, we need to find the correct index of the new line
found_i = np.arange(len(querylines))[found_b] % len(new_lines)
+ # create a DataFrame with the distances, new line and its closest existing line
+ line_map = pd.DataFrame(
+ dict(D=dist[found_b], i=lines.index[ind[found_b] % len(lines)]),
+ index=new_lines.index[found_i].rename("new_lines"),
+ )
if type == "new":
if len(found_i) != 0:
- found = new_lines.index[found_i]
+ found = line_map.index
logger.warning(
"Found new lines similar to existing lines:\n"
- + str(found.to_list())
+ + str(line_map["i"].to_dict())
+ "\n Lines are assumed to be duplicated and will be ignored."
)
elif type == "upgraded":
if len(found_i) < len(new_lines):
- not_found = new_lines.index.difference(new_lines.index[found_i])
+ not_found = new_lines.index.difference(line_map.index)
logger.warning(
- "Could not find upgraded lines close enough to provided lines:\n"
+ "Could not find upgraded lines close enough to existing lines:\n"
+ str(not_found.to_list())
+ "\n Lines will be ignored."
)
- # create a DataFrame with the distances, new line and its closest existing line
- line_map = pd.DataFrame(
- dict(D=dist[found_b], i=lines.index[ind[found_b] % len(lines)]),
- index=new_lines.index[found_i].rename("new_lines"),
- )
# only keep the closer line of the new line pair (since lines are checked in both directions)
line_map = line_map.sort_values(by="D")[
lambda ds: ~ds.index.duplicated(keep="first")
@@ -275,17 +275,6 @@ def _adjust_decommissing(upgraded_lines, line_map):
return to_update
-def _adjust_min_expansion(branch, n, upgraded_lines, line_map):
- """
- Set minimal nominal capacity for upgraded lines to at least the installed
- capacity of the existing lines.
- """
-
- upgraded_lines[nominal_attrs[branch] + "_nom"] = n.df["branch"].loc[
- line_map, n.df(branch)[nominal_attrs[branch] + "_nom"]
- ]
-
-
def _get_upgraded_lines(branch_componnent, n, upgraded_lines, line_map):
"""
Get upgraded lines by merging information of existing line and upgraded
@@ -305,13 +294,17 @@ def _get_upgraded_lines(branch_componnent, n, upgraded_lines, line_map):
lines_to_add = pd.concat([lines_to_add, upgraded_lines[new_columns]], axis=1)
# only consider columns of original upgraded lines and bus0 and bus1
lines_to_add = lines_to_add.loc[:, ["bus0", "bus1", *upgraded_lines.columns]]
+ # set capacity of upgraded lines to capacity of existing lines
+ lines_to_add[nominal_attrs[branch_componnent]] = n.df(branch_componnent).loc[
+ line_map, nominal_attrs[branch_componnent]
+ ]
# change index of new lines to avoid duplicates
lines_to_add.index = lines_to_add.index.astype(str) + "_upgraded"
return lines_to_add
def _get_project_files(plan="tyndp"):
- path = f"data/{plan}/"
+ path = f"data/transmission_projects/{plan}/"
lines = dict()
if os.path.exists(path):
files = os.listdir(path)
@@ -335,7 +328,7 @@ def _remove_projects_outside_countries(lines, europe_shape):
"""
Remove projects which are not in the considered countries.
"""
- europe_shape_prepped = shapely.prepared.prep(europe_shape)
+ europe_shape_prepped = shapely.prepared.prep(europe_shape.buffer(1))
is_within_covered_countries = lines.geometry.apply(
lambda x: europe_shape_prepped.contains(x)
)
@@ -366,7 +359,7 @@ def _is_similar(ds1, ds2, percentage=10):
def _set_underwater_fraction(new_links, offshore_shapes):
new_links_gds = gpd.GeoSeries(new_links.geometry)
new_links.loc[:, "underwater_fraction"] = (
- new_links_gds.intersection(offshore_shapes.unary_union).length
+ new_links_gds.intersection(offshore_shapes.union_all()).length
/ new_links_gds.length
).round(2)
@@ -386,7 +379,10 @@ def _add_projects(
lines_dict = _get_project_files(plan)
logging.info(f"Adding {len(lines_dict)} projects from {plan} to the network.")
for key, lines in lines_dict.items():
+ logging.info(f"Adding {key.replace('_', ' ')} to the network.")
lines = _remove_projects_outside_countries(lines, europe_shape)
+ if isinstance(status, dict):
+ status = status[plan]
lines = lines.loc[lines.project_status.isin(status)]
if "new_lines" in key:
new_lines, new_buses_df = _connect_new_lines(lines, n, new_buses_df)
@@ -429,7 +425,7 @@ def _add_projects(
n.import_components_from_dataframe(new_links, "Link")
elif "upgraded_lines" in key:
line_map = _find_closest_lines(
- n.lines, lines, distance_upper_bound=0.20, type="upgraded"
+ n.lines, lines, distance_upper_bound=0.30, type="upgraded"
)
upgraded_lines = lines.loc[line_map.index]
upgraded_lines = _get_upgraded_lines("Line", n, upgraded_lines, line_map)
@@ -440,7 +436,7 @@ def _add_projects(
line_map = _find_closest_lines(
n.links.query("carrier=='DC'"),
lines,
- distance_upper_bound=0.20,
+ distance_upper_bound=0.30,
type="upgraded",
)
upgraded_links = lines.loc[line_map.index]
@@ -464,7 +460,7 @@ def fill_length_from_geometry(line, line_factor=1.2):
if "snakemake" not in globals():
from _helpers import mock_snakemake
- snakemake = mock_snakemake("add_transmission_projects")
+ snakemake = mock_snakemake("add_transmission_projects", run="TYNDP")
configure_logging(snakemake)
set_scenario_config(snakemake)
@@ -505,27 +501,44 @@ def fill_length_from_geometry(line, line_factor=1.2):
plan=project,
status=transmission_projects["status"],
)
-
- # Add new line type for new lines
- new_lines_df["type"] = "Al/St 240/40 4-bundle 380.0"
- new_lines_df["underground"].fillna(False, inplace=True)
-
- # Add carrier types of lines and links
- new_lines_df["carrier"] = "AC"
- new_links_df["carrier"] = "DC"
- # Fill empty length values with length calculated from geometry
- new_lines_df["length"] = new_lines_df.apply(
- lambda x: (
- fill_length_from_geometry(x, line_factor) if pd.isna(x.length) else x.length
- ),
- axis=1,
- )
- new_links_df["length"] = new_links_df.apply(
- lambda x: (
- fill_length_from_geometry(x, line_factor) if pd.isna(x.length) else x.length
- ),
- axis=1,
- )
+ if not new_lines_df.empty:
+ # Add new line type for new lines
+ new_lines_df.loc[:, "type"] = "Al/St 240/40 4-bundle 380.0"
+ new_lines_df.loc[:, "num_parallel"] = 2
+ (
+ new_lines_df["underground"].astype("bool").fillna(False, inplace=True)
+ if "underground" in new_lines_df.columns
+ else None
+ )
+ # Add carrier types of lines
+ new_lines_df.loc[:, "carrier"] = "AC"
+ # Fill empty length values with length calculated from geometry
+ new_lines_df["length"] = new_lines_df.apply(
+ lambda x: (
+ fill_length_from_geometry(x, line_factor)
+ if pd.isna(x.length)
+ else x.length
+ ),
+ axis=1,
+ )
+ if not new_links_df.empty:
+ # Add carrier types of lines and links
+ new_links_df.loc[:, "carrier"] = "DC"
+ # Fill empty length values with length calculated from geometry
+ new_links_df["length"] = new_links_df.apply(
+ lambda x: (
+ fill_length_from_geometry(x, line_factor)
+ if pd.isna(x.length)
+ else x.length
+ ),
+ axis=1,
+ )
+ # Whether to keep existing link capacity or set to zero
+ not_upgraded = ~new_links_df.index.str.contains("upgraded")
+ if transmission_projects["new_link_capacity"] == "keep":
+ new_links_df.loc[not_upgraded, "p_nom"] = new_links_df["p_nom"].fillna(0)
+ elif transmission_projects["new_link_capacity"] == "zero":
+ new_links_df.loc[not_upgraded, "p_nom"] = 0
# export csv files for new buses, lines, links and adjusted lines and links
new_lines_df.to_csv(snakemake.output.new_lines)
new_links_df.to_csv(snakemake.output.new_links)
From c55db4bbaed8a2cd0c18f10bf268f4748571805d Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Mon, 29 Jul 2024 15:02:07 +0200
Subject: [PATCH 09/28] update lines csvs and add default line type for
upgraded and new lines
---
.../tyndp2020/new_lines.csv | 172 ++++++++----------
.../tyndp2020/new_links.csv | 105 ++++++-----
.../tyndp2020/upgraded_lines.csv | 62 +++----
.../tyndp2020/upgraded_links.csv | 9 +-
scripts/add_transmission_projects.py | 9 +
5 files changed, 168 insertions(+), 189 deletions(-)
diff --git a/data/transmission_projects/tyndp2020/new_lines.csv b/data/transmission_projects/tyndp2020/new_lines.csv
index 2c5f02391..bc1b6d7b3 100644
--- a/data/transmission_projects/tyndp2020/new_lines.csv
+++ b/data/transmission_projects/tyndp2020/new_lines.csv
@@ -1,80 +1,69 @@
,project_status,length,build_year,underground,v_nom,tags,x0,y0,x1,y1,num_parallel
-TYNDP2020_0,in_permitting,131.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""",-7.793621146853301,41.52102394053344,-8.38943499999999,40.95916,2
-TYNDP2020_1,in_permitting,30.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""18"", ""tyndp_status""=>""in_permitting""",-8.273869552394737,42.46748640601422,-7.94998199999999,42.383908,2
-TYNDP2020_2,in_permitting,140.21,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""",-7.94998199999999,42.383908,-8.582626164089064,41.764651842353146,2
-TYNDP2020_3,in_permitting,140.21,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""",-8.582626164089064,41.764651842353146,-8.67645299999999,41.303603,2
-TYNDP2020_4,under_construction,23.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/23"", ""tyndp2020_proj_id""=>""23"", ""tyndp2020_invest_id""=>""60"", ""tyndp_status""=>""under_construction""",3.08990499999999,50.50906,3.429108,50.773813,2
-TYNDP2020_5,under_construction,26.0,2023,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/26"", ""tyndp2020_proj_id""=>""26"", ""tyndp2020_invest_id""=>""614"", ""tyndp_status""=>""under_construction""",10.465851,46.8808455082082,10.465851,46.8808455082082,2
-TYNDP2020_6,in_permitting,80.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""90"", ""tyndp_status""=>""in_permitting""",11.126404,43.872158,11.413422,44.580687,2
-TYNDP2020_7,planned_not_yet_permitting,350.0,2026,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""1041"", ""tyndp_status""=>""planned_not_yet_permitting""",14.028168,42.409263,13.345642,42.426498,2
-TYNDP2020_8,in_permitting,120.5,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""313"", ""tyndp_status""=>""in_permitting""",14.3524,49.1584,15.687103,49.531448,2
-TYNDP2020_9,in_permitting,117.0,2028,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""315"", ""tyndp_status""=>""in_permitting""",14.3524,49.1584,13.282471,49.60804,2
-TYNDP2020_10,under_construction,24.0,2020,True,150,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/36"", ""tyndp2020_proj_id""=>""36"", ""tyndp2020_invest_id""=>""141"", ""tyndp_status""=>""under_construction""",12.311554,55.670615,12.271729,54.068253,2
-TYNDP2020_11,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/39"", ""tyndp2020_proj_id""=>""39"", ""tyndp2020_invest_id""=>""144"", ""tyndp_status""=>""under_construction""",9.75860599999998,54.306108,9.29580699999999,55.075223,2
+TYNDP2020_0,in_permitting,131.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""",-7.793621146853301,41.52102394053344,-8.38943499999999,40.95916,2
+TYNDP2020_1,in_permitting,30.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""18"", ""tyndp_status""=>""in_permitting""",-8.273869552394737,42.46748640601422,-7.94998199999999,42.383908,2
+TYNDP2020_2,in_permitting,140.21,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""",-7.94998199999999,42.383908,-8.582626164089064,41.764651842353146,2
+TYNDP2020_3,in_permitting,140.21,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""",-8.582626164089064,41.764651842353146,-8.67645299999999,41.303603,2
+TYNDP2020_4,under_construction,23.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/23"", ""tyndp2020_proj_id""=>""23"", ""tyndp2020_invest_id""=>""60"", ""tyndp_status""=>""under_construction""",3.08990499999999,50.50906,3.429108,50.773813,2
+TYNDP2020_6,in_permitting,80.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""90"", ""tyndp_status""=>""in_permitting""",11.126404,43.872158,11.413422,44.580687,2
+TYNDP2020_8,in_permitting,120.5,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""313"", ""tyndp_status""=>""in_permitting""",14.3524,49.1584,15.687103,49.531448,2
+TYNDP2020_9,in_permitting,117.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""315"", ""tyndp_status""=>""in_permitting""",14.3524,49.1584,13.282471,49.60804,2
+TYNDP2020_11,under_construction,110.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/39"", ""tyndp2020_proj_id""=>""39"", ""tyndp2020_invest_id""=>""144"", ""tyndp_status""=>""under_construction""",9.75860599999998,54.306108,9.29580699999999,55.075223,2
TYNDP2020_12,planned_not_yet_permitting,157.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/47"", ""tyndp2020_proj_id""=>""47"", ""tyndp2020_invest_id""=>""689"", ""tyndp_status""=>""planned_not_yet_permitting""",10.06485,48.282279,10.897064,47.236355,2
-TYNDP2020_13,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""",17.539673,47.882276,17.786865,47.653363,2
-TYNDP2020_14,under_construction,110.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""",17.539673,47.882276,18.540802,48.236565,2
-TYNDP2020_15,under_construction,48.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1501"", ""tyndp_status""=>""under_construction""",19.958038,48.380882,20.55954,48.263084,2
-TYNDP2020_16,in_permitting,60.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/78"", ""tyndp2020_proj_id""=>""78"", ""tyndp2020_invest_id""=>""458"", ""tyndp_status""=>""in_permitting""",-3.21075400000001,51.135416,-2.633972,51.533523,2
-TYNDP2020_17,in_permitting,138.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/81"", ""tyndp2020_proj_id""=>""81"", ""tyndp2020_invest_id""=>""462"", ""tyndp_status""=>""in_permitting""",-6.61376999999999,53.441446,-6.65496799999999,54.509921,2
-TYNDP2020_18,planned_not_yet_permitting,83.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""463"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.41964699999999,54.209042,-8.0041,54.6773,2
-TYNDP2020_19,planned_not_yet_permitting,58.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""896"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.0041,54.6773,-7.2811,54.5781,2
-TYNDP2020_20,planned_not_yet_permitting,61.0,2030,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/82"", ""tyndp2020_proj_id""=>""82"", ""tyndp2020_invest_id""=>""897"", ""tyndp_status""=>""planned_not_yet_permitting""",-7.2811,54.5781,-6.65496799999999,54.509921,2
-TYNDP2020_21,planned_not_yet_permitting,61.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.046112,38.05458,-8.1897,37.6672,2
-TYNDP2020_22,planned_not_yet_permitting,61.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.1897,37.6672,-7.73025499999999,37.397437,2
-TYNDP2020_23,planned_not_yet_permitting,75.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""1670"", ""tyndp_status""=>""planned_not_yet_permitting""",-7.55310100000001,38.17991,-7.89230299999999,38.808681,2
+TYNDP2020_13,under_construction,110.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""",17.539673,47.882276,17.786865,47.653363,2
+TYNDP2020_14,under_construction,110.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""",17.539673,47.882276,18.540802,48.236565,2
+TYNDP2020_15,under_construction,48.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1501"", ""tyndp_status""=>""under_construction""",19.958038,48.380882,20.55954,48.263084,2
+TYNDP2020_16,in_permitting,60.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/78"", ""tyndp2020_proj_id""=>""78"", ""tyndp2020_invest_id""=>""458"", ""tyndp_status""=>""in_permitting""",-3.21075400000001,51.135416,-2.633972,51.533523,2
+TYNDP2020_17,in_permitting,138.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/81"", ""tyndp2020_proj_id""=>""81"", ""tyndp2020_invest_id""=>""462"", ""tyndp_status""=>""in_permitting""",-6.61376999999999,53.441446,-6.65496799999999,54.509921,2
+TYNDP2020_21,planned_not_yet_permitting,61.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.046112,38.05458,-8.1897,37.6672,2
+TYNDP2020_22,planned_not_yet_permitting,61.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.1897,37.6672,-7.73025499999999,37.397437,2
+TYNDP2020_23,planned_not_yet_permitting,75.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""1670"", ""tyndp_status""=>""planned_not_yet_permitting""",-7.55310100000001,38.17991,-7.89230299999999,38.808681,2
TYNDP2020_24,under_construction,75.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1488"", ""tyndp_status""=>""under_construction""",4.9617,52.333661,5.763702,52.619725,2
-TYNDP2020_25,in_permitting,200.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""396"", ""tyndp_status""=>""in_permitting""",24.612122,65.877531,20.232697,66.70191,2
-TYNDP2020_26,in_permitting,156.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""1710"", ""tyndp_status""=>""in_permitting""",24.612122,65.877531,26.114502,64.778807,2
-TYNDP2020_27,under_construction,108.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/123"", ""tyndp2020_proj_id""=>""123"", ""tyndp2020_invest_id""=>""373"", ""tyndp_status""=>""under_construction""",21.625214,53.051946,21.40686,52.213497,2
-TYNDP2020_28,in_permitting,160.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/124"", ""tyndp2020_proj_id""=>""124"", ""tyndp2020_invest_id""=>""733"", ""tyndp_status""=>""in_permitting""",16.659393,57.43682,14.749146,56.326437,2
-TYNDP2020_29,in_permitting,178.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""86"", ""tyndp_status""=>""in_permitting""",15.636292,41.359288,14.028168,42.409263,2
-TYNDP2020_30,under_construction,30.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""96"", ""tyndp_status""=>""under_construction""",15.555267,41.165216,15.3286,40.9749,2
-TYNDP2020_31,under_construction,159.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""273"", ""tyndp_status""=>""under_construction""",28.02475,44.323848,26.7166,45.0762,2
-TYNDP2020_32,in_permitting,140.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""275"", ""tyndp_status""=>""in_permitting""",27.960205,45.447607,26.872559,46.265341,2
-TYNDP2020_33,under_construction,86.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""800"", ""tyndp_status""=>""under_construction""",27.610016,43.326177,27.358704,42.576344,2
-TYNDP2020_34,in_permitting,151.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""256"", ""tyndp_status""=>""in_permitting""",26.003265,42.200038,23.083964803314,40.8967964275543,2
-TYNDP2020_35,under_construction,13.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""258"", ""tyndp_status""=>""under_construction""",26.003265,42.200038,25.804138,41.964596,2
-TYNDP2020_36,under_construction,150.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""262"", ""tyndp_status""=>""under_construction""",26.003265,42.200038,27.358704,42.576344,2
-TYNDP2020_37,under_construction,131.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""238"", ""tyndp_status""=>""under_construction""",21.88777,45.30413,20.706482,44.86755,2
-TYNDP2020_38,under_construction,116.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""269"", ""tyndp_status""=>""under_construction""",22.578278,44.679395,21.88777,45.30413,2
-TYNDP2020_39,in_permitting,274.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.2815,45.7426,21.2815,45.7426,2
-TYNDP2020_40,in_permitting,60.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1011"", ""tyndp_status""=>""in_permitting""",26.154327,57.918495,25.473175,57.541628,2
-TYNDP2020_41,in_permitting,243.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1013"", ""tyndp_status""=>""in_permitting""",28.063202,59.310067,26.154327,57.918495,2
-TYNDP2020_42,in_permitting,190.0,2025,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1634"", ""tyndp_status""=>""in_permitting""",22.740326,55.10273,24.252319,54.796727,2
-TYNDP2020_43,planned_not_yet_permitting,57.11,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1661"", ""tyndp_status""=>""planned_not_yet_permitting""",16.11557,54.132674,16.6857237480894,54.0342010066989,2
-TYNDP2020_44,planned_not_yet_permitting,119.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1662"", ""tyndp_status""=>""planned_not_yet_permitting""",16.858521,53.16571,16.6857237480894,54.0342010066989,2
-TYNDP2020_45,planned_not_yet_permitting,288.5,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1664"", ""tyndp_status""=>""planned_not_yet_permitting""",14.831543,53.330873,18.104095,54.714309,2
-TYNDP2020_46,planned_not_yet_permitting,77.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1665"", ""tyndp_status""=>""planned_not_yet_permitting""",18.104095,54.714309,18.684998,54.266026,2
+TYNDP2020_25,in_permitting,200.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""396"", ""tyndp_status""=>""in_permitting""",24.612122,65.877531,20.232697,66.70191,2
+TYNDP2020_26,in_permitting,156.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""1710"", ""tyndp_status""=>""in_permitting""",24.612122,65.877531,26.114502,64.778807,2
+TYNDP2020_27,under_construction,108.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/123"", ""tyndp2020_proj_id""=>""123"", ""tyndp2020_invest_id""=>""373"", ""tyndp_status""=>""under_construction""",21.625214,53.051946,21.40686,52.213497,2
+TYNDP2020_28,in_permitting,160.0,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/124"", ""tyndp2020_proj_id""=>""124"", ""tyndp2020_invest_id""=>""733"", ""tyndp_status""=>""in_permitting""",16.659393,57.43682,14.749146,56.326437,2
+TYNDP2020_29,in_permitting,178.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""86"", ""tyndp_status""=>""in_permitting""",15.636292,41.359288,14.028168,42.409263,2
+TYNDP2020_30,under_construction,30.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""96"", ""tyndp_status""=>""under_construction""",15.555267,41.165216,15.3286,40.9749,2
+TYNDP2020_31,under_construction,159.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""273"", ""tyndp_status""=>""under_construction""",28.02475,44.323848,26.7166,45.0762,2
+TYNDP2020_32,in_permitting,140.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""275"", ""tyndp_status""=>""in_permitting""",27.960205,45.447607,26.872559,46.265341,2
+TYNDP2020_33,under_construction,86.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""800"", ""tyndp_status""=>""under_construction""",27.610016,43.326177,27.358704,42.576344,2
+TYNDP2020_34,in_permitting,151.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""256"", ""tyndp_status""=>""in_permitting""",26.003265,42.200038,23.083964803314,40.8967964275543,2
+TYNDP2020_35,under_construction,13.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""258"", ""tyndp_status""=>""under_construction""",26.003265,42.200038,25.804138,41.964596,2
+TYNDP2020_36,under_construction,150.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""262"", ""tyndp_status""=>""under_construction""",26.003265,42.200038,27.358704,42.576344,2
+TYNDP2020_37,under_construction,131.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""238"", ""tyndp_status""=>""under_construction""",21.88777,45.30413,20.706482,44.86755,2
+TYNDP2020_38,under_construction,116.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""269"", ""tyndp_status""=>""under_construction""",22.578278,44.679395,21.88777,45.30413,2
+TYNDP2020_39,in_permitting,274.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.2815,45.7426,21.2815,45.7426,2
+TYNDP2020_43,planned_not_yet_permitting,57.11,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1661"", ""tyndp_status""=>""planned_not_yet_permitting""",16.11557,54.132674,16.6857237480894,54.0342010066989,2
+TYNDP2020_44,planned_not_yet_permitting,119.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1662"", ""tyndp_status""=>""planned_not_yet_permitting""",16.858521,53.16571,16.6857237480894,54.0342010066989,2
+TYNDP2020_45,planned_not_yet_permitting,288.5,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1664"", ""tyndp_status""=>""planned_not_yet_permitting""",14.831543,53.330873,18.104095,54.714309,2
+TYNDP2020_46,planned_not_yet_permitting,77.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1665"", ""tyndp_status""=>""planned_not_yet_permitting""",18.104095,54.714309,18.684998,54.266026,2
TYNDP2020_47,in_permitting,92.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/183"", ""tyndp2020_proj_id""=>""183"", ""tyndp2020_invest_id""=>""1018"", ""tyndp_status""=>""in_permitting""",8.86459400000001,55.074436,8.66683999999999,55.481966,2
TYNDP2020_48,under_construction,60.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/186"", ""tyndp2020_proj_id""=>""186"", ""tyndp2020_invest_id""=>""886"", ""tyndp_status""=>""under_construction""",16.399841,48.323387,16.820068,48.943249,2
TYNDP2020_49,in_permitting,60.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/187"", ""tyndp2020_proj_id""=>""187"", ""tyndp2020_invest_id""=>""997"", ""tyndp_status""=>""in_permitting""",13.080597,48.256684,13.080597,48.256684,2
-TYNDP2020_50,under_construction,300.0,2022,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/197"", ""tyndp2020_proj_id""=>""197"", ""tyndp2020_invest_id""=>""742"", ""tyndp_status""=>""under_construction""",26.114502,64.778807,25.180664,62.262171,2
-TYNDP2020_51,in_permitting,83.0,2023,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""308"", ""tyndp_status""=>""in_permitting""",13.191833,50.341955,12.675274,50.160683,2
-TYNDP2020_52,under_construction,87.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""309"", ""tyndp_status""=>""under_construction""",12.675274,50.160683,13.282471,49.60804,2
+TYNDP2020_50,under_construction,300.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/197"", ""tyndp2020_proj_id""=>""197"", ""tyndp2020_invest_id""=>""742"", ""tyndp_status""=>""under_construction""",26.114502,64.778807,25.180664,62.262171,2
+TYNDP2020_51,in_permitting,83.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""308"", ""tyndp_status""=>""in_permitting""",13.191833,50.341955,12.675274,50.160683,2
+TYNDP2020_52,under_construction,87.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""309"", ""tyndp_status""=>""under_construction""",12.675274,50.160683,13.282471,49.60804,2
TYNDP2020_53,under_construction,60.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""939"", ""tyndp_status""=>""under_construction""",8.09143099999999,53.313647,7.23587000000001,53.374317,2
TYNDP2020_54,under_construction,30.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""1684"", ""tyndp_status""=>""under_construction""",8.09143099999999,53.313647,8.00079299999999,53.55581,2
-TYNDP2020_55,under_construction,95.0,2023,False,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/208"", ""tyndp2020_proj_id""=>""208"", ""tyndp2020_invest_id""=>""151"", ""tyndp_status""=>""under_construction""",8.283691,52.344569,8.61877400000001,53.065976,2
TYNDP2020_56,under_construction,182.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/208"", ""tyndp2020_proj_id""=>""208"", ""tyndp2020_invest_id""=>""156"", ""tyndp_status""=>""under_construction""",6.615143,51.630805,7.38830599999999,53.076703,2
-TYNDP2020_57,in_permitting,45.2,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""627"", ""tyndp_status""=>""in_permitting""",19.500315,43.953021,19.388123,43.723475,2
-TYNDP2020_58,in_permitting,100.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""",19.500315,43.953021,19.315338,43.347152,2
-TYNDP2020_59,under_construction,151.0,2019,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1526"", ""tyndp_status""=>""under_construction""",18.772888,42.315909,19.315338,43.347152,2
-TYNDP2020_60,under_construction,,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1527"", ""tyndp_status""=>""under_construction""",20.928955,44.056999,20.739984,43.680615,2
-TYNDP2020_61,planned_not_yet_permitting,32.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/228"", ""tyndp2020_proj_id""=>""228"", ""tyndp2020_invest_id""=>""1231"", ""tyndp_status""=>""planned_not_yet_permitting""",7.50366199999999,47.891485,7.71240200000001,48.103763,2
-TYNDP2020_62,under_consideration,40.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1270"", ""tyndp_status""=>""under_consideration""",15.038505,52.76751,15.5,51.93333,2
-TYNDP2020_63,under_consideration,40.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1271"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,16.729431,52.32359,2
-TYNDP2020_64,under_consideration,90.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1673"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,16.056519,51.449728,2
-TYNDP2020_65,under_consideration,80.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1674"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,14.615936,52.125058,2
-TYNDP2020_66,in_permitting,100.0,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""355"", ""tyndp_status""=>""in_permitting""",15.086975,51.069017,16.365509,50.816348,2
+TYNDP2020_57,in_permitting,45.2,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""627"", ""tyndp_status""=>""in_permitting""",19.500315,43.953021,19.388123,43.723475,2
+TYNDP2020_58,in_permitting,100.0,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""",19.500315,43.953021,19.315338,43.347152,2
+TYNDP2020_59,under_construction,151.0,2019,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1526"", ""tyndp_status""=>""under_construction""",18.772888,42.315909,19.315338,43.347152,2
+TYNDP2020_60,under_construction,,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1527"", ""tyndp_status""=>""under_construction""",20.928955,44.056999,20.739984,43.680615,2
+TYNDP2020_61,planned_not_yet_permitting,32.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/228"", ""tyndp2020_proj_id""=>""228"", ""tyndp2020_invest_id""=>""1231"", ""tyndp_status""=>""planned_not_yet_permitting""",7.50366199999999,47.891485,7.71240200000001,48.103763,2
+TYNDP2020_62,under_consideration,40.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1270"", ""tyndp_status""=>""under_consideration""",15.038505,52.76751,15.5,51.93333,2
+TYNDP2020_63,under_consideration,40.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1271"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,16.729431,52.32359,2
+TYNDP2020_64,under_consideration,90.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1673"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,16.056519,51.449728,2
+TYNDP2020_65,under_consideration,80.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1674"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,14.615936,52.125058,2
+TYNDP2020_66,in_permitting,100.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""355"", ""tyndp_status""=>""in_permitting""",15.086975,51.069017,16.365509,50.816348,2
TYNDP2020_67,under_consideration,11.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/231"", ""tyndp2020_proj_id""=>""231"", ""tyndp2020_invest_id""=>""1282"", ""tyndp_status""=>""under_consideration""",8.16970799999999,47.523693,8.205414,47.649662,2
-TYNDP2020_68,under_consideration,91.0,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1276"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.538055,44.455349,2
-TYNDP2020_69,under_consideration,46.2,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1277"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.436344,44.904884,2
-TYNDP2020_70,under_consideration,25.0,2033,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1279"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.420959,45.289022,2
-TYNDP2020_71,under_consideration,47.8,2032,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1530"", ""tyndp_status""=>""under_consideration""",18.436344,44.904884,18.538055,44.455349,2
-TYNDP2020_72,under_consideration,70.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/243"", ""tyndp2020_proj_id""=>""243"", ""tyndp2020_invest_id""=>""1269"", ""tyndp_status""=>""under_consideration""",18.663025,45.454351,19.175262,45.75411,2
+TYNDP2020_68,under_consideration,91.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1276"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.538055,44.455349,2
+TYNDP2020_69,under_consideration,46.2,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1277"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.436344,44.904884,2
+TYNDP2020_70,under_consideration,25.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1279"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.420959,45.289022,2
+TYNDP2020_71,under_consideration,47.8,2032,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1530"", ""tyndp_status""=>""under_consideration""",18.436344,44.904884,18.538055,44.455349,2
+TYNDP2020_72,under_consideration,70.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/243"", ""tyndp2020_proj_id""=>""243"", ""tyndp2020_invest_id""=>""1269"", ""tyndp_status""=>""under_consideration""",18.663025,45.454351,19.175262,45.75411,2
TYNDP2020_73,planned_not_yet_permitting,65.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/244"", ""tyndp2020_proj_id""=>""244"", ""tyndp2020_invest_id""=>""1245"", ""tyndp_status""=>""planned_not_yet_permitting""",6.25122100000001,49.182601,7.028503,49.340336,2
TYNDP2020_74,under_construction,27.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/245"", ""tyndp2020_proj_id""=>""245"", ""tyndp2020_invest_id""=>""1246"", ""tyndp_status""=>""under_construction""",6.936493,53.145947,7.389679,53.097323,2
-TYNDP2020_75,in_permitting,14.0,2024,True,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/250"", ""tyndp2020_proj_id""=>""250"", ""tyndp2020_invest_id""=>""1384"", ""tyndp_status""=>""in_permitting""",9.503174,46.35925,9.34661899999999,46.251099,2
TYNDP2020_76,planned_not_yet_permitting,90.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1050"", ""tyndp_status""=>""planned_not_yet_permitting""",5.71701000000001,51.094036,5.35583499999999,50.557942,2
TYNDP2020_77,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1456"", ""tyndp_status""=>""in_permitting""",4.603271,51.209464,5.71701000000001,51.094036,2
TYNDP2020_78,planned_not_yet_permitting,60.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1515"", ""tyndp_status""=>""planned_not_yet_permitting""",5.35583499999999,50.557942,4.35470599999999,50.529143,2
@@ -82,7 +71,7 @@ TYNDP2020_79,planned_not_yet_permitting,47.0,2035,False,380,"""url""=>""https://
TYNDP2020_80,planned_not_yet_permitting,16.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1517"", ""tyndp_status""=>""planned_not_yet_permitting""",4.177551,51.162122,4.22012299999999,50.864911,2
TYNDP2020_81,planned_not_yet_permitting,36.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1676"", ""tyndp_status""=>""planned_not_yet_permitting""",4.177551,51.162122,4.603271,51.209464,2
TYNDP2020_82,under_construction,125.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/258"", ""tyndp2020_proj_id""=>""258"", ""tyndp2020_invest_id""=>""667"", ""tyndp_status""=>""under_construction""",9.24087500000001,53.906765,8.86459400000001,55.074436,2
-TYNDP2020_83,under_consideration,120.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/259"", ""tyndp2020_proj_id""=>""259"", ""tyndp2020_invest_id""=>""1205"", ""tyndp_status""=>""under_consideration""",21.566162,47.659838,22.026215,47.044861,2
+TYNDP2020_83,under_consideration,120.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/259"", ""tyndp2020_proj_id""=>""259"", ""tyndp2020_invest_id""=>""1205"", ""tyndp_status""=>""under_consideration""",21.566162,47.659838,22.026215,47.044861,2
TYNDP2020_84,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,8.298798,47.148634,2
TYNDP2020_85,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.253235,46.824496,2
TYNDP2020_86,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.80228979023356,47.6377345779987,2
@@ -90,50 +79,41 @@ TYNDP2020_87,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-p
TYNDP2020_88,in_permitting,64.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1259"", ""tyndp_status""=>""in_permitting""",8.16970799999999,47.523693,8.298798,47.148634,2
TYNDP2020_89,in_permitting,45.4,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1287"", ""tyndp_status""=>""in_permitting""",7.19192499999999,47.364874,7.22213700000001,47.007416,2
TYNDP2020_90,in_permitting,87.1,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1288"", ""tyndp_status""=>""in_permitting""",8.298798,47.148634,8.32488999999999,46.532414,2
-TYNDP2020_91,planned_not_yet_permitting,,2035,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/265"", ""tyndp2020_proj_id""=>""265"", ""tyndp2020_invest_id""=>""1290"", ""tyndp_status""=>""planned_not_yet_permitting""",8.85498,46.16081,8.32488999999999,46.532414,2
TYNDP2020_92,in_permitting,124.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1286"", ""tyndp_status""=>""in_permitting""",7.555847,46.336499,8.795929,46.401882,2
TYNDP2020_93,in_permitting,106.6,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1733"", ""tyndp_status""=>""in_permitting""",7.64236499999999,47.079475,7.555847,46.336499,2
TYNDP2020_94,under_construction,30.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1734"", ""tyndp_status""=>""under_construction""",7.165833,46.200745,7.555847,46.336499,2
-TYNDP2020_95,planned_not_yet_permitting,110.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1212"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.14818,42.10892,-1.671123,41.952398,2
-TYNDP2020_96,planned_not_yet_permitting,80.0,2029,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1208"", ""tyndp_status""=>""planned_not_yet_permitting""",-0.812988000000009,43.979969,-0.575409000000004,43.345155,2
+TYNDP2020_95,planned_not_yet_permitting,110.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1212"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.14818,42.10892,-1.671123,41.952398,2
+TYNDP2020_96,planned_not_yet_permitting,80.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1208"", ""tyndp_status""=>""planned_not_yet_permitting""",-0.812988000000009,43.979969,-0.575409000000004,43.345155,2
TYNDP2020_97,under_construction,1.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""",4.307132,51.301299,4.307132,51.301299,2
TYNDP2020_98,under_construction,128.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/312"", ""tyndp2020_proj_id""=>""312"", ""tyndp2020_invest_id""=>""1472"", ""tyndp_status""=>""under_construction""",13.080597,48.256684,12.803192,47.244746,2
TYNDP2020_99,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/313"", ""tyndp2020_proj_id""=>""313"", ""tyndp2020_invest_id""=>""1473"", ""tyndp_status""=>""in_permitting""",12.172852,48.638354,13.080597,48.256684,2
-TYNDP2020_100,under_construction,80.0,2021,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/320"", ""tyndp2020_proj_id""=>""320"", ""tyndp2020_invest_id""=>""1558"", ""tyndp_status""=>""under_construction""",15.724182,46.386728,16.689606,46.633408,2
+TYNDP2020_100,under_construction,80.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/320"", ""tyndp2020_proj_id""=>""320"", ""tyndp2020_invest_id""=>""1558"", ""tyndp_status""=>""under_construction""",15.724182,46.386728,16.689606,46.633408,2
TYNDP2020_101,in_permitting,85.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""",10.06485,48.282279,9.73251299999999,47.623752,2
-TYNDP2020_102,in_permitting,11.0,2025,True,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/323"", ""tyndp2020_proj_id""=>""323"", ""tyndp2020_invest_id""=>""1478"", ""tyndp_status""=>""in_permitting""",13.717804,45.526555,13.791962,45.691792,2
-TYNDP2020_103,in_permitting,22.5,2023,True,110,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/324"", ""tyndp2020_proj_id""=>""324"", ""tyndp2020_invest_id""=>""1482"", ""tyndp_status""=>""in_permitting""",13.471985,45.801042,13.654633,45.967379,2
-TYNDP2020_104,planned_not_yet_permitting,40.0,2026,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/328"", ""tyndp2020_proj_id""=>""328"", ""tyndp2020_invest_id""=>""1630"", ""tyndp_status""=>""planned_not_yet_permitting""",6.590884,49.789617,6.140853,49.688695,2
-TYNDP2020_105,under_consideration,78.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/330"", ""tyndp2020_proj_id""=>""330"", ""tyndp2020_invest_id""=>""1498"", ""tyndp_status""=>""under_consideration""",17.440796,49.236431,18.287416,49.038186,2
-TYNDP2020_106,under_construction,139.0,2023,False,132,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/336"", ""tyndp2020_proj_id""=>""336"", ""tyndp2020_invest_id""=>""1556"", ""tyndp_status""=>""under_construction""",11.604309,47.081345,11.604309,47.081345,2
+TYNDP2020_104,planned_not_yet_permitting,40.0,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/328"", ""tyndp2020_proj_id""=>""328"", ""tyndp2020_invest_id""=>""1630"", ""tyndp_status""=>""planned_not_yet_permitting""",6.590884,49.789617,6.140853,49.688695,2
+TYNDP2020_105,under_consideration,78.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/330"", ""tyndp2020_proj_id""=>""330"", ""tyndp2020_invest_id""=>""1498"", ""tyndp_status""=>""under_consideration""",17.440796,49.236431,18.287416,49.038186,2
TYNDP2020_107,planned_not_yet_permitting,100.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/340"", ""tyndp2020_proj_id""=>""340"", ""tyndp2020_invest_id""=>""1519"", ""tyndp_status""=>""planned_not_yet_permitting""",3.429108,50.773813,4.35470599999999,50.529143,2
-TYNDP2020_108,under_consideration,60.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1538"", ""tyndp_status""=>""under_consideration""",20.9729,44.874362,20.378265,44.819838,2
-TYNDP2020_109,planned_not_yet_permitting,180.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1532"", ""tyndp_status""=>""planned_not_yet_permitting""",17.201843,44.772087,15.26017,44.886816,2
-TYNDP2020_110,planned_not_yet_permitting,68.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1533"", ""tyndp_status""=>""planned_not_yet_permitting""",15.26017,44.886816,14.558258,45.323186,2
+TYNDP2020_108,under_consideration,60.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1538"", ""tyndp_status""=>""under_consideration""",20.9729,44.874362,20.378265,44.819838,2
+TYNDP2020_109,planned_not_yet_permitting,180.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1532"", ""tyndp_status""=>""planned_not_yet_permitting""",17.201843,44.772087,15.26017,44.886816,2
+TYNDP2020_110,planned_not_yet_permitting,68.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1533"", ""tyndp_status""=>""planned_not_yet_permitting""",15.26017,44.886816,14.558258,45.323186,2
TYNDP2020_111,under_consideration,165.0,2040,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/344"", ""tyndp2020_proj_id""=>""344"", ""tyndp2020_invest_id""=>""1541"", ""tyndp_status""=>""under_consideration""",6.14410399999999,52.52207,5.671692,51.908696,2
-TYNDP2020_112,planned_not_yet_permitting,160.0,2025,False,275,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1639"", ""tyndp_status""=>""planned_not_yet_permitting""",-9.578832,54.120411,-8.268819,53.134319,2
-TYNDP2020_113,under_construction,161.0,2020,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""",20.725963,41.239159,19.966278,41.16108,2
-TYNDP2020_114,planned_not_yet_permitting,140.0,2027,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/375"", ""tyndp2020_proj_id""=>""375"", ""tyndp2020_invest_id""=>""1555"", ""tyndp_status""=>""planned_not_yet_permitting""",12.693329,46.798179,11.666107,45.792425,2
-TYNDP2020_115,under_consideration,38.8,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1593"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-3.05282599999999,43.265206,2
-TYNDP2020_116,under_consideration,69.12,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1595"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-2.24395799999999,43.047816,2
-TYNDP2020_117,under_consideration,57.0,2025,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1597"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-2.20687899999999,43.098977,2
-TYNDP2020_118,under_consideration,170.0,2030,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1042"", ""tyndp2020_proj_id""=>""1042"", ""tyndp2020_invest_id""=>""1694"", ""tyndp_status""=>""under_consideration""",21.295624,56.032924,23.506622,56.113404,2
-TYNDP2020_119,under_consideration,72.0,2030,False,330,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1042"", ""tyndp2020_proj_id""=>""1042"", ""tyndp2020_invest_id""=>""1695"", ""tyndp_status""=>""under_consideration""",24.307251,55.762668,23.506622,56.113404,2
+TYNDP2020_113,under_construction,161.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""",20.725963,41.239159,19.966278,41.16108,2
+TYNDP2020_115,under_consideration,38.8,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1593"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-3.05282599999999,43.265206,2
+TYNDP2020_116,under_consideration,69.12,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1595"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-2.24395799999999,43.047816,2
+TYNDP2020_117,under_consideration,57.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1597"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-2.20687899999999,43.098977,2
TYNDP2020_120,under_construction,14.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1685"", ""tyndp_status""=>""under_construction""",9.48532099999999,53.629168,9.48532099999999,53.629168,2
TYNDP2020_121,under_construction,60.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",10.299683,52.286643,9.988131,51.954234,2
TYNDP2020_122,under_construction,45.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",9.988131,51.954234,9.852428,51.649318,2
TYNDP2020_123,under_construction,105.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",9.852428,51.649318,9.621277,50.85971,2
-TYNDP2020_124,in_permitting,290.0,2028,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1688"", ""tyndp_status""=>""in_permitting""",26.842346,64.556701,27.766571,62.262171,2
-TYNDP2020_125,in_permitting,100.0,2029,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1689"", ""tyndp_status""=>""in_permitting""",25.692902,65.279688,26.842346,64.556701,2
-TYNDP2020_126,planned_not_yet_permitting,175.0,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1697"", ""tyndp_status""=>""planned_not_yet_permitting""",25.180664,62.262171,24.915619,60.90707,2
+TYNDP2020_124,in_permitting,290.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1688"", ""tyndp_status""=>""in_permitting""",26.842346,64.556701,27.766571,62.262171,2
+TYNDP2020_125,in_permitting,100.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1689"", ""tyndp_status""=>""in_permitting""",25.692902,65.279688,26.842346,64.556701,2
+TYNDP2020_126,planned_not_yet_permitting,175.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1697"", ""tyndp_status""=>""planned_not_yet_permitting""",25.180664,62.262171,24.915619,60.90707,2
TYNDP2020_127,under_consideration,31.0,2035,True,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1047"", ""tyndp2020_proj_id""=>""1047"", ""tyndp2020_invest_id""=>""1691"", ""tyndp_status""=>""under_consideration""",7.23587000000001,53.374317,6.86370800000001,53.418536,2
TYNDP2020_128,planned_not_yet_permitting,170.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1052"", ""tyndp2020_proj_id""=>""1052"", ""tyndp2020_invest_id""=>""1713"", ""tyndp_status""=>""planned_not_yet_permitting""",12.693329,46.798179,14.5912685597917,46.536256583087,2
TYNDP2020_129,planned_not_yet_permitting,105.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1054"", ""tyndp2020_proj_id""=>""1054"", ""tyndp2020_invest_id""=>""1715"", ""tyndp_status""=>""planned_not_yet_permitting""",10.897064,47.236355,11.964111,47.292271,2
-TYNDP2020_130,under_consideration,90.0,2035,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1723"", ""tyndp_status""=>""under_consideration""",16.78425,43.503952,17.436701,43.052743,2
-TYNDP2020_131,under_consideration,105.0,2035,False,220,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1724"", ""tyndp_status""=>""under_consideration""",17.436701,43.052743,18.23576,42.610562,2
-TYNDP2020_132,in_permitting,50.0,2027,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""645"", ""tyndp_status""=>""in_permitting""",15.996094,39.990799,16.020813,39.780047,2
-TYNDP2020_133,in_permitting,,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""",15.03067,40.66814,15.058136,40.941527,2
-TYNDP2020_134,in_permitting,,2030,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""",15.058136,40.941527,14.957886,41.143501,2
+TYNDP2020_130,under_consideration,90.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1723"", ""tyndp_status""=>""under_consideration""",16.78425,43.503952,17.436701,43.052743,2
+TYNDP2020_132,in_permitting,50.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""645"", ""tyndp_status""=>""in_permitting""",15.996094,39.990799,16.020813,39.780047,2
+TYNDP2020_133,in_permitting,,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""",15.03067,40.66814,15.058136,40.941527,2
+TYNDP2020_134,in_permitting,,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""",15.058136,40.941527,14.957886,41.143501,2
TYNDP2020_135,under_construction,40.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1063"", ""tyndp2020_proj_id""=>""1063"", ""tyndp2020_invest_id""=>""1731"", ""tyndp_status""=>""under_construction""",4.218787,51.424034,4.218787,51.424034,2
-TYNDP2020_136,under_consideration,50.6,2036,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1742"", ""tyndp_status""=>""under_consideration""",19.720459,46.020807,20.170898,46.29856,2
-TYNDP2020_137,under_consideration,80.0,2036,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1743"", ""tyndp_status""=>""under_consideration""",19.175262,45.75411,19.756165,45.527517,2
+TYNDP2020_136,under_consideration,50.6,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1742"", ""tyndp_status""=>""under_consideration""",19.720459,46.020807,20.170898,46.29856,2
+TYNDP2020_137,under_consideration,80.0,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1743"", ""tyndp_status""=>""under_consideration""",19.175262,45.75411,19.756165,45.527517,2
diff --git a/data/transmission_projects/tyndp2020/new_links.csv b/data/transmission_projects/tyndp2020/new_links.csv
index a0dfb7338..8c7376f68 100644
--- a/data/transmission_projects/tyndp2020/new_links.csv
+++ b/data/transmission_projects/tyndp2020/new_links.csv
@@ -1,51 +1,56 @@
,project_status,length,build_year,underground,p_nom,tags,x0,y0,x1,y1
-TYNDP2020_0,under_consideration,330.0,2033,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/234"", ""tyndp2020_proj_id""=>""234"", ""tyndp2020_invest_id""=>""1236"", ""tyndp_status""=>""under_consideration""",12.492828,55.609384,16.11557,54.132674
-TYNDP2020_1,in_permitting,700.0,2026,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""",9.24087500000001,53.906765,9.12211621382025,49.0939516665424
-TYNDP2020_2,in_permitting,558.0,2026,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""",9.327393,53.931837,10.081329,49.950336
-TYNDP2020_3,under_consideration,200.0,2035,True,800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/239"", ""tyndp2020_proj_id""=>""239"", ""tyndp2020_invest_id""=>""1241"", ""tyndp_status""=>""under_consideration""",17.166138,63.184727,21.901245,63.03068
-TYNDP2020_4,planned_not_yet_permitting,267.0,2030,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1692"", ""tyndp_status""=>""planned_not_yet_permitting""",8.00079299999999,53.55581,8.06808499999999,51.653815
-TYNDP2020_5,planned_not_yet_permitting,407.0,2030,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1693"", ""tyndp_status""=>""planned_not_yet_permitting""",9.13101199999999,54.20101,7.06420899999999,51.66063
-TYNDP2020_6,under_construction,445.0,2026,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/28"", ""tyndp2020_proj_id""=>""28"", ""tyndp2020_invest_id""=>""1503"", ""tyndp_status""=>""under_construction""",14.028168,42.409263,18.772888,42.315909
-TYNDP2020_7,in_permitting,240.0,2023,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/247"", ""tyndp2020_proj_id""=>""247"", ""tyndp2020_invest_id""=>""1381"", ""tyndp_status""=>""in_permitting""",-1.05331400000001,50.900435,1.11373900000001,49.712937
-TYNDP2020_8,under_consideration,133.0,2027,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1040"", ""tyndp2020_proj_id""=>""1040"", ""tyndp2020_invest_id""=>""1677"", ""tyndp_status""=>""under_consideration""",-5.80902099999999,54.726206,-4.880676,55.704677
-TYNDP2020_9,under_construction,623.0,2020,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/37"", ""tyndp2020_proj_id""=>""37"", ""tyndp2020_invest_id""=>""142"", ""tyndp_status""=>""under_construction""",6.82251000000001,58.660514,9.327393,53.931837
-TYNDP2020_10,in_permitting,340.0,2024,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/254"", ""tyndp2020_proj_id""=>""254"", ""tyndp2020_invest_id""=>""660"", ""tyndp_status""=>""in_permitting""",6.58493,51.245584,8.478699,49.283036
-TYNDP2020_11,under_consideration,230.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1049"", ""tyndp2020_proj_id""=>""1049"", ""tyndp2020_invest_id""=>""1706"", ""tyndp_status""=>""under_consideration""",0.763549999999995,51.403489,3.18054200000001,51.330612
-TYNDP2020_12,under_consideration,610.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1050"", ""tyndp2020_proj_id""=>""1050"", ""tyndp2020_invest_id""=>""1707"", ""tyndp_status""=>""under_consideration""",0.482024999999987,51.519853,7.23587000000001,53.374317
-TYNDP2020_13,under_consideration,640.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1051"", ""tyndp2020_proj_id""=>""1051"", ""tyndp2020_invest_id""=>""1708"", ""tyndp_status""=>""under_consideration""",1.30737299999999,52.593038,9.22851599999999,55.481188
-TYNDP2020_14,under_consideration,300.0,2030,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/267"", ""tyndp2020_proj_id""=>""267"", ""tyndp2020_invest_id""=>""1262"", ""tyndp_status""=>""under_consideration""",13.580475,55.86067,12.204437,53.760078
-TYNDP2020_15,planned_not_yet_permitting,230.0,2030,False,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1211"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.671123,41.952398,-0.575409000000004,43.345155
-TYNDP2020_16,under_consideration,200.0,2040,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1058"", ""tyndp2020_proj_id""=>""1058"", ""tyndp2020_invest_id""=>""1726"", ""tyndp_status""=>""under_consideration""",9.43585963014029,48.6383575221442,8.298798,47.148634
-TYNDP2020_17,in_permitting,500.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/107"", ""tyndp2020_proj_id""=>""107"", ""tyndp2020_invest_id""=>""810"", ""tyndp_status""=>""in_permitting""",-8.36471600000001,51.892597,-4.237976,48.518424
-TYNDP2020_18,under_construction,720.0,2021,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/110"", ""tyndp2020_proj_id""=>""110"", ""tyndp2020_invest_id""=>""424"", ""tyndp_status""=>""under_construction""",6.649475,59.461826,-1.572418,55.113728
-TYNDP2020_19,planned_not_yet_permitting,225.0,2029,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1206"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.645402,42.818157,-0.812988000000009,43.979969
-TYNDP2020_20,under_consideration,195.0,2036,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1740"", ""tyndp_status""=>""under_consideration""",18.227692,57.571097,21.100616,56.489036
-TYNDP2020_21,planned_not_yet_permitting,156.0,2022,True,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/285"", ""tyndp2020_proj_id""=>""285"", ""tyndp2020_invest_id""=>""1383"", ""tyndp_status""=>""planned_not_yet_permitting""",0.575409000000004,51.430896,2.16293300000001,50.923813
-TYNDP2020_22,in_permitting,540.0,2025,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/130"", ""tyndp2020_proj_id""=>""130"", ""tyndp2020_invest_id""=>""665"", ""tyndp_status""=>""in_permitting""",11.637268,52.27404,12.292328,48.659222
-TYNDP2020_23,in_permitting,300.0,2025,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/132"", ""tyndp2020_proj_id""=>""132"", ""tyndp2020_invest_id""=>""661"", ""tyndp_status""=>""in_permitting""",7.23587000000001,53.374317,6.58493,51.245584
-TYNDP2020_24,under_consideration,110.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1747"", ""tyndp_status""=>""under_consideration""",22.9422,40.662931,22.111359,41.50035
-TYNDP2020_25,under_consideration,170.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1748"", ""tyndp_status""=>""under_consideration""",22.111359,41.50035,23.03833,42.549034
-TYNDP2020_26,under_consideration,180.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1081"", ""tyndp2020_proj_id""=>""1081"", ""tyndp2020_invest_id""=>""1749"", ""tyndp_status""=>""under_consideration""",21.137695,39.279042,19.966278,41.16108
-TYNDP2020_27,under_consideration,665.0,2026,True,1800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""",-1.972046,43.32318,-1.847076,47.30531
-TYNDP2020_28,under_consideration,665.0,2026,True,1800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""",-1.847076,47.30531,-3.967438,50.489842
-TYNDP2020_29,in_permitting,100.0,2024,True,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""",8.63662699999999,40.644178,9.45098899999999,42.538916
-TYNDP2020_30,in_permitting,50.0,2024,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""",9.45098899999999,42.538916,10.671844,43.014689
-TYNDP2020_31,in_permitting,170.0,2028,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/150"", ""tyndp2020_proj_id""=>""150"", ""tyndp2020_invest_id""=>""616"", ""tyndp_status""=>""in_permitting""",12.516174,45.825928,14.615936,46.084662
-TYNDP2020_32,in_permitting,700.0,2024,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/309"", ""tyndp2020_proj_id""=>""309"", ""tyndp2020_invest_id""=>""1628"", ""tyndp_status""=>""in_permitting""",0.763549999999995,51.403489,8.00079299999999,53.55581
-TYNDP2020_33,in_permitting,400.0,2026,True,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1034"", ""tyndp_status""=>""in_permitting""",21.295624,56.032924,18.104095,54.714309
-TYNDP2020_34,under_consideration,328.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1505"", ""tyndp_status""=>""under_consideration""",8.66683999999999,55.481966,3.590555,55.343106
-TYNDP2020_35,under_consideration,360.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1506"", ""tyndp_status""=>""under_consideration""",4.05120799999999,51.942572,3.590555,55.343106
-TYNDP2020_36,under_construction,69.0,2021,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/172"", ""tyndp2020_proj_id""=>""172"", ""tyndp2020_invest_id""=>""1487"", ""tyndp_status""=>""under_construction""",0.95855700000001,51.059523,1.833344,50.902167
-TYNDP2020_37,in_permitting,165.0,2024,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/174"", ""tyndp2020_proj_id""=>""174"", ""tyndp2020_invest_id""=>""1014"", ""tyndp_status""=>""in_permitting""",9.449615,45.620761,9.253235,46.824496
-TYNDP2020_38,in_permitting,300.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/176"", ""tyndp2020_proj_id""=>""176"", ""tyndp2020_invest_id""=>""995"", ""tyndp_status""=>""in_permitting""",13.580475,55.86067,12.204437,53.760078
-TYNDP2020_39,under_consideration,170.0,2030,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/179"", ""tyndp2020_proj_id""=>""179"", ""tyndp2020_invest_id""=>""1016"", ""tyndp_status""=>""under_consideration""",11.969604,55.468735,12.271729,54.068253
-TYNDP2020_40,under_consideration,290.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1507"", ""tyndp_status""=>""under_consideration""",6.86370800000001,53.418536,3.590555,55.343106
-TYNDP2020_41,under_consideration,390.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1508"", ""tyndp_status""=>""under_consideration""",9.24087500000001,53.906765,3.590555,55.343106
-TYNDP2020_42,under_consideration,400.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1509"", ""tyndp_status""=>""under_consideration""",8.418274,53.182996,3.590555,55.343106
-TYNDP2020_43,under_consideration,490.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1511"", ""tyndp_status""=>""under_consideration""",10.458984,53.435719,3.590555,55.343106
-TYNDP2020_44,planned_not_yet_permitting,400.0,2030,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/338"", ""tyndp2020_proj_id""=>""338"", ""tyndp2020_invest_id""=>""1521"", ""tyndp_status""=>""planned_not_yet_permitting""",14.028168,42.409263,12.811432,43.915702
-TYNDP2020_45,planned_not_yet_permitting,400.0,2025,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""",9.18319700000001,39.374649,13.304443,38.159396
-TYNDP2020_46,planned_not_yet_permitting,500.0,2025,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""",9.18319700000001,39.374649,14.639282,40.688969
-TYNDP2020_47,under_consideration,150.0,2035,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/225"", ""tyndp2020_proj_id""=>""225"", ""tyndp2020_invest_id""=>""1107"", ""tyndp_status""=>""under_consideration""",5.35583499999999,50.557942,6.568451,50.403266
-TYNDP2020_48,planned_not_yet_permitting,211.0,2025,False,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1638"", ""tyndp_status""=>""planned_not_yet_permitting""",-3.474151,53.250084,-6.602175,53.348929
-TYNDP2020_49,planned_not_yet_permitting,255.0,2025,False,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1640"", ""tyndp_status""=>""planned_not_yet_permitting""",-6.602175,53.348929,-9.578832,54.120411
+TYNDP2020_0,under_consideration,330,2033,True,600,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/234"", ""tyndp2020_proj_id""=>""234"", ""tyndp2020_invest_id""=>""1236"", ""tyndp_status""=>""under_consideration""",12.492828,55.609384,16.11557,54.132674
+TYNDP2020_1,in_permitting,700,2026,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""",9.24087500000001,53.906765,9.12211621382025,49.0939516665424
+TYNDP2020_2,in_permitting,558,2026,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""",9.327393,53.931837,10.081329,49.950336
+TYNDP2020_3,under_consideration,200,2035,True,800,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/239"", ""tyndp2020_proj_id""=>""239"", ""tyndp2020_invest_id""=>""1241"", ""tyndp_status""=>""under_consideration""",17.166138,63.184727,21.901245,63.03068
+TYNDP2020_4,planned_not_yet_permitting,267,2030,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1692"", ""tyndp_status""=>""planned_not_yet_permitting""",8.00079299999999,53.55581,8.06808499999999,51.653815
+TYNDP2020_5,planned_not_yet_permitting,407,2030,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1693"", ""tyndp_status""=>""planned_not_yet_permitting""",9.13101199999999,54.20101,7.06420899999999,51.66063
+TYNDP2020_6,under_construction,445,2026,True,600,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/28"", ""tyndp2020_proj_id""=>""28"", ""tyndp2020_invest_id""=>""1503"", ""tyndp_status""=>""under_construction""",14.028168,42.409263,18.772888,42.315909
+TYNDP2020_7,in_permitting,240,2023,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/247"", ""tyndp2020_proj_id""=>""247"", ""tyndp2020_invest_id""=>""1381"", ""tyndp_status""=>""in_permitting""",-1.05331400000001,50.900435,1.11373900000001,49.712937
+TYNDP2020_8,under_consideration,133,2027,True,700,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1040"", ""tyndp2020_proj_id""=>""1040"", ""tyndp2020_invest_id""=>""1677"", ""tyndp_status""=>""under_consideration""",-5.80902099999999,54.726206,-4.880676,55.704677
+TYNDP2020_9,under_construction,623,2020,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/37"", ""tyndp2020_proj_id""=>""37"", ""tyndp2020_invest_id""=>""142"", ""tyndp_status""=>""under_construction""",6.82251000000001,58.660514,9.327393,53.931837
+TYNDP2020_10,in_permitting,340,2024,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/254"", ""tyndp2020_proj_id""=>""254"", ""tyndp2020_invest_id""=>""660"", ""tyndp_status""=>""in_permitting""",6.58493,51.245584,8.478699,49.283036
+TYNDP2020_11,under_consideration,230,2025,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1049"", ""tyndp2020_proj_id""=>""1049"", ""tyndp2020_invest_id""=>""1706"", ""tyndp_status""=>""under_consideration""",0.763549999999995,51.403489,3.18054200000001,51.330612
+TYNDP2020_12,under_consideration,610,2028,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1050"", ""tyndp2020_proj_id""=>""1050"", ""tyndp2020_invest_id""=>""1707"", ""tyndp_status""=>""under_consideration""",0.482024999999987,51.519853,7.23587000000001,53.374317
+TYNDP2020_13,under_consideration,640,2028,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1051"", ""tyndp2020_proj_id""=>""1051"", ""tyndp2020_invest_id""=>""1708"", ""tyndp_status""=>""under_consideration""",1.30737299999999,52.593038,9.22851599999999,55.481188
+TYNDP2020_14,under_consideration,300,2030,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/267"", ""tyndp2020_proj_id""=>""267"", ""tyndp2020_invest_id""=>""1262"", ""tyndp_status""=>""under_consideration""",13.580475,55.86067,12.204437,53.760078
+TYNDP2020_15,planned_not_yet_permitting,230,2030,False,1500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1211"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.671123,41.952398,-0.575409000000004,43.345155
+TYNDP2020_16,under_consideration,200,2040,False,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1058"", ""tyndp2020_proj_id""=>""1058"", ""tyndp2020_invest_id""=>""1726"", ""tyndp_status""=>""under_consideration""",9.43585963014029,48.6383575221442,8.298798,47.148634
+TYNDP2020_17,in_permitting,500,2026,True,700,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/107"", ""tyndp2020_proj_id""=>""107"", ""tyndp2020_invest_id""=>""810"", ""tyndp_status""=>""in_permitting""",-8.36471600000001,51.892597,-4.237976,48.518424
+TYNDP2020_18,under_construction,720,2021,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/110"", ""tyndp2020_proj_id""=>""110"", ""tyndp2020_invest_id""=>""424"", ""tyndp_status""=>""under_construction""",6.649475,59.461826,-1.572418,55.113728
+TYNDP2020_19,planned_not_yet_permitting,225,2029,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1206"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.645402,42.818157,-0.812988000000009,43.979969
+TYNDP2020_20,under_consideration,195,2036,True,500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1740"", ""tyndp_status""=>""under_consideration""",18.227692,57.571097,21.100616,56.489036
+TYNDP2020_21,planned_not_yet_permitting,156,2022,True,1500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/285"", ""tyndp2020_proj_id""=>""285"", ""tyndp2020_invest_id""=>""1383"", ""tyndp_status""=>""planned_not_yet_permitting""",0.575409000000004,51.430896,2.16293300000001,50.923813
+TYNDP2020_22,in_permitting,540,2025,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/130"", ""tyndp2020_proj_id""=>""130"", ""tyndp2020_invest_id""=>""665"", ""tyndp_status""=>""in_permitting""",11.637268,52.27404,12.292328,48.659222
+TYNDP2020_23,in_permitting,300,2025,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/132"", ""tyndp2020_proj_id""=>""132"", ""tyndp2020_invest_id""=>""661"", ""tyndp_status""=>""in_permitting""",7.23587000000001,53.374317,6.58493,51.245584
+TYNDP2020_24,under_consideration,110,2036,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1747"", ""tyndp_status""=>""under_consideration""",22.9422,40.662931,22.111359,41.50035
+TYNDP2020_25,under_consideration,170,2036,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1748"", ""tyndp_status""=>""under_consideration""",22.111359,41.50035,23.03833,42.549034
+TYNDP2020_26,under_consideration,180,2036,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1081"", ""tyndp2020_proj_id""=>""1081"", ""tyndp2020_invest_id""=>""1749"", ""tyndp_status""=>""under_consideration""",21.137695,39.279042,19.966278,41.16108
+TYNDP2020_27,under_consideration,665,2026,True,1800,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""",-1.972046,43.32318,-1.847076,47.30531
+TYNDP2020_28,under_consideration,665,2026,True,1800,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""",-1.847076,47.30531,-3.967438,50.489842
+TYNDP2020_29,in_permitting,100,2024,True,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""",8.63662699999999,40.644178,9.45098899999999,42.538916
+TYNDP2020_30,in_permitting,50,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""",9.45098899999999,42.538916,10.671844,43.014689
+TYNDP2020_31,in_permitting,170,2028,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/150"", ""tyndp2020_proj_id""=>""150"", ""tyndp2020_invest_id""=>""616"", ""tyndp_status""=>""in_permitting""",12.516174,45.825928,14.615936,46.084662
+TYNDP2020_32,in_permitting,700,2024,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/309"", ""tyndp2020_proj_id""=>""309"", ""tyndp2020_invest_id""=>""1628"", ""tyndp_status""=>""in_permitting""",0.763549999999995,51.403489,8.00079299999999,53.55581
+TYNDP2020_33,in_permitting,400,2026,True,750,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1034"", ""tyndp_status""=>""in_permitting""",21.295624,56.032924,18.104095,54.714309
+TYNDP2020_34,under_consideration,328,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1505"", ""tyndp_status""=>""under_consideration""",8.66683999999999,55.481966,3.590555,55.343106
+TYNDP2020_35,under_consideration,360,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1506"", ""tyndp_status""=>""under_consideration""",4.05120799999999,51.942572,3.590555,55.343106
+TYNDP2020_36,under_construction,69,2021,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/172"", ""tyndp2020_proj_id""=>""172"", ""tyndp2020_invest_id""=>""1487"", ""tyndp_status""=>""under_construction""",0.95855700000001,51.059523,1.833344,50.902167
+TYNDP2020_37,in_permitting,165,2024,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/174"", ""tyndp2020_proj_id""=>""174"", ""tyndp2020_invest_id""=>""1014"", ""tyndp_status""=>""in_permitting""",9.449615,45.620761,9.253235,46.824496
+TYNDP2020_38,in_permitting,300,2026,True,700,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/176"", ""tyndp2020_proj_id""=>""176"", ""tyndp2020_invest_id""=>""995"", ""tyndp_status""=>""in_permitting""",13.580475,55.86067,12.204437,53.760078
+TYNDP2020_39,under_consideration,170,2030,True,600,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/179"", ""tyndp2020_proj_id""=>""179"", ""tyndp2020_invest_id""=>""1016"", ""tyndp_status""=>""under_consideration""",11.969604,55.468735,12.271729,54.068253
+TYNDP2020_40,under_consideration,290,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1507"", ""tyndp_status""=>""under_consideration""",6.86370800000001,53.418536,3.590555,55.343106
+TYNDP2020_41,under_consideration,390,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1508"", ""tyndp_status""=>""under_consideration""",9.24087500000001,53.906765,3.590555,55.343106
+TYNDP2020_42,under_consideration,400,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1509"", ""tyndp_status""=>""under_consideration""",8.418274,53.182996,3.590555,55.343106
+TYNDP2020_43,under_consideration,490,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1511"", ""tyndp_status""=>""under_consideration""",10.458984,53.435719,3.590555,55.343106
+TYNDP2020_44,planned_not_yet_permitting,400,2030,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/338"", ""tyndp2020_proj_id""=>""338"", ""tyndp2020_invest_id""=>""1521"", ""tyndp_status""=>""planned_not_yet_permitting""",14.028168,42.409263,12.811432,43.915702
+TYNDP2020_45,planned_not_yet_permitting,400,2025,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""",9.18319700000001,39.374649,13.304443,38.159396
+TYNDP2020_46,planned_not_yet_permitting,500,2025,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""",9.18319700000001,39.374649,14.639282,40.688969
+TYNDP2020_47,under_consideration,150,2035,False,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/225"", ""tyndp2020_proj_id""=>""225"", ""tyndp2020_invest_id""=>""1107"", ""tyndp_status""=>""under_consideration""",5.35583499999999,50.557942,6.568451,50.403266
+TYNDP2020_48,planned_not_yet_permitting,211,2025,False,750,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1638"", ""tyndp_status""=>""planned_not_yet_permitting""",-3.474151,53.250084,-6.602175,53.348929
+TYNDP2020_49,planned_not_yet_permitting,255,2025,False,750,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1640"", ""tyndp_status""=>""planned_not_yet_permitting""",-6.602175,53.348929,-9.578832,54.120411
+T17,in_permitting,665,2024,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/190"", ""tyndp2020_proj_id""=>""190"", ""tyndp2020_invest_id""=>""1382"", ""tyndp_status""=>""in_permitting""",7.23331357825616,60.5160767478361,-1.815491,57.484833
+T25,under_consideration,195,2023,True,500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/286"", ""tyndp2020_proj_id""=>""286"", ""tyndp2020_invest_id""=>""1385"", ""tyndp_status""=>""planned_not_yet_permitting""",-6.96670499999999,52.27404,-4.850464,51.728729
+T12,in_permitting,220,2025,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/153"", ""tyndp2020_proj_id""=>""153"", ""tyndp2020_invest_id""=>""987"", ""tyndp_status""=>""in_permitting""",-1.47628799999999,49.460984,-3.357697,50.739062
+T13,under_construction,770,2023,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/167"", ""tyndp2020_proj_id""=>""167"", ""tyndp2020_invest_id""=>""998"", ""tyndp_status""=>""under_construction""",9.22851599999999,55.481188,-0.208961173685554,52.9600676434916
+T0,in_permitting,370,2027,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/16"", ""tyndp2020_proj_id""=>""16"", ""tyndp2020_invest_id""=>""38"", ""tyndp_status""=>""in_permitting""",-2.880286,43.349776,-0.341949000000001,45.030833
diff --git a/data/transmission_projects/tyndp2020/upgraded_lines.csv b/data/transmission_projects/tyndp2020/upgraded_lines.csv
index 2ac6ac757..e580a51aa 100644
--- a/data/transmission_projects/tyndp2020/upgraded_lines.csv
+++ b/data/transmission_projects/tyndp2020/upgraded_lines.csv
@@ -1,37 +1,27 @@
,project_status,length,build_year,underground,v_nom,tags,x0,y0,x1,y1,num_parallel
-14637,under_construction,205.0,2020,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""386"", ""tyndp_status""=>""under_construction""",25.166931,58.185909,24.271545,56.917998,2
-5735,under_construction,15.0,2020,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""1062"", ""tyndp_status""=>""under_construction""",24.271545,56.917998,24.264679,56.854228,2
-6031,in_permitting,32.0,2024,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1490"", ""tyndp_status""=>""in_permitting""",5.763702,52.619725,6.14410399999999,52.52207,2
-5123,in_permitting,35.0,2023,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1539"", ""tyndp_status""=>""in_permitting""",4.592285,51.916321,4.83398400000001,51.704055,2
-8591,in_permitting,80.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""382"", ""tyndp_status""=>""in_permitting""",25.132599,54.591958,25.415497,54.854478,2
-6377,under_consideration,76.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1004"", ""tyndp_status""=>""under_consideration""",24.689026,58.377959,25.19989,58.921664,2
-14651,in_permitting,133.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1010"", ""tyndp_status""=>""in_permitting""",26.559448,58.359953,25.473175,57.541628,2
-8435,planned_not_yet_permitting,41.5,2023,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1663"", ""tyndp_status""=>""planned_not_yet_permitting""",14.440155,53.16571,14.831543,53.330873,2
-12697,in_permitting,70.0,2021,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""353"", ""tyndp_status""=>""in_permitting""",14.440155,53.16571,15.038505,52.76751,2
-14734,under_construction,49.0,2022,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1284"", ""tyndp_status""=>""under_construction""",10.362854,46.809459,9.79568500000001,46.561693,2
-6348,under_construction,17.0,2020,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""",4.26544200000001,51.358062,4.307132,51.301299,2
-6347,in_permitting,4.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""",4.307132,51.301299,4.27917500000001,51.25504,2
-10813,in_permitting,10.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""",9.73251299999999,47.623752,9.80228979023356,47.6377345779987,2
-14499,under_consideration,2.0,2030,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1536"", ""tyndp_status""=>""under_consideration""",22.578278,44.679395,22.542572,44.612956,2
-9296,planned_not_yet_permitting,203.0,2030,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1534"", ""tyndp_status""=>""planned_not_yet_permitting""",15.26017,44.886816,16.500092,43.603267,2
-6044,in_permitting,80.0,2029,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/346"", ""tyndp2020_proj_id""=>""346"", ""tyndp2020_invest_id""=>""1544"", ""tyndp_status""=>""in_permitting""",4.218787,51.424034,5.061511,51.608344,2
-6087,under_construction,40.0,2023,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/348"", ""tyndp2020_proj_id""=>""348"", ""tyndp2020_invest_id""=>""1546"", ""tyndp_status""=>""under_construction""",6.86370800000001,53.418536,6.474759,53.213488,2
-14697,under_consideration,35.512,2036,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/376"", ""tyndp2020_proj_id""=>""376"", ""tyndp2020_invest_id""=>""1559"", ""tyndp_status""=>""under_consideration""",21.474152,40.839788,21.475525,41.045181,2
-14758,under_consideration,12.0,2030,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/377"", ""tyndp2020_proj_id""=>""377"", ""tyndp2020_invest_id""=>""1561"", ""tyndp_status""=>""under_consideration""",5.71701000000001,51.094036,5.89691199999999,51.140586,2
-8621,in_permitting,131.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""",-7.72338899999999,41.614416,-7.793621146853301,41.52102394053344,2
-6066,under_construction,175.0,2021,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/62"", ""tyndp2020_proj_id""=>""62"", ""tyndp2020_invest_id""=>""735"", ""tyndp_status""=>""under_construction""",24.588776,59.38778,24.689026,58.377959,2
-6036,in_permitting,50.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1540"", ""tyndp_status""=>""in_permitting""",5.46295200000001,51.422333,5.89691199999999,51.140586,2
-3715,in_permitting,94.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""257"", ""tyndp_status""=>""in_permitting""",26.003265,42.200038,24.483032,42.09007,2
-8260,in_permitting,74.0,2025,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.88777,45.30413,21.2815,45.7426,2
-8367,in_permitting,274.0,2025,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.2815,45.7426,21.409607,46.176978,2
-6040,in_permitting,168.0,2023,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1012"", ""tyndp_status""=>""in_permitting""",28.063202,59.310067,26.559448,58.359953,2
-10487,in_permitting,44.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1634"", ""tyndp_status""=>""in_permitting""",22.067413,55.076009,22.740326,55.10273,2
-8589,in_permitting,147.0,2025,False,330.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1659"", ""tyndp_status""=>""in_permitting""",21.295624,56.032924,22.067413,55.076009,2
-9503,in_permitting,51.0,2023,False,220.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/210"", ""tyndp2020_proj_id""=>""210"", ""tyndp2020_invest_id""=>""1380"", ""tyndp_status""=>""in_permitting""",13.022919,46.263443,12.947388,46.363041,2
-1693,in_permitting,,2026,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""",20.187378,44.664746,19.500315,43.953021,2
-12696,in_permitting,147.0,2022,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""1232"", ""tyndp_status""=>""in_permitting""",15.038505,52.76751,16.729431,52.32359,2
-3966,planned_not_yet_permitting,70.0,2029,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1207"", ""tyndp_status""=>""planned_not_yet_permitting""",-0.812988000000009,43.979969,-0.547943,44.563077,2
-14277,in_permitting,15.0,2025,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""",4.27917500000001,51.25504,4.177551,51.162122,2
-14594,under_consideration,70.0,2034,False,380.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/325"", ""tyndp2020_proj_id""=>""325"", ""tyndp2020_invest_id""=>""1483"", ""tyndp_status""=>""under_consideration""",14.5912685597917,46.536256583087,15.119934,46.263443,2
-12655,under_construction,161.0,2020,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""",21.475525,41.045181,20.725963,41.239159,2
-6355,under_consideration,90.0,2036,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1744"", ""tyndp_status""=>""under_consideration""",19.756165,45.527517,19.609222,45.021127,2
+6031,in_permitting,32.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1490"", ""tyndp_status""=>""in_permitting""",5.763702,52.619725,6.14410399999999,52.52207,2
+5123,in_permitting,35.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1539"", ""tyndp_status""=>""in_permitting""",4.592285,51.916321,4.83398400000001,51.704055,2
+8435,planned_not_yet_permitting,41.5,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1663"", ""tyndp_status""=>""planned_not_yet_permitting""",14.440155,53.16571,14.831543,53.330873,2
+12697,in_permitting,70.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""353"", ""tyndp_status""=>""in_permitting""",14.440155,53.16571,15.038505,52.76751,2
+14734,under_construction,49.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1284"", ""tyndp_status""=>""under_construction""",10.362854,46.809459,9.79568500000001,46.561693,2
+6348,under_construction,17.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""",4.26544200000001,51.358062,4.307132,51.301299,2
+6347,in_permitting,4.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""",4.307132,51.301299,4.27917500000001,51.25504,2
+10813,in_permitting,10.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""",9.73251299999999,47.623752,9.80228979023356,47.6377345779987,2
+14499,under_consideration,2.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1536"", ""tyndp_status""=>""under_consideration""",22.578278,44.679395,22.542572,44.612956,2
+9296,planned_not_yet_permitting,203.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1534"", ""tyndp_status""=>""planned_not_yet_permitting""",15.26017,44.886816,16.500092,43.603267,2
+6044,in_permitting,80.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/346"", ""tyndp2020_proj_id""=>""346"", ""tyndp2020_invest_id""=>""1544"", ""tyndp_status""=>""in_permitting""",4.218787,51.424034,5.061511,51.608344,2
+6087,under_construction,40.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/348"", ""tyndp2020_proj_id""=>""348"", ""tyndp2020_invest_id""=>""1546"", ""tyndp_status""=>""under_construction""",6.86370800000001,53.418536,6.474759,53.213488,2
+14697,under_consideration,35.512,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/376"", ""tyndp2020_proj_id""=>""376"", ""tyndp2020_invest_id""=>""1559"", ""tyndp_status""=>""under_consideration""",21.474152,40.839788,21.475525,41.045181,2
+14758,under_consideration,12.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/377"", ""tyndp2020_proj_id""=>""377"", ""tyndp2020_invest_id""=>""1561"", ""tyndp_status""=>""under_consideration""",5.71701000000001,51.094036,5.89691199999999,51.140586,2
+8621,in_permitting,131.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""",-7.72338899999999,41.614416,-7.793621146853301,41.52102394053344,2
+6036,in_permitting,50.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1540"", ""tyndp_status""=>""in_permitting""",5.46295200000001,51.422333,5.89691199999999,51.140586,2
+3715,in_permitting,94.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""257"", ""tyndp_status""=>""in_permitting""",26.003265,42.200038,24.483032,42.09007,2
+8260,in_permitting,74.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.88777,45.30413,21.2815,45.7426,2
+8367,in_permitting,274.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.2815,45.7426,21.409607,46.176978,2
+1693,in_permitting,,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""",20.187378,44.664746,19.500315,43.953021,2
+12696,in_permitting,147.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""1232"", ""tyndp_status""=>""in_permitting""",15.038505,52.76751,16.729431,52.32359,2
+3966,planned_not_yet_permitting,70.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1207"", ""tyndp_status""=>""planned_not_yet_permitting""",-0.812988000000009,43.979969,-0.547943,44.563077,2
+14277,in_permitting,15.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""",4.27917500000001,51.25504,4.177551,51.162122,2
+14594,under_consideration,70.0,2034,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/325"", ""tyndp2020_proj_id""=>""325"", ""tyndp2020_invest_id""=>""1483"", ""tyndp_status""=>""under_consideration""",14.5912685597917,46.536256583087,15.119934,46.263443,2
+12655,under_construction,161.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""",21.475525,41.045181,20.725963,41.239159,2
+6355,under_consideration,90.0,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1744"", ""tyndp_status""=>""under_consideration""",19.756165,45.527517,19.609222,45.021127,2
diff --git a/data/transmission_projects/tyndp2020/upgraded_links.csv b/data/transmission_projects/tyndp2020/upgraded_links.csv
index 5fe56694d..6c544d50e 100644
--- a/data/transmission_projects/tyndp2020/upgraded_links.csv
+++ b/data/transmission_projects/tyndp2020/upgraded_links.csv
@@ -1,8 +1,3 @@
,project_status,length,build_year,underground,p_nom,tags,x0,y0,x1,y1
-T0,in_permitting,370.0,2027,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/16"", ""tyndp2020_proj_id""=>""16"", ""tyndp2020_invest_id""=>""38"", ""tyndp_status""=>""in_permitting""",-2.880286,43.349776,-0.341949000000001,45.030833
-14801,under_construction,90.0,2020,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/92"", ""tyndp2020_proj_id""=>""92"", ""tyndp2020_invest_id""=>""146"", ""tyndp_status""=>""under_construction""",6.46545399999999,50.831096,5.688171,50.729502
-T17,in_permitting,665.0,2024,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/190"", ""tyndp2020_proj_id""=>""190"", ""tyndp2020_invest_id""=>""1382"", ""tyndp_status""=>""in_permitting""",7.23331357825616,60.5160767478361,-1.815491,57.484833
-T25,planned_not_yet_permitting,195.0,2023,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/286"", ""tyndp2020_proj_id""=>""286"", ""tyndp2020_invest_id""=>""1385"", ""tyndp_status""=>""planned_not_yet_permitting""",-6.96670499999999,52.27404,-4.850464,51.728729
-T12,in_permitting,220.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/153"", ""tyndp2020_proj_id""=>""153"", ""tyndp2020_invest_id""=>""987"", ""tyndp_status""=>""in_permitting""",-1.47628799999999,49.460984,-3.357697,50.739062
-T13,under_construction,770.0,2023,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/167"", ""tyndp2020_proj_id""=>""167"", ""tyndp2020_invest_id""=>""998"", ""tyndp_status""=>""under_construction""",9.22851599999999,55.481188,-0.208961173685554,52.9600676434916
-5635,under_consideration,125.0,2036,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1741"", ""tyndp_status""=>""under_consideration""",16.659393,57.43682,18.227692,57.571097
+14801,under_construction,90,2020,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/92"", ""tyndp2020_proj_id""=>""92"", ""tyndp2020_invest_id""=>""146"", ""tyndp_status""=>""under_construction""",6.46545399999999,50.831096,5.688171,50.729502
+5635,under_consideration,125,2036,True,700,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1741"", ""tyndp_status""=>""under_consideration""",16.659393,57.43682,18.227692,57.571097
diff --git a/scripts/add_transmission_projects.py b/scripts/add_transmission_projects.py
index 60b65d5ed..350996398 100644
--- a/scripts/add_transmission_projects.py
+++ b/scripts/add_transmission_projects.py
@@ -502,6 +502,7 @@ def fill_length_from_geometry(line, line_factor=1.2):
status=transmission_projects["status"],
)
if not new_lines_df.empty:
+ line_type = "Al/St 240/40 4-bundle 380.0"
# Add new line type for new lines
new_lines_df.loc[:, "type"] = "Al/St 240/40 4-bundle 380.0"
new_lines_df.loc[:, "num_parallel"] = 2
@@ -521,6 +522,14 @@ def fill_length_from_geometry(line, line_factor=1.2):
),
axis=1,
)
+ # get s_nom from line type
+ s_nom = (
+ np.sqrt(3)
+ * n.line_types.loc[line_type].i_nom
+ * new_lines_df["v_nom"]
+ * new_lines_df["num_parallel"]
+ )
+ new_lines_df["s_nom"] = s_nom
if not new_links_df.empty:
# Add carrier types of lines and links
new_links_df.loc[:, "carrier"] = "DC"
From c9291d644d71f3c5243fdb2406dc8162017b8bb3 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Thu, 1 Aug 2024 16:33:03 +0200
Subject: [PATCH 10/28] remove duplicate lines which were already in gridkit
---
data/transmission_projects/tyndp2020/new_links.csv | 1 -
data/transmission_projects/tyndp2020/upgraded_links.csv | 1 -
2 files changed, 2 deletions(-)
diff --git a/data/transmission_projects/tyndp2020/new_links.csv b/data/transmission_projects/tyndp2020/new_links.csv
index 8c7376f68..dfe8b80e5 100644
--- a/data/transmission_projects/tyndp2020/new_links.csv
+++ b/data/transmission_projects/tyndp2020/new_links.csv
@@ -17,7 +17,6 @@ TYNDP2020_14,under_consideration,300,2030,True,1400,"""url""=>""https://tyndp202
TYNDP2020_15,planned_not_yet_permitting,230,2030,False,1500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1211"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.671123,41.952398,-0.575409000000004,43.345155
TYNDP2020_16,under_consideration,200,2040,False,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1058"", ""tyndp2020_proj_id""=>""1058"", ""tyndp2020_invest_id""=>""1726"", ""tyndp_status""=>""under_consideration""",9.43585963014029,48.6383575221442,8.298798,47.148634
TYNDP2020_17,in_permitting,500,2026,True,700,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/107"", ""tyndp2020_proj_id""=>""107"", ""tyndp2020_invest_id""=>""810"", ""tyndp_status""=>""in_permitting""",-8.36471600000001,51.892597,-4.237976,48.518424
-TYNDP2020_18,under_construction,720,2021,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/110"", ""tyndp2020_proj_id""=>""110"", ""tyndp2020_invest_id""=>""424"", ""tyndp_status""=>""under_construction""",6.649475,59.461826,-1.572418,55.113728
TYNDP2020_19,planned_not_yet_permitting,225,2029,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1206"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.645402,42.818157,-0.812988000000009,43.979969
TYNDP2020_20,under_consideration,195,2036,True,500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1740"", ""tyndp_status""=>""under_consideration""",18.227692,57.571097,21.100616,56.489036
TYNDP2020_21,planned_not_yet_permitting,156,2022,True,1500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/285"", ""tyndp2020_proj_id""=>""285"", ""tyndp2020_invest_id""=>""1383"", ""tyndp_status""=>""planned_not_yet_permitting""",0.575409000000004,51.430896,2.16293300000001,50.923813
diff --git a/data/transmission_projects/tyndp2020/upgraded_links.csv b/data/transmission_projects/tyndp2020/upgraded_links.csv
index 6c544d50e..4da559ed3 100644
--- a/data/transmission_projects/tyndp2020/upgraded_links.csv
+++ b/data/transmission_projects/tyndp2020/upgraded_links.csv
@@ -1,3 +1,2 @@
,project_status,length,build_year,underground,p_nom,tags,x0,y0,x1,y1
-14801,under_construction,90,2020,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/92"", ""tyndp2020_proj_id""=>""92"", ""tyndp2020_invest_id""=>""146"", ""tyndp_status""=>""under_construction""",6.46545399999999,50.831096,5.688171,50.729502
5635,under_consideration,125,2036,True,700,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1741"", ""tyndp_status""=>""under_consideration""",16.659393,57.43682,18.227692,57.571097
From 277388d770c8662124b0e1b2d4b38ab77faaee0b Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Thu, 1 Aug 2024 16:35:13 +0200
Subject: [PATCH 11/28] allow to connect ac lines only to ac buses
---
scripts/add_transmission_projects.py | 38 ++++++++++++++++++----------
1 file changed, 25 insertions(+), 13 deletions(-)
diff --git a/scripts/add_transmission_projects.py b/scripts/add_transmission_projects.py
index 350996398..c7c4c1651 100644
--- a/scripts/add_transmission_projects.py
+++ b/scripts/add_transmission_projects.py
@@ -95,7 +95,12 @@ def _find_country_for_bus(bus, shapes):
def _connect_new_lines(
- lines, n, new_buses_df, offshore_shapes=None, distance_upper_bound=np.inf
+ lines,
+ n,
+ new_buses_df,
+ offshore_shapes=None,
+ distance_upper_bound=np.inf,
+ bus_carrier="AC",
):
"""
Find the closest existing bus to the port of each line.
@@ -104,7 +109,9 @@ def _connect_new_lines(
inside an offshore region, a new bus is created. and the line is
connected to it.
"""
- bus_tree = spatial.KDTree(n.buses[["x", "y"]])
+ bus_carrier = np.atleast_1d(bus_carrier)
+ buses = n.buses.query("carrier in @bus_carrier").copy()
+ bus_tree = spatial.KDTree(buses[["x", "y"]])
for port in [0, 1]:
lines_port = lines.geometry.apply(
@@ -114,9 +121,8 @@ def _connect_new_lines(
)
distances, indices = bus_tree.query(lines_port)
# Series of lines with closest bus in the existing network and whether they match the distance criterion
- lines_port["neighbor"] = n.buses.iloc[indices].index
+ lines_port["neighbor"] = buses.iloc[indices].index
lines_port["match_distance"] = distances < distance_upper_bound
-
# For buses which are not close to any existing bus, only add a new bus if the line is going offshore (e.g. North Sea Wind Power Hub)
if not lines_port.match_distance.all() and offshore_shapes.union_all():
potential_new_buses = lines_port[~lines_port.match_distance]
@@ -234,7 +240,7 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
found_i = np.arange(len(querylines))[found_b] % len(new_lines)
# create a DataFrame with the distances, new line and its closest existing line
line_map = pd.DataFrame(
- dict(D=dist[found_b], i=lines.index[ind[found_b] % len(lines)]),
+ dict(D=dist[found_b], existing_line=lines.index[ind[found_b] % len(lines)]),
index=new_lines.index[found_i].rename("new_lines"),
)
if type == "new":
@@ -242,7 +248,7 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
found = line_map.index
logger.warning(
"Found new lines similar to existing lines:\n"
- + str(line_map["i"].to_dict())
+ + str(line_map["existing_line"].to_dict())
+ "\n Lines are assumed to be duplicated and will be ignored."
)
elif type == "upgraded":
@@ -256,11 +262,11 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
# only keep the closer line of the new line pair (since lines are checked in both directions)
line_map = line_map.sort_values(by="D")[
lambda ds: ~ds.index.duplicated(keep="first")
- ].sort_index()["i"]
+ ].sort_index()["existing_line"]
return line_map
-def _adjust_decommissing(upgraded_lines, line_map):
+def _adjust_decommissioning(upgraded_lines, line_map):
"""
Adjust the decommissioning year of the existing lines to the built year of
the upgraded lines.
@@ -384,8 +390,12 @@ def _add_projects(
if isinstance(status, dict):
status = status[plan]
lines = lines.loc[lines.project_status.isin(status)]
+ if lines.empty:
+ continue
if "new_lines" in key:
- new_lines, new_buses_df = _connect_new_lines(lines, n, new_buses_df)
+ new_lines, new_buses_df = _connect_new_lines(
+ lines, n, new_buses_df, bus_carrier="AC"
+ )
duplicate_lines = _find_closest_lines(
n.lines, new_lines, distance_upper_bound=0.10, type="new"
)
@@ -407,6 +417,7 @@ def _add_projects(
new_buses_df,
offshore_shapes=offshore_shapes,
distance_upper_bound=0.4,
+ bus_carrier=["AC", "DC"],
)
duplicate_links = _find_closest_lines(
n.links, new_links, distance_upper_bound=0.10, type="new"
@@ -428,10 +439,10 @@ def _add_projects(
n.lines, lines, distance_upper_bound=0.30, type="upgraded"
)
upgraded_lines = lines.loc[line_map.index]
+ lines_to_adjust = _adjust_decommissioning(upgraded_lines, line_map)
+ adjust_lines_df = pd.concat([adjust_lines_df, lines_to_adjust])
upgraded_lines = _get_upgraded_lines("Line", n, upgraded_lines, line_map)
new_lines_df = pd.concat([new_lines_df, upgraded_lines])
- lines_to_adjust = _adjust_decommissing(upgraded_lines, line_map)
- adjust_lines_df = pd.concat([adjust_lines_df, lines_to_adjust])
elif "upgraded_links" in key:
line_map = _find_closest_lines(
n.links.query("carrier=='DC'"),
@@ -440,10 +451,11 @@ def _add_projects(
type="upgraded",
)
upgraded_links = lines.loc[line_map.index]
+ links_to_adjust = _adjust_decommissioning(upgraded_links, line_map)
+ adjust_links_df = pd.concat([adjust_links_df, links_to_adjust])
upgraded_links = _get_upgraded_lines("Link", n, upgraded_links, line_map)
new_links_df = pd.concat([new_links_df, upgraded_links])
- links_to_adjust = _adjust_decommissing(upgraded_links, line_map)
- adjust_links_df = pd.concat([adjust_links_df, links_to_adjust])
+ _set_underwater_fraction(new_links_df, offshore_shapes)
else:
logger.warning(f"Unknown project type {key}")
continue
From 6f76e9b7829d1bbc7df9fe7db2a8ef72bab931cf Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Thu, 1 Aug 2024 18:06:09 +0200
Subject: [PATCH 12/28] add manual links csv (adjusted links_tyndp.csv) and
update default config
---
config/config.default.yaml | 8 +++++---
data/transmission_projects/manual/new_links.csv | 16 ++++++++++++++++
2 files changed, 21 insertions(+), 3 deletions(-)
create mode 100644 data/transmission_projects/manual/new_links.csv
diff --git a/config/config.default.yaml b/config/config.default.yaml
index 016e66ad7..ab23599b0 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -295,21 +295,23 @@ links:
p_max_pu: 1.0
p_nom_max: .inf
max_extension: 30000 #MW
- include_tyndp: true #remove when PR TYNDP data is included
+ include_tyndp: false #remove when PR TYNDP data is included
under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transmission_projects
transmission_projects:
enable: true
include:
- #tyndp2020: true # For later, when other TYNDP projects are combined with new version
+ tyndp2020: true
nep: true
- status:
+ manual: true
+ status: # status to include as list or as dict with name of project and status to include
- confirmed
- in_permitting
- under_construction
#- under_consideration
new_link_capacity: keep #keep or zero
+
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transformers
transformers:
x: 0.1
diff --git a/data/transmission_projects/manual/new_links.csv b/data/transmission_projects/manual/new_links.csv
new file mode 100644
index 000000000..e7834b0d8
--- /dev/null
+++ b/data/transmission_projects/manual/new_links.csv
@@ -0,0 +1,16 @@
+,bus0,bus1,length,p_nom,project_status,tags,x0,y0,x1,y1
+TYNDP2022_286,Waterford (IE),Pembroke (UK),180,500,under_construction,"{name:Greenlink,url:{name:TYNDP2022_286,url:https://tyndp2022-project-platform.azurewebsites.net/projectsheets/transmission/286}}",-6.987,52.26,-4.986,51.686
+TYNDP2022_107,Aghada (IE),La Martyre (FR),572,700,under_consideration,"{name:Celtic Interconnector,url:{name:TYNDP2022_107,url:https://tyndp2022-project-platform.azurewebsites.net/projectsheets/transmission/107}}",-8.16642,51.91413,-4.184,48.459
+TYNDP2024_1134,Bordeaux (FR),Nantes (FR),312,640,under_consideration,"{name:GiLA,url:{name:TYNDP2024_1134,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",-1.209,46.901,-0.576,44.96
+TYNDP2024_1157,Milan (IT),Viterbo (IT),500,2000,in_permitting,"{name:HG North Tyrrhenian Corridor,url:{name:TYNDP2024_1157,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",9.409,45.553,12.015,42.244
+TYNDP2024_1166,Ferrara (IT),Foggia (IT),582,2000,in_permitting,"{name:HG Adriatic Corridor,url:{name:TYNDP2024_1166,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",11.661,44.855,15.55,41.513
+TYNDP2024_1169,Fioumesanto (IT),Montalto (IT),390,1000,in_permitting,"{name:SAPEI 2,url:{name:TYNDP2024_1169,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",8.283,40.79,11.602,42.331
+TYNDP2024_1168,Rossano (IT),Latina (IT),496,2000,in_permitting,"{name:HG Ionian-Tyrrhenian Corridor,url:{name:TYNDP2024_1168,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",16.629,39.568,12.779,41.43
+TYNDP2024_1168_1,Rossano (IT),Catania (IT),330,2000,in_permitting,"{name:HG Ionian-Tyrrhenian Corridor 2,url:{name:TYNDP2024_1168_1,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",16.629,39.568,15.049,37.408
+TYNDP2024_1192,Fetteresso (UK),Emden (DE),800,2000,under_consideration,"{name:Germany-UK Hybrid Interconnector,url:{name:TYNDP2024_1192,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",-2.383,56.991,7.207,53.376
+TYNDP2024_1197,Hornsea (UK),Moerdijk (NL),460,1200,under_consideration,"{name:NU-Link Interconnector,url:{name:TYNDP2024_1197,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",-0.261,53.655,4.586,51.661
+TYNDP2024_1210,La Farga (ES),La Spezia (IT),725,2091,under_consideration,"{name:APOLLO-LINK,url:{name:TYNDP2024_1210,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",2.883,42.062,9.884,44.107
+TYNDP2024_1211,Lubmin (DE),Lihula (EE),960,2000,under_consideration,"{name:Baltic WindConnector (BWC),url:{name:TYNDP2024_1211,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",13.686,54.139,23.818,58.675
+TYNDP2024_1216,Constanta (RO),Albertirsa (HU),930,2500,under_consideration,"{name:High-Voltage Direct Current Interconnector Project Romania-Hungary,url:{name:TYNDP2024_1216,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",28.588,44.201,19.584,47.224
+TYNDP2024_1229,Ovelgönne (DE),Marxheim (DE),433,4000,in_permitting,"{name:Rhine-Main-Link,url:{name:TYNDP2024_1229,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",8.379,53.315,8.435,50.078
+TYNDP2024_1231,Arachthos (GR),Ottenhofen (DE),600,3000,under_consideration,"{name:Green Aegean Interconnector,url:{name:TYNDP2024_1231,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",20.967,39.185,11.868,48.207
From 304420f5b84f69339773f45d8862c0b3d4f27c68 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Fri, 2 Aug 2024 09:18:58 +0200
Subject: [PATCH 13/28] add realease note
---
doc/release_notes.rst | 1 +
1 file changed, 1 insertion(+)
diff --git a/doc/release_notes.rst b/doc/release_notes.rst
index 383287a64..393d2ec2c 100644
--- a/doc/release_notes.rst
+++ b/doc/release_notes.rst
@@ -9,6 +9,7 @@ Release Notes
Upcoming Release
================
+* More modular and flexible handling of transmission projects. One can now add new transmission projects in a subfolder of `data/transmission projects` similar to the files in the template folder. After adding the new files and updating the config, transmission projects will be included if they are not duplicates of existing lines or other projects.
* Renamed the carrier of batteries in BEVs from `battery storage` to `EV battery` and the corresponding bus carrier from `Li ion` to `EV battery`. This is to avoid confusion with stationary battery storage.
From 99a7eaafd2544b181d3d8242bb3031460eaf534e Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Fri, 2 Aug 2024 09:23:44 +0200
Subject: [PATCH 14/28] remove links_tyndp.csv file, references in
build_elec.smk and function in base_network.py to add them
---
config/config.default.yaml | 2 -
data/links_tyndp.csv | 41 -------------
rules/build_electricity.smk | 1 -
scripts/base_network.py | 112 ------------------------------------
4 files changed, 156 deletions(-)
delete mode 100644 data/links_tyndp.csv
diff --git a/config/config.default.yaml b/config/config.default.yaml
index ab23599b0..37a6f2df7 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -295,8 +295,6 @@ links:
p_max_pu: 1.0
p_nom_max: .inf
max_extension: 30000 #MW
- include_tyndp: false #remove when PR TYNDP data is included
- under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transmission_projects
transmission_projects:
diff --git a/data/links_tyndp.csv b/data/links_tyndp.csv
deleted file mode 100644
index 43030be57..000000000
--- a/data/links_tyndp.csv
+++ /dev/null
@@ -1,41 +0,0 @@
-Name,Converterstation 1,Converterstation 2,Length (given) (km),Length (distance*1.2) (km),Power (MW),status,replaces,Ref,x1,y1,x2,y2
-Biscay Gulf,Gatica (ES),Cubnezais (FR),370,,2200,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/16,-2.867,43.367,-0.408943,45.074191
-Italy-France,Piossasco (IT),Grand Ile (FR),190,,1000,under construction,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/21,7.468,44.9898,6.045,45.472
-IFA2,Tourbe (FR),Chilling (GB),,247.2,1000,under construction,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/25,-0.172042,49.083593,-1.277269,50.839338
-Italy-Montenegro,Villanova (IT),Latsva (MT),445,,1200,under construction,Link.14539,https://tyndp.entsoe.eu/tyndp2018/projects/projects/28,14.125,42.3947222222222,18.7947222222222,42.3175
-NordLink,Tonstad (NO),Wilster (DE),514,,1400,under construction,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/37,6.716948,58.662631,9.373979,53.922479
-COBRA cable,Endrup (DK),Eemshaven (NL),325,,700,under construction,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/71,8.718392,55.523115,6.835494,53.438589
-Thames Estuary Cluster (NEMO-Link),Richborough (GB),Gezelle (BE),140,,1000,under construction,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/74,1.324854,51.295891,3.23043,51.24902
-Anglo-Scottish -1,Hunterston (UK),Deeside (UK),422,,2400,built,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/77,-4.898329,55.723331,-3.032972,53.199735
-ALEGrO,Lixhe (BE),Oberzier (DE),100,,1000,built,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/92,5.67933,50.7567965,6.474704,50.867532
-North Sea Link,Kvilldal (NO),Blythe (GB),720,,1400,under construction,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/110,6.637527,59.515096,-1.510277,55.126957
-HVDC SuedOstLink,Wolmirstedt (DE),Isar (DE),,557,2000,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/130,11.629014,52.252137,12.091596,48.080837
-HVDC Line A-North,Emden East (DE),Osterath (DE),,284,2000,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/132,7.206009,53.359403,6.619451,51.272935
-France-Alderney-Britain,Exeter (UK),Menuel (FR),220,,1400,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/153,-3.533899,50.718412,-1.469216,49.509594
-Viking DKW-GB,Bicker Fen (GB),Revsing (DK),,807,1400,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/167,-0.203587,52.93979,9.178363,55.509166
-ElecLink,Sellindge (UK),Mandarins (FR),,72,1000,under construction,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/172,0.975555555555556,51.1058333333333,1.78472222222222,50.9030555555556
-Greenconnector,Verderio (IT),Sils i.D. (CH),150,,1000,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/174,9.439781,45.668539,9.76569,46.432156
-Hansa PowerBridge I,Hurva (SE),Guestrow (DE),,283,700,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/176,13.6022222222222,55.8330555555556,12.189538,53.803155
-NorthConnect,Simadalen (NO),Peterhead (UK),650,,1400,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/190,7.16027,60.500527,-1.784066,57.508123
-HVDC SuedLink,Wilster (DE),Großgartach (DE),,637,4000,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/235,9.373979,53.922479,9.117193,49.145157
-AQUIND Interconnector,Lovedean (GB),Barnabos (FR),254,,2000,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/247,-1.020512,50.908244,0.991736,49.656631
-HVDC Ultranet,Osterath (DE),Philippsburg (DE),,314,600,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/254,6.619451,51.272935,8.458036,49.235253
-Gridlink,Kingsnorth (UK),Warande (FR),160,,1400,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/285,0.596111111111111,51.41972,2.376776,51.034368
-NeuConnect,Grain (UK),Fedderwarden (DE),680,,1400,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/309,0.716666666666667,51.44,8.046524,53.562763
-NordBalt,Klaipeda (LT),Nybro (SE),450,,700,built,,https://en.wikipedia.org/wiki/NordBalt,21.256667,55.681667,15.854167,56.767778
-Estlink 1,Harku (EE),Espoo (FI),105,,350,built,,https://en.wikipedia.org/wiki/Estlink,24.560278,59.384722,24.551667,60.203889
-Greenlink,Waterford (IE),Pembroke (UK),,180,500,under construction,,https://tyndp2022-project-platform.azurewebsites.net/projectsheets/transmission/286,-6.987,52.260,-4.986,51.686
-Celtic Interconnector,Aghada (IE),La Martyre (FR),,572,700,under consideration,,https://tyndp2022-project-platform.azurewebsites.net/projectsheets/transmission/107,-8.16642,51.91413,-4.184,48.459
-GiLA,Bordeaux (FR),Nantes (FR),,312,640,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,-1.209,46.901,-0.576,44.960
-HG North Tyrrhenian Corridor,Milan (IT),Viterbo (IT),,500,2000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,9.409,45.553,12.015,42.244
-HG Adriatic Corridor,Ferrara (IT),Foggia (IT),,582,2000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,11.661,44.855,15.550,41.513
-SAPEI 2,Fioumesanto (IT),Montalto (IT),,390,1000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,8.283,40.790,11.602,42.331
-HG Ionian-Tyrrhenian Corridor,Rossano (IT),Latina (IT),,496,2000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,16.629,39.568,12.779,41.430
-HG Ionian-Tyrrhenian Corridor 2,Rossano (IT),Catania (IT),,330,2000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,16.629,39.568,15.049,37.408
-Germany-UK Hybrid Interconnector,Fetteresso (UK),Emden (DE),800,,2000,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,-2.383,56.991,7.207,53.376
-NU-Link Interconnector,Hornsea (UK),Moerdijk (NL),,460,1200,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,-0.261,53.655,4.586,51.661
-APOLLO-LINK,La Farga (ES),La Spezia (IT),,725,2091,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,2.883,42.062,9.884,44.107
-Baltic WindConnector (BWC),Lubmin (DE),Lihula (EE),,960,2000,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,13.686,54.139,23.818,58.675
-High-Voltage Direct Current Interconnector Project Romania-Hungary,Constanta (RO),Albertirsa (HU),,930,2500,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,28.588,44.201,19.584,47.224
-Rhine-Main-Link,Ovelgönne (DE),Marxheim (DE),,433,4000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,8.379,53.315,8.435,50.078
-Green Aegean Interconnector,Arachthos (GR),Ottenhofen (DE),,600,3000,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,20.967,39.185,11.868,48.207
diff --git a/rules/build_electricity.smk b/rules/build_electricity.smk
index 2f8b17a89..28048308e 100644
--- a/rules/build_electricity.smk
+++ b/rules/build_electricity.smk
@@ -80,7 +80,6 @@ rule base_network:
eg_transformers="data/entsoegridkit/transformers.csv",
parameter_corrections="data/parameter_corrections.yaml",
links_p_nom="data/links_p_nom.csv",
- links_tyndp="data/links_tyndp.csv",
country_shapes=resources("country_shapes.geojson"),
offshore_shapes=resources("offshore_shapes.geojson"),
europe_shape=resources("europe_shape.geojson"),
diff --git a/scripts/base_network.py b/scripts/base_network.py
index 118e7dba3..4247a5245 100644
--- a/scripts/base_network.py
+++ b/scripts/base_network.py
@@ -25,7 +25,6 @@
links:
p_max_pu:
under_construction:
- include_tyndp:
transformers:
x:
@@ -43,7 +42,6 @@
- ``data/entsoegridkit``: Extract from the geographical vector data of the online `ENTSO-E Interactive Map `_ by the `GridKit `_ toolkit dating back to March 2022.
- ``data/parameter_corrections.yaml``: Corrections for ``data/entsoegridkit``
- ``data/links_p_nom.csv``: confer :ref:`links`
-- ``data/links_tyndp.csv``: List of projects in the `TYNDP 2018 `_ that are at least *in permitting* with fields for start- and endpoint (names and coordinates), length, capacity, construction status, and project reference ID.
- ``resources/country_shapes.geojson``: confer :ref:`shapes`
- ``resources/offshore_shapes.geojson``: confer :ref:`shapes`
- ``resources/europe_shape.geojson``: confer :ref:`shapes`
@@ -222,112 +220,6 @@ def _load_links_from_eg(buses, eg_links):
return links
-def _add_links_from_tyndp(buses, links, links_tyndp, europe_shape):
- links_tyndp = pd.read_csv(links_tyndp)
-
- # remove all links from list which lie outside all of the desired countries
- europe_shape = gpd.read_file(europe_shape).loc[0, "geometry"]
- europe_shape_prepped = shapely.prepared.prep(europe_shape)
- x1y1_in_europe_b = links_tyndp[["x1", "y1"]].apply(
- lambda p: europe_shape_prepped.contains(Point(p)), axis=1
- )
- x2y2_in_europe_b = links_tyndp[["x2", "y2"]].apply(
- lambda p: europe_shape_prepped.contains(Point(p)), axis=1
- )
- is_within_covered_countries_b = x1y1_in_europe_b & x2y2_in_europe_b
-
- if not is_within_covered_countries_b.all():
- logger.info(
- "TYNDP links outside of the covered area (skipping): "
- + ", ".join(links_tyndp.loc[~is_within_covered_countries_b, "Name"])
- )
-
- links_tyndp = links_tyndp.loc[is_within_covered_countries_b]
- if links_tyndp.empty:
- return buses, links
-
- has_replaces_b = links_tyndp.replaces.notnull()
- oids = dict(Bus=_get_oid(buses), Link=_get_oid(links))
- keep_b = dict(
- Bus=pd.Series(True, index=buses.index), Link=pd.Series(True, index=links.index)
- )
- for reps in links_tyndp.loc[has_replaces_b, "replaces"]:
- for comps in reps.split(":"):
- oids_to_remove = comps.split(".")
- c = oids_to_remove.pop(0)
- keep_b[c] &= ~oids[c].isin(oids_to_remove)
- buses = buses.loc[keep_b["Bus"]]
- links = links.loc[keep_b["Link"]]
-
- links_tyndp["j"] = _find_closest_links(
- links, links_tyndp, distance_upper_bound=0.20
- )
- # Corresponds approximately to 20km tolerances
-
- if links_tyndp["j"].notnull().any():
- logger.info(
- "TYNDP links already in the dataset (skipping): "
- + ", ".join(links_tyndp.loc[links_tyndp["j"].notnull(), "Name"])
- )
- links_tyndp = links_tyndp.loc[links_tyndp["j"].isnull()]
- if links_tyndp.empty:
- return buses, links
-
- tree_buses = buses.query("carrier=='AC'")
- tree = KDTree(tree_buses[["x", "y"]])
- _, ind0 = tree.query(links_tyndp[["x1", "y1"]])
- ind0_b = ind0 < len(tree_buses)
- links_tyndp.loc[ind0_b, "bus0"] = tree_buses.index[ind0[ind0_b]]
-
- _, ind1 = tree.query(links_tyndp[["x2", "y2"]])
- ind1_b = ind1 < len(tree_buses)
- links_tyndp.loc[ind1_b, "bus1"] = tree_buses.index[ind1[ind1_b]]
-
- links_tyndp_located_b = (
- links_tyndp["bus0"].notnull() & links_tyndp["bus1"].notnull()
- )
- if not links_tyndp_located_b.all():
- logger.warning(
- "Did not find connected buses for TYNDP links (skipping): "
- + ", ".join(links_tyndp.loc[~links_tyndp_located_b, "Name"])
- )
- links_tyndp = links_tyndp.loc[links_tyndp_located_b]
-
- logger.info("Adding the following TYNDP links: " + ", ".join(links_tyndp["Name"]))
-
- links_tyndp = links_tyndp[["bus0", "bus1"]].assign(
- carrier="DC",
- p_nom=links_tyndp["Power (MW)"],
- length=links_tyndp["Length (given) (km)"].fillna(
- links_tyndp["Length (distance*1.2) (km)"]
- ),
- under_construction=True,
- underground=False,
- geometry=(
- links_tyndp[["x1", "y1", "x2", "y2"]].apply(
- lambda s: str(LineString([[s.x1, s.y1], [s.x2, s.y2]])), axis=1
- )
- ),
- tags=(
- '"name"=>"'
- + links_tyndp["Name"]
- + '", '
- + '"ref"=>"'
- + links_tyndp["Ref"]
- + '", '
- + '"status"=>"'
- + links_tyndp["status"]
- + '"'
- ),
- )
-
- links_tyndp.index = "T" + links_tyndp.index.astype(str)
-
- links = pd.concat([links, links_tyndp], sort=True)
-
- return buses, links
-
-
def _load_lines_from_eg(buses, eg_lines):
lines = (
pd.read_csv(
@@ -731,7 +623,6 @@ def base_network(
eg_lines,
eg_links,
links_p_nom,
- links_tyndp,
europe_shape,
country_shapes,
offshore_shapes,
@@ -741,8 +632,6 @@ def base_network(
buses = _load_buses_from_eg(eg_buses, europe_shape, config["electricity"])
links = _load_links_from_eg(buses, eg_links)
- if config["links"].get("include_tyndp"):
- buses, links = _add_links_from_tyndp(buses, links, links_tyndp, europe_shape)
converters = _load_converters_from_eg(buses, eg_converters)
@@ -911,7 +800,6 @@ def append_bus_shapes(n, shapes, type):
snakemake.input.eg_lines,
snakemake.input.eg_links,
snakemake.input.links_p_nom,
- snakemake.input.links_tyndp,
snakemake.input.europe_shape,
snakemake.input.country_shapes,
snakemake.input.offshore_shapes,
From 9b36d00a598888630cdc66c24c5e58f11b676721 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Fri, 2 Aug 2024 10:47:02 +0200
Subject: [PATCH 15/28] add configuration options for transmission projects to
documentation and add template folder for transmission projects
---
.../template/new_lines.csv | 5 +++++
.../template/new_links.csv | 5 +++++
.../template/upgraded_lines.csv | 5 +++++
.../template/upgraded_links.csv | 5 +++++
doc/configtables/links.csv | 2 --
doc/configtables/transmission_projects.csv | 8 ++++++++
doc/configuration.rst | 17 +++++++++++++++++
7 files changed, 45 insertions(+), 2 deletions(-)
create mode 100644 data/transmission_projects/template/new_lines.csv
create mode 100644 data/transmission_projects/template/new_links.csv
create mode 100644 data/transmission_projects/template/upgraded_lines.csv
create mode 100644 data/transmission_projects/template/upgraded_links.csv
create mode 100644 doc/configtables/transmission_projects.csv
diff --git a/data/transmission_projects/template/new_lines.csv b/data/transmission_projects/template/new_lines.csv
new file mode 100644
index 000000000..2f75428c3
--- /dev/null
+++ b/data/transmission_projects/template/new_lines.csv
@@ -0,0 +1,5 @@
+,project_status,length,build_year,underground,v_nom,tags,x0,y0,x1,y1,num_parallel
+New_line_1,in_permitting,100,2025,False,380,"{link to source, name of project, further custom information}",-7.793621146853301,41.52102394053344,-8.38943499999999,40.95916,2
+New_line_2,under_construction,100,2023,False,380,"{link to source, name of project, further custom information}",,,,,
+New_line_3,in_planning,100,2040,False,380,"{link to source, name of project, further custom information}",,,,,
+New_line_4,under_consideration,100,2050,true,380,"{link to source, name of project, further custom information}",,,,,
diff --git a/data/transmission_projects/template/new_links.csv b/data/transmission_projects/template/new_links.csv
new file mode 100644
index 000000000..ff2d652eb
--- /dev/null
+++ b/data/transmission_projects/template/new_links.csv
@@ -0,0 +1,5 @@
+,project_status,length,build_year,underground,p_nom,tags,x0,y0,x1,y1
+New_link_1,in_permitting,100,2025,False,1000,"{link to source, name of project, further custom information}",-7.793621,41.52145,-8.38944,40.95915
+New_link_2,under_construction,100,2023,False,600,"{link to source, name of project, further custom information}",-7.793621,41.52145,-8.38944,40.95915
+New_link_3,in_planning,100,2040,False,2000,"{link to source, name of project, further custom information}",-7.793621,41.52145,-8.38944,40.95915
+New_link_4,under_consideration,100,2050,true,600,"{link to source, name of project, further custom information}",-7.793621,41.52145,-8.38944,40.95915
diff --git a/data/transmission_projects/template/upgraded_lines.csv b/data/transmission_projects/template/upgraded_lines.csv
new file mode 100644
index 000000000..86192a3f7
--- /dev/null
+++ b/data/transmission_projects/template/upgraded_lines.csv
@@ -0,0 +1,5 @@
+,project_status,length,build_year,underground,v_nom,tags,x0,y0,x1,y1,num_parallel
+Upgraded_line_1,in_permitting,100,2025,False,380,"{link to source, name of project, further custom information}",-7.793621146853301,41.52102394053344,-8.38943499999999,40.95916,2
+Upgraded_line_2,under_construction,100,2023,False,380,"{link to source, name of project, further custom information}",,,,,
+Upgraded_line_3,in_planning,100,2040,False,380,"{link to source, name of project, further custom information}",,,,,
+Upgraded_line_4,under_consideration,100,2050,true,380,"{link to source, name of project, further custom information}",,,,,
diff --git a/data/transmission_projects/template/upgraded_links.csv b/data/transmission_projects/template/upgraded_links.csv
new file mode 100644
index 000000000..65270cc37
--- /dev/null
+++ b/data/transmission_projects/template/upgraded_links.csv
@@ -0,0 +1,5 @@
+,project_status,length,build_year,underground,p_nom,tags,x0,y0,x1,y1
+Upgraded_link_1,in_permitting,100,2025,False,1000,"{link to source, name of project, further custom information}",-7.793621,41.52145,-8.38944,40.95915
+Upgraded_link_2,under_construction,100,2023,False,600,"{link to source, name of project, further custom information}",-7.793621,41.52145,-8.38944,40.95915
+Upgraded_link_3,in_planning,100,2040,False,2000,"{link to source, name of project, further custom information}",-7.793621,41.52145,-8.38944,40.95915
+Upgraded_link_4,under_consideration,100,2050,true,600,"{link to source, name of project, further custom information}",-7.793621,41.52145,-8.38944,40.95915
diff --git a/doc/configtables/links.csv b/doc/configtables/links.csv
index c1ffb427c..89594e82a 100644
--- a/doc/configtables/links.csv
+++ b/doc/configtables/links.csv
@@ -2,5 +2,3 @@
p_max_pu,--,"Value in [0.,1.]","Correction factor for link capacities ``p_nom``."
p_nom_max,MW,"float","Global upper limit for the maximum capacity of each extendable DC link."
max_extension,MW,"float","Upper limit for the extended capacity of each extendable DC link."
-include_tyndp,bool,"{'true', 'false'}","Specifies whether to add HVDC link projects from the `TYNDP 2018 `_ which are at least in permitting."
-under_construction,--,"One of {'zero': set capacity to zero, 'remove': remove completely, 'keep': keep with full capacity}","Specifies how to handle lines which are currently under construction."
diff --git a/doc/configtables/transmission_projects.csv b/doc/configtables/transmission_projects.csv
new file mode 100644
index 000000000..9a10592fa
--- /dev/null
+++ b/doc/configtables/transmission_projects.csv
@@ -0,0 +1,8 @@
+,Unit,Values,Description
+enable,bool,"{true,false}",Whether to integrate this transmission projects or not.
+include,--,,"Name of the transmission projects. They should be unique and have to be provided in the `data/transmission_projects` folder."
+-- tyndp2020,bool,"{true,false}",Whether to integrate the TYNDP 2020 dataset.
+-- nep,bool,"{true,false}",Whether to integrate the German network development plan dataset.
+-- manual,bool,"{true,false}",Whether to integrate the manually added transmission projects. They are taken from the previously existing links_tyndp.csv file.
+status,list or dict,,Status to include into the model as list or as dict with name of project and status to include.
+new_link_capacity,--,"{zero,keep}",Whether to set the new link capacity to the provided capacity or set it to zero.
diff --git a/doc/configuration.rst b/doc/configuration.rst
index 8695d4bb4..f3248a5af 100644
--- a/doc/configuration.rst
+++ b/doc/configuration.rst
@@ -379,6 +379,23 @@ overwrite the existing values.
.. _transformers_cf:
+``transmission projects``
+=============
+
+Allows to define additional transmission projects which will be added to the network, e.g. for the TYNDP 2020 dataset. The projects are read in from the respective csv files in the subfolder of ``data/transmission_projects/``. One can add new transmission projects like TYNDP 2024 in a new subfolder of transmission projects, e.g. ``data/transmission_projects/tyndp2024`` and add the project ``tyndp2024`` to the include section under ``transmission_projects`` in the ``config.yaml``. The csv files in the project folder should have the same columns as the csv files in the template folder ``data/transmission_projects/template``.
+
+.. literalinclude:: ../config/config.default.yaml
+ :language: yaml
+ :start-at: transmission_projects:
+ :end-before: # docs
+
+.. csv-table::
+ :header-rows: 1
+ :widths: 22,7,22,33
+ :file: configtables/transmission_projects.csv
+
+.. _transformers_cf:
+
``transformers``
================
From 10916aaf8d24aa667cc91c48c5bf2384cebb6331 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Wed, 7 Aug 2024 10:26:01 +0200
Subject: [PATCH 16/28] update pypsa version in environments
---
envs/environment.fixed.yaml | 2 +-
envs/environment.yaml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/envs/environment.fixed.yaml b/envs/environment.fixed.yaml
index 67fff66f2..917deab78 100644
--- a/envs/environment.fixed.yaml
+++ b/envs/environment.fixed.yaml
@@ -335,7 +335,7 @@ dependencies:
- pyomo=6.6.1
- pyparsing=3.1.2
- pyproj=3.6.1
-- pypsa=0.28.0
+- pypsa=0.29.0
- pyqt=5.15.9
- pyqt5-sip=12.12.2
- pyscipopt=5.0.1
diff --git a/envs/environment.yaml b/envs/environment.yaml
index febd6ea2e..b2bc2ac9a 100644
--- a/envs/environment.yaml
+++ b/envs/environment.yaml
@@ -11,7 +11,7 @@ dependencies:
- pip
- atlite>=0.2.9
-- pypsa>=0.28
+- pypsa>=0.29
- linopy
- dask
From ea81fe1abc3183ae2ebcc010fcd89b624cdc995c Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
<66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Wed, 7 Aug 2024 08:30:32 +0000
Subject: [PATCH 17/28] [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---
doc/conf.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/conf.py b/doc/conf.py
index a166dd70e..efce867ed 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -342,5 +342,5 @@
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {
- 'https://docs.python.org/': ('https://docs.python.org/3', None),
+ "https://docs.python.org/": ("https://docs.python.org/3", None),
}
From c0063e304895a27496be2ea25b2f8e3cf9debe70 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Thu, 8 Aug 2024 13:03:18 +0200
Subject: [PATCH 18/28] integrate Fabian's review comments 2
---
config/config.default.yaml | 7 ++-
data/transmission_projects/nep/new_lines.csv | 30 ++++++------
data/transmission_projects/nep/new_links.csv | 20 ++++----
doc/configuration.rst | 4 +-
doc/release_notes.rst | 2 +-
rules/build_electricity.smk | 18 ++++++--
scripts/add_electricity.py | 20 ++++----
...ects.py => build_transmission_projects.py} | 46 ++++++++++---------
scripts/simplify_network.py | 4 +-
9 files changed, 84 insertions(+), 67 deletions(-)
rename scripts/{add_transmission_projects.py => build_transmission_projects.py} (95%)
diff --git a/config/config.default.yaml b/config/config.default.yaml
index a57e4bf64..8604c3e9b 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -282,7 +282,7 @@ lines:
max_extension: 20000 #MW
length_factor: 1.25
reconnect_crimea: true
- under_construction: 'keep' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
+ under_construction: 'keep' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity for lines in grid extract
dynamic_line_rating:
activate: false
cutout: europe-2013-sarah3-era5
@@ -295,6 +295,7 @@ links:
p_max_pu: 1.0
p_nom_max: .inf
max_extension: 30000 #MW
+ under_construction: 'keep' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity for lines in grid extract
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transmission_projects
transmission_projects:
@@ -303,12 +304,14 @@ transmission_projects:
tyndp2020: true
nep: true
manual: true
+ skip: #type of lines csv which are not added from the transmission project folders
+ - upgraded_lines
status: # status to include as list or as dict with name of project and status to include
- confirmed
- in_permitting
- under_construction
#- under_consideration
- new_link_capacity: keep #keep or zero
+ new_link_capacity: zero #keep or zero
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transformers
transformers:
diff --git a/data/transmission_projects/nep/new_lines.csv b/data/transmission_projects/nep/new_lines.csv
index 441243e18..234462eaa 100644
--- a/data/transmission_projects/nep/new_lines.csv
+++ b/data/transmission_projects/nep/new_lines.csv
@@ -1,16 +1,16 @@
,bus0,bus1,length,v_nom,num_parallel,project_status,build_year,tags,x0,y0,x1,y1
-P43,Dipperz/Hessen,Bergrheinfeld//Bayern,85,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.807198712581199,50.54115855,10.1810033,50.0082136
-P71,Kiel/Schleswig-Holstein,Göhl/Schleswig-Holstein,85,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.135555,54.3227085,10.9399634,54.2861191
-P84,Hamburg,Sahms/Schleswig-Holstein,35,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.000654,53.550341,10.5331297,53.5252973
-P227,Lübeck/Schleswig-Holstein,Sahms/Schleswig-Holstein,52,380.0,2.0,confirmed,2030,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.684738,53.866444,10.5331297,53.5252973
-P402,Westerkappeln/Nordrhein-Westfalen,Gersteinwerk/Nordrhein-Westfalen,89,380.0,2.0,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",7.8772237,52.3141716,7.722207887811252,51.6749132
-P470,Emden/Niedersachsen,Dörpen/West /Niedersachsen,66,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",7.2058304,53.3670541,7.256622642835093,52.9807372
-P476,Hochwöhrden/Schleswig-Holstein,Mehlbek/Schleswig-Holstein,39,380.0,2.0,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.0323968,54.158602,9.4346536,54.0045912
-P478,Pöschendorf/Schleswig-Holstein,Alfstedt/Niedersachsen,37,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.4944931,54.0409041,9.0666915,53.5499782
-P485,Herlasgrün/Sachsen,Marktleuthen/Bayern,69,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",12.2299537,50.5680975,11.9945062,50.1279651
-P490,Petersgmünd /Bayern,Goldshöfe /Baden-Württemberg,104,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",11.0252473,49.185644,10.1279814,48.8940723
-P540,Eisfeld/Thüringen,Grafenrheinfeld /Bayern,126,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.908994,50.4269984,10.1966808,50.0055317
-P625,Streumen/Sachsen,Schmölln/Sachsen,92,380.0,2.0,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",13.4054041,51.3582767,14.2347005,51.1244043
-P627,Schossin/Mecklenburg-Vorpommern,Perleberg/Brandenburg,89,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",11.2823593,53.5284043,11.8627933,53.0762716
-P635,Grabowhöfe/Mecklenburg-Vorpommern,Marke/Sachsen-Anhalt,280,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",12.594171,53.5683057,12.252458735300388,51.7301547
-P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",12.342857,51.5255661,12.5130329,51.1496022
+P43,Dipperz/Hessen,Bergrheinfeld//Bayern,85,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Dipperz/Hessen"",""location1"":""Bergrheinfeld//Bayern""",9.807198712581199,50.54115855,10.1810033,50.0082136
+P71,Kiel/Schleswig-Holstein,Göhl/Schleswig-Holstein,85,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Kiel/Schleswig-Holstein"",""location1"":""Göhl/Schleswig-Holstein""",10.135555,54.3227085,10.9399634,54.2861191
+P84,Hamburg,Sahms/Schleswig-Holstein,35,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Hamburg"",""location1"":""Sahms/Schleswig-Holstein""",10.000654,53.550341,10.5331297,53.5252973
+P227,Lübeck/Schleswig-Holstein,Sahms/Schleswig-Holstein,52,380.0,2.0,confirmed,2030,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Lübeck/Schleswig-Holstein"",""location1"":""Sahms/Schleswig-Holstein""",10.684738,53.866444,10.5331297,53.5252973
+P402,Westerkappeln/Nordrhein-Westfalen,Gersteinwerk/Nordrhein-Westfalen,89,380.0,2.0,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Westerkappeln/Nordrhein-Westfalen"",""location1"":""Gersteinwerk/Nordrhein-Westfalen""",7.8772237,52.3141716,7.722207887811252,51.6749132
+P470,Emden/Niedersachsen,Dörpen/West /Niedersachsen,66,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Emden/Niedersachsen"",""location1"":""Dörpen/West /Niedersachsen""",7.2058304,53.3670541,7.256622642835093,52.9807372
+P476,Hochwöhrden/Schleswig-Holstein,Mehlbek/Schleswig-Holstein,39,380.0,2.0,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Hochwöhrden/Schleswig-Holstein"",""location1"":""Mehlbek/Schleswig-Holstein""",9.0323968,54.158602,9.4346536,54.0045912
+P478,Pöschendorf/Schleswig-Holstein,Alfstedt/Niedersachsen,37,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Pöschendorf/Schleswig-Holstein"",""location1"":""Alfstedt/Niedersachsen""",9.4944931,54.0409041,9.0666915,53.5499782
+P485,Herlasgrün/Sachsen,Marktleuthen/Bayern,69,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Herlasgrün/Sachsen"",""location1"":""Marktleuthen/Bayern""",12.2299537,50.5680975,11.9945062,50.1279651
+P490,Petersgmünd /Bayern,Goldshöfe /Baden-Württemberg,104,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Petersgmünd /Bayern"",""location1"":""Goldshöfe /Baden-Württemberg""",11.0252473,49.185644,10.1279814,48.8940723
+P540,Eisfeld/Thüringen,Grafenrheinfeld /Bayern,126,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Eisfeld/Thüringen"",""location1"":""Grafenrheinfeld /Bayern""",10.908994,50.4269984,10.1966808,50.0055317
+P625,Streumen/Sachsen,Schmölln/Sachsen,92,380.0,2.0,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Streumen/Sachsen"",""location1"":""Schmölln/Sachsen""",13.4054041,51.3582767,14.2347005,51.1244043
+P627,Schossin/Mecklenburg-Vorpommern,Perleberg/Brandenburg,89,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Schossin/Mecklenburg-Vorpommern"",""location1"":""Perleberg/Brandenburg""",11.2823593,53.5284043,11.8627933,53.0762716
+P635,Grabowhöfe/Mecklenburg-Vorpommern,Marke/Sachsen-Anhalt,280,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Grabowhöfe/Mecklenburg-Vorpommern"",""location1"":""Marke/Sachsen-Anhalt""",12.594171,53.5683057,12.252458735300388,51.7301547
+P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Delitzsch/Sachsen"",""location1"":""Eula/Sachsen""",12.342857,51.5255661,12.5130329,51.1496022
diff --git a/data/transmission_projects/nep/new_links.csv b/data/transmission_projects/nep/new_links.csv
index f65719392..12a9a06ec 100644
--- a/data/transmission_projects/nep/new_links.csv
+++ b/data/transmission_projects/nep/new_links.csv
@@ -1,12 +1,12 @@
,bus0,bus1,p_nom,length,project_status,build_year,tags,x0,y0,x1,y1
DC21,Wilhelmshaven/Niedersachsen,Lippetal/Nordrhein-Westfalen,2000.0,270,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",8.106301,53.5278793,8.0787633,51.6516157
-DC25,Heide/Schleswig-Holstein,Polsum/Nordrhein-Westfalen,2000.0,440,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.0929015,54.1948456,7.0528322,51.6264919
-DC31,Hemmingstedt/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,212,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.08263,54.1506435,11.3010418,53.572637
-DC32,Pöschendorf/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,170,confirmed,2034,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.4944931,54.0409041,11.3010418,53.572637
-DC34,Ovelgönne/Niedersachsen,Bürstadt/Hessen,2000.0,523,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",8.4209977,53.3427799,8.4747076,49.6531823
-DC35,Ovelgönne/Niedersachsen,Marxheim/Taunus,2000.0,461,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",8.4209977,53.3427799,8.4320722,50.0724011
-DC40,Nüttermoor/Niedersachsen,Streumen/Sachsen,2000.0,594,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",7.4360347,53.2625382,13.4054041,51.3582767
-DC40plus,Dörpen/West,Klostermansfeld/Sachsen-Anhalt,2000.0,426,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",7.256622642835093,52.9807372,11.4933395,51.5841525
-DC41,Alfstedt/Niedersachsen,Hüffenhardt/Baden-Württemberg,2000.0,607,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",9.0666915,53.5499782,9.0827453,49.2908862
-DC42,Sahms/Schleswig-Holstein,Böblingen/Baden-Württemberg,2000.0,737,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.5331297,53.5252973,9.0113444,48.684969
-DC42plus,Sahms/Schleswig-Holstein,Trennfeld/Bayern,2000.0,546,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",10.5331297,53.5252973,9.6151453,49.7950676
+DC25,Heide/Schleswig-Holstein,Polsum/Nordrhein-Westfalen,2000.0,440,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Heide/Schleswig-Holstein"",""location1"":""Polsum/Nordrhein-Westfalen""",9.0929015,54.1948456,7.0528322,51.6264919
+DC31,Hemmingstedt/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,212,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Hemmingstedt/Schleswig-Holstein"",""location1"":""Stralendorf/Mecklenburg-Vorpommern""",9.08263,54.1506435,11.3010418,53.572637
+DC32,Pöschendorf/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,170,confirmed,2034,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Pöschendorf/Schleswig-Holstein"",""location1"":""Stralendorf/Mecklenburg-Vorpommern""",9.4944931,54.0409041,11.3010418,53.572637
+DC34,Ovelgönne/Niedersachsen,Bürstadt/Hessen,2000.0,523,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Ovelgönne/Niedersachsen"",""location1"":""Bürstadt/Hessen""",8.4209977,53.3427799,8.4747076,49.6531823
+DC35,Ovelgönne/Niedersachsen,Marxheim/Taunus,2000.0,461,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Ovelgönne/Niedersachsen"",""location1"":""Marxheim/Taunus""",8.4209977,53.3427799,8.4320722,50.0724011
+DC40,Nüttermoor/Niedersachsen,Streumen/Sachsen,2000.0,594,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Nüttermoor/Niedersachsen"",""location1"":""Streumen/Sachsen""",7.4360347,53.2625382,13.4054041,51.3582767
+DC40plus,Dörpen/West,Klostermansfeld/Sachsen-Anhalt,2000.0,426,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Dörpen/West"",""location1"":""Klostermansfeld/Sachsen-Anhalt""",7.256622642835093,52.9807372,11.4933395,51.5841525
+DC41,Alfstedt/Niedersachsen,Hüffenhardt/Baden-Württemberg,2000.0,607,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Alfstedt/Niedersachsen"",""location1"":""Hüffenhardt/Baden-Württemberg""",9.0666915,53.5499782,9.0827453,49.2908862
+DC42,Sahms/Schleswig-Holstein,Böblingen/Baden-Württemberg,2000.0,737,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Sahms/Schleswig-Holstein"",""location1"":""Böblingen/Baden-Württemberg""",10.5331297,53.5252973,9.0113444,48.684969
+DC42plus,Sahms/Schleswig-Holstein,Trennfeld/Bayern,2000.0,546,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Sahms/Schleswig-Holstein"",""location1"":""Trennfeld/Bayern""",10.5331297,53.5252973,9.6151453,49.7950676
diff --git a/doc/configuration.rst b/doc/configuration.rst
index f3248a5af..e140261ab 100644
--- a/doc/configuration.rst
+++ b/doc/configuration.rst
@@ -380,9 +380,9 @@ overwrite the existing values.
.. _transformers_cf:
``transmission projects``
-=============
+=======================
-Allows to define additional transmission projects which will be added to the network, e.g. for the TYNDP 2020 dataset. The projects are read in from the respective csv files in the subfolder of ``data/transmission_projects/``. One can add new transmission projects like TYNDP 2024 in a new subfolder of transmission projects, e.g. ``data/transmission_projects/tyndp2024`` and add the project ``tyndp2024`` to the include section under ``transmission_projects`` in the ``config.yaml``. The csv files in the project folder should have the same columns as the csv files in the template folder ``data/transmission_projects/template``.
+Allows to define additional transmission projects that will be added to the base network, e.g., from the TYNDP 2020 dataset. The projects are read in from the CSV files in the subfolder of ``data/transmission_projects/``. New transmission projects, e.g. from TYNDP 2024, can be added in a new subfolder of transmission projects, e.g. ``data/transmission_projects/tyndp2024`` while extending the list of ``transmission_projects`` in the ``config.yaml`` by ``tyndp2024``. The CSV files in the project folder should have the same columns as the CSV files in the template folder ``data/transmission_projects/template``.
.. literalinclude:: ../config/config.default.yaml
:language: yaml
diff --git a/doc/release_notes.rst b/doc/release_notes.rst
index 8ef4d5c50..428a7e53f 100644
--- a/doc/release_notes.rst
+++ b/doc/release_notes.rst
@@ -9,7 +9,7 @@ Release Notes
Upcoming Release
================
-* More modular and flexible handling of transmission projects. One can now add new transmission projects in a subfolder of `data/transmission projects` similar to the files in the template folder. After adding the new files and updating the config, transmission projects will be included if they are not duplicates of existing lines or other projects.
+* More modular and flexible handling of transmission projects. One can now add new transmission projects in a subfolder of `data/transmission projects` similar to the files in the template folder. After adding the new files and updating the config section `transmission_projects:`, transmission projects will be included if they are not duplicates of existing lines or other projects.
* split solid biomass potentials into solid biomass and municipal solid waste. Add option to use municipal solid waste. This option is only activated in combination with the flag ``waste_to_energy``
diff --git a/rules/build_electricity.smk b/rules/build_electricity.smk
index 28048308e..cf61b0a3b 100644
--- a/rules/build_electricity.smk
+++ b/rules/build_electricity.smk
@@ -355,13 +355,20 @@ rule build_line_rating:
"../scripts/build_line_rating.py"
-rule add_transmission_projects:
+rule build_transmission_projects:
params:
transmission_projects=config_provider("transmission_projects"),
input:
base_network=resources("networks/base.nc"),
offshore_shapes=resources("offshore_shapes.geojson"),
europe_shape=resources("europe_shape.geojson"),
+ transmission_projects=lambda w: [
+ "data/transmission_projects/" + name
+ for name, include in config_provider("transmission_projects", "include")(
+ w
+ ).items()
+ if include
+ ],
output:
new_lines=resources("transmission_project/new_lines.csv"),
new_links=resources("transmission_project/new_links.csv"),
@@ -369,13 +376,16 @@ rule add_transmission_projects:
adjust_links=resources("transmission_project/adjust_links.csv"),
new_buses=resources("transmission_project/new_buses.csv"),
log:
- logs("add_transmission_project.log"),
+ logs("build_transmission_projects.log"),
benchmark:
- benchmarks("add_transmission_project")
+ benchmarks("build_transmission_projects")
+ resources:
+ mem_mb=2000,
+ threads: 1
conda:
"../envs/environment.yaml"
script:
- "../scripts/add_transmission_projects.py"
+ "../scripts/build_transmission_projects.py"
def input_profile_tech(w):
diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py
index cc9530ced..f6e42088d 100755
--- a/scripts/add_electricity.py
+++ b/scripts/add_electricity.py
@@ -800,18 +800,18 @@ def attach_line_rating(
def add_transmission_projects(n, transmission_projects):
- logger.info(f"Adding transmission projects to network")
- for project in transmission_projects:
- df = pd.read_csv(project, index_col=0, dtype={"bus0": str, "bus1": str})
+ for path in transmission_projects:
+ path = Path(path)
+ logger.info(f"Adding transmission projects from {path.parent.name}")
+ df = pd.read_csv(path, index_col=0, dtype={"bus0": str, "bus1": str})
if df.empty:
continue
- file_name = project.split("/")[-1]
- if "new_buses" in file_name:
- n.import_components_from_dataframe(df, "Bus")
- elif "new_lines" in file_name:
- n.import_components_from_dataframe(df, "Line")
- elif "new_links" in file_name:
- n.import_components_from_dataframe(df, "Link")
+ if "new_buses" in path.name:
+ n.madd("Bus", df.index, **df)
+ elif "new_lines" in path.name:
+ n.madd("Line", df.index, **df)
+ elif "new_links" in path.name:
+ n.madd("Link", df.index, **df)
elif "adjust_lines":
n.lines.update(df)
elif "adjust_links":
diff --git a/scripts/add_transmission_projects.py b/scripts/build_transmission_projects.py
similarity index 95%
rename from scripts/add_transmission_projects.py
rename to scripts/build_transmission_projects.py
index c7c4c1651..7d87f150b 100644
--- a/scripts/add_transmission_projects.py
+++ b/scripts/build_transmission_projects.py
@@ -245,7 +245,6 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
)
if type == "new":
if len(found_i) != 0:
- found = line_map.index
logger.warning(
"Found new lines similar to existing lines:\n"
+ str(line_map["existing_line"].to_dict())
@@ -309,7 +308,7 @@ def _get_upgraded_lines(branch_componnent, n, upgraded_lines, line_map):
return lines_to_add
-def _get_project_files(plan="tyndp"):
+def _get_project_files(plan="tyndp", skip=[]):
path = f"data/transmission_projects/{plan}/"
lines = dict()
if os.path.exists(path):
@@ -319,7 +318,9 @@ def _get_project_files(plan="tyndp"):
files = []
if files:
for file in files:
- if file.endswith(".csv"):
+ if file.endswith(".csv") and not any(
+ substring in file for substring in skip
+ ):
name = file.split(".")[0]
df = pd.read_csv(path + file, index_col=0)
df["geometry"] = df.apply(
@@ -364,13 +365,13 @@ def _is_similar(ds1, ds2, percentage=10):
def _set_underwater_fraction(new_links, offshore_shapes):
new_links_gds = gpd.GeoSeries(new_links.geometry)
- new_links.loc[:, "underwater_fraction"] = (
+ new_links["underwater_fraction"] = (
new_links_gds.intersection(offshore_shapes.union_all()).length
/ new_links_gds.length
).round(2)
-def _add_projects(
+def add_projects(
n,
new_lines_df,
new_links_df,
@@ -381,11 +382,11 @@ def _add_projects(
offshore_shapes,
plan="tyndp",
status=["confirmed", "under construction"],
+ skip=[],
):
- lines_dict = _get_project_files(plan)
- logging.info(f"Adding {len(lines_dict)} projects from {plan} to the network.")
+ lines_dict = _get_project_files(plan, skip=skip)
for key, lines in lines_dict.items():
- logging.info(f"Adding {key.replace('_', ' ')} to the network.")
+ logging.info(f"Processing {key.replace('_', ' ')} projects from {plan}.")
lines = _remove_projects_outside_countries(lines, europe_shape)
if isinstance(status, dict):
status = status[plan]
@@ -409,7 +410,7 @@ def _add_projects(
new_lines = new_lines.drop(duplicate_lines.index, errors="ignore")
new_lines_df = pd.concat([new_lines_df, new_lines])
# add new lines to network to be able to find added duplicates
- n.import_components_from_dataframe(new_lines, "Line")
+ n.madd("Line", new_lines.index, **new_lines)
elif "new_links" in key:
new_links, new_buses_df = _connect_new_lines(
lines,
@@ -433,7 +434,7 @@ def _add_projects(
_set_underwater_fraction(new_links, offshore_shapes)
new_links_df = pd.concat([new_links_df, new_links])
# add new links to network to be able to find added duplicates
- n.import_components_from_dataframe(new_links, "Link")
+ n.madd("Link", new_links.index, **new_links)
elif "upgraded_lines" in key:
line_map = _find_closest_lines(
n.lines, lines, distance_upper_bound=0.30, type="upgraded"
@@ -472,7 +473,7 @@ def fill_length_from_geometry(line, line_factor=1.2):
if "snakemake" not in globals():
from _helpers import mock_snakemake
- snakemake = mock_snakemake("add_transmission_projects", run="TYNDP")
+ snakemake = mock_snakemake("build_transmission_projects", run="all")
configure_logging(snakemake)
set_scenario_config(snakemake)
@@ -493,15 +494,14 @@ def fill_length_from_geometry(line, line_factor=1.2):
)
transmission_projects = snakemake.params.transmission_projects
- for project, include in transmission_projects["include"].items():
- if include:
- (
- new_lines_df,
- new_links_df,
- adjust_lines_df,
- adjust_links_df,
- new_buses_df,
- ) = _add_projects(
+ projects = [
+ project
+ for project, include in transmission_projects["include"].items()
+ if include
+ ]
+ for project in projects:
+ new_lines_df, new_links_df, adjust_lines_df, adjust_links_df, new_buses_df = (
+ add_projects(
n,
new_lines_df,
new_links_df,
@@ -512,12 +512,16 @@ def fill_length_from_geometry(line, line_factor=1.2):
offshore_shapes,
plan=project,
status=transmission_projects["status"],
+ skip=transmission_projects["skip"],
)
+ )
if not new_lines_df.empty:
line_type = "Al/St 240/40 4-bundle 380.0"
# Add new line type for new lines
new_lines_df.loc[:, "type"] = "Al/St 240/40 4-bundle 380.0"
- new_lines_df.loc[:, "num_parallel"] = 2
+ new_lines_df.loc[:, "num_parallel"] = (
+ 1 # later this will be improved by looking for MVA or MW of lines and calculating the number of parallel lines
+ )
(
new_lines_df["underground"].astype("bool").fillna(False, inplace=True)
if "underground" in new_lines_df.columns
diff --git a/scripts/simplify_network.py b/scripts/simplify_network.py
index 2d36b9f78..8a9c5f16a 100644
--- a/scripts/simplify_network.py
+++ b/scripts/simplify_network.py
@@ -298,8 +298,7 @@ def simplify_links(
_, labels = connected_components(adjacency_matrix, directed=False)
labels = pd.Series(labels, n.buses.index)
- # TODO: I changed this because I got an error because the graph included lines and links in the function split_links which lead to an error later on
- G = n.graph(branch_components=["Link"])
+ G = n.graph(branch_components=["Link", "Transformer"])
def split_links(nodes):
nodes = frozenset(nodes)
@@ -600,6 +599,7 @@ def cluster(
"substation_off",
"geometry",
"underground",
+ "project_status",
]
n.buses.drop(remove, axis=1, inplace=True, errors="ignore")
n.lines.drop(remove, axis=1, errors="ignore", inplace=True)
From fca2611d26e66392ea556d5bfd7f47b8d1b5379c Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Thu, 8 Aug 2024 13:20:58 +0200
Subject: [PATCH 19/28] add electricity:add import pathlib and duplicate
printing out of adding line projects
---
scripts/add_electricity.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py
index f6e42088d..076eb84ed 100755
--- a/scripts/add_electricity.py
+++ b/scripts/add_electricity.py
@@ -84,6 +84,7 @@
import logging
from itertools import product
+from pathlib import Path
from typing import Dict, List
import geopandas as gpd
@@ -800,9 +801,9 @@ def attach_line_rating(
def add_transmission_projects(n, transmission_projects):
+ logger.info(f"Adding transmission projects to network.")
for path in transmission_projects:
path = Path(path)
- logger.info(f"Adding transmission projects from {path.parent.name}")
df = pd.read_csv(path, index_col=0, dtype={"bus0": str, "bus1": str})
if df.empty:
continue
From 1395def6e611df6c7d4b28b3bc7cfef538721aff Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Thu, 8 Aug 2024 13:58:00 +0200
Subject: [PATCH 20/28] update NEP line csv
---
data/transmission_projects/nep/new_lines.csv | 2 +-
data/transmission_projects/nep/new_links.csv | 24 ++++++++++----------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/data/transmission_projects/nep/new_lines.csv b/data/transmission_projects/nep/new_lines.csv
index 234462eaa..f0a6ecd06 100644
--- a/data/transmission_projects/nep/new_lines.csv
+++ b/data/transmission_projects/nep/new_lines.csv
@@ -13,4 +13,4 @@ P540,Eisfeld/Thüringen,Grafenrheinfeld /Bayern,126,380.0,2.0,confirmed,2037,"{"
P625,Streumen/Sachsen,Schmölln/Sachsen,92,380.0,2.0,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Streumen/Sachsen"",""location1"":""Schmölln/Sachsen""",13.4054041,51.3582767,14.2347005,51.1244043
P627,Schossin/Mecklenburg-Vorpommern,Perleberg/Brandenburg,89,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Schossin/Mecklenburg-Vorpommern"",""location1"":""Perleberg/Brandenburg""",11.2823593,53.5284043,11.8627933,53.0762716
P635,Grabowhöfe/Mecklenburg-Vorpommern,Marke/Sachsen-Anhalt,280,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Grabowhöfe/Mecklenburg-Vorpommern"",""location1"":""Marke/Sachsen-Anhalt""",12.594171,53.5683057,12.252458735300388,51.7301547
-P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Delitzsch/Sachsen"",""location1"":""Eula/Sachsen""",12.342857,51.5255661,12.5130329,51.1496022
+P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Delitzsch/Sachsen"",""location1"":""Eula/Sachsen""",12.342857,51.5255661,12.5130329,51.1496022
diff --git a/data/transmission_projects/nep/new_links.csv b/data/transmission_projects/nep/new_links.csv
index 12a9a06ec..d237893f1 100644
--- a/data/transmission_projects/nep/new_links.csv
+++ b/data/transmission_projects/nep/new_links.csv
@@ -1,12 +1,12 @@
-,bus0,bus1,p_nom,length,project_status,build_year,tags,x0,y0,x1,y1
-DC21,Wilhelmshaven/Niedersachsen,Lippetal/Nordrhein-Westfalen,2000.0,270,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",8.106301,53.5278793,8.0787633,51.6516157
-DC25,Heide/Schleswig-Holstein,Polsum/Nordrhein-Westfalen,2000.0,440,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Heide/Schleswig-Holstein"",""location1"":""Polsum/Nordrhein-Westfalen""",9.0929015,54.1948456,7.0528322,51.6264919
-DC31,Hemmingstedt/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,212,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Hemmingstedt/Schleswig-Holstein"",""location1"":""Stralendorf/Mecklenburg-Vorpommern""",9.08263,54.1506435,11.3010418,53.572637
-DC32,Pöschendorf/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,170,confirmed,2034,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Pöschendorf/Schleswig-Holstein"",""location1"":""Stralendorf/Mecklenburg-Vorpommern""",9.4944931,54.0409041,11.3010418,53.572637
-DC34,Ovelgönne/Niedersachsen,Bürstadt/Hessen,2000.0,523,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Ovelgönne/Niedersachsen"",""location1"":""Bürstadt/Hessen""",8.4209977,53.3427799,8.4747076,49.6531823
-DC35,Ovelgönne/Niedersachsen,Marxheim/Taunus,2000.0,461,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Ovelgönne/Niedersachsen"",""location1"":""Marxheim/Taunus""",8.4209977,53.3427799,8.4320722,50.0724011
-DC40,Nüttermoor/Niedersachsen,Streumen/Sachsen,2000.0,594,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Nüttermoor/Niedersachsen"",""location1"":""Streumen/Sachsen""",7.4360347,53.2625382,13.4054041,51.3582767
-DC40plus,Dörpen/West,Klostermansfeld/Sachsen-Anhalt,2000.0,426,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Dörpen/West"",""location1"":""Klostermansfeld/Sachsen-Anhalt""",7.256622642835093,52.9807372,11.4933395,51.5841525
-DC41,Alfstedt/Niedersachsen,Hüffenhardt/Baden-Württemberg,2000.0,607,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Alfstedt/Niedersachsen"",""location1"":""Hüffenhardt/Baden-Württemberg""",9.0666915,53.5499782,9.0827453,49.2908862
-DC42,Sahms/Schleswig-Holstein,Böblingen/Baden-Württemberg,2000.0,737,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Sahms/Schleswig-Holstein"",""location1"":""Böblingen/Baden-Württemberg""",10.5331297,53.5252973,9.0113444,48.684969
-DC42plus,Sahms/Schleswig-Holstein,Trennfeld/Bayern,2000.0,546,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Sahms/Schleswig-Holstein"",""location1"":""Trennfeld/Bayern""",10.5331297,53.5252973,9.6151453,49.7950676
+,bus0,bus1,p_nom,length,project_status,build_year,underground,tags,x0,y0,x1,y1
+DC21,Wilhelmshaven/Niedersachsen,Lippetal/Nordrhein-Westfalen,2000.0,270,confirmed,2032,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Wilhelmshaven/Niedersachsen"",""location1"":""Lippetal/Nordrhein-Westfalen""",8.106301,53.5278793,8.0787633,51.6516157
+DC25,Heide/Schleswig-Holstein,Polsum/Nordrhein-Westfalen,2000.0,440,confirmed,2032,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Heide/Schleswig-Holstein"",""location1"":""Polsum/Nordrhein-Westfalen""",9.0929015,54.1948456,7.0528322,51.6264919
+DC31,Hemmingstedt/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,212,confirmed,2032,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Hemmingstedt/Schleswig-Holstein"",""location1"":""Stralendorf/Mecklenburg-Vorpommern""",9.08263,54.1506435,11.3010418,53.572637
+DC32,Pöschendorf/Schleswig-Holstein,Stralendorf/Mecklenburg-Vorpommern,2000.0,170,confirmed,2034,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Pöschendorf/Schleswig-Holstein"",""location1"":""Stralendorf/Mecklenburg-Vorpommern""",9.4944931,54.0409041,11.3010418,53.572637
+DC34,Ovelgönne/Niedersachsen,Bürstadt/Hessen,2000.0,523,confirmed,2033,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Ovelgönne/Niedersachsen"",""location1"":""Bürstadt/Hessen""",8.4209977,53.3427799,8.4747076,49.6531823
+DC35,Ovelgönne/Niedersachsen,Marxheim/Taunus,2000.0,461,confirmed,2035,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Ovelgönne/Niedersachsen"",""location1"":""Marxheim/Taunus""",8.4209977,53.3427799,8.4320722,50.0724011
+DC40,Nüttermoor/Niedersachsen,Streumen/Sachsen,2000.0,594,confirmed,2037,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Nüttermoor/Niedersachsen"",""location1"":""Streumen/Sachsen""",7.4360347,53.2625382,13.4054041,51.3582767
+DC40plus,Dörpen/West,Klostermansfeld/Sachsen-Anhalt,2000.0,426,confirmed,2037,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Dörpen/West"",""location1"":""Klostermansfeld/Sachsen-Anhalt""",7.256622642835093,52.9807372,11.4933395,51.5841525
+DC41,Alfstedt/Niedersachsen,Hüffenhardt/Baden-Württemberg,2000.0,607,confirmed,2037,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Alfstedt/Niedersachsen"",""location1"":""Hüffenhardt/Baden-Württemberg""",9.0666915,53.5499782,9.0827453,49.2908862
+DC42,Sahms/Schleswig-Holstein,Böblingen/Baden-Württemberg,2000.0,737,confirmed,2037,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Sahms/Schleswig-Holstein"",""location1"":""Böblingen/Baden-Württemberg""",10.5331297,53.5252973,9.0113444,48.684969
+DC42plus,Sahms/Schleswig-Holstein,Trennfeld/Bayern,2000.0,546,confirmed,2037,True,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Sahms/Schleswig-Holstein"",""location1"":""Trennfeld/Bayern""",10.5331297,53.5252973,9.6151453,49.7950676
From b8d598296d5777c5bf8e8c25ae166884014f6eda Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Wed, 14 Aug 2024 10:32:19 +0200
Subject: [PATCH 21/28] address Fabian's comments
---
config/config.default.yaml | 1 +
rules/build_electricity.smk | 21 +--
scripts/build_transmission_projects.py | 197 ++++++++++++-------------
scripts/simplify_network.py | 2 +-
4 files changed, 109 insertions(+), 112 deletions(-)
diff --git a/config/config.default.yaml b/config/config.default.yaml
index 8604c3e9b..fe62284c3 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -306,6 +306,7 @@ transmission_projects:
manual: true
skip: #type of lines csv which are not added from the transmission project folders
- upgraded_lines
+ - upgraded links
status: # status to include as list or as dict with name of project and status to include
- confirmed
- in_permitting
diff --git a/rules/build_electricity.smk b/rules/build_electricity.smk
index cf61b0a3b..7b89cedac 100644
--- a/rules/build_electricity.smk
+++ b/rules/build_electricity.smk
@@ -358,6 +358,7 @@ rule build_line_rating:
rule build_transmission_projects:
params:
transmission_projects=config_provider("transmission_projects"),
+ line_factor=config_provider("lines", "length_factor"),
input:
base_network=resources("networks/base.nc"),
offshore_shapes=resources("offshore_shapes.geojson"),
@@ -370,11 +371,11 @@ rule build_transmission_projects:
if include
],
output:
- new_lines=resources("transmission_project/new_lines.csv"),
- new_links=resources("transmission_project/new_links.csv"),
- adjust_lines=resources("transmission_project/adjust_lines.csv"),
- adjust_links=resources("transmission_project/adjust_links.csv"),
- new_buses=resources("transmission_project/new_buses.csv"),
+ new_lines=resources("transmission_projects/new_lines.csv"),
+ new_links=resources("transmission_projects/new_links.csv"),
+ adjust_lines=resources("transmission_projects/adjust_lines.csv"),
+ adjust_links=resources("transmission_projects/adjust_links.csv"),
+ new_buses=resources("transmission_projects/new_buses.csv"),
log:
logs("build_transmission_projects.log"),
benchmark:
@@ -461,11 +462,11 @@ rule add_electricity:
),
transmission_projects=lambda w: (
[
- resources("transmission_project/new_buses.csv"),
- resources("transmission_project/new_lines.csv"),
- resources("transmission_project/new_links.csv"),
- resources("transmission_project/adjust_lines.csv"),
- resources("transmission_project/adjust_links.csv"),
+ resources("transmission_projects/new_buses.csv"),
+ resources("transmission_projects/new_lines.csv"),
+ resources("transmission_projects/new_links.csv"),
+ resources("transmission_projects/adjust_lines.csv"),
+ resources("transmission_projects/adjust_links.csv"),
]
if config_provider("transmission_projects", "enable")(w)
else []
diff --git a/scripts/build_transmission_projects.py b/scripts/build_transmission_projects.py
index 7d87f150b..f82c1b081 100644
--- a/scripts/build_transmission_projects.py
+++ b/scripts/build_transmission_projects.py
@@ -5,8 +5,8 @@
# coding: utf-8
"""
-Gets the transmission projects defined in the config file and adds them to the
-network. Projects are then later included in ` add_electricity.py`.
+Gets the transmission projects defined in the config file, concatenates and
+deduplicates them. Projects are later included in :mod:`add_electricity.py`.
Relevant Settings
-----------------
@@ -22,7 +22,6 @@
- in_permitting
- under_construction
#- under_consideration
- line_under_construction: keep
link_under_construction: zero
.. seealso::
@@ -31,20 +30,23 @@
Inputs
------
-- ``networks/base_network.nc``: Extract from the geographical vector data of the online `ENTSO-E Interactive Map `_ by the `GridKit `_ toolkit dating back to March 2022.
-- ``data/"project_name"/``: confer :ref:`links`
+- ``networks/base_network.nc``: Base network topology for the electricity grid. This is processed in :mod:`base_network.py`.
+- ``data/transmission_projects/"project_name"/``: Takes the transmission projects from the subfolder of data/transmission_projects. The subfolder name is the project name.
+- ``offshore_shapes.geojson``: Shapefile containing the offshore regions. Used to determine if a new bus should be added for a new line or link.
+- ``europe_shape.geojson``: Shapefile containing the shape of Europe. Used to determine if a project is within the considered countries.
Outputs
-------
-- ``project_lines.csv``
-
-Description
------------
-Gets the transmission projects from e.g. TYNDP or other network development plan and brings them in a network compaitbile formal which then can be imported in `add_electricity`.
+- ``transmission_projects/new_lines.csv``: New project lines to be added to the network. This includes new lines and upgraded lines.
+- ``transmission_projects/new_links.csv``: New project links to be added to the network. This includes new links and upgraded links.
+- ``transmission_projects/adjust_lines.csv``: For lines which are upgraded, the decommissioning year of the existing line is adjusted to the build year of the upgraded line.
+- ``transmission_projects/adjust_links.csv``: For links which are upgraded, the decommissioning year of the existing link is adjusted to the build year of the upgraded link.
+- ``transmission_projects/new_buses.csv``: For some links, we have to add new buses (e.g. North Sea Wind Power Hub).
"""
import logging
import os
+from pathlib import Path
import geopandas as gpd
import numpy as np
@@ -59,7 +61,7 @@
logger = logging.getLogger(__name__)
-def _add_new_buses(n, new_ports, port):
+def add_new_buses(n, new_ports):
# Add new buses for the ports which do not have an existing bus close by. If there are multiple ports at the same location, only one bus is added.
duplicated = new_ports.duplicated(subset=["x", "y"], keep="first")
to_add = new_ports[~duplicated]
@@ -82,7 +84,7 @@ def _add_new_buses(n, new_ports, port):
return new_ports, new_buses
-def _find_country_for_bus(bus, shapes):
+def find_country_for_bus(bus, shapes):
"""
Find the country of a bus based on its coordinates and the provided
shapefile.
@@ -94,7 +96,7 @@ def _find_country_for_bus(bus, shapes):
return country.values[0]
-def _connect_new_lines(
+def connect_new_lines(
lines,
n,
new_buses_df,
@@ -116,7 +118,7 @@ def _connect_new_lines(
for port in [0, 1]:
lines_port = lines.geometry.apply(
lambda x: pd.Series(
- _get_bus_coords_from_port(x, port=port), index=["x", "y"]
+ get_bus_coords_from_port(x, port=port), index=["x", "y"]
)
)
distances, indices = bus_tree.query(lines_port)
@@ -131,9 +133,9 @@ def _connect_new_lines(
)
new_buses = potential_new_buses[is_offshore]
if not new_buses.empty:
- new_port, new_buses = _add_new_buses(n, new_buses, port)
- new_buses.loc[:, "country"] = new_buses.apply(
- lambda bus: _find_country_for_bus(bus, offshore_shapes), axis=1
+ new_port, new_buses = add_new_buses(n, new_buses, port)
+ new_buses["country"] = new_buses.apply(
+ lambda bus: find_country_for_bus(bus, offshore_shapes), axis=1
)
lines_port.loc[new_port.index, "match_distance"] = True
lines_port.loc[new_port.index, "neighbor"] = new_port.neighbor
@@ -148,14 +150,14 @@ def _connect_new_lines(
lines.drop(lines_port[~lines_port.match_distance].index, inplace=True)
lines_port = lines_port[lines_port.match_distance]
- lines.loc[lines_port.index, f"bus{port}"] = lines_port.loc[:, "neighbor"]
+ lines.loc[lines_port.index, f"bus{port}"] = lines_port["neighbor"]
lines = lines.assign(under_construction=True)
return lines, new_buses_df
-def _get_branch_coords_from_geometry(linestring, reversed=False):
+def get_branch_coords_from_geometry(linestring, reversed=False):
"""
Reduces a linestring to its start and end points. Used to simplify the
linestring which can have more than two points.
@@ -174,7 +176,7 @@ def _get_branch_coords_from_geometry(linestring, reversed=False):
return start_end_coords.flatten()
-def _get_branch_coords_from_buses(line):
+def get_branch_coords_from_buses(line):
"""
Gets line string for branch component in an pypsa network.
@@ -191,7 +193,7 @@ def _get_branch_coords_from_buses(line):
return np.array([start_coords, end_coords]).flatten()
-def _get_bus_coords_from_port(linestring, port=0):
+def get_bus_coords_from_port(linestring, port=0):
"""
Extracts the coordinates of a specified port from a given linestring.
@@ -209,7 +211,7 @@ def _get_bus_coords_from_port(linestring, port=0):
return coords
-def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
+def find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
"""
Find the closest lines in the existing set of lines to a set of new lines.
@@ -224,11 +226,11 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
# get coordinates of start and end points of all lines, for new lines we need to check both directions
lines = lines[~lines.geometry.isna()]
- treelines = lines.apply(_get_branch_coords_from_buses, axis=1)
+ treelines = lines.apply(get_branch_coords_from_buses, axis=1)
querylines = pd.concat(
[
- new_lines.geometry.apply(_get_branch_coords_from_geometry),
- new_lines.geometry.apply(_get_branch_coords_from_geometry, reversed=True),
+ new_lines.geometry.apply(get_branch_coords_from_geometry),
+ new_lines.geometry.apply(get_branch_coords_from_geometry, reversed=True),
]
)
treelines = np.vstack(treelines)
@@ -265,28 +267,28 @@ def _find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
return line_map
-def _adjust_decommissioning(upgraded_lines, line_map):
+def adjust_decommissioning(upgraded_lines, line_map):
"""
Adjust the decommissioning year of the existing lines to the built year of
the upgraded lines.
"""
to_update = pd.DataFrame(index=line_map)
- to_update.loc[:, "build_year"] = (
+ to_update["build_year"] = (
1990 # dummy build_year to make existing lines decommissioned when upgraded lines are built
)
- to_update.loc[:, "lifetime"] = (
+ to_update["lifetime"] = (
upgraded_lines.rename(line_map)["build_year"] - 1990
) # set lifetime to the difference between build year of upgraded line and existing line
return to_update
-def _get_upgraded_lines(branch_componnent, n, upgraded_lines, line_map):
+def get_upgraded_lines(branch_component, n, upgraded_lines, line_map):
"""
Get upgraded lines by merging information of existing line and upgraded
line.
"""
# get first the information of the existing lines which will be upgraded
- lines_to_add = n.df(branch_componnent).loc[line_map].copy()
+ lines_to_add = n.df(branch_component).loc[line_map].copy()
# get columns of upgraded lines which are not in existing lines
new_columns = upgraded_lines.columns.difference(lines_to_add.columns)
# rename upgraded lines to match existing lines
@@ -300,38 +302,38 @@ def _get_upgraded_lines(branch_componnent, n, upgraded_lines, line_map):
# only consider columns of original upgraded lines and bus0 and bus1
lines_to_add = lines_to_add.loc[:, ["bus0", "bus1", *upgraded_lines.columns]]
# set capacity of upgraded lines to capacity of existing lines
- lines_to_add[nominal_attrs[branch_componnent]] = n.df(branch_componnent).loc[
- line_map, nominal_attrs[branch_componnent]
+ lines_to_add[nominal_attrs[branch_component]] = n.df(branch_component).loc[
+ line_map, nominal_attrs[branch_component]
]
# change index of new lines to avoid duplicates
lines_to_add.index = lines_to_add.index.astype(str) + "_upgraded"
return lines_to_add
-def _get_project_files(plan="tyndp", skip=[]):
- path = f"data/transmission_projects/{plan}/"
- lines = dict()
- if os.path.exists(path):
- files = os.listdir(path)
- else:
- logger.warning(f"No projects found for {plan}")
- files = []
- if files:
- for file in files:
- if file.endswith(".csv") and not any(
- substring in file for substring in skip
- ):
- name = file.split(".")[0]
- df = pd.read_csv(path + file, index_col=0)
- df["geometry"] = df.apply(
- lambda x: LineString([[x.x0, x.y0], [x.x1, x.y1]]), axis=1
- )
- df.drop(columns=["x0", "y0", "x1", "y1"], inplace=True)
- lines[name] = df
+def get_project_files(path, skip=[]):
+ path = Path(path)
+ lines = {}
+ files = [
+ p
+ for p in path.iterdir()
+ if p.is_file()
+ and p.suffix == ".csv"
+ and not any(substring in p.name for substring in skip)
+ ]
+ if not files:
+ logger.warning(f"No projects found for {path.parent.name}")
+ return lines
+ for file in files:
+ df = pd.read_csv(file, index_col=0)
+ df["geometry"] = df.apply(
+ lambda x: LineString([[x.x0, x.y0], [x.x1, x.y1]]), axis=1
+ )
+ df.drop(columns=["x0", "y0", "x1", "y1"], inplace=True)
+ lines[file.stem] = df
return lines
-def _remove_projects_outside_countries(lines, europe_shape):
+def remove_projects_outside_countries(lines, europe_shape):
"""
Remove projects which are not in the considered countries.
"""
@@ -350,7 +352,7 @@ def _remove_projects_outside_countries(lines, europe_shape):
return lines
-def _is_similar(ds1, ds2, percentage=10):
+def is_similar(ds1, ds2, percentage=10):
"""
Check if values in series ds2 are within a specified percentage of series
ds1.
@@ -363,7 +365,7 @@ def _is_similar(ds1, ds2, percentage=10):
return np.logical_and(ds2 >= lower_bound, ds2 <= upper_bound)
-def _set_underwater_fraction(new_links, offshore_shapes):
+def set_underwater_fraction(new_links, offshore_shapes):
new_links_gds = gpd.GeoSeries(new_links.geometry)
new_links["underwater_fraction"] = (
new_links_gds.intersection(offshore_shapes.union_all()).length
@@ -380,29 +382,30 @@ def add_projects(
new_buses_df,
europe_shape,
offshore_shapes,
- plan="tyndp",
+ path,
+ plan,
status=["confirmed", "under construction"],
skip=[],
):
- lines_dict = _get_project_files(plan, skip=skip)
+ lines_dict = get_project_files(path, skip=skip)
for key, lines in lines_dict.items():
logging.info(f"Processing {key.replace('_', ' ')} projects from {plan}.")
- lines = _remove_projects_outside_countries(lines, europe_shape)
+ lines = remove_projects_outside_countries(lines, europe_shape)
if isinstance(status, dict):
status = status[plan]
lines = lines.loc[lines.project_status.isin(status)]
if lines.empty:
continue
- if "new_lines" in key:
- new_lines, new_buses_df = _connect_new_lines(
+ if key == "new_lines":
+ new_lines, new_buses_df = connect_new_lines(
lines, n, new_buses_df, bus_carrier="AC"
)
- duplicate_lines = _find_closest_lines(
+ duplicate_lines = find_closest_lines(
n.lines, new_lines, distance_upper_bound=0.10, type="new"
)
# TODO: think about using build_year instead of v_nom
# ignore duplicates where v_nom is not within a tolerance of 10%
- to_ignore = _is_similar(
+ to_ignore = is_similar(
new_lines.loc[duplicate_lines.index, "v_nom"],
duplicate_lines.map(n.lines["v_nom"]),
)
@@ -411,8 +414,8 @@ def add_projects(
new_lines_df = pd.concat([new_lines_df, new_lines])
# add new lines to network to be able to find added duplicates
n.madd("Line", new_lines.index, **new_lines)
- elif "new_links" in key:
- new_links, new_buses_df = _connect_new_lines(
+ elif key == "new_links":
+ new_links, new_buses_df = connect_new_lines(
lines,
n,
new_buses_df,
@@ -420,43 +423,43 @@ def add_projects(
distance_upper_bound=0.4,
bus_carrier=["AC", "DC"],
)
- duplicate_links = _find_closest_lines(
+ duplicate_links = find_closest_lines(
n.links, new_links, distance_upper_bound=0.10, type="new"
)
# TODO: think about using build_year instead of p_nom
# ignore duplicates where p_nom is not within a tolerance of 10%
- to_ignore = _is_similar(
+ to_ignore = is_similar(
new_links.loc[duplicate_links.index, "p_nom"],
duplicate_links.map(n.links["p_nom"]),
)
duplicate_links = duplicate_links[~to_ignore]
new_links = new_links.drop(duplicate_links.index, errors="ignore")
- _set_underwater_fraction(new_links, offshore_shapes)
+ set_underwater_fraction(new_links, offshore_shapes)
new_links_df = pd.concat([new_links_df, new_links])
# add new links to network to be able to find added duplicates
n.madd("Link", new_links.index, **new_links)
- elif "upgraded_lines" in key:
- line_map = _find_closest_lines(
+ elif key == "upgraded_lines":
+ line_map = find_closest_lines(
n.lines, lines, distance_upper_bound=0.30, type="upgraded"
)
upgraded_lines = lines.loc[line_map.index]
- lines_to_adjust = _adjust_decommissioning(upgraded_lines, line_map)
+ lines_to_adjust = adjust_decommissioning(upgraded_lines, line_map)
adjust_lines_df = pd.concat([adjust_lines_df, lines_to_adjust])
- upgraded_lines = _get_upgraded_lines("Line", n, upgraded_lines, line_map)
+ upgraded_lines = get_upgraded_lines("Line", n, upgraded_lines, line_map)
new_lines_df = pd.concat([new_lines_df, upgraded_lines])
- elif "upgraded_links" in key:
- line_map = _find_closest_lines(
+ elif key == "upgraded_links":
+ line_map = find_closest_lines(
n.links.query("carrier=='DC'"),
lines,
distance_upper_bound=0.30,
type="upgraded",
)
upgraded_links = lines.loc[line_map.index]
- links_to_adjust = _adjust_decommissioning(upgraded_links, line_map)
+ links_to_adjust = adjust_decommissioning(upgraded_links, line_map)
adjust_links_df = pd.concat([adjust_links_df, links_to_adjust])
- upgraded_links = _get_upgraded_lines("Link", n, upgraded_links, line_map)
+ upgraded_links = get_upgraded_lines("Link", n, upgraded_links, line_map)
new_links_df = pd.concat([new_links_df, upgraded_links])
- _set_underwater_fraction(new_links_df, offshore_shapes)
+ set_underwater_fraction(new_links_df, offshore_shapes)
else:
logger.warning(f"Unknown project type {key}")
continue
@@ -464,6 +467,8 @@ def add_projects(
def fill_length_from_geometry(line, line_factor=1.2):
+ if not pd.isna(line.length):
+ return line.length
length = gpd.GeoSeries(line.geometry, crs=4326).to_crs(3035).length.values[0]
length = length / 1000 * line_factor
return round(length, 1)
@@ -477,8 +482,7 @@ def fill_length_from_geometry(line, line_factor=1.2):
configure_logging(snakemake)
set_scenario_config(snakemake)
- config = snakemake.config
- line_factor = config["lines"]["length_factor"]
+ line_factor = snakemake.params.line_factor
n = pypsa.Network(snakemake.input.base_network)
@@ -499,7 +503,9 @@ def fill_length_from_geometry(line, line_factor=1.2):
for project, include in transmission_projects["include"].items()
if include
]
+ paths = snakemake.input.transmission_projects
for project in projects:
+ path = list(filter(lambda path: project in path, paths))[0]
new_lines_df, new_links_df, adjust_lines_df, adjust_links_df, new_buses_df = (
add_projects(
n,
@@ -510,6 +516,7 @@ def fill_length_from_geometry(line, line_factor=1.2):
new_buses_df,
europe_shape,
offshore_shapes,
+ path=path,
plan=project,
status=transmission_projects["status"],
skip=transmission_projects["skip"],
@@ -518,45 +525,33 @@ def fill_length_from_geometry(line, line_factor=1.2):
if not new_lines_df.empty:
line_type = "Al/St 240/40 4-bundle 380.0"
# Add new line type for new lines
- new_lines_df.loc[:, "type"] = "Al/St 240/40 4-bundle 380.0"
- new_lines_df.loc[:, "num_parallel"] = (
+ new_lines_df["type"] = "Al/St 240/40 4-bundle 380.0"
+ new_lines_df["num_parallel"] = (
1 # later this will be improved by looking for MVA or MW of lines and calculating the number of parallel lines
)
- (
- new_lines_df["underground"].astype("bool").fillna(False, inplace=True)
- if "underground" in new_lines_df.columns
- else None
- )
+ if "underground" in new_lines_df.columns:
+ new_lines_df["underground"] = (
+ new_lines_df["underground"].astype("bool").fillna(False)
+ )
# Add carrier types of lines
- new_lines_df.loc[:, "carrier"] = "AC"
+ new_lines_df["carrier"] = "AC"
# Fill empty length values with length calculated from geometry
new_lines_df["length"] = new_lines_df.apply(
- lambda x: (
- fill_length_from_geometry(x, line_factor)
- if pd.isna(x.length)
- else x.length
- ),
- axis=1,
+ fill_length_from_geometry, args=(line_factor,), axis=1
)
# get s_nom from line type
- s_nom = (
+ new_lines_df["s_nom"] = (
np.sqrt(3)
* n.line_types.loc[line_type].i_nom
* new_lines_df["v_nom"]
* new_lines_df["num_parallel"]
)
- new_lines_df["s_nom"] = s_nom
if not new_links_df.empty:
# Add carrier types of lines and links
- new_links_df.loc[:, "carrier"] = "DC"
+ new_links_df["carrier"] = "DC"
# Fill empty length values with length calculated from geometry
new_links_df["length"] = new_links_df.apply(
- lambda x: (
- fill_length_from_geometry(x, line_factor)
- if pd.isna(x.length)
- else x.length
- ),
- axis=1,
+ fill_length_from_geometry, args=(line_factor,), axis=1
)
# Whether to keep existing link capacity or set to zero
not_upgraded = ~new_links_df.index.str.contains("upgraded")
diff --git a/scripts/simplify_network.py b/scripts/simplify_network.py
index 8a9c5f16a..ad0068a23 100644
--- a/scripts/simplify_network.py
+++ b/scripts/simplify_network.py
@@ -298,7 +298,7 @@ def simplify_links(
_, labels = connected_components(adjacency_matrix, directed=False)
labels = pd.Series(labels, n.buses.index)
- G = n.graph(branch_components=["Link", "Transformer"])
+ G = n.graph()
def split_links(nodes):
nodes = frozenset(nodes)
From 74be51bb6560557a3b4338d0468d48fc92651488 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Wed, 14 Aug 2024 13:48:21 +0200
Subject: [PATCH 22/28] build_transmission_projects: address Fabian's final
comments simplify_network: use modus to get line type which appears most
often
---
data/transmission_projects/nep/new_lines.csv | 32 +--
.../tyndp2020/new_lines.csv | 238 +++++++++---------
.../tyndp2020/new_links.csv | 104 ++++----
.../tyndp2020/upgraded_lines.csv | 54 ++--
.../tyndp2020/upgraded_links.csv | 8 +-
scripts/build_transmission_projects.py | 10 +-
scripts/simplify_network.py | 4 +-
7 files changed, 225 insertions(+), 225 deletions(-)
diff --git a/data/transmission_projects/nep/new_lines.csv b/data/transmission_projects/nep/new_lines.csv
index f0a6ecd06..19c50116a 100644
--- a/data/transmission_projects/nep/new_lines.csv
+++ b/data/transmission_projects/nep/new_lines.csv
@@ -1,16 +1,16 @@
-,bus0,bus1,length,v_nom,num_parallel,project_status,build_year,tags,x0,y0,x1,y1
-P43,Dipperz/Hessen,Bergrheinfeld//Bayern,85,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Dipperz/Hessen"",""location1"":""Bergrheinfeld//Bayern""",9.807198712581199,50.54115855,10.1810033,50.0082136
-P71,Kiel/Schleswig-Holstein,Göhl/Schleswig-Holstein,85,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Kiel/Schleswig-Holstein"",""location1"":""Göhl/Schleswig-Holstein""",10.135555,54.3227085,10.9399634,54.2861191
-P84,Hamburg,Sahms/Schleswig-Holstein,35,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Hamburg"",""location1"":""Sahms/Schleswig-Holstein""",10.000654,53.550341,10.5331297,53.5252973
-P227,Lübeck/Schleswig-Holstein,Sahms/Schleswig-Holstein,52,380.0,2.0,confirmed,2030,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Lübeck/Schleswig-Holstein"",""location1"":""Sahms/Schleswig-Holstein""",10.684738,53.866444,10.5331297,53.5252973
-P402,Westerkappeln/Nordrhein-Westfalen,Gersteinwerk/Nordrhein-Westfalen,89,380.0,2.0,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Westerkappeln/Nordrhein-Westfalen"",""location1"":""Gersteinwerk/Nordrhein-Westfalen""",7.8772237,52.3141716,7.722207887811252,51.6749132
-P470,Emden/Niedersachsen,Dörpen/West /Niedersachsen,66,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Emden/Niedersachsen"",""location1"":""Dörpen/West /Niedersachsen""",7.2058304,53.3670541,7.256622642835093,52.9807372
-P476,Hochwöhrden/Schleswig-Holstein,Mehlbek/Schleswig-Holstein,39,380.0,2.0,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Hochwöhrden/Schleswig-Holstein"",""location1"":""Mehlbek/Schleswig-Holstein""",9.0323968,54.158602,9.4346536,54.0045912
-P478,Pöschendorf/Schleswig-Holstein,Alfstedt/Niedersachsen,37,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Pöschendorf/Schleswig-Holstein"",""location1"":""Alfstedt/Niedersachsen""",9.4944931,54.0409041,9.0666915,53.5499782
-P485,Herlasgrün/Sachsen,Marktleuthen/Bayern,69,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Herlasgrün/Sachsen"",""location1"":""Marktleuthen/Bayern""",12.2299537,50.5680975,11.9945062,50.1279651
-P490,Petersgmünd /Bayern,Goldshöfe /Baden-Württemberg,104,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Petersgmünd /Bayern"",""location1"":""Goldshöfe /Baden-Württemberg""",11.0252473,49.185644,10.1279814,48.8940723
-P540,Eisfeld/Thüringen,Grafenrheinfeld /Bayern,126,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Eisfeld/Thüringen"",""location1"":""Grafenrheinfeld /Bayern""",10.908994,50.4269984,10.1966808,50.0055317
-P625,Streumen/Sachsen,Schmölln/Sachsen,92,380.0,2.0,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Streumen/Sachsen"",""location1"":""Schmölln/Sachsen""",13.4054041,51.3582767,14.2347005,51.1244043
-P627,Schossin/Mecklenburg-Vorpommern,Perleberg/Brandenburg,89,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Schossin/Mecklenburg-Vorpommern"",""location1"":""Perleberg/Brandenburg""",11.2823593,53.5284043,11.8627933,53.0762716
-P635,Grabowhöfe/Mecklenburg-Vorpommern,Marke/Sachsen-Anhalt,280,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Grabowhöfe/Mecklenburg-Vorpommern"",""location1"":""Marke/Sachsen-Anhalt""",12.594171,53.5683057,12.252458735300388,51.7301547
-P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Delitzsch/Sachsen"",""location1"":""Eula/Sachsen""",12.342857,51.5255661,12.5130329,51.1496022
+,bus0,bus1,length,v_nom,num_parallel,project_status,build_year,tags,x0,y0,x1,y1,type
+P43,Dipperz/Hessen,Bergrheinfeld//Bayern,85,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Dipperz/Hessen"",""location1"":""Bergrheinfeld//Bayern""",9.807198712581199,50.54115855,10.1810033,50.0082136,Al/St 490/64 4-bundle 380.0
+P71,Kiel/Schleswig-Holstein,Göhl/Schleswig-Holstein,85,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Kiel/Schleswig-Holstein"",""location1"":""Göhl/Schleswig-Holstein""",10.135555,54.3227085,10.9399634,54.2861191,Al/St 490/64 4-bundle 380.0
+P84,Hamburg,Sahms/Schleswig-Holstein,35,380.0,2.0,confirmed,2031,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Hamburg"",""location1"":""Sahms/Schleswig-Holstein""",10.000654,53.550341,10.5331297,53.5252973,Al/St 490/64 4-bundle 380.0
+P227,Lübeck/Schleswig-Holstein,Sahms/Schleswig-Holstein,52,380.0,2.0,confirmed,2030,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Lübeck/Schleswig-Holstein"",""location1"":""Sahms/Schleswig-Holstein""",10.684738,53.866444,10.5331297,53.5252973,Al/St 490/64 4-bundle 380.0
+P402,Westerkappeln/Nordrhein-Westfalen,Gersteinwerk/Nordrhein-Westfalen,89,380.0,2.0,confirmed,2033,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Westerkappeln/Nordrhein-Westfalen"",""location1"":""Gersteinwerk/Nordrhein-Westfalen""",7.8772237,52.3141716,7.722207887811252,51.6749132,Al/St 490/64 4-bundle 380.0
+P470,Emden/Niedersachsen,Dörpen/West /Niedersachsen,66,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Emden/Niedersachsen"",""location1"":""Dörpen/West /Niedersachsen""",7.2058304,53.3670541,7.256622642835093,52.9807372,Al/St 490/64 4-bundle 380.0
+P476,Hochwöhrden/Schleswig-Holstein,Mehlbek/Schleswig-Holstein,39,380.0,2.0,confirmed,2032,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Hochwöhrden/Schleswig-Holstein"",""location1"":""Mehlbek/Schleswig-Holstein""",9.0323968,54.158602,9.4346536,54.0045912,Al/St 490/64 4-bundle 380.0
+P478,Pöschendorf/Schleswig-Holstein,Alfstedt/Niedersachsen,37,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Pöschendorf/Schleswig-Holstein"",""location1"":""Alfstedt/Niedersachsen""",9.4944931,54.0409041,9.0666915,53.5499782,Al/St 490/64 4-bundle 380.0
+P485,Herlasgrün/Sachsen,Marktleuthen/Bayern,69,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Herlasgrün/Sachsen"",""location1"":""Marktleuthen/Bayern""",12.2299537,50.5680975,11.9945062,50.1279651,Al/St 490/64 4-bundle 380.0
+P490,Petersgmünd /Bayern,Goldshöfe /Baden-Württemberg,104,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Petersgmünd /Bayern"",""location1"":""Goldshöfe /Baden-Württemberg""",11.0252473,49.185644,10.1279814,48.8940723,Al/St 490/64 4-bundle 380.0
+P540,Eisfeld/Thüringen,Grafenrheinfeld /Bayern,126,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Eisfeld/Thüringen"",""location1"":""Grafenrheinfeld /Bayern""",10.908994,50.4269984,10.1966808,50.0055317,Al/St 490/64 4-bundle 380.0
+P625,Streumen/Sachsen,Schmölln/Sachsen,92,380.0,2.0,confirmed,2035,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Streumen/Sachsen"",""location1"":""Schmölln/Sachsen""",13.4054041,51.3582767,14.2347005,51.1244043,Al/St 490/64 4-bundle 380.0
+P627,Schossin/Mecklenburg-Vorpommern,Perleberg/Brandenburg,89,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Schossin/Mecklenburg-Vorpommern"",""location1"":""Perleberg/Brandenburg""",11.2823593,53.5284043,11.8627933,53.0762716,Al/St 490/64 4-bundle 380.0
+P635,Grabowhöfe/Mecklenburg-Vorpommern,Marke/Sachsen-Anhalt,280,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Grabowhöfe/Mecklenburg-Vorpommern"",""location1"":""Marke/Sachsen-Anhalt""",12.594171,53.5683057,12.252458735300388,51.7301547,Al/St 490/64 4-bundle 380.0
+P636,Delitzsch/Sachsen,Eula/Sachsen,58,380.0,2.0,confirmed,2037,"{""url"":""https://data.netzausbau.de/2037-2023/NEP/NEP_2037_2045_Bestaetigung.pdf"", ""status"":""confirmed"", ""origin"":""NEP"",""version"":2024,""location0"":""Delitzsch/Sachsen"",""location1"":""Eula/Sachsen""",12.342857,51.5255661,12.5130329,51.1496022,Al/St 490/64 4-bundle 380.0
diff --git a/data/transmission_projects/tyndp2020/new_lines.csv b/data/transmission_projects/tyndp2020/new_lines.csv
index bc1b6d7b3..247296550 100644
--- a/data/transmission_projects/tyndp2020/new_lines.csv
+++ b/data/transmission_projects/tyndp2020/new_lines.csv
@@ -1,119 +1,119 @@
-,project_status,length,build_year,underground,v_nom,tags,x0,y0,x1,y1,num_parallel
-TYNDP2020_0,in_permitting,131.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""",-7.793621146853301,41.52102394053344,-8.38943499999999,40.95916,2
-TYNDP2020_1,in_permitting,30.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""18"", ""tyndp_status""=>""in_permitting""",-8.273869552394737,42.46748640601422,-7.94998199999999,42.383908,2
-TYNDP2020_2,in_permitting,140.21,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""",-7.94998199999999,42.383908,-8.582626164089064,41.764651842353146,2
-TYNDP2020_3,in_permitting,140.21,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""",-8.582626164089064,41.764651842353146,-8.67645299999999,41.303603,2
-TYNDP2020_4,under_construction,23.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/23"", ""tyndp2020_proj_id""=>""23"", ""tyndp2020_invest_id""=>""60"", ""tyndp_status""=>""under_construction""",3.08990499999999,50.50906,3.429108,50.773813,2
-TYNDP2020_6,in_permitting,80.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""90"", ""tyndp_status""=>""in_permitting""",11.126404,43.872158,11.413422,44.580687,2
-TYNDP2020_8,in_permitting,120.5,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""313"", ""tyndp_status""=>""in_permitting""",14.3524,49.1584,15.687103,49.531448,2
-TYNDP2020_9,in_permitting,117.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""315"", ""tyndp_status""=>""in_permitting""",14.3524,49.1584,13.282471,49.60804,2
-TYNDP2020_11,under_construction,110.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/39"", ""tyndp2020_proj_id""=>""39"", ""tyndp2020_invest_id""=>""144"", ""tyndp_status""=>""under_construction""",9.75860599999998,54.306108,9.29580699999999,55.075223,2
-TYNDP2020_12,planned_not_yet_permitting,157.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/47"", ""tyndp2020_proj_id""=>""47"", ""tyndp2020_invest_id""=>""689"", ""tyndp_status""=>""planned_not_yet_permitting""",10.06485,48.282279,10.897064,47.236355,2
-TYNDP2020_13,under_construction,110.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""",17.539673,47.882276,17.786865,47.653363,2
-TYNDP2020_14,under_construction,110.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""",17.539673,47.882276,18.540802,48.236565,2
-TYNDP2020_15,under_construction,48.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1501"", ""tyndp_status""=>""under_construction""",19.958038,48.380882,20.55954,48.263084,2
-TYNDP2020_16,in_permitting,60.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/78"", ""tyndp2020_proj_id""=>""78"", ""tyndp2020_invest_id""=>""458"", ""tyndp_status""=>""in_permitting""",-3.21075400000001,51.135416,-2.633972,51.533523,2
-TYNDP2020_17,in_permitting,138.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/81"", ""tyndp2020_proj_id""=>""81"", ""tyndp2020_invest_id""=>""462"", ""tyndp_status""=>""in_permitting""",-6.61376999999999,53.441446,-6.65496799999999,54.509921,2
-TYNDP2020_21,planned_not_yet_permitting,61.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.046112,38.05458,-8.1897,37.6672,2
-TYNDP2020_22,planned_not_yet_permitting,61.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.1897,37.6672,-7.73025499999999,37.397437,2
-TYNDP2020_23,planned_not_yet_permitting,75.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""1670"", ""tyndp_status""=>""planned_not_yet_permitting""",-7.55310100000001,38.17991,-7.89230299999999,38.808681,2
-TYNDP2020_24,under_construction,75.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1488"", ""tyndp_status""=>""under_construction""",4.9617,52.333661,5.763702,52.619725,2
-TYNDP2020_25,in_permitting,200.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""396"", ""tyndp_status""=>""in_permitting""",24.612122,65.877531,20.232697,66.70191,2
-TYNDP2020_26,in_permitting,156.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""1710"", ""tyndp_status""=>""in_permitting""",24.612122,65.877531,26.114502,64.778807,2
-TYNDP2020_27,under_construction,108.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/123"", ""tyndp2020_proj_id""=>""123"", ""tyndp2020_invest_id""=>""373"", ""tyndp_status""=>""under_construction""",21.625214,53.051946,21.40686,52.213497,2
-TYNDP2020_28,in_permitting,160.0,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/124"", ""tyndp2020_proj_id""=>""124"", ""tyndp2020_invest_id""=>""733"", ""tyndp_status""=>""in_permitting""",16.659393,57.43682,14.749146,56.326437,2
-TYNDP2020_29,in_permitting,178.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""86"", ""tyndp_status""=>""in_permitting""",15.636292,41.359288,14.028168,42.409263,2
-TYNDP2020_30,under_construction,30.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""96"", ""tyndp_status""=>""under_construction""",15.555267,41.165216,15.3286,40.9749,2
-TYNDP2020_31,under_construction,159.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""273"", ""tyndp_status""=>""under_construction""",28.02475,44.323848,26.7166,45.0762,2
-TYNDP2020_32,in_permitting,140.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""275"", ""tyndp_status""=>""in_permitting""",27.960205,45.447607,26.872559,46.265341,2
-TYNDP2020_33,under_construction,86.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""800"", ""tyndp_status""=>""under_construction""",27.610016,43.326177,27.358704,42.576344,2
-TYNDP2020_34,in_permitting,151.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""256"", ""tyndp_status""=>""in_permitting""",26.003265,42.200038,23.083964803314,40.8967964275543,2
-TYNDP2020_35,under_construction,13.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""258"", ""tyndp_status""=>""under_construction""",26.003265,42.200038,25.804138,41.964596,2
-TYNDP2020_36,under_construction,150.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""262"", ""tyndp_status""=>""under_construction""",26.003265,42.200038,27.358704,42.576344,2
-TYNDP2020_37,under_construction,131.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""238"", ""tyndp_status""=>""under_construction""",21.88777,45.30413,20.706482,44.86755,2
-TYNDP2020_38,under_construction,116.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""269"", ""tyndp_status""=>""under_construction""",22.578278,44.679395,21.88777,45.30413,2
-TYNDP2020_39,in_permitting,274.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.2815,45.7426,21.2815,45.7426,2
-TYNDP2020_43,planned_not_yet_permitting,57.11,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1661"", ""tyndp_status""=>""planned_not_yet_permitting""",16.11557,54.132674,16.6857237480894,54.0342010066989,2
-TYNDP2020_44,planned_not_yet_permitting,119.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1662"", ""tyndp_status""=>""planned_not_yet_permitting""",16.858521,53.16571,16.6857237480894,54.0342010066989,2
-TYNDP2020_45,planned_not_yet_permitting,288.5,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1664"", ""tyndp_status""=>""planned_not_yet_permitting""",14.831543,53.330873,18.104095,54.714309,2
-TYNDP2020_46,planned_not_yet_permitting,77.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1665"", ""tyndp_status""=>""planned_not_yet_permitting""",18.104095,54.714309,18.684998,54.266026,2
-TYNDP2020_47,in_permitting,92.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/183"", ""tyndp2020_proj_id""=>""183"", ""tyndp2020_invest_id""=>""1018"", ""tyndp_status""=>""in_permitting""",8.86459400000001,55.074436,8.66683999999999,55.481966,2
-TYNDP2020_48,under_construction,60.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/186"", ""tyndp2020_proj_id""=>""186"", ""tyndp2020_invest_id""=>""886"", ""tyndp_status""=>""under_construction""",16.399841,48.323387,16.820068,48.943249,2
-TYNDP2020_49,in_permitting,60.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/187"", ""tyndp2020_proj_id""=>""187"", ""tyndp2020_invest_id""=>""997"", ""tyndp_status""=>""in_permitting""",13.080597,48.256684,13.080597,48.256684,2
-TYNDP2020_50,under_construction,300.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/197"", ""tyndp2020_proj_id""=>""197"", ""tyndp2020_invest_id""=>""742"", ""tyndp_status""=>""under_construction""",26.114502,64.778807,25.180664,62.262171,2
-TYNDP2020_51,in_permitting,83.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""308"", ""tyndp_status""=>""in_permitting""",13.191833,50.341955,12.675274,50.160683,2
-TYNDP2020_52,under_construction,87.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""309"", ""tyndp_status""=>""under_construction""",12.675274,50.160683,13.282471,49.60804,2
-TYNDP2020_53,under_construction,60.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""939"", ""tyndp_status""=>""under_construction""",8.09143099999999,53.313647,7.23587000000001,53.374317,2
-TYNDP2020_54,under_construction,30.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""1684"", ""tyndp_status""=>""under_construction""",8.09143099999999,53.313647,8.00079299999999,53.55581,2
-TYNDP2020_56,under_construction,182.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/208"", ""tyndp2020_proj_id""=>""208"", ""tyndp2020_invest_id""=>""156"", ""tyndp_status""=>""under_construction""",6.615143,51.630805,7.38830599999999,53.076703,2
-TYNDP2020_57,in_permitting,45.2,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""627"", ""tyndp_status""=>""in_permitting""",19.500315,43.953021,19.388123,43.723475,2
-TYNDP2020_58,in_permitting,100.0,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""",19.500315,43.953021,19.315338,43.347152,2
-TYNDP2020_59,under_construction,151.0,2019,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1526"", ""tyndp_status""=>""under_construction""",18.772888,42.315909,19.315338,43.347152,2
-TYNDP2020_60,under_construction,,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1527"", ""tyndp_status""=>""under_construction""",20.928955,44.056999,20.739984,43.680615,2
-TYNDP2020_61,planned_not_yet_permitting,32.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/228"", ""tyndp2020_proj_id""=>""228"", ""tyndp2020_invest_id""=>""1231"", ""tyndp_status""=>""planned_not_yet_permitting""",7.50366199999999,47.891485,7.71240200000001,48.103763,2
-TYNDP2020_62,under_consideration,40.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1270"", ""tyndp_status""=>""under_consideration""",15.038505,52.76751,15.5,51.93333,2
-TYNDP2020_63,under_consideration,40.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1271"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,16.729431,52.32359,2
-TYNDP2020_64,under_consideration,90.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1673"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,16.056519,51.449728,2
-TYNDP2020_65,under_consideration,80.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1674"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,14.615936,52.125058,2
-TYNDP2020_66,in_permitting,100.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""355"", ""tyndp_status""=>""in_permitting""",15.086975,51.069017,16.365509,50.816348,2
-TYNDP2020_67,under_consideration,11.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/231"", ""tyndp2020_proj_id""=>""231"", ""tyndp2020_invest_id""=>""1282"", ""tyndp_status""=>""under_consideration""",8.16970799999999,47.523693,8.205414,47.649662,2
-TYNDP2020_68,under_consideration,91.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1276"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.538055,44.455349,2
-TYNDP2020_69,under_consideration,46.2,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1277"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.436344,44.904884,2
-TYNDP2020_70,under_consideration,25.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1279"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.420959,45.289022,2
-TYNDP2020_71,under_consideration,47.8,2032,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1530"", ""tyndp_status""=>""under_consideration""",18.436344,44.904884,18.538055,44.455349,2
-TYNDP2020_72,under_consideration,70.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/243"", ""tyndp2020_proj_id""=>""243"", ""tyndp2020_invest_id""=>""1269"", ""tyndp_status""=>""under_consideration""",18.663025,45.454351,19.175262,45.75411,2
-TYNDP2020_73,planned_not_yet_permitting,65.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/244"", ""tyndp2020_proj_id""=>""244"", ""tyndp2020_invest_id""=>""1245"", ""tyndp_status""=>""planned_not_yet_permitting""",6.25122100000001,49.182601,7.028503,49.340336,2
-TYNDP2020_74,under_construction,27.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/245"", ""tyndp2020_proj_id""=>""245"", ""tyndp2020_invest_id""=>""1246"", ""tyndp_status""=>""under_construction""",6.936493,53.145947,7.389679,53.097323,2
-TYNDP2020_76,planned_not_yet_permitting,90.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1050"", ""tyndp_status""=>""planned_not_yet_permitting""",5.71701000000001,51.094036,5.35583499999999,50.557942,2
-TYNDP2020_77,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1456"", ""tyndp_status""=>""in_permitting""",4.603271,51.209464,5.71701000000001,51.094036,2
-TYNDP2020_78,planned_not_yet_permitting,60.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1515"", ""tyndp_status""=>""planned_not_yet_permitting""",5.35583499999999,50.557942,4.35470599999999,50.529143,2
-TYNDP2020_79,planned_not_yet_permitting,47.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1516"", ""tyndp_status""=>""planned_not_yet_permitting""",4.22012299999999,50.864911,4.35470599999999,50.529143,2
-TYNDP2020_80,planned_not_yet_permitting,16.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1517"", ""tyndp_status""=>""planned_not_yet_permitting""",4.177551,51.162122,4.22012299999999,50.864911,2
-TYNDP2020_81,planned_not_yet_permitting,36.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1676"", ""tyndp_status""=>""planned_not_yet_permitting""",4.177551,51.162122,4.603271,51.209464,2
-TYNDP2020_82,under_construction,125.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/258"", ""tyndp2020_proj_id""=>""258"", ""tyndp2020_invest_id""=>""667"", ""tyndp_status""=>""under_construction""",9.24087500000001,53.906765,8.86459400000001,55.074436,2
-TYNDP2020_83,under_consideration,120.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/259"", ""tyndp2020_proj_id""=>""259"", ""tyndp2020_invest_id""=>""1205"", ""tyndp_status""=>""under_consideration""",21.566162,47.659838,22.026215,47.044861,2
-TYNDP2020_84,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,8.298798,47.148634,2
-TYNDP2020_85,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.253235,46.824496,2
-TYNDP2020_86,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.80228979023356,47.6377345779987,2
-TYNDP2020_87,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.790192,47.138359,2
-TYNDP2020_88,in_permitting,64.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1259"", ""tyndp_status""=>""in_permitting""",8.16970799999999,47.523693,8.298798,47.148634,2
-TYNDP2020_89,in_permitting,45.4,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1287"", ""tyndp_status""=>""in_permitting""",7.19192499999999,47.364874,7.22213700000001,47.007416,2
-TYNDP2020_90,in_permitting,87.1,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1288"", ""tyndp_status""=>""in_permitting""",8.298798,47.148634,8.32488999999999,46.532414,2
-TYNDP2020_92,in_permitting,124.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1286"", ""tyndp_status""=>""in_permitting""",7.555847,46.336499,8.795929,46.401882,2
-TYNDP2020_93,in_permitting,106.6,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1733"", ""tyndp_status""=>""in_permitting""",7.64236499999999,47.079475,7.555847,46.336499,2
-TYNDP2020_94,under_construction,30.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1734"", ""tyndp_status""=>""under_construction""",7.165833,46.200745,7.555847,46.336499,2
-TYNDP2020_95,planned_not_yet_permitting,110.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1212"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.14818,42.10892,-1.671123,41.952398,2
-TYNDP2020_96,planned_not_yet_permitting,80.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1208"", ""tyndp_status""=>""planned_not_yet_permitting""",-0.812988000000009,43.979969,-0.575409000000004,43.345155,2
-TYNDP2020_97,under_construction,1.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""",4.307132,51.301299,4.307132,51.301299,2
-TYNDP2020_98,under_construction,128.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/312"", ""tyndp2020_proj_id""=>""312"", ""tyndp2020_invest_id""=>""1472"", ""tyndp_status""=>""under_construction""",13.080597,48.256684,12.803192,47.244746,2
-TYNDP2020_99,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/313"", ""tyndp2020_proj_id""=>""313"", ""tyndp2020_invest_id""=>""1473"", ""tyndp_status""=>""in_permitting""",12.172852,48.638354,13.080597,48.256684,2
-TYNDP2020_100,under_construction,80.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/320"", ""tyndp2020_proj_id""=>""320"", ""tyndp2020_invest_id""=>""1558"", ""tyndp_status""=>""under_construction""",15.724182,46.386728,16.689606,46.633408,2
-TYNDP2020_101,in_permitting,85.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""",10.06485,48.282279,9.73251299999999,47.623752,2
-TYNDP2020_104,planned_not_yet_permitting,40.0,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/328"", ""tyndp2020_proj_id""=>""328"", ""tyndp2020_invest_id""=>""1630"", ""tyndp_status""=>""planned_not_yet_permitting""",6.590884,49.789617,6.140853,49.688695,2
-TYNDP2020_105,under_consideration,78.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/330"", ""tyndp2020_proj_id""=>""330"", ""tyndp2020_invest_id""=>""1498"", ""tyndp_status""=>""under_consideration""",17.440796,49.236431,18.287416,49.038186,2
-TYNDP2020_107,planned_not_yet_permitting,100.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/340"", ""tyndp2020_proj_id""=>""340"", ""tyndp2020_invest_id""=>""1519"", ""tyndp_status""=>""planned_not_yet_permitting""",3.429108,50.773813,4.35470599999999,50.529143,2
-TYNDP2020_108,under_consideration,60.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1538"", ""tyndp_status""=>""under_consideration""",20.9729,44.874362,20.378265,44.819838,2
-TYNDP2020_109,planned_not_yet_permitting,180.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1532"", ""tyndp_status""=>""planned_not_yet_permitting""",17.201843,44.772087,15.26017,44.886816,2
-TYNDP2020_110,planned_not_yet_permitting,68.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1533"", ""tyndp_status""=>""planned_not_yet_permitting""",15.26017,44.886816,14.558258,45.323186,2
-TYNDP2020_111,under_consideration,165.0,2040,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/344"", ""tyndp2020_proj_id""=>""344"", ""tyndp2020_invest_id""=>""1541"", ""tyndp_status""=>""under_consideration""",6.14410399999999,52.52207,5.671692,51.908696,2
-TYNDP2020_113,under_construction,161.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""",20.725963,41.239159,19.966278,41.16108,2
-TYNDP2020_115,under_consideration,38.8,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1593"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-3.05282599999999,43.265206,2
-TYNDP2020_116,under_consideration,69.12,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1595"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-2.24395799999999,43.047816,2
-TYNDP2020_117,under_consideration,57.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1597"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-2.20687899999999,43.098977,2
-TYNDP2020_120,under_construction,14.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1685"", ""tyndp_status""=>""under_construction""",9.48532099999999,53.629168,9.48532099999999,53.629168,2
-TYNDP2020_121,under_construction,60.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",10.299683,52.286643,9.988131,51.954234,2
-TYNDP2020_122,under_construction,45.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",9.988131,51.954234,9.852428,51.649318,2
-TYNDP2020_123,under_construction,105.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",9.852428,51.649318,9.621277,50.85971,2
-TYNDP2020_124,in_permitting,290.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1688"", ""tyndp_status""=>""in_permitting""",26.842346,64.556701,27.766571,62.262171,2
-TYNDP2020_125,in_permitting,100.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1689"", ""tyndp_status""=>""in_permitting""",25.692902,65.279688,26.842346,64.556701,2
-TYNDP2020_126,planned_not_yet_permitting,175.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1697"", ""tyndp_status""=>""planned_not_yet_permitting""",25.180664,62.262171,24.915619,60.90707,2
-TYNDP2020_127,under_consideration,31.0,2035,True,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1047"", ""tyndp2020_proj_id""=>""1047"", ""tyndp2020_invest_id""=>""1691"", ""tyndp_status""=>""under_consideration""",7.23587000000001,53.374317,6.86370800000001,53.418536,2
-TYNDP2020_128,planned_not_yet_permitting,170.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1052"", ""tyndp2020_proj_id""=>""1052"", ""tyndp2020_invest_id""=>""1713"", ""tyndp_status""=>""planned_not_yet_permitting""",12.693329,46.798179,14.5912685597917,46.536256583087,2
-TYNDP2020_129,planned_not_yet_permitting,105.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1054"", ""tyndp2020_proj_id""=>""1054"", ""tyndp2020_invest_id""=>""1715"", ""tyndp_status""=>""planned_not_yet_permitting""",10.897064,47.236355,11.964111,47.292271,2
-TYNDP2020_130,under_consideration,90.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1723"", ""tyndp_status""=>""under_consideration""",16.78425,43.503952,17.436701,43.052743,2
-TYNDP2020_132,in_permitting,50.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""645"", ""tyndp_status""=>""in_permitting""",15.996094,39.990799,16.020813,39.780047,2
-TYNDP2020_133,in_permitting,,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""",15.03067,40.66814,15.058136,40.941527,2
-TYNDP2020_134,in_permitting,,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""",15.058136,40.941527,14.957886,41.143501,2
-TYNDP2020_135,under_construction,40.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1063"", ""tyndp2020_proj_id""=>""1063"", ""tyndp2020_invest_id""=>""1731"", ""tyndp_status""=>""under_construction""",4.218787,51.424034,4.218787,51.424034,2
-TYNDP2020_136,under_consideration,50.6,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1742"", ""tyndp_status""=>""under_consideration""",19.720459,46.020807,20.170898,46.29856,2
-TYNDP2020_137,under_consideration,80.0,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1743"", ""tyndp_status""=>""under_consideration""",19.175262,45.75411,19.756165,45.527517,2
+,project_status,length,build_year,underground,v_nom,tags,x0,y0,x1,y1,num_parallel,type
+TYNDP2020_0,in_permitting,131.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""",-7.793621146853301,41.52102394053344,-8.38943499999999,40.95916,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_1,in_permitting,30.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""18"", ""tyndp_status""=>""in_permitting""",-8.273869552394737,42.46748640601422,-7.94998199999999,42.383908,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_2,in_permitting,140.21,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""",-7.94998199999999,42.383908,-8.582626164089064,41.764651842353146,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_3,in_permitting,140.21,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/4"", ""tyndp2020_proj_id""=>""4"", ""tyndp2020_invest_id""=>""496"", ""tyndp_status""=>""in_permitting""",-8.582626164089064,41.764651842353146,-8.67645299999999,41.303603,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_4,under_construction,23.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/23"", ""tyndp2020_proj_id""=>""23"", ""tyndp2020_invest_id""=>""60"", ""tyndp_status""=>""under_construction""",3.08990499999999,50.50906,3.429108,50.773813,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_6,in_permitting,80.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/33"", ""tyndp2020_proj_id""=>""33"", ""tyndp2020_invest_id""=>""90"", ""tyndp_status""=>""in_permitting""",11.126404,43.872158,11.413422,44.580687,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_8,in_permitting,120.5,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""313"", ""tyndp_status""=>""in_permitting""",14.3524,49.1584,15.687103,49.531448,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_9,in_permitting,117.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/35"", ""tyndp2020_proj_id""=>""35"", ""tyndp2020_invest_id""=>""315"", ""tyndp_status""=>""in_permitting""",14.3524,49.1584,13.282471,49.60804,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_11,under_construction,110.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/39"", ""tyndp2020_proj_id""=>""39"", ""tyndp2020_invest_id""=>""144"", ""tyndp_status""=>""under_construction""",9.75860599999998,54.306108,9.29580699999999,55.075223,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_12,planned_not_yet_permitting,157.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/47"", ""tyndp2020_proj_id""=>""47"", ""tyndp2020_invest_id""=>""689"", ""tyndp_status""=>""planned_not_yet_permitting""",10.06485,48.282279,10.897064,47.236355,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_13,under_construction,110.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""",17.539673,47.882276,17.786865,47.653363,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_14,under_construction,110.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1500"", ""tyndp_status""=>""under_construction""",17.539673,47.882276,18.540802,48.236565,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_15,under_construction,48.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/48"", ""tyndp2020_proj_id""=>""48"", ""tyndp2020_invest_id""=>""1501"", ""tyndp_status""=>""under_construction""",19.958038,48.380882,20.55954,48.263084,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_16,in_permitting,60.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/78"", ""tyndp2020_proj_id""=>""78"", ""tyndp2020_invest_id""=>""458"", ""tyndp_status""=>""in_permitting""",-3.21075400000001,51.135416,-2.633972,51.533523,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_17,in_permitting,138.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/81"", ""tyndp2020_proj_id""=>""81"", ""tyndp2020_invest_id""=>""462"", ""tyndp_status""=>""in_permitting""",-6.61376999999999,53.441446,-6.65496799999999,54.509921,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_21,planned_not_yet_permitting,61.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.046112,38.05458,-8.1897,37.6672,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_22,planned_not_yet_permitting,61.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""779"", ""tyndp_status""=>""planned_not_yet_permitting""",-8.1897,37.6672,-7.73025499999999,37.397437,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_23,planned_not_yet_permitting,75.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/85"", ""tyndp2020_proj_id""=>""85"", ""tyndp2020_invest_id""=>""1670"", ""tyndp_status""=>""planned_not_yet_permitting""",-7.55310100000001,38.17991,-7.89230299999999,38.808681,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_24,under_construction,75.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1488"", ""tyndp_status""=>""under_construction""",4.9617,52.333661,5.763702,52.619725,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_25,in_permitting,200.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""396"", ""tyndp_status""=>""in_permitting""",24.612122,65.877531,20.232697,66.70191,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_26,in_permitting,156.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/111"", ""tyndp2020_proj_id""=>""111"", ""tyndp2020_invest_id""=>""1710"", ""tyndp_status""=>""in_permitting""",24.612122,65.877531,26.114502,64.778807,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_27,under_construction,108.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/123"", ""tyndp2020_proj_id""=>""123"", ""tyndp2020_invest_id""=>""373"", ""tyndp_status""=>""under_construction""",21.625214,53.051946,21.40686,52.213497,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_28,in_permitting,160.0,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/124"", ""tyndp2020_proj_id""=>""124"", ""tyndp2020_invest_id""=>""733"", ""tyndp_status""=>""in_permitting""",16.659393,57.43682,14.749146,56.326437,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_29,in_permitting,178.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""86"", ""tyndp_status""=>""in_permitting""",15.636292,41.359288,14.028168,42.409263,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_30,under_construction,30.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/127"", ""tyndp2020_proj_id""=>""127"", ""tyndp2020_invest_id""=>""96"", ""tyndp_status""=>""under_construction""",15.555267,41.165216,15.3286,40.9749,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_31,under_construction,159.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""273"", ""tyndp_status""=>""under_construction""",28.02475,44.323848,26.7166,45.0762,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_32,in_permitting,140.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""275"", ""tyndp_status""=>""in_permitting""",27.960205,45.447607,26.872559,46.265341,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_33,under_construction,86.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/138"", ""tyndp2020_proj_id""=>""138"", ""tyndp2020_invest_id""=>""800"", ""tyndp_status""=>""under_construction""",27.610016,43.326177,27.358704,42.576344,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_34,in_permitting,151.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""256"", ""tyndp_status""=>""in_permitting""",26.003265,42.200038,23.083964803314,40.8967964275543,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_35,under_construction,13.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""258"", ""tyndp_status""=>""under_construction""",26.003265,42.200038,25.804138,41.964596,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_36,under_construction,150.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""262"", ""tyndp_status""=>""under_construction""",26.003265,42.200038,27.358704,42.576344,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_37,under_construction,131.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""238"", ""tyndp_status""=>""under_construction""",21.88777,45.30413,20.706482,44.86755,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_38,under_construction,116.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""269"", ""tyndp_status""=>""under_construction""",22.578278,44.679395,21.88777,45.30413,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_39,in_permitting,274.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.2815,45.7426,21.2815,45.7426,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_43,planned_not_yet_permitting,57.11,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1661"", ""tyndp_status""=>""planned_not_yet_permitting""",16.11557,54.132674,16.6857237480894,54.0342010066989,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_44,planned_not_yet_permitting,119.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1662"", ""tyndp_status""=>""planned_not_yet_permitting""",16.858521,53.16571,16.6857237480894,54.0342010066989,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_45,planned_not_yet_permitting,288.5,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1664"", ""tyndp_status""=>""planned_not_yet_permitting""",14.831543,53.330873,18.104095,54.714309,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_46,planned_not_yet_permitting,77.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1665"", ""tyndp_status""=>""planned_not_yet_permitting""",18.104095,54.714309,18.684998,54.266026,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_47,in_permitting,92.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/183"", ""tyndp2020_proj_id""=>""183"", ""tyndp2020_invest_id""=>""1018"", ""tyndp_status""=>""in_permitting""",8.86459400000001,55.074436,8.66683999999999,55.481966,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_48,under_construction,60.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/186"", ""tyndp2020_proj_id""=>""186"", ""tyndp2020_invest_id""=>""886"", ""tyndp_status""=>""under_construction""",16.399841,48.323387,16.820068,48.943249,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_49,in_permitting,60.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/187"", ""tyndp2020_proj_id""=>""187"", ""tyndp2020_invest_id""=>""997"", ""tyndp_status""=>""in_permitting""",13.080597,48.256684,13.080597,48.256684,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_50,under_construction,300.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/197"", ""tyndp2020_proj_id""=>""197"", ""tyndp2020_invest_id""=>""742"", ""tyndp_status""=>""under_construction""",26.114502,64.778807,25.180664,62.262171,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_51,in_permitting,83.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""308"", ""tyndp_status""=>""in_permitting""",13.191833,50.341955,12.675274,50.160683,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_52,under_construction,87.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/200"", ""tyndp2020_proj_id""=>""200"", ""tyndp2020_invest_id""=>""309"", ""tyndp_status""=>""under_construction""",12.675274,50.160683,13.282471,49.60804,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_53,under_construction,60.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""939"", ""tyndp_status""=>""under_construction""",8.09143099999999,53.313647,7.23587000000001,53.374317,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_54,under_construction,30.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/207"", ""tyndp2020_proj_id""=>""207"", ""tyndp2020_invest_id""=>""1684"", ""tyndp_status""=>""under_construction""",8.09143099999999,53.313647,8.00079299999999,53.55581,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_56,under_construction,182.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/208"", ""tyndp2020_proj_id""=>""208"", ""tyndp2020_invest_id""=>""156"", ""tyndp_status""=>""under_construction""",6.615143,51.630805,7.38830599999999,53.076703,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_57,in_permitting,45.2,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""627"", ""tyndp_status""=>""in_permitting""",19.500315,43.953021,19.388123,43.723475,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_58,in_permitting,100.0,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""",19.500315,43.953021,19.315338,43.347152,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_59,under_construction,151.0,2019,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1526"", ""tyndp_status""=>""under_construction""",18.772888,42.315909,19.315338,43.347152,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_60,under_construction,,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""1527"", ""tyndp_status""=>""under_construction""",20.928955,44.056999,20.739984,43.680615,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_61,planned_not_yet_permitting,32.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/228"", ""tyndp2020_proj_id""=>""228"", ""tyndp2020_invest_id""=>""1231"", ""tyndp_status""=>""planned_not_yet_permitting""",7.50366199999999,47.891485,7.71240200000001,48.103763,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_62,under_consideration,40.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1270"", ""tyndp_status""=>""under_consideration""",15.038505,52.76751,15.5,51.93333,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_63,under_consideration,40.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1271"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,16.729431,52.32359,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_64,under_consideration,90.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1673"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,16.056519,51.449728,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_65,under_consideration,80.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/229"", ""tyndp2020_proj_id""=>""229"", ""tyndp2020_invest_id""=>""1674"", ""tyndp_status""=>""under_consideration""",15.5,51.93333,14.615936,52.125058,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_66,in_permitting,100.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""355"", ""tyndp_status""=>""in_permitting""",15.086975,51.069017,16.365509,50.816348,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_67,under_consideration,11.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/231"", ""tyndp2020_proj_id""=>""231"", ""tyndp2020_invest_id""=>""1282"", ""tyndp_status""=>""under_consideration""",8.16970799999999,47.523693,8.205414,47.649662,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_68,under_consideration,91.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1276"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.538055,44.455349,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_69,under_consideration,46.2,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1277"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.436344,44.904884,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_70,under_consideration,25.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1279"", ""tyndp_status""=>""under_consideration""",18.420959,45.289022,18.420959,45.289022,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_71,under_consideration,47.8,2032,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/241"", ""tyndp2020_proj_id""=>""241"", ""tyndp2020_invest_id""=>""1530"", ""tyndp_status""=>""under_consideration""",18.436344,44.904884,18.538055,44.455349,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_72,under_consideration,70.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/243"", ""tyndp2020_proj_id""=>""243"", ""tyndp2020_invest_id""=>""1269"", ""tyndp_status""=>""under_consideration""",18.663025,45.454351,19.175262,45.75411,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_73,planned_not_yet_permitting,65.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/244"", ""tyndp2020_proj_id""=>""244"", ""tyndp2020_invest_id""=>""1245"", ""tyndp_status""=>""planned_not_yet_permitting""",6.25122100000001,49.182601,7.028503,49.340336,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_74,under_construction,27.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/245"", ""tyndp2020_proj_id""=>""245"", ""tyndp2020_invest_id""=>""1246"", ""tyndp_status""=>""under_construction""",6.936493,53.145947,7.389679,53.097323,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_76,planned_not_yet_permitting,90.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1050"", ""tyndp_status""=>""planned_not_yet_permitting""",5.71701000000001,51.094036,5.35583499999999,50.557942,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_77,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1456"", ""tyndp_status""=>""in_permitting""",4.603271,51.209464,5.71701000000001,51.094036,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_78,planned_not_yet_permitting,60.0,2033,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1515"", ""tyndp_status""=>""planned_not_yet_permitting""",5.35583499999999,50.557942,4.35470599999999,50.529143,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_79,planned_not_yet_permitting,47.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1516"", ""tyndp_status""=>""planned_not_yet_permitting""",4.22012299999999,50.864911,4.35470599999999,50.529143,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_80,planned_not_yet_permitting,16.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1517"", ""tyndp_status""=>""planned_not_yet_permitting""",4.177551,51.162122,4.22012299999999,50.864911,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_81,planned_not_yet_permitting,36.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/252"", ""tyndp2020_proj_id""=>""252"", ""tyndp2020_invest_id""=>""1676"", ""tyndp_status""=>""planned_not_yet_permitting""",4.177551,51.162122,4.603271,51.209464,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_82,under_construction,125.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/258"", ""tyndp2020_proj_id""=>""258"", ""tyndp2020_invest_id""=>""667"", ""tyndp_status""=>""under_construction""",9.24087500000001,53.906765,8.86459400000001,55.074436,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_83,under_consideration,120.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/259"", ""tyndp2020_proj_id""=>""259"", ""tyndp2020_invest_id""=>""1205"", ""tyndp_status""=>""under_consideration""",21.566162,47.659838,22.026215,47.044861,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_84,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,8.298798,47.148634,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_85,under_consideration,1.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1258"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.253235,46.824496,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_86,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.80228979023356,47.6377345779987,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_87,under_consideration,,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/263"", ""tyndp2020_proj_id""=>""263"", ""tyndp2020_invest_id""=>""1583"", ""tyndp_status""=>""under_consideration""",9.556022,47.302744,9.790192,47.138359,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_88,in_permitting,64.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1259"", ""tyndp_status""=>""in_permitting""",8.16970799999999,47.523693,8.298798,47.148634,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_89,in_permitting,45.4,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1287"", ""tyndp_status""=>""in_permitting""",7.19192499999999,47.364874,7.22213700000001,47.007416,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_90,in_permitting,87.1,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1288"", ""tyndp_status""=>""in_permitting""",8.298798,47.148634,8.32488999999999,46.532414,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_92,in_permitting,124.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1286"", ""tyndp_status""=>""in_permitting""",7.555847,46.336499,8.795929,46.401882,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_93,in_permitting,106.6,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1733"", ""tyndp_status""=>""in_permitting""",7.64236499999999,47.079475,7.555847,46.336499,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_94,under_construction,30.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/266"", ""tyndp2020_proj_id""=>""266"", ""tyndp2020_invest_id""=>""1734"", ""tyndp_status""=>""under_construction""",7.165833,46.200745,7.555847,46.336499,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_95,planned_not_yet_permitting,110.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1212"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.14818,42.10892,-1.671123,41.952398,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_96,planned_not_yet_permitting,80.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1208"", ""tyndp_status""=>""planned_not_yet_permitting""",-0.812988000000009,43.979969,-0.575409000000004,43.345155,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_97,under_construction,1.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""",4.307132,51.301299,4.307132,51.301299,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_98,under_construction,128.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/312"", ""tyndp2020_proj_id""=>""312"", ""tyndp2020_invest_id""=>""1472"", ""tyndp_status""=>""under_construction""",13.080597,48.256684,12.803192,47.244746,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_99,in_permitting,90.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/313"", ""tyndp2020_proj_id""=>""313"", ""tyndp2020_invest_id""=>""1473"", ""tyndp_status""=>""in_permitting""",12.172852,48.638354,13.080597,48.256684,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_100,under_construction,80.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/320"", ""tyndp2020_proj_id""=>""320"", ""tyndp2020_invest_id""=>""1558"", ""tyndp_status""=>""under_construction""",15.724182,46.386728,16.689606,46.633408,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_101,in_permitting,85.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""",10.06485,48.282279,9.73251299999999,47.623752,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_104,planned_not_yet_permitting,40.0,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/328"", ""tyndp2020_proj_id""=>""328"", ""tyndp2020_invest_id""=>""1630"", ""tyndp_status""=>""planned_not_yet_permitting""",6.590884,49.789617,6.140853,49.688695,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_105,under_consideration,78.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/330"", ""tyndp2020_proj_id""=>""330"", ""tyndp2020_invest_id""=>""1498"", ""tyndp_status""=>""under_consideration""",17.440796,49.236431,18.287416,49.038186,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_107,planned_not_yet_permitting,100.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/340"", ""tyndp2020_proj_id""=>""340"", ""tyndp2020_invest_id""=>""1519"", ""tyndp_status""=>""planned_not_yet_permitting""",3.429108,50.773813,4.35470599999999,50.529143,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_108,under_consideration,60.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1538"", ""tyndp_status""=>""under_consideration""",20.9729,44.874362,20.378265,44.819838,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_109,planned_not_yet_permitting,180.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1532"", ""tyndp_status""=>""planned_not_yet_permitting""",17.201843,44.772087,15.26017,44.886816,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_110,planned_not_yet_permitting,68.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1533"", ""tyndp_status""=>""planned_not_yet_permitting""",15.26017,44.886816,14.558258,45.323186,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_111,under_consideration,165.0,2040,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/344"", ""tyndp2020_proj_id""=>""344"", ""tyndp2020_invest_id""=>""1541"", ""tyndp_status""=>""under_consideration""",6.14410399999999,52.52207,5.671692,51.908696,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_113,under_construction,161.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""",20.725963,41.239159,19.966278,41.16108,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_115,under_consideration,38.8,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1593"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-3.05282599999999,43.265206,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_116,under_consideration,69.12,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1595"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-2.24395799999999,43.047816,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_117,under_consideration,57.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/379"", ""tyndp2020_proj_id""=>""379"", ""tyndp2020_invest_id""=>""1597"", ""tyndp_status""=>""under_consideration""",-2.880286,43.349776,-2.20687899999999,43.098977,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_120,under_construction,14.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1685"", ""tyndp_status""=>""under_construction""",9.48532099999999,53.629168,9.48532099999999,53.629168,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_121,under_construction,60.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",10.299683,52.286643,9.988131,51.954234,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_122,under_construction,45.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",9.988131,51.954234,9.852428,51.649318,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_123,under_construction,105.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1043"", ""tyndp2020_proj_id""=>""1043"", ""tyndp2020_invest_id""=>""1686"", ""tyndp_status""=>""under_construction""",9.852428,51.649318,9.621277,50.85971,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_124,in_permitting,290.0,2028,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1688"", ""tyndp_status""=>""in_permitting""",26.842346,64.556701,27.766571,62.262171,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_125,in_permitting,100.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1689"", ""tyndp_status""=>""in_permitting""",25.692902,65.279688,26.842346,64.556701,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_126,planned_not_yet_permitting,175.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1046"", ""tyndp2020_proj_id""=>""1046"", ""tyndp2020_invest_id""=>""1697"", ""tyndp_status""=>""planned_not_yet_permitting""",25.180664,62.262171,24.915619,60.90707,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_127,under_consideration,31.0,2035,True,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1047"", ""tyndp2020_proj_id""=>""1047"", ""tyndp2020_invest_id""=>""1691"", ""tyndp_status""=>""under_consideration""",7.23587000000001,53.374317,6.86370800000001,53.418536,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_128,planned_not_yet_permitting,170.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1052"", ""tyndp2020_proj_id""=>""1052"", ""tyndp2020_invest_id""=>""1713"", ""tyndp_status""=>""planned_not_yet_permitting""",12.693329,46.798179,14.5912685597917,46.536256583087,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_129,planned_not_yet_permitting,105.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1054"", ""tyndp2020_proj_id""=>""1054"", ""tyndp2020_invest_id""=>""1715"", ""tyndp_status""=>""planned_not_yet_permitting""",10.897064,47.236355,11.964111,47.292271,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_130,under_consideration,90.0,2035,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1056"", ""tyndp2020_proj_id""=>""1056"", ""tyndp2020_invest_id""=>""1723"", ""tyndp_status""=>""under_consideration""",16.78425,43.503952,17.436701,43.052743,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_132,in_permitting,50.0,2027,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""645"", ""tyndp_status""=>""in_permitting""",15.996094,39.990799,16.020813,39.780047,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_133,in_permitting,,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""",15.03067,40.66814,15.058136,40.941527,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_134,in_permitting,,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1059"", ""tyndp2020_proj_id""=>""1059"", ""tyndp2020_invest_id""=>""1727"", ""tyndp_status""=>""in_permitting""",15.058136,40.941527,14.957886,41.143501,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_135,under_construction,40.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1063"", ""tyndp2020_proj_id""=>""1063"", ""tyndp2020_invest_id""=>""1731"", ""tyndp_status""=>""under_construction""",4.218787,51.424034,4.218787,51.424034,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_136,under_consideration,50.6,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1742"", ""tyndp_status""=>""under_consideration""",19.720459,46.020807,20.170898,46.29856,2,Al/St 240/40 4-bundle 380.0
+TYNDP2020_137,under_consideration,80.0,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1743"", ""tyndp_status""=>""under_consideration""",19.175262,45.75411,19.756165,45.527517,2,Al/St 240/40 4-bundle 380.0
diff --git a/data/transmission_projects/tyndp2020/new_links.csv b/data/transmission_projects/tyndp2020/new_links.csv
index dfe8b80e5..a0dfb7338 100644
--- a/data/transmission_projects/tyndp2020/new_links.csv
+++ b/data/transmission_projects/tyndp2020/new_links.csv
@@ -1,55 +1,51 @@
,project_status,length,build_year,underground,p_nom,tags,x0,y0,x1,y1
-TYNDP2020_0,under_consideration,330,2033,True,600,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/234"", ""tyndp2020_proj_id""=>""234"", ""tyndp2020_invest_id""=>""1236"", ""tyndp_status""=>""under_consideration""",12.492828,55.609384,16.11557,54.132674
-TYNDP2020_1,in_permitting,700,2026,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""",9.24087500000001,53.906765,9.12211621382025,49.0939516665424
-TYNDP2020_2,in_permitting,558,2026,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""",9.327393,53.931837,10.081329,49.950336
-TYNDP2020_3,under_consideration,200,2035,True,800,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/239"", ""tyndp2020_proj_id""=>""239"", ""tyndp2020_invest_id""=>""1241"", ""tyndp_status""=>""under_consideration""",17.166138,63.184727,21.901245,63.03068
-TYNDP2020_4,planned_not_yet_permitting,267,2030,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1692"", ""tyndp_status""=>""planned_not_yet_permitting""",8.00079299999999,53.55581,8.06808499999999,51.653815
-TYNDP2020_5,planned_not_yet_permitting,407,2030,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1693"", ""tyndp_status""=>""planned_not_yet_permitting""",9.13101199999999,54.20101,7.06420899999999,51.66063
-TYNDP2020_6,under_construction,445,2026,True,600,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/28"", ""tyndp2020_proj_id""=>""28"", ""tyndp2020_invest_id""=>""1503"", ""tyndp_status""=>""under_construction""",14.028168,42.409263,18.772888,42.315909
-TYNDP2020_7,in_permitting,240,2023,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/247"", ""tyndp2020_proj_id""=>""247"", ""tyndp2020_invest_id""=>""1381"", ""tyndp_status""=>""in_permitting""",-1.05331400000001,50.900435,1.11373900000001,49.712937
-TYNDP2020_8,under_consideration,133,2027,True,700,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1040"", ""tyndp2020_proj_id""=>""1040"", ""tyndp2020_invest_id""=>""1677"", ""tyndp_status""=>""under_consideration""",-5.80902099999999,54.726206,-4.880676,55.704677
-TYNDP2020_9,under_construction,623,2020,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/37"", ""tyndp2020_proj_id""=>""37"", ""tyndp2020_invest_id""=>""142"", ""tyndp_status""=>""under_construction""",6.82251000000001,58.660514,9.327393,53.931837
-TYNDP2020_10,in_permitting,340,2024,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/254"", ""tyndp2020_proj_id""=>""254"", ""tyndp2020_invest_id""=>""660"", ""tyndp_status""=>""in_permitting""",6.58493,51.245584,8.478699,49.283036
-TYNDP2020_11,under_consideration,230,2025,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1049"", ""tyndp2020_proj_id""=>""1049"", ""tyndp2020_invest_id""=>""1706"", ""tyndp_status""=>""under_consideration""",0.763549999999995,51.403489,3.18054200000001,51.330612
-TYNDP2020_12,under_consideration,610,2028,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1050"", ""tyndp2020_proj_id""=>""1050"", ""tyndp2020_invest_id""=>""1707"", ""tyndp_status""=>""under_consideration""",0.482024999999987,51.519853,7.23587000000001,53.374317
-TYNDP2020_13,under_consideration,640,2028,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1051"", ""tyndp2020_proj_id""=>""1051"", ""tyndp2020_invest_id""=>""1708"", ""tyndp_status""=>""under_consideration""",1.30737299999999,52.593038,9.22851599999999,55.481188
-TYNDP2020_14,under_consideration,300,2030,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/267"", ""tyndp2020_proj_id""=>""267"", ""tyndp2020_invest_id""=>""1262"", ""tyndp_status""=>""under_consideration""",13.580475,55.86067,12.204437,53.760078
-TYNDP2020_15,planned_not_yet_permitting,230,2030,False,1500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1211"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.671123,41.952398,-0.575409000000004,43.345155
-TYNDP2020_16,under_consideration,200,2040,False,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1058"", ""tyndp2020_proj_id""=>""1058"", ""tyndp2020_invest_id""=>""1726"", ""tyndp_status""=>""under_consideration""",9.43585963014029,48.6383575221442,8.298798,47.148634
-TYNDP2020_17,in_permitting,500,2026,True,700,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/107"", ""tyndp2020_proj_id""=>""107"", ""tyndp2020_invest_id""=>""810"", ""tyndp_status""=>""in_permitting""",-8.36471600000001,51.892597,-4.237976,48.518424
-TYNDP2020_19,planned_not_yet_permitting,225,2029,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1206"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.645402,42.818157,-0.812988000000009,43.979969
-TYNDP2020_20,under_consideration,195,2036,True,500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1740"", ""tyndp_status""=>""under_consideration""",18.227692,57.571097,21.100616,56.489036
-TYNDP2020_21,planned_not_yet_permitting,156,2022,True,1500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/285"", ""tyndp2020_proj_id""=>""285"", ""tyndp2020_invest_id""=>""1383"", ""tyndp_status""=>""planned_not_yet_permitting""",0.575409000000004,51.430896,2.16293300000001,50.923813
-TYNDP2020_22,in_permitting,540,2025,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/130"", ""tyndp2020_proj_id""=>""130"", ""tyndp2020_invest_id""=>""665"", ""tyndp_status""=>""in_permitting""",11.637268,52.27404,12.292328,48.659222
-TYNDP2020_23,in_permitting,300,2025,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/132"", ""tyndp2020_proj_id""=>""132"", ""tyndp2020_invest_id""=>""661"", ""tyndp_status""=>""in_permitting""",7.23587000000001,53.374317,6.58493,51.245584
-TYNDP2020_24,under_consideration,110,2036,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1747"", ""tyndp_status""=>""under_consideration""",22.9422,40.662931,22.111359,41.50035
-TYNDP2020_25,under_consideration,170,2036,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1748"", ""tyndp_status""=>""under_consideration""",22.111359,41.50035,23.03833,42.549034
-TYNDP2020_26,under_consideration,180,2036,False,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1081"", ""tyndp2020_proj_id""=>""1081"", ""tyndp2020_invest_id""=>""1749"", ""tyndp_status""=>""under_consideration""",21.137695,39.279042,19.966278,41.16108
-TYNDP2020_27,under_consideration,665,2026,True,1800,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""",-1.972046,43.32318,-1.847076,47.30531
-TYNDP2020_28,under_consideration,665,2026,True,1800,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""",-1.847076,47.30531,-3.967438,50.489842
-TYNDP2020_29,in_permitting,100,2024,True,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""",8.63662699999999,40.644178,9.45098899999999,42.538916
-TYNDP2020_30,in_permitting,50,2024,False,400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""",9.45098899999999,42.538916,10.671844,43.014689
-TYNDP2020_31,in_permitting,170,2028,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/150"", ""tyndp2020_proj_id""=>""150"", ""tyndp2020_invest_id""=>""616"", ""tyndp_status""=>""in_permitting""",12.516174,45.825928,14.615936,46.084662
-TYNDP2020_32,in_permitting,700,2024,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/309"", ""tyndp2020_proj_id""=>""309"", ""tyndp2020_invest_id""=>""1628"", ""tyndp_status""=>""in_permitting""",0.763549999999995,51.403489,8.00079299999999,53.55581
-TYNDP2020_33,in_permitting,400,2026,True,750,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1034"", ""tyndp_status""=>""in_permitting""",21.295624,56.032924,18.104095,54.714309
-TYNDP2020_34,under_consideration,328,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1505"", ""tyndp_status""=>""under_consideration""",8.66683999999999,55.481966,3.590555,55.343106
-TYNDP2020_35,under_consideration,360,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1506"", ""tyndp_status""=>""under_consideration""",4.05120799999999,51.942572,3.590555,55.343106
-TYNDP2020_36,under_construction,69,2021,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/172"", ""tyndp2020_proj_id""=>""172"", ""tyndp2020_invest_id""=>""1487"", ""tyndp_status""=>""under_construction""",0.95855700000001,51.059523,1.833344,50.902167
-TYNDP2020_37,in_permitting,165,2024,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/174"", ""tyndp2020_proj_id""=>""174"", ""tyndp2020_invest_id""=>""1014"", ""tyndp_status""=>""in_permitting""",9.449615,45.620761,9.253235,46.824496
-TYNDP2020_38,in_permitting,300,2026,True,700,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/176"", ""tyndp2020_proj_id""=>""176"", ""tyndp2020_invest_id""=>""995"", ""tyndp_status""=>""in_permitting""",13.580475,55.86067,12.204437,53.760078
-TYNDP2020_39,under_consideration,170,2030,True,600,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/179"", ""tyndp2020_proj_id""=>""179"", ""tyndp2020_invest_id""=>""1016"", ""tyndp_status""=>""under_consideration""",11.969604,55.468735,12.271729,54.068253
-TYNDP2020_40,under_consideration,290,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1507"", ""tyndp_status""=>""under_consideration""",6.86370800000001,53.418536,3.590555,55.343106
-TYNDP2020_41,under_consideration,390,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1508"", ""tyndp_status""=>""under_consideration""",9.24087500000001,53.906765,3.590555,55.343106
-TYNDP2020_42,under_consideration,400,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1509"", ""tyndp_status""=>""under_consideration""",8.418274,53.182996,3.590555,55.343106
-TYNDP2020_43,under_consideration,490,2035,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1511"", ""tyndp_status""=>""under_consideration""",10.458984,53.435719,3.590555,55.343106
-TYNDP2020_44,planned_not_yet_permitting,400,2030,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/338"", ""tyndp2020_proj_id""=>""338"", ""tyndp2020_invest_id""=>""1521"", ""tyndp_status""=>""planned_not_yet_permitting""",14.028168,42.409263,12.811432,43.915702
-TYNDP2020_45,planned_not_yet_permitting,400,2025,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""",9.18319700000001,39.374649,13.304443,38.159396
-TYNDP2020_46,planned_not_yet_permitting,500,2025,True,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""",9.18319700000001,39.374649,14.639282,40.688969
-TYNDP2020_47,under_consideration,150,2035,False,1000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/225"", ""tyndp2020_proj_id""=>""225"", ""tyndp2020_invest_id""=>""1107"", ""tyndp_status""=>""under_consideration""",5.35583499999999,50.557942,6.568451,50.403266
-TYNDP2020_48,planned_not_yet_permitting,211,2025,False,750,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1638"", ""tyndp_status""=>""planned_not_yet_permitting""",-3.474151,53.250084,-6.602175,53.348929
-TYNDP2020_49,planned_not_yet_permitting,255,2025,False,750,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1640"", ""tyndp_status""=>""planned_not_yet_permitting""",-6.602175,53.348929,-9.578832,54.120411
-T17,in_permitting,665,2024,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/190"", ""tyndp2020_proj_id""=>""190"", ""tyndp2020_invest_id""=>""1382"", ""tyndp_status""=>""in_permitting""",7.23331357825616,60.5160767478361,-1.815491,57.484833
-T25,under_consideration,195,2023,True,500,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/286"", ""tyndp2020_proj_id""=>""286"", ""tyndp2020_invest_id""=>""1385"", ""tyndp_status""=>""planned_not_yet_permitting""",-6.96670499999999,52.27404,-4.850464,51.728729
-T12,in_permitting,220,2025,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/153"", ""tyndp2020_proj_id""=>""153"", ""tyndp2020_invest_id""=>""987"", ""tyndp_status""=>""in_permitting""",-1.47628799999999,49.460984,-3.357697,50.739062
-T13,under_construction,770,2023,True,1400,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/167"", ""tyndp2020_proj_id""=>""167"", ""tyndp2020_invest_id""=>""998"", ""tyndp_status""=>""under_construction""",9.22851599999999,55.481188,-0.208961173685554,52.9600676434916
-T0,in_permitting,370,2027,True,2000,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/16"", ""tyndp2020_proj_id""=>""16"", ""tyndp2020_invest_id""=>""38"", ""tyndp_status""=>""in_permitting""",-2.880286,43.349776,-0.341949000000001,45.030833
+TYNDP2020_0,under_consideration,330.0,2033,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/234"", ""tyndp2020_proj_id""=>""234"", ""tyndp2020_invest_id""=>""1236"", ""tyndp_status""=>""under_consideration""",12.492828,55.609384,16.11557,54.132674
+TYNDP2020_1,in_permitting,700.0,2026,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""",9.24087500000001,53.906765,9.12211621382025,49.0939516665424
+TYNDP2020_2,in_permitting,558.0,2026,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/235"", ""tyndp2020_proj_id""=>""235"", ""tyndp2020_invest_id""=>""664"", ""tyndp_status""=>""in_permitting""",9.327393,53.931837,10.081329,49.950336
+TYNDP2020_3,under_consideration,200.0,2035,True,800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/239"", ""tyndp2020_proj_id""=>""239"", ""tyndp2020_invest_id""=>""1241"", ""tyndp_status""=>""under_consideration""",17.166138,63.184727,21.901245,63.03068
+TYNDP2020_4,planned_not_yet_permitting,267.0,2030,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1692"", ""tyndp_status""=>""planned_not_yet_permitting""",8.00079299999999,53.55581,8.06808499999999,51.653815
+TYNDP2020_5,planned_not_yet_permitting,407.0,2030,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1034"", ""tyndp2020_proj_id""=>""1034"", ""tyndp2020_invest_id""=>""1693"", ""tyndp_status""=>""planned_not_yet_permitting""",9.13101199999999,54.20101,7.06420899999999,51.66063
+TYNDP2020_6,under_construction,445.0,2026,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/28"", ""tyndp2020_proj_id""=>""28"", ""tyndp2020_invest_id""=>""1503"", ""tyndp_status""=>""under_construction""",14.028168,42.409263,18.772888,42.315909
+TYNDP2020_7,in_permitting,240.0,2023,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/247"", ""tyndp2020_proj_id""=>""247"", ""tyndp2020_invest_id""=>""1381"", ""tyndp_status""=>""in_permitting""",-1.05331400000001,50.900435,1.11373900000001,49.712937
+TYNDP2020_8,under_consideration,133.0,2027,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1040"", ""tyndp2020_proj_id""=>""1040"", ""tyndp2020_invest_id""=>""1677"", ""tyndp_status""=>""under_consideration""",-5.80902099999999,54.726206,-4.880676,55.704677
+TYNDP2020_9,under_construction,623.0,2020,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/37"", ""tyndp2020_proj_id""=>""37"", ""tyndp2020_invest_id""=>""142"", ""tyndp_status""=>""under_construction""",6.82251000000001,58.660514,9.327393,53.931837
+TYNDP2020_10,in_permitting,340.0,2024,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/254"", ""tyndp2020_proj_id""=>""254"", ""tyndp2020_invest_id""=>""660"", ""tyndp_status""=>""in_permitting""",6.58493,51.245584,8.478699,49.283036
+TYNDP2020_11,under_consideration,230.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1049"", ""tyndp2020_proj_id""=>""1049"", ""tyndp2020_invest_id""=>""1706"", ""tyndp_status""=>""under_consideration""",0.763549999999995,51.403489,3.18054200000001,51.330612
+TYNDP2020_12,under_consideration,610.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1050"", ""tyndp2020_proj_id""=>""1050"", ""tyndp2020_invest_id""=>""1707"", ""tyndp_status""=>""under_consideration""",0.482024999999987,51.519853,7.23587000000001,53.374317
+TYNDP2020_13,under_consideration,640.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1051"", ""tyndp2020_proj_id""=>""1051"", ""tyndp2020_invest_id""=>""1708"", ""tyndp_status""=>""under_consideration""",1.30737299999999,52.593038,9.22851599999999,55.481188
+TYNDP2020_14,under_consideration,300.0,2030,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/267"", ""tyndp2020_proj_id""=>""267"", ""tyndp2020_invest_id""=>""1262"", ""tyndp_status""=>""under_consideration""",13.580475,55.86067,12.204437,53.760078
+TYNDP2020_15,planned_not_yet_permitting,230.0,2030,False,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1211"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.671123,41.952398,-0.575409000000004,43.345155
+TYNDP2020_16,under_consideration,200.0,2040,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1058"", ""tyndp2020_proj_id""=>""1058"", ""tyndp2020_invest_id""=>""1726"", ""tyndp_status""=>""under_consideration""",9.43585963014029,48.6383575221442,8.298798,47.148634
+TYNDP2020_17,in_permitting,500.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/107"", ""tyndp2020_proj_id""=>""107"", ""tyndp2020_invest_id""=>""810"", ""tyndp_status""=>""in_permitting""",-8.36471600000001,51.892597,-4.237976,48.518424
+TYNDP2020_18,under_construction,720.0,2021,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/110"", ""tyndp2020_proj_id""=>""110"", ""tyndp2020_invest_id""=>""424"", ""tyndp_status""=>""under_construction""",6.649475,59.461826,-1.572418,55.113728
+TYNDP2020_19,planned_not_yet_permitting,225.0,2029,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1206"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.645402,42.818157,-0.812988000000009,43.979969
+TYNDP2020_20,under_consideration,195.0,2036,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1740"", ""tyndp_status""=>""under_consideration""",18.227692,57.571097,21.100616,56.489036
+TYNDP2020_21,planned_not_yet_permitting,156.0,2022,True,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/285"", ""tyndp2020_proj_id""=>""285"", ""tyndp2020_invest_id""=>""1383"", ""tyndp_status""=>""planned_not_yet_permitting""",0.575409000000004,51.430896,2.16293300000001,50.923813
+TYNDP2020_22,in_permitting,540.0,2025,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/130"", ""tyndp2020_proj_id""=>""130"", ""tyndp2020_invest_id""=>""665"", ""tyndp_status""=>""in_permitting""",11.637268,52.27404,12.292328,48.659222
+TYNDP2020_23,in_permitting,300.0,2025,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/132"", ""tyndp2020_proj_id""=>""132"", ""tyndp2020_invest_id""=>""661"", ""tyndp_status""=>""in_permitting""",7.23587000000001,53.374317,6.58493,51.245584
+TYNDP2020_24,under_consideration,110.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1747"", ""tyndp_status""=>""under_consideration""",22.9422,40.662931,22.111359,41.50035
+TYNDP2020_25,under_consideration,170.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1077"", ""tyndp2020_proj_id""=>""1077"", ""tyndp2020_invest_id""=>""1748"", ""tyndp_status""=>""under_consideration""",22.111359,41.50035,23.03833,42.549034
+TYNDP2020_26,under_consideration,180.0,2036,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1081"", ""tyndp2020_proj_id""=>""1081"", ""tyndp2020_invest_id""=>""1749"", ""tyndp_status""=>""under_consideration""",21.137695,39.279042,19.966278,41.16108
+TYNDP2020_27,under_consideration,665.0,2026,True,1800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""",-1.972046,43.32318,-1.847076,47.30531
+TYNDP2020_28,under_consideration,665.0,2026,True,1800.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/296"", ""tyndp2020_proj_id""=>""296"", ""tyndp2020_invest_id""=>""1437"", ""tyndp_status""=>""under_consideration""",-1.847076,47.30531,-3.967438,50.489842
+TYNDP2020_29,in_permitting,100.0,2024,True,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""",8.63662699999999,40.644178,9.45098899999999,42.538916
+TYNDP2020_30,in_permitting,50.0,2024,False,400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/299"", ""tyndp2020_proj_id""=>""299"", ""tyndp2020_invest_id""=>""1458"", ""tyndp_status""=>""in_permitting""",9.45098899999999,42.538916,10.671844,43.014689
+TYNDP2020_31,in_permitting,170.0,2028,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/150"", ""tyndp2020_proj_id""=>""150"", ""tyndp2020_invest_id""=>""616"", ""tyndp_status""=>""in_permitting""",12.516174,45.825928,14.615936,46.084662
+TYNDP2020_32,in_permitting,700.0,2024,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/309"", ""tyndp2020_proj_id""=>""309"", ""tyndp2020_invest_id""=>""1628"", ""tyndp_status""=>""in_permitting""",0.763549999999995,51.403489,8.00079299999999,53.55581
+TYNDP2020_33,in_permitting,400.0,2026,True,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1034"", ""tyndp_status""=>""in_permitting""",21.295624,56.032924,18.104095,54.714309
+TYNDP2020_34,under_consideration,328.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1505"", ""tyndp_status""=>""under_consideration""",8.66683999999999,55.481966,3.590555,55.343106
+TYNDP2020_35,under_consideration,360.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1506"", ""tyndp_status""=>""under_consideration""",4.05120799999999,51.942572,3.590555,55.343106
+TYNDP2020_36,under_construction,69.0,2021,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/172"", ""tyndp2020_proj_id""=>""172"", ""tyndp2020_invest_id""=>""1487"", ""tyndp_status""=>""under_construction""",0.95855700000001,51.059523,1.833344,50.902167
+TYNDP2020_37,in_permitting,165.0,2024,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/174"", ""tyndp2020_proj_id""=>""174"", ""tyndp2020_invest_id""=>""1014"", ""tyndp_status""=>""in_permitting""",9.449615,45.620761,9.253235,46.824496
+TYNDP2020_38,in_permitting,300.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/176"", ""tyndp2020_proj_id""=>""176"", ""tyndp2020_invest_id""=>""995"", ""tyndp_status""=>""in_permitting""",13.580475,55.86067,12.204437,53.760078
+TYNDP2020_39,under_consideration,170.0,2030,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/179"", ""tyndp2020_proj_id""=>""179"", ""tyndp2020_invest_id""=>""1016"", ""tyndp_status""=>""under_consideration""",11.969604,55.468735,12.271729,54.068253
+TYNDP2020_40,under_consideration,290.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1507"", ""tyndp_status""=>""under_consideration""",6.86370800000001,53.418536,3.590555,55.343106
+TYNDP2020_41,under_consideration,390.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1508"", ""tyndp_status""=>""under_consideration""",9.24087500000001,53.906765,3.590555,55.343106
+TYNDP2020_42,under_consideration,400.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1509"", ""tyndp_status""=>""under_consideration""",8.418274,53.182996,3.590555,55.343106
+TYNDP2020_43,under_consideration,490.0,2035,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/335"", ""tyndp2020_proj_id""=>""335"", ""tyndp2020_invest_id""=>""1511"", ""tyndp_status""=>""under_consideration""",10.458984,53.435719,3.590555,55.343106
+TYNDP2020_44,planned_not_yet_permitting,400.0,2030,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/338"", ""tyndp2020_proj_id""=>""338"", ""tyndp2020_invest_id""=>""1521"", ""tyndp_status""=>""planned_not_yet_permitting""",14.028168,42.409263,12.811432,43.915702
+TYNDP2020_45,planned_not_yet_permitting,400.0,2025,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""",9.18319700000001,39.374649,13.304443,38.159396
+TYNDP2020_46,planned_not_yet_permitting,500.0,2025,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/339"", ""tyndp2020_proj_id""=>""339"", ""tyndp2020_invest_id""=>""1557"", ""tyndp_status""=>""planned_not_yet_permitting""",9.18319700000001,39.374649,14.639282,40.688969
+TYNDP2020_47,under_consideration,150.0,2035,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/225"", ""tyndp2020_proj_id""=>""225"", ""tyndp2020_invest_id""=>""1107"", ""tyndp_status""=>""under_consideration""",5.35583499999999,50.557942,6.568451,50.403266
+TYNDP2020_48,planned_not_yet_permitting,211.0,2025,False,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1638"", ""tyndp_status""=>""planned_not_yet_permitting""",-3.474151,53.250084,-6.602175,53.348929
+TYNDP2020_49,planned_not_yet_permitting,255.0,2025,False,750.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/349"", ""tyndp2020_proj_id""=>""349"", ""tyndp2020_invest_id""=>""1640"", ""tyndp_status""=>""planned_not_yet_permitting""",-6.602175,53.348929,-9.578832,54.120411
diff --git a/data/transmission_projects/tyndp2020/upgraded_lines.csv b/data/transmission_projects/tyndp2020/upgraded_lines.csv
index e580a51aa..ecf07b6aa 100644
--- a/data/transmission_projects/tyndp2020/upgraded_lines.csv
+++ b/data/transmission_projects/tyndp2020/upgraded_lines.csv
@@ -1,27 +1,27 @@
-,project_status,length,build_year,underground,v_nom,tags,x0,y0,x1,y1,num_parallel
-6031,in_permitting,32.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1490"", ""tyndp_status""=>""in_permitting""",5.763702,52.619725,6.14410399999999,52.52207,2
-5123,in_permitting,35.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1539"", ""tyndp_status""=>""in_permitting""",4.592285,51.916321,4.83398400000001,51.704055,2
-8435,planned_not_yet_permitting,41.5,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1663"", ""tyndp_status""=>""planned_not_yet_permitting""",14.440155,53.16571,14.831543,53.330873,2
-12697,in_permitting,70.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""353"", ""tyndp_status""=>""in_permitting""",14.440155,53.16571,15.038505,52.76751,2
-14734,under_construction,49.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1284"", ""tyndp_status""=>""under_construction""",10.362854,46.809459,9.79568500000001,46.561693,2
-6348,under_construction,17.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""",4.26544200000001,51.358062,4.307132,51.301299,2
-6347,in_permitting,4.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""",4.307132,51.301299,4.27917500000001,51.25504,2
-10813,in_permitting,10.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""",9.73251299999999,47.623752,9.80228979023356,47.6377345779987,2
-14499,under_consideration,2.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1536"", ""tyndp_status""=>""under_consideration""",22.578278,44.679395,22.542572,44.612956,2
-9296,planned_not_yet_permitting,203.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1534"", ""tyndp_status""=>""planned_not_yet_permitting""",15.26017,44.886816,16.500092,43.603267,2
-6044,in_permitting,80.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/346"", ""tyndp2020_proj_id""=>""346"", ""tyndp2020_invest_id""=>""1544"", ""tyndp_status""=>""in_permitting""",4.218787,51.424034,5.061511,51.608344,2
-6087,under_construction,40.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/348"", ""tyndp2020_proj_id""=>""348"", ""tyndp2020_invest_id""=>""1546"", ""tyndp_status""=>""under_construction""",6.86370800000001,53.418536,6.474759,53.213488,2
-14697,under_consideration,35.512,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/376"", ""tyndp2020_proj_id""=>""376"", ""tyndp2020_invest_id""=>""1559"", ""tyndp_status""=>""under_consideration""",21.474152,40.839788,21.475525,41.045181,2
-14758,under_consideration,12.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/377"", ""tyndp2020_proj_id""=>""377"", ""tyndp2020_invest_id""=>""1561"", ""tyndp_status""=>""under_consideration""",5.71701000000001,51.094036,5.89691199999999,51.140586,2
-8621,in_permitting,131.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""",-7.72338899999999,41.614416,-7.793621146853301,41.52102394053344,2
-6036,in_permitting,50.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1540"", ""tyndp_status""=>""in_permitting""",5.46295200000001,51.422333,5.89691199999999,51.140586,2
-3715,in_permitting,94.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""257"", ""tyndp_status""=>""in_permitting""",26.003265,42.200038,24.483032,42.09007,2
-8260,in_permitting,74.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.88777,45.30413,21.2815,45.7426,2
-8367,in_permitting,274.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.2815,45.7426,21.409607,46.176978,2
-1693,in_permitting,,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""",20.187378,44.664746,19.500315,43.953021,2
-12696,in_permitting,147.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""1232"", ""tyndp_status""=>""in_permitting""",15.038505,52.76751,16.729431,52.32359,2
-3966,planned_not_yet_permitting,70.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1207"", ""tyndp_status""=>""planned_not_yet_permitting""",-0.812988000000009,43.979969,-0.547943,44.563077,2
-14277,in_permitting,15.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""",4.27917500000001,51.25504,4.177551,51.162122,2
-14594,under_consideration,70.0,2034,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/325"", ""tyndp2020_proj_id""=>""325"", ""tyndp2020_invest_id""=>""1483"", ""tyndp_status""=>""under_consideration""",14.5912685597917,46.536256583087,15.119934,46.263443,2
-12655,under_construction,161.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""",21.475525,41.045181,20.725963,41.239159,2
-6355,under_consideration,90.0,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1744"", ""tyndp_status""=>""under_consideration""",19.756165,45.527517,19.609222,45.021127,2
+,project_status,length,build_year,underground,v_nom,tags,x0,y0,x1,y1,num_parallel,type
+6031,in_permitting,32.0,2024,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1490"", ""tyndp_status""=>""in_permitting""",5.763702,52.619725,6.14410399999999,52.52207,2,Al/St 240/40 4-bundle 380.0
+5123,in_permitting,35.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1539"", ""tyndp_status""=>""in_permitting""",4.592285,51.916321,4.83398400000001,51.704055,2,Al/St 240/40 4-bundle 380.0
+8435,planned_not_yet_permitting,41.5,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/170"", ""tyndp2020_proj_id""=>""170"", ""tyndp2020_invest_id""=>""1663"", ""tyndp_status""=>""planned_not_yet_permitting""",14.440155,53.16571,14.831543,53.330873,2,Al/St 240/40 4-bundle 380.0
+12697,in_permitting,70.0,2021,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""353"", ""tyndp_status""=>""in_permitting""",14.440155,53.16571,15.038505,52.76751,2,Al/St 240/40 4-bundle 380.0
+14734,under_construction,49.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/264"", ""tyndp2020_proj_id""=>""264"", ""tyndp2020_invest_id""=>""1284"", ""tyndp_status""=>""under_construction""",10.362854,46.809459,9.79568500000001,46.561693,2,Al/St 240/40 4-bundle 380.0
+6348,under_construction,17.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""445"", ""tyndp_status""=>""under_construction""",4.26544200000001,51.358062,4.307132,51.301299,2,Al/St 240/40 4-bundle 380.0
+6347,in_permitting,4.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""",4.307132,51.301299,4.27917500000001,51.25504,2,Al/St 240/40 4-bundle 380.0
+10813,in_permitting,10.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/322"", ""tyndp2020_proj_id""=>""322"", ""tyndp2020_invest_id""=>""1476"", ""tyndp_status""=>""in_permitting""",9.73251299999999,47.623752,9.80228979023356,47.6377345779987,2,Al/St 240/40 4-bundle 380.0
+14499,under_consideration,2.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/341"", ""tyndp2020_proj_id""=>""341"", ""tyndp2020_invest_id""=>""1536"", ""tyndp_status""=>""under_consideration""",22.578278,44.679395,22.542572,44.612956,2,Al/St 240/40 4-bundle 380.0
+9296,planned_not_yet_permitting,203.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/343"", ""tyndp2020_proj_id""=>""343"", ""tyndp2020_invest_id""=>""1534"", ""tyndp_status""=>""planned_not_yet_permitting""",15.26017,44.886816,16.500092,43.603267,2,Al/St 240/40 4-bundle 380.0
+6044,in_permitting,80.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/346"", ""tyndp2020_proj_id""=>""346"", ""tyndp2020_invest_id""=>""1544"", ""tyndp_status""=>""in_permitting""",4.218787,51.424034,5.061511,51.608344,2,Al/St 240/40 4-bundle 380.0
+6087,under_construction,40.0,2023,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/348"", ""tyndp2020_proj_id""=>""348"", ""tyndp2020_invest_id""=>""1546"", ""tyndp_status""=>""under_construction""",6.86370800000001,53.418536,6.474759,53.213488,2,Al/St 240/40 4-bundle 380.0
+14697,under_consideration,35.512,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/376"", ""tyndp2020_proj_id""=>""376"", ""tyndp2020_invest_id""=>""1559"", ""tyndp_status""=>""under_consideration""",21.474152,40.839788,21.475525,41.045181,2,Al/St 240/40 4-bundle 380.0
+14758,under_consideration,12.0,2030,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/377"", ""tyndp2020_proj_id""=>""377"", ""tyndp2020_invest_id""=>""1561"", ""tyndp_status""=>""under_consideration""",5.71701000000001,51.094036,5.89691199999999,51.140586,2,Al/St 240/40 4-bundle 380.0
+8621,in_permitting,131.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1"", ""tyndp2020_proj_id""=>""1"", ""tyndp2020_invest_id""=>""4"", ""tyndp_status""=>""in_permitting""",-7.72338899999999,41.614416,-7.793621146853301,41.52102394053344,2,Al/St 240/40 4-bundle 380.0
+6036,in_permitting,50.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/103"", ""tyndp2020_proj_id""=>""103"", ""tyndp2020_invest_id""=>""1540"", ""tyndp_status""=>""in_permitting""",5.46295200000001,51.422333,5.89691199999999,51.140586,2,Al/St 240/40 4-bundle 380.0
+3715,in_permitting,94.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/142"", ""tyndp2020_proj_id""=>""142"", ""tyndp2020_invest_id""=>""257"", ""tyndp_status""=>""in_permitting""",26.003265,42.200038,24.483032,42.09007,2,Al/St 240/40 4-bundle 380.0
+8260,in_permitting,74.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.88777,45.30413,21.2815,45.7426,2,Al/St 240/40 4-bundle 380.0
+8367,in_permitting,274.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/144"", ""tyndp2020_proj_id""=>""144"", ""tyndp2020_invest_id""=>""270"", ""tyndp_status""=>""in_permitting""",21.2815,45.7426,21.409607,46.176978,2,Al/St 240/40 4-bundle 380.0
+1693,in_permitting,,2026,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/227"", ""tyndp2020_proj_id""=>""227"", ""tyndp2020_invest_id""=>""630"", ""tyndp_status""=>""in_permitting""",20.187378,44.664746,19.500315,43.953021,2,Al/St 240/40 4-bundle 380.0
+12696,in_permitting,147.0,2022,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/230"", ""tyndp2020_proj_id""=>""230"", ""tyndp2020_invest_id""=>""1232"", ""tyndp_status""=>""in_permitting""",15.038505,52.76751,16.729431,52.32359,2,Al/St 240/40 4-bundle 380.0
+3966,planned_not_yet_permitting,70.0,2029,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1207"", ""tyndp_status""=>""planned_not_yet_permitting""",-0.812988000000009,43.979969,-0.547943,44.563077,2,Al/St 240/40 4-bundle 380.0
+14277,in_permitting,15.0,2025,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/297"", ""tyndp2020_proj_id""=>""297"", ""tyndp2020_invest_id""=>""604"", ""tyndp_status""=>""in_permitting""",4.27917500000001,51.25504,4.177551,51.162122,2,Al/St 240/40 4-bundle 380.0
+14594,under_consideration,70.0,2034,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/325"", ""tyndp2020_proj_id""=>""325"", ""tyndp2020_invest_id""=>""1483"", ""tyndp_status""=>""under_consideration""",14.5912685597917,46.536256583087,15.119934,46.263443,2,Al/St 240/40 4-bundle 380.0
+12655,under_construction,161.0,2020,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/350"", ""tyndp2020_proj_id""=>""350"", ""tyndp2020_invest_id""=>""1622"", ""tyndp_status""=>""under_construction""",21.475525,41.045181,20.725963,41.239159,2,Al/St 240/40 4-bundle 380.0
+6355,under_consideration,90.0,2036,False,380,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1074"", ""tyndp2020_proj_id""=>""1074"", ""tyndp2020_invest_id""=>""1744"", ""tyndp_status""=>""under_consideration""",19.756165,45.527517,19.609222,45.021127,2,Al/St 240/40 4-bundle 380.0
diff --git a/data/transmission_projects/tyndp2020/upgraded_links.csv b/data/transmission_projects/tyndp2020/upgraded_links.csv
index 4da559ed3..5fe56694d 100644
--- a/data/transmission_projects/tyndp2020/upgraded_links.csv
+++ b/data/transmission_projects/tyndp2020/upgraded_links.csv
@@ -1,2 +1,8 @@
,project_status,length,build_year,underground,p_nom,tags,x0,y0,x1,y1
-5635,under_consideration,125,2036,True,700,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1741"", ""tyndp_status""=>""under_consideration""",16.659393,57.43682,18.227692,57.571097
+T0,in_permitting,370.0,2027,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/16"", ""tyndp2020_proj_id""=>""16"", ""tyndp2020_invest_id""=>""38"", ""tyndp_status""=>""in_permitting""",-2.880286,43.349776,-0.341949000000001,45.030833
+14801,under_construction,90.0,2020,True,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/92"", ""tyndp2020_proj_id""=>""92"", ""tyndp2020_invest_id""=>""146"", ""tyndp_status""=>""under_construction""",6.46545399999999,50.831096,5.688171,50.729502
+T17,in_permitting,665.0,2024,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/190"", ""tyndp2020_proj_id""=>""190"", ""tyndp2020_invest_id""=>""1382"", ""tyndp_status""=>""in_permitting""",7.23331357825616,60.5160767478361,-1.815491,57.484833
+T25,planned_not_yet_permitting,195.0,2023,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/286"", ""tyndp2020_proj_id""=>""286"", ""tyndp2020_invest_id""=>""1385"", ""tyndp_status""=>""planned_not_yet_permitting""",-6.96670499999999,52.27404,-4.850464,51.728729
+T12,in_permitting,220.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/153"", ""tyndp2020_proj_id""=>""153"", ""tyndp2020_invest_id""=>""987"", ""tyndp_status""=>""in_permitting""",-1.47628799999999,49.460984,-3.357697,50.739062
+T13,under_construction,770.0,2023,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/167"", ""tyndp2020_proj_id""=>""167"", ""tyndp2020_invest_id""=>""998"", ""tyndp_status""=>""under_construction""",9.22851599999999,55.481188,-0.208961173685554,52.9600676434916
+5635,under_consideration,125.0,2036,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1741"", ""tyndp_status""=>""under_consideration""",16.659393,57.43682,18.227692,57.571097
diff --git a/scripts/build_transmission_projects.py b/scripts/build_transmission_projects.py
index f82c1b081..6d93c2001 100644
--- a/scripts/build_transmission_projects.py
+++ b/scripts/build_transmission_projects.py
@@ -525,10 +525,8 @@ def fill_length_from_geometry(line, line_factor=1.2):
if not new_lines_df.empty:
line_type = "Al/St 240/40 4-bundle 380.0"
# Add new line type for new lines
- new_lines_df["type"] = "Al/St 240/40 4-bundle 380.0"
- new_lines_df["num_parallel"] = (
- 1 # later this will be improved by looking for MVA or MW of lines and calculating the number of parallel lines
- )
+ new_lines_df["type"] = new_lines_df["type"].fillna(line_type)
+ new_lines_df["num_parallel"] = new_lines_df["num_parallel"].fillna(2)
if "underground" in new_lines_df.columns:
new_lines_df["underground"] = (
new_lines_df["underground"].astype("bool").fillna(False)
@@ -542,10 +540,10 @@ def fill_length_from_geometry(line, line_factor=1.2):
# get s_nom from line type
new_lines_df["s_nom"] = (
np.sqrt(3)
- * n.line_types.loc[line_type].i_nom
+ * n.line_types.loc[new_lines_df["type"], "i_nom"].values
* new_lines_df["v_nom"]
* new_lines_df["num_parallel"]
- )
+ ).round(2)
if not new_links_df.empty:
# Add carrier types of lines and links
new_links_df["carrier"] = "DC"
diff --git a/scripts/simplify_network.py b/scripts/simplify_network.py
index a67e76285..4d42290cd 100644
--- a/scripts/simplify_network.py
+++ b/scripts/simplify_network.py
@@ -124,7 +124,7 @@ def simplify_network_to_380(n):
n.buses["v_nom"] = 380.0
- (linetype_380,) = n.lines.loc[n.lines.v_nom == 380.0, "type"].unique()
+ linetype_380 = n.lines["type"].mode()[0]
n.lines["type"] = linetype_380
n.lines["v_nom"] = 380
n.lines["i_nom"] = n.line_types.i_nom[linetype_380]
@@ -534,7 +534,7 @@ def cluster(
if "snakemake" not in globals():
from _helpers import mock_snakemake
- snakemake = mock_snakemake("simplify_network", simpl="")
+ snakemake = mock_snakemake("simplify_network", simpl="", run="all")
configure_logging(snakemake)
set_scenario_config(snakemake)
From db7337c68b98e7f492a7a219c62fa082d8f44313 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Wed, 14 Aug 2024 14:56:26 +0200
Subject: [PATCH 23/28] build_transmission_project: change from .geometry to
["geometry"]
---
scripts/build_transmission_projects.py | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/scripts/build_transmission_projects.py b/scripts/build_transmission_projects.py
index 6d93c2001..5ba8c4518 100644
--- a/scripts/build_transmission_projects.py
+++ b/scripts/build_transmission_projects.py
@@ -116,7 +116,7 @@ def connect_new_lines(
bus_tree = spatial.KDTree(buses[["x", "y"]])
for port in [0, 1]:
- lines_port = lines.geometry.apply(
+ lines_port = lines["geometry"].apply(
lambda x: pd.Series(
get_bus_coords_from_port(x, port=port), index=["x", "y"]
)
@@ -225,12 +225,12 @@ def find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
"""
# get coordinates of start and end points of all lines, for new lines we need to check both directions
- lines = lines[~lines.geometry.isna()]
+ lines = lines[~lines["geometry"].isna()]
treelines = lines.apply(get_branch_coords_from_buses, axis=1)
querylines = pd.concat(
[
- new_lines.geometry.apply(get_branch_coords_from_geometry),
- new_lines.geometry.apply(get_branch_coords_from_geometry, reversed=True),
+ new_lines["geometry"].apply(get_branch_coords_from_geometry),
+ new_lines["geometry"].apply(get_branch_coords_from_geometry, reversed=True),
]
)
treelines = np.vstack(treelines)
@@ -338,7 +338,7 @@ def remove_projects_outside_countries(lines, europe_shape):
Remove projects which are not in the considered countries.
"""
europe_shape_prepped = shapely.prepared.prep(europe_shape.buffer(1))
- is_within_covered_countries = lines.geometry.apply(
+ is_within_covered_countries = lines["geometry"].apply(
lambda x: europe_shape_prepped.contains(x)
)
@@ -366,7 +366,7 @@ def is_similar(ds1, ds2, percentage=10):
def set_underwater_fraction(new_links, offshore_shapes):
- new_links_gds = gpd.GeoSeries(new_links.geometry)
+ new_links_gds = gpd.GeoSeries(new_links["geometry"])
new_links["underwater_fraction"] = (
new_links_gds.intersection(offshore_shapes.union_all()).length
/ new_links_gds.length
@@ -469,7 +469,7 @@ def add_projects(
def fill_length_from_geometry(line, line_factor=1.2):
if not pd.isna(line.length):
return line.length
- length = gpd.GeoSeries(line.geometry, crs=4326).to_crs(3035).length.values[0]
+ length = gpd.GeoSeries(line["geometry"], crs=4326).to_crs(3035).length.values[0]
length = length / 1000 * line_factor
return round(length, 1)
From 392e58f629708ef92f8737144ff4ef74845c24eb Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Wed, 14 Aug 2024 15:31:14 +0200
Subject: [PATCH 24/28] build_transmission_projects: remove redundanty line
---
scripts/build_transmission_projects.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/scripts/build_transmission_projects.py b/scripts/build_transmission_projects.py
index 5ba8c4518..5ea31046a 100644
--- a/scripts/build_transmission_projects.py
+++ b/scripts/build_transmission_projects.py
@@ -225,7 +225,6 @@ def find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
"""
# get coordinates of start and end points of all lines, for new lines we need to check both directions
- lines = lines[~lines["geometry"].isna()]
treelines = lines.apply(get_branch_coords_from_buses, axis=1)
querylines = pd.concat(
[
From 2643d4f89ed7906bd394105fd98128510b3e7e4f Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Wed, 14 Aug 2024 16:38:43 +0200
Subject: [PATCH 25/28] build_transmission_projects: remove buffer for europe
shape because of higher resolution default config: fix wrong key for skip
argument in transmission_projects
---
config/config.default.yaml | 2 +-
scripts/build_transmission_projects.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/config/config.default.yaml b/config/config.default.yaml
index 173ab37a9..642277cdd 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -310,7 +310,7 @@ transmission_projects:
manual: true
skip: #type of lines csv which are not added from the transmission project folders
- upgraded_lines
- - upgraded links
+ - upgraded_links
status: # status to include as list or as dict with name of project and status to include
- confirmed
- in_permitting
diff --git a/scripts/build_transmission_projects.py b/scripts/build_transmission_projects.py
index 5ea31046a..1ece46c17 100644
--- a/scripts/build_transmission_projects.py
+++ b/scripts/build_transmission_projects.py
@@ -216,7 +216,7 @@ def find_closest_lines(lines, new_lines, distance_upper_bound=0.1, type="new"):
Find the closest lines in the existing set of lines to a set of new lines.
Parameters:
- lines (pandas.DataFrame): DataFrame with column geometry containing the existing lines.
+ lines (pandas.DataFrame): DataFrame of the existing lines.
new_lines (pandas.DataFrame): DataFrame with column geometry containing the new lines.
distance_upper_bound (float, optional): Maximum distance to consider a line as a match. Defaults to 0.1 which corresponds to approximately 15 km.
@@ -336,7 +336,7 @@ def remove_projects_outside_countries(lines, europe_shape):
"""
Remove projects which are not in the considered countries.
"""
- europe_shape_prepped = shapely.prepared.prep(europe_shape.buffer(1))
+ europe_shape_prepped = shapely.prepared.prep(europe_shape)
is_within_covered_countries = lines["geometry"].apply(
lambda x: europe_shape_prepped.contains(x)
)
From 1e3fbafcdd257b2103d8b837cf1dd07e6311e327 Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Thu, 15 Aug 2024 08:59:02 +0200
Subject: [PATCH 26/28] update configtables and default config
---
config/config.default.yaml | 9 +++++----
doc/configtables/links.csv | 1 +
doc/configtables/transmission_projects.csv | 3 ++-
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/config/config.default.yaml b/config/config.default.yaml
index 642277cdd..14221dac6 100644
--- a/config/config.default.yaml
+++ b/config/config.default.yaml
@@ -308,13 +308,14 @@ transmission_projects:
tyndp2020: true
nep: true
manual: true
- skip: #type of lines csv which are not added from the transmission project folders
+ skip:
- upgraded_lines
- upgraded_links
- status: # status to include as list or as dict with name of project and status to include
- - confirmed
- - in_permitting
+ status:
- under_construction
+ - in_permitting
+ - confirmed
+ #- planned_not_yet_permitted
#- under_consideration
new_link_capacity: zero #keep or zero
diff --git a/doc/configtables/links.csv b/doc/configtables/links.csv
index 89594e82a..9dedc36ab 100644
--- a/doc/configtables/links.csv
+++ b/doc/configtables/links.csv
@@ -2,3 +2,4 @@
p_max_pu,--,"Value in [0.,1.]","Correction factor for link capacities ``p_nom``."
p_nom_max,MW,"float","Global upper limit for the maximum capacity of each extendable DC link."
max_extension,MW,"float","Upper limit for the extended capacity of each extendable DC link."
+under_construction,--,"One of {'zero': set capacity to zero, 'remove': remove completely, 'keep': keep with full capacity}","Specifies how to handle lines which are currently under construction."
diff --git a/doc/configtables/transmission_projects.csv b/doc/configtables/transmission_projects.csv
index 9a10592fa..acba48426 100644
--- a/doc/configtables/transmission_projects.csv
+++ b/doc/configtables/transmission_projects.csv
@@ -4,5 +4,6 @@ include,--,,"Name of the transmission projects. They should be unique and have t
-- tyndp2020,bool,"{true,false}",Whether to integrate the TYNDP 2020 dataset.
-- nep,bool,"{true,false}",Whether to integrate the German network development plan dataset.
-- manual,bool,"{true,false}",Whether to integrate the manually added transmission projects. They are taken from the previously existing links_tyndp.csv file.
-status,list or dict,,Status to include into the model as list or as dict with name of project and status to include.
+skip,list,,"Type of lines to skip from all transmission projects. Possible values are: ``upgraded_lines``, ``upgraded_links``, ``new_lines``, ``new_links``."
+status,list or dict,,"Status to include into the model as list or as dict with name of project and status to include. Possible values for status are ``under_construction``, ``in_permitting``, ``confirmed``, ``planned_not_yet_permitted``, ``under_consideration``."
new_link_capacity,--,"{zero,keep}",Whether to set the new link capacity to the provided capacity or set it to zero.
From 0a1f569d1982bd2e12d49738bc8d9f7bc873f08b Mon Sep 17 00:00:00 2001
From: Philipp Glaum
Date: Thu, 15 Aug 2024 10:53:56 +0200
Subject: [PATCH 27/28] update manual links csv and delete undetected duplicate
links in tyndp2020
---
data/transmission_projects/manual/new_links.csv | 8 +++++++-
data/transmission_projects/tyndp2020/new_links.csv | 2 --
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/data/transmission_projects/manual/new_links.csv b/data/transmission_projects/manual/new_links.csv
index e7834b0d8..3854490cb 100644
--- a/data/transmission_projects/manual/new_links.csv
+++ b/data/transmission_projects/manual/new_links.csv
@@ -1,6 +1,11 @@
,bus0,bus1,length,p_nom,project_status,tags,x0,y0,x1,y1
+TYNDP2018_154,Exeter (UK),Menuel (FR),220,1400,in_permitting,"{name:France-Alderney-Britain, url:https://tyndp.entsoe.eu/tyndp2018/projects/projects/153}",-3.533899,50.718412,-1.469216,49.509594
+TYNDP2018_25,Tourbe (FR),Chilling (GB),247.2,1000,under_construction,"{name:IFA2, url:https://tyndp.entsoe.eu/tyndp2018/projects/projects/25]",-0.172042,49.083593,-1.277269,50.839338
+TYNDP2018_285,Kingsnorth (UK),Warande (FR),160,1400,in_permitting,"{name:Gridlink, url:https://tyndp.entsoe.eu/tyndp2018/projects/projects/285}",0.596111111111111,51.41972,2.376776,51.034368
+TYNDP2018_190,Simadalen (NO),Peterhead (UK),650,1400,in_permitting,"{name:NorthConnect, url:https://tyndp.entsoe.eu/tyndp2018/projects/projects/190}",7.16027,60.500527,-1.784066,57.508123
+TYNDP2018_16,Gatica (ES),Cubnezais (FR),370,2200,in_permitting,"{name:Biscay Gulf, url:https://tyndp.entsoe.eu/tyndp2018/projects/projects/16}",-2.867,43.367,-0.408943,45.074191
+TYNDP2018_21,Piossasco (IT),Grand Ile (FR),190,1000,under_construction,"{name:Italy-France, url:https://tyndp.entsoe.eu/tyndp2018/projects/projects/21}",7.468,44.9898,6.045,45.472
TYNDP2022_286,Waterford (IE),Pembroke (UK),180,500,under_construction,"{name:Greenlink,url:{name:TYNDP2022_286,url:https://tyndp2022-project-platform.azurewebsites.net/projectsheets/transmission/286}}",-6.987,52.26,-4.986,51.686
-TYNDP2022_107,Aghada (IE),La Martyre (FR),572,700,under_consideration,"{name:Celtic Interconnector,url:{name:TYNDP2022_107,url:https://tyndp2022-project-platform.azurewebsites.net/projectsheets/transmission/107}}",-8.16642,51.91413,-4.184,48.459
TYNDP2024_1134,Bordeaux (FR),Nantes (FR),312,640,under_consideration,"{name:GiLA,url:{name:TYNDP2024_1134,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",-1.209,46.901,-0.576,44.96
TYNDP2024_1157,Milan (IT),Viterbo (IT),500,2000,in_permitting,"{name:HG North Tyrrhenian Corridor,url:{name:TYNDP2024_1157,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",9.409,45.553,12.015,42.244
TYNDP2024_1166,Ferrara (IT),Foggia (IT),582,2000,in_permitting,"{name:HG Adriatic Corridor,url:{name:TYNDP2024_1166,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",11.661,44.855,15.55,41.513
@@ -14,3 +19,4 @@ TYNDP2024_1211,Lubmin (DE),Lihula (EE),960,2000,under_consideration,"{name:Balti
TYNDP2024_1216,Constanta (RO),Albertirsa (HU),930,2500,under_consideration,"{name:High-Voltage Direct Current Interconnector Project Romania-Hungary,url:{name:TYNDP2024_1216,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",28.588,44.201,19.584,47.224
TYNDP2024_1229,Ovelgönne (DE),Marxheim (DE),433,4000,in_permitting,"{name:Rhine-Main-Link,url:{name:TYNDP2024_1229,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",8.379,53.315,8.435,50.078
TYNDP2024_1231,Arachthos (GR),Ottenhofen (DE),600,3000,under_consideration,"{name:Green Aegean Interconnector,url:{name:TYNDP2024_1231,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",20.967,39.185,11.868,48.207
+TYNDP2024_1211,Lubmin (DE),Lihula (EE),960,2000,under_consideration,"{name:Baltic WindConnector (BWC), url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}",13.686,54.139,23.818,58.675
diff --git a/data/transmission_projects/tyndp2020/new_links.csv b/data/transmission_projects/tyndp2020/new_links.csv
index a0dfb7338..902cc9b35 100644
--- a/data/transmission_projects/tyndp2020/new_links.csv
+++ b/data/transmission_projects/tyndp2020/new_links.csv
@@ -8,7 +8,6 @@ TYNDP2020_5,planned_not_yet_permitting,407.0,2030,False,2000.0,"""url""=>""https
TYNDP2020_6,under_construction,445.0,2026,True,600.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/28"", ""tyndp2020_proj_id""=>""28"", ""tyndp2020_invest_id""=>""1503"", ""tyndp_status""=>""under_construction""",14.028168,42.409263,18.772888,42.315909
TYNDP2020_7,in_permitting,240.0,2023,True,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/247"", ""tyndp2020_proj_id""=>""247"", ""tyndp2020_invest_id""=>""1381"", ""tyndp_status""=>""in_permitting""",-1.05331400000001,50.900435,1.11373900000001,49.712937
TYNDP2020_8,under_consideration,133.0,2027,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1040"", ""tyndp2020_proj_id""=>""1040"", ""tyndp2020_invest_id""=>""1677"", ""tyndp_status""=>""under_consideration""",-5.80902099999999,54.726206,-4.880676,55.704677
-TYNDP2020_9,under_construction,623.0,2020,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/37"", ""tyndp2020_proj_id""=>""37"", ""tyndp2020_invest_id""=>""142"", ""tyndp_status""=>""under_construction""",6.82251000000001,58.660514,9.327393,53.931837
TYNDP2020_10,in_permitting,340.0,2024,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/254"", ""tyndp2020_proj_id""=>""254"", ""tyndp2020_invest_id""=>""660"", ""tyndp_status""=>""in_permitting""",6.58493,51.245584,8.478699,49.283036
TYNDP2020_11,under_consideration,230.0,2025,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1049"", ""tyndp2020_proj_id""=>""1049"", ""tyndp2020_invest_id""=>""1706"", ""tyndp_status""=>""under_consideration""",0.763549999999995,51.403489,3.18054200000001,51.330612
TYNDP2020_12,under_consideration,610.0,2028,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1050"", ""tyndp2020_proj_id""=>""1050"", ""tyndp2020_invest_id""=>""1707"", ""tyndp_status""=>""under_consideration""",0.482024999999987,51.519853,7.23587000000001,53.374317
@@ -17,7 +16,6 @@ TYNDP2020_14,under_consideration,300.0,2030,True,1400.0,"""url""=>""https://tynd
TYNDP2020_15,planned_not_yet_permitting,230.0,2030,False,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/270"", ""tyndp2020_proj_id""=>""270"", ""tyndp2020_invest_id""=>""1211"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.671123,41.952398,-0.575409000000004,43.345155
TYNDP2020_16,under_consideration,200.0,2040,False,1000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1058"", ""tyndp2020_proj_id""=>""1058"", ""tyndp2020_invest_id""=>""1726"", ""tyndp_status""=>""under_consideration""",9.43585963014029,48.6383575221442,8.298798,47.148634
TYNDP2020_17,in_permitting,500.0,2026,True,700.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/107"", ""tyndp2020_proj_id""=>""107"", ""tyndp2020_invest_id""=>""810"", ""tyndp_status""=>""in_permitting""",-8.36471600000001,51.892597,-4.237976,48.518424
-TYNDP2020_18,under_construction,720.0,2021,True,1400.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/110"", ""tyndp2020_proj_id""=>""110"", ""tyndp2020_invest_id""=>""424"", ""tyndp_status""=>""under_construction""",6.649475,59.461826,-1.572418,55.113728
TYNDP2020_19,planned_not_yet_permitting,225.0,2029,False,2000.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/276"", ""tyndp2020_proj_id""=>""276"", ""tyndp2020_invest_id""=>""1206"", ""tyndp_status""=>""planned_not_yet_permitting""",-1.645402,42.818157,-0.812988000000009,43.979969
TYNDP2020_20,under_consideration,195.0,2036,True,500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/1068"", ""tyndp2020_proj_id""=>""1068"", ""tyndp2020_invest_id""=>""1740"", ""tyndp_status""=>""under_consideration""",18.227692,57.571097,21.100616,56.489036
TYNDP2020_21,planned_not_yet_permitting,156.0,2022,True,1500.0,"""url""=>""https://tyndp2020-project-platform.azurewebsites.net/projectsheets/transmission/285"", ""tyndp2020_proj_id""=>""285"", ""tyndp2020_invest_id""=>""1383"", ""tyndp_status""=>""planned_not_yet_permitting""",0.575409000000004,51.430896,2.16293300000001,50.923813
From 6940a5984e66bb7dcd8434e4bacf1cd58ead09bb Mon Sep 17 00:00:00 2001
From: Fabian Neumann
Date: Thu, 15 Aug 2024 11:41:17 +0200
Subject: [PATCH 28/28] final adjustments
---
data/transmission_projects/manual/new_links.csv | 3 +--
scripts/build_transmission_projects.py | 2 +-
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/data/transmission_projects/manual/new_links.csv b/data/transmission_projects/manual/new_links.csv
index 3854490cb..901f95931 100644
--- a/data/transmission_projects/manual/new_links.csv
+++ b/data/transmission_projects/manual/new_links.csv
@@ -15,8 +15,7 @@ TYNDP2024_1168_1,Rossano (IT),Catania (IT),330,2000,in_permitting,"{name:HG Ioni
TYNDP2024_1192,Fetteresso (UK),Emden (DE),800,2000,under_consideration,"{name:Germany-UK Hybrid Interconnector,url:{name:TYNDP2024_1192,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",-2.383,56.991,7.207,53.376
TYNDP2024_1197,Hornsea (UK),Moerdijk (NL),460,1200,under_consideration,"{name:NU-Link Interconnector,url:{name:TYNDP2024_1197,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",-0.261,53.655,4.586,51.661
TYNDP2024_1210,La Farga (ES),La Spezia (IT),725,2091,under_consideration,"{name:APOLLO-LINK,url:{name:TYNDP2024_1210,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",2.883,42.062,9.884,44.107
-TYNDP2024_1211,Lubmin (DE),Lihula (EE),960,2000,under_consideration,"{name:Baltic WindConnector (BWC),url:{name:TYNDP2024_1211,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",13.686,54.139,23.818,58.675
+TYNDP2024_1211,Lubmin (DE),Sindi (EE),960,2000,under_consideration,"{name:Baltic WindConnector (BWC),url:{name:TYNDP2024_1211,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",13.686,54.139,24.671903,58.429161
TYNDP2024_1216,Constanta (RO),Albertirsa (HU),930,2500,under_consideration,"{name:High-Voltage Direct Current Interconnector Project Romania-Hungary,url:{name:TYNDP2024_1216,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",28.588,44.201,19.584,47.224
TYNDP2024_1229,Ovelgönne (DE),Marxheim (DE),433,4000,in_permitting,"{name:Rhine-Main-Link,url:{name:TYNDP2024_1229,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",8.379,53.315,8.435,50.078
TYNDP2024_1231,Arachthos (GR),Ottenhofen (DE),600,3000,under_consideration,"{name:Green Aegean Interconnector,url:{name:TYNDP2024_1231,url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}}",20.967,39.185,11.868,48.207
-TYNDP2024_1211,Lubmin (DE),Lihula (EE),960,2000,under_consideration,"{name:Baltic WindConnector (BWC), url:https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx}",13.686,54.139,23.818,58.675
diff --git a/scripts/build_transmission_projects.py b/scripts/build_transmission_projects.py
index 1ece46c17..ba185d17e 100644
--- a/scripts/build_transmission_projects.py
+++ b/scripts/build_transmission_projects.py
@@ -133,7 +133,7 @@ def connect_new_lines(
)
new_buses = potential_new_buses[is_offshore]
if not new_buses.empty:
- new_port, new_buses = add_new_buses(n, new_buses, port)
+ new_port, new_buses = add_new_buses(n, new_buses)
new_buses["country"] = new_buses.apply(
lambda bus: find_country_for_bus(bus, offshore_shapes), axis=1
)