Lanjusto / BusScheduler

1 stars 0 forks source link

Расписания с mosgortrans.ru #10

Open Lanjusto opened 10 years ago

Lanjusto commented 10 years ago

Загружать расписания с www.mosgortrans.ru (см. класс MgtRuTimetableGetter)

aesirot commented 10 years ago

взял

aesirot commented 10 years ago

Женя, а как соотносится информация на мосгортрансе и http://bus.ruz.net/routes/ . Это по идее одно и тоже, только на мосгортрансе официальная?

Lanjusto commented 10 years ago

На мосгортранс.ру далеко не все маршруты и непонятно, как доставать координаты остановок. И вообще раличать одноимённые остановки на разных маршрутах. Но да, там официальная. Хотя на московском автобусе её тоже обновляют аесьма оперативно.

aesirot commented 10 years ago

Координаты остановок я смог вытащить. Есть правда опасение, что одна и та же остановка для разных маршрутов у меня задваивается, но это стандартная проблема.

В целом я пока вытаскиваю с сайта и маршруты, и остановки с порядком следования, и расписание (еще впереди). Если на http://bus.ruz.net/routes/ все тоже самое, то наверное его нет смысла использовать при наличии официального полного источника.

Lanjusto commented 10 years ago

Ещё раз: на mosgortrans.ru маршрутов очень мало. На bus.ruz.net / trolley.ruz.net / tram.ruz.net маршруты все.

aesirot commented 10 years ago

Действительно http://bus.ruz.net/routes/ 700 маршрутов, а на mosgortrans.ru только около 300.

В полный рост стал вопрос объединения данных. Я немного помучался и понял, что скорее всего проще брать те маршруты, что есть сразу с мосгортранса, а с руз.нет пропускать мосгортрансовские маршруты. Уж больно по разному называются остановки, ты это обошел "нормированием", но помогает не всегда... да и выглядит хрупко. Плюс есть маршруты вроде 644Ф, которые есть как раз только на мосгортрансе. Пока думаю как быть, ничего особо хорошего. Эх, а в Петербурге все на одном портале и так красиво

Еще меня немного вырубили случаи, когда в зависимости от дня маршрут разный

например маршрут 263 будни http://www.mosgortrans.ru/rasp/1/1000940/48094/index.html выходные http://www.mosgortrans.ru/rasp/1/1000940/42106/index.html

Не очень понятно как это отражать... может делать 2 разных маршрута 263 будни / 263 выходные? Тогда задача сведется к тому, чтобы понять различается ли в разные дни маршрут и клонировать его. Если будет на один маршрут более двух расписаний, то надо будет сверять все или просто уже тогда делать кучу маршрутов.... Пока просто пропущу 263 маршрут, но надо что-то придумать

Lanjusto commented 10 years ago

Про 263 маршрут. Я бы сказал, что надо решать эту проблему режимом работы остановок.

Остановки, работающие в определённые дни или часы, — вещь не такая уж и редкая. Например, автобус 672 имеет остановку «7 автобусный парк» только после 22:00, а остановку «Протезный завод» — по будням с 8:00 до 18:00. Поэтому деление маршрутов не очень хороший вариант. В случае с 672-м их тогда получится аж три.

С 263-м маршрутом, конечно, сложность в том, что там и конечная остановка, получается, имеет ограниченный режим работы. Надо будет это обрабатывать.

Lanjusto commented 10 years ago

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

А почему просто не взять всё с bus.ruz.net, а с мосгортранс.ру — только расписания? Режим работы остановок, кстати, есть только на bus.ruz.net.

На маршруты с постфиксом Ф в первом приближении можно забить. Постфикс Ф обозначает, что маршрут обслуживается микроавтобусами Фиат Дукато. Причём в Мосгортрансе эти Дукаты иногда гоняют немного бестолковым образом — вместо того, чтобы работать на маршрутах с малой загруженностью, обеспечивая комфортные интервалы, их выгоняют на заполненные маршруты. В итоге они мгновенно полностью забиваются и на большей части маршрута новых пассажиров не принимают.

Lanjusto commented 10 years ago

С bus.ruz.net кстати вполне реально попробовать договориться насчёт передачи данных в нормальном виде, уйти от парсинга HTML и человеческим образом получать изменения.

