Graphique

Retrouver tous les sujets résolus.
Invité

Re: Graphique

Message par Invité » sam. 15 févr. 2020 19:37

Et j'ai une autre question :
Dans votre message du 9 janvier à 7h35, à quoi correspond cette ligne ?

Code : Tout sélectionner

if element[0] != gare[0] and element[2] == gare[2]:
Elle m'avait échappé lors de ma première lecture du code, et je ne comprends pas à quoi elle sert...

Merci encore.
Invité

Re: Graphique

Message par Invité » sam. 15 févr. 2020 22:19

Désolé pour ce troisième message, je suis encore sur ce travail, je n'ai même pas dîné avec ma famille tellement ce projet me prend du temps... Je n'ai toujours pas dîné... Mais passons.

Pourriez-vous m'expliquer à chaque ligne ce que fait le programme en dessous ? J'ai tout compris sauf la fonction graphe_lignes (mais je pense que c'est le plus important...). Et quelle est la différence entre graphe_lignes et dico_lignes (fonction non comprise non plus) ?

Code : Tout sélectionner

import csv
import geopy.distance as gd

with open('lignes-par-type.csv',newline='',encoding='utf-8') as f :
    lire = csv.reader(f)
    liste = [ligne for ligne in lire]
    liste_lignes = liste[1:]
    lignes_debut_fin=[int(ligne[0]) for ligne in liste_lignes]

with open('liste-des-gares.csv',newline='',encoding='utf-8') as h :
    extraction  = csv.reader(h)
    liste_brute = [ligne for ligne in extraction]
    liste_brute = liste_brute[1:]
    liste_gares = [[int(ligne[0]),ligne[1],int(ligne[4]),float(ligne[15]),float(ligne[16])] for ligne in liste_brute if ligne[2]=='O' and ligne[15] != '']

def distance(point1,point2):
    return gd.distance(point1, point2).kilometers

def graphe_lignes() :
    dico={}
    numero_lignes = lignes_debut_fin
    for gare in liste_gares :
        liste = []
        for element in liste_gares :
            if element[0] != gare[0] and element[2] == gare[2]:
                liste.append((element[1],distance((gare[3],gare[4]),(element[3],element[4])),element[2]))
        if gare[1] in dico.keys():
            dico[gare[1]] = dico[gare[1]] + liste
        else :
            dico[gare[1]] = liste
    return dico
    
    def dico_lignes() :
    dico={}
    for gare in liste_gares :
        dico_noeud = {}
        for element in liste_gares :
            if element[0] != gare[0] and element[2] == gare[2]:
                dico_noeud[element[1]] = (distance((gare[3],gare[4]),(element[3],element[4])),element[2])
        if gare[1] in dico.keys():
            dico[gare[1]].update(dico_noeud)
        else :
            dico[gare[1]] = dico_noeud
    return dico

def liste_lignes(gare):
    liste = []
    for element in liste_gares :
        if element[1] == gare and element[2] not in liste :
            liste.append(element[1])
    return liste
En gros j'aimerais construire le graphe des gares pour y appliquer Dijkstra. Je souhaite donc créer la liste d'adjacence, comme ce qui est fait sur la pièce jointe.
exemple liste adjacence.png
Et aussi, je dois plutôt utiliser le PK (point kilométrique) des données SNCF pour les calculs de distance...

J'ai donc modifié liste_gares, maintenant liste_gares est du type (voir l'extrait ci-dessous) :

