GTFS vers modèle de données de transport en commun (Transport en commun)

Synthèse

Convertit un ou plusieurs jeux de données de transport en commun GTFS (General Transit Feed Specification) en un ensemble de tables et classes d’entités qui représentent les arrêts, les lignes et les horaires au format défini par le modèle de données de transport en commun Network Analyst.

Les tables et classes d’entités du modèle de données de transport produites par cet outil sont les suivantes :

  • Stops
  • LineVariantElements
  • Calendars
  • CalendarExceptions
  • Lines
  • LineVariants
  • Runs
  • ScheduleElements
  • Schedules

La sortie de cet outil peut être utilisée comme entrée de l’outil Connecter un modèle de données de transport en commun aux rues afin de préparer toutes les entrées nécessaires pour un jeu de données réseau de transport. Le processus complet de création d’un tel jeu de données réseau est décrit dans Créer et utiliser un jeu de données réseau avec des données de transport en commun.

La sortie de cet outil peut également être utilisée comme entrée de l’outil Calculer la fréquence du service de transport.

Utilisation

  • Les données issues de tous les jeux de données GTFS en entrée sont combinées dans le même jeu de tables et classes d’entités en sortie. L’utilisation de plusieurs jeux de données GTFS en entrée s’explique généralement par le désir de modéliser une zone métropolitaine où plusieurs fournisseurs de services de transport opèrent dans la même zone géographique.

  • L’outil effectue une validation sur chaque jeu de données GTFS en entrée afin d’identifier des problèmes courants liés aux données. Lorsqu’un problème est détecté, l’outil émet un avertissement et ignore le traitement du jeu de données correspondant. La sortie de l’outil inclut uniquement des données provenant des jeux de données GTFS en entrée ayant été traités avec succès. Si certains jeux de données GTFS sont traités avec succès et que d’autres ne sont pas traités en raison de problèmes liés aux données, vous pouvez résoudre ces problèmes et ajouter les jeux de données GTFS corrigés à la sortie existante de l’outil en exécutant à nouveau l’outil avec le paramètre Ajouter aux tables existantes activé (append = "APPEND" dans Python).

  • Chaque jeu de données GTFS en entrée doit contenir les fichiers stops.txt, routes.txt, trips.txt et stop_times.txt, ainsi que le fichier calendar.txt ou calendar_dates.txt ou les deux. Le fichier frequencies.txt est utilisé s’il est présent.

  • Bien que GTFS autorise les valeurs vides pour les champs arrival_time et departure_time dans le fichier stop_times.txt, les heures exactes sont requises par le modèle de données de transport en commun Network Analyst pour une utilisation par l’évaluateur Transport en commun dans le jeu de données réseau. Activez le paramètre Interpoler les heures d’arrêt vides (interpolate = "INTERPOLATE" dans Python) pour estimer les heures d’arrivée et de départ pour un jeu de données GTFS en entrée avec un fichier stop_times.txt qui n’a pas de valeurs explicites pour tous les champs arrival_time et departure_time.

  • L’outil crée la classe d’entités Stops avec les valeurs de latitude et de longitude issues des champs stop_lat et stop_lon du fichier GTFS stops.txt.

  • Les champs stop_lat et stop_lon dans le fichier GTFS stops.txt définissent la latitude et la longitude des arrêts. La spécification admet une valeur nulle pour ces champs si le champ location_type de l’arrêt a pour valeur 3 ou 4. Toutefois, comme cet outil crée des entités géographiques pour représenter les arrêts, il ne peut pas cartographier les arrêts dépourvus de latitude ou de longitude. Par conséquent, les arrêts dont le champ location_type a pour valeur 3 ou 4 et dont le champ stop_lat ou stop_lon a une valeur nulle sont ignorés et ne figurent pas dans la sortie de l’outil.

  • L’outil crée les entités LineVariantElements en créant une ligne droite entre chaque paire d’arrêts directement connectée par un trajet de transport.

    Remarque :

    Les entités LineVariantElements ne sont pas censées représenter les itinéraires géographiques réels empruntés par les bus, les trains ou autres véhicules de transport en commun, mais représentent plutôt des connexions logiques dans le système de transport. Les entités LineVariantElements ne sont pas destinées à être utilisées à des fins de visualisation. L’évaluateur Transport en commun dans le jeu de données réseau utilise les horaires de transport en commun afin de déterminer le temps nécessaire pour traverser une entité LineVariantElements. La forme et la longueur de cette entité sont donc sans intérêt. Toutefois, si vous le souhaitez, vous pouvez mettre à jour manuellement les entités LineVariantElements, mais celles-ci ne doivent pas être scindées, ni fusionnées.

  • Si plusieurs itinéraires GTFS ou variation du même itinéraire fournissent un service entre deux arrêts identiques, une entité LineVariantElements par itinéraire ou variation d’itinéraire fournissant le service est créée.

    Par exemple, si GTFS route_id10 et GTFS route_id 47 circulent chacun entre deux arrêts identiques sans aucun autre arrêt entre les deux, l’outil génère deux entités LineVariantElements : une pour route_id 10 et une autre pour route_id 47. Ces deux entités linéaires coïncident géographiquement.

    De même, si route_id 15 dessert deux terminus différents mais que tous les trajets de route_id (quel que soit le terminus) desservent deux arrêts donnés en particulier, une entité LineVariantElements est créée par terminus, ce qui produit deux entités LineVariantElements coïncidentes. Les variations d’itinéraires correspondent généralement à des valeurs shape_id différentes dans le jeu de données GTFS.

  • Étant donné que le modèle de données de transport en commun nécessite des tables et classes d’entités portant des noms spécifiques, il n’est pas possible d’inclure plus d’un jeu de tables et classes d’entités de modèle de données de transport en commun dans la même géodatabase. N’incluez pas le jeu de classes d’entités cible dans une géodatabase qui comporte un jeu de classes d’entités existant contenant des classes d’entités du modèle de données de transport en commun.

  • Si le jeu de classes d’entités cible se trouve dans une géodatabase d’entreprise, il ne doit pas être versionné. Avant d’exécuter l’outil, réconciliez et réinjectez les données dans le jeu de classes d’entités et désinscrivez-le comme versionné.

