Résumé
Convertit un ou plusieurs jeux de données de transport en commun GTFS (General Transit Feed Specification) en un ensemble de classes et de tables d’entités pouvant être utilisées pour créer un jeu de données réseau. Les classes et les tables d’entités en sortie représentent les arrêts, les lignes et les horaires de transport dans le format défini par le modèle de données de transport en commun Network Analyst, qui peut être interprété par l’évaluateur Public Transit (Transport en commun) dans un jeu de données réseau.
Les classes et les tables 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 des sources de transport de jeux de données réseau aux rues afin de préparer toutes les entrées nécessaires pour un jeu de données réseau de transport. L’ensemble du workflow de création de ce jeu de données réseau est décrit dans la rubrique Créer et utiliser un jeu de données réseau configuré avec des données de transport en commun.
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 en sortie et classes d’entités. 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 voyage 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 sont ignorés en raison de problèmes liés aux données, vous pouvez résoudre les problèmes de données et ajouter les jeux de données GTFS réparés dans la sortie existante de l’outil en exécutant à nouveau l’outil avec le paramètre Append to existing tables (Ajouter aux tables existantes) défini sur True (Vrai).
Chaque jeu de données GTFS en entrée doit contenir des 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 la consommation par l’évaluateur Public Transit (Transport en commun) dans le jeu de données réseau. Définissez le paramètre Interpolate blank stop times (Interpoler les durées d’arrêt vides) sur la valeur True (Vrai) pour estimer les heures d’arrivée et de départ d’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 construit la classe d’entités Stops à l’aide des valeurs de latitude et de longitude issues des champs stop_lat et stop_lon du fichier stops.txt GTFS.
L’outil construit 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 à la place des connexions logiques dans le système de transport. Les entités LineVariantElements ne sont pas destinées à être utilisées pour la visualisation. L’évaluateur de 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 modifier manuellement les entités LineVariantElements, mais celles-ci ne doivent pas être scindées ou fusionnées.
Si plusieurs itinéraires GTFS fournissent un service entre deux arrêts identiques, une entité LineVariantElements par route_id GTFS fournissant le service est créée. Par exemple, si les bus 10 et 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 le bus 10 et une autre pour le bus 47. Ces deux entités linéaires coïncident géographiquement.
Parce que le modèle de données de transport en commun nécessite des classes et des tables d’entités ayant des noms spécifiques, il n’est pas possible d’inclure plus d’un jeu de classes et de tables d’entités de modèle de données de transport en commun dans la même géodatabase. Le jeu de classes d’entités cible ne doit pas être contenu dans une géodatabase comportant déjà un autre jeu de classes d’entités qui contient des classes d’entités de modèles 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-les comme versionnées.
Syntaxe
GTFSToNetworkDatasetTransitSources(in_gtfs_folders, target_feature_dataset, {interpolate}, {append})
Paramètre | Explication | Type 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 stops.txt, routes.txt, trips.txt et stop_times.txt GTFS, ainsi que le fichier calendar.txt ou calendar_dates.txt ou les deux. | Folder |
target_feature_dataset | Le jeu de classes d’entités où 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 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é. Le jeu de classes d’entités cible ne doit pas être contenu dans une géodatabase comportant déjà un autre jeu de classes d’entités qui contient des classes d’entités de modèles 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 de modèle de données de transport en commun.
| Boolean |
append (Facultatif) | Indique s’il convient d’ajouter les jeux de données GTFS en entrée aux tables et aux 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.
| Boolean |
Sortie dérivée
Nom | Explication | Type de données |
updated_target_feature_dataset | Le jeu de classes d’entités auquel les nouvelles classes d’entités ont été ajoutées. | Jeu de classes d’entités |
output_stops | La classe d’entités Stops du modèle de données de transport en commun Network Analyst. | Classe d’entités |
output_line_variant_elements | La classe d’entités LineVariantElements du modèle de données de transport en commun Network Analyst. | Classe d’entités |
output_calendars | La table Calendars du modèle de données de transport en commun Network Analyst. | Tableau |
output_calendar_exceptions | La table CalendarExceptions du modèle de données de transport en commun Network Analyst. | Tableau |
output_lines | La table Lines du modèle de données de transport en commun Network Analyst. | Tableau |
output_line_variants | La table LineVariants du modèle de données de transport en commun Network Analyst. | Tableau |
output_runs | La table Runs du modèle de données de transport en commun Network Analyst. | Tableau |
output_schedule_elements | La table ScheduleElements du modèle de données de transport en commun Network Analyst. | Tableau |
output_schedules | La table Schedules du modèle de données de transport en commun Network Analyst. | Tableau |
Exemple de code
Le script suivant explique comment utiliser l'outil GTFSToNetworkDatasetTransitSources dans la fenêtre Python.
fd_path = r"E:\TransitAnalysis\TransitNetwork.gdb\TransitNetwork"
arcpy.conversion.GTFSToNetworkDatasetTransitSources([r"E:\GTFS\Agency1", r"E:\GTFS\Agency2"], fd_path)
Le script Python autonome suivant montre comment les outils GTFSToNetworkDatasetTransitSources et ConnectNetworkDatasetTransitSourcesToStreets peuvent être utilisés ensemble pour créer un jeu de données 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.conversion.GTFSToNetworkDatasetTransitSources(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.conversion.ConnectNetworkDatasetTransitSourcesToStreets(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
Informations de licence
- Basic: Oui
- Standard: Oui
- Advanced: Oui
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?