Accessibilité - description des cheminements piétons
Mix.install([
{:kino, "~> 0.15.3"}
])
Introduction
Ce que vous allez apprendre :
✅ Comment représenter des cheminements piétons avec NeTEx
✅ Comment utiliser la documentation pour trouver les attributs d’accessibilité associés
Déroulement de la formation :
📌 Cas pratique
📌 Lecture de la documentation et découverte de quelques attributs emblématiques
📌 Exercice pratique de prise en main d’un fichier réel
Cas d’usage
Nous allons modéliser le cheminement piéton entre ces deux arrêts de bus :
© Enzo Brière pour Jungle Bus (CC-BY-SA-4.0)
© IGN
Modélisation schématique associée :
© Jungle Bus (CC-BY-SA)
Extrait NeTEx associé:
<members>
<Quay id="Yukaimaps:Quay:n-25372:LOC" version="any"> ... </Quay>
<Quay id="Yukaimaps:Quay:n-25397:LOC" version="any"> ... </Quay>
<StopPlace id="Yukaimaps:StopPlace:g_n-25372_bus:LOC" version="any"> ... </StopPlace>
<SitePathLink id="Yukaimaps:SitePathLink:w-582_n-25403_n-25366:LOC" version="any"> ... </SitePathLink>
<SitePathLink id="Yukaimaps:SitePathLink:w-597_n-25367_n-25371:LOC" version="any"> ... </SitePathLink>
<SitePathLink id="Yukaimaps:SitePathLink:w-631_n-25371_n-25403:LOC" version="any"> ... </SitePathLink>
<SitePathLink id="Yukaimaps:SitePathLink:w-639_n-25366_n-25367:LOC" version="any"> ... </SitePathLink>
<CrossingEquipment id="Yukaimaps:CrossingEquipment:w-631_n-25371_n-25403:LOC" version="any"> ... </CrossingEquipment>
<CrossingEquipment id="Yukaimaps:CrossingEquipment:w-639_n-25366_n-25367:LOC" version="any"> ... </CrossingEquipment>
(...)
</members>
Fichier exemple1.xml de la partie 5_accessibilite
Regardons les attributs, à l’aide de la documentation :
https://normes.transport.data.gouv.fr/normes/netex/accessibilite/#les-cheminements
distance_xml = Kino.Markdown.new("""
```xml
<SitePathLink id="Yukaimaps:SitePathLink:w-582_n-25403_n-25366:LOC" version="any">
<!--<keyList> ... </keyList> -->
<Distance>64.09</Distance>
<!--<gml:LineString gml:id="w-582_n-25403_n-25366"> ... </gml:LineString>
<From> ... </From>
<To> ... </To>
<AccessibilityAssessment id="Yukaimaps:AccessibilityAssessment:2:" version="any"> ... </AccessibilityAssessment>
<PublicUse>all</PublicUse>
<Covered>outdoors</Covered>
<Lighting>wellLit</Lighting>
<NumberOfSteps>0</NumberOfSteps>
<Transition>level</Transition>
<AccessFeatureType>pavement</AccessFeatureType>
<PassageType>pathway</PassageType>
<FlooringType>asphalt</FlooringType>
<TactileWarningStrip>tactileStripAtBothEnds</TactileWarningStrip>
<TactileGuidingStrip>false</TactileGuidingStrip>-->
</SitePathLink>
```
""")
distance_doc = Kino.Markdown.new("""

""")
distance = Kino.Layout.grid([distance_xml, distance_doc], columns: {2, 2})
linestring_xml = Kino.Markdown.new("""
```xml
<SitePathLink id="Yukaimaps:SitePathLink:w-582_n-25403_n-25366:LOC" version="any">
<!--<keyList> ... </keyList>
<Distance>64.09</Distance>-->
<gml:LineString gml:id="w-582_n-25403_n-25366"> ... </gml:LineString>
<!--<From> ... </From>
<To> ... </To>
<AccessibilityAssessment id="Yukaimaps:AccessibilityAssessment:2:" version="any"> ... </AccessibilityAssessment>
<PublicUse>all</PublicUse>
<Covered>outdoors</Covered>
<Lighting>wellLit</Lighting>
<NumberOfSteps>0</NumberOfSteps>
<Transition>level</Transition>
<AccessFeatureType>pavement</AccessFeatureType>
<PassageType>pathway</PassageType>
<FlooringType>asphalt</FlooringType>
<TactileWarningStrip>tactileStripAtBothEnds</TactileWarningStrip>
<TactileGuidingStrip>false</TactileGuidingStrip>-->
</SitePathLink>
```
""")
linestring_doc = Kino.Markdown.new("""

Dans QGIS :

_fond de carte © contributeurs OpenStreetMap_
""")
linestring = Kino.Layout.grid([linestring_xml, linestring_doc], columns: {2, 2})
accessfeaturetype_xml = Kino.Markdown.new("""
```xml
<SitePathLink id="Yukaimaps:SitePathLink:w-582_n-25403_n-25366:LOC" version="any">
<!--<keyList> ... </keyList>
<Distance>64.09</Distance>
<gml:LineString gml:id="w-582_n-25403_n-25366"> ... </gml:LineString>
<From> ... </From>
<To> ... </To>
<AccessibilityAssessment id="Yukaimaps:AccessibilityAssessment:2:" version="any"> ... </AccessibilityAssessment>
<PublicUse>all</PublicUse>
<Covered>outdoors</Covered>
<Lighting>wellLit</Lighting>
<NumberOfSteps>0</NumberOfSteps>
<Transition>level</Transition>-->
<AccessFeatureType>pavement</AccessFeatureType>
<!--<PassageType>pathway</PassageType>
<FlooringType>asphalt</FlooringType>
<TactileWarningStrip>tactileStripAtBothEnds</TactileWarningStrip>
<TactileGuidingStrip>false</TactileGuidingStrip>-->
</SitePathLink>
```
""")
accessfeaturetype_doc = Kino.Markdown.new("""

""")
accessfeaturetype = Kino.Layout.grid([accessfeaturetype_xml, accessfeaturetype_doc], columns: {2, 2})
flooringtype_xml = Kino.Markdown.new("""
```xml
<SitePathLink id="Yukaimaps:SitePathLink:w-582_n-25403_n-25366:LOC" version="any">
<!--<keyList> ... </keyList>
<Distance>64.09</Distance>
<gml:LineString gml:id="w-582_n-25403_n-25366"> ... </gml:LineString>
<From> ... </From>
<To> ... </To>
<AccessibilityAssessment id="Yukaimaps:AccessibilityAssessment:2:" version="any"> ... </AccessibilityAssessment>
<PublicUse>all</PublicUse>
<Covered>outdoors</Covered>
<Lighting>wellLit</Lighting>
<NumberOfSteps>0</NumberOfSteps>
<Transition>level</Transition>
<AccessFeatureType>pavement</AccessFeatureType>
<PassageType>pathway</PassageType>-->
<FlooringType>asphalt</FlooringType>
<!--<TactileWarningStrip>tactileStripAtBothEnds</TactileWarningStrip>
<TactileGuidingStrip>false</TactileGuidingStrip>-->
</SitePathLink>
```
""")
flooringtype_doc = Kino.Markdown.new("""

""")
flooringtype = Kino.Layout.grid([flooringtype_xml, flooringtype_doc], columns: {2, 2})
accessibility_xml = Kino.Markdown.new("""
Pour un des 2 passages piétons :
```xml
<SitePathLink id="Yukaimaps:SitePathLink:w-582_n-25403_n-25366:LOC" version="any">
<!-- ... -->
<AccessibilityAssessment id="Yukaimaps:AccessibilityAssessment:5:" version="any">
<MobilityImpairedAccess>unknown</MobilityImpairedAccess>
<limitations>
<AccessibilityLimitation>
<WheelchairAccess>unknown</WheelchairAccess>
<StepFreeAccess>true</StepFreeAccess>
<LiftFreeAccess>true</LiftFreeAccess>
<AudibleSignalsAvailable>false</AudibleSignalsAvailable>
<VisualSignsAvailable>true</VisualSignsAvailable>
</AccessibilityLimitation>
</limitations>
</AccessibilityAssessment>
<!-- ...
<AccessFeatureType>crossing</AccessFeatureType>-->
</SitePathLink>
```
""")
accessibility_doc = Kino.Markdown.new("""

Dans l'annexe :

 _© nlehuby (CC-BY-SA 4.0)_
""")
accessibility = Kino.Layout.grid([accessibility_xml, accessibility_doc], columns: {2, 2})
Kino.Layout.tabs([
Distance: distance,
Linestring: linestring,
AccessFeatureType: accessfeaturetype,
FlooringType: flooringtype,
AccessibilityAssessment: accessibility,
])
Pour CrossingEquipment :
https://normes.transport.data.gouv.fr/normes/netex/accessibilite/#access-equipment
divers_xml = Kino.Markdown.new("""
```xml
<CrossingEquipment id="Yukaimaps:CrossingEquipment:w-631_n-25371_n-25403:LOC" version="any">
<!--<keyList> ... </keyList>-->
<CrossingType>roadCrossing</CrossingType>
<ZebraCrossing>false</ZebraCrossing>
<PedestrianLights>false</PedestrianLights>
<!--<AcousticCrossingAids>false</AcousticCrossingAids>
<TactileWarningStrip>tactileStripAtBothEnds</TactileWarningStrip>
<VisualGuidanceBands>false</VisualGuidanceBands>
<DroppedKerb>true</DroppedKerb>
<MarkingStatus>none</MarkingStatus>
<BumpCrossing>false</BumpCrossing>
<VisualObstacle>none</VisualObstacle>-->
</CrossingEquipment>
```
""")
divers_doc = Kino.Markdown.new("""

""")
divers = Kino.Layout.grid([divers_xml, divers_doc], columns: {2, 2})
acoustic_xml = Kino.Markdown.new("""
```xml
<CrossingEquipment id="Yukaimaps:CrossingEquipment:w-631_n-25371_n-25403:LOC" version="any">
<!--<keyList> ... </keyList>
<CrossingType>roadCrossing</CrossingType>
<ZebraCrossing>false</ZebraCrossing>
<PedestrianLights>false</PedestrianLights>-->
<AcousticCrossingAids>false</AcousticCrossingAids>
<!--<TactileWarningStrip>tactileStripAtBothEnds</TactileWarningStrip>
<VisualGuidanceBands>false</VisualGuidanceBands>
<DroppedKerb>true</DroppedKerb>
<MarkingStatus>none</MarkingStatus>
<BumpCrossing>false</BumpCrossing>
<VisualObstacle>none</VisualObstacle>-->
</CrossingEquipment>
```
""")
acoustic_doc = Kino.Markdown.new("""

 _© nlehuby (CC-BY-SA 4.0)_
""")
acoustic = Kino.Layout.grid([acoustic_xml, acoustic_doc], columns: {2, 2})
warningstrip_xml = Kino.Markdown.new("""
```xml
<CrossingEquipment id="Yukaimaps:CrossingEquipment:w-631_n-25371_n-25403:LOC" version="any">
<!--<keyList> ... </keyList>
<CrossingType>roadCrossing</CrossingType>
<ZebraCrossing>false</ZebraCrossing>
<PedestrianLights>false</PedestrianLights>
<AcousticCrossingAids>false</AcousticCrossingAids>-->
<TactileWarningStrip>tactileStripAtBothEnds</TactileWarningStrip>
<!--<VisualGuidanceBands>false</VisualGuidanceBands>
<DroppedKerb>true</DroppedKerb>
<MarkingStatus>none</MarkingStatus>
<BumpCrossing>false</BumpCrossing>
<VisualObstacle>none</VisualObstacle>-->
</CrossingEquipment>
```
""")
warningstrip_doc = Kino.Markdown.new("""


_© Ryxhd123 (CC BY 3.0)_ [.](https://wiki.openstreetmap.org/wiki/File:Detectable_Warnings.jpg)
""")
warningstrip = Kino.Layout.grid([warningstrip_xml, warningstrip_doc], columns: {2, 2})
droppedkerb_xml = Kino.Markdown.new("""
```xml
<CrossingEquipment id="Yukaimaps:CrossingEquipment:w-631_n-25371_n-25403:LOC" version="any">
<!--<keyList> ... </keyList>
<CrossingType>roadCrossing</CrossingType>
<ZebraCrossing>false</ZebraCrossing>
<PedestrianLights>false</PedestrianLights>
<AcousticCrossingAids>false</AcousticCrossingAids>
<TactileWarningStrip>tactileStripAtBothEnds</TactileWarningStrip>
<VisualGuidanceBands>false</VisualGuidanceBands>-->
<DroppedKerb>true</DroppedKerb>
<!--<MarkingStatus>none</MarkingStatus>
<BumpCrossing>false</BumpCrossing>
<VisualObstacle>none</VisualObstacle>-->
</CrossingEquipment>
```
""")
droppedkerb_doc = Kino.Markdown.new("""


_© CNIG_
""")
droppedkerb = Kino.Layout.grid([droppedkerb_xml, droppedkerb_doc], columns: {2, 2})
Kino.Layout.tabs([
CrossingType: divers,
AcousticCrossingAids: acoustic,
TactileWarningStrip: warningstrip,
DroppedKerb: droppedkerb,
])
Exercice pratique
🫵 Analyser le fichier NeTEx de voirie du Val-de-Marne.
À télécharger sur : https://transport.data.gouv.fr/datasets/cheminements-pietons-dans-le-val-de-marne-dapres-openstreetmap
Fichier cd94.netex.xml de la partie 5_accessibilite
Questions simples de prise en main
1 - Combien y-a-t-il de passages piétons ?
2 - Combien ont un feu piéton ?
3 - Combien ont un feu sonore ?
© nlehuby (CC-BY-SA 4.0)
Questions plus avancées
1 - Combien y a-t-il de bandes de guidage ?
© Jean-Louis ZIMMERMANN (CC-BY-SA 4.0) .
2 - Quel est le plus long passage piéton ?
Correction Mode opératoire : * Identifier dans la documentation ce qui caractérise un passage piéton : objet SitePathLink, attribut **AccesFeatureType**, valeur **crossing** * Identifier dans la documentation ce qui caractérise la longueur d'un cheminement : objet SitePathLink, attribut **Distance** * Rechercher dans le fichier tous les passages piétons (avec `crossing`) et comparer leur longueur (`(...)`) jusqu'à trouver le plus long * Récupérer son identifiant Réponse : il s'agit du passage piéton d'identifiant `Yukaimaps:SitePathLink:w-291_n-710_n-539:LOC`, qui mesure 18.19 m.2 bis - Est-ce que ce passage piéton en particulier a des bordures de trottoir abaissées ?
Outillage
Accèslibre Mobilités : la suite logicielle pour collecter et publier les données d’accessibilité des transports et de la voirie