Paramètres

ÉtiquetteExplicationType de données
Dossiers GTFS en entrée

Un ou plusieurs dossiers contenant des données GTFS valides. Chaque dossier doit contenir les fichiers GTFS stops.txt, routes.txt, trips.txt et stop_times.txt, ainsi que le fichier calendar.txt ou calendar_dates.txt ou les deux.

Folder
Jeu de classes d’entités cible

Jeu de classes d’entités dans lequel le jeu de données réseau de transport sera créé. Les classes d’entités Stops et LineVariantElements créées par cet outil sont placées dans ce jeu de classes d’entités et les tables en sortie créées par l’outil sont placées dans la géodatabase parente de ce jeu de classes d’entités.

Le jeu de classes d’entités peut se trouver dans une géodatabase fichier ou une géodatabase d’entreprise et peut comporter n’importe quelle référence spatiale. Si le jeu de classes d’entités cible se trouve dans une géodatabase d’entreprise, il ne doit pas être versionné. N’incluez pas le jeu de classes d’entités cible dans une géodatabase qui comporte un jeu de classes d’entités existant contenant des classes d’entités du modèle de données de transport en commun.

Feature Dataset
Interpoler les heures d’arrêt vides
(Facultatif)

Indique s’il convient d’interpoler les valeurs vides des champs arrival_time et departure_time dans le fichier GTFS stop_times.txt lors de la création des tables du modèle de données de transport en commun.

  • Activé : les valeurs vides sont interpolées à l’aide d’une interpolation linéaire simple. Les données GTFS d’origine ne sont pas modifiées. Si les données d’origine ne contiennent aucune valeur vide, aucune interpolation n’est effectuée.
  • Désactivé : les valeurs vides ne sont pas interpolées. Si aucune valeur vide n’est détectée dans les données GTFS en entrée, l’outil émet un avertissement et ne traite pas le jeu de données GTFS. Il s’agit de l’option par défaut.
Boolean
Ajouter aux tables existantes
(Facultatif)

