[OSM-talk-fr] transport en commun à lyon et osmose
Jérôme Amagat
jerome.amagat at gmail.com
Lun 5 Déc 19:54:58 UTC 2016
J'ai fait la même chose pour Lyon que ce que j'ai fait à Rennes (en
essayant de faire moins d'erreur...)
les données sont là :
http://data.grandlyon.com/equipements/points-darrft-du-rfseau-tcl
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)
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=*.
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.
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)
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.
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)
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)
#!/usr/bin/env python
#-*- coding: utf-8 -*-
from Analyser_Merge import Analyser_Merge, Source, SHP, Load, Mapping,
Select, Generate
class Analyser_Merge_Public_Transport_FR_TCL(Analyser_Merge):
def __init__(self, config, logger = None):
self.missing_official = {"item":"8040", "class": 91, "level": 3,
"tag": ["merge", "public transport"], "desc": T_(u"TCL stop not
integrated") }
self.possible_merge = {"item":"8041", "class": 93, "level": 3,
"tag": ["merge", "public transport"], "desc": T_(u"TCL stop, integration
suggestion") }
self.update_official = {"item":"8042", "class": 94, "level": 3,
"tag": ["merge", "public transport"], "desc": T_(u"TCL stop update") }
Analyser_Merge.__init__(self, config, logger,
"
http://data.grandlyon.com/equipements/points-darrft-du-rfseau-tcl",
u"Points d'arrêt du réseau TCL",
CSV(Source(attribution = u"SYTRAL", millesime = "12/2016",
fileUrl = "
https://download.data.grandlyon.com/wfs/rdata?SERVICE=WFS&VERSION=2.0.0&outputformat=SHAPEZIP&request=GetFeature&SRSNAME=EPSG:4326&typename=tcl_sytral.tclarret",
zip = "tcl_sytral.tclarret.shp")),
Load(("ST_X(geom)",), ("ST_Y(geom)",), srid = 4326,
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")
Mapping(
select = Select(
types = ["nodes", "ways"],
tags = {"highway": "bus_stop"}),
osmRef = "ref:FR:TCL",
conflationDistance = 100,
generate = Generate(
static1 = {
"highway": "bus_stop",
"public_transport": "platform",
"bus": "yes",
"network": "TCL"},
static2 = {"source": self.source},
mapping1 = {
"ref:FR:TCL": "id",
"name": "nom",
"wheelchair": lambda res: "yes" if res["pmr"] ==
"t" else "no" if res["pmr"] == "f" else None},
text = lambda tags, fields: {"en": u"TCL stop of %s" %
fields["nom"], "fr": u"Arrêt TCL de %s" % fields["nom"]} )))
# en integrant aussi les arrêts de tramway
class Analyser_Merge_Public_Transport_FR_TCL(Analyser_Merge):
def __init__(self, config, logger = None):
self.missing_official = {"item":"8040", "class": 91, "level": 3,
"tag": ["merge", "public transport"], "desc": T_(u"TCL stop not
integrated") }
self.possible_merge = {"item":"8041", "class": 93, "level": 3,
"tag": ["merge", "public transport"], "desc": T_(u"TCL stop, integration
suggestion") }
self.update_official = {"item":"8042", "class": 94, "level": 3,
"tag": ["merge", "public transport"], "desc": T_(u"TCL stop update") }
Analyser_Merge.__init__(self, config, logger,
"
http://data.grandlyon.com/equipements/points-darrft-du-rfseau-tcl",
u"Points d'arrêt du réseau TCL",
CSV(Source(attribution = u"SYTRAL", millesime = "12/2016",
fileUrl = "
https://download.data.grandlyon.com/wfs/rdata?SERVICE=WFS&VERSION=2.0.0&outputformat=SHAPEZIP&request=GetFeature&SRSNAME=EPSG:4326&typename=tcl_sytral.tclarret",
zip = "tcl_sytral.tclarret.shp")),
Load(("ST_X(geom)",), ("ST_Y(geom)",), srid = 4326,
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")
Mapping(
select = Select(
types = ["nodes", "ways"],
tags = [{"highway": "bus_stop"}, {"public_transport":
"platform"}]),
osmRef = "ref:FR:TCL",
conflationDistance = 10,
generate = Generate(
static1 = {
"public_transport": "platform",
"network": "TCL"},
static2 = {"source": self.source},
mapping1 = {
"highway": lambda res: "bus_stop" if "T" not in
res["desserte"] else None,
"bus": lambda res: "yes" if "T" not in
res["desserte"] else None,
"ref:FR:TCL": "id",
"name": "nom",
"wheelchair": lambda res: "yes" if res["pmr"] ==
"t" else "no" if res["pmr"] == "f" else None},
text = lambda tags, fields: {"en": u"TCL stop of %s" %
fields["nom"], "fr": u"Arrêt TCL de %s" % fields["nom"]} )))
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20161205/20c07791/attachment.htm>
Plus d'informations sur la liste de diffusion Talk-fr