Более того, договариваться придётся в любом случае (даже если продолжать парсить HTML), поскольку они просят об этом в футере сайта.

aesirot commented 10 years ago

Время работы остановок вычисляется из расписания. Пока не ясно понадобится ли.

То, что можно доставать данные в нормальном виде это огромный плюс. А то вебмастер чихнет и все отвалится.

Итого ты предлагаешь и список маршрутов, и список остановок маршрута оставить с руз.нета, а с мосгортранса брать только расписание?

Тогда алгоритм будет такой - после того как достали маршруты с остановками с рузнета переходим к "стартовой странице" мосгортранс, ищем на ней наши маршруты, получаем ссылку на варианты расписания по дням, переходим к первому дню пытаемся объединить остановки - при любом несовпадении отваливаемся, далее перебирая остановки берем расписание. Если есть вариативность routeStopSchedule от дня помечаем как-либо эти остановки.

Да на руз.нете написано, что раздел больше не обновляется. Это нужно иметь в виду и наверное спросить об этом вместе с АПИ.

Маршруты которые есть только на мосгортранс.ру выводим в ворнинг. Пока Фиаты пропустим, но вообще это не хорошо.

Lanjusto commented 10 years ago

Время работы остановок вычисляется из расписания

К сожалению, нет. Возвращаясь к примеру с автобусом 672 и остановкой «7 автобусный парк», которая работает после 22:00. Мосгортранс.ру показывает расписание по этой остановке в течение всего дня. За это безусловно кому-то надо там голову оторвать, но имеем то, что имеем.

того ты предлагаешь и список маршрутов, и список остановок маршрута оставить с руз.нета, а с мосгортранса брать только расписание?

Ага.

Тогда алгоритм будет такой - после того как достали маршруты с остановками с рузнета переходим к "стартовой странице" мосгортранс, ищем на ней наши маршруты, получаем ссылку на варианты расписания по дням, переходим к первому дню пытаемся объединить остановки - при любом несовпадении отваливаемся, далее перебирая остановки берем расписание. Если есть вариативность routeStopSchedule от дня помечаем как-либо эти остановки.

Ага, отлично, только надо будет постараться не совсем втупую объединять остановки. Скорее всего, могут быть несущественные отличия (типа, «Ангарская, 49» или «Ангарская ул., д. 49»).

Да на руз.нете написано, что раздел больше не обновляется. Это нужно иметь в виду и наверное спросить об этом вместе с АПИ.

По факту обновляется. Зимой или весной я проверял, увидел, что 905-й маршрут появился очень быстро. Сейчас действительно последние изменения не отражены. Ты прав, надо спросить.

aesirot commented 10 years ago

Женя, посмотри расписание конечных и предконечных станций: http://www.mosgortrans.ru/rasp/1/1006461/39315/index.html

если коротко, то расписания у конечных нет, если нажать на карте на конечную то расписание появится, но на самом деле оно будет соответствовать отправлению с первой остановки противоположного направления.

В целом садится на конечной смысла нет и расписание не очень нужно, но вот длительность следования определить не получится. Как вариант могу прибавить к предшествующей станции минуту-две. КАк думаешь? Или вообще не делать им расписание?

Так же помечать конечные как необязательные только если этой конечной нет в списке остановок в один из дней.

estroykov commented 10 years ago

если коротко, то расписания у конечных нет, если нажать на карте на конечную то расписание появится, но на самом деле оно будет соответствовать отправлению с первой остановки противоположного направления

Тут последняя остановка при движении туда и первая при движении обратно — это одно и то же. Автобус подходит к Южному порту, подходит к остановке, все выходят, одновременно заходят новые пассажиры и он продолжает идёт обратно.

В каком-то смысле можно считать, что это вырожденный кольцевой маршрут, у которого кольцевой не весь участок, а только остановка «Южный порт».

А вообще досадно, что мы раньше не обсуждали этот случай. У троллейбусов такая схема вообще на каждом втором маршруте. Надо будет подумать, как это правильно завести в данных.

Так же помечать конечные как необязательные только если этой конечной нет в списке остановок в один из дней.

Угу, давай пока так.