Indique si les jeux de données GTFS en entrée sont ajoutés aux tables et classes d’entités existantes du modèle de données de transport en commun dans le jeu de classes d’entités cible et sa géodatabase parent.

Ce paramètre est masqué si le jeu de classes d’entités cible et sa géodatabase parent ne contiennent pas de tables, ni de classes d’entités existantes du modèle de données de transport en commun.

  • Activé : les données sont ajoutées aux tables et classes d’entités existantes.
  • Désactivé : les données ne sont pas ajoutées. Les tables et classes d’entités existantes sont remplacées. Il s’agit de l’option par défaut.
Boolean

Sortie obtenue

ÉtiquetteExplicationType de données
Jeu de classes d’entités cible mis à jour

Jeu de classes d’entités auquel les nouvelles classes d’entités ont été ajoutées.

Feature Dataset
Arrêts en sortie

Classe d’entités Stops du modèle de données de transport en commun Network Analyst.

Feature Class
Éléments de variantes de ligne en sortie

Classe d’entités LineVariantElements du modèle de données de transport en commun Network Analyst.

Feature Class
Calendriers en sortie

Table Calendars du modèle de données de transport en commun Network Analyst.

Table
Exceptions de calendriers en sortie

Table CalendarExceptions du modèle de données de transport en commun Network Analyst.

Table
Lignes en sortie

Table Lines du modèle de données de transport en commun Network Analyst.

Table
Variantes de ligne en sortie

Table LineVariants du modèle de données de transport en commun Network Analyst.

Table
Trajets en sortie

Table Runs du modèle de données de transport en commun Network Analyst.

Table
Éléments d’horaires en sortie

Table ScheduleElements du modèle de données de transport en commun Network Analyst.

Table
Horaires en sortie

Table Schedules du modèle de données de transport en commun Network Analyst.

Table

arcpy.transit.GTFSToPublicTransitDataModel(in_gtfs_folders, target_feature_dataset, {interpolate}, {append})
NomExplicationType de données
in_gtfs_folders
[in_gtfs_folders,...]

Un ou plusieurs dossiers contenant des données GTFS valides. Chaque dossier doit contenir les fichiers GTFS stops.txt, routes.txt, trips.txt et stop_times.txt, ainsi que le fichier calendar.txt ou calendar_dates.txt ou les deux.

Folder
target_feature_dataset

Jeu de classes d’entités dans lequel le jeu de données réseau de transport sera créé. Les classes d’entités Stops et LineVariantElements créées par cet outil sont placées dans ce jeu de classes d’entités et les tables en sortie créées par l’outil sont placées dans la géodatabase parente de ce jeu de classes d’entités.

Le jeu de classes d’entités peut se trouver dans une géodatabase fichier ou une géodatabase d’entreprise et peut comporter n’importe quelle référence spatiale. Si le jeu de classes d’entités cible se trouve dans une géodatabase d’entreprise, il ne doit pas être versionné. N’incluez pas le jeu de classes d’entités cible dans une géodatabase qui comporte un jeu de classes d’entités existant contenant des classes d’entités du modèle de données de transport en commun.

Feature Dataset
interpolate
(Facultatif)

Indique s’il convient d’interpoler les valeurs vides des champs arrival_time et departure_time dans le fichier GTFS stop_times.txt lors de la création des tables du modèle de données de transport en commun.

  • INTERPOLATELes valeurs vides sont interpolées à l’aide d’une interpolation linéaire simple. Les données GTFS d’origine ne sont pas modifiées. Si les données d’origine ne contiennent aucune valeur vide, aucune interpolation n’est effectuée.
  • NO_INTERPOLATELes valeurs vides ne sont pas interpolées. Si aucune valeur vide n’est détectée dans les données GTFS en entrée, l’outil émet un avertissement et ne traite pas le jeu de données GTFS. Il s’agit de l’option par défaut.
Boolean
append
(Facultatif)

Indique si les jeux de données GTFS en entrée sont ajoutés aux tables et classes d’entités existantes du modèle de données de transport en commun dans le jeu de classes d’entités cible et sa géodatabase parent.

  • APPENDLes données sont ajoutées aux tables et classes d’entités existantes.
  • NO_APPENDLes données ne sont pas ajoutées. Les tables et classes d’entités existantes sont remplacées. Il s’agit de l’option par défaut.
