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 : <AccessFeatureType>crossing</AccessFeatureType>
  • 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 : <PedestrianLights>true</PedestrianLights>
  • 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 : <AcousticCrossingAids>true</AcousticCrossingAids>
  • 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 : <TactileGuidingStrip>true</TactileGuidingStrip>
  • 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 © Jean-Louis ZIMMERMANN (CC-BY-SA 4.0) .

illustration des 2 types de revêtement podotactiles © Ice-cold121 (CC-BY-SA 4.0) .

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 <AccessFeatureType>crossing</AccessFeatureType>) et comparer leur longueur (<Distance>(...)</Distance>) 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