Powered by AppSignal & Oban Pro

Accessibilité - description des cheminements piétons

accessibilite_voirie.livemd

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 :

photo du cheminement © Enzo Brière pour Jungle Bus (CC-BY-SA-4.0)

vue de dessus © IGN

Modélisation schématique associée :

modélisation schématique de notre cas d'usage © 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("""
![longueur du tronçon de cheminement](files/voirie_doc_distance.png)
""")

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("""
![géométrie du tronçon de cheminement](files/voirie_doc_linestring.png)

Dans QGIS :
![visualisation dans QGIS des tronçons de cheminement du fichier NeTEx](files/voirie_qgis_linestring.png)
_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("""
![type de caractéristique associée au SitePathLink](files/voirie_doc_accessfeaturetype.png)
""")

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("""
![type de surface au sol](files/voirie_doc_flooringtype.png)
""")

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("""
![voir en annexe](files/voirie_doc_aa.png)

Dans l'annexe :
![il y a des feux sonores d'aide à la traversée en bon état de marche](files/voirie_doc_aa_annexe.png)

![illustration de feu sonore](files/voirie_tactile_acoustic_crossing.png) _© 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("""
![CrossingType / ZebraCrossing / PedestrianLights](files/voirie_doc_crossingtype.png)

""")

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("""
![signale la présence de feux sonores](files/voirie_doc_acousticcrossingaids.png)

![illustration de feu sonore](files/voirie_tactile_acoustic_crossing.png) _© 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("""
![présence de bandes podotactiles](files/voirie_doc_tactilewarningstrip.png)

![illustration de bandes podotactiles](files/voirie_wiki_tactile_warning_strip.png)
_© 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("""
![signale la présence de bordures de trottoir abaissées](files/voirie_doc_droppedkerb.png)

![illustration de DroppedKerb](files/voirie_photo_kerb.png) 
_© 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 ?

illustration de 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** * Rechercher dans le fichier toutes les occurrences : `crossing` * Compter le nombre de résultats Réponse : il y a 90 passages piétons décrits dans le fichier.

2 - Combien ont un feu piéton ?

illustration de feu piéton

Correction Mode opératoire : * Identifier dans la documentation ce qui caractérise un feu piéton : objet CrossingEquipment, attribut **PedestrianLights**, valeur **true** * Rechercher dans le fichier toutes les occurrences : `true` * Compter le nombre de résultats Réponse : il y a 44 passages piétons avec feu.

3 - Combien ont un feu sonore ?

illustration de feu sonore © nlehuby (CC-BY-SA 4.0)

Correction Mode opératoire : * Identifier dans la documentation ce qui caractérise un feu sonore : objet CrossingEquipment, attribut **AcousticCrossingAids**, valeur **true** * Rechercher dans le fichier toutes les occurrences : `true` * Compter le nombre de résultats Réponse : il y a 4 passages piétons avec un feu sonore.

Questions plus avancées

1 - Combien y a-t-il de bandes de guidage ?

illustration de bandes de guidage © Jean-Louis ZIMMERMANN (CC-BY-SA 4.0) .

Correction Mode opératoire : * Identifier dans la documentation ce qui caractérise une bande de guidage : objet SitePathLink, attribut **TactileGuidingStrip**, valeur **true** * Rechercher dans le fichier toutes les occurrences : `true` * Compter le nombre de résultats Réponse : il n'y a pas de bandes de guidage décrites dans ce fichier. Erreurs fréquentes **TactileWarningStrip** vs **TactileGuidingStrip** ![photo des 2 types de revêtement podotactiles](files/voirie_wiki_tactile_pavings.jpg) *© Jean-Louis ZIMMERMANN (CC-BY-SA 4.0)* [.](https://wiki.openstreetmap.org/wiki/File:FR84087_tactile_paving%26crossing_2023-03-02.jpg) ![illustration des 2 types de revêtement podotactiles](files/voirie_wiki_Tactile_Paving_Types.png) © Ice-cold121 (CC-BY-SA 4.0) [.](https://commons.wikimedia.org/wiki/File:Tactile_Paving_Types.png) **TactileGuidanceStrips** vs **TactileGuidingStrip** TactileGuidanceStrips est un attribut de *CrossingEquipment* : il permet uniquement d'indiquer qu'un passage piéton est muni de bande de guidage.

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 ?

illustration de bordures de trottoir abaissées

Correction Mode opératoire : * Retrouver notre passage piéton précédent, à l'aide de son identifiant * Identifier dans la documentation ce qui caractérise les bordures de trottoir abaissées : objet CrossingEquipment, attribut **DroppedKerb**, valeur **true** * Retrouver l'objet CrossingEquipment associé au SitePathLink (`placeEquipments/CrossingEquipmentRef`) * Dans cet objet, rechercher l'attribut DroppedKerb et sa valeur Réponse : ce passage piéton n'a pas de bordures 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

logo ALM

Accessibilité - Transport Accessibilité - cheminements Outils