Сокращение файлов GTFS для охвата меньшей области - python - PullRequest
0 голосов
/ 22 октября 2019

Вопрос: Есть ли способ уменьшить / упростить файлы GTFS до тех, которые охватывают меньшую область (зная, что я выбрал остановки, покрывающие указанную область)?


Больше подробностей и что я попробовал: Я работаю с файлами GTFS, которые охватывают весь регион Франции, однако мне нужно работать только на меньшей площади, и я хотел бы уменьшить / упростить файлы, которые у меня сейчас, так какс оригинальными файлами GTFS, с которыми мне тяжело работать.

Я сопоставил остановки в QGIS и извлек те, что покрывают меньшую область, и сохранил их в новый файл stop.txt stops_reduced.txt. Затем я продолжил выбирать, используя .loc все соответствующие календарь, calendar_date, stop_extentions, stop_time, маршруты, поездки и передачи.

Вот пример того, что я сделал для stops_times.txt и trips.txt:

stop_list = stops_reduced.stop_id.to_list()
stop_time_reduced = stop_time.loc[stop_time['stop_id'].isin(stop_list)]

trip_list = stop_time_reduced.trip_id.to_list()
trips_reduced = trips.loc[trips['trip_id'].isin(trip_list)]

Я думал, что все хорошо, и я использовал эти уменьшенные файлы с peartree для создания графика, но возникла ошибка.

Поскольку я совсем не знаком с peartree, и я полагаю, что мой подход к сокращению файлов GTFS неправильный, я ищу другой способ сделать это.

G = pt.load_feed_as_graph(feed, start, end)

---------------------------------------------------------------------------
InsufficientSummaryResults                Traceback (most recent call last)
<ipython-input-89-74a13fcca0d5> in <module>
      3 # Converts feed subset into a directed network mugenerate_plotph
      4 
----> 5 G = pt.load_feed_as_graph(feed, start, end)
      6 
      7 end_time = time.time()

~/anaconda3/envs/iox/lib/python3.6/site-packages/peartree/paths.py in load_feed_as_graph(feed, start_time, end_time, name, existing_graph, connection_threshold, walk_speed_kmph, stop_cost_method, fallback_stop_cost, interpolate_times, impute_walk_transfers, use_multiprocessing)
    218                                                            interpolate_times,
    219                                                            stop_cost_method,
--> 220                                                            use_multiprocessing)
    221 
    222     # This is a flag used to check if we need to run any additional steps

~/anaconda3/envs/iox/lib/python3.6/site-packages/peartree/graph.py in generate_summary_graph_elements(feed, target_time_start, target_time_end, fallback_stop_cost, interpolate_times, stop_cost_method, use_multiprocessing)
    119 
    120     # Same sanity checks on the output before we continue
--> 121     _verify_outputs(all_edge_costs, all_wait_times)
    122 
    123     summary_edge_costs = generate_summary_edge_costs(all_edge_costs)

~/anaconda3/envs/iox/lib/python3.6/site-packages/peartree/graph.py in _verify_outputs(all_edge_costs, all_wait_times)
    208     # Handle if there are no valid edges returned (or wait times)
    209     if all_edge_costs is None or len(all_edge_costs) == 0:
--> 210         raise InsufficientSummaryResults('The target time frame returned no '
    211                                          'valid edge costs from feed object.')
    212     if all_wait_times is None or len(all_wait_times) == 0:

InsufficientSummaryResults: The target time frame returned no valid edge costs from feed object.
...