-
Постов
4811 -
Зарегистрирован
-
Посещение
-
Победитель дней
7
Тип контента
Профили
Форумы
Календарь
Сообщения, опубликованные Trotil
-
-
26 минут назад, МИгИ сказал:
ну у 111к у "ДК МГУ" всё-таки остановка была не одна, а немного разнесённая - своя к разным конечным. Равно как и у других таких маршрутов.
А сейчас предлагается именно одна остановка с ориентиром на табло - возможны инциденты)))
Раньше никаких электронных маршрутоуказателей не было - поэтому делали разнесённые остановки.
Ещё пример - 37 / 837 в Бирюлёве-Западном, но там тоже разнесённые (а раньше - по разную сторону от шоссе, насколько я помню, на территории к/ст)
-
Транспорт у них практически круглосуточный, что удивительно
-
1 час назад, Елисей сказал:
С 7 до 8 утра в будни от Автозаводской в сторону Профсоюзной всего 4 рейса - это 8-10 минут?)))
Это до среды, взяли одну машину на временный 026.
-
11 минут назад, AE777 сказал:
Замена обшивки - 1/40 стоимости нового самолёта?!
Под обшивкой тоже что-то повреждено.
-
16 часов назад, Anomim сказал:
https://m.vk.com/wall-137324015_459661 водовоз повредил самолёт
Пишут, ремонт обойдётся около 1 млрд рублей
-
23 часа назад, Infeer10 сказал:
Вообще интересно, сколько человек берут, и насколько можно ничего не уметь) Я бы, может, попробовался аналитиком, но, поскольку, реального опыта и знания программ нет, то явно буду в минусе перед остальными.
Хотя по некоторым изменениям маршрутов есть вопросы к профессионализму того, кто уже там работает)
Если вдруг устроишься, всяко будет полезнее тех профнепригодных, которые ставили маршрутную скорость 10 км/ч на e10 на всём протяжении маршрута.
- 4
-
7 часов назад, Михаил_123 сказал:
А где ему ещё быть? Исторически в Крылатском всё было в 5 АП, кроме 688. Он в ФАТПе был.
У частника может быть.
-
Любопытно, что нет связи нумерации маршрутов с временем выхода на линию: 62 маршрут выходит на полчаса позже, чем 68...
-
Вечные пробки на МКАДе влияют на стабильность маршрута. Вангую изменение 660, после того, как люди попривыкнут к 280. Например, его можно закольцевать по ул. Маршала Сергеева
-
Когда там у 660 контракт заканчивается?
-
вообще-то это вредительство!
и люди им пользовались, небольшой поток был, это те, которым 26 не подходил. Я в том числе.
"на отменяемом участке пользуйтесь 26" - только пересадки в районе пересечения с Профсоюзной с трамвая на автобус нет.
"Автобусы будут ходить чаще" - чаще, чем 315? Не верю!
- 1
-
Здесь я распишу тезисно, как можно работать с этими данными через СУБД sqlite3.
Инструкция будет в виде практического примера поиска расписания по реальному номеру маршрута, инструкцию вы при желании сможете адаптировать под другие задачи поиска.
Про автоматизацию будет сказано ниже.
Вам понадобятся:
DB Browser отсюда: https://sqlitebrowser.org/dl/
Расширение text.dll отсюда: https://github.com/nalgeon/sqlean/releases/tag/0.21.10 (документация: https://antonz.ru/sqlean-text/ )
Этап 1: подготовительный
- загружаем данные csv на ПК по ссылкам Ильи
- если нет нужных данных csv, их можно сконвертировать из xlsx в csv с помощью сервиса: https://convertio.co/ru/xlsx-csv/
В DB Browser:
- создать новую БД
- загрузить csv в БД (файл - импорт), "имена столбцов в первой строке" - ДА, и изменить разделитель на ";" (для csv с сайта data.mos.ru)
для нашего примера понадобится загрузить data-60661-2024-02-08.csv и data-60664-2024-03-01.csv
- загружаем расширение text.dll в DB Browser (инструменты - загрузить расширение - text.dll)
В базе данных сцеплены id маршрута, id расписания, номер рейса и номер выхода в одну строку. Для удобства поиска их надо расцепить, для этого мы создадим новые столбцы:
alter table "data-60661-2024-02-08" add column route_id text as ( case when trip_id like '%_%' then text_split(trip_id, "_", 1) else trip_id end );
Этот sql-запрос нужно выполнять во вкладке SQL. После этого во вкладке "данные" для таблицы data-60661-2024-02-08 появится дополнительный столбец route_id. Это виртуальный столбец, который генерируется "на лету", используя данные столбца trip_id. Размер БД от этой операции не увеличивается. Функция
text_split(str, sep, n)
бьет строку по разделителю и возвращает n-ю часть.Ещё замечание - имена таблиц содержат символ "-", поэтому в запросах имена приходится обрамлять кавычками. Если переименовать имена без "-", двойные кавычки можно не писать.
Аналогично можно вычленить и добавить столбцы service_id, num_trip, vyhod.
Для ускорения по полю route_id можно создать индекс, но можно и не создавать, если вы не знаете, что это такое и как это делать.
Базу данных можно сохранить на диск, чтобы не проделывать эти шаги каждый раз.
Этап 2: улучшаем человекочитаемость данных
В таблице data-60661-2024-02-08 маршруты заданы через id, исправим это. Объединим таблицы data-60661-2024-02-08 и data-60664-2024-03-01 следующим запросом:
select * from "data-60661-2024-02-08" join "data-60664-2024-03-01" on "data-60661-2024-02-08".route_id = "data-60664-2024-03-01".route_id
или скопируем результат этого запроса в отдельную таблицу, синтаксис: CREATE TABLE name_newtable AS SELECT ...
create table copied AS select * from "data-60661-2024-02-08" join "data-60664-2024-03-01" on "data-60661-2024-02-08".route_id = "data-60664-2024-03-01".route_id where "data-60664-2024-03-01".route_short_name = "с962"
(в примере строкой where мы дополнительно ограничили выборку маршрутом "c962")
Для дальнейшего поиска в DB Browser`e результат лучше скопировать в отдельную таблицу.
Этот метод добавляеь столбец route_short_name, по которому можно дополнительно фильтровать данные, см. далее.
Этап 3. поиск информации и просмотр информации в DB Browser`e
DB Browser имеет такую удобную фичу, как фильтры. Фильтры поддерживают регулярные выражения.
С помощью фильтров можно быстро достать только нужные данные и отфильтровать ненужные и результат тут же отобразится в браузере DB.
Для примера, я в таблице data-60661-2024-02-08 поставил два фильтра:
на stop_sequence установил "=1" (два символа без кавычек) - начальная остановка
на trip_id: /^107_.*702$/
символы ^,$ - начало и конец строки
комбинация .* - любая последовательность посередине, которая игнорируется
после id я поставил _, чтобы не захватить 1071, 1072 и т.д.
107 - это id маршрута 27, результат - DB Browser отобразил 7 рейсов выхода 702 маршрута 27:
Результат на скриншоте:
Это очень гибкая и наглядная система. Для повышения читаемости колонки в DB Browser можно сортировать.
После того, как вы объедините таблицы на этапе 2, фильтровать данные станет ещё проще. Необязательно использовать такие сложные регулярки.
Но я бы не рекомендовал объединять всё, так как такая таблица будет занимать несколько десятков гигабайт и работать очень медленно.
Строго говоря, это неправильный метод работы, а правильный и профессиональный - через написание запросов select с условиями where и сортировкой order by. Но он требует навыков.
Этап 4, автоматизация.
К сожалению, этот этап объёмный и его описание нельзя вместить в один пост, и у меня сейчас нет времени сделать такую автоматизацию самостоятельно. Но если коротко, это проще всего сделать на python или на perl.
Нужно подготовить базу данных (этапы 1,2) и дополнительные колонки с помощью DB Browser, (дополнительные таблицы не создавать), сохранить, затем написать скрипт на питоне, который:
- подключится к этой подготовленной БД
- сделает нужные выборки select
- выведет в файл / на экран информацию в виде простой html страницы
- закроет соединение
(в сети есть достаточно подробные учебные руководства по подобной тематике на русском языке).
sqlite поддерживает агрегирующие функции, поэтому просто будет посчитать кол-во рейсов, среднее время работы, продолжительность обедов, максимальное число остановок и прочую любознательную статистику.
- 2
-
1 час назад, Infeer10 сказал:
А вот вопрос, каждый выход должен соответствовать одной машине? Я думал, так и есть, и можно быстро посчитать выходы, но, например, на 27 (автобусном) в будни есть 201 и 702 рейсы, то есть, по идее, две машины, хотя и по реестру, и я всегда наблюдал только одну машину. Или на 1 (автобусном) 301, 302, 703, 704, 705, 706 рейсы, но и по реестру и по наблюдениям машин всегда было 5. У обоих этих маршрутов расписание уехало за пределы таблицы, поэтому понять сложно.
Илья, на 27 автобусном есть днём интервал 40 минут. Конечно, там два выхода.
Или на утренний рейс 7:14 даётся полтора часа, в это время второй выход начинает работу в 8:13...
-
Нашел, спасибо! Прикольно.
-
12 часов назад, Infeer10 сказал:
data.mos.ru,
Точно здесь? Можно конкретнее ссылку? Очень интересно. Спасибо.
-
Справа виднеется боковой маршрутоуказатель.
Если есть коллекция старых трафаретов, можно с ненулевой вероятностью определить маршрут соседнего автобуса.
-
16 минут назад, Mixalblch сказал:
Здравница, Дачное, Вязёмы ... миксер мне в глаза. От Тучков до Можайска пылесосит всё подряд. На..., но главное зачем?!
Это скопированные графики текущих электричек до Можайска, курсирующих по 6 марта.
-
По маршрутам зарядной станции Филёвский парк никаких подмен не заметил
-
Сколько в них вагонов будет?
-
Насчёт невывоза - был какой-то слёт велосипедистов далее Можайска и они там в субботу утром пересаживались на вязьминскую. Так вот, им 4 вагонов не хватило, пара людей с велосипедами (!) грузилось в кабину машинистов.
-
А то, что теперь мелькают кубики на 300 - в обсуждении как-то не всплыло.
- 2
-
За сколько времени такая аварийная ситуация устраняется на ЖД? (без учёта времени прибытия ремонтной бригады)
-
Только что, EasyMan сказал:
Это где????
На Сколковском шоссе поста ГАИ не было. Хотя странно, что не было, там дальше дачи партдеятелей были серьёзные.
-
9 часов назад, Паштет сказал:
Не очистил тщательно стрелку.
Там, если выйти очищать стрелку, движение по проспекту Мира будет заблокировано.
- 1
117к, 577, 879 и новый с949
в Текущие изменения маршрутной сети
Опубликовано
Там какая-то трасса проектируется от них прямиком до Коммунарки.
Когда постоят, можно замутить маршрут.