Éditeur d'actif

Extension de la ligne D du tramway vers Kehl

Initiative Eurométropole
Strasbourg (Heyritz, Malraux, Danube, Starlette, Coop, Port du Rhin - Neudorf, Schluthfeld, Neufeld, Ziegelau, Musau, Ampère, Risler)

Dans le cadre du projet Deux-Rives, l'extension du tram D vers Kehl propose une offre de mobilité adaptée à une métropole transfrontalière à 360° ouverte sur le monde et adaptée aux besoins des habitant·es.

Éditeur d'actif

Détail Entité

Une erreur s'est produite lors du traitement du modèle.
Java method "jdk.proxy3.$Proxy112.getUser(long)" threw an exception when invoked on jdk.proxy3.$Proxy112 object "com.liferay.message.boards.internal.service.MBMessageUserLocalServiceWrapper@6481925"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign user = UserLocalService.getUs...  [in template "20116#20160#2532055" at line 15, column 1]
----
1<!-- DETAIL D'UN PROJET --> 
2 
3<#-- Recuperation de l'URL de "base" du site --> 
4<#if !themeDisplay.scopeGroup.publicLayoutSet.virtualHostnames?has_content || themeDisplay.scopeGroup.isStagingGroup()> 
5    <#assign homeURL = "/web${layout.group.friendlyURL}/" /> 
6<#else> 
7    <#assign homeURL = "/" /> 
8</#if> 
9 
10<#-- Récupération de l'ID de l'utilisateur --> 
11<#assign userID = request.session.getAttribute("publik_internal_id")!"" /> 
12 
13<#-- Recuperation du créateur du projet --> 
14<#assign UserLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")/> 
15<#assign user = UserLocalService.getUser(entry.getStatusByUserId()) /> 
16 
17<#-- L'utilisateur participe-t-il ? --> 
18<#assign isUserFollowsActive = entry.isUserFollows(userID)?then("active", "") > 
19 
20<#-- Recuperation des entités lies au projet --> 
21<#assign projectPlaces = entry.getPlacitPlaces() /> 
22<#assign projectEvents = entry.getEvents() /> 
23<#assign projectParticipations = entry.getParticipations() /> 
24 
25<#-- Initialisation des conteneurs de vignettes --> 
26<#assign projectJSON = entry.toJSON(userID) /> 
27<#assign projectPlacesMercators = [] /> 
28<#assign eventsJSON = [] /> 
29<#assign participationsJSON = [] /> 
30 
31<#-- Recuperation des données JSON de chaque entité liées --> 
32<#list projectEvents as event > 
33    <#if event?has_content> 
34        <#assign eventsJSON = eventsJSON + [event.toJSON(userID)] /> 
35    </#if> 
36</#list> 
37 
38<!-- vignette --> 
39<#list projectParticipations as participation > 
40    <#if participation?has_content> 
41        <#assign participationsJSON = participationsJSON + [participation.toJSON(themeDisplay)] /> 
42        <#list participation.getEvents() as event > 
43            <#if event?has_content> 
44                <#assign eventsJSON = eventsJSON + [event.toJSON(userID)] /> 
45            </#if> 
46        </#list> 
47    </#if> 
48</#list> 
49 
50<#assign cssClass> 
51    <#switch user.getScreenName()> 
52        <#case "placit_strasbourg">couleur-ville<#break> 
53        <#case "placit_ems">couleur-eurometropole<#break> 
54        <#case "placit_strasbourg_ems">couleur-commune<#break> 
55        <#default>couleur-ville<#break> 
56    </#switch> 
57</#assign> 
58 
59 
60<div id="breadcrumb"> 
61    <span> 
62        <span> 
63            <a href="${homeURL}">Accueil</a> 
64            <a href="${homeURL}projets">Les projets</a> 
65            <span class="breadcrumb_last">${entry.title}</span> 
66        </span> 
67    </span> 
68</div> 
69 
70<div class="pro-bloc-bref"> 
71    <h3>En bref</h3> 
72    <ul> 
73        <#if entry.budget?has_content> 
74            <li><span class="pro-euros">€</span> <strong>Budget : </strong>${entry.budget}</li> 
75        </#if> 
76        <#if entry.label?has_content> 
77            <li><span class="icon-ico-label"></span> <strong>Label : </strong>${entry.label}</li> 
78        </#if> 
79        <#if entry.duration?has_content> 
80            <li><span class="icon-ico-time"></span> <strong>Durée : </strong>${entry.duration}</li> 
81        </#if> 
82        <#if entry.getPartners(locale)?has_content> 
83            <li><span class="icon-ico-partenaire"></span> <strong>Les partenaires : </strong>${entry.getPartners(locale)}</li> 
84        </#if> 
85    </ul> 
86</div> 
87 
88<!-- Fiche de l'entité --> 
89<div class="col-lg-4-to-move ${cssClass}"> 
90    <div> 
91 
92 
93        <!-- Bloc : map --> 
94        <div class="bloc-iframe leaflet-map" id="mapid" ></div> 
95 
96        <!-- Bloc : Compteur de suivi --> 
97        <div class="pro-compteur"> 
98            <span class="pro-compt">${entry.getNbFollowerLabel()}</span> 
99            <p>Citoyens(nes) suivent ce projet</p> 
100            <a href="#Suivre" class="pro-btn-action ${isUserFollowsActive}" 
101               data-projectid="${entry.projectId}" 
102               data-groupid="${entry.groupId}" 
103               title="Suivre ce projet"> 
104                <#if isUserFollowsActive?has_content> 
105                    Projet suivi 
106                <#else> 
107                    Suivre ce projet 
108                </#if> 
109            </a> 
110        </div> 
111 
112        <!-- Bloc : entités liées --> 
113        <div class="pro-event-comming"> 
114            <a href="#pro-link-participation" title="Vers les participations de la page"><strong>${projectParticipations?size}</strong> démarche(s) publiée(s)</a> 
115            <a href="#pro-link-evenement" title="Vers les événements de la page"><strong>${projectEvents?size}</strong> évènement(s) à venir</a> 
116        </div> 
117 
118        <!-- Bloc : contact --> 
119        <div class="pro-contact"> 
120            <h4>Contact</h4> 
121            <p> 
122                <#if entry.contactName?has_content> 
123                    <strong> ${entry.contactName}</strong><br> 
124                    <#if entry.contactLine1?has_content> ${entry.contactLine1} </#if> 
125                    <#if entry.contactLine2?has_content> <br>${entry.contactLine2} </#if> 
126                <#else> 
127                    <strong>Aucun contact renseigné pour le moment </strong><br> 
128                </#if> 
129            </p> 
130            <a href="tel:${entry.contactPhoneNumber}" title="Numéro de téléphone : ${entry.contactPhoneNumber}">${entry.contactPhoneNumber}</a> 
131        </div> 
132 
133    </div> 
134</div> 
135 
136<style> 
137    .pro-page-detail.pro-page-detail-projet section>.pro-wrapper{ 
138        left : 0px; 
139    } 
140    .pro-page-detail.pro-page-detail-projet .pro-wrapper .portlet-body>* { 
141        margin: 0; 
142        padding: 7px 0; 
143    } 
144    section#pro-link-participation.pro-bloc-slider.pro-slider-participation { 
145        background: #EBECEE; 
146    } 
147    .pro-btn-action.active:after{ 
148        opacity: 0; 
149    } 
150 
151    .portlet-column-content.empty{ 
152        padding: 0; 
153    } 
154 
155    .col-md-4 { 
156        z-index : 50; 
157    } 
158</style> 
159 
160<script> 
161    // Récupération des entités en JSON à afficher sur la map et ajout des données dynamiques manquantes 
162    var projectJSON = ${projectJSON}; 
163    projectJSON.link = '${homeURL}' + projectJSON.detailURL; 
164 
165    var eventsJSON = [ 
166        <#list eventsJSON as eventJSON> 
167        ${eventJSON}, 
168        </#list> 
169    ]; 
170 
171    var participationsJSON = [ 
172        <#list participationsJSON as participationJSON> 
173        ${participationJSON}, 
174        </#list> 
175    ]; 
176 
177    $(document).ready(function() { 
178 
179        // Déplacement du bloc de la fiche entité 
180        $(".col-lg-4-to-move").appendTo(".pro-page-detail-projet .col-lg-12 aside.col-lg-4"); 
181        if ($('.suggested-projects-to-move').length) { 
182            $('.pro-bloc-image-slider.pro-bloc-texte').parents('.portlet-boundary').appendTo('.suggested-projects-to-move'); 
183            $('.pro-bloc-texte.pro-bloc-telechargements').parents('.portlet-boundary').appendTo('.suggested-projects-to-move'); 
184            $('#pro-link-participation.pro-bloc-slider.pro-slider-participation').parents('.portlet-boundary').appendTo('.suggested-projects-to-move'); 
185        } 
186        $(".portlet-content>.portlet-title-text").hide(); 
187 
188 
189 
190 
191        // Vérification de l'existance de la timeline verticale 
192        // et cache du cercle blanc dans le header si inexistant 
193        if (!$('.pro-jalon').length) { 
194            $('.pro-timeline').hide(); 
195        } 
196 
197        // Gestion de la carte interactive 
198        // Notes : voir dans le theme placit "override/custom.js" 
199 
200        //Création de la carte au centre de strasbourg 
201        leafletMap = getLeafletMap(); 
202 
203        // Définition des marqueurs 
204        var projectMarkerIcon = getMarkerIcon('project'); 
205        var participationMarkerIcon = getMarkerIcon('participation'); 
206        var eventMarkerIcon =  getMarkerIcon('event'); 
207 
208        // Ajout des marqueurs sur la map 
209        var projectMarkers = []; 
210        var participationMarkers = []; 
211        var eventMarkers = []; 
212 
213        // Création du cluster permettant le regroupement de points et le centrage 
214        var markersCluster = L.markerClusterGroup(); 
215 
216        var marker; 
217 
218        for(var i= 0; i < projectJSON.placitPlaces.length; i++) { 
219            marker = getProjectMarker( 
220                projectJSON, 
221                [projectJSON.placitPlaces[i].mercatorY, projectJSON.placitPlaces[i].mercatorX] 
222            ); 
223 
224            // Ajout du point dans le Cluster de marqueurs 
225            markersCluster.addLayer(marker); 
226            // Ajout du marker dans le tempon 
227            projectMarkers.push(marker); 
228        } 
229 
230        for(var i= 0; i < eventsJSON.length; i++) { 
231            // notes : la participation à l'événement à été ajoutée dans le tableau lors du parcours 
232            // des évenements, d'où le [0] pour avoir le JSON et le [1] pour la participation à l'évenements 
233            var eventJSON = eventsJSON[i]; 
234            // Ajout du lien vers le détail (effectué ici pour éviter le double parcours) 
235            eventJSON.link = '${homeURL}detail-evenement/-/entity/id/' +  eventJSON.id + '/' + eventJSON.normalizedTitle; 
236 
237            markersCluster.addLayer(marker); 
238            eventMarkers.push(marker); 
239        } 
240 
241        for(var i= 0; i < participationsJSON.length; i++) { 
242            var participationJSON = participationsJSON[i]; 
243            participationJSON.link = '${homeURL}detail-participation/-/entity/id/' + participationJSON.participationId; 
244 
245            for(var j= 0; j < participationJSON.placitPlaces.length; j++) { 
246                marker = getParticipationMarker( 
247                    participationJSON, 
248                    [participationJSON.placitPlaces[j].mercatorY, participationJSON.placitPlaces[j].mercatorX] 
249                ); 
250 
251                markersCluster.addLayer(marker); 
252                participationMarkers.push(marker); 
253            } 
254        } 
255 
256        leafletMap.addLayer(markersCluster); 
257 
258        // Adapter le zoom si des marqueurs existent 
259        if (markersCluster.getBounds().isValid()) { 
260            leafletMap.fitBounds(markersCluster.getBounds()); 
261        } 
262 
263    }); 
264</script> 