liste_gares=[...,[1000, "Verneuil-l'Étang", 52, 2.824871893625343, 48.64451545578106], [570000, 'Châtellerault', 303, 0.549511359941678, 46.81853401630969], [570000, 'Libourne', 547, -0.23597921047796402, 44.915671649178236], [475000, 'St-Brieuc
', 474, -2.773798977672474, 48.50824301357313], [57000, "Port-d'Atelier-Amance", 124, 6.043474433363755, 47.75865896332187], [561000, 'Arnage', 325, 0.190168380795901, 47.92854691202431],...]

Donc chaque sous-liste de liste_gares est du type : [numéro de la ligne sur laquelle se trouve la gare, nom de la gare, PK (point kilométrique) de la gare sur la ligne dont le numéro a été indiqué en première position, longitude de la gare, latitude de la gare]

Et le prof veut qu'on utilise les PK pour les calculs de distance...
Comment puis-je donc obtenir la liste d'adjacence ? En modifiant la fonction "graphe_lignes" ? Mais je n'ai pas encore réussi...

Merci encore de m'aider autant SoS 21... Je vous suis infiniment reconnaissant.
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Graphique

Message par sos-math(21) » dim. 16 févr. 2020 09:21

Bonjour,
le code

Code : Tout sélectionner

if element[0] != gare[0] and element[2] == gare[2]
correspond à la condition qu'il faut mettre pour rajouter une gare à une ligne :
la condition element[0]!=gare[0] porte sur le code de la gare, c'est pour éviter de rajouter une gare qui y serait déjà.
La condition element[2] == gare[2] teste l'appartenance des gares à une même ligne.
Donc on ajoute des gares à d'autres gares si et seulement si elles sont sur la même ligne et n'ont pas déjà été rajoutées.
La fonction graphes_lignes établit un dictionnaire de tuples alors que la fonction dico_lignes établit un dictionnaire de dictionnaires, mais elle font à peut près la même chose.
Dans mon fichier, je calcule les distances avec les coordonnées géographiques : il faut donc que tu rajoutes la colonne des points kilométriques dans ton fichier extrait et que tu calcules la distance à l'aide de ce point mais je ne sais pas comment cela marche : dans la première cellule de cette colonne, il y a 444+105 : cela signifie quoi ?
Je te laisse trouver le sens de cette expression et adapter la fonction graphe_lignes ou dico_lignes en conséquence.
Je reste toujours stupéfait que votre professeur vous laisse aussi démunis face à une tâche aussi complexe : est-ce qu'il vous apporte une aide quand vous le sollicitez ?
Bonne continuation
Invité

Re: Graphique

Message par Invité » dim. 16 févr. 2020 13:36

Merci pour votre réponse.

Le PK est sous la forme 342+987, mais après renseignements sur des sites sur le ferroviaire, seuls comptent les 3 premiers chiffres.
Et le PK d'une gare est la distance de cette gare par rapport à une gare terminus.

Donc, "par soustraction", on peut trouver les distances entre toutes les gares d'une ligne.

C'est mon professeur qui m'a fourni l'image que je vous ai transmise dans mon message de 22h19 d'hier soir, qui est en réalité un extrait d'un site Internet. La seule aide qu'il m'apporte est : "faites une liste d'adjacence de ce type pour modéliser le réseau ferroviaire". Apparemment d'après les échos que j'ai eu, c'est un jeune prof qui vient d'avoir son diplôme, et qui a donc du mal à gérer ce qu'il faut... Mais tout cela m'embarrasse.

Comment puis-je donc construire à partir du dictionnaire la liste d'adjacence ?

J'ai réussi à construire un dictionnaire tel que l'on ait par exemple dic[1000]=[['Émerainville-Pontault-Combault', 27], ['Nogent-Le Perreux', 16], ['Lure', 410], ['Noisy-le-Sec', 8], ['Troyes', 166], ['Bricon', 249], ['St-Mesmin', 146], ['Chaumont', 261], ['Pantin', 4], ['Vesoul', 380], ['Longueville', 88], ['Clairvaux', 233], ['Noisy-le-Sec', 8], ['Châtres (Aube)', 138], ['Gretz-Armainvilliers', 38], ['Grandpuits', 64], ['Grandpuits-Bagneux', 62], ['Flamboin-Gouaix', 95], ['Belfort', 442], ['Romilly-sur-Seine', 128], ['Crancey', 121], ['Jussey', 346], ['Rolampont', 286], ['Mulhouse-Ville', 490], ['Nangis', 69], ["Port-d'Atelier-Amance", 360], ['Maison-Rouge-en-Brie', 79], ['Bas-Évette', 435], ['Altkirch', 474], ['Culmont-Chalindrey', 307], ['Langres', 296], ['Nogent-sur-Seine', 110], ['Villiers-le-Sec', 256], ['Bar-sur-Aube', 220], ['Jessains', 209], ['Paris-La Villette-Hébert', 2], ["Verneuil-l'Étang", 52]]

Donc là les PK sont associés aux gares.

Déjà, on voit qu'il y a des doublons... (Noisy-le-Sec par exemple)... Comment éliminer des doublons dans la valeur d'une clé d'un dictionnaire, cette valeur étant ici une liste de listes ?

Et donc on doit pouvoir utiliser les PK dans dico_lignes pour calculer les distances, en faisant des soustractions je pense, car là on obtient : dic[1000][2][1]=16, donc on peut utiliser les PK pour les distances...

Mais comment adapter dico_lignes en conséquence ?

C'est vraiment ça que je n'arrive pas à faire...

Merci encore, j'espère que vous aurez le temps de me répondre avant la fermeture du forum à 14h (ou répondre dans mon message comme une fois précédente), car il faut vraiment que j'avance ce travail cet après-midi.....
Invité

Re: Graphique

Message par Invité » lun. 17 févr. 2020 01:11

Bonsoir,

Je récapitule un peu là où j'en suis, afin que tout soit bien clair pour vous, qui m'aidez beaucoup, extrêmement gentiment.

Voici le code qui est clair pour moi, et qui fonctionne, que j'ai pour l'instant :

Code : Tout sélectionner

import csv

with open('lignes-par-type.csv',newline='',encoding='utf-8') as f :
    lire = csv.reader(f,delimiter = ";")
    liste = [ligne for ligne in lire]
    liste_lignes = liste[1:]
    lignes_debut_fin=[int(ligne[0]) for ligne in liste_lignes]

with open('liste-des-gares.csv',newline='',encoding='utf-8') as h :
    extraction  = csv.reader(h,delimiter = ";")
    liste_brute = [ligne for ligne in extraction]
    liste_brute = liste_brute[1:]
    liste_gares = [[int(ligne[4]),ligne[1],int(ligne[6][:3]),float(ligne[13]),float(ligne[14])] for ligne in liste_brute if ligne[2]=='O' and ligne[15] != '']

myDict = {}

for element in liste_gares:
    if element[0] in myDict:
        myDict[element[0]].append([element[1],element[2]])
    else:
        myDict[element[0]] = [[element[1], element[2]]]
Ensuite, je dois construire le graphe du réseau ferré français à partir de ce dictionnaire myDict, sachant que, par exemple, myDict[466000] affiche :
[['Retiers', 26], ['Châteaubriant', 0], ['Janzé', 36]], c'est-à-dire la liste des gares ouvertes au fret de la ligne numéro 466000, associées à leur PK, dont la définition a été expliquée dans mon message précédent.

Et c'est là que se pose le problème. C'est là que je bloque : je n'arrive pas à construire la liste d'adjacence du graphe du réseau ferroviaire. Quel serait le code ? Avec les PK et quelques soustractions, on doit pouvoir déterminer les distances entre chaque gare d'une ligne, mais je n'arrive pas à l'implémenter en Python... Le professeur m'a rappelé que l'objectif principal est d'appliquer l'algorithme de Dijkstra au graphe.

Quel code pourrais-je donc utiliser pour créer la liste d'adjacence du graphe du réseau ferroviaire afin de lui appliquer Dijkstra ensuite ?

Merci infiniment pour votre aide, je vous suis vraiment très très reconnaissant.
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Graphique

Message par sos-math(21) » lun. 17 févr. 2020 18:03

Bonjour,
pour le traitement des PK qui sont de la forme nb1+nb2, tu peux utiliser la séquence int(chaine.split("+")[0]) :
la méthode split s'applique à la chaine et la séquence avec le séparateur "+" . Cela fournit une liste de deux chaines, celles qu'il y a avant le + et celle qu'il y a après.
Donc on prend l'élément d'indice 0 pour récupérer la partie avant le plus (tu m'as dit que c'était seulement cela qui comptait pour le PK).
Puis on convertit cela en entier avec la fonction int.

Code : Tout sélectionner

>>>chaine="347+678"
>>> nombre = int(chaine.split("+")[0]
>>> nombre
347
Il restera ensuite à former une différence de la forme abs(int(chaine1.split("+")[0] - int(chaine2.split("+")[0]) pour avoir la différence positive des PK, ce qui devrait fournir la distance.
Il te reste donc à faire évoluer :
- les données que tu extrais des différents fichiers csv, en modifiant la liste liste_gares (tout ce qui est dans le with)
- la fonction dico_ligne en incluant ce calcul de distance remplaçant ma fonction distance

Je m'interroge toujours sur le pilotage de ce projet par ton professeur : il compte vous faire construire l'algorithme de Dijkstra tous seuls ? Cela ne me semble pas raisonnable...
Tu ne dois pas être tout seul dans cette galère ? Que font les autres ? Vous ne pouvez pas vous entraider ?
Bonne continuation et surtout bon courage
Invité

Re: Graphique

Message par Invité » lun. 17 févr. 2020 19:47

Bonsoir,

Merci encore pour votre réponse, et désolé de vous prendre autant de temps... Au moins grâce à vous, je progresse sacrément en Python !
Non, par contre nous avons l'algorithme de Dijkstra... C'est la seule chose qu'il nous a donnés !

L'objectif principal est donc de modéliser le réseau ferroviaire français sous la forme d'un graphe.

Merci pour l'indication sur le PK.

Est-ce que ce code convient mieux ? J'ai intégré votre proposition dans la construction de liste_gares : cela convient ?

Code : Tout sélectionner

import csv

with open('lignes-par-type.csv',newline='',encoding='utf-8') as f :
    lire = csv.reader(f,delimiter = ";")
    liste = [ligne for ligne in lire]
    liste_lignes = liste[1:]
    lignes_debut_fin=[int(ligne[0]) for ligne in liste_lignes]

with open('liste-des-gares.csv',newline='',encoding='utf-8') as h :
    extraction  = csv.reader(h,delimiter = ";")
    liste_brute = [ligne for ligne in extraction]
    liste_brute = liste_brute[1:]
    liste_gares = [[int(ligne[4]),ligne[1],int(ligne[6].split("+")[0]),float(ligne[13]),float(ligne[14])] for ligne in liste_brute if ligne[2]=='O' and ligne[15] != '']

myDict = {}

for element in liste_gares:
    if element[0] in myDict:
        myDict[element[0]].append([element[1],element[2]])
    else:
        myDict[element[0]] = [[element[1], element[2]]]
C'est vraiment la distance entre les stations que je n'arrive pas à intégrer dans le code : comment faire ?

Ceci :

Code : Tout sélectionner

abs(int(chaine1.split("+")[0] - int(chaine2.split("+")[0])
, il faudrait le mettre dans dico_lignes ?

J'ai vraiment du mal à adapter dico_lignes, je pense qu'il faudrait que je reconstruise cette fonction du début pour que tout soit bien clair pour moi, mais je ne sais même pas ce que je veux construire comme fonction... Et les autres personnes dans la classe ont d'autres utilisations de Dijkstra, le prof ne voulait pas que l'on "copie"... :( alors qu'on est quand-même en TS...
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Graphique

Message par sos-math(21) » lun. 17 févr. 2020 20:46

Bonjour,
je le mettrai dans dico_lignes : si je me rappelle bien, ton dictionnaire doit contenir les gares routières associées à la liste des gares qui sont sur la même ligne avec la distance les séparant de cette gare.
J'ai fait un essai et j'ai message d'erreur car il y a des PK qui sont de la forme 000-440, ce qui interdit la méthode split basée sur le +.
J'ai contourné le problème avec une fonction de conversion :

Code : Tout sélectionner

def conversion(chaine):
    if "+" in chaine :
        return int(chaine.split("+")[0])
    elif "-" in chaine:
        return int(chaine.split("-")[0])
et ensuite l'instruction :

Code : Tout sélectionner

liste_gares=[[int(ligne[4]),ligne[1],conversion(ligne[6]),float(ligne[13]),float(ligne[14])] for ligne in liste_brute if ligne[2]=='O' and ligne[15] != '']
fonctionne (pourquoi récupères-tu ligne[13] et ligne[14] ) ?
Mais cela ne dit pas comment utiliser cette première partie du PK....
Il faudrait donc que tu creuses vraiment cette histoire de PK car s'ils n'ont pas tous le même format, c'est bien qu'il y a une raison.
Comment sont-ils construits et comment peuvent-ils être utilisés ?
Bonne continuation
Invité

Re: Graphique

Message par Invité » lun. 17 févr. 2020 21:49

Bonsoir,

Pour quelle gare avez-vous trouvé du 123-456, donc un moins ? C'est étrange...

Merci encore.
Invité

Re: Graphique

Message par Invité » mar. 18 févr. 2020 02:09

Je me suis renseigné, et lorsque l'on a quelque chose du type PK : 432+803, cela signifie que la gare se situe à 432 km et 803 m de la gare terminus.

Sachant cela, comment pourrais-je modifier dico_lignes pour le calcul de distances entre gares afin de créer la liste d'adjacence du graphe ? Ce qui correspondrait donc au poids du graphe... Mais comment faire pour créer cette liste d'adjacence avec les poids qui seraient les distances entre les gares, calculées avec les PK des gares sur une ligne donnée.

Sachant que ce code :

Code : Tout sélectionner

import csv

with open('liste-des-gares.csv',newline='',encoding='utf-8') as h :
    extraction  = csv.reader(h,delimiter = ";")
    liste_brute = [ligne for ligne in extraction]
    liste_brute = liste_brute[1:]
    liste_gares = [[int(ligne[4]),ligne[1],int(ligne[6][:3]),float(ligne[13]),float(ligne[14])] for ligne in liste_brute if ligne[2]=='O' and ligne[15] != '']

myDict = {}

for element in liste_gares:
    if element[0] in myDict:
        myDict[element[0]].append([element[1],element[2]])
    else:
        myDict[element[0]] = [[element[1], element[2]]]
permet d'avoir par exemple, pour la ligne numéro 340000 :

Code : Tout sélectionner

myDict[340000]
[['Bonnières', 68], ['Rosny-sur-Seine', 62], ['Sotteville', 133], ['Les Mureaux', 40], ["Pont-de-l'Arche", 118], ['Oissel', 125], ['St-Étienne-du-Rouvray', 129], ['Poissy', 25], ['Paris-Batignolles', 2], ['Vernouillet-Verneuil', 34], ['Le Havre', 227], ['Bréauté-Beuzeville', 202], ['Gaillon-Aubevoye', 93], ['Motteville', 169], ['Rouen-Rive-Droite', 139], ['St-Pierre-du-Vauvray', 106], ['Mantes-la-Jolie', 57]]
Les nombres à côté des gares étant les PK des gares, mais ça ne va pas car il faut ajouter les m après le + comme expliqué dans ma première ligne...

J'ai aussi essayé quasiment toute la journée de modifier dico_lignes et graphe_lignes pour calculer les distances entre les gares avec le PK, afin d'avoir les poids du graphe, sans succès...

De votre côté, avez-vous une idée ?

Encore merci de me soutenir dans cette vraie galère. On va y arriver, enfin je l'espère ! :)
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Graphique

Message par sos-math(21) » mar. 18 févr. 2020 11:14

Bonjour,
dans le fichier liste gares tu as certaines fois des indications 000-400.
Puisque ce sont les mètres il faut les rajouter donc je te propose le code suivant

Code : Tout sélectionner

def conversion(chaine):
    if "+" in chaine :
        return float(chaine.split("+")[0]+"."+chaine.split("+")[1])
    elif "-" in chaine:
        return float(chaine.split("-")[0]+"."+chaine.split("-")[1])
Et il faut ensuite insérer cela dans le code de dico_lignes.
Bonne continuation
Invité

Re: Graphique

Message par Invité » mar. 18 févr. 2020 13:07

Bonjour,

Merci pour votre réponse.

Voici comment je propose de modifier dico_lignes :

Code : Tout sélectionner

import csv

def conversion(chaine):
    if "+" in chaine :
        return float(chaine.split("+")[0]+"."+chaine.split("+")[1])
    elif "-" in chaine:
        return float(chaine.split("-")[0]+"."+chaine.split("-")[1])

with open('liste-des-gares.csv',newline='',encoding='utf-8') as h :
    extraction  = csv.reader(h,delimiter = ";")
    liste_brute = [ligne for ligne in extraction]
    liste_brute = liste_brute[1:]
    liste_gares = [[int(ligne[4]),ligne[1],conversion(ligne[6]),float(ligne[13]),float(ligne[14])] for ligne in liste_brute if ligne[2]=='O' and ligne[15] != '']

myDict = {}

for element in liste_gares:
    if element[0] in myDict:
        myDict[element[0]].append([element[1],element[2]])
    else:
        myDict[element[0]] = [[element[1], element[2]]]
        
def dico_lignes() :
    dico={}
    for gare in liste_gares :
        dico_noeud = {}
        for element in liste_gares :
            if element[0] != gare[0] and element[2] == gare[2]:
                dico_noeud[element[1]] = ((gare[3]-element[3]),element[2])
        if gare[1] in dico.keys():
            dico[gare[1]].update(dico_noeud)
        else :
            dico[gare[1]] = dico_noeud
    return dico
Qu'est ce que vous en penses ?

Comme vous pouvez le voir dans le code, j'ai appelé la fonction "conversion" lorsque je crée le PK dans liste_gares. Et "float(ligne[13]),float(ligne[14])", c'est pour avoir la latitude et la longitude de la gare, ça sera peut-être utile dans la suite du projet, donc je préfère les mettre.

Ensuite pour la distance dans dico_lignes, j'ai fait une simple différence entre les PK : gare[3]-element[3]. (voir dans la fonction directement).

Mais est-ce que ça calcule vraiment ce que l'on veut ? Je n'en suis vraiment pas sûr... Comment le modifier sinon ?

Merci encore et bon après-midi.
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Graphique

Message par sos-math(21) » mar. 18 févr. 2020 17:09

Bonjour,
pour vérifier ton programme, essaie de vérifier sur quelques gares que tu auras identifiées et que tu appelles avec la clé du dictionnaire adéquate.
Je mettrai tout de même un abs() autour de ta différence (valeur absolue) car a priori, on ne sait pas dans quel ordre les gares arrivent dans le dictionnaire.
Bonne continuation
Invité

Re: Graphique

Message par Invité » mar. 18 févr. 2020 18:24

Merci beaucoup pour votre réponse.

Je vais donc mettre un abs.

Question : comment appeler des gares ?
En tout cas, si c'est dico['Poitiers'] par exemple, alors il y a un problème car quand on appelle de cette manière, cela envoie un message d'erreur...

Pouvez-vous essayer de votre côté, et éventuellement me dire si vous voyez une erreur dans dico_lignes s'il vous plaît ?
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Graphique

Message par sos-math(21) » mar. 18 févr. 2020 20:27

Bonjour,
ton dictionnaire est la fonction dico_lignes() et on veut la valeur de la clé 'Poitiers' donc on écrit :

Code : Tout sélectionner

dico_lignes()['Poitiers']
Chez moi, avec ma version de dico_lignes (qui est sûrement un peu différente de la tienne car tu l'as fait évoluer depuis), j'obtiens bien une réponse :

Code : Tout sélectionner

>>> dico_lignes()['Poitiers']
{'Choisy-le-Roi': (288.31991504994414, 570000), 'Chasseneuil (Vienne)': (8.31988
6268217884, 570000), 'La Tricherie': (18.236657224121828, 570000), 'Couhé-Vérac'
: (31.36764976530626, 570000), 'Ingrandes-sur-Vienne': (37.18536118986929, 57000
0), 'Blois-Chambord': (134.51359631523687, 570000), 'Ste-Maure-Noyant': (61.6790
4111566583, 570000), 'Vitry-sur-Seine': (291.3420186256925, 570000), 'Bassens-Ap
pontements': (198.49483105097934, 570000), 'Mer': (153.37912365673137, 570000), 
'St-Saviol': (49.19431944182391, 570000), 'Jaunay-Clan': (11.693805638496023, 57
0000), 'Étampes': (247.72759688254214, 570000), 'Villeperdue': (72.5962886928164
9, 570000), 'St-Pierre-des-Corps': (94.1770123591242, 570000), 'Bordeaux-St-Jean
': (207.12281456648523, 570000), 'Toury': (216.20935633673622, 570000), 'Angoulê
me': (104.05048584841529, 570000), 'Villeneuve-le-Roi': (286.6743109871476, 5700
00), 'Port-de-Piles': (51.7179170219756, 570000), 'Naintré-les-Barres': (23.3178
0658271575, 570000), 'Paris-Tolbiac': (293.24408223947177, 570000), 'Artenay': (
203.56063314619325, 570000), 'La Couronne': (110.11212122770999, 570000), 'Vayre
s': (194.04882289849718, 570000), 'Les Aubrais-Orléans': (191.02592168312262, 57
0000), 'Les Ormes-sur-Vienne': (48.117330418469265, 570000), 'Coutras': (175.542
0357221762, 570000), 'Charmant': (121.18151952888114, 570000), 'Juvisy': (280.18
385400846967, 570000), 'Châtellerault': (31.048259270027653, 570000), 'Libourne'
: (190.458759019474, 570000), 'Brétigny': (269.2473899443639, 570000), 'St-Jean-
de-Sauves': (30.518804231117624, 574000)}
Bonne continuation
Répondre