<div dir="ltr">J'ai fait la même chose pour Lyon que ce que j'ai fait à Rennes (en essayant de faire moins d'erreur...)<br>les données sont là : <a href="http://data.grandlyon.com/equipements/points-darrft-du-rfseau-tcl">http://data.grandlyon.com/equipements/points-darrft-du-rfseau-tcl</a><br>Sur les points des données (ils sont, je pense, là où les bus s'arrête donc la plupart du temps sur les zébras c'est pas tout a fait les platform mais presque) j'ai mis les tags highway=bus_stop, public_transport=platform, bus=yes, network=TCL, ref:FR:TCL=*, name=* et wheelchair=(yes ou no)<br>Dans les données il y a aussi une liste des lignes qui s'arrête au point. Par exemple "296:R,C16A:R,C25B:R" pour dire que les bus de la ligne 296, C16 et C25 s'y arretent dans le sens retour(":R") (le "A" et le "B" avant les ":" je sais pas à quoi ils servent). Il ne me semble pas y avoir de tag pour exploiter cela à moins de le mettre dans un tag note=*.<br>En dessous j'ai mis le code avec seulement les arrêts de bus, les données donnent des points pour les arrêt de bus, tramway et métro.<br>Puis une autre solution en integrant aussi les arrêts de tram (pour les trams, les points sont sur les platforms à côté des rails)<br>Les tag pour les tram sont public_transport=platform, network=TCL, ref:FR:TCL=*, name=* et wheelchair=(yes ou no). Je ne sais pas s'il faut ajouter tram=yes et railway=platform.<br>Pour les arret de metro je les ai exclu je sais pas où sont placés les points (sur les platform en sous sol je pense mais c'est peut etre tres loin de celle-ci vu que l'on voit rien du sous sol sur les photos aeriennes :P)<br><br>Pour Frédéric : je sais pas trop si ce que j'ai fait c'est bon pour les coordonnées et le where pour ne prendre que les arrêt de bus (ou bus et tram)<br><br><br>#!/usr/bin/env python<br>#-*- coding: utf-8 -*-<br><br>from Analyser_Merge import Analyser_Merge, Source, SHP, Load, Mapping, Select, Generate<br><br><br>class Analyser_Merge_Public_Transport_FR_TCL(Analyser_Merge):<br>    def __init__(self, config, logger = None):<br>        self.missing_official = {"item":"8040", "class": 91, "level": 3, "tag": ["merge", "public transport"], "desc": T_(u"TCL stop not integrated") }<br>        self.possible_merge   = {"item":"8041", "class": 93, "level": 3, "tag": ["merge", "public transport"], "desc": T_(u"TCL stop, integration suggestion") }<br>        self.update_official  = {"item":"8042", "class": 94, "level": 3, "tag": ["merge", "public transport"], "desc": T_(u"TCL stop update") }<br>        Analyser_Merge.__init__(self, config, logger,<br>            "<a href="http://data.grandlyon.com/equipements/points-darrft-du-rfseau-tcl">http://data.grandlyon.com/equipements/points-darrft-du-rfseau-tcl</a>",<br>            u"Points d'arrêt du réseau TCL",<br>            CSV(Source(attribution = u"SYTRAL", millesime = "12/2016",<br>                    fileUrl = "<a href="https://download.data.grandlyon.com/wfs/rdata?SERVICE=WFS&VERSION=2.0.0&outputformat=SHAPEZIP&request=GetFeature&SRSNAME=EPSG:4326&typename=tcl_sytral.tclarret">https://download.data.grandlyon.com/wfs/rdata?SERVICE=WFS&VERSION=2.0.0&outputformat=SHAPEZIP&request=GetFeature&SRSNAME=EPSG:4326&typename=tcl_sytral.tclarret</a>", zip = "tcl_sytral.tclarret.shp")),<br>            Load(("ST_X(geom)",), ("ST_Y(geom)",), srid = 4326,<br>                where = lambda res: not 'T' in res['desserte'] and not '30' in res['desserte']), # "desserte" donne la liste des lignes s'arrétant à ce point. Pour enlever les arrêts de tram (les noms des lignes commencent par "T") et de métro (les noms des lignes commencent par "30") (et aucune ligne de bus ne contiennent "T" ou "30")<br>            Mapping(<br>                select = Select(<br>                    types = ["nodes", "ways"],<br>                    tags = {"highway": "bus_stop"}),<br>                osmRef = "ref:FR:TCL",<br>                conflationDistance = 100,<br>                generate = Generate(<br>                    static1 = {<br>                        "highway": "bus_stop",<br>                        "public_transport": "platform",<br>                        "bus": "yes",<br>                        "network": "TCL"},<br>                    static2 = {"source": self.source},<br>                    mapping1 = {<br>                        "ref:FR:TCL": "id",<br>                        "name": "nom",<br>                        "wheelchair": lambda res: "yes" if res["pmr"] == "t" else "no" if res["pmr"] == "f" else None},<br>                    text = lambda tags, fields: {"en": u"TCL stop of %s" % fields["nom"], "fr": u"Arrêt TCL de %s" % fields["nom"]} )))<br><br># en integrant aussi les arrêts de tramway<br><br>class Analyser_Merge_Public_Transport_FR_TCL(Analyser_Merge):<br>    def __init__(self, config, logger = None):<br>        self.missing_official = {"item":"8040", "class": 91, "level": 3, "tag": ["merge", "public transport"], "desc": T_(u"TCL stop not integrated") }<br>        self.possible_merge   = {"item":"8041", "class": 93, "level": 3, "tag": ["merge", "public transport"], "desc": T_(u"TCL stop, integration suggestion") }<br>        self.update_official  = {"item":"8042", "class": 94, "level": 3, "tag": ["merge", "public transport"], "desc": T_(u"TCL stop update") }<br>        Analyser_Merge.__init__(self, config, logger,<br>            "<a href="http://data.grandlyon.com/equipements/points-darrft-du-rfseau-tcl">http://data.grandlyon.com/equipements/points-darrft-du-rfseau-tcl</a>",<br>            u"Points d'arrêt du réseau TCL",<br>            CSV(Source(attribution = u"SYTRAL", millesime = "12/2016",<br>                    fileUrl = "<a href="https://download.data.grandlyon.com/wfs/rdata?SERVICE=WFS&VERSION=2.0.0&outputformat=SHAPEZIP&request=GetFeature&SRSNAME=EPSG:4326&typename=tcl_sytral.tclarret">https://download.data.grandlyon.com/wfs/rdata?SERVICE=WFS&VERSION=2.0.0&outputformat=SHAPEZIP&request=GetFeature&SRSNAME=EPSG:4326&typename=tcl_sytral.tclarret</a>", zip = "tcl_sytral.tclarret.shp")),<br>            Load(("ST_X(geom)",), ("ST_Y(geom)",), srid = 4326,<br>                where = lambda res: not '30' in res['desserte']), # "desserte" donne la liste des lignes s'arrétant à ce point. Pour enlever les arrêts de métro (les noms des lignes commencent par "30") (et aucune ligne de bus ne contiennent "30")<br>            Mapping(<br>                select = Select(<br>                    types = ["nodes", "ways"],<br>                    tags = [{"highway": "bus_stop"}, {"public_transport": "platform"}]),<br>                osmRef = "ref:FR:TCL",<br>                conflationDistance = 10,<br>                generate = Generate(<br>                    static1 = {<br>                        "public_transport": "platform",<br>                        "network": "TCL"},<br>                    static2 = {"source": self.source},<br>                    mapping1 = {<br>                        "highway": lambda res: "bus_stop" if "T" not in res["desserte"] else None,<br>                        "bus": lambda res: "yes" if "T" not in res["desserte"] else None,<br>                        "ref:FR:TCL": "id",<br>                        "name": "nom",<br>                        "wheelchair": lambda res: "yes" if res["pmr"] == "t" else "no" if res["pmr"] == "f" else None},<br>                    text = lambda tags, fields: {"en": u"TCL stop of %s" % fields["nom"], "fr": u"Arrêt TCL de %s" % fields["nom"]} )))<br></div>