Extension de la ligne d vers kehl, une extension symbole d'une métropole européenne

plan extension ligne d du tram vers Kehl

Courant sur quelque 5 km, le projet d’urbanisation des Deux-Rives dispose d’un potentiel global de constructibilité qui s’élève à 1,5 million de m² et fait de lui le deuxième plus grand projet urbain français après celui de Paris Rive Gauche. Colonne vertébrale de ce développement vers l’est et trait d’union au-dessus du Rhin entre Strasbourg et Kehl, à l’heure où certaines frontières se referment, l’extension de la ligne D du tram renforce les liens entre les habitant·es et joue un rôle majeur dans le développement des liaisons transfrontalières.

Elle permettra de desservir les nouvelles zones d’urbanisation prévues au Schéma Directeur des Deux-Rives, mais également de renforcer la desserte de la zone portuaire et du quartier du port du Rhin. Avec cette extension, l’offre de transport est un précurseur de l’urbanisation et la façonne. C’est une nouvelle logique qui s’impose. L’arrivée des lignes de tramway dans les quartiers a depuis toujours eu un impact fort sur le renouvellement urbain et l’amélioration du cadre de vie. Cependant, jamais encore le transport n’avait précédé la construction de logements ou de bâtiments publics.

Ce prolongement a une autre particularité : pour la première fois, un tram traverse une frontière sans disruption de service pour l’usager·e. Les usager·es français·es et allemand·es peuvent utiliser sans surcoût, avec leurs abonnements respectifs, cette ligne au-delà de la frontière. La mise en place de ce réseau transfrontalier a en effet donné lieu à la signature quadripartite (Eurométropole de Strasbourg, Ville de Kehl, CTS, TDK avril) d’une convention de tarification commune posant les règles commerciales de déplacements pour les usager·es des deux pays.

