2024-03-01
Aujourd'hui, j'ai envie de tracer le chemin entre 2 stations, s'il existe. Par exemple, le joueur ajoute "Rome" qui
- *est sur la ligne 2 ** et
- *est adjacente ** à Place de Clichy Puis ajoute à un autre moment "Place de Clichy", qui est sur la ligne 13 et 2, alors j'ajoute le chemin entre les 2 stations.
Je stocke déjà toutes les stations ajoutées dans une Map, il reste alors au moment de l'ajout d'une nouvelle station de vérifier si elle n'est pas adjacente à une station déjà en place.
Voyons un peu les données :
- Est-ce que les stations ont les lignes auxquelles elles appartiennent ?
- Est-ce que les lignes ont quelque chose en commun avec ce qu'il y aurait dans les stations ?
Ah, mais je n'ai pas terminé l'extract des lignes.
J'y retourne. En regardant, il reste qu'à enregistrer, j'ai l'impression.
C'est bon, de retour sur le lien entre stations et lignes.
J'ai l'impression que c'est le
properties.@relations.ref
qui pourrait fonctionner,
mais il ne faut pas oublier que ce n'est pas harmonisé (par exemple la ligne 9 ne vient pas du même contributeur).
En vérifiant avec cette commande cela m'a l'air correct :
cat assets/export.geojson | jq '.features | map(select(.properties.railway == "stop" or (.properties.public_transport == "stop_position" and .properties["type:RATP"] == "metro")))' | rg -C 25 'Miromesnil'
Bon, par contre dans le merge des stations, je n'ai pas mergé les refs des lignes, je vais modifier le script.
Je modifie, le script et le lance
const currentCoordinates = s.geometry.coordinates;
const currentLine = s.properties['@relations'].at(0).reltags.ref;
if (stations.has(stationName)) {
const station = stations.get(stationName);
station.properties.coordinates.push(currentCoordinates);
if (currentLine)
station.properties.lines.add(currentLine);
}
else {
s.properties.coordinates = [currentCoordinates];
s.properties.lines = new Set();
if (currentLine)
s.properties.lines.add(currentLine);
stations.set(stationName, s);
}
Hum, cela ne passe pas avec un
console.log
, je vois que la station
Marcadet - Poissonniers
, n'a pas de ref je peux
me base sur quoi ?
En enquêtant sur la station, je me rends compte que j'ai déjà les deux lignes qui m'intéressent, que le Point geojson
qui
n'a pas de relation est du "surplus".
Je vais faire en sorte de ne rien faire si je ne l'ai pas en espérant que ça soit suffisant.