Open Lanjusto opened 10 years ago
взял
Женя, а как соотносится информация на мосгортрансе и http://bus.ruz.net/routes/ . Это по идее одно и тоже, только на мосгортрансе официальная?
На мосгортранс.ру далеко не все маршруты и непонятно, как доставать координаты остановок. И вообще раличать одноимённые остановки на разных маршрутах. Но да, там официальная. Хотя на московском автобусе её тоже обновляют аесьма оперативно.
Координаты остановок я смог вытащить. Есть правда опасение, что одна и та же остановка для разных маршрутов у меня задваивается, но это стандартная проблема.
В целом я пока вытаскиваю с сайта и маршруты, и остановки с порядком следования, и расписание (еще впереди). Если на http://bus.ruz.net/routes/ все тоже самое, то наверное его нет смысла использовать при наличии официального полного источника.
Ещё раз: на mosgortrans.ru маршрутов очень мало. На bus.ruz.net / trolley.ruz.net / tram.ruz.net маршруты все.
Действительно 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 маршрут, но надо что-то придумать
Про 263 маршрут. Я бы сказал, что надо решать эту проблему режимом работы остановок.
Остановки, работающие в определённые дни или часы, — вещь не такая уж и редкая. Например, автобус 672 имеет остановку «7 автобусный парк» только после 22:00, а остановку «Протезный завод» — по будням с 8:00 до 18:00. Поэтому деление маршрутов не очень хороший вариант. В случае с 672-м их тогда получится аж три.
С 263-м маршрутом, конечно, сложность в том, что там и конечная остановка, получается, имеет ограниченный режим работы. Надо будет это обрабатывать.
В полный рост стал вопрос объединения данных. Я немного помучался и понял, что скорее всего проще брать те маршруты, что есть сразу с мосгортранса, а с руз.нет пропускать мосгортрансовские маршруты.
А почему просто не взять всё с bus.ruz.net, а с мосгортранс.ру — только расписания? Режим работы остановок, кстати, есть только на bus.ruz.net.
На маршруты с постфиксом Ф в первом приближении можно забить. Постфикс Ф обозначает, что маршрут обслуживается микроавтобусами Фиат Дукато. Причём в Мосгортрансе эти Дукаты иногда гоняют немного бестолковым образом — вместо того, чтобы работать на маршрутах с малой загруженностью, обеспечивая комфортные интервалы, их выгоняют на заполненные маршруты. В итоге они мгновенно полностью забиваются и на большей части маршрута новых пассажиров не принимают.
С bus.ruz.net кстати вполне реально попробовать договориться насчёт передачи данных в нормальном виде, уйти от парсинга HTML и человеческим образом получать изменения.
Более того, договариваться придётся в любом случае (даже если продолжать парсить HTML), поскольку они просят об этом в футере сайта.
Время работы остановок вычисляется из расписания. Пока не ясно понадобится ли.
То, что можно доставать данные в нормальном виде это огромный плюс. А то вебмастер чихнет и все отвалится.
Итого ты предлагаешь и список маршрутов, и список остановок маршрута оставить с руз.нета, а с мосгортранса брать только расписание?
Тогда алгоритм будет такой - после того как достали маршруты с остановками с рузнета переходим к "стартовой странице" мосгортранс, ищем на ней наши маршруты, получаем ссылку на варианты расписания по дням, переходим к первому дню пытаемся объединить остановки - при любом несовпадении отваливаемся, далее перебирая остановки берем расписание. Если есть вариативность routeStopSchedule от дня помечаем как-либо эти остановки.
Да на руз.нете написано, что раздел больше не обновляется. Это нужно иметь в виду и наверное спросить об этом вместе с АПИ.
Маршруты которые есть только на мосгортранс.ру выводим в ворнинг. Пока Фиаты пропустим, но вообще это не хорошо.
Время работы остановок вычисляется из расписания
К сожалению, нет. Возвращаясь к примеру с автобусом 672 и остановкой «7 автобусный парк», которая работает после 22:00. Мосгортранс.ру показывает расписание по этой остановке в течение всего дня. За это безусловно кому-то надо там голову оторвать, но имеем то, что имеем.
того ты предлагаешь и список маршрутов, и список остановок маршрута оставить с руз.нета, а с мосгортранса брать только расписание?
Ага.
Тогда алгоритм будет такой - после того как достали маршруты с остановками с рузнета переходим к "стартовой странице" мосгортранс, ищем на ней наши маршруты, получаем ссылку на варианты расписания по дням, переходим к первому дню пытаемся объединить остановки - при любом несовпадении отваливаемся, далее перебирая остановки берем расписание. Если есть вариативность routeStopSchedule от дня помечаем как-либо эти остановки.
Ага, отлично, только надо будет постараться не совсем втупую объединять остановки. Скорее всего, могут быть несущественные отличия (типа, «Ангарская, 49» или «Ангарская ул., д. 49»).
Да на руз.нете написано, что раздел больше не обновляется. Это нужно иметь в виду и наверное спросить об этом вместе с АПИ.
По факту обновляется. Зимой или весной я проверял, увидел, что 905-й маршрут появился очень быстро. Сейчас действительно последние изменения не отражены. Ты прав, надо спросить.
Женя, посмотри расписание конечных и предконечных станций: http://www.mosgortrans.ru/rasp/1/1006461/39315/index.html
если коротко, то расписания у конечных нет, если нажать на карте на конечную то расписание появится, но на самом деле оно будет соответствовать отправлению с первой остановки противоположного направления.
В целом садится на конечной смысла нет и расписание не очень нужно, но вот длительность следования определить не получится. Как вариант могу прибавить к предшествующей станции минуту-две. КАк думаешь? Или вообще не делать им расписание?
Так же помечать конечные как необязательные только если этой конечной нет в списке остановок в один из дней.
если коротко, то расписания у конечных нет, если нажать на карте на конечную то расписание появится, но на самом деле оно будет соответствовать отправлению с первой остановки противоположного направления
Тут последняя остановка при движении туда и первая при движении обратно — это одно и то же. Автобус подходит к Южному порту, подходит к остановке, все выходят, одновременно заходят новые пассажиры и он продолжает идёт обратно.
В каком-то смысле можно считать, что это вырожденный кольцевой маршрут, у которого кольцевой не весь участок, а только остановка «Южный порт».
А вообще досадно, что мы раньше не обсуждали этот случай. У троллейбусов такая схема вообще на каждом втором маршруте. Надо будет подумать, как это правильно завести в данных.
Так же помечать конечные как необязательные только если этой конечной нет в списке остановок в один из дней.
Угу, давай пока так.
Загружать расписания с www.mosgortrans.ru (см. класс MgtRuTimetableGetter)