La mise en service de l'extension de la ligne D à la gare de Kehl a été inaugurée le 29 avril 2017. Les travaux se poursuivent actuellement sous la maîtrise d'ouvrage de la Ville de Kehl jusqu'à la fin de l'année 2018 pour assurer la desserte du centre-ville de Kehl.

Des ouvrages d'art remarquables

Ce projet a été marqué par la réalisation de deux d'ouvrages d'art remarquables: le pont André Bord au-dessus du bassin Vauban et du pont Béatus Rhénanus qui enjambe le Rhin.

Ces deux ouvrages sont dédiés au transport en commun en site propre et aux modes doux de circulation. Il est également accessible aux personnes à mobilité réduite. Aussi, chacun se compose d’une piste réservée aux cycles, d’un trottoir pour les piétons et de la plateforme tramway.

Le pont André Bord

  • Conception et la Maîtrise d’œuvre : Egis
  • Architecte : Bernard Nappi
  • Construction : Eiffage
  • Longueur de l’ouvrage : 160 mètres
  • Largeur du tablier : 15 mètres
  • Poids du tablier : 1 300 tonnes
  • Poids de l’arc : 400 tonnes
  • Tirant d’air : 7 mètres
  • Délai de livraison : 18 mois (de janvier 2015 / mai 2016)