Boolean

Sortie obtenue

NomExplicationType de données
updated_target_feature_dataset

Jeu de classes d’entités auquel les nouvelles classes d’entités ont été ajoutées.

Feature Dataset
output_stops

Classe d’entités Stops du modèle de données de transport en commun Network Analyst.

Feature Class
output_line_variant_elements

Classe d’entités LineVariantElements du modèle de données de transport en commun Network Analyst.

Feature Class
output_calendars

Table Calendars du modèle de données de transport en commun Network Analyst.

Table
output_calendar_exceptions

Table CalendarExceptions du modèle de données de transport en commun Network Analyst.

Table
output_lines

Table Lines du modèle de données de transport en commun Network Analyst.

Table
output_line_variants

Table LineVariants du modèle de données de transport en commun Network Analyst.

Table
output_runs

Table Runs du modèle de données de transport en commun Network Analyst.

Table
output_schedule_elements

Table ScheduleElements du modèle de données de transport en commun Network Analyst.

Table
output_schedules

Table Schedules du modèle de données de transport en commun Network Analyst.

Table

Exemple de code

Exemple 1 d’utilisation de GTFSToPublicTransitDataModel (fenêtre Python)

Le script suivant illustre l’utilisation de la fonction GTFSToPublicTransitDataModel dans la fenêtre Python.

fd_path = r"E:\TransitAnalysis\TransitNetwork.gdb\TransitNetwork"
arcpy.transit.GTFSToPublicTransitDataModel([r"E:\GTFS\Agency1", r"E:\GTFS\Agency2"], fd_path)
Exemple 2 d’utilisation de GTFSToPublicTransitDataModel (script autonome)

Le script autonome Python suivant montre comment les fonctions GTFSToPublicTransitDataModel et ConnectPublicTransitDataModelToStreets peuvent être utilisées ensemble pour créer un jeu de données de réseau de transport.

import os
import arcpy
arcpy.CheckOutExtension("network")

gtfs_folders = [
    r"E:\GTFS\Agency1",
    r"E:\GTFS\Agency2"
]
streets_orig = r"E:\Data\StreetData.gdb\Streets"

working_folder = r"E:\TransitAnalysis"
nd_template = os.path.join(working_folder, "TransitNetworkTemplate.xml")
gdb_name = "TransitNetwork.gdb"
out_gdb = os.path.join(working_folder, gdb_name)
fd_name = "TransitNetwork"
fd_path = os.path.join(out_gdb, fd_name)
streets = os.path.join(fd_path, "Streets")
nd_name = "TransitNetwork_ND"
nd_path = os.path.join(fd_path, nd_name)

# Create a file geodatabase and feature dataset to store the network dataset
arcpy.management.CreateFileGDB(working_folder, gdb_name)
arcpy.management.CreateFeatureDataset(out_gdb, fd_name, arcpy.SpatialReference(4326))

# Copy the streets data into the feature dataset so it can be used by the network dataset
# If the original streets are not in the same spatial reference as the feature dataset, you might
# need to use the Project tool instead of Copy.
arcpy.management.Copy(streets_orig, streets)

# Convert the GTFS dataset into public transit data model tables and feature classes
arcpy.transit.GTFSToPublicTransitDataModel(gtfs_folders, fd_path)

# Connect the transit stops to the streets and create the rest of the data model feature classes
# Use an expression to connect transit stops only to streets where pedestrians are allowed.
where = "PedestriansAllowed = 1"
arcpy.transit.ConnectPublicTransitDataModelToStreets(fd_path, streets, "100 meters", where)

# Create the network dataset from a template
arcpy.na.CreateNetworkDatasetFromTemplate(nd_template, fd_path)

# Build the network dataset
arcpy.na.BuildNetwork(nd_path)

Environnements

Cet outil n’utilise pas d’environnement de géotraitement.

Informations de licence

  • Basic: Oui
  • Standard: Oui
  • Advanced: Oui

Rubriques connexes