Le pont Béatus Rhénanus

  • Conception-réalisation : groupement d’entreprises piloté par Bouygues Travaux Publics Région France
  • Architecte : Marc Barani.
  • Longueur de l’ouvrage : 290 mètres
  • Largeur du tablier : 16 mètres
  • Épaisseur du tablier : 1,75 mètre
  • Hauteur de l’arc : 20 mètres
  • Poids de l’ouvrage : 3 000 tonnes
  • Tirant d’air : 7 mètres
  • Délai de réalisation : 18 mois (de juin 2015 à fin 2016)

L'extension en chiffres

A terme, un total de 3,9 km d'extension et 6 nouvelles stations

En avril 2017

  • 2,7 km d'exploitation depuis la station « Aristide Briand » jusqu’à la gare de Kehl.
  • 2 nouvelles stations pour desservir le quartier du Port du Rhin et la gare de Kehl : « Port du Rhin » et « Kehl Bahnhof ». Les stations « Citadelle » et « Starcoop » ouvertes au fur et à mesure de l’urbanisation.
  • 20 000 personnes desservies
  • Un tram toutes les 7 minutes en station "Port du Rhin" et toutes les 14 minutes en station "Gare de Kehl".

A l'horizon 2018

  • La ville de Kehl a prolongé la ligne D de 1,2 km supplémentaires depuis la gare de Kehl jusqu’à la mairie de Kehl. 
  • 2 nouvelles stations pour desservir le centre-ville de Kehl : « Hochschule » et « Rathaus ». 
  • 26 000 personnes desservies. 

Coût de l'opération

  • 96,62 M€ HT (jusqu’à Kehl-Bahnhof) dont 70,40 M€ à la charge de l’Eurométropole  de Strasbourg et 26,22 M€ à la charge de la Ville de Kehl.
  • Cofinancements attendus par l’Eurométropole de Strasbourg : 10 M€ de l’État français, 500 000 € du Conseil Départemental du Bas-Rhin et 100 000 € de l’Eurodistrict
  • Cofinancements attendus par la Ville de Kehl : 6,20 M€ du Land et 19 M€ du Bund
  • Cofinancement européen à partager entre les deux collectivités : 3,25 M€ d’Interreg

Commentaires