Модуль:NYCS DB
Модуль содержит более 60 функций для вычисления информации, связанной с маршрутами Нью-Йоркского метрополитена. Область использования:
- более 400 статей о станциях и пересадочных узлах;
- около 70 статей о линиях и маршрутах;
- список станций, список маршрутов, список линий;
- другие статьи со ссылками на статьи о станциях, линиях и маршрутах.
Проблема состоит в том, что поезда в Нью-Йорке ходят по маршрутам, эта информация отражена в статьях, а маршруты периодически меняются. До появления этого модуля каждый раз при изменении в каком-то маршруте приходилось вносить апдейт в несколько десятков статей, каждый раз рискуя что-то забыть или ошибиться. Модуль вычисляет практически всю информацию такого рода.
Охват информацииПравить
Что учитываетсяПравить
Что учитывается в модуле (если надо, см. подробности ниже):
- движение поездов по маршрутам;
- деление маршрутов на экспрессы и локальные;
- изменение маршрутов в зависимости от времени суток;
- наличие вилочного движения;
- возможность различий между направлениями;
- доступность станций для инвалидов;
- закрытые станции;
- неиспользуемые пути;
- проектируемые/строящиеся станции и проектируемые маршруты;
- отображение временных изменений (вся та же информация, но параллельно для обычной схемы и для введённой на несколько месяцев в связи с каким-нибудь большим ремонтом; пока только для изменений в маршрутах и в виртуальных пересадках и только в карточке станции).
Что пока не учитываетсяПравить
В дальнейшем можно добавить новые возможности:
- учёт того факта, что некоторые поезда оборачиваются не доезжая до конечной станции (при этом на станции Кингс-Хайвей и на станции Бернсайд-авеню и трёх предыдущих идут по экспресс-пути, что в модуле пока не отражено);
- различия в остановках между поездами, движущимися на юг и на север (на момент составления модуля это имеет значение для станции Акуидакт-Рейстрак и для некоторых поездов в северной части маршрута в часы пик, а также для выбора между локальным и экспресс-путём у некоторых маршрутов на станциях Канал-стрит и Куинс-Плаза, хотя совсем недавно это было и у ночного челнока и ещё где-то); сегодня учитываются только различия между поездами, движущимися в пиковом направлении и в обратном ему; информация о различиях между севером и югом пока находится прямо в статьях и поддерживается вручную;
- различия между утренним и вечерним часом пик;
- суперэкспрессы (маршруты, проходящие без остановки даже некоторые из станций, помеченных как «для всех поездов»; в последние годы не используются, но могут быть введены в любой момент);
- места возможного перехода поезда с экспресс-путей на локальные или наоборот для пополнения вычисляемого списка соседних станций для каждой станции;
- количество путей по участкам на схемах линий.
ФункцииПравить
Во всех примерах взяты:
- в качестве станции — Эссекс-стрит (линия Нассо-стрит, Би-эм-ти),
- в качестве пересадочного узла — Деланси-стрит / Эссекс-стрит (Нью-Йоркское метро),
- в качестве маршрута — ,
- в качестве линии — линия Нассо-стрит, Би-эм-ти,
- в качестве бывшей станции — Корт-стрит (линия Фултон-стрит, Ай-эн-ди).
Кроме того, во избежание повторения примеров в таблице функций использованы для построения:
- навигационной таблицы — Парк-Плейс (линия Франклин-авеню, Би-эм-ти),
- сегмента линии — Franklin (и в качестве пары сегментов — PP и Brigh),
- маршрута — челнок Франклин-авеню.
Для карточек статей о станцияхПравить
Название | Ввод[1] | Вывод | Форматирование вывода | Применение | Пример |
---|---|---|---|---|---|
station_full | Станция. | Останавливающиеся на станции маршруты. | Для каждого маршрута его буллет со ссылкой на статью о маршруте и в уголке значок, обозначающий, когда этот маршрут останавливается на этой станции. | Карточка станции. | |
station_lines | Станция. | Линии, проходящие через станцию. | Просто список ссылок на статьи о линиях. Второй (опциональный) параметр — цвет букв (для вывода на цветном фоне в карточке). | Карточка станции. | линия Нассо-стрит, Би-эм-ти |
station_next | Станция. | Те станции, которые могут оказаться следующими при поездке от данной станции на поездах разных маршрутов. | Как в station_full, но вместо буллетов маршрутов — текст со ссылкой на статью о маршруте. Список состоит из двух разделённых горизонтальной чертой частей (как правило север и юг, но в общем случае просто по одну и другую сторону от станции). Если во втором параметре написать acc, будут выданы те станции, которые доступны для инвалидов. | Карточка станции. | Бауэри (J Z) Бродвей — Лафайетт-стрит (M) Марси-авеню (J M Z) |
station_netto_T | Станция. | Название станции (или пересадочного узла) без уточнения. | Чистый текст. | Карточка станции. | Эссекс-стрит |
station_acc | Станция. | Обозначение доступности станции для инвалидов. | Значок инвалидного кресла и (опционально) текст примечания. | Карточка станции. | |
station_opened | Станция. | Дата открытия. | Текст. | Карточка станции. | 16 сентября 1908 |
station_eng | Станция. Во втором параметре поддерживаются значения former и future для бывших и будущих станций соответственно. | Английское название. | Текст. | Карточка станции. | Essex Street |
station_ridership | Станция. | Пассажиропоток. | Текст. Для станций, входящих в пересадочный узел, не выводится ничего, потому что в источнике данные приводятся по пересадочным узлам суммарно. Для таких станций пассажиропоток выводится только в карточке всего пересадочного узла при помощи функции complex_ridership. | Карточка станции. | ▼1 347 765 (317 из 424)[2][3] |
station_connections | Станция. Во втором параметре поддерживаются значения former и future для бывших и будущих станций соответственно. | Пересадки на другие виды транспорта, а также виртуальные пересадки между станциями метро. В статьях о пересадочных узлах срабатывает в карточке узла, а не в карточках отдельных станций. | Текст. | Карточка станции. | Фар-Рокавей (LIRR)[en][3] |
station_csv | Станция и имя поля. | Боро (если второй параметр boro), структурный тип станции (если второй параметр struc), географические координаты (если второй параметр coord), код станции (если второй параметр id). | Текст. | Карточка станции. | |
station_cats | Станция. Во втором параметре поддерживаются значения former и future для бывших и будущих станций соответственно. | Категории для статьи (три вида категорий: по линии, по году открытия и по кросс-платформенной пересадке). | При вызове не в пространстве статей категории показываются как обычные ссылки списком. | Карточка станции. | |
former_data | Станция и имя поля. | Только для бывших станций: боро (если второй параметр boro), дата открытия (если второй параметр opened), дата закрытия (если второй параметр closed), структурный тип станции (если второй параметр struc). | Текст. | Карточка станции. |
Карточки для примераПравить
|
|
|
Для других частей статей о станцияхПравить
Название | Ввод[1] | Вывод | Форматирование вывода | Применение | Пример | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
station_prose0 | Станция. | Самое начало преамбулы: название станции на русском и английском и линия (либо список линий). | Связный текст. | Преамбула статьи о станции. | «Эссекс-стрит» (англ. Essex Street) — станция Нью-Йоркского метрополитена, расположенная на линии Нассо-стрит, Би-эм-ти. | ||||||||||||||||||||||||
station_prose | Станция. Один необязательный параметр описан правее. | Останавливающиеся на станции маршруты, и далее (в зависимости от типа станции) маршруты: для которых станция является конечной; проходящие станцию без остановки; проходящие по тем и иным путям. Если станция на одном из 10 первых мест по пассажиропотоку, то добавляется текст ещё и об этом. | Связный текст. Через второй параметр можно передать дополнительный текст, который будет вставлен после слов «На станции». | Преамбула статьи о станции. | На станции останавливаются маршруты: J (круглосуточно), M (круглосуточно, кроме ночи) и Z (в часы пик в пиковом направлении). Станция является северной конечной для маршрута M (в выходные). | ||||||||||||||||||||||||
SL | Станция, ориентация схемы (V или H), тип пути, список маршрутов (через запятую и пробел) для добавки к вычисляемым и список маршрутов (через запятую и пробел) для отмены.
Допустимые типы пути:
|
Маршруты, проходящие через станцию по данному пути.[5] | Для каждого маршрута только мелкий буллет без значка. | Схема платформ и путей станции, составленная при помощи шаблонов серии SL. |
| ||||||||||||||||||||||||
station_expressinuse | Станция и два варианта возвращаемого значения. Если не задана валидная станция, статья заносится в Категория:Статьи с ошибочными параметрами при обращении к модулю NYCS DB.
Для демонстрационных целей поддерживаются фиктивные станции «+» и «-», соответствующие двум случаям, описанным правее. |
Если на станции экспресс-пути используются хотя бы одним маршрутом (без разницы, с остановкой или без), то второй из переданных параметров, иначе третий. | Строка. | На схеме путей и платформ позволяет создать if, чтобы показывать экспресс-пути сплошной линией или пунктиром. |
| ||||||||||||||||||||||||
station_terminalinuse | Как выше. В четвёртый параметр можно передать направление (n или s). | Если станция является конечной хотя бы для одного маршрута (северной или южной соответственно, если в четвёртом параметре задано n или s, и хотя бы северной или южной в противном случае), то второй из переданных параметров, иначе третий. Функция используется для путей, которые служат только для разворота поездов. | Строка. | Аналогично предыдущей функции. |
| ||||||||||||||||||||||||
connection_use_st | Две или три станции. Если не задано две валидных станции, статья заносится в Категория:Статьи с ошибочными параметрами при обращении к модулю NYCS DB. Один необязательный параметр (и альтернативный способ заполнения обязательных) описан правее. | Маршруты, использующие соединение между двумя станциями (если задано три, то от первой до двух остальных суммарно). Учитываются только маршруты, останавливающиеся на заданных станциях, но не проходящие их без остановки. | Текст. Если в третьем параметре (для случая трёх станций в четвёртом) задано слово when, то маршруты выдаются с описанием времён, иначе без. Если там же задано слово letters, то выдаётся только список букв и цифр текстом без ссылок, а если слово bullets, bullets all или full small, то список буллетов.[5] Если в третьем параметре (вместо третьей станции) задано x или o, это обозначает, что для второй станции нужны только маршруты, проходящие по экспресс- или локальным путям соответственно. | Статья о станции (описание развилок на пути от станции). | А пути уходят вон туда (маршрут Q круглосуточно). Они делятся на экспресс-пути (регулярного движения нет) и локальные (маршрут Q круглосуточно).
Тоннель входит в состав линии Восьмой авеню, Ай-эн-ди (маршруты A и C метрополитена). | ||||||||||||||||||||||||
station_terminal | Станция и направление (n или s). Два необязательных параметра описаны правее. | Маршруты, для которых данная станция является конечной. | Текст. Если в третьем параметре задано слово when, то маршруты выдаются с описанием времён, иначе без. Если в четвёртом параметре (при незаданном when в третьем) задано слово plain, то буквы маршрутов выдаются без ссылок на статьи о них. Если там же задано слово letters, выдаётся только список букв и цифр текстом без ссылок.[5] | Статья о станции. | А этот путь служит конечным (маршрут S (челнок Франклин-авеню)). | ||||||||||||||||||||||||
station_terminalonly | Станция. | Проверка, является ли станция конечной для всех маршрутов, останавливающихся на ней. | Если станция является северной конечной для всех её поездов, то n, если южной, то s, иначе пустая строка. | Статья о станции. | s[3] | ||||||||||||||||||||||||
route_table_nav | Станция или пересадочный узел. | Списки станций по маршрутам, проходящим через станцию или пересадочный узел, которым посвящена статья (по порядку с севера на юг). | Горизонтальный навшаблон. | Навшаблон в статье о станции или о пересадочном узле. |
Фрагмент преамбулы для примераПравить
«Эссекс-стрит» (англ. Essex Street) — станция Нью-Йоркского метрополитена, расположенная на линии Нассо-стрит, Би-эм-ти. … На станции останавливаются маршруты: J (круглосуточно), M (круглосуточно, кроме ночи) и Z (в часы пик в пиковом направлении). Станция является северной конечной для маршрута M (в выходные).
Для поездов, следующих на восток, используется островная платформа и два пути с двух сторон от неё: северный из них относится к линии Нассо-стрит (маршруты J и Z), а южный входит в состав соединения Кристи-стрит, соединяющего линию Шестой авеню и линию Джамейка (маршрут M).
Для списка станцийПравить
Название | Ввод[1] | Вывод | Форматирование вывода | Применение |
---|---|---|---|---|
all_stations | Неограниченное количество параметров парами: название станции и викитекст, выводящий иллюстрацию. В качестве станций задаются физические станции, то есть для перечисленных в таблице multiline_stations целые станции, а в таблице station_complexes — части статьи. Викитекст в чётных параметрах имеет вид:
Параметры должны быть заданы для всех действующих станций. |
Весь список станций. | См. в статье Список станций. |
Для статей о пересадочных узлахПравить
Название | Ввод[1] | Вывод | Форматирование вывода | Применение | Пример | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
complex_lines | Пересадочный узел. | Линии, проходящие через все станции пересадочного узла. | Просто список ссылок на статьи о линиях, как в station_lines. | Карточка пересадочного узла. | линия Нассо-стрит, Би-эм-ти линия Шестой авеню, Ай-эн-ди | |||||||||
complex_ridership | Пересадочный узел. | Пассажиропоток. | Текст, аналогично station_ridership. | Карточка пересадочного узла. | ▲8 861 296 (34 из 424)[2] | |||||||||
complex_boro | Пересадочный узел. | Боро (или список боро для разных станций, если узел находит на границе). | Текст. | Карточка пересадочного узла. | Манхэттен | |||||||||
complex_prose | Пересадочный узел. | Маршруты, останавливающиеся на всех станциях узла, единым списком, а также линии, проходящие через станции пересадочного узла. Если узел на одном из 10 первых мест по пассажиропотоку, то добавляется текст ещё и об этом. | Всё связным текстом, каждая линия и каждый маршрут оформлены как пункт списка. Если несколько маршрутов останавливаются на станциях узла в одни и те же периоды времени, они перечисляются через запятую в одном пункте списка. | Преамбула статьи о пересадочном узле. | В пересадочный узел входят станции следующих линий:
На станциях пересадочного узла останавливаются маршруты: | |||||||||
complex_next | Пересадочный узел. Один необязательный параметр описан правее. | Следующие станции для всех станций пересадочного узла. | Отдельная таблица, а в ней списки как в station_next (но части не разделены горизонтальной чертой, а расположены слева и справа). Значение acc во втором параметре тоже поддерживается. | Статья о пересадочном узле, раздел «Соседние станции». |
| |||||||||
station_next_ns | Как station_next, но третий параметр — n или s. | Как station_next, но только для следующих станций на север или на юг соответственно третьему параметру. | Статья о пересадочном узле, альтернативный вариант раздела «Соседние станции». | |||||||||||
station_bkg | Станция. | Цвет фона для станции, как в all_stations, на основе поля bkg таблицы routes. |
Фрагмент преамбулы и карточка для примераПравить
- (использованы также некоторые функции, перечисленные выше в разделе для станций, но поддерживающие также пересадочные узлы)
«Деланси-стрит / Эссекс-стрит» | |
---|---|
Нью-Йоркский метрополитен | |
| |
Боро | Манхэттен |
Округ | Нижний Ист-Сайд |
Выход к улицам | Деланси-стрит, Эссекс-стрит |
Пассажиропоток (2019) |
▲8 861 296 (34 из 424)[2] |
... В пересадочный узел входят станции следующих линий:
На станциях пересадочного узла останавливаются маршруты:
Условные обозначения |
---|
для дней и часов работы маршрутов (более точно указано во всплывающих подсказках при этих обозначениях): |
|
Предыдущая станция | Линия Название станции |
Следующая станция |
---|---|---|
Бауэри (J Z) Бродвей — Лафайетт-стрит (M) |
линия Нассо-стрит, Би-эм-ти
|
Марси-авеню (J M Z) |
Вторая авеню (F <F>) |
линия Шестой авеню, Ай-эн-ди
|
Ист-Бродвей (F <F>) |
Для статей о маршрутах и списка маршрутовПравить
Название | Ввод[1] | Вывод | Форматирование вывода | Применение | Пример | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
route_descr | Маршрут. | Полное название. | Текст; название линии в этом тексте оформляется как ссылка на статью о линии. | Карточка маршрута, список маршрутов. | Локальный маршрут линии Шестой авеню | |||||||||||||||||||||||||||||||||
route_terminals | Маршрут. Для планируемого маршрута надо задать во втором параметре слово future. | Конечные станции. | Список из двух разделённых горизонтальной чертой частей (север и юг); у каждого элемента списка выводятся периоды времени. Периоды не выводятся, если они совпадают с общими для маршрута. Если во втором параметре задать слово small, периоды выводятся уменьшенным шрифтом (это используется только в списке маршрутов). | Карточка маршрута, список маршрутов. | Форест-Хилс — 71-я авеню (в будни днём и вечером) Мидл-Виллидж — Метрополитан-авеню (ночью) Эссекс-стрит (в выходные) Мидл-Виллидж — Метрополитан-авеню (круглосуточно, кроме ночи) Мертл-авеню (ночью) | |||||||||||||||||||||||||||||||||
route_count_stations | Маршрут. Для планируемого маршрута надо задать во втором параметре слово future. | Количество станций на маршруте. | У каждого элемента списка выводятся периоды времени; периоды не выводятся, если они совпадают с общими для маршрута. | Карточка маршрута. | 8 (ночью) 13 (в выходные) 36 (в будни днём и вечером) | |||||||||||||||||||||||||||||||||
route_periods | Маршрут. Для планируемого маршрута надо задать во втором параметре слово future. | Когда работает маршрут. | Текст. | Карточка маршрута. | круглосуточно | |||||||||||||||||||||||||||||||||
route_color | Маршрут. | Код цвета маршрута. | Код без предшествующего #. | Карточка маршрута. | ff6319 | |||||||||||||||||||||||||||||||||
route_prose | Маршрут. | Фраза, сообщающая про цвет маршрута. | Текст. | Преамбула статьи о маршруте. | На картах, станциях, вагонах и т. д. он обозначается оранжевым цветом, поскольку проходит по линии Шестой авеню. | |||||||||||||||||||||||||||||||||
route_lines | Маршрут и контекст: list (список маршрутов, этот вариант работает по умолчанию) или lead (преамбула статьи о маршруте). | Список линий, по которым проходит маршрут. | Текст со ссылками на статьи о линиях; в варианте для списка маршрутов перед линией, дающей маршруту цвет, ставится квадратик этого цвета. | Список маршрутов либо преамбула статьи о маршруте. | линия Куинс-бульвара, Ай-эн-ди; линия Шестой авеню, Ай-эн-ди; линия Нассо-стрит, Би-эм-ти; линия Джамейка, Би-эм-ти; линия Мертл-авеню, Би-эм-ти линиям Куинс-бульвара, Ай-эн-ди, Шестой авеню, Ай-эн-ди, Нассо-стрит, Би-эм-ти, Джамейка, Би-эм-ти, и Мертл-авеню, Би-эм-ти. | |||||||||||||||||||||||||||||||||
route_regimes | Маршрут либо два маршрута (если второй является разновидностью первого). Для планируемого маршрута надо задать во втором параметре слово future (в этом случае два маршрута не поддерживаются). | Таблица способов обслуживания станций маршрутом по участкам пути и периодам времени. | Строки таблицы соответствуют участкам (от станции до станции), а столбцы периодам времени. Один вызов функции строит таблицу для всего маршрута. | Статья о маршруте. |
| |||||||||||||||||||||||||||||||||
route_table | Маршрут либо два маршрута (если второй является разновидностью первого). Один необязательный параметр (и альтернативный способ заполнения обязательных) описан правее. | Несколько строк таблицы с информацией по станциям (способ обслуживания маршрутом/ами, название, пересадки). Один вызов функции строит таблицу для всего маршрута (или двух). Во втором параметре поддерживается слово future, в этом случае строится схема для планируемого маршрута (на момент создания модуля ), включая планируемые станции. В третьем параметре поддерживается обозначение периода времени (как в таблице routes_periods), тогда схема строится только для него. | Статья о маршруте. |
| ||||||||||||||||||||||||||||||||||
route_schedule | Маршрут. | Ссылка на расписание маршрута на сайте MTA. | Текст. | Статья о маршруте. | https://new.mta.info/document/9541 |
Фрагмент списка маршрутов для примераПравить
Локальный маршрут линии Шестой авеню | линия Куинс-бульвара, Ай-эн-ди; линия Шестой авеню, Ай-эн-ди; линия Нассо-стрит, Би-эм-ти; линия Джамейка, Би-эм-ти; линия Мертл-авеню, Би-эм-ти | локальный | Форест-Хилс — 71-я авеню (в будни днём и вечером) Мидл-Виллидж — Метрополитан-авеню (ночью) Эссекс-стрит (в выходные) Мидл-Виллидж — Метрополитан-авеню (круглосуточно, кроме ночи) Мертл-авеню (ночью) |
Фрагмент преамбулы, карточка, табличка и схема маршрута для примераПравить
Локальный маршрут линии Шестой авеню | |
---|---|
Нью-Йоркский метрополитен | |
Действует круглосуточно | |
Количество станций |
8 (ночью) 13 (в выходные) 36 (в будни днём и вечером) |
Конечные станции |
Форест-Хилс — 71-я авеню (в будни днём и вечером) Мидл-Виллидж — Метрополитан-авеню (ночью) Эссекс-стрит (в выходные) Мидл-Виллидж — Метрополитан-авеню (круглосуточно, кроме ночи) Мертл-авеню (ночью) |
M — маршрут Нью-Йоркского метрополитена, следующий по линиям Куинс-бульвара, Ай-эн-ди, Шестой авеню, Ай-эн-ди, Нассо-стрит, Би-эм-ти, Джамейка, Би-эм-ти, и Мертл-авеню, Би-эм-ти.
От станции включительно |
До станции включительно |
День + вечер | Выходные | Ночь |
---|---|---|---|---|
Форест-Хилс — 71-я авеню | Бродвей — Лафайетт-стрит | локальные пути | — | — |
Эссекс-стрит | Флашинг-авеню | локальные пути | локальные пути | — |
Мертл-авеню | локальные пути | локальные пути | экспресс-пути | |
Сентрал-авеню | Мидл-Виллидж — Метрополитан-авеню | локальные пути | локальные пути | локальные пути |
Условные обозначения |
---|
для дней и часов работы маршрутов (более точно указано во всплывающих подсказках при этих обозначениях): |
|
Для статей о линиях и списка линийПравить
Название | Ввод[1] | Вывод | Форматирование вывода | Применение | Пример | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
line_prose | Линия. | Маршруты, использующие линию, и их время работы на этой линии. Если линия считается «стволовой» и даёт цвет маршрутам, то добавляется текст ещё и об этом. | Текст. | Преамбула статьи о линии. | маршрутами: J (круглосуточно), M (круглосуточно, кроме ночи) и Z (в часы пик в пиковом направлении). Линия считается «стволовой»: маршруты J и Z, проходящие по ней, обозначаются коричневым цветом. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
line_bullets | Линия. | Маршруты, использующие линию. | Крупные буллеты. Если во втором параметре передать ненулевое значение, будут буллеты обычного размера. | Карточка линии; список линий. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
line_count_stations | Линия. | Количество станций на линии. | Просто число. | Карточка линии. | 6 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
line_nowrap | Линия. | Название линии с предотвращением переноса по дефисам в части после запятой. | Карточка линии. | Линия Нассо-стрит, Би-эм-ти | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
line_color | Линия. | Код цвета, который получают от линии маршруты, проходящие по ней. Если его нет (линия не «стволовая»), то чёрный. | Код без предшествующего #. | Карточка линии. | 996633 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
line_opened | Линия. | Год открытия самой старой станции. Если во втором параметре передать непустое значение, то для линий, которые были построены раньше, чем перешли в состав метрополитена, будут выданы оба года и поясняющий текст. | Текст. | Карточка линии. | 1908 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
line_aboveground | Линия. | Есть ли наземные участки (ответ для карточки). | Текст: «есть», «нет» или «вся линия». | Карточка линии. | нет | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
segment_table | Сегмент линии. Три необязательных параметра описаны ниже[⇨]. | Несколько строк таблицы с информацией по станциям (название, пути у платформ, маршруты с временами, пересадки). Один вызов функции строит таблицу для одного сегмента. Для построения таблицы по всей линии надо комбинировать эту функцию с функцией connection_use и прочим текстом и разметкой. | Статья о линии. |
Станции на линии
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
connection_use | Два сегмента линий. Если не задано два валидных сегмента, статья заносится в Категория:Статьи с ошибочными параметрами при обращении к модулю NYCS DB. Один необязательный параметр описан правее. | Маршруты, использующие соединение между двумя сегментами. Если маршрутов не найдено, то возвращается текст, заданный через третий параметр, а в его отсутствие — «соединение не используется». Пустая строка в третьем параметре рассматривается как заданный в параметре пустой текст, в отличие от по-настоящему незаданного параметра. | Буллеты и значки как в route_table. | Статья о линии. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
connection_use_2 | Четыре сегмента линий. Если не задано четыре валидных сегмента, статья заносится в Категория:Статьи с ошибочными параметрами при обращении к модулю NYCS DB. Два необязательных параметра описаны правее. | Список маршрутов для первой пары сегментов в скобках, затем слова «и обратно» и список для второй пары в скобках. Если маршрутов для какой-либо пары не найдено, то в соответствующих скобках возвращается текст, заданный через пятый параметр, а в его отсутствие — «соединение не используется». Если не найдено для обеих пар, то скобки возвращаются одни, а в них текст, заданный через шестой параметр, а в его отсутствие — «оба соединения не используются»; слова «и обратно» в этом случае возвращаются до скобок. | Буллеты и значки как в route_table. | Статья о линии. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
segment_regimes | Сегмент линии. Два необязательных параметра описаны правее. | Маршруты, работающие на этом сегменте как экспрессы и локальные, в зависимости от периода времени. | Таблица. В левой верхней клетке можно вывести текст, сообщающий о том, о каком участке линии идёт речь, и передаваемый через второй параметр. Если во втором параметре передать слово auto, в левой верхней клетке будут выведены названия первой и последней станций сегмента, разделённые при помощи тире и перевода строки (если на участке всего одна станция, то просто её название). Если в третьем параметре передать непустое значение, вместо «экспресс-пути» будет написано «экспресс-путь». | Статья о линии. |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
connection_use_color | Два сегмента линий. | Код цвета, соответствующего маршрутам, использующим соединение между двумя сегментами. Если маршрутов нет или их цвета различны, то чёрный. | Код без предшествующего #. | Статья о линии. | 996633 |
Дополнительные параметры функции segment_tableПравить
В функции segment_table второй параметр может принимать значения:
Значение параметра | Смысл | Для каких станций |
---|---|---|
Для более компактного показа информации о пересадках: | ||
2 | Добавить столбец с маршрутами для второй части каждой станции (для станций, обслуживающих по две линии) и показать в столбце с пересадками только данные по другим станциям пересадочного узла. | Для пар линий 63-й улицы и Арчер-авеню, где по две линии идут параллельно через одни и те же станции. |
1 | Все маршруты из обеих частей станции показать вместе, соединив столбцы с маршрутами и с пересадками. | Для станции Декалб-авеню, где распределение путей между линиями сделано в какой-то мере условно. |
0 | В столбце с пересадками вместо информации о пересадках поместить текст: «Все станции в этой рамке связаны пересадкой». Это будет сделано для всех станций сегмента, поэтому сегмент должен состоять из одной станции. | Для двух случаев на линиях Восьмой авеню и Бродвея, где две станции находятся на разных ветках одной линии и связаны пересадкой (те, которые перечислены в таблице twins). В этих случаях две таблицы строятся параллельно слева и справа и в каждой из них есть строка, соответствующая части одного и того же пересадочного узла. Два значения параметра соответствуют строкам левой и правой таблиц.
Для этих же случаев имеются третий и четвёртый параметры, обеспечивающие визуальное объединение этих двух строк. В третий параметр можно передать значение left или right, чтобы вокруг строки таблицы нарисовать жирную рамочку с трёх сторон: сверху, снизу и слева/справа. Если третий параметр задан, то в четвёртый параметр можно передать высоту строки таблицы, измеренную в строках текста. |
название станции из таблицы twins | В столбце с пересадками убрать данные по указанной станции. | |
Для обозначения того факта, что это схема строящейся или исторической линии: | ||
future | Проектируемый/строящийся сегмент, информацию о станциях надо брать из таблицы stations_future. | |
former | Закрытый/исторический сегмент, информацию о станциях надо брать из таблицы stations_former. | |
reincarn | Сегмент из обычной таблицы stations, но в составе закрытой/исторической линии, поэтому строится с некоторыми особенностями. | |
reincarn back | То же, но станции перечисляются в обратном порядке. |
Фрагмент преамбулы, карточка, табличка и схема линии для примераПравить
Линия Нассо-стрит, Би-эм-ти | |
---|---|
BMT Nassau Street Line Нью-Йоркский метрополитен | |
Открытие первого участка | 1908 год |
Количество станций | 6 |
Наземные участки | нет |
Линия Нассо-стрит, Би-эм-ти — линия Нью-Йоркского метрополитена, расположенная на Манхэттене и обслуживаемая маршрутами: J (круглосуточно), M (круглосуточно, кроме ночи) и Z (в часы пик в пиковом направлении). Линия считается «стволовой»: маршруты J и Z, проходящие по ней, обозначаются коричневым цветом.
Часы пик | Остальное время | |
---|---|---|
Локальные пути | ||
— в пиковом направлении; — в обратном пиковому |
Станции на линии
Условные обозначения |
---|
для дней и часов работы маршрутов (более точно указано во всплывающих подсказках при этих обозначениях): |
|
Станция | Тип (по данным MTA) |
Пути у платформ |
Дата открытия |
Маршруты | Пересадки | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Линия является продолжением линии Джамейка |
| ||||||||||||
Бруклин Вильямсбургский мост Манхэттен | |||||||||||||
Эссекс-стрит | подземная | все | 16 сентября 1908 |
| |||||||||
Ответвление к линии Шестой авеню |
| ||||||||||||
Бауэри | подземная | все | 4 августа 1913 | ||||||||||
Канал-стрит | подземная | все | 4 августа 1913 |
| |||||||||
Присоединялись пути от Манхэттенского моста |
| ||||||||||||
Чеймберс-стрит | подземная | все | 4 августа 1913 |
| |||||||||
Фултон-стрит | подземная | все | 30 мая 1931 |
| |||||||||
Брод-стрит | подземная | все | 30 мая 1931 | ||||||||||
Линия сливается с линией Бродвея и продолжается как линия Четвёртой авеню |
| ||||||||||||
Манхэттен Тоннель Монтегью-стрит Бруклин |
Для схемы всего метрополитенаПравить
Название | Ввод[1] | Вывод | Форматирование вывода | Пример |
---|---|---|---|---|
segment_color | Сегмент линии либо два сегмента. Если задан второй сегмент, то третий параметр — обозначения segor, segand, segandnot, как в шаблоне {{NYCS seg use}}. | Код цвета, соответствующего маршрутам, проходящим по сегменту. Если маршрутов нет или их цвета различны, то чёрный. Если задан второй сегмент, то он учитывается так, как указано в третьем параметре. | Код без предшествующего #. | 000000 |
seg2color | Сегмент линии либо два сегмента. | Код цвета, соответствующего линии, на которой расположен сегмент. Если линия не стволовая, то чёрный. Если задан второй сегмент, то цвет (не чёрный) возвращается только при условии, что он одинаковый для обоих сегментов. | Код без предшествующего #. | 996633 |
segment_dir | Сегмент линии либо два сегмента. Если задан второй сегмент, то третий параметр — обозначения segor, segand, segandnot, как в шаблоне {{NYCS seg use}}. В четвёртом параметре можно передать обозначение периода времени согласно модулю. | Способы использования сегмента (есть экспресс-поезда; есть экспресс-поезда только в пиковом направлении; есть движение по схеме «скип-стоп»; ничего из перечисленного нет). | Имя цвета. | grey |
seg_route | Сегмент, маршрут. | Непустое значение, если маршрут проходит по сегменту, и пустое в противном случае.[5] | Текст. | x |
segment_route_coef | Маршрут, сегмент линии либо два сегмента. Если задан второй сегмент, то четвёртый параметр — обозначения segor, segand, segandnot, как в шаблоне {{NYCS seg use}}. | Коэффициент зелёного и синего для функции rgb, обозначающей использование сегмента маршрутом по временам суток: наиболее яркий красный обозначает круглосуточное использование, наиболее бледный розовый только по ночам, серый отсутствие маршрута на сегменте. | Число от 0 до 255. | 0 |
seg_line | Сегмент, линия. | Непустое значение, если линия проходит по сегменту, и пустое в противном случае. | Текст. | x |
Некоторые примеры — здесь.
Для других статей и общего назначенияПравить
Название | Ввод[1] | Вывод | Форматирование вывода | Пример для станции | Пример для пересадочного узла |
---|---|---|---|---|---|
station_bullets | Станция или пересадочный узел. | Останавливающиеся на станции маршруты.[5] | Буллеты со ссылками на статьи о маршрутах. | ||
station_letters | Станция или пересадочный узел. | Останавливающиеся на станции маршруты.[5] | Всё текстом без ссылок, и для каждого маршрута выводится только его буква или цифра. | J, M, Z | F, <F>, J, M, Z |
station_letters_L | Станция или пересадочный узел. Один необязательный параметр описан правее. | Название станции без уточнения, но с останавливающимися на ней маршрутами.[5] | Всё текстом со ссылкой на статью о станции, и для каждого маршрута выводится только его буква или цифра. Если во второй параметр передать true, выводится текст без ссылки. | Эссекс-стрит (J, M, Z) | Деланси-стрит / Эссекс-стрит (F, <F>, J, M, Z) |
station_netto_L | Станция или пересадочный узел. | Название станции без уточнения. | Текст со ссылкой на статью о станции. | Эссекс-стрит | Деланси-стрит / Эссекс-стрит |
station_descr | Станция или пересадочный узел. | Описание станции для дизамбига. | «Эссекс-стрит» — станция Нью-Йоркского метрополитена на Манхэттене, обслуживаемая маршрутами J, M, Z. | «Деланси-стрит / Эссекс-стрит» — пересадочный узел Нью-Йоркского метрополитена на Манхэттене, обслуживаемый маршрутами F, <F>, J, M, Z. | |
SM | Станция и прочие параметры для шаблона {{SM smart}}. Прочие параметры (dir, side, X, Y) должны передаваться во втором параметре единым стрингом, в котором перед именем параметра ставится {{!}}, а перед значением {{=}}, которые при подстановке превратятся в | и = соответственно. Третий параметр может принимать значения former или reincarn, как в функции segment_table. В четвёртом параметре можно передать любое непустое значение, чтобы был использован графический файл не с белым, а с серым фоном. Пятый параметр предназначен для параметра label, передаваемого в шаблон {{SM smart}}. | Функция вызывает шаблон {{SM smart}}, который строит кружок, обозначающий станцию на схеме метро, — например, на схеме демонтированных линий. |
на пробу
| ||
const | Различные константы. Единственным параметром служит имя константы, значение которой нужно получить (подробнее см. комментарии в модуле в тексте локальной функции const). | 2019 | |||
legend | Список условных обозначений для периодов времени. |
|
Фрагмент карточки и текста для статьи об улицеПравить
улица Такая-то | |
---|---|
англ. Some Street | |
Общая информация | |
Страна | США |
Город | Нью-Йорк |
Метро |
Эссекс-стрит () Деланси-стрит () или Деланси-стрит / Эссекс-стрит () |
Боро | Манхэттен |
- Эссекс-стрит (J, M, Z) — на углу таком;
- Деланси-стрит (F, <F>) — на углу сяком.
Пример строчек для дизамбигаПравить
- (на самом деле в дизамбигах будет дана ссылка на каждую статью один раз, а не три, как здесь)
- «Эссекс-стрит» — станция Нью-Йоркского метрополитена на Манхэттене, обслуживаемая маршрутами J, M, Z.
- «Деланси-стрит» — станция Нью-Йоркского метрополитена на Манхэттене, обслуживаемая маршрутами F, <F>.
- «Деланси-стрит / Эссекс-стрит» — пересадочный узел Нью-Йоркского метрополитена на Манхэттене, обслуживаемый маршрутами F, <F>, J, M, Z.
Примечания к функциямПравить
- ↑ 1 2 3 4 5 6 7 8 В качестве станций, а также сегментов линий следует передавать названия согласно списку в таблице stations (см. ниже), в качестве пересадочных узлов — согласно списку в таблице station_complexes, в качестве маршрутов — согласно списку в таблице routes.
- ↑ 1 2 3 4 Annual Subway Ridership
- ↑ 1 2 3 В качестве примера взята станция Фар-Рокавей — Мотт-авеню (линия Рокавей, Ай-эн-ди).
- ↑ В качестве примера взята станция Корт-стрит (линия Фултон-стрит, Ай-эн-ди).
- ↑ 1 2 3 4 5 6 7 В тех форматах, где не выводятся времена, из списка маршрутов исключаются те, которые останавливаются на станции только ночью, только иногда в часы пик, только в выходные летом и т. п. Это примечание не касается, однако, форматов, строящих куски связного текста, а также формата bullets all.
- ↑ Станция имела перпендикулярные платформы для эстакадной линии Фултон-стрит и для линии Брайтон (ныне эта её часть относится к линии Франклин-авеню).
- ↑ Станция была перемещена севернее в 1928 году.
ТаблицыПравить
Для нужд этого модуля вся схема Нью-Йоркского метрополитена разделена на сегменты, каждый из которых на всём своём протяжении обслуживается одинаковыми маршрутами. В некоторых случаях может оказаться, что между соседними сегментами нет разницы с точки зрения маршрутов, а разделены они по другим причинам, например из-за необходимости нарисовать что-нибудь между ними на схеме линии. Сегменты всегда разделены в тех местах, где одна линия переходит в другую.
Две главных таблицыПравить
stationsПравить
Большая таблица, около 500 записей. Все станции по сегментам, в пределах каждого сегмента с севера на юг (согласно принятому в Нью-Йорке railroad north и railroad south для всех участков метрополитена[1]). Поля:
Имя поля | Смысл | Пояснения |
---|---|---|
segment | Название сегмента, на котором находится станция. | |
station | Название станции (ключ таблицы). | Названием в большинстве случаев служит название статьи, кроме исключений, перечисленных в таблицах multiline_stations и station_complexes, когда названием служит название перенаправления. |
info | Примечание к названию станции. | Показывается в виде сноски. Сообщает как правило о том, что станция в прошлом имела пересадку на другую станцию, ныне снесённую. |
type | Тип станции, отвечающий на вопрос, все ли поезда останавливаются на станции. |
Возможные типы:
|
subtype | Подтип, конкретизация к предыдущему полю. |
Для станций типа x задаётся подтип, используемый только для вычисления маршрутов, идущих по экспресс-путям. Возможные подтипы:
Для станций типа o есть другие значения подтипа:
Ещё один подтип, используемый независимо от типа:
|
other_type | Только для станций, обслуживающих несколько линий, если на текущей линии в пределах станции нет путей без остановки, а на другой линии есть. | В этом поле ставится o (как в поле type в записи, соответствующей другой части этой станции), и это приводит к правильному показу «лок.» на схеме линии в графе «Пути у платформ»; использовано только у двух станций. |
note | Примечание. | У станции Акуидакт-Рейстрак стрелка вверх, обозначающая платформу только в северном направлении. |
north_back | Логическое поле[2], обозначающее, что в списке соседних станций надо для данной станции северную соседнюю показывать как южную, а южную как северную. Применяется тогда, когда railroad north и railroad south для данной станции противоположны им же для расположенных параллельно других частей физической станции или других станций внутри пересадочного узла, для которых список соседних станций показывается вместе. | |
acc | Доступность для инвалидов. | Источник здесь или здесь. Варианты:
Чтобы поддерживать это поле в актуальном состоянии, можно следить за статьёй английской Википедии en:Accessibility of the Metropolitan Transportation Authority (по методу «наблюдение за наблюдающим»): англоязычные коллеги следят за источниками по теме и регулярно обновляют эту статью. |
sep | Отсутствие бесплатного перехода между направлениями. | Источник здесь, вот сам сайт и страница со ссылкой на карту, ссылка подписана «2010 Route Map in the style of the 1959 Schematic». Единственный вариант:
|
eng | Английское название станции. | |
old | Старое название станции, используемое при указанном параметре reincarn (существующая станция как часть исторической линии). Знак минус в этом параметре обозначает, что при построении схемы исторической линии эту станцию надо пропустить. | |
oldlink | Ссылка на статью, используемая при указанном параметре reincarn (существующая станция как часть исторической линии). Эта ссылка содержит в качестве уточнения название исторической линии и является перенаправлением на статью о существующей станции, где сказано о её конфигурации в прошлом. | |
oldtype | Тип станции, используемый при указанном параметре reincarn (существующая станция как часть исторической линии). Фактически нужно только для случаев, когда на исторической схеме надо показать станцию как локальную (oldtype='o'), а на современной не надо. | |
oldeng | Старое английское название станции (пока не используется, потому что в схемах линий английские названия не участвуют). | |
opened | Дата открытия. Внимание: последние 4 цифры обязаны быть номером года. Если дата неизвестна, поле остаётся пустым (пустой стринг, между кавычками ничего). | |
orig | Дата первоначального открытия. | Если станция была открыта в составе железной дороги, а позже включена в состав метрополитена, то в поле opened ставится дата включения в состав метрополитена, а в поле orig — дата первоначального открытия. |
above | Если на схеме линии надо изобразить перед станцией мост или тоннель, то здесь указывается его имя. Здесь же, вокруг имени моста/тоннеля или вместо него, указывается граница боро, например: Манхэттен<hr>Такой-то тоннель<hr>Бруклин | Если для этого моста/тоннеля существует статья, то имя ставится как ссылка на неё; если нет статьи, а есть только перенаправление на статью о линии метро, то без ссылки. Манхэттенский мост и некоторые другие мосты и тоннели указывать не надо, они указываются вручную прямо на схеме. |
below | То же, но не перед станцией, а после неё. | Если станции до и после моста/тоннеля относятся к разным линиям, то мост/тоннель надо указывать для обеих станций, а если к одной и той же, то только для одной из них. |
below_key | Если на схеме линии после станции надо изобразить строчку или несколько из таблицы stations_former, то здесь указывается имя сегмента из той таблицы. | |
below_key_reincarn | Аналогично предыдущему, но игнорируется в режиме reincarn. | |
below_stub | Если на схеме линии после станции надо изобразить подключение бывшей линии, то здесь указывается его конфигурация. | Значение параметра состоит из двух символов: плюс или минус обозначает подключение или ответвление, а затем w или e обозначает запад или восток. |
below_stub_text | Текст к предыдущему параметру. | |
above_stub | То же, но до станции. | |
above_stub_text | Текст к предыдущему параметру. | |
r_key | Ключ для извлечения пассажиропотока из таблицы ridership. | |
r_ast | Логическое поле[2], обозначающее, что цифра пассажиропотока дана для всего пересадочного узла. | |
c_key | Ключ для извлечения географических данных из таблицы csv. | |
conn | Ссылка на русскую статью (и, если надо, на английскую) для пересадки на другой вид транспорта. | |
br | Для длинных названий станций — название, разбитое на две строчки тегом <br>. | Используется только в схеме линии. В схеме маршрута использовать нельзя, потому что там важна высота текста в клетке в строках. |
Если через станцию проходят несколько линий (см. ниже таблицу multiline_stations), то здесь каждая из частей станции имеет свою запись. При этом поля начиная с acc в каждой из записей заполняются одинаково, дублируя информацию.
routes_periodsПравить
Большая таблица, около 1000 записей. Собственно расписание движения поездов. Поля:
Имя поля | Смысл | Пояснения |
---|---|---|
route | Маршрут. | Как в таблице routes. |
period | Период времени. |
Варианты:
Кроме того, в некоторых записях обозначен период времени:
Это нужно для построения схемы маршрута — схема составляется на основе тех сегментов, которые маршрут проходит в часы пик (поскольку в часы пик он проходит почти все свои сегменты), и если какой-то из своих сегментов маршрут не проходит в часы пик, то этот сегмент добавляется в таблицу с пометкой also. Аналогично, если схема маршрута строится для двух маршрутов-вариантов параллельно (на момент составления модуля такими случаями являются: и , и , и , и , и ; можно так же изобразить и , но это уже будет орисс), то надо иметь в виду, что сегменты для неё берутся от первого маршрута, поэтому если у второго есть сегменты, отсутствующие в часах пик у первого, то их тоже надо добавить к первому с периодом also. Последовательность записей с also должна укладываться в общую последовательность обхода сегментов маршрутом, задаваемую записями с rh, а записи с rh и also вместе должны предшествовать остальным записям для того же маршрута и для его варианта. (Если маршрут в часы пик не проходит какой-то свой сегмент, зато проходит другой сегмент, на котором находятся те же станции, как это происходит с маршрутом на станции Декалб-авеню, то применяется другой подход, без записи с also, и он описан ниже.) |
segment | Сегмент. | Сегменты в пределах каждого сочетания маршрута и периода времени перечислены с севера на юг, аналогично станциям в таблице stations; исключения из этого порядка обрабатываются таблицей nodes и полями fork и joint. |
Три поля выше этого места — ключ. | ||
how | Ответ на вопрос, как этот маршрут в это время обслуживает этот сегмент. |
Варианты:
|
dir | Ограничение движения поездов по направлению движения (пиковое или противоположное ему) или по части периода времени. |
Варианты:
Кроме того, есть вариант, обозначаемый цифрой 1, смысл которого — ограничение периода времени:
Аналогично, есть вариант, обозначаемый цифрой 2:
|
fork | Пометка сегментов, расположение которых в таблице отличается от порядка обхода поездом. | Значение south соответствует началу (северному сегменту) ответвления на юг (например, маршрут ), а north наоборот (например, маршрут ); значение uturn у последнего сегмента по списку обозначает, что он не последний по маршруту (маршрут ). |
alt | Отношение записи к временным изменениям в маршрутах. |
Варианты:
Для включения механизма показа временных изменений надо занести в таблицу alts запись с соответствующим номером. |
future | Логическое поле[2], обозначающее, что маршрут проектируется. | |
tt | Логическое поле[2], обозначающее, что экспресс-пути в данном случае используются для оборота. | |
shuttle | Логическое поле[2], обозначающее, что маршрут в этот период времени является челноком (расставляется во всех записях, относящихся к данному сочетанию маршрута и периода времени). | |
Все поля ниже этого места — только для построения схем маршрутов. | ||
joint | Точка пристыковки перевёрнутого сегмента к обычному. | Для маршрута, у которого на трассе имеется точка разворота и поэтому часть сегментов надо изобразить задом наперёд (на момент создания модуля только маршрут ). Оно ставится со значением true в записи с периодом времени rh у последнего обычного сегмента перед первым сегментом, который надо перевернуть. Сегменты после точки разворота у такого маршрута перечисляются в обратном порядке: от второй конечной станции к точке разворота, навстречу той части маршрута, которая до точки разворота. При этом поддерживаются маршруты с разворотом с двумя северными концами, но не с двумя южными. Если появится маршрут с двумя южными, программу придётся дописывать. Тем более не поддерживаются маршруты с двумя разворотами (а они возможны, например если тот же M будет перенаправлен на Бродвей-Джанкшен и затем на Канарси). |
pattern | В записях с периодом времени rh либо also схематическое изображение символов, которые должны быть нарисованы в схеме маршрута слева от названия станции у всех станций данного сегмента и всех последующих, пока не попадётся сегмент, у которого задан другой pattern. | |
shape | Аналогично, но которые должны быть нарисованы в отдельной строке после данного сегмента (и заодно признак, что нужно нарисовать такую отдельную строку). | |
novert_n | Логическое поле[2], сообщающее о том, что если строка таблицы увеличена в высоту из-за нескольких строк пересадок в её правом столбце, то в символах, расположенных слева от названия станции, не нужно рисовать соединяющую кружки вертикальную линию сверху от первой станции сегмента (если сегмент первый в маршруте, то заполнять поле не нужно, отмена вертикальной линии работает автоматически). | |
novert_s | То же снизу от последней станции сегмента (и если сегмент последний в маршруте, то заполнять не нужно). | |
Следующая группа полей тоже предназначена для построения схем маршрутов, но используется только для маршрута на станции Декалб-авеню, где распределение путей между линиями сделано в какой-то мере условно. Маршрут проходит эту станцию ночью по путям, отнесённым к одной линии, а в остальное время — по путям, отнесённым к другой (как экспресс). Первым путям соответствует сегмент Brigh DK, а вторым сегмент Fourth DK, оба сегмента включают только эту станцию. Соответственно, сегмент Brigh DK для маршрута присутствует в таблице с периодом времени ln, а сегмент Fourth DK — со всеми остальными. Если бы для этой станции была задана запись с периодом времени also, то станция была бы показана на схеме маршрута дважды. | ||
fullsta | Логическое поле[2] в записи с периодом rh, сообщающее о том, что в схеме маршрута для станций этого сегмента (то есть для станции Декалб-авеню) надо рассматривать проход поездов по всем путям, а не только по путям определённой линии (аналогично параметру 1 в функции segment_table). | |
segment_subst | В записи, сегмент которой отсутствует среди записей с периодом rh, альтернативный сегмент, присутствующий там. |
Внимание: данные в этой таблице должны отражать прохождение маршрутов по тем или иным путям, а не просто факт остановки на станции. Запись должна присутствовать в таблице, даже если поезд проходит сегмент экспрессом, а на сегменте нет ни одной экспресс-остановки.
Дополнительная информация о станцияхПравить
stations_futureПравить
Аналогично таблице stations, но только проектируемые/строящиеся станции. В поле opened ограничение про номер года не действует. Дополнительные поля:
- struc — тип станции, который для действующих станций вычисляется на основании таблицы csv; задаётся текстом, и если поле отсутствует, то по умолчанию имеется в виду «подземная»;
- boro — боро.
stations_formerПравить
Аналогично таблицам stations и stations_future, но только закрытые/исторические станции. Большая таблица, более 200 записей. Дополнительные поля:
- struc и boro — как в предыдущей таблице; поле struc по умолчанию имеется в виду «эстакадная»;
- saved — логическое поле[2], обозначающее, что станция закрыта, но не снесена;
- closed — дата закрытия;
- station2 — как station, поле для второго названия станции на случай, если платформы разных направлений представляли собой две отдельных станции;
- en — название английской статьи на случай, если русская отсутствует (а она как правило отсутствует);
- transfer — комментарий про бывшие пересадки на другие станции. Поле может быть указано и в таблице stations — у станций, вставляемых при помощи параметра reincarn в схемы исторических линий. В отличие от поля info, используется не в сноске, а в графе «Примечания» и заполняется без точки в конце и с маленькой буквы;
- spur — обозначение бывшей конечной, находившейся на ответвлении (значение поля состоит из двух букв: s или n обозначает южную или северную, а затем w или e обозначает, что станция располагалась к западу или к востоку от основной линии);
- spur_noreincarn — аналогично предыдущему, но игнорируется в режиме reincarn.
Если станция обслуживала и существующую линию, и закрытую, то она сюда не заносится, потому что эта таблица используется только посегментно для построения схемы линии, а станция, которая до сих пор существует, на такой схеме берётся из таблицы stations.
twinsПравить
Те станции, которые описаны в статьях по две в одном разделе статьи. Поля:
- ключ таблицы — название станции, как она бы называлась, если бы она была одна, а не две;
- eng — то же, на английском языке;
- comment1 и comment2 — краткое название на русском, позволяющее отличить одну станцию от другой;
- station1 и station2 — название станции, как она действительно названа в модуле.
multiline_stationsПравить
Те станции, через которые проходят две линии и больше. Поля:
- full — название статьи про станцию;
- part — название перенаправления на статью, которое соответствует путям определённой линии на станции и используется в таблице stations в качестве «квазистанции»;
- text — начало текстового описания распределения маршрутов по путям для данной части станции (программа берёт эти описания в том же порядке, в котором они перечислены в таблице, поэтому для первой части каждой станции этот текст начинается с большой буквы, а для остальных укорочен, чтобы не повторять те же слова в статье);
- after — пояснение после этого описания, которое программа заключает в скобки;
- level — текст, который добавляется к описанию части станции, и он же признак, что для данной части станции надо построить также описание распределения маршрутов по локальным и экспресс-путям;
- detailed — логическое поле[2], обозначающее, что перечисление маршрутов для частей станции должно быть с указанием времён для каждого (по умолчанию оно делается без времён);
- no_lcl и no_exp — логические поля[2], отменяющие перечисление локальных и экспресс-маршрутов соответственно для данной части станции;
- cross — логическое поле[2], обозначающее, что на станции имеется кросс-платформенная пересадка (но за таковую засчитываются только пересадки между маршрутами разных линий).
station_complexesПравить
Пересадочные узлы. Поля:
- article — название статьи про пересадочный узел; если статьи про узел нет, то в этом поле ставится условное значение (одинаковое для обеих записей), имеющее длину 1 (цифра либо латинская буква);
- station — название перенаправления на статью, которое соответствует станции;
- section — название раздела, на который ведёт это перенаправление; пустая строка обозначает (кроме станций с заполненным полем future, см. ниже), что станция связана с остальным пересадочным узлом виртуальной пересадкой (с выходом из метро и повторным входом, но без повторной оплаты) и имеет отдельную статью;
- periods — для пересадок, действующих только в некоторые периоды времени, обозначение периодов, совпадающее с одним из значений ключа в таблице icons; наличие этого поля рассматривается как признак, что пересадка не виртуальная (между Таймс-сквер и Брайант-парком пересадка не виртуальная и работает только в часы работы челнока, все виртуальные пересадки работают круглосуточно);
- alt — аналогично одноимённому полю в таблице routes_periods;
- future — логическое поле[2], обозначающее, что либо это проектируемая/строящаяся станция, либо это пересадочный узел, в котором все станции кроме этой проектируемые/строящиеся.
Дополнительная информация о путяхПравить
nodesПравить
Необходимая информация по точкам соединения сегментов, где переход поезда с сегмента на сегмент отличается от порядка перечисления сегментов в расписании. Поля:
- segment — название сегмента, подходящего к точке с одной из сторон;
- node_n — название точки, если она является северной для сегмента;
- node_s — то же, если она является южной;
- nodetype — тип точки.
Каждая запись содержит информацию об одном сегменте, примыкающем к точке. Для точки требуется две или три записи по сегментам. Поля, соответствующие точке, содержат одинаковую информацию во всех записях, относящихся к ней. Поддерживаются два типа точек:
- fork — развилка (в одной точке сходятся три сегмента, один с севера и два с юга либо наоборот, поезд проходит без изменения направления);
- uturn — разворот (два сегмента, но оба примыкают к точке с севера или оба с юга, поезд проходит либо с изменением направления через эти два сегмента, либо обычным образом в порядке перечисления сегментов).
Информация о точке заносится в таблицу только в том случае, если развилка либо разворот используется каким-либо маршрутом (один и тот же маршрут в одно и то же время суток проходит по обеим веткам развилки, либо существует маршрут, проходящий через точку по сегментам, образующим разворот).
Эта таблица частично дублирует информацию из таблицы routes_periods, потому что так было удобнее для алгоритма.
unused_connectionsПравить
Перегоны, которые по сегодняшнему расписанию не используются маршрутами, однако должны быть учтены при показе соседних станций. Для каждого перегона даются две станции, между которыми он проходит. Поля:
- station — станция;
- north — логическое поле, является ли станция северной для перегона (возможны две южных или две северных, если проезд по перегону является разворотом);
- connection — условное обозначение перегона (чтобы было ясно, какие станции относятся к одному перегону).
unused_tracksПравить
Аналогично предыдущему — участки путей, которые не используются маршрутами. Для каждого участка даются две или более станций. Поля:
- station — станция;
- segment — условное обозначение участка (не связано с сегментами, используемыми в остальных таблицах);
- closed — текст комментария к станции, если она сегодня не существует, например «закрыта» или «снесена»;
- index — номер станции по участку, считая с севера на юг (станции будут связаны перегоном, если они расположены на одном участке и имеют соседние номера).
Эта таблица и предыдущая имеют частично совпадающую функциональность, однако в эту таблицу занесены пути, ведущие к закрытым станциям, а в предыдущую — пары существующих станций, пути между которыми не используются.
В эти две таблицы можно добавить неиспользуемые экспресс-пути, проходящие параллельно локальным путям. Они не добавлены сюда умышленно, потому что не найден источник, который бы гарантировал полноту списка (с учётом всех мест, где поезд может перейти с экспресс-путей на локальные или наоборот). Внимание: несмотря на то что в таблице stations отмечены все экспресс-станции и видно, на каких станциях остановится поезд, идущий по экспресс-пути, — эти вычисления производятся только для существующих маршрутов. Чтобы соседние станции вычислялись и для неиспользуемых экспресс-путей, необходимо все такие пути заносить в эти две таблицы.
Таблицы, копируемые с сайта mta.infoПравить
ridershipПравить
Большая таблица, около 400 записей. Содержит ключ (сокращённое название станции на английском языке и обозначения останавливающихся на ней маршрутов) и данные по годовому пассажиропотоку для каждой станции или пересадочного узла. Ключ должен совпадать с полем r_key в таблице stations. Поля:
Имя поля | Смысл |
---|---|
r | Пассажиропоток. |
prev | Пассажиропоток за предыдущий год. |
rank | Номер станции по пассажиропотоку. |
comment | Сноска. |
Эти данные вынесены в отдельную таблицу, чтобы при обновлении источника менять только её. Ниже дана инструкция по переносу данных из источника в таблицу.
Если источник представляет собой html | Если источник представляет собой файл xlsx |
---|---|
|
|
И далее:
- В предположении, что название станции с маршрутами (ключ) оказалось в столбце A, пассажиропоток за нужный год в столбце G, пассажиропоток за предыдущий год в столбце F, номер станции по пассажиропотоку в столбце J, а столбец K пуст, занести в столбец L такую формулу:
="['" & A2 & "']={r=" & G2 & ",prev=" & F2 & ",rank=" & J2 & "},"
- (пример приведён для второй строки) и размножить её на всю высоту.
- Удалить строки, в которых нет станций.
- Скопировать столбцы K и L в модуль на место строк таблицы ridership[3].
- Если где-то возникают ошибки компиляции из-за станций, по которым нет данных, дополнить данные нулями.
- Убедиться в предпросмотре, что в статье Список станций Нью-Йоркского метрополитена пассажиропоток показывается корректно во всех строках (и нигде нет слова ERROR).
- У тех станций, где есть проблема, проверить, не изменился ли ключ. Изменения могут касаться как названия станции и проходящих через неё маршрутов, так и пропавшего пробела или затесавшегося невидимого символа.
- Если ключ изменился оправданно (в связи с изменением названия станции или маршрутов), оставить здесь новое значение и привести в соответствие поле r_key в таблице stations (помня, что один ключ может использоваться для нескольких станций, поскольку этот источник приводит данные не по станциям, а по пересадочным узлам, а кроме того таблица stations разбивает на несколько строк станции, обслуживающие несколько линий).
- Расхождения в пробелах и невидимых символах подогнать под то, что сделано в таблице stations.
- Не забыть обновить в функции const все значения, связанные с пассажиропотоком.
- Если с момента предыдущего обновления изменилось вхождение станций в пересадочные узлы:
- Добавить вручную поле comment к тем станциям, которых коснулось это изменение (например:
comment='Без учёта станции «Кортландт-стрит», которая не входила в пересадочный узел.'
- у тех, где это уже не актуально, оно удалится само в момент нажатия на Ctrl+V, см. выше).
- Убедиться, что в таблице stations проставлено поле r_ast у тех станций, пассажиропоток для которых дан по пересадочным узлам (и не проставлено у остальных; фактически проверить надо только те станции, у которых вхождение в пересадочные узлы изменилось).
csvПравить
Большая таблица, более 400 записей. Содержит ключ (номер станции) и некоторые географические данные для станции. Ключ должен совпадать с полем c_key в таблице stations. Поля:
Имя поля | Смысл |
---|---|
boro | Боро (Манхэттен, Бруклин…). |
struc | Структурный тип станции (подземная, эстакадная…). |
lat | Географическая широта. |
lon | Географическая долгота. |
id | Код станции. |
Эти данные вынесены в отдельную таблицу, чтобы при обновлении источника менять только её. Ниже дана инструкция по переносу данных из источника в таблицу.
- Сохранить источник в текстовом файле. Убедиться, что у него осталось расширение csv. Открыть его в Экселе.
- В предположении, что код станции оказался в столбце A, номер станции (ключ) в столбце C, боро в столбце G, структурный тип в столбце I, географические координаты в столбцах J и K, направления на север и юг в столбцах L и M, а столбец N пуст, занести в столбец O такую формулу:
="['" & C2 & "']={boro='" & G2 & "',struc='" & I2 & "',lat='" & J2 & "',lon='" & K2 & "',id='" & A2 & "',n='" & L2 & "',s='" & M2 & "'}, --" & F2 & " / " & H2
- (пример приведён для второй строки) и размножить её на всю высоту.
- Удалить строки, в которых нет станций либо (в самом низу) которые относятся к Статен-Айленду.
- Скопировать столбцы N и O в модуль на место строк таблицы csv[3].
Примечание. В файле в источнике добавили поля, связанные с доступностью станций для инвалидов. С одной стороны, можно их учесть, изменив формулу в Экселе следующим образом:
="['" & C2 & "']={boro='" & G2 & "',struc='" & I2 & "',lat='" & J2 & "',lon='" & K2 & "',id='" & A2 & "',n='" & L2 & "',s='" & M2 & "',a='" & N2 & "',an='" & P2 & "',as='" & Q2 & "'}, --" & F2 & " / " & H2
и заменив поле acc в таблице станций на поддержку новых полей в функции station_csv. С одной стороны, подход станет корректнее. С другой стороны, некоторые функции модуля станут забирать больше ресурсов, а каждое изменение будет требовать полного импорта файла.
СловариПравить
routesПравить
Просто список всех маршрутов. Поля:
- id (оно же индекс элемента таблицы) — обозначение маршрута, используемое в других таблицах;
- bkg — код цвета фона для строки в списке станций (только для станций, обслуживаемых маршрутами одного цвета; похож на код цвета маршрута, но бледнее);
- color — код цвета маршрута;
- label — обозначение маршрута, используемое в имени файла, изображающего буллет маршрута (по умолчанию берётся из id);
- link — название статьи про маршрут (по умолчанию строится на основе id);
- name — название маршрута, используемое в текстовой ссылке на статью (по умолчанию берётся из id);
- tooltip — всплывающая подсказка для буллета (по умолчанию берётся из id);
- descr — полное название маршрута (экспресс/локальный такой-то линии);
- onedir — логическое поле[2], обозначающее, что маршрут идёт только в одну сторону;
- shuttle — логическое поле[2], обозначающее, что маршрут является челночным (причём всегда, а не только по ночам);
- future — логическое поле[2], обозначающее, что маршрут проектируется;
- schedule — ссылка на расписание маршрута на сайте MTA (часть ссылки, одинаковая для всех маршрутов, не приводится);
- second — маршрут, являющийся дополнением данного маршрута (только для челнока Леффертс-бульвара).
iconsПравить
Названия графических файлов и текст для отображения комбинации периодов времени для каждого маршрута. Поля:
- индекс элемента таблицы — комбинация периодов времени (см. выше про таблицу routes_periods и ниже про функцию howstops), для которой подбирается графический файл;
- icon — часть имени файла (остальная часть у всех файлов достраивается одинаково);
- tooltip — всплывающая подсказка (объединяется программой с подсказкой для маршрута из предыдущей таблицы);
- ignore — логическое поле[2], надо ли игнорировать данную комбинацию периодов времени, когда задан формат без периодов времени (и тогда маршруты, обслуживающие станцию в наименее значительные периоды времени, просто не показываются);
- comma — логическое поле[2], надо ли ставить запятую после этого текста перед «и» (например, если в нём есть слово «кроме» и запятая перед ним);
- alltimes — логическое поле[2], засчитывается ли данная комбинация как круглосуточная;
- num — номер по порядку для использования в списке условных обозначений (только в записях, используемых в этом списке);
- legend — текст для списка условных обозначений (отсутствие поля обозначает, что текст надо брать из поля tooltip).
Если для какой-то комбинации периодов времени в этой таблице отсутствует запись, то все статьи, в которых эта недостающая запись потребовалась, заносятся в Категория:Статьи с незаданным описанием комбинации времён в модуле NYCS DB, а в самих статьях информация, которая должна браться из этой таблицы, заменяется на само обозначение комбинации периодов времени, которое не нашлось в таблице. Если в этой категории окажутся статьи, надо в найти в них это обозначение и дополнить таблицу.
subperiodsПравить
Возможные сочетания периодов времени и способов обслуживания станции поездом. Поля:
- period — период, как в таблице routes_periods;
- subperiod — аналог поля dir из той же таблицы, но не для сегмента, а для станции.
Возможные значения для поля subperiod:
- peak — в пиковом направлении;
- not peak — в направлении, обратном пиковому;
- some peak — в пиковом направлении, только иногда;
- пустая строка — в обоих направлениях;
- 1 и 2 — ограничения по времени, как в таблице.
linesПравить
Информация по тем линиям, по которым она нужна. Поля:
- индекс элемента таблицы — название статьи, но с маленькой буквы (потому что именно так они написаны в названиях статей о станциях);
- color — код цвета для квадратика в списке линий для маршрута (квадратик рисуется только для тех линий, у которых цвет совпадает с цветом у маршрута);
- link — ссылка на статью о соответствующей стволовой линии;
- shuttle — логическое поле[2], обозначающее, что этот цвет соответствует челнокам.
colorsПравить
Информация по цветам, используемым для обозначения маршрутов и линий. Поля:
- индекс элемента таблицы — код цвета;
- text — название цвета на русском языке в творительном падеже.
altsПравить
Вре́менные изменения в маршрутах. Каждая запись соответствует вре́менной схеме, вызванной каким-нибудь ремонтом и т. п. Поля:
- number — номер от 1 и дальше (не обязательно подряд) в текстовом формате, используемый в поле alt (с добавлением спереди минуса или плюса) в таблицах routes_periods и station_complexes;
- text — текст, поясняющий смысл временной схемы (с маленькой буквы и без знака препинания в конце, например: «на время ремонта такой-то линии»);
- refname — имя ссылки для подстановки в <ref name="..."> вместо многоточия;
- link — ссылка на источник;
- title — заголовок для ссылки на источник.
Для добавления временной схемы надо:
- добавить запись здесь, дав ей какой-нибудь номер, которого пока нет;
- в таблицах routes_periods и station_complexes добавить записи, действующие только по временной схеме, с плюсом (в поле alt значение должно состоять из плюса и здешнего номера);
- там же снабдить полем alt с минусом записи, действующие только по постоянной схеме, но не действующие по временной (в поле alt значение должно состоять из минуса и здешнего номера);
- если изменение не сводится только к добавлению или отмене, то скопировать постоянную запись, переправить копию на временный вариант и снабдить постоянную запись полем alt с минусом, а копию полем alt с плюсом.
Для удаления временной схемы надо:
- удалить её запись здесь (перенумеровывать остальные не нужно);
- в таблицах routes_periods и station_complexes удалить записи с этим номером и плюсом;
- там же удалить у оставшихся записей поле alt с этим номером и минусом.
Пример удаления временной схемы можно увидеть в истории правок модуля за 27 апреля 2020 года (там большинство временных изменений было отменено, а одна временная бесплатная пересадка превратилась в постоянную).
Если наступит момент, когда никаких временных схем нет, надо будет оставить одну запись, у которой поле number не задано (то есть nil).
Примечания к таблицамПравить
- ↑ На линии Джамейка (она наиболее спорная в этом отношении) север сделан на Джамейке.
- ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Заполнено только если true.
- ↑ 1 2 В Экселе выделяем столбцы, проведя мышкой по их заголовкам, жмём Ctrl+C, в редакторе модуля стираем все строки таблицы, ставим курсор в начале строки после них, жмём Ctrl+V.
Принцип действия вкратцеПравить
Организация движения и прочее IRLПравить
Понятие маршрутаПравить
В обычном метрополитене (например, в Москве) поезд идёт по своей линии из конца в конец; рельсовые соединения между линиями если где-то и существуют, то не используются поездами с пассажирами (кроме редких случаев, когда надо перегнать поезд с линии на линию). В Нью-Йорке метрополитен больше похож на трамвайную сеть: маршрут поворачивает с улицы на улицу, где-то идёт вместе с другим маршрутом, а где-то нет. Поэтому есть отдельно понятие маршрута (route, service, train, см. Список маршрутов Нью-Йоркского метрополитена) и отдельно понятие линии (line, см. Список линий Нью-Йоркского метрополитена). Линия играет роль улицы, причём в большинстве случаев она и проходит по улице (над ней по эстакаде или под ней на глубине подвальных этажей домов).
На практике в АИ, предназначенных для пассажиров, имеется путаница, состоящая в том, что слово линия (line) применяется по отношению к маршрутам (пример можно видеть на фотографии с Томасом Прендергастом ниже). Однако английская Википедия, а русская вслед за ней, старается эту путаницу не копировать, потому что хотя пассажирам, возможно, не нужна информация про историю строительства линий (тех линий, которые на самом деле линии), — читателям Википедии она нужна, соответственно для читателей нужно сохранить два разных термина, не смешивающихся между собой.
Экспресс-маршрутыПравить
На многих линиях есть 4 пути, причём два из них имеют платформы на всех станциях, а два только на некоторых, и маршруты идут или по одним путям, или по другим. Первые маршруты и пути называются локальными (local), а вторые экспрессами (express). Станции называются экспресс-станциями, если на них есть остановка экспресс-маршрутов (платформа при экспресс-пути), и локальными — если нет.
Станция Путь |
Экспресс-станция | Локальная станция |
---|---|---|
Экспресс-путь | есть остановка | нет остановки |
Локальный путь | есть остановка | есть остановка |
Как правило все пути идут в одном уровне и экспресс-путями являются два средних, хотя возможны и варианты (они оговорены в статьях о станциях, где это не так). На некоторых линиях есть 3 пути, тогда экспресс-путь один средний и он используется только в пиковом направлении (peak direction, в сторону Манхэттена утром и обратно вечером).
Другие особенности маршрутовПравить
Помимо локальных и экспресс-маршрутов, имеются маршруты, работающие в паре по принципу скип-стоп (skip-stop), — это своего рода экспресс для бедных, поезд проходит без остановки часть станций (а другой поезд другую часть), но двигается по обычным локальным путям, потому что экспресс-путей на линии нет. На момент составления модуля этот принцип актуален для маршрутов и , у которых в режиме скип-стоп при 6 или 7 пропускаемых станциях время на проход всего маршрута сокращается с 52 минут до 47[1].
На некоторых маршрутах организовано вилочное движение, когда часть поездов направляется по другой линии (например, из-за ограниченной пропускной способности конечных станций в часы пик).
Некоторые маршруты называются челночными (shuttle), однако они не обязательно ходят по одному пути в обе стороны (только у двух из них есть это свойство), но они просто короче обычных маршрутов (эмпирически замечено, что на маршрутах, называемых челночными, не более 8 станций).
Деление маршрутов на номерные и литерные соответствует двум типоразмерам вагонов (а также станций, тоннелей и т. д.) и с логикой данного модуля не связано (хотя и можно заметить, что по каждому сегменту идут маршруты или только номерные, или только литерные).
Расписание как функция времениПравить
И наконец, всё расписание движения маршрутов, со всеми поворотами и делением на локальные и экспрессы, зависит от времени суток и дня недели (time period). Есть 5 периодов времени с разным расписанием:
Часы Дни |
00:00—06:30 | 06:30—09:30 | 09:30—15:30 | 15:30—20:00 | 20:00—24:00 |
---|---|---|---|---|---|
пн — пт | ночь | часы пик | день (кроме часов пик) |
часы пик | вечер |
сб — вс | выходные (и в праздники тоже действует расписание выходного дня) |
В общем случае каждый маршрут на каждом участке своей трассы в каждый период времени в каждом направлении ходит либо локальным, либо экспрессом (либо по схеме скип-стоп с указанием, на каких станциях он останавливается), что и отражено в таблице routes_periods. Линия, по которой ходит всё время один и тот же маршрут, да ещё всегда со всеми остановками, и ещё не переходит на другие линии (линия Канарси и маршрут ), — это редкость.
Живучесть системыПравить
Общая конфигурация сети метрополитена с большим числом рельсовых соединений между линиями придаёт ей живучесть. При закрытии какого-либо участка на ремонт маршруты изменяются таким образом, чтобы обслуживать всю остальную сеть (в отличие от традиционных метрополитенов, где закрытие одного участка приводит к разрыву сети на две части). Это даёт метрополитену возможность работать круглосуточно и производить ремонт без остановки работы на ночь, закрывая движение только там, где надо, и направляя поезда в объезд. Для показа в статьях самых долгосрочных временных изменений в маршрутах есть поддержка в модуле. Одним из них на момент создания модуля был ремонт тоннеля 14-й улицы, входящего в вышеупомянутую линию Канарси, имеющую мало возможностей по перенаправлению поездов. Ремонт на линии Канарси[en] вызвал в 2016—2019 годах много дискуссий, завершившихся вмешательством губернатора штата Нью-Йорк и изменением плана таким образом, чтобы движение по линии было максимально сохранено.
Названия станцийПравить
Названия станций повторяются многократно, потому что станции названы в честь улиц (поперечных к линии — точно как трамвайные остановки), а одна улица может пересекать несколько разных линий, на каждой из которых в этом месте есть станция (и плюс в каждом боро могут быть улицы с одинаковыми названиями). Чтобы указать на станцию однозначно, в реальной жизни принято добавлять к её названию либо боро (Манхэттен, Бруклин, Куинс, Бронкс), либо бывшую компанию, к которой станция относилась до объединения 3 частей метрополитена в 1940 году (IRT, BMT, IND), либо маршруты, останавливающиеся на ней, либо кроме поперечной ещё и продольную улицу. Способы с боро и с компанией дают однозначность только иногда. Способ с маршрутами неудобен тем, что маршруты со временем меняются, поэтому, например, не сразу можно понять, что имелось в виду под Avenue U, D Train в 1996—1997 году (станций под названием «Авеню Ю» всего три, но маршрут сегодня не проходит ни через одну из них). Кроме того, нередка ситуация, когда маршрут останавливается на станции только ночью или только несколько раз в сутки в часы пик, и такой маршрут у такой станции иногда включают в название, а иногда нет.
После терактов 11 сентября были разрушены две станции, расположенные на разных линиях и называвшиеся «Кортландт-стрит»: одна была восстановлена относительно быстро, но затем закрывалась на реконструкцию; другая была признана не подлежащей восстановлению, тоннель был построен заново без станции, а новая станция на этом месте была открыта через 17 лет. Но на протяжении всех этих лет в разных источниках, от новостных сайтов до форумов метрофанов, появлялись формулировки типа «станция „Кортландт-стрит“ разрушена» и «когда она будет восстановлена», без всяких признаков того, что пишущий знает, что этих станций две, и даже в новостях про одну из них нередко размещались фотографии другой.
Отражение реальности в ВикипедииПравить
Организация статейПравить
Вслед за английской Википедией, статьи про станции как правило названы следующим образом: <название станции> (<название линии>), где <название линии> совпадает с названием статьи про линию (только в русской Википедии с маленькой буквы). Исключения перечислены ниже, причём если статья названа иначе, то имеется перенаправление, которое названо по тому же принципу и ведёт на соответствующий раздел статьи. Итак, исключения:
- Через станцию проходят пути нескольких линий — тогда статья имеет уточнение «Нью-Йоркское метро». Такие случаи перечислены в таблице multiline_stations. В таблице stations в таком случае каждая из частей станции (пути, платформы и маршруты, относящиеся к каждой линии) представлена по отдельности. Одна из этих станций (Декалб-авеню) не имеет однозначного распределения путей между линиями, поэтому для неё придумано несколько ухищрений, прокомментированных в этой документации.
- Станция входит в пересадочный узел (включающий несколько станций) — тогда статья описывает все станции, входящие в узел, и тоже имеет уточнение «Нью-Йоркское метро». Каждая станция имеет раздел в статье, озаглавленный «Платформа (-мы) такой-то линии». Такие случаи перечислены в таблице station_complexes. Отличие от предыдущего случая в том, что в предыдущем случае станция считается одной, несмотря на то что через неё проходят несколько линий.
- Линия разветвляется, на каждой из двух веток имеется станция, обе станции формально относятся к одной линии и при этом соединены пересадкой, то есть входят в пересадочный узел. В таком случае обе станции описываются в одном разделе статьи. Две пары таких станций отмечены в таблице station_complexes комментариями «две станции — один раздел статьи», и они же перечислены в таблице twins. В одной из пар названия станций разные (Чеймберс-стрит и Всемирный торговый центр) и перенаправления названы так, как указано выше, в другой паре названия станций одинаковые (Канал-стрит) и в уточнениях перенаправлений после названия линии есть дополнительные слова.
- Ещё один случай отмечен комментарием в таблице station_complexes: «станция с двумя линиями входит в пересадочный узел» (то есть станция одновременно обладает особенностями, названными в двух первых исключениях).
Рекомендуется по возможности пользоваться этими перенаправлениями, а не прямыми ссылками на статьи, чтобы по тексту ссылки всегда было видно, о чём идёт речь.
Условные обозначенияПравить
|
Для обозначения маршрутов и в источниках, и в Википедии используются цветные кружки (для некоторых поставленные на угол квадратики, diamond) с буквами или цифрами маршрутов («буллеты», bullet). Для обозначения периодов времени, в которые маршрут останавливается на определённой станции, в Википедии используются специальные значки, найденные в старых расписаниях. Коллеги из английской Википедии смогли найти такие значки не для всех сочетаний периодов времени, поэтому иногда приходится использовать один значок для разных сочетаний (можно надеяться, близких друг другу: см. в таблице icons комментарий «файлы для сочетаний времён есть только досюда»). В выпадающем списке условных обозначений описание к каждому значку сформулировано приблизительно — так, чтобы оно покрыло разные случаи использования каждого значка.
Значок маршрута и значок времён вместе выглядят вот так: (в данном примере обозначение следует понимать так, что маршрут 3 останавливается на станции круглосуточно, кроме ночи). До создания этого модуля такие обозначения строились при помощи шаблонов (в частности, {{NYCS when}}).
МодульПравить
Таблица stations содержит все станции (причём для станций, указанных выше в исключении 1, даны «псевдостанции», составляющие их). Для каждой станции указано, к какому сегменту она относится с точки зрения этого модуля. Таблица routes_periods имеет ключ, состоящий из маршрута, периода времени и сегмента, и отвечает на вопрос, каким образом данный маршрут ходит по данному сегменту в данный период времени. Порядок станций внутри сегмента в первой таблице и порядок сегментов внутри сочетания маршрута и периода времени во второй таблице соответствуют реальному порядку станций на линиях и реальному порядку их обхода поездом с севера на юг.
Функция howstops возвращает комбинацию периодов времени, в которые заданный маршрут останавливается на заданной станции. Она их возвращает примерно в таком формате: rh(peak)+md+ev, где плюсами разделены собственно периоды времени (как в таблице routes_periods), а в скобках при некоторых из них даны способы обслуживания станции поездом (как в таблице subperiods). Внимание: в переменных, обозначающих способы обслуживания станции поездом, различаются пустая строка (в обоих направлениях) и nil (ни в каком направлении): для пустой строки период времени присутствует в возвращаемом значении, но без добавки в скобках (как md и ev в приведённом примере), а для nil — отсутствует.
Функция howskips (используемая реже) — аналог функции howstops, но для прохода маршрута через станцию без остановки. Функция normalize приводит результат двух предыдущих функций к стандартному виду, чтобы его можно было найти в таблице icons.
Массив arr состоит из элементов, каждый из которых имеет два поля: обозначение маршрута (как в таблице routes_periods) и комбинация периодов времени в вышеуказанном формате. Функция arr_add пополняет этот массив одним сочетанием маршрута и периода времени. Функция arr_text строит на основании этого массива викикод в том или ином формате (см. столбец «Форматирование вывода» в списке функций выше). Большинство доступных снаружи функций модуля построены как цикл, заполняющий массив функцией arr_add, и в конце форматирование массива функцией arr_text.
Массив arrarr (используемый для списка конечных станций маршрута и для списка соседних станций заданной станции) состоит из элементов, каждый из которых имеет два поля: название станции и массив arr. При построении списка соседних станций в некоторых элементах массива заполняется также логическое поле, говорящее о том, что станцию надо показать уменьшенным шрифтом (для закрытых станций и для неиспользуемых соединений).
Функция build_route — большая функция, которая строит список станций для маршрута или двух в различных форматах для разных целей.
Поддержка модуляПравить
Основной случай, когда необходимо вносить изменения в модуль, — это изменения в маршрутах, что требует подправить таблицу routes_periods. Но кроме того:
- Возможен случай, что на разных частях какого-либо сегмента движение поездов становится разным. Тогда надо разбить этот сегмент на два, придумать новое название для одной из частей и проапдейтить все места в модуле, где упоминается изменённый сегмент, а также все статьи о линиях, где он упоминается (а он может упоминаться не только в статье о самой линии, к которой он относится).
- Возможен случай, что отменяется движение поездов по какому-либо участку путей (например, там, где поворачивает с линии Шестой авеню на линию Нассо-стрит). Тогда, чтобы не потерять что-то в «соседних станциях», надо добавить этот участок в таблицу unused_connections.
- Возможен случай, что затрагивается та часть маршрута, которая связана с развилками. Тогда надо убедиться, что в статье о маршруте правильно показывается схема, и при необходимости исправить поля shape и pattern.
- Возможен случай, что переименовывается или добавляется станция. Тогда надо привести в соответствие статью либо перенаправление, название станции в модуле (во всех таблицах, включая поле eng в таблице stations), а также обращения к модулю в тех статьях, где данная станция упоминается как параметр при обращении к функциям модуля через шаблоны (для их нахождения можно использовать поиск, раз и два, только надо не напутать с расстановкой трёх типов палок). При переименовании статьи всегда полезно проверить «ссылки сюда» для старого названия.
- Если будет решено изменить систему уточнений в этих статьях, то названия, использованные в этом модуле, должны сохраниться хотя бы в виде перенаправлений. В тех шаблонах, где в модуль передаётся имя статьи, берущееся по умолчанию, надо будет передавать явным образом имя перенаправления.
- Есть некоторые места в статьях, которые не поддерживаются модулем, например столбец «Режим работы» в списке маршрутов.
Для помощи в обнаружении статей с ошибками при обращении к этому модулю созданы две категории, которые надо проверять после любого изменения:
- К:Статьи с незаданным описанием комбинации времён в модуле NYCS DB — в таблице icons должны присутствовать все сочетания периодов времени, получающиеся при разнообразных вычислениях в статьях; если где-то получается сочетание, отсутствующее в таблице, то статья попадает в категорию.
- К:Статьи с ошибочными параметрами при обращении к модулю NYCS DB — в функциях connection_use и connection_use_st должны быть заданы два сегмента либо две станции соответственно; если они заданы некорректно, то статья попадает в категорию.
На подстраницах модуля есть обращения к некоторым особо критичным из его функций для всех станций, пересадочных узлов, линий и маршрутов. Эти подстраницы можно использовать для предпросмотра при внесении изменений в модуль и в шаблоны, обращающиеся к нему. При желании можно на этих подстраницах менять названия функций, оставляя тот же список станций и т. д.
Примечания к принципу действияПравить
Конец документации, начало модуляПравить
local p = {} local getArgs=require('Module:Arguments').getArgs local markyes='[[Файл:Check Mark (89605) - The Noun Project.svg|10px|link=]]' local markpeak='[[Файл:Pfeil rechts.svg|10px|link=]]' local markback='[[Файл:Pfeil links.svg|10px|link=]]' local asterisk='<sup>[[Файл:Asterisk.svg|6px|link=]]</sup>' local onearrow='|align=center|[[Файл:U+21E9.svg|x20px|link=]]\r\n' local indent='<br> ' local accicon='[[Файл:Wheelchair symbol.svg|12px|Доступность для маломобильных групп населения|link=]]' local constricon='[[Файл:UnderCon icon black.svg|20px|Станция строится или проектируется|link=]]' local closedicon='[[Файл:Closed icon black.svg|20px|Станция закрыта|link=]]' local demolicon='[[Файл:Closed icon black.svg|20px|Станция снесена|link=]]' local noperiods='[[Категория:Статьи с незаданным описанием комбинации времён в модуле NYCS DB]]' local badparams='[[Категория:Статьи с ошибочными параметрами при обращении к модулю NYCS DB]]' local nostation='<b><img style="color:red;">Станция не определена в модуле NYCS DB</img></b>'..badparams local icon_nostop='<img title="поезд не останавливается">—</img>' local grayback='background-color:lightgrey;' local whiteback='background-color:white;' local tab='{| cellspacing=0 cellpadding=0' local r_link='<ref name="mta.info">[https://new.mta.info/document/16136 Annual Subway Ridership]</ref>' local metrocard='<ref name="virt">Переход требует выхода из метро и повторного входа через турникет, но бесплатный для пассажиров, оплачивающих проезд при помощи {{iw|MetroCard}} или {{iw|OMNY}}.</ref>' local lastcomma,excludefound local alt_on=false -- переменная (значение меняется программно, руками не трогать) local future_on=false -- переменная (значение меняется программно, руками не трогать) local dbg='' -- переменная для отладки, ее описание пусть тут будет, но версии модуля, где она используется, должны оставаться только в предпросмотре -- tables local stations = { {segment='Eighth North',station='Инвуд — 207-я улица (линия Восьмой авеню, Ай-эн-ди)',acc='yes',subtype='bumper',eng='Inwood–207th Street',opened='10 сентября 1932',r_key='Inwood-207 St A',c_key='A02'}, {segment='Eighth North',station='Дайкман-стрит (линия Восьмой авеню, Ай-эн-ди)',eng='Dyckman Street',opened='10 сентября 1932',r_key='Dyckman St A',c_key='A03'}, {segment='Eighth North',station='190-я улица (линия Восьмой авеню, Ай-эн-ди)',eng='190th Street',opened='10 сентября 1932',r_key='190 St A',c_key='A05'}, {segment='Eighth North',station='181-я улица (линия Восьмой авеню, Ай-эн-ди)',eng='181st Street',opened='10 сентября 1932',r_key='181 St A',c_key='A06'}, {segment='Eighth North',station='175-я улица (линия Восьмой авеню, Ай-эн-ди)',acc='yes',eng='175th Street',opened='10 сентября 1932',r_key='175 St A',conn='[[автовокзал Моста Джорджа Вашингтона]]<sup>[[[:en:George Washington Bridge Bus Station|en]]]</sup>',c_key='A07'}, {segment='Eighth North Middle',station='168-я улица (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='168th Street',opened='10 сентября 1932',r_key='168 St A C 1',r_ast=true,c_key='A09'}, {segment='Eighth North Middle',station='163-я улица — Амстердам-авеню (линия Восьмой авеню, Ай-эн-ди)',type='o',subtype='under',sep='yes',eng='163rd Street–Amsterdam Avenue',opened='10 сентября 1932',r_key='163 St-Amsterdam Av C',c_key='A10'}, {segment='Eighth North Middle',station='155-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',subtype='under',eng='155th Street',opened='10 сентября 1932',r_key='155 St C',c_key='A11'}, {segment='Eighth 145',station='145-я улица (линия Восьмой авеню, Ай-эн-ди)',type='x',eng='145th Street',opened='10 сентября 1932',r_key='145 St A B C D',c_key='A12'}, {segment='Eighth',station='135-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',sep='yes',eng='135th Street',opened='10 сентября 1932',r_key='135 St B C',c_key='A14'}, {segment='Eighth',station='125-я улица (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='125th Street',opened='10 сентября 1932',r_key='125 St A B C D',c_key='A15'}, {segment='Eighth',station='116-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',sep='yes',eng='116th Street',opened='10 сентября 1932',r_key='116 St B C',c_key='A16'}, {segment='Eighth',station='Катидрал-Паркуэй — 110-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='Cathedral Parkway–110th Street',opened='10 сентября 1932',r_key='Cathedral Pkwy-110 St B C',c_key='A17'}, {segment='Eighth',station='103-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='103rd Street',opened='10 сентября 1932',r_key='103 St B C',c_key='A18'}, {segment='Eighth',station='96-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='96th Street',opened='10 сентября 1932',r_key='96 St B C',c_key='A19'}, {segment='Eighth',station='86-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='86th Street',opened='10 сентября 1932',r_key='86 St B C',c_key='A20'}, {segment='Eighth',station='81-я улица — Музей естественной истории (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='81st Street–Museum of Natural History',opened='10 сентября 1932',r_key='81 St-Museum of Natural History B C',c_key='A21'}, {segment='Eighth',station='72-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='72nd Street',opened='10 сентября 1932',r_key='72 St B C',c_key='A22'}, {segment='Eighth',station='59-я улица — Колумбус-Серкл (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='59th Street–Columbus Circle',opened='10 сентября 1932',r_key='59 St-Columbus Circle A B C D 1',r_ast=true,c_key='A24'}, {segment='Conc North',station='Норвуд — 205-я улица (линия Конкорс, Ай-эн-ди)',eng='Norwood–205th Street',opened='1 июля 1933',r_key='Norwood-205 St D',c_key='D01'}, {segment='BPB',station='Бедфорд-парк-бульвар (линия Конкорс, Ай-эн-ди)',type='x',subtype='tt',acc='yes',eng='Bedford Park Boulevard',opened='1 июля 1933',r_key='Bedford Park Blvd B D',c_key='D03'}, {segment='Conc',station='Кингсбридж-роуд (линия Конкорс, Ай-эн-ди)',type='x',subtype='bidi',acc='yes',eng='Kingsbridge Road',opened='1 июля 1933',r_key='Kingsbridge Rd B D',c_key='D04'}, {segment='Conc',station='Фордем-роуд (линия Конкорс, Ай-эн-ди)',type='x',subtype='bidi',eng='Fordham Road',opened='1 июля 1933',r_key='Fordham Rd B D',conn='[[Фордем (Metro-North)]]<sup>[[[:en:Fordham station|en]]]</sup>',c_key='D05'}, {segment='Conc',station='182-я — 183-я улицы (линия Конкорс, Ай-эн-ди)',type='o',eng='182nd–183rd Streets',opened='1 июля 1933',r_key='182-183 Sts B D',c_key='D06'}, {segment='Conc',station='Тремонт-авеню (линия Конкорс, Ай-эн-ди)',type='x',subtype='bidi',eng='Tremont Avenue',opened='1 июля 1933',r_key='Tremont Av B D',c_key='D07'}, {segment='Conc',station='174-я — 175-я улицы (линия Конкорс, Ай-эн-ди)',type='o',eng='174th–175th Streets',opened='1 июля 1933',r_key='174-175 Sts B D',c_key='D08'}, {segment='Conc',station='170-я улица (линия Конкорс, Ай-эн-ди)',type='o',eng='170th Street',opened='1 июля 1933',r_key='170 St B D',c_key='D09'}, {segment='Conc',station='167-я улица (линия Конкорс, Ай-эн-ди)',type='o',eng='167th Street',opened='1 июля 1933',r_key='167 St B D',c_key='D10'}, {segment='Conc',station='161-я улица — Стадион Янки (линия Конкорс, Ай-эн-ди)',type='o',acc='yes',eng='161st Street–Yankee Stadium',opened='1 июля 1933',below='Бронкс<hr>Тоннель Конкорс<hr>Манхэттен',r_key='161 St-Yankee Stadium B D 4',r_ast=true,conn='[[Янкис — Ист 153-я улица (Metro-North)]]<sup>[[[:en:Yankees–East 153rd Street station|en]]]</sup>',c_key='D11'}, {segment='Conc',station='155-я улица (линия Конкорс, Ай-эн-ди)',type='o',eng='155th Street',opened='1 июля 1933',r_key='155 St B D',c_key='D12'}, {segment='Conc 145',station='145-я улица (линия Конкорс, Ай-эн-ди)',type='x',subtype='bidi',eng='145th Street',opened='10 сентября 1932',r_key='145 St A B C D',c_key='D13'}, {segment='Ast',station='Астория — Дитмарс-бульвар (линия Астория, Би-эм-ти)',type='x',subtype='bumper',eng='Astoria–Ditmars Boulevard',opened='19 июля 1917',r_key='Astoria-Ditmars Blvd N W',c_key='R01'}, {segment='Ast',station='Астория-бульвар (линия Астория, Би-эм-ти)',type='x',acc='yes',subtype='bidi',eng='Astoria Boulevard',opened='19 июля 1917',r_key='Astoria Blvd N W',c_key='R03'}, {segment='Ast',station='30-я авеню (линия Астория, Би-эм-ти)',type='o',eng='30th Avenue',opened='19 июля 1917',r_key='30 Av N W',c_key='R04'}, {segment='Ast',station='Бродвей (линия Астория, Би-эм-ти)',type='o',eng='Broadway',opened='19 июля 1917',r_key='Broadway N W',c_key='R05'}, {segment='Ast',station='36-я авеню (линия Астория, Би-эм-ти)',type='o',eng='36th Avenue',opened='19 июля 1917',r_key='36 Av N W',c_key='R06'}, {segment='Ast',station='39-я авеню (линия Астория, Би-эм-ти)',type='o',eng='39th Avenue',opened='19 июля 1917',r_key='39 Av-Dutch Kills N W',c_key='R08'}, {segment='QBP',station='Куинсборо-Плаза (линия Астория, Би-эм-ти)',eng='Queensboro Plaza',opened='5 ноября 1916',r_key='Queensboro Plaza N W 7',c_key='R09'}, {segment='179',station='Джамейка — 179-я улица (линия Куинс-бульвара, Ай-эн-ди)',type='x',acc='yes',eng='Jamaica–179th Street',opened='10 декабря 1950',r_key='Jamaica-179 St F',c_key='F01'}, {segment='179',station='169-я улица (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='169th Street',opened='24 апреля 1937',r_key='169 St F',c_key='F02'}, {segment='179',station='Парсонс-бульвар (линия Куинс-бульвара, Ай-эн-ди)',type='x',eng='Parsons Boulevard',opened='24 апреля 1937',r_key='Parsons Blvd F',c_key='F03'}, {segment='179',station='Сатфин-бульвар (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='Sutphin Boulevard',opened='24 апреля 1937',r_key='Sutphin Blvd F',c_key='F04'}, {segment='QB West Tip',station='Седьмая авеню (линия Куинс-бульвара, Ай-эн-ди)',north_back=true,eng='Seventh Avenue',opened='19 августа 1933',r_key='7 Av B D E',c_key='D14'}, {segment='QB West Tip',station='50-я улица (линия Куинс-бульвара, Ай-эн-ди)',other_type='o',acc='s',sep='yes',eng='50th Street',opened='10 сентября 1932',r_key='50 St C E',c_key='A25'}, {segment='Eighth 50',station='50-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',acc='s',sep='yes',eng='50th Street',opened='10 сентября 1932',r_key='50 St C E',c_key='A25'}, {segment='Eighth South',station='42-я улица — Автовокзал Портового управления (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='42nd Street–Port Authority Bus Terminal',opened='10 сентября 1932',r_key='Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E',r_ast=true,conn='[[автовокзал Портового управления]]<sup>[[[:en:Port Authority Bus Terminal|en]]]</sup>',c_key='A27'}, {segment='Eighth South',station='34-я улица — Пенсильванский вокзал (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='34th Street–Penn Station',opened='10 сентября 1932',r_key='34 St-Penn Station A C E',conn='[[Пенсильванский вокзал]]',c_key='A28'}, {segment='Eighth South',station='23-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='23rd Street',opened='10 сентября 1932',r_key='23 St C E',c_key='A30'}, {segment='Eighth South',station='14-я улица (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='14th Street',opened='10 сентября 1932',r_key='14 St A C E/8 Av L',r_ast=true,c_key='A31'}, {segment='Eighth South',station='Уэст Четвёртая улица — Вашингтон-сквер (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='West Fourth Street–Washington Square',opened='10 сентября 1932',r_key='West 4 St-Washington Sq A B C D E F M',conn='[[Девятая улица (PATH)]]<sup>[[[:en:9th Street station (PATH)|en]]]</sup>',c_key='A32'}, {segment='Spring Canal',station='Спринг-стрит (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='Spring Street',opened='10 сентября 1932',r_key='Spring St C E',c_key='A33'}, {segment='Spring Canal',station='Канал-стрит (линия Восьмой авеню, Ай-эн-ди)',type='x',subtype='suppress',eng='Canal Street',opened='10 сентября 1932',r_key='Canal St A C E',c_key='A34'}, {segment='WTC',station='Всемирный торговый центр (линия Восьмой авеню, Ай-эн-ди)',acc='yes',subtype='bumper',eng='World Trade Center',opened='10 сентября 1932',r_key='Chambers St A C/WTC E/Park Pl 2 3/Cortlandt R W',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>[[[:en:World Trade Center station (PATH)|en]]]</sup>',c_key='E01'}, {segment='Second',station='96-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='96th Street',opened='1 января 2017',r_key='96 St Q',c_key='Q05'}, {segment='Second',station='86-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='86th Street',opened='1 января 2017',r_key='86 St Q',c_key='Q04'}, {segment='Second',station='72-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='72nd Street',opened='1 января 2017',r_key='72 St Q',c_key='Q03'}, {segment='63 BMT',station='Лексингтон-авеню — 63-я улица (линия 63-й улицы, Би-эм-ти)',acc='yes',eng='Lexington Avenue–63rd Street',opened='29 октября 1989',r_key='Lexington Av-63 St F Q',c_key='B08'}, {segment='7 Sixth',station='Седьмая авеню (линия Шестой авеню, Ай-эн-ди)',eng='Seventh Avenue',opened='19 августа 1933',r_key='7 Av B D E',c_key='D14'}, {segment='63 IND',station='21-я улица — Куинсбридж (линия 63-й улицы, Ай-эн-ди)',acc='yes',eng='21st Street–Queensbridge',opened='29 октября 1989',r_key='21 St-Queensbridge F',c_key='B04'}, {segment='63 IND',station='Остров Рузвельт (линия 63-й улицы, Ай-эн-ди)',acc='yes',eng='Roosevelt Island',opened='29 октября 1989',above='Куинс<hr>Тоннель 63-й улицы<hr>Манхэттен',below='Тоннель 63-й улицы (продолжение)',r_key='Roosevelt Island F',conn='[[Канатная дорога острова Рузвельт]]',c_key='B06'}, {segment='63 IND Lex',station='Лексингтон-авеню — 63-я улица (линия 63-й улицы, Ай-эн-ди)',acc='yes',eng='Lexington Avenue–63rd Street',opened='29 октября 1989',r_key='Lexington Av-63 St F Q',c_key='B08'}, {segment='57',station='57-я улица (линия Шестой авеню, Ай-эн-ди)',eng='57th Street',opened='1 июля 1968',r_key='57 St F',c_key='B10'}, {segment='Bway North',station='Лексингтон-авеню — 59-я улица (линия Бродвея, Би-эм-ти)',eng='Lexington Avenue/59th Street',opened='1 сентября 1919',above='Куинс<hr>Тоннель 60-й улицы<hr>Манхэттен',r_key='Lexington Av N R W/59 St 4 5 6',r_ast=true,conn='[[Канатная дорога острова Рузвельт]]',c_key='R11'}, {segment='Bway North',station='Пятая авеню — 59-я улица (линия Бродвея, Би-эм-ти)',eng='Fifth Avenue/59th Street',opened='1 сентября 1919',r_key='5 Av-59 St N R W',c_key='R13'}, {segment='Bway 57',station='57-я улица — Седьмая авеню (линия Бродвея, Би-эм-ти)',type='x',acc='yes',eng='57th Street–Seventh Avenue',opened='10 июля 1919',r_key='57 St-7 Av N Q R W',c_key='R14'}, {segment='Sixth',station='47-я — 50-я улицы — Рокфеллер-центр (линия Шестой авеню, Ай-эн-ди)',type='x',acc='yes',eng='47th–50th Streets–Rockefeller Center',opened='15 декабря 1940',r_key='47-50 Sts-Rockefeller Center B D F M',c_key='D15'}, {segment='Sixth',station='42-я улица — Брайант-парк (линия Шестой авеню, Ай-эн-ди)',type='x',eng='42nd Street–Bryant Park',opened='15 декабря 1940',r_key='42 St-Bryant Pk B D F M/5 Av 7',r_ast=true,c_key='D16'}, {segment='Sixth',station='34-я улица — Геральд-сквер (линия Шестой авеню, Ай-эн-ди)',type='x',acc='yes',eng='34th Street–Herald Square',opened='15 декабря 1940',r_key='34 St-Herald Sq B D F M N Q R W',r_ast=true,conn='[[33-я улица (PATH)]]<sup>[[[:en:33rd Street station (PATH)|en]]]</sup>',c_key='D17'}, {segment='Sixth',station='23-я улица (линия Шестой авеню, Ай-эн-ди)',type='o',subtype='under',sep='yes',eng='23rd Street',opened='15 декабря 1940',r_key='23 St F M',conn='[[23-я улица (PATH)]]<sup>[[[:en:23rd Street station (PATH)|en]]]</sup>',c_key='D18'}, {segment='Sixth',station='14-я улица (линия Шестой авеню, Ай-эн-ди)',type='o',subtype='under',eng='14th Street',opened='15 декабря 1940',r_key='14 St F M 1 2 3/6 Av L',r_ast=true,conn='[[14-я улица (PATH)]]<sup>[[[:en:14th Street station (PATH)|en]]]</sup>',c_key='D19'}, {segment='Sixth',station='Уэст Четвёртая улица — Вашингтон-сквер (линия Шестой авеню, Ай-эн-ди)',type='x',acc='yes',eng='West Fourth Street–Washington Square',opened='10 сентября 1932',r_key='West 4 St-Washington Sq A B C D E F M',conn='[[Девятая улица (PATH)]]<sup>[[[:en:9th Street station (PATH)|en]]]</sup>',c_key='D20'}, {segment='Broad Laf',station='Бродвей — Лафайетт-стрит (линия Шестой авеню, Ай-эн-ди)',type='x',acc='yes',eng='Broadway–Lafayette Street',opened='1 января 1936',r_key='Broadway-Lafayette St B D F M/Bleecker St 6',r_ast=true,c_key='D21'}, {segment='Grand',station='Гранд-стрит (линия Шестой авеню, Ай-эн-ди)',eng='Grand Street',opened='26 ноября 1967',r_key='Grand St B D',c_key='D22'}, {segment='Cross',station='Корт-сквер (линия Кросстаун, Ай-эн-ди)',eng='Court Square',opened='19 августа 1933',r_key='Court Sq E G M 7',r_ast=true,c_key='G22'}, {segment='Cross',station='21-я улица (линия Кросстаун, Ай-эн-ди)',eng='21st Street',below='Куинс<hr>Тоннель Гринпойнт<hr>Бруклин',opened='19 августа 1933',r_key='21 St G',c_key='G24'}, {segment='Cross',station='Гринпойнт-авеню (линия Кросстаун, Ай-эн-ди)',acc='yes',eng='Greenpoint Avenue',opened='19 августа 1933',r_key='Greenpoint Av G',c_key='G26'}, {segment='Cross',station='Нассо-авеню (линия Кросстаун, Ай-эн-ди)',eng='Nassau Avenue',opened='19 августа 1933',r_key='Nassau Av G',c_key='G28'}, {segment='Cross',station='Метрополитан-авеню (линия Кросстаун, Ай-эн-ди)',eng='Metropolitan Avenue',opened='1 июля 1937',r_key='Lorimer St L/Metropolitan Av G',r_ast=true,c_key='G29'}, {segment='Cross',station='Бродвей (линия Кросстаун, Ай-эн-ди)',eng='Broadway',opened='1 июля 1937',r_key='Broadway G',c_key='G30'}, {segment='Cross',station='Флашинг-авеню (линия Кросстаун, Ай-эн-ди)',sep='yes',eng='Flushing Avenue',opened='1 июля 1937',r_key='Flushing Av G',c_key='G31'}, {segment='Cross',station='Мертл-авеню — Уиллоби-авеню (линия Кросстаун, Ай-эн-ди)',eng='Myrtle–Willoughby Avenues',opened='1 июля 1937',r_key='Myrtle-Willoughby Avs G',c_key='G32'}, {segment='Cross',station='Бедфорд-авеню — Ностранд-авеню (линия Кросстаун, Ай-эн-ди)',eng='Bedford–Nostrand Avenues',opened='1 июля 1937',r_key='Bedford-Nostrand Avs G',c_key='G33'}, {segment='Cross',station='Клоссон-авеню (линия Кросстаун, Ай-эн-ди)',eng='Classon Avenue',opened='1 июля 1937',r_key='Classon Av G',c_key='G34'}, {segment='Cross',station='Клинтон-авеню — Вашингтон-авеню (линия Кросстаун, Ай-эн-ди)',eng='Clinton–Washington Avenues',opened='1 июля 1937',r_key='Clinton-Washington Avs G',c_key='G35'}, {segment='Cross',station='Фултон-стрит (линия Кросстаун, Ай-эн-ди)',eng='Fulton Street',opened='1 июля 1937',r_key='Fulton St G',c_key='G36'}, {segment='Cross',station='Хойт-стрит — Скермерхорн-стрит (линия Кросстаун, Ай-эн-ди)',north_back=true,eng='Hoyt–Schermerhorn Streets',opened='9 апреля 1936',r_key='Hoyt-Schermerhorn Sts A C G',c_key='A42'}, {segment='Eighth South Tip',station='Чеймберс-стрит (линия Восьмой авеню, Ай-эн-ди)',eng='Chambers Street',opened='10 сентября 1932',r_key='Chambers St A C/WTC E/Park Pl 2 3/Cortlandt R W',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>[[[:en:World Trade Center station (PATH)|en]]]</sup>',c_key='A36'}, {segment='Eighth South Tip',station='Фултон-стрит (линия Восьмой авеню, Ай-эн-ди)',acc='yes',eng='Fulton Street',opened='1 февраля 1933',below='Манхэттен<hr>Тоннель Кранберри-стрит<hr>Бруклин',r_key='Fulton St A C J Z 2 3 4 5',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>[[[:en:World Trade Center station (PATH)|en]]]</sup>',c_key='A38'}, {segment='Eighth South Tip',station='Хай-стрит (линия Восьмой авеню, Ай-эн-ди)',eng='High Street',opened='24 июня 1933',r_key='High St A C',c_key='A40'}, {segment='Jay F',station='Джей-стрит — Метротек (линия Фултон-стрит, Ай-эн-ди)',acc='yes',eng='Jay Street–MetroTech',opened='1 февраля 1933',r_key='Jay St-MetroTech A C F R',r_ast=true,c_key='A41', info='С 1933 года станция имела пересадку на снесённую ныне станцию [[Бридж-стрит — Джей-стрит (линия Мертл-авеню, Би-эм-ти)|Бридж-стрит — Джей-стрит]]<sup>[[[:en:Bridge–Jay Streets station|en]]]</sup>.'}, {segment='Fulton',station='Хойт-стрит — Скермерхорн-стрит (линия Фултон-стрит, Ай-эн-ди)',type='x',eng='Hoyt–Schermerhorn Streets',opened='9 апреля 1936',r_key='Hoyt-Schermerhorn Sts A C G',c_key='A42'}, {segment='Fulton',station='Лафайетт-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',sep='yes',eng='Lafayette Avenue',opened='9 апреля 1936',r_key='Lafayette Av C',c_key='A43'}, {segment='Fulton',station='Клинтон-авеню — Вашингтон-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',sep='yes',eng='Clinton–Washington Avenues',opened='9 апреля 1936',r_key='Clinton-Washington Avs C',c_key='A44'}, {segment='Fulton',station='Франклин-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',acc='yes',eng='Franklin Avenue',opened='9 апреля 1936',r_key='Franklin Av C S',r_ast=true,c_key='A45'}, {segment='Fulton',station='Ностранд-авеню (линия Фултон-стрит, Ай-эн-ди)',type='x',eng='Nostrand Avenue',opened='9 апреля 1936',r_key='Nostrand Av A C',c_key='A46'}, {segment='Fulton',station='Кингстон-авеню — Труп-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',sep='yes',eng='Kingston–Throop Avenues',opened='9 апреля 1936',r_key='Kingston-Throop Avs C',c_key='A47'}, {segment='Fulton',station='Ютика-авеню (линия Фултон-стрит, Ай-эн-ди)',type='x',acc='yes',eng='Utica Avenue',opened='9 апреля 1936',r_key='Utica Av A C',c_key='A48'}, {segment='Fulton',station='Ральф-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='Ralph Avenue',opened='9 апреля 1936',r_key='Ralph Av C',c_key='A49'}, {segment='Fulton',station='Рокавей-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='Rockaway Avenue',opened='9 апреля 1936',r_key='Rockaway Av C',c_key='A50'}, {segment='Fulton',station='Бродвей-Джанкшен (линия Фултон-стрит, Ай-эн-ди)',type='x',eng='Broadway Junction',opened='30 декабря 1946',r_key='Broadway Junction A C J L Z',r_ast=true,c_key='A51'}, {segment='Fulton',station='Либерти-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='Liberty Avenue',opened='28 ноября 1948',r_key='Liberty Av C',c_key='A52'}, {segment='Fulton',station='Ван-Сиклен-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='Van Siclen Avenue',opened='28 ноября 1948',r_key='Van Siclen Av C',c_key='A53'}, {segment='Fulton',station='Шеперд-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='Shepherd Avenue',opened='28 ноября 1948',r_key='Shepherd Av C',c_key='A54'}, {segment='Euclid',station='Юклид-авеню (линия Фултон-стрит, Ай-эн-ди)',type='x',acc='yes',eng='Euclid Avenue',opened='28 ноября 1948',r_key='Euclid Av A C',c_key='A55'}, {segment='Culver North Tip',station='Вторая авеню (линия Шестой авеню, Ай-эн-ди)',eng='Second Avenue',opened='1 января 1936',r_key='2 Av F',c_key='F14'}, {segment='Culver North Tip',station='Деланси-стрит (линия Шестой авеню, Ай-эн-ди)',eng='Delancey Street',opened='1 января 1936',r_key='Delancey St F/Essex St J M Z',r_ast=true,c_key='F15'}, {segment='Culver North Tip',station='Ист-Бродвей (линия Шестой авеню, Ай-эн-ди)',eng='East Broadway',opened='1 января 1936',below='Манхэттен<hr>Тоннель Ратджерс-стрит<hr>Бруклин',r_key='East Broadway F',c_key='F16'}, {segment='Culver North Tip',station='Йорк-стрит (линия Шестой авеню, Ай-эн-ди)',eng='York Street',opened='9 апреля 1936',r_key='York St F',c_key='F18'}, {segment='Jay',station='Джей-стрит — Метротек (линия Калвер, Ай-эн-ди)',acc='yes',eng='Jay Street–MetroTech',opened='1 февраля 1933',r_key='Jay St-MetroTech A C F R',r_ast=true,c_key='A41', info='С 1933 года станция имела пересадку на снесённую ныне станцию [[Бридж-стрит — Джей-стрит (линия Мертл-авеню, Би-эм-ти)|Бридж-стрит — Джей-стрит]]<sup>[[[:en:Bridge–Jay Streets station|en]]]</sup>.'}, {segment='Culver North',station='Берген-стрит (линия Калвер, Ай-эн-ди)',type='o',sep='yes',eng='Bergen Street',opened='20 марта 1933',r_key='Bergen St F G',c_key='F20'}, {segment='Culver North',station='Карролл-стрит (линия Калвер, Ай-эн-ди)',type='o',eng='Carroll Street',opened='7 октября 1933',r_key='Carroll St F G',c_key='F21'}, {segment='Culver North',station='Смит-стрит — Девятая улица (линия Калвер, Ай-эн-ди)',type='o',eng='Smith–Ninth Streets',opened='7 октября 1933',r_key='Smith-9 Sts F G',c_key='F22'}, {segment='Culver North',station='Четвёртая авеню (линия Калвер, Ай-эн-ди)',type='o',eng='Fourth Avenue',opened='7 октября 1933',r_key='4 Av F G/9 St R',r_ast=true,c_key='F23'}, {segment='Culver North',station='Седьмая авеню (линия Калвер, Ай-эн-ди)',type='x',eng='Seventh Avenue',opened='7 октября 1933',r_key='7 Av F G',c_key='F24'}, {segment='Culver North',station='15-я улица — Проспект-парк (линия Калвер, Ай-эн-ди)',type='o',subtype='split',eng='15th Street–Prospect Park',opened='7 октября 1933',r_key='15 St-Prospect Park F G',c_key='F25'}, {segment='Culver North',station='Форт-Гамильтон-Паркуэй (линия Калвер, Ай-эн-ди)',type='o',subtype='under',eng='Fort Hamilton Parkway',opened='7 октября 1933',r_key='Fort Hamilton Pkwy F G',c_key='F26'}, {segment='Culver North',station='Черч-авеню (линия Калвер, Ай-эн-ди)',type='x',acc='yes',eng='Church Avenue',opened='7 октября 1933', below_stub='+w',below_stub_text='Примыкал ныне снесённый челнок Калвера (см. ниже)',r_key='Church Av F G',c_key='F27'}, {segment='Culver Middle',station='Дитмас-авеню (линия Калвер, Ай-эн-ди)',type='o',eng='Ditmas Avenue',opened='16 июля 1919',r_key='Ditmas Av F',c_key='F29'}, {segment='Culver Middle',station='18-я авеню (линия Калвер, Ай-эн-ди)',type='x',eng='18th Avenue',opened='16 марта 1919',r_key='18 Av F',c_key='F30'}, {segment='Culver',station='Авеню Ай (линия Калвер, Ай-эн-ди)',type='o',eng='Avenue I',opened='16 марта 1919',r_key='Avenue I F',c_key='F31'}, {segment='Culver',station='Бей-Паркуэй (линия Калвер, Ай-эн-ди)',type='o',eng='Bay Parkway',opened='16 марта 1919',r_key='Bay Pkwy F',c_key='F32'}, {segment='Culver',station='Авеню Эн (линия Калвер, Ай-эн-ди)',type='o',eng='Avenue N',opened='16 марта 1919',r_key='Avenue N F',c_key='F33'}, {segment='Culver',station='Авеню Пи (линия Калвер, Ай-эн-ди)',type='o',eng='Avenue P',opened='16 марта 1919',r_key='Avenue P F',c_key='F34'}, {segment='Culver 1',station='Кингс-Хайвей (линия Калвер, Ай-эн-ди)',type='x',eng='Kings Highway',opened='19 марта 1919',r_key='Kings Hwy F',c_key='F35'}, {segment='Culver 2',station='Авеню Ю (линия Калвер, Ай-эн-ди)',type='o',eng='Avenue U',opened='10 мая 1919',r_key='Avenue U F',c_key='F36'}, {segment='Culver 2',station='Авеню Экс (линия Калвер, Ай-эн-ди)',type='o',eng='Avenue X',opened='10 мая 1919',r_key='Avenue X F',c_key='F38'}, {segment='Culver 2',station='Нептьюн-авеню (линия Калвер, Ай-эн-ди)',type='x',eng='Neptune Avenue',opened='1 мая 1920',r_key='Neptune Av F',c_key='F39'}, {segment='Culver 2',station='Уэст Восьмая улица — Нью-Йоркский аквариум (линия Калвер, Ай-эн-ди)',type='x',eng='West Eighth Street–New York Aquarium',opened='19 мая 1919',r_key='West 8 St-New York Aquarium F Q',c_key='D42'}, {segment='Culver 2',station='Кони-Айленд — Стилуэлл-авеню (линия Калвер, Ай-эн-ди)',type='x',acc='yes',north_back=true,eng='Coney Island–Stillwell Avenue',opened='19 мая 1919',r_key='Coney Island-Stillwell Av D F N Q',c_key='D43'}, {segment='Rock North',station='Акуидакт-Рейстрак (линия Рокавей, Ай-эн-ди)',acc='yes',note='↑',eng='Aqueduct Racetrack',opened='28 июня 1956',orig='1880',r_key='Aqueduct Racetrack A',c_key='H01'}, {segment='Rock North',station='Акуидакт — Норт-Кондуит-авеню (линия Рокавей, Ай-эн-ди)',eng='Aqueduct–North Conduit Avenue',opened='28 июня 1956',orig='1883',r_key='Aqueduct-North Conduit Av A',c_key='H02'}, {segment='Rock North',station='Хауард-Бич — Аэропорт имени Джона Кеннеди (линия Рокавей, Ай-эн-ди)',acc='yes',eng='Howard Beach–JFK Airport',opened='28 июня 1956',orig='1913',r_key='Howard Beach-JFK Airport A',conn='[[AirTrain JFK]]<sup>[[[:en:AirTrain JFK|en]]]</sup>',c_key='H03'}, {segment='BChan',station='Брод-Чаннел (линия Рокавей, Ай-эн-ди)',eng='Broad Channel',opened='28 июня 1956',orig='1880',r_key='Broad Channel A S',c_key='H04'}, {segment='Rock West',station='Бич 90-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 90th Street',opened='28 июня 1956',orig='1880',r_key='Beach 90 St A S',c_key='H12'}, {segment='Rock West',station='Бич 98-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 98th Street',opened='28 июня 1956',orig='1903',r_key='Beach 98 St A S',c_key='H13'}, {segment='Rock West',station='Бич 105-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 105th Street',opened='28 июня 1956',orig='1880',r_key='Beach 105 St A S',c_key='H14'}, {segment='Rock West',station='Рокавей-парк — Бич 116-я улица (линия Рокавей, Ай-эн-ди)',acc='yes',subtype='bumper',eng='Rockaway Park–Beach 116th Street',opened='28 июня 1956',orig='1882',r_key='Rockaway Park-Beach 116 St A S',c_key='H15'}, {segment='Fulton East',station='Грант-авеню (линия Фултон-стрит, Ай-эн-ди)',eng='Grant Avenue',old='-',opened='29 апреля 1956', below_stub='+w',below_stub_text='Примыкала [[линия Фултон-стрит, Би-эм-ти]]',r_key='Grant Av A',c_key='A57'}, {segment='Fulton East',station='80-я улица (линия Фултон-стрит, Ай-эн-ди)',oldtype='o',eng='80th Street', old='Хадсон-стрит — 80-я улица',oldeng='Hudson Street–80th Street',above='Бруклин<hr>Куинс',opened='25 сентября 1915',r_key='80 St A',c_key='A59'}, {segment='Fulton East',station='88-я улица (линия Фултон-стрит, Ай-эн-ди)',eng='88th Street',old='Бойд-авеню — 88-я улица',oldeng='Boyd Avenue–88th Street',opened='25 сентября 1915',r_key='88 St A',c_key='A60'}, {segment='Rock Blvd',station='Рокавей-бульвар (линия Фултон-стрит, Ай-эн-ди)',eng='Rockaway Boulevard',opened='25 сентября 1915',r_key='Rockaway Blvd A',c_key='A61'}, {segment='Fulton East Tip',station='104-я улица (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='104th Street',old='Оксфорд-авеню — 104-я улица',oldeng='Oxford Avenue–104th Street',opened='25 сентября 1915',r_key='104 St A',c_key='A63'}, {segment='Fulton East Tip',station='111-я улица (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='111th Street',old='Гринвуд-авеню — 111-я улица',oldeng='Greenwood Avenue–111th Street',opened='25 сентября 1915',r_key='111 St A',c_key='A64'}, {segment='Fulton East Tip',station='Озон-парк — Леффертс-бульвар (линия Фултон-стрит, Ай-эн-ди)',acc='yes',type='x',subtype='bumper',eng='Ozone Park–Lefferts Boulevard',old='Леффертс-авеню — 119-я улица',oldeng='Lefferts Avenue–119th Street',opened='25 сентября 1915',r_key='Ozone Park-Lefferts Blvd A',c_key='A65'}, {segment='Rock East',station='Бич 67-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 67th Street',opened='28 июня 1956',orig='1888',r_key='Beach 67 St-Arverne By The Sea A',c_key='H06'}, {segment='Rock East',station='Бич 60-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 60th Street',opened='28 июня 1956',orig='1892',r_key='Beach 60 St A',c_key='H07'}, {segment='Rock East',station='Бич 44-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 44th Street',opened='28 июня 1956',orig='1922',r_key='Beach 44 St A',c_key='H08'}, {segment='Rock East',station='Бич 36-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 36th Street',opened='28 июня 1956',orig='1885',r_key='Beach 36 St A',c_key='H09'}, {segment='Rock East',station='Бич 25-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 25th Street',opened='28 июня 1956',orig='1928',r_key='Beach 25 St A',c_key='H10'}, {segment='Rock East',station='Фар-Рокавей — Мотт-авеню (линия Рокавей, Ай-эн-ди)',acc='yes',subtype='bumper',eng='Far Rockaway–Mott Avenue',opened='16 января 1958',orig='1869',r_key='Far Rockaway-Mott Av A',conn='[[Фар-Рокавей (LIRR)]]<sup>[[[:en:Far Rockaway station (LIRR)|en]]]</sup>',c_key='H11'}, {segment='SB',station='Восьмая авеню (линия Си-Бич, Би-эм-ти)',type='o',acc='n',eng='Eighth Avenue',opened='22 июня 1915',r_key='8 Av N',c_key='N02'}, {segment='SB',station='Форт-Гамильтон-Паркуэй (линия Си-Бич, Би-эм-ти)',type='o',eng='Fort Hamilton Parkway',opened='22 июня 1915',r_key='Fort Hamilton Pkwy N',c_key='N03'}, {segment='SB',station='Нью-Ютрект-авеню (линия Си-Бич, Би-эм-ти)',type='o',acc='yes',eng='New Utrecht Avenue',opened='22 июня 1915',r_key='New Utrecht Av N/62 St D',r_ast=true,c_key='N04'}, {segment='SB',station='18-я авеню (линия Си-Бич, Би-эм-ти)',type='o',eng='18th Avenue',opened='22 июня 1915',r_key='18 Av N',c_key='N05'}, {segment='SB',station='20-я авеню (линия Си-Бич, Би-эм-ти)',type='o',eng='20th Avenue',opened='22 июня 1915',r_key='20 Av N',c_key='N06'}, {segment='SB',station='Бей-Паркуэй (линия Си-Бич, Би-эм-ти)',type='o',eng='Bay Parkway',opened='22 июня 1915',r_key='Bay Pkwy N',c_key='N07'}, {segment='SB',station='Кингс-Хайвей (линия Си-Бич, Би-эм-ти)',type='o',eng='Kings Highway',opened='22 июня 1915',r_key='Kings Hwy N',c_key='N08'}, {segment='SB',station='Авеню Ю (линия Си-Бич, Би-эм-ти)',type='o',eng='Avenue U',opened='22 июня 1915',r_key='Avenue U N',c_key='N09'}, {segment='SB',station='86-я улица (линия Си-Бич, Би-эм-ти)',type='o',eng='86th Street',opened='23 августа 1915',r_key='86 St N',c_key='N10'}, {segment='SB South',station='Кони-Айленд — Стилуэлл-авеню (линия Си-Бич, Би-эм-ти)',type='x',acc='yes',eng='Coney Island–Stillwell Avenue',opened='19 мая 1919',r_key='Coney Island-Stillwell Av D F N Q',c_key='D43'}, {segment='Arch IND',station='Джамейка-Сентер — Парсонс — Арчер (линия Арчер-авеню, Ай-эн-ди)',acc='yes',eng='Jamaica Center–Parsons/Archer',opened='11 декабря 1988',r_key='Jamaica Center-Parsons-Archer E J Z',c_key='G05'}, {segment='Arch IND',station='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (линия Арчер-авеню, Ай-эн-ди)',acc='yes',eng='Sutphin Boulevard–Archer Avenue–JFK Airport',opened='11 декабря 1988',r_key='Sutphin Blvd-Archer Av-JFK Airport E J Z',conn='[[AirTrain JFK]]<sup>[[[:en:AirTrain JFK|en]]]</sup>, [[Джамейка (LIRR)]]<sup>[[[:en:Jamaica station|en]]]</sup>',br='Сатфин-бульвар — Арчер-авеню —<br>Аэропорт имени Джона Кеннеди',c_key='G06'}, {segment='Arch IND VW',station='Джамейка — Ван-Уайк (линия Арчер-авеню, Ай-эн-ди)',acc='yes',eng='Jamaica–Van Wyck',opened='11 декабря 1988',r_key='Jamaica-Van Wyck E',c_key='G07'}, {segment='QB East',station='Брайарвуд (линия Куинс-бульвара, Ай-эн-ди)',type='o',sep='yes',eng='Briarwood',opened='24 апреля 1937',r_key='Briarwood-Van Wyck Blvd E F',c_key='F05'}, {segment='QB East',station='Кью-Гарденс — Юнион-Тернпайк (линия Куинс-бульвара, Ай-эн-ди)',type='x',acc='yes',eng='Kew Gardens–Union Turnpike',opened='31 декабря 1936',r_key='Kew Gardens-Union Turnpike E F',c_key='F06'}, {segment='QB East',station='75-я авеню (линия Куинс-бульвара, Ай-эн-ди)',type='o',sep='yes',eng='75th Avenue',opened='31 декабря 1936', below_stub='+w',below_stub_text='Примыкала [[Линия Всемирной выставки, Ай-эн-ди|линия Всемирной выставки]]',r_key='75 Av E F',c_key='F07'}, {segment='QB',station='Форест-Хилс — 71-я авеню (линия Куинс-бульвара, Ай-эн-ди)',type='x',acc='yes',eng='Forest Hills–71st Avenue',opened='31 декабря 1936',r_key='Forest Hills-71 Av E F M R',c_key='G08'}, {segment='QB',station='67-я авеню (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='67th Avenue',opened='31 декабря 1936',r_key='67 Av M R',c_key='G09'}, {segment='QB',station='63-я драйв — Риго-парк (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='63rd Drive–Rego Park',opened='31 декабря 1936',r_key='63 Dr-Rego Park M R',c_key='G10'}, {segment='QB',station='Вудхейвен-бульвар (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='Woodhaven Boulevard',opened='31 декабря 1936',r_key='Woodhaven Blvd M R',c_key='G11'}, {segment='QB',station='Гранд-авеню — Ньютаун (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='Grand Avenue–Newtown',opened='31 декабря 1936',r_key='Grand Av-Newtown M R',c_key='G12'}, {segment='QB',station='Элмхерст-авеню (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='Elmhurst Avenue',opened='31 декабря 1936',r_key='Elmhurst Av M R',c_key='G13'}, {segment='QB',station='Джексон-Хайтс — Рузвельт-авеню (линия Куинс-бульвара, Ай-эн-ди)',type='x',acc='yes',eng='Jackson Heights–Roosevelt Avenue',opened='19 августа 1933',r_key='74-Broadway 7/Jackson Hts-Roosevelt Av E F M R',r_ast=true,c_key='G14'}, {segment='QB',station='65-я улица (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='65th Street',opened='19 августа 1933',r_key='65 St M R',c_key='G15'}, {segment='QB',station='Нортерн-бульвар (линия Куинс-бульвара, Ай-эн-ди)',type='o',subtype='under',sep='yes',eng='Northern Boulevard',opened='19 августа 1933',r_key='Northern Blvd M R',c_key='G16'}, {segment='QB',station='46-я улица (линия Куинс-бульвара, Ай-эн-ди)',type='o',subtype='split',sep='yes',eng='46th Street',opened='19 августа 1933',r_key='46 St M R',c_key='G18'}, {segment='QB',station='Стайнуэй-стрит (линия Куинс-бульвара, Ай-эн-ди)',type='o',subtype='split',eng='Steinway Street',opened='19 августа 1933',r_key='Steinway St M R',c_key='G19'}, {segment='QB',station='36-я улица (линия Куинс-бульвара, Ай-эн-ди)',type='o',sep='yes',eng='36th Street',opened='19 августа 1933',r_key='36 St M R',c_key='G20'}, {segment='QP',station='Куинс-Плаза (линия Куинс-бульвара, Ай-эн-ди)',type='x',subtype='suppress',acc='yes',eng='Queens Plaza',opened='19 августа 1933',r_key='Queens Plaza E M R',c_key='G21'}, {segment='Arch BMT',station='Джамейка-Сентер — Парсонс — Арчер (линия Арчер-авеню, Би-эм-ти)',acc='yes',eng='Jamaica Center–Parsons/Archer',opened='11 декабря 1988',r_key='Jamaica Center-Parsons-Archer E J Z',c_key='G05'}, {segment='Arch BMT',station='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (линия Арчер-авеню, Би-эм-ти)',acc='yes',eng='Sutphin Boulevard–Archer Avenue–JFK Airport',opened='11 декабря 1988',r_key='Sutphin Blvd-Archer Av-JFK Airport E J Z',conn='[[AirTrain JFK]]<sup>[[[:en:AirTrain JFK|en]]]</sup>, [[Джамейка (LIRR)]]<sup>[[[:en:Jamaica station|en]]]</sup>',br='Сатфин-бульвар — Арчер-авеню —<br>Аэропорт имени Джона Кеннеди',c_key='G06'}, {segment='Jam East',station='121-я улица (линия Джамейка, Би-эм-ти)',type='Z',eng='121st Street',old='-',opened='3 июля 1918',r_key='121 St J Z',c_key='J12'}, {segment='Jam East',station='111-я улица (линия Джамейка, Би-эм-ти)',type='J',eng='111th Street',old='-',opened='11 июня 1917',r_key='111 St J',c_key='J13'}, {segment='Jam East',station='104-я улица (линия Джамейка, Би-эм-ти)',type='Z',eng='104th Street',old='-',opened='11 июня 1917',r_key='104 St J Z',c_key='J14'}, {segment='Jam East',station='Вудхейвен-бульвар (линия Джамейка, Би-эм-ти)',type='x',subtype='suppress',eng='Woodhaven Boulevard',old='-',opened='11 июня 1917',r_key='Woodhaven Blvd J Z',c_key='J15'}, {segment='Jam East',station='85-я улица — Форест-Паркуэй (линия Джамейка, Би-эм-ти)',type='J',eng='85th Street–Forest Parkway',old='-',opened='11 июня 1917',r_key='85 St-Forest Pkwy J',c_key='J16'}, {segment='Jam East',station='75-я улица — Элдертс-Лейн (линия Джамейка, Би-эм-ти)',type='Z',eng='75th Street–Elderts Lane',old='-',below='Куинс<hr>Бруклин',opened='11 июня 1917',r_key='75 St-Elderts Ln J Z',c_key='J17'}, {segment='Jam East',station='Сайпресс-Хилс (линия Джамейка, Би-эм-ти)',type='J',eng='Cypress Hills',opened='30 мая 1893',r_key='Cypress Hills J',c_key='J19'}, {segment='Jam East',station='Кресент-стрит (линия Джамейка, Би-эм-ти)',type='x',subtype='suppress',eng='Crescent Street',opened='30 мая 1893',r_key='Crescent St J Z',c_key='J20'}, {segment='Jam East',station='Норвуд-авеню (линия Джамейка, Би-эм-ти)',type='Z',eng='Norwood Avenue',opened='30 мая 1893',r_key='Norwood Av J Z',c_key='J21'}, {segment='Jam East',station='Кливленд-стрит (линия Джамейка, Би-эм-ти)',type='J',eng='Cleveland Street',opened='30 мая 1893',r_key='Cleveland St J',c_key='J22'}, {segment='Jam East',station='Ван-Сиклен-авеню (линия Джамейка, Би-эм-ти)',type='Z',eng='Van Siclen Avenue',opened='3 декабря 1885',r_key='Van Siclen Av J Z',c_key='J23'}, {segment='Jam East',station='Алабама-авеню (линия Джамейка, Би-эм-ти)',type='x',subtype='suppress',eng='Alabama Avenue',opened='5 сентября 1885',r_key='Alabama Av J',c_key='J24'}, {segment='Jam BJ',station='Бродвей-Джанкшен (линия Джамейка, Би-эм-ти)',type='x',subtype='suppress',north_back=true,eng='Broadway Junction',old='Истерн-Паркуэй',oldeng='Eastern Parkway',opened='14 июня 1885',r_key='Broadway Junction A C J L Z',r_ast=true,c_key='J27', transfer='была пересадка на станцию [[Бродвей-Джанкшен (линия Канарси, Би-эм-ти)|Бродвей-Джанкшен]]<br>(действующая и сегодня) и на снесённую ныне<br>станцию [[Манхэттен-Джанкшен (линия Фултон-стрит, Би-эм-ти)|Манхэттен-Джанкшен]]<sup>[[[:en:Manhattan Junction (BMT Fulton Street Line)|en]]]</sup>', info='Станция имела пересадку на снесённую ныне станцию [[Манхэттен-Джанкшен (линия Фултон-стрит, Би-эм-ти)|Манхэттен-Джанкшен]]<sup>[[[:en:Manhattan Junction (BMT Fulton Street Line)|en]]]</sup>.'}, {segment='Jam',station='Чонси-стрит (линия Джамейка, Би-эм-ти)',type='Z',oldtype='o',eng='Chauncey Street',opened='18 июля 1885',r_key='Chauncey St J Z',c_key='J28'}, {segment='Jam',station='Холси-стрит (линия Джамейка, Би-эм-ти)',type='J',oldtype='o',eng='Halsey Street',opened='19 августа 1885',r_key='Halsey St J',c_key='J29'}, {segment='Jam',station='Гейтс-авеню (линия Джамейка, Би-эм-ти)',type='Z',oldtype='o',eng='Gates Avenue',opened='13 мая 1885', below_stub='-e',below_stub_text='Ответвлялась [[линия Лексингтон-авеню, Би-эм-ти]]',r_key='Gates Av J Z',c_key='J30'}, {segment='Jam',station='Косцюшко-стрит (линия Джамейка, Би-эм-ти)',type='J',oldtype='o',eng='Kosciuszko Street',old='-',opened='22 июня 1888',r_key='Kosciuszko St J',c_key='J31'}, {segment='QB West',station='Корт-сквер — 23-я улица (линия Куинс-бульвара, Ай-эн-ди)',acc='s',eng='Court Square–23rd Street',opened='28 августа 1939',below='Куинс<hr>Тоннель 53-й улицы<hr>Манхэттен',r_key='Court Sq E G M 7',r_ast=true,c_key='F09'}, {segment='QB West',station='Лексингтон-авеню — 53-я улица (линия Куинс-бульвара, Ай-эн-ди)',acc='yes',eng='Lexington Avenue–53rd Street',opened='19 августа 1933',r_key='Lexington Av-53 St E M/51 St 6',r_ast=true,c_key='F11'}, {segment='QB West',station='Пятая авеню — 53-я улица (линия Куинс-бульвара, Ай-эн-ди)',eng='Fifth Avenue/53rd Street',opened='19 августа 1933',r_key='5 Av-53 St E M',c_key='F12'}, {segment='Bway 49',station='49-я улица (линия Бродвея, Би-эм-ти)',type='o',acc='n',sep='yes',eng='49th Street',opened='10 июля 1919',r_key='49 St N R W',c_key='R15'}, {segment='Bway',station='Таймс-сквер — 42-я улица (линия Бродвея, Би-эм-ти)',type='x',acc='yes',eng='Times Square–42nd Street',opened='5 января 1918',r_key='Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E',r_ast=true,conn='[[автовокзал Портового управления]]<sup>[[[:en:Port Authority Bus Terminal|en]]]</sup>',c_key='R16'}, {segment='Bway',station='34-я улица — Геральд-сквер (линия Бродвея, Би-эм-ти)',type='x',acc='yes',eng='34th Street–Herald Square',opened='5 января 1918',r_key='34 St-Herald Sq B D F M N Q R W',r_ast=true,conn='[[33-я улица (PATH)]]<sup>[[[:en:33rd Street station (PATH)|en]]]</sup>',c_key='R17'}, {segment='Bway',station='28-я улица (линия Бродвея, Би-эм-ти)',type='o',sep='yes',eng='28th Street',opened='5 января 1918',r_key='28 St R W',c_key='R18'}, {segment='Bway',station='23-я улица (линия Бродвея, Би-эм-ти)',type='o',sep='yes',eng='23rd Street',opened='5 января 1918',r_key='23 St R W',c_key='R19'}, {segment='Bway',station='14-я улица — Юнион-сквер (линия Бродвея, Би-эм-ти)',type='x',acc='yes',eng='14th Street–Union Square',opened='4 сентября 1917',r_key='14 St-Union Sq L N Q R W 4 5 6',r_ast=true,c_key='R20'}, {segment='Bway',station='Восьмая улица — Нью-Йоркский университет (линия Бродвея, Би-эм-ти)',type='o',sep='yes',eng='Eighth Street–New York University',opened='4 сентября 1917',r_key='8 St-New York University R W',c_key='R21'}, {segment='Bway',station='Принс-стрит (линия Бродвея, Би-эм-ти)',type='o',sep='yes',eng='Prince Street',opened='4 сентября 1917',r_key='Prince St R W',c_key='R22'}, {segment='Myrtle',station='Мидл-Виллидж — Метрополитан-авеню (линия Мертл-авеню, Би-эм-ти)',acc='yes',subtype='bumper',eng='Middle Village–Metropolitan Avenue',opened='9 августа 1915',r_key='Middle Village-Metropolitan Av M',c_key='M01'}, {segment='Myrtle',station='Фреш-Понд-роуд (линия Мертл-авеню, Би-эм-ти)',eng='Fresh Pond Road',opened='9 августа 1915',r_key='Fresh Pond Rd M',c_key='M04'}, {segment='Myrtle',station='Форест-авеню (линия Мертл-авеню, Би-эм-ти)',eng='Forest Avenue',opened='9 августа 1915',r_key='Forest Av M',c_key='M05'}, {segment='Myrtle',station='Сенека-авеню (линия Мертл-авеню, Би-эм-ти)',eng='Seneca Avenue',below='Куинс<hr>Бруклин',opened='9 августа 1915',r_key='Seneca Av M',c_key='M06'}, {segment='Myrtle',station='Мертл-авеню — Уайкофф-авеню (линия Мертл-авеню, Би-эм-ти)',acc='yes',eng='Myrtle–Wyckoff Avenues',opened='19 декабря 1889',r_key='Myrtle-Wyckoff Avs L M',r_ast=true,c_key='M08'}, {segment='Myrtle',station='Никкербоккер-авеню (линия Мертл-авеню, Би-эм-ти)',eng='Knickerbocker Avenue',opened='19 декабря 1889',r_key='Knickerbocker Av M',c_key='M09'}, {segment='Myrtle',station='Сентрал-авеню (линия Мертл-авеню, Би-эм-ти)',eng='Central Avenue',opened='19 декабря 1889',r_key='Central Av M',c_key='M10'}, {segment='Myrtle Av',station='Мертл-авеню (линия Джамейка, Би-эм-ти)',type='x',subtype='bidi',eng='Myrtle Avenue',opened='25 июня 1888',r_key='Myrtle Av J M Z',c_key='M11', info='Верхний уровень станции, закрытый ныне, был станцией «Бродвей» на продолжении [[Линия Мертл-авеню, Би-эм-ти|линии Мертл-авеню]] на юг.'}, {segment='Jam West',station='Флашинг-авеню (линия Джамейка, Би-эм-ти)',type='o',acc='yes',eng='Flushing Avenue',opened='25 июня 1888',r_key='Flushing Av J M',c_key='M12'}, {segment='Jam West',station='Лоример-стрит (линия Джамейка, Би-эм-ти)',type='o',eng='Lorimer Street',opened='25 июня 1888',r_key='Lorimer St J M',c_key='M13'}, {segment='Jam West',station='Хьюс-стрит (линия Джамейка, Би-эм-ти)',type='o',eng='Hewes Street',opened='25 июня 1888',r_key='Hewes St J M',c_key='M14'}, {segment='Jam West',station='Марси-авеню (линия Джамейка, Би-эм-ти)',type='x',subtype='suppress',acc='yes',sep='yes',eng='Marcy Avenue',opened='25 июня 1888',r_key='Marcy Av J M Z',c_key='M16'}, {segment='Essex',station='Эссекс-стрит (линия Нассо-стрит, Би-эм-ти)',north_back=true,eng='Essex Street',opened='16 сентября 1908',above='Бруклин<hr>[[Вильямсбургский мост]]<hr>Манхэттен',r_key='Delancey St F/Essex St J M Z',r_ast=true,c_key='M18'}, {segment='Nassau',station='Бауэри (линия Нассо-стрит, Би-эм-ти)',eng='Bowery',opened='4 августа 1913',r_key='Bowery J Z',c_key='M19'}, {segment='Nassau',station='Канал-стрит (линия Нассо-стрит, Би-эм-ти)',eng='Canal Street',opened='4 августа 1913',r_key='Canal St J N Q R W Z 6',r_ast=true,c_key='M20'}, {segment='Nassau',station='Чеймберс-стрит (линия Нассо-стрит, Би-эм-ти)',acc='yes',eng='Chambers Street',opened='4 августа 1913', above_stub='+e',above_stub_text='Присоединялись пути от [[Манхэттенский мост|Манхэттенского моста]]',r_key='Brooklyn Bridge-City Hall 4 5 6/Chambers St J Z',r_ast=true,c_key='M21'}, {segment='Nassau',station='Фултон-стрит (линия Нассо-стрит, Би-эм-ти)',acc='yes',eng='Fulton Street',opened='30 мая 1931',r_key='Fulton St A C J Z 2 3 4 5',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>[[[:en:World Trade Center station (PATH)|en]]]</sup>',c_key='M22'}, {segment='Nassau',station='Брод-стрит (линия Нассо-стрит, Би-эм-ти)',eng='Broad Street',opened='30 мая 1931',r_key='Broad St J Z',c_key='M23'}, {segment='Canal Bridge',station='Канал-стрит (линия Бродвея, Би-эм-ти, через мост)',eng='Canal Street',opened='4 сентября 1917',r_key='Canal St J N Q R W Z 6',r_ast=true,c_key='Q01'}, {segment='Bway South',station='Канал-стрит (линия Бродвея, Би-эм-ти, через тоннель)',eng='Canal Street',opened='5 января 1918',r_key='Canal St J N Q R W Z 6',r_ast=true,c_key='R23'}, {segment='Bway South',station='Сити-холл (линия Бродвея, Би-эм-ти)',eng='City Hall',opened='5 января 1918',r_key='City Hall R W',c_key='R24'}, {segment='Bway South',station='Кортландт-стрит (линия Бродвея, Би-эм-ти)',acc='yes',sep='yes',eng='Cortlandt Street',opened='5 января 1918',r_key='Chambers St A C/WTC E/Park Pl 2 3/Cortlandt R W',conn='[[Всемирный торговый центр (PATH)]]<sup>[[[:en:World Trade Center station (PATH)|en]]]</sup>',r_ast=true,c_key='R25'}, {segment='Bway South',station='Ректор-стрит (линия Бродвея, Би-эм-ти)',sep='yes',eng='Rector Street',opened='5 января 1918',r_key='Rector St R W',c_key='R26'}, {segment='Whall',station='Уайтхолл-стрит — Саут-Ферри (линия Бродвея, Би-эм-ти)',type='x',subtype='tt',eng='Whitehall Street–South Ferry',opened='20 сентября 1918',r_key='South Ferry 1/Whitehall St R W',r_ast=true,conn='[[Уайтхолл (паромный терминал)|терминал Уайтхолл]]<sup>[[[:en:Staten Island Ferry Whitehall Terminal|en]]]</sup> ([[Статен-Айленд Ферри]])',c_key='R27'}, {segment='Fourth North Tip',station='Корт-стрит (линия Четвёртой авеню, Би-эм-ти)',eng='Court Street',opened='11 марта 1920',above='Манхэттен<hr>Тоннель Монтегю-стрит<hr>Бруклин',r_key='Court St R/Borough Hall 2 3 4 5',r_ast=true,c_key='R28'}, {segment='Fourth North Tip',station='Джей-стрит — Метротек (линия Четвёртой авеню, Би-эм-ти)',acc='yes',eng='Jay Street–MetroTech',opened='11 марта 1920',r_key='Jay St-MetroTech A C F R',r_ast=true,c_key='R29'}, {segment='Brigh DK',station='Декалб-авеню (линия Брайтон, Би-эм-ти)',other_type='o',acc='yes',eng='DeKalb Avenue',opened='19 июня 1915',r_key='DeKalb Av B Q R',c_key='R30'}, {segment='Brigh North',station='Атлантик-авеню — Барклайс-центр (линия Брайтон, Би-эм-ти)',acc='yes',eng='Atlantic Avenue–Barclays Center',opened='1 августа 1920',r_key='Atlantic Av-Barclays Ctr B D N Q R 2 3 4 5',r_ast=true,conn='[[Атлантик (вокзал)|вокзал Атлантик]]<sup>[[[:en:Atlantic Terminal|en]]]</sup>',c_key='D24', info='Станция имела пересадку на снесённую ныне станцию [[Атлантик-авеню (линия Пятой авеню, Би-эм-ти)|Атлантик-авеню]]<sup>[[[:en:Atlantic Avenue (BMT Fifth Avenue Line)|en]]]</sup>.'}, {segment='Brigh North',station='Седьмая авеню (линия Брайтон, Би-эм-ти)',eng='Seventh Avenue',opened='1 августа 1920',r_key='7 Av B Q',c_key='D25'}, {segment='Fourth DK',station='Декалб-авеню (линия Четвёртой авеню, Би-эм-ти)',type='o',acc='yes',eng='DeKalb Avenue',opened='19 июня 1915',r_key='DeKalb Av B Q R',c_key='R30'}, {segment='Fourth North',station='Атлантик-авеню — Барклайс-центр (линия Четвёртой авеню, Би-эм-ти)',type='x',acc='yes',eng='Atlantic Avenue–Barclays Center',opened='13 сентября 1915',r_key='Atlantic Av-Barclays Ctr B D N Q R 2 3 4 5',r_ast=true,conn='[[Атлантик (вокзал)|вокзал Атлантик]]<sup>[[[:en:Atlantic Terminal|en]]]</sup>',c_key='R31', info='Станция имела пересадку на снесённую ныне станцию [[Атлантик-авеню (линия Пятой авеню, Би-эм-ти)|Атлантик-авеню]]<sup>[[[:en:Atlantic Avenue (BMT Fifth Avenue Line)|en]]]</sup>.'}, {segment='Fourth North',station='Юнион-стрит (линия Четвёртой авеню, Би-эм-ти)',type='o',sep='yes',eng='Union Street',opened='13 сентября 1915',r_key='Union St R',c_key='R32'}, {segment='Fourth North',station='Девятая улица (линия Четвёртой авеню, Би-эм-ти)',type='o',eng='Ninth Street',opened='13 сентября 1915',r_key='4 Av F G/9 St R',r_ast=true,c_key='R33'}, {segment='Fourth North',station='Проспект-авеню (линия Четвёртой авеню, Би-эм-ти)',type='o',sep='yes',eng='Prospect Avenue',opened='13 сентября 1915',r_key='Prospect Av R',c_key='R34'}, {segment='Fourth North',station='25-я улица (линия Четвёртой авеню, Би-эм-ти)',type='o',sep='yes',eng='25th Street',opened='13 сентября 1915',r_key='25 St R',c_key='R35'}, {segment='Fourth North',station='36-я улица (линия Четвёртой авеню, Би-эм-ти)',type='x',eng='36th Street',opened='13 сентября 1915',r_key='36 St D N R',c_key='R36'}, {segment='Fourth',station='45-я улица (линия Четвёртой авеню, Би-эм-ти)',type='o',eng='45th Street',opened='13 сентября 1915',r_key='45 St R',c_key='R39'}, {segment='Fourth',station='53-я улица (линия Четвёртой авеню, Би-эм-ти)',type='o',eng='53rd Street',opened='13 сентября 1915',r_key='53 St R',c_key='R40'}, {segment='Fourth',station='59-я улица (линия Четвёртой авеню, Би-эм-ти)',type='x',acc='yes',eng='59th Street',opened='13 сентября 1915',r_key='59 St N R',c_key='R41'}, {segment='Fourth South',station='Бей-Ридж-авеню (линия Четвёртой авеню, Би-эм-ти)',eng='Bay Ridge Avenue',opened='13 сентября 1915',r_key='Bay Ridge Av R',c_key='R42'}, {segment='Fourth South',station='77-я улица (линия Четвёртой авеню, Би-эм-ти)',eng='77th Street',opened='14 апреля 1916',r_key='77 St R',c_key='R43'}, {segment='Fourth South',station='86-я улица (линия Четвёртой авеню, Би-эм-ти)',acc='yes',eng='86th Street',opened='14 апреля 1916',r_key='86 St R',c_key='R44'}, {segment='Fourth South',station='Бей-Ридж — 95-я улица (линия Четвёртой авеню, Би-эм-ти)',subtype='bumper',eng='Bay Ridge–95th Street',opened='27 октября 1925',r_key='Bay Ridge-95 St R',c_key='R45'}, {segment='Franklin',station='Франклин-авеню (линия Франклин-авеню, Би-эм-ти)',acc='yes',eng='Franklin Avenue',opened='15 августа 1896',oldlink='Франклин-авеню (линия Фултон-стрит, Би-эм-ти)', below_stub='-e',below_stub_text='Ответвлялась [[линия Фултон-стрит, Би-эм-ти]]',below_key_noreincarn='Dean',r_key='Franklin Av C S',r_ast=true,c_key='S01', transfer='станция имела перпендикулярные платформы<br>для эстакадной линии Фултон-стрит<br>и для [[линия Брайтон, Би-эм-ти|линии Брайтон]]<br>(ныне эта её часть относится к [[линия Франклин-авеню, Би-эм-ти|линии Франклин-авеню]])', info='Станция имела перпендикулярные платформы для [[Линия Фултон-стрит, Би-эм-ти|эстакадной линии Фултон-стрит]] и для [[линия Брайтон, Би-эм-ти|линии Брайтон]] (ныне эта её часть относится к [[линия Франклин-авеню, Би-эм-ти|линии Франклин-авеню]]).'}, {segment='Franklin',station='Парк-Плейс (линия Франклин-авеню, Би-эм-ти)',acc='yes',eng='Park Place',old='-',opened='19 июня 1899',r_key='Park Pl S',c_key='S03'}, {segment='Franklin',station='Ботанический сад (линия Франклин-авеню, Би-эм-ти)',eng='Botanic Garden',old='-',opened='19 июня 1899',r_key='Franklin Av 2 3 4 5/Botanic Garden S',r_ast=true,c_key='S04', info='Станция была перемещена севернее в 1928 году.'}, {segment='Franklin',station='Проспект-парк (линия Франклин-авеню, Би-эм-ти)',acc='yes',eng='Prospect Park',old='-',opened='2 июля 1878',r_key='Prospect Park B Q S',c_key='D26'}, {segment='PP',station='Проспект-парк (линия Брайтон, Би-эм-ти)',acc='yes',eng='Prospect Park',opened='2 июля 1878',r_key='Prospect Park B Q S',c_key='D26'}, {segment='Brigh',station='Парксайд-авеню (линия Брайтон, Би-эм-ти)',type='o',eng='Parkside Avenue',opened='4 апреля 1905',r_key='Parkside Av Q',c_key='D27'}, {segment='Brigh',station='Черч-авеню (линия Брайтон, Би-эм-ти)',type='x',eng='Church Avenue',opened='2 июля 1878',r_key='Church Av B Q',c_key='D28'}, {segment='Brigh',station='Беверлей-роуд (линия Брайтон, Би-эм-ти)',type='o',eng='Beverley Road',opened='1900',r_key='Beverley Rd Q',c_key='D29'}, {segment='Brigh',station='Кортелью-роуд (линия Брайтон, Би-эм-ти)',type='o',eng='Cortelyou Road',opened='23 августа 1907',r_key='Cortelyou Rd Q',c_key='D30'}, {segment='Brigh',station='Ньюкерк-Плаза (линия Брайтон, Би-эм-ти)',type='x',eng='Newkirk Plaza',opened='23 августа 1907',r_key='Newkirk Plaza B Q',c_key='D31'}, {segment='Brigh',station='Авеню Эйч (линия Брайтон, Би-эм-ти)',type='o',acc='yes',eng='Avenue H',opened='23 августа 1907',r_key='Avenue H Q',c_key='D32'}, {segment='Brigh',station='Авеню Джей (линия Брайтон, Би-эм-ти)',type='o',eng='Avenue J',opened='23 августа 1907',r_key='Avenue J Q',c_key='D33'}, {segment='Brigh',station='Авеню Эм (линия Брайтон, Би-эм-ти)',type='o',eng='Avenue M',opened='23 августа 1907',r_key='Avenue M Q',c_key='D34'}, {segment='Brigh',station='Кингс-Хайвей (линия Брайтон, Би-эм-ти)',type='x',acc='yes',eng='Kings Highway',opened='23 августа 1907',r_key='Kings Hwy B Q',c_key='D35'}, {segment='Brigh',station='Авеню Ю (линия Брайтон, Би-эм-ти)',type='o',eng='Avenue U',opened='23 августа 1907',r_key='Avenue U Q',c_key='D37'}, {segment='Brigh',station='Нек-роуд (линия Брайтон, Би-эм-ти)',type='o',eng='Neck Road',opened='23 августа 1907',r_key='Neck Rd Q',c_key='D38'}, {segment='Brigh',station='Шипсхед-Бей (линия Брайтон, Би-эм-ти)',type='x',eng='Sheepshead Bay',opened='23 августа 1907',r_key='Sheepshead Bay B Q',c_key='D39'}, {segment='Brigh',station='Брайтон-Бич (линия Брайтон, Би-эм-ти)',type='x',eng='Brighton Beach',opened='2 июля 1878',r_key='Brighton Beach B Q',c_key='D40'}, {segment='Brigh South',station='Ошен-Паркуэй (линия Брайтон, Би-эм-ти)',eng='Ocean Parkway',opened='22 апреля 1917',r_key='Ocean Pkwy Q',c_key='D41'}, {segment='Brigh South',station='Уэст Восьмая улица — Нью-Йоркский аквариум (линия Брайтон, Би-эм-ти)',eng='West Eighth Street–New York Aquarium',opened='19 мая 1919',r_key='West 8 St-New York Aquarium F Q',c_key='D42'}, {segment='Brigh South',station='Кони-Айленд — Стилуэлл-авеню (линия Брайтон, Би-эм-ти)',acc='yes',north_back=true,eng='Coney Island–Stillwell Avenue',opened='19 мая 1919',r_key='Coney Island-Stillwell Av D F N Q',c_key='D43'}, {segment='WE',station='Девятая авеню (линия Уэст-Энд, Би-эм-ти)',type='x',eng='Ninth Avenue',opened='24 июня 1916', above_stub='+e',above_stub_text='Примыкала [[линия Пятой авеню, Би-эм-ти]]',below_stub='-e',below_stub_text='Ответвлялась [[линия Калвер, Би-эм-ти]]',oldlink='Девятая авеню (линия Калвер, Би-эм-ти)',r_key='9 Av D',c_key='B12', transfer='верхний уровень станции обслуживал<br>существующую ныне [[Линия Уэст-Энд, Би-эм-ти|линию Уэст-Энд]],<br>а закрытый ныне нижний — линию Калвер', info='Нижний уровень станции, закрытый ныне, обслуживал [[Линия Калвер, Би-эм-ти|линию Калвер]].'}, {segment='WE',station='Форт-Гамильтон-Паркуэй (линия Уэст-Энд, Би-эм-ти)',type='o',eng='Fort Hamilton Parkway',old='-',opened='24 июня 1916',r_key='Fort Hamilton Pkwy D',c_key='B13'}, {segment='WE',station='50-я улица (линия Уэст-Энд, Би-эм-ти)',type='o',eng='50th Street',old='-',opened='24 июня 1916',r_key='50 St D',c_key='B14'}, {segment='WE',station='55-я улица (линия Уэст-Энд, Би-эм-ти)',type='o',eng='55th Street',old='-',opened='24 июня 1916',r_key='55 St D',c_key='B15'}, {segment='WE',station='62-я улица (линия Уэст-Энд, Би-эм-ти)',type='x',acc='yes',eng='62nd Street',old='-',opened='24 июня 1916',r_key='New Utrecht Av N/62 St D',r_ast=true,c_key='B16'}, {segment='WE',station='71-я улица (линия Уэст-Энд, Би-эм-ти)',type='o',eng='71st Street',old='-',opened='24 июня 1916',r_key='71 St D',c_key='B17'}, {segment='WE',station='79-я улица (линия Уэст-Энд, Би-эм-ти)',type='o',eng='79th Street',old='-',opened='24 июня 1916',r_key='79 St D',c_key='B18'}, {segment='WE',station='18-я авеню (линия Уэст-Энд, Би-эм-ти)',type='o',eng='18th Avenue',old='-',opened='24 июня 1916',r_key='18 Av D',c_key='B19'}, {segment='WE',station='20-я авеню (линия Уэст-Энд, Би-эм-ти)',type='o',eng='20th Avenue',old='-',opened='29 июля 1916',r_key='20 Av D',c_key='B20'}, {segment='WE',station='Бей-Паркуэй (линия Уэст-Энд, Би-эм-ти)',type='x',acc='yes',eng='Bay Parkway',old='-',opened='29 июля 1916',r_key='Bay Pkwy D',c_key='B21'}, {segment='WE',station='25-я авеню (линия Уэст-Энд, Би-эм-ти)',type='o',eng='25th Avenue',old='-',opened='29 июля 1916',r_key='25 Av D',c_key='B22'}, {segment='WE',station='Бей 50-я улица (линия Уэст-Энд, Би-эм-ти)',type='o',eng='Bay 50th Street',old='-',opened='21 декабря 1917',r_key='Bay 50 St D',c_key='B23'}, {segment='WE',station='Кони-Айленд — Стилуэлл-авеню (линия Уэст-Энд, Би-эм-ти)',type='x',acc='yes',eng='Coney Island–Stillwell Avenue',old='-',opened='19 мая 1919',r_key='Coney Island-Stillwell Av D F N Q',c_key='D43'}, {segment='14',station='Восьмая авеню (линия Канарси, Би-эм-ти)',acc='yes',subtype='bumper',eng='Eighth Avenue',opened='30 мая 1931',r_key='14 St A C E/8 Av L',r_ast=true,c_key='L01'}, {segment='14',station='Шестая авеню (линия Канарси, Би-эм-ти)',eng='Sixth Avenue',opened='21 сентября 1924',r_key='14 St F M 1 2 3/6 Av L',r_ast=true,conn='[[14-я улица (PATH)]]<sup>[[[:en:14th Street station (PATH)|en]]]</sup>',c_key='L02'}, {segment='14',station='Юнион-сквер (линия Канарси, Би-эм-ти)',acc='yes',eng='Union Square',opened='21 сентября 1924',r_key='14 St-Union Sq L N Q R W 4 5 6',r_ast=true,c_key='L03'}, {segment='14',station='Третья авеню (линия Канарси, Би-эм-ти)',sep='yes',eng='Third Avenue',opened='21 сентября 1924',r_key='3 Av L',c_key='L05'}, {segment='14',station='Первая авеню (линия Канарси, Би-эм-ти)',sep='yes',acc='yes',eng='First Avenue',opened='21 сентября 1924',below='Манхэттен<hr>Тоннель 14-й улицы<hr>Бруклин',r_key='1 Av L',c_key='L06'}, {segment='Canar',station='Бедфорд-авеню (линия Канарси, Би-эм-ти)',acc='yes',eng='Bedford Avenue',opened='21 сентября 1924',r_key='Bedford Av L',c_key='L08'}, {segment='Canar',station='Лоример-стрит (линия Канарси, Би-эм-ти)',eng='Lorimer Street',opened='21 сентября 1924',r_key='Lorimer St L/Metropolitan Av G',r_ast=true,c_key='L10'}, {segment='Canar',station='Грейам-авеню (линия Канарси, Би-эм-ти)',sep='yes',eng='Graham Avenue',opened='21 сентября 1924',r_key='Graham Av L',c_key='L11'}, {segment='Canar',station='Гранд-стрит (линия Канарси, Би-эм-ти)',sep='yes',eng='Grand Street',opened='21 сентября 1924',r_key='Grand St L',c_key='L12'}, {segment='Canar',station='Монтроз-авеню (линия Канарси, Би-эм-ти)',eng='Montrose Avenue',opened='21 сентября 1924',r_key='Montrose Av L',c_key='L13'}, {segment='Canar',station='Морган-авеню (линия Канарси, Би-эм-ти)',eng='Morgan Avenue',opened='14 декабря 1928',r_key='Morgan Av L',c_key='L14'}, {segment='Canar',station='Джефферсон-стрит (линия Канарси, Би-эм-ти)',eng='Jefferson Street',opened='14 декабря 1928',r_key='Jefferson St L',c_key='L15'}, {segment='Canar',station='Декалб-авеню (линия Канарси, Би-эм-ти)',eng='DeKalb Avenue',opened='14 декабря 1928',r_key='DeKalb Av L',c_key='L16'}, {segment='Canar',station='Мертл-авеню — Уайкофф-авеню (линия Канарси, Би-эм-ти)',acc='yes',eng='Myrtle–Wyckoff Avenues',opened='14 декабря 1928',r_key='Myrtle-Wyckoff Avs L M',r_ast=true,c_key='L17'}, {segment='Canar',station='Холси-стрит (линия Канарси, Би-эм-ти)',sep='yes',eng='Halsey Street',opened='14 декабря 1928',r_key='Halsey St L',c_key='L19'}, {segment='Canar',station='Уилсон-авеню (линия Канарси, Би-эм-ти)',acc='n',eng='Wilson Avenue',opened='14 декабря 1928',r_key='Wilson Av L',c_key='L20'}, {segment='Canar',station='Бушуик-авеню — Абердин-стрит (линия Канарси, Би-эм-ти)',eng='Bushwick Avenue–Aberdeen Street',opened='14 декабря 1928',r_key='Bushwick Av-Aberdeen St L',c_key='L21'}, {segment='Canar BJ',station='Бродвей-Джанкшен (линия Канарси, Би-эм-ти)',eng='Broadway Junction',opened='14 декабря 1928', r_key='Broadway Junction A C J L Z',r_ast=true,c_key='L22', info='Станция имела пересадку на снесённую ныне станцию [[Манхэттен-Джанкшен (линия Фултон-стрит, Би-эм-ти)|Манхэттен-Джанкшен]]<sup>[[[:en:Manhattan Junction (BMT Fulton Street Line)|en]]]</sup>.'}, {segment='Canar South',station='Атлантик-авеню (линия Канарси, Би-эм-ти)',eng='Atlantic Avenue',opened='4 июля 1889', above_stub='+w',above_stub_text='Примыкала [[линия Фултон-стрит, Би-эм-ти]]',below_stub='-e',below_stub_text='Ответвлялась [[линия Фултон-стрит, Би-эм-ти]]',oldlink='Атлантик-авеню (линия Фултон-стрит, Би-эм-ти)',r_key='Atlantic Av L', conn='[[Ист-Нью-Йорк (LIRR)]]<sup>[[[:en:East New York station|en]]]</sup>',c_key='L24', transfer='станция имела три островных платформы<br>и обслуживала поезда эстакадной линии Фултон-стрит<br>и существующей ныне [[линия Канарси, Би-эм-ти|линии Канарси]]', info='Станция имела три островных платформы и обслуживала также [[Линия Фултон-стрит, Би-эм-ти|эстакадную линию Фултон-стрит]].'}, {segment='Canar South',station='Саттер-авеню (линия Канарси, Би-эм-ти)',eng='Sutter Avenue',old='-',opened='28 декабря 1906',r_key='Sutter Av L',c_key='L25'}, {segment='Canar South',station='Ливония-авеню (линия Канарси, Би-эм-ти)',acc='yes',eng='Livonia Avenue',old='-',opened='28 декабря 1906',r_key='Livonia Av L',c_key='L26'}, {segment='Canar South',station='Нью-Лотс-авеню (линия Канарси, Би-эм-ти)',eng='New Lots Avenue',old='-',opened='28 декабря 1906',r_key='New Lots Av L',c_key='L27'}, {segment='Canar South',station='Ист 105-я улица (линия Канарси, Би-эм-ти)',eng='East 105th Street',old='-',opened='28 декабря 1906',r_key='East 105 St L',c_key='L28'}, {segment='Canar South',station='Канарси — Рокавей-Паркуэй (линия Канарси, Би-эм-ти)',acc='yes',subtype='bumper',eng='Canarsie–Rockaway Parkway',old='-',opened='28 декабря 1906',r_key='Canarsie-Rockaway Pkwy L',c_key='L29'}, {segment='Bway7 North Tip',station='Ван-Кортландт-парк — 242-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',subtype='bumper',eng='Van Cortlandt Park–242nd Street',opened='1 августа 1908',r_key='Van Cortlandt Park-242 St 1',c_key='101'}, {segment='Bway7 North Tip',station='238-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='238th Street',opened='1 августа 1908',r_key='238 St 1',c_key='103'}, {segment='Bway7 North Tip',station='231-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',acc='yes',sep='yes',eng='231st Street',opened='7 января 1907',r_key='231 St 1',c_key='104'}, {segment='Bway7 North Tip',station='Марбл-Хилл — 225-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Marble Hill–225th Street',opened='7 января 1907',above='Бронкс<hr>Манхэттен',below='[[Бродвейский мост (Манхэттен)|Бродвейский мост]]',r_key='Marble Hill-225 St 1',conn='[[Марбл-Хилл (Metro-North)]]<sup>[[[:en:Marble Hill station|en]]]</sup>',c_key='106'}, {segment='Bway7 North Tip',station='215-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='215th Street',opened='16 марта 1906',r_key='215 St 1',c_key='107'}, {segment='Bway7 North Tip',station='207-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='207th Street',opened='16 марта 1906',r_key='207 St 1',c_key='108'}, {segment='Bway7 North',station='Дайкман-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',acc='s',eng='Dyckman Street',opened='16 марта 1906',r_key='Dyckman St 1',c_key='109'}, {segment='Bway7 North',station='191-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='191st Street',opened='14 января 1911',r_key='191 St 1',c_key='110'}, {segment='Bway7 North',station='181-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='181st Street',opened='16 марта 1906',r_key='181 St 1',c_key='111'}, {segment='Bway7 North',station='168-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='168th Street',opened='16 марта 1906',r_key='168 St A C 1',r_ast=true,c_key='112'}, {segment='Bway7 North',station='157-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',sep='yes',eng='157th Street',opened='12 ноября 1904',r_key='157 St 1',c_key='113'}, {segment='Bway7 Middle',station='145-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='145th Street',opened='27 октября 1904',r_key='145 St 1',c_key='114'}, {segment='Bway7 Middle',station='137-я улица — Сити-колледж (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='137th Street–City College',old='137-я улица',oldeng='137th Street',opened='27 октября 1904',r_key='137 St-City College 1',c_key='115'}, {segment='Bway7 Middle',station='125-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',eng='125th Street',old='Манхэттен-стрит',oldeng='Manhattan Street',opened='27 октября 1904',r_key='125 St 1',c_key='116', transfer='единственная на линии эстакадная<br>станция на мосту, пересекающем долину'}, {segment='Bway7 Middle',station='116-я улица — Колумбийский университет (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',eng='116th Street–Columbia University',old='116-я улица',oldeng='116th Street',opened='27 октября 1904',r_key='116 St-Columbia University 1',c_key='117'}, {segment='Bway7 Middle',station='Катидрал-Паркуэй — 110-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Cathedral Parkway–110th Street',old='110-я улица',oldeng='110th Street',opened='27 октября 1904',r_key='Cathedral Pkwy-110 St 1',c_key='118'}, {segment='Bway7 Middle',station='103-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',eng='103rd Street',opened='27 октября 1904',r_key='103 St 1',c_key='119'}, {segment='Jerome 2',station='Вудлон (линия Джером-авеню, Ай-ар-ти)',type='x',subtype='bumper',eng='Woodlawn',opened='15 апреля 1918',r_key='Woodlawn 4',c_key='401'}, {segment='Jerome 2',station='Мошолу-Паркуэй (линия Джером-авеню, Ай-ар-ти)',type='o',eng='Mosholu Parkway',opened='15 апреля 1918',r_key='Mosholu Pkwy 4',c_key='402'}, {segment='Jerome 2',station='Бедфорд-парк-бульвар — Леман-колледж (линия Джером-авеню, Ай-ар-ти)',type='o',eng='Bedford Park Boulevard–Lehman College',opened='15 апреля 1918',r_key='Bedford Park Blvd-Lehman College 4',c_key='405'}, {segment='Jerome 2',station='Кингсбридж-роуд (линия Джером-авеню, Ай-ар-ти)',type='o',eng='Kingsbridge Road',opened='2 июня 1917',r_key='Kingsbridge Rd 4',c_key='406'}, {segment='Jerome 2',station='Фордем-роуд (линия Джером-авеню, Ай-ар-ти)',type='o',acc='yes',eng='Fordham Road',opened='2 июня 1917',r_key='Fordham Rd 4',c_key='407'}, {segment='Jerome 2',station='183-я улица (линия Джером-авеню, Ай-ар-ти)',type='o',eng='183rd Street',opened='2 июня 1917',r_key='183 St 4',c_key='408'}, {segment='Jerome 1',station='Бернсайд-авеню (линия Джером-авеню, Ай-ар-ти)',type='x',subtype='bidi',eng='Burnside Avenue',opened='2 июня 1917',r_key='Burnside Av 4',c_key='409'}, {segment='Jerome 1',station='176-я улица (линия Джером-авеню, Ай-ар-ти)',type='o',eng='176th Street',opened='2 июня 1917',r_key='176 St 4',c_key='410'}, {segment='Jerome 1',station='Маунт-Иден-авеню (линия Джером-авеню, Ай-ар-ти)',type='o',eng='Mount Eden Avenue',opened='2 июня 1917',r_key='Mt Eden Av 4',c_key='411'}, {segment='Jerome 1',station='170-я улица (линия Джером-авеню, Ай-ар-ти)',type='o',acc='yes',eng='170th Street',opened='2 июня 1917',r_key='170 St 4',c_key='412'}, {segment='Jerome',station='167-я улица (линия Джером-авеню, Ай-ар-ти)',type='o',eng='167th Street',opened='2 июня 1917', below_stub='-w',below_stub_text='Ответвлялась [[линия Девятой авеню, Ай-ар-ти]]',r_key='167 St 4',c_key='413'}, {segment='Jerome',station='161-я улица — Стадион Янки (линия Джером-авеню, Ай-ар-ти)',type='o',acc='yes',eng='161st Street–Yankee Stadium',opened='2 июня 1917',r_key='161 St-Yankee Stadium B D 4',r_ast=true,conn='[[Янкис — Ист 153-я улица (Metro-North)]]<sup>[[[:en:Yankees–East 153rd Street station|en]]]</sup>',c_key='414'}, {segment='149',station='149-я улица — Гранд-Конкорс (линия Джером-авеню, Ай-ар-ти)',type='x',subtype='bidi',eng='149th Street–Grand Concourse',opened='2 июня 1917',r_key='149 St-Grand Concourse 2 4 5',r_ast=true,c_key='415'}, {segment='Bway7a',station='96-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',acc='yes',eng='96th Street',opened='27 октября 1904',below_key='91',r_key='96 St 1 2 3',c_key='120'}, {segment='Bway7a',station='86-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='86th Street',opened='27 октября 1904',r_key='86 St 1',c_key='121'}, {segment='Bway7a',station='79-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='79th Street',opened='27 октября 1904',r_key='79 St 1',c_key='122'}, {segment='Bway7a',station='72-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',acc='yes',eng='72nd Street',opened='27 октября 1904',r_key='72 St 1 2 3',c_key='123'}, {segment='Bway7a',station='66-я улица — Линкольн-центр (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',acc='yes',eng='66th Street–Lincoln Center',old='66-я улица',oldeng='66th Street',opened='27 октября 1904',r_key='66 St-Lincoln Center 1',c_key='124'}, {segment='Bway7a',station='59-я улица — Колумбус-Серкл (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',acc='yes',eng='59th Street–Columbus Circle',opened='27 октября 1904',r_key='59 St-Columbus Circle A B C D 1',r_ast=true,c_key='125'}, {segment='Bway7a',station='50-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='50th Street',opened='27 октября 1904',r_key='50 St 1',c_key='126'}, {segment='Bway7a',station='Таймс-сквер — 42-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',acc='yes',eng='Times Square–42nd Street',old='-',opened='3 июня 1917',r_key='Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E',r_ast=true,conn='[[автовокзал Портового управления]]<sup>[[[:en:Port Authority Bus Terminal|en]]]</sup>',c_key='127'}, {segment='Bway7b',station='34-я улица — Пенсильванский вокзал (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',acc='yes',eng='34th Street–Penn Station',opened='3 июня 1917',r_key='34 St-Penn Station 1 2 3',conn='[[Пенсильванский вокзал]]',c_key='128'}, {segment='Bway7b',station='28-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='28th Street',opened='1 июля 1918',r_key='28 St 1',c_key='129'}, {segment='Bway7b',station='23-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='23rd Street',opened='1 июля 1918',r_key='23 St 1',c_key='130'}, {segment='Bway7b',station='18-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='18th Street',opened='1 июля 1918',r_key='18 St 1',c_key='131'}, {segment='Bway7b',station='14-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',eng='14th Street',opened='1 июля 1918',r_key='14 St F M 1 2 3/6 Av L',r_ast=true,conn='[[14-я улица (PATH)]]<sup>[[[:en:14th Street station (PATH)|en]]]</sup>',c_key='132'}, {segment='Bway7b',station='Кристофер-стрит — Шеридан-сквер (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Christopher Street–Sheridan Square',opened='1 июля 1918',r_key='Christopher St-Sheridan Sq 1',conn='[[Кристофер-стрит (PATH)]]<sup>[[[:en:Christopher Street station (PATH)|en]]]</sup>',c_key='133'}, {segment='Bway7b',station='Хаустон-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Houston Street',opened='1 июля 1918',r_key='Houston St 1',c_key='134'}, {segment='Bway7b',station='Канал-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Canal Street',opened='1 июля 1918',r_key='Canal St 1',c_key='135'}, {segment='Bway7b',station='Франклин-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Franklin Street',opened='1 июля 1918',r_key='Franklin St 1',c_key='136'}, {segment='Bway7b',station='Чеймберс-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',acc='yes',eng='Chambers Street',opened='1 июля 1918',r_key='Chambers St 1 2 3',c_key='137'}, {segment='42',station='Таймс-сквер (челнок 42-й улицы, Ай-ар-ти)',north_back=true,oldtype='o',acc='yes',eng='Times Square',opened='27 октября 1904',r_key='Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E',r_ast=true,conn='[[автовокзал Портового управления]]<sup>[[[:en:Port Authority Bus Terminal|en]]]</sup>',c_key='902'}, {segment='42',station='Центральный вокзал (челнок 42-й улицы, Ай-ар-ти)',north_back=true,acc='yes',eng='Grand Central',old='Центральный вокзал — 42-я улица',oldeng='Grand Central–42nd Street',opened='27 октября 1904',r_key='Grand Central-42 St S 4 5 6 7',r_ast=true,conn='[[Центральный вокзал Нью-Йорка]]',c_key='901'}, {segment='Lenox North',station='Гарлем — 148-я улица (линия Ленокс-авеню, Ай-ар-ти)',subtype='bumper',eng='Harlem–148th Street',opened='13 мая 1968',r_key='Harlem-148 St 3',c_key='301'}, {segment='Lenox North',station='145-я улица (линия Ленокс-авеню, Ай-ар-ти)',sep='yes',eng='145th Street',opened='23 ноября 1904',r_key='145 St 3',c_key='302'}, {segment='Lenox South',station='135-я улица (линия Ленокс-авеню, Ай-ар-ти)',acc='yes',sep='yes',eng='135th Street',opened='23 ноября 1904',r_key='135 St 2 3',c_key='224'}, {segment='Lenox South',station='125-я улица (линия Ленокс-авеню, Ай-ар-ти)',sep='yes',eng='125th Street',opened='23 ноября 1904',r_key='125 St 2 3',c_key='225'}, {segment='Lenox South',station='116-я улица (линия Ленокс-авеню, Ай-ар-ти)',sep='yes',eng='116th Street',opened='23 ноября 1904',r_key='116 St 2 3',c_key='226'}, {segment='Lenox South',station='Сентрал-парк-Норт — 110-я улица (линия Ленокс-авеню, Ай-ар-ти)',eng='Central Park North–110th Street',opened='23 ноября 1904',r_key='Central Park North-110 St 2 3',c_key='227'}, {segment='Bway7 South',station='Парк-Плейс (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='Park Place',opened='1 августа 1918',r_key='Chambers St A C/WTC E/Park Pl 2 3/Cortlandt R W',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>[[[:en:World Trade Center station (PATH)|en]]]</sup>',c_key='228'}, {segment='Bway7 South',station='Фултон-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',acc='yes',eng='Fulton Street',opened='1 августа 1918',r_key='Fulton St A C J Z 2 3 4 5',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>[[[:en:World Trade Center station (PATH)|en]]]</sup>',c_key='229'}, {segment='Bway7 South',station='Уолл-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='Wall Street',opened='1 августа 1918',below='Манхэттен<hr>Тоннель Кларк-стрит<hr>Бруклин',r_key='Wall St 2 3',c_key='230'}, {segment='Bway7 South',station='Кларк-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='Clark Street',opened='15 апреля 1919',r_key='Clark St 2 3',c_key='231'}, {segment='Bway7 South',station='Боро-холл (линия Бродвея и Седьмой авеню, Ай-ар-ти)',acc='yes',eng='Borough Hall',opened='15 апреля 1919',r_key='Court St R/Borough Hall 2 3 4 5',r_ast=true,c_key='232'}, {segment='Hoyt',station='Хойт-стрит (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',sep='yes',eng='Hoyt Street',opened='1 мая 1908',r_key='Hoyt St 2 3',c_key='233'}, {segment='Hoyt',station='Невинс-стрит (линия Истерн-Паркуэй, Ай-ар-ти)',type='x',eng='Nevins Street',opened='1 мая 1908',r_key='Nevins St 2 3 4 5',c_key='234'}, {segment='EP',station='Атлантик-авеню — Барклайс-центр (линия Истерн-Паркуэй, Ай-ар-ти)',type='x',acc='yes',eng='Atlantic Avenue–Barclays Center',opened='1 мая 1908',r_key='Atlantic Av-Barclays Ctr B D N Q R 2 3 4 5',r_ast=true,conn='[[Атлантик (вокзал)|вокзал Атлантик]]<sup>[[[:en:Atlantic Terminal|en]]]</sup>',c_key='235'}, {segment='EP',station='Берген-стрит (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',sep='yes',eng='Bergen Street',opened='23 августа 1920',r_key='Bergen St 2 3',c_key='236'}, {segment='EP',station='Гранд-Арми-Плаза (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',subtype='under',eng='Grand Army Plaza',opened='23 августа 1920',r_key='Grand Army Plaza 2 3',c_key='237'}, {segment='EP',station='Истерн-Паркуэй — Бруклинский музей (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',acc='yes',subtype='under',eng='Eastern Parkway–Brooklyn Museum',opened='23 августа 1920',r_key='Eastern Pkwy-Brooklyn Museum 2 3',c_key='238'}, {segment='EP',station='Франклин-авеню — Медгар-Эверс-колледж (линия Истерн-Паркуэй, Ай-ар-ти)',type='x',eng='Franklin Avenue-Medgar Evers College',opened='23 августа 1920',r_key='Franklin Av 2 3 4 5/Botanic Garden S',r_ast=true,c_key='239'}, {segment='Bway7 South Tip',station='ВТЦ Кортландт (линия Бродвея и Седьмой авеню, Ай-ар-ти)',acc='yes',eng='WTC Cortlandt',old='Кортландт-стрит',opened='1 июля 1918',r_key='WTC Cortlandt 1',conn='[[Всемирный торговый центр (PATH)]]<sup>[[[:en:World Trade Center station (PATH)|en]]]</sup>',c_key='138'}, {segment='Bway7 South Tip',station='Ректор-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',sep='yes',eng='Rector Street',opened='1 июля 1918',r_key='Rector St 1',c_key='139'}, {segment='Bway7 South Tip',station='Саут-Ферри (линия Бродвея и Седьмой авеню, Ай-ар-ти)',subtype='bumper',acc='yes',eng='South Ferry',opened='16 марта 2009',r_key='South Ferry 1/Whitehall St R W',r_ast=true,conn='[[Уайтхолл (паромный терминал)|терминал Уайтхолл]]<sup>[[[:en:Staten Island Ferry Whitehall Terminal|en]]]</sup> ([[Статен-Айленд Ферри]])',c_key='142'}, {segment='Nostrand',station='Президент-стрит — Медгар-Эверс-колледж (линия Ностранд-авеню, Ай-ар-ти)',eng='President Street-Medgar Evers College',opened='23 августа 1920',r_key='President St 2 5',c_key='241'}, {segment='Nostrand',station='Стерлинг-стрит (линия Ностранд-авеню, Ай-ар-ти)',eng='Sterling Street',opened='23 августа 1920',r_key='Sterling St 2 5',c_key='242'}, {segment='Nostrand',station='Уинтроп-стрит (линия Ностранд-авеню, Ай-ар-ти)',sep='yes',eng='Winthrop Street',opened='23 августа 1920',r_key='Winthrop St 2 5',c_key='243'}, {segment='Nostrand',station='Черч-авеню (линия Ностранд-авеню, Ай-ар-ти)',acc='yes',sep='yes',eng='Church Avenue',opened='23 августа 1920',r_key='Church Av 2 5',c_key='244'}, {segment='Nostrand',station='Беверли-роуд (линия Ностранд-авеню, Ай-ар-ти)',sep='yes',eng='Beverly Road',opened='23 августа 1920',r_key='Beverly Rd 2 5',c_key='245'}, {segment='Nostrand',station='Ньюкерк-авеню — Литл-Хейти (линия Ностранд-авеню, Ай-ар-ти)',sep='yes',eng='Newkirk Avenue–Little Haiti',opened='23 августа 1920',r_key='Newkirk Av 2 5',c_key='246'}, {segment='Nostrand',station='Флатбуш-авеню — Бруклинский колледж (линия Ностранд-авеню, Ай-ар-ти)',acc='yes',subtype='bumper',eng='Flatbush Avenue–Brooklyn College',opened='23 августа 1920',r_key='Flatbush Av-Brooklyn College 2 5',c_key='247'}, {segment='EP East',station='Ностранд-авеню (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',eng='Nostrand Avenue',opened='23 августа 1920',r_key='Nostrand Av 3',c_key='248'}, {segment='EP East',station='Кингстон-авеню (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',eng='Kingston Avenue',opened='23 августа 1920',r_key='Kingston Av 3',c_key='249'}, {segment='EP East',station='Краун-Хайтс — Ютика-авеню (линия Истерн-Паркуэй, Ай-ар-ти)',type='x',acc='yes',eng='Crown Heights–Utica Avenue',opened='23 августа 1920',r_key='Crown Heights-Utica Av 3 4',c_key='250'}, {segment='NL',station='Саттер-авеню — Ратленд-роуд (линия Нью-Лотс, Ай-ар-ти)',eng='Sutter Avenue–Rutland Road',opened='24 декабря 1920',r_key='Sutter Av-Rutland Rd 3',c_key='251'}, {segment='NL',station='Саратога-авеню (линия Нью-Лотс, Ай-ар-ти)',eng='Saratoga Avenue',opened='24 декабря 1920',r_key='Saratoga Av 3',c_key='252'}, {segment='NL',station='Рокавей-авеню (линия Нью-Лотс, Ай-ар-ти)',eng='Rockaway Avenue',opened='24 декабря 1920',r_key='Rockaway Av 3',c_key='253'}, {segment='NL',station='Джуниус-стрит (линия Нью-Лотс, Ай-ар-ти)',eng='Junius Street',opened='24 декабря 1920',r_key='Junius St 3',c_key='254'}, {segment='NL',station='Пенсилвейния-авеню (линия Нью-Лотс, Ай-ар-ти)',eng='Pennsylvania Avenue',opened='24 декабря 1920',r_key='Pennsylvania Av 3',c_key='255'}, {segment='NL',station='Ван-Сиклен-авеню (линия Нью-Лотс, Ай-ар-ти)',eng='Van Siclen Avenue',opened='16 октября 1922',r_key='Van Siclen Av 3',c_key='256'}, {segment='NL',station='Нью-Лотс-авеню (линия Нью-Лотс, Ай-ар-ти)',eng='New Lots Avenue',opened='16 октября 1922',r_key='New Lots Av 3',c_key='257'}, {segment='WPR North Tip',station='Уэйкфилд — 241-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',subtype='bumper',eng='Wakefield–241st Street',opened='31 декабря 1920',r_key='Wakefield-241 St 2',conn='[[Уэйкфилд (Metro-North)]]<sup>[[[:en:Wakefield station (Metro-North)|en]]]</sup>',c_key='201'}, {segment='WPR North',station='Ниреид-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='Nereid Avenue',old='-',opened='31 марта 1917',r_key='Nereid Av 2 5',c_key='204'}, {segment='WPR North',station='233-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',acc='yes',eng='233rd Street',old='-',opened='31 марта 1917',r_key='233 St 2 5',conn='[[Вудлон (Metro-North)]]<sup>[[[:en:Woodlawn station (Metro-North)|en]]]</sup>',c_key='205'}, {segment='WPR North',station='225-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='225th Street',old='-',opened='31 марта 1917',r_key='225 St 2 5',c_key='206'}, {segment='WPR North',station='219-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='219th Street',old='-',opened='3 марта 1917',r_key='219 St 2 5',c_key='207'}, {segment='WPR North',station='Ган-Хилл-роуд (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='x',subtype='bidi',acc='yes',eng='Gun Hill Road',opened='3 марта 1917', below_stub='-w',below_stub_text='Ответвлялась [[линия Третьей авеню, Ай-ар-ти]]', oldlink='Ган-Хилл-роуд (линия Третьей авеню, Ай-ар-ти)',r_key='Gun Hill Rd 2 5',conn='[[Уильямс-Бридж (Metro-North)]]<sup>[[[:en:Williams Bridge station|en]]]</sup>',c_key='208', transfer='верхний уровень станции обслуживал<br>существующую ныне [[Линия Уайт-Плейнс-роуд, Ай-ар-ти|линию Уайт-Плейнс-роуд]],<br>а снесённый ныне нижний — линию Третьей авеню', info='Нижний уровень станции, снесённый ныне, обслуживал [[Линия Третьей авеню, Ай-ар-ти|линию Третьей авеню]].'}, {segment='WPR North',station='Берк-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='Burke Avenue',old='-',opened='3 марта 1917',r_key='Burke Av 2 5',c_key='209'}, {segment='WPR North',station='Аллертон-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='Allerton Avenue',old='-',opened='3 марта 1917',r_key='Allerton Av 2 5',c_key='210'}, {segment='WPR North',station='Пелем-Паркуэй (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',acc='yes',eng='Pelham Parkway',old='-',opened='3 марта 1917',r_key='Pelham Pkwy 2 5',c_key='211'}, {segment='WPR North',station='Бронкс-парк-Ист (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='Bronx Park East',old='-',opened='3 марта 1917',r_key='Bronx Park East 2 5',c_key='212'}, {segment='Dyre',station='Истчестер — Дайр-авеню (линия Дайр-авеню, Ай-ар-ти)',subtype='bumper',eng='Eastchester–Dyre Avenue',opened='15 мая 1941',orig='29 мая 1912',r_key='Eastchester-Dyre Av 5',c_key='501'}, {segment='Dyre',station='Бейчестер-авеню (линия Дайр-авеню, Ай-ар-ти)',eng='Baychester Avenue',opened='15 мая 1941',orig='29 мая 1912',r_key='Baychester Av 5',c_key='502'}, {segment='Dyre',station='Ган-Хилл-роуд (линия Дайр-авеню, Ай-ар-ти)',acc='yes',eng='Gun Hill Road',opened='15 мая 1941',orig='29 мая 1912',r_key='Gun Hill Rd 5',c_key='503'}, {segment='Dyre',station='Пелем-Паркуэй (линия Дайр-авеню, Ай-ар-ти)',eng='Pelham Parkway',opened='15 мая 1941',orig='29 мая 1912',r_key='Pelham Pkwy 5',c_key='504'}, {segment='Dyre',station='Моррис-парк (линия Дайр-авеню, Ай-ар-ти)',eng='Morris Park',opened='15 мая 1941',orig='29 мая 1912',r_key='Morris Park 5',c_key='505'}, {segment='E180',station='Ист 180-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='x',subtype='bidi',acc='yes',eng='East 180th Street',opened='3 марта 1917',r_key='East 180 St 2 5',c_key='213'}, {segment='WPR South',station='Уэст-Фармс-сквер — Ист-Тремонт-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='West Farms Square–East Tremont Avenue',opened='26 ноября 1904',r_key='West Farms Sq-East Tremont Av 2 5',c_key='214'}, {segment='WPR South',station='174-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',sep='yes',eng='174th Street',opened='26 ноября 1904',r_key='174 St 2 5',c_key='215'}, {segment='WPR South',station='Фримен-стрит (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',sep='yes',eng='Freeman Street',opened='26 ноября 1904',r_key='Freeman St 2 5',c_key='216'}, {segment='WPR South',station='Симпсон-стрит (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',acc='yes',sep='yes',eng='Simpson Street',opened='26 ноября 1904',r_key='Simpson St 2 5',c_key='217'}, {segment='WPR South',station='Интервейл-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='Intervale Avenue',opened='26 ноября 1904',r_key='Intervale Av 2 5',c_key='218'}, {segment='WPR South',station='Проспект-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',sep='yes',eng='Prospect Avenue',opened='26 ноября 1904',r_key='Prospect Av 2 5',c_key='219'}, {segment='WPR South',station='Джексон-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',sep='yes',eng='Jackson Avenue',opened='26 ноября 1904', below_stub='-e',below_stub_text='Было ответвление к [[линия Третьей авеню, Ай-ар-ти|линии Третьей авеню, Ай-ар-ти]]',r_key='Jackson Av 2 5',c_key='220'}, {segment='WPR South Tip',station='Третья авеню — 149-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',acc='yes',sep='yes',eng='Third Avenue–149th Street',opened='10 июля 1905',r_key='3 Av-149 St 2 5',c_key='221', info='Станция имела пересадку на снесённую ныне станцию [[149-я улица (линия Третьей авеню, Ай-ар-ти)|149-я улица]]<sup>[[[:en:149th Street station (IRT Third Avenue Line)|en]]]</sup>.'}, {segment='WPR South Tip',station='149-я улица — Гранд-Конкорс (линия Уайт-Плейнс-роуд, Ай-ар-ти)',eng='149th Street–Grand Concourse',opened='10 июля 1905',r_key='149 St-Grand Concourse 2 4 5',r_ast=true,c_key='222'}, {segment='138',station='138-я улица — Гранд-Конкорс (линия Джером-авеню, Ай-ар-ти)',type='o',eng='138th Street–Grand Concourse',opened='17 июля 1918',r_key='138 St-Grand Concourse 4 5',c_key='416'}, {segment='Pelham North',station='Пелем-Бей-парк (линия Пелем, Ай-ар-ти)',type='x',subtype='bumper',acc='yes',eng='Pelham Bay Park',opened='24 октября 1920',r_key='Pelham Bay Park 6',c_key='601'}, {segment='Pelham North',station='Бьюр-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Buhre Avenue',opened='24 октября 1920',r_key='Buhre Av 6',c_key='602'}, {segment='Pelham North',station='Мидлтаун-роуд (линия Пелем, Ай-ар-ти)',type='o',eng='Middletown Road',opened='24 октября 1920',r_key='Middletown Rd 6',c_key='603'}, {segment='Pelham North',station='Уэстчестер-сквер — Ист-Тремонт-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Westchester Square–East Tremont Avenue',opened='24 октября 1920',r_key='Westchester Sq-East Tremont Av 6',c_key='604'}, {segment='Pelham North',station='Зерига-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Zerega Avenue',opened='24 октября 1920',r_key='Zerega Av 6',c_key='606'}, {segment='Pelham North',station='Касл-Хилл-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Castle Hill Avenue',opened='24 октября 1920',r_key='Castle Hill Av 6',c_key='607'}, {segment='Pelham',station='Паркчестер (линия Пелем, Ай-ар-ти)',type='x',subtype='bidi',eng='Parkchester',opened='30 мая 1920',r_key='Parkchester 6',c_key='608'}, {segment='Pelham',station='Сент-Лоренс-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='St. Lawrence Avenue',opened='30 мая 1920',r_key='St Lawrence Av 6',c_key='609'}, {segment='Pelham',station='Моррисон-авеню — Саундвью (линия Пелем, Ай-ар-ти)',type='o',eng='Morrison Avenue–Soundview',opened='30 мая 1920',r_key='Morrison Av-Soundview 6',c_key='610'}, {segment='Pelham',station='Элдер-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Elder Avenue',opened='30 мая 1920',r_key='Elder Av 6',c_key='611'}, {segment='Pelham',station='Уитлок-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Whitlock Avenue',opened='30 мая 1920',r_key='Whitlock Av 6',c_key='612'}, {segment='Pelham',station='Хантс-Пойнт-авеню (линия Пелем, Ай-ар-ти)',type='x',subtype='bidi',acc='yes',eng='Hunts Point Avenue',opened='17 января 1919',r_key='Hunts Point Av 6',c_key='613'}, {segment='Pelham',station='Лонгвуд-авеню (линия Пелем, Ай-ар-ти)',type='o',sep='yes',eng='Longwood Avenue',opened='17 января 1919',r_key='Longwood Av 6',c_key='614'}, {segment='Pelham',station='Ист 149-я улица (линия Пелем, Ай-ар-ти)',type='o',sep='yes',eng='East 149th Street',opened='17 января 1919',r_key='East 149 St 6',c_key='615'}, {segment='Pelham',station='Ист 143-я улица — Сент-Мэрис-стрит (линия Пелем, Ай-ар-ти)',type='o',sep='yes',eng='East 143rd Street–St. Mary’s Street',opened='17 января 1919',r_key='East 143 St-St Mary\'s St 6',c_key='616'}, {segment='Pelham',station='Сайпресс-авеню (линия Пелем, Ай-ар-ти)',type='o',sep='yes',eng='Cypress Avenue',opened='17 января 1919',r_key='Cypress Av 6',c_key='617'}, {segment='Pelham',station='Брук-авеню (линия Пелем, Ай-ар-ти)',type='o',sep='yes',eng='Brook Avenue',opened='17 января 1919',r_key='Brook Av 6',c_key='618'}, {segment='Pelham',station='Третья авеню — 138-я улица (линия Пелем, Ай-ар-ти)',type='x',subtype='bidi',eng='Third Avenue–138th Street',opened='17 января 1919',r_key='3 Av-138 St 6',c_key='619'}, {segment='Lex North',station='125-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='x',acc='yes',eng='125th Street',opened='17 сентября 1918',above='Бронкс<hr>Тоннель Лексингтон-авеню<hr>Манхэттен',r_key='125 St 4 5 6',conn='[[Харлем — 125-я улица (Metro-North)]]<sup>[[[:en:Harlem–125th Street station|en]]]</sup>',c_key='621'}, {segment='Lex North',station='116-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',subtype='under',sep='yes',eng='116th Street',opened='17 сентября 1918',r_key='116 St 6',c_key='622'}, {segment='Lex North',station='110-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',sep='yes',eng='110th Street',opened='17 сентября 1918',r_key='110 St 6',c_key='623'}, {segment='Lex North',station='103-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',eng='103rd Street',opened='17 сентября 1918',r_key='103 St 6',c_key='624'}, {segment='Lex North',station='96-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',subtype='under',eng='96th Street',opened='17 сентября 1918',r_key='96 St 6',c_key='625'}, {segment='Lex North',station='86-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='x',sep='yes',eng='86th Street',opened='17 сентября 1918',r_key='86 St 4 5 6',c_key='626'}, {segment='Lex North',station='77-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',subtype='under',sep='yes',eng='77th Street',opened='17 сентября 1918',r_key='77 St 6',c_key='627'}, {segment='Lex North',station='68-я улица — Хантер-колледж (линия Лексингтон-авеню, Ай-ар-ти)',type='o',subtype='under',eng='68th Street–Hunter College',opened='17 сентября 1918',r_key='68 St-Hunter College 6',c_key='628'}, {segment='Lex North',station='59-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='x',eng='59th Street',opened='17 июля 1918',r_key='Lexington Av N R W/59 St 4 5 6',r_ast=true,conn='[[Канатная дорога острова Рузвельт]]',c_key='629'}, {segment='Lex North',station='51-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',subtype='under',acc='yes',eng='51st Street',opened='17 июля 1918',r_key='Lexington Av-53 St E M/51 St 6',r_ast=true,c_key='630'}, {segment='Lex North',station='Центральный вокзал — 42-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='x',acc='yes',eng='Grand Central–42nd Street',opened='17 июля 1918',r_key='Grand Central-42 St S 4 5 6 7',r_ast=true,conn='[[Центральный вокзал Нью-Йорка]]',c_key='631'}, {segment='Lex',station='33-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',sep='yes',eng='33rd Street',opened='27 октября 1904',r_key='33 St 6',c_key='632'}, {segment='Lex',station='28-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',acc='s',sep='yes',eng='28th Street',opened='27 октября 1904',r_key='28 St 6',c_key='633'}, {segment='Lex',station='23-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',acc='yes',sep='yes',eng='23rd Street',opened='27 октября 1904',below_key='18',r_key='23 St 6',c_key='634'}, {segment='Lex',station='14-я улица — Юнион-сквер (линия Лексингтон-авеню, Ай-ар-ти)',type='x',eng='14th Street–Union Square',opened='27 октября 1904',r_key='14 St-Union Sq L N Q R W 4 5 6',r_ast=true,c_key='635'}, {segment='Lex',station='Астор-Плейс (линия Лексингтон-авеню, Ай-ар-ти)',type='o',sep='yes',eng='Astor Place',opened='27 октября 1904',r_key='Astor Place 6',c_key='636'}, {segment='Lex',station='Бликер-стрит (линия Лексингтон-авеню, Ай-ар-ти)',type='o',acc='yes',eng='Bleecker Street',opened='27 октября 1904',r_key='Broadway-Lafayette St B D F M/Bleecker St 6',r_ast=true,c_key='637'}, {segment='Lex',station='Спринг-стрит (линия Лексингтон-авеню, Ай-ар-ти)',type='o',sep='yes',eng='Spring Street',opened='27 октября 1904',r_key='Spring St 6',c_key='638'}, {segment='Lex',station='Канал-стрит (линия Лексингтон-авеню, Ай-ар-ти)',type='o',acc='yes',eng='Canal Street',opened='27 октября 1904',below_key='Worth',r_key='Canal St J N Q R W Z 6',r_ast=true,c_key='639'}, {segment='Lex',station='Бруклинский мост — Сити-холл (линия Лексингтон-авеню, Ай-ар-ти)',type='x',acc='yes',eng='Brooklyn Bridge–City Hall',old='Бруклинский мост',oldeng='Brooklyn Bridge',opened='27 октября 1904',below_key='CH',r_key='Brooklyn Bridge-City Hall 4 5 6/Chambers St J Z',r_ast=true,c_key='640'}, {segment='Lex South',station='Фултон-стрит (линия Лексингтон-авеню, Ай-ар-ти)',acc='yes',eng='Fulton Street',opened='16 января 1905',r_key='Fulton St A C J Z 2 3 4 5',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>[[[:en:World Trade Center station (PATH)|en]]]</sup>',c_key='418'}, {segment='Lex South',station='Уолл-стрит (линия Лексингтон-авеню, Ай-ар-ти)',eng='Wall Street',opened='12 июня 1905',r_key='Wall St 4 5',c_key='419'}, {segment='Lex South',station='Боулинг-Грин (линия Лексингтон-авеню, Ай-ар-ти)',acc='yes',eng='Bowling Green',opened='10 июля 1905',r_key='Bowling Green 4 5',c_key='420'}, {segment='BHall',station='Боро-холл (линия Истерн-Паркуэй, Ай-ар-ти)',acc='n',eng='Borough Hall',opened='1 мая 1908',above='Манхэттен<hr>Тоннель Джоралемон-стрит<hr>Бруклин',r_key='Court St R/Borough Hall 2 3 4 5',r_ast=true,c_key='423'}, {segment='Flush',station='Флашинг — Мейн-стрит (линия Флашинг, Ай-ар-ти)',type='x',subtype='suppress',acc='yes',eng='Flushing–Main Street',opened='2 января 1928',r_key='Flushing-Main St 7',conn='[[Флашинг — Мейн-стрит (LIRR)]]<sup>[[[:en:Flushing–Main Street station (LIRR)|en]]]</sup>',c_key='701'}, {segment='Flush',station='Метс — Уиллетс-Пойнт (линия Флашинг, Ай-ар-ти)',type='x',subtype='bidi',eng='Mets–Willets Point',opened='7 мая 1927',r_key='Mets-Willets Point 7',conn='[[Метс — Уиллетс-Пойнт (LIRR)]]<sup>[[[:en:Mets–Willets Point station (LIRR)|en]]]</sup>',c_key='702'}, {segment='Flush',station='111-я улица (линия Флашинг, Ай-ар-ти)',type='o',eng='111th Street',opened='13 октября 1925',r_key='111 St 7',c_key='705'}, {segment='Flush',station='103-я улица — Корона-Плаза (линия Флашинг, Ай-ар-ти)',type='o',eng='103rd Street–Corona Plaza',opened='21 апреля 1917',r_key='103 St-Corona Plaza 7',c_key='706'}, {segment='Flush',station='Джанкшен-бульвар (линия Флашинг, Ай-ар-ти)',type='x',subtype='bidi',acc='yes',eng='Junction Boulevard',opened='21 апреля 1917',r_key='Junction Blvd 7',c_key='707'}, {segment='Flush',station='90-я улица — Элмхерст-авеню (линия Флашинг, Ай-ар-ти)',type='o',eng='90th Street–Elmhurst Avenue',opened='21 апреля 1917',r_key='90 St-Elmhurst Av 7',c_key='708'}, {segment='Flush',station='82-я улица — Джексон-Хайтс (линия Флашинг, Ай-ар-ти)',type='o',eng='82nd Street–Jackson Heights',opened='21 апреля 1917',r_key='82 St-Jackson Hts 7',c_key='709'}, {segment='Flush',station='74-я улица — Бродвей (линия Флашинг, Ай-ар-ти)',type='o',acc='yes',eng='74th Street–Broadway',opened='21 апреля 1917',r_key='74-Broadway 7/Jackson Hts-Roosevelt Av E F M R',r_ast=true,c_key='710'}, {segment='Flush',station='69-я улица (линия Флашинг, Ай-ар-ти)',type='o',eng='69th Street',opened='21 апреля 1917',r_key='69 St 7',c_key='711'}, {segment='Flush',station='61-я улица — Вудсайд (линия Флашинг, Ай-ар-ти)',type='x',subtype='bidi',acc='yes',eng='61st Street–Woodside',opened='21 апреля 1917',r_key='Woodside-61 St 7',conn='[[Вудсайд (LIRR)]]<sup>[[[:en:Woodside station (LIRR)|en]]]</sup>',c_key='712'}, {segment='Flush',station='52-я улица (линия Флашинг, Ай-ар-ти)',type='o',eng='52nd Street',opened='21 апреля 1917',r_key='52 St 7',c_key='713'}, {segment='Flush',station='46-я улица — Блисс-стрит (линия Флашинг, Ай-ар-ти)',type='o',eng='46th Street–Bliss Street',opened='21 апреля 1917',r_key='46 St-Bliss St 7',c_key='714'}, {segment='Flush',station='40-я улица — Лауэри-стрит (линия Флашинг, Ай-ар-ти)',type='o',sep='yes',eng='40th Street–Lowery Street',opened='21 апреля 1917',r_key='40 St-Lowery St 7',c_key='715'}, {segment='Flush',station='33-я улица — Росон-стрит (линия Флашинг, Ай-ар-ти)',type='o',eng='33rd Street–Rawson Street',opened='21 апреля 1917',r_key='33 St-Rawson St 7',c_key='716'}, {segment='Flush West',station='Куинсборо-Плаза (линия Флашинг, Ай-ар-ти)',eng='Queensboro Plaza',opened='5 ноября 1916', below_stub='-w',below_stub_text='Было ответвление к [[линия Второй авеню, Ай-ар-ти|линии Второй авеню, Ай-ар-ти]]',r_key='Queensboro Plaza N W 7',c_key='718'}, {segment='Flush West',station='Корт-сквер (линия Флашинг, Ай-ар-ти)',acc='yes',eng='Court Square',opened='5 ноября 1916',r_key='Court Sq E G M 7',r_ast=true,c_key='719'}, {segment='Flush West',station='Хантерс-Пойнт-авеню (линия Флашинг, Ай-ар-ти)',eng='Hunters Point Avenue',opened='5 ноября 1916',r_key='Hunters Point Av 7',conn='[[Хантерспойнт-авеню (LIRR)]]<sup>[[[:en:Hunterspoint Avenue station (LIRR)|en]]]</sup>',c_key='720'}, {segment='Flush West',station='Вернон-бульвар — Джексон-авеню (линия Флашинг, Ай-ар-ти)',sep='yes',eng='Vernon Boulevard–Jackson Avenue',opened='22 июня 1915',below='Куинс<hr>Тоннель Стейнвея<hr>Манхэттен',r_key='Vernon Blvd-Jackson Av 7',conn='[[Лонг-Айленд-Сити (LIRR)]]<sup>[[[:en:Long Island City station|en]]]</sup>',c_key='721'}, {segment='Flush West',station='Центральный вокзал (линия Флашинг, Ай-ар-ти)',acc='yes',eng='Grand Central',opened='22 июня 1915',r_key='Grand Central-42 St S 4 5 6 7',r_ast=true,conn='[[Центральный вокзал Нью-Йорка]]',c_key='723'}, {segment='Flush West',station='Пятая авеню (линия Флашинг, Ай-ар-ти)',eng='Fifth Avenue',opened='22 марта 1926',r_key='42 St-Bryant Pk B D F M/5 Av 7',r_ast=true,c_key='724'}, {segment='Flush West',station='Таймс-сквер (линия Флашинг, Ай-ар-ти)',acc='yes',eng='Times Square',opened='14 марта 1927',r_key='Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E',r_ast=true,conn='[[автовокзал Портового управления]]<sup>[[[:en:Port Authority Bus Terminal|en]]]</sup>',c_key='725'}, {segment='Flush West',station='34-я улица — Хадсон-Ярдс (линия Флашинг, Ай-ар-ти)',acc='yes',subtype='bumper',eng='34th Street–Hudson Yards',opened='13 сентября 2015',r_key='34 St-Hudson Yards 7',c_key='726'}, } local stations_future = { {segment='Second 2',station='125-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='125th Street (IND Second Avenue Line)',opened='2 очередь',boro='M', conn='[[Харлем — 125-я улица (Metro-North)]]<sup>[[[:en:Harlem–125th Street station|en]]]</sup>'}, {segment='Second 2',station='116-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='116th Street (IND Second Avenue Line)',opened='2 очередь',boro='M'}, {segment='Second 2',station='106-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='106th Street (IND Second Avenue Line)',opened='2 очередь',boro='M'}, {segment='Second 3',station='55-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='55th Street (IND Second Avenue Line)',opened='3 очередь',boro='M'}, {segment='Second 3',station='42-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='42nd Street (IND Second Avenue Line)',opened='3 очередь',boro='M', conn='[[Центральный вокзал Нью-Йорка]]'}, {segment='Second 3',station='34-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='34th Street (IND Second Avenue Line)',opened='3 очередь',boro='M'}, {segment='Second 3',station='23-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='23rd Street (IND Second Avenue Line)',opened='3 очередь',boro='M'}, {segment='Second 3',station='14-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='14th Street (IND Second Avenue Line)',opened='3 очередь',boro='M'}, {segment='Second 3',station='Хаустон-стрит (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='Houston Street (IND Second Avenue Line)',opened='3 очередь',boro='M'}, {segment='Second 4',station='Гранд-стрит (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='Grand Street (IND Second Avenue Line)',opened='4 очередь',boro='M'}, {segment='Second 4',station='Чатем-сквер (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='Chatham Square (IND Second Avenue Line)',opened='4 очередь',boro='M'}, {segment='Second 4',station='Сипорт (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='Seaport (IND Second Avenue Line)',opened='4 очередь',boro='M'}, {segment='Second 4',station='Хановер-сквер (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='Hanover Square (IND Second Avenue Line)',opened='4 очередь',boro='M'}, } local stations_former = { {segment='Myrtle 4',station='Мертл-авеню (линия Четвёртой авеню, Би-эм-ти)',en='Myrtle Avenue station (BMT Fourth Avenue Line)',eng='Myrtle Avenue',saved=true,opened='22 июня 1915',closed='16 июля 1956',struc='подземная',boro='B',type='o'}, {segment='91',station='91-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',en='91st Street station (IRT Broadway–Seventh Avenue Line)',eng='91st Street',saved=true,opened='27 октября 1904',closed='2 февраля 1959',type='o',struc='подземная',boro='M'}, {segment='SF Loop',station='Саут-Ферри (внешнее кольцо)',eng='South Ferry',saved=true,opened='10 июля 1905',closed='16 марта 2009',struc='подземная',boro='M'}, -- transfer='старая станция (внешнее кольцо),<br>работавшая до открытия новой<br>(пересадки на другую линию не было)' {segment='SF Loop+',station='Саут-Ферри (Нью-Йоркское метро)',eng='South Ferry',saved=true,opened='10 июля 1905',closed='16 марта 2009',struc='подземная',boro='M',spur='sw'}, -- transfer='внутреннее и внешнее кольца' {segment='Can Pier',station='Флатландс-авеню (линия Канарси, Би-эм-ти)',eng='Flatlands Avenue',opened='28 июля 1906',closed='1917',struc='наземная',boro='B'}, {segment='Can Pier',station='Авеню Эл (линия Канарси, Би-эм-ти)',eng='Avenue L',opened='28 июля 1906',closed='1917',struc='наземная',boro='B'}, {segment='Can Pier',station='Канарси-Пир (линия Канарси, Би-эм-ти)',eng='Canarsie Pier',opened='28 июля 1906',closed='1917',struc='наземная',boro='B'}, --{segment='Cul Shuttle',station='Девятая авеню (линия Калвер, Би-эм-ти)',en='Ninth Avenue station',eng='Ninth Avenue',opened='16 марта 1919',closed='11 мая 1975',struc='в выемке',boro='B', -- transfer='станция была на нижнем<br>уровне станции [[Девятая авеню (линия Уэст-Энд, Би-эм-ти)|Девятая авеню]]'}, {segment='Cul Shuttle',station='Форт-Гамильтон-Паркуэй (линия Калвер, Би-эм-ти)',en='Fort Hamilton Parkway station (BMT Culver Line)',eng='Fort Hamilton Parkway',opened='16 марта 1919',closed='11 мая 1975',type='o',boro='B'}, {segment='Cul Shuttle',station='13-я авеню (линия Калвер, Би-эм-ти)',en='13th Avenue station (BMT Culver Line)',eng='13th Avenue',opened='16 марта 1919',closed='11 мая 1975',type='o',boro='B'}, {segment='Dean',station='Дин-стрит (линия Франклин-авеню, Би-эм-ти)',en='Dean Street station',eng='Dean Street',opened='15 августа 1896',closed='1995',boro='B'}, {segment='Museum',station='Корт-стрит (линия Фултон-стрит, Ай-эн-ди)',eng='Court Street',saved=true,opened='9 апреля 1936',closed='1946',struc='подземная',boro='B'}, {segment='Jam Ultra',station='168-я улица (линия Джамейка, Би-эм-ти)',en='168th Street station (BMT Jamaica Line)',eng='168th Street',opened='3 июля 1918',closed='10 сентября 1977',boro='Q'}, {segment='Jam Ultra',station='160-я улица (линия Джамейка, Би-эм-ти)',en='160th Street station',eng='160th Street',opened='3 июля 1918',closed='10 сентября 1977',boro='Q'}, {segment='Jam Ultra',station='Сатфин-бульвар (линия Джамейка, Би-эм-ти)',en='Sutphin Boulevard station (BMT Jamaica Line)',eng='Sutphin Boulevard',opened='3 июля 1918',closed='10 сентября 1977',boro='Q'}, {segment='Jam Ultra',station='Куинс-бульвар (линия Джамейка, Би-эм-ти)',en='Queens Boulevard station',eng='Queens Boulevard',opened='3 июля 1918',closed='15 апреля 1985',boro='Q'}, {segment='Jam Ultra',station='Метрополитан-авеню (линия Джамейка, Би-эм-ти)',en='Metropolitan Avenue station (BMT Jamaica Line)',eng='Metropolitan Avenue',opened='3 июля 1918',closed='15 апреля 1985',boro='Q'}, {segment='Jam Infra',station='Дригс-авеню (линия Джамейка, Би-эм-ти)',en='Driggs Avenue station',eng='Driggs Avenue',opened='25 июня 1888',closed='3 июля 1916',boro='B'}, {segment='Jam Infra',station='Бродвей-Ферри (линия Джамейка, Би-эм-ти)',en='Broadway Ferry station',eng='Broadway Ferry',opened='14 июля 1888',closed='3 июля 1916',boro='B'}, {segment='18',station='18-я улица (линия Лексингтон-авеню, Ай-ар-ти)',en='18th Street station (IRT Lexington Avenue Line)',eng='18th Street',saved=true,opened='27 октября 1904',closed='7 ноября 1948',type='o',struc='подземная',boro='M'}, {segment='Worth',station='Уэрт-стрит (линия Лексингтон-авеню, Ай-ар-ти)',en='Worth Street station',eng='Worth Street',saved=true,opened='27 октября 1904',closed='1 сентября 1962',type='o',struc='подземная',boro='M'}, {segment='CH',station='Сити-холл (линия Лексингтон-авеню, Ай-ар-ти)',en='City Hall station (IRT Lexington Avenue Line)',eng='City Hall',saved=true,opened='27 октября 1904',closed='31 декабря 1945',struc='подземная',boro='M',spur_noreincarn='sw'}, {segment='Myr South 1',station='Парк-Роу (линия Мертл-авеню, Би-эм-ти)',en='Park Row Terminal',eng='Park Row',opened='18 июня 1898',closed='5 марта 1944',boro='M', below='Манхэттен<hr>[[Бруклинский мост]]<hr>Бруклин'}, {segment='Myr South 1',station='Сандс-стрит (линия Мертл-авеню, Би-эм-ти)',en='Sands Street station',eng='Sands Street',opened='1 сентября 1888',closed='5 марта 1944',boro='B'}, {segment='Myr South 2',station='Адамс-стрит (линия Мертл-авеню, Би-эм-ти)',en='Adams Street station',eng='Adams Street',opened='10 апреля 1888',closed='5 марта 1944',boro='B'}, {segment='Myr South 2',station='Бридж-стрит — Джей-стрит (линия Мертл-авеню, Би-эм-ти)',en='Bridge–Jay Streets station',eng='Bridge–Jay Streets',opened='10 апреля 1888',closed='4 октября 1969',boro='B', transfer='с 1933 года была пересадка<br>на станцию [[Джей-стрит — Метротек (линии Ай-эн-ди)|Джей-стрит]]'}, {segment='Myr South 3',station='Нейви-стрит (линия Мертл-авеню, Би-эм-ти)',en='Navy Street station',eng='Navy Street',opened='10 апреля 1888',closed='4 октября 1969',boro='B'}, {segment='Myr South 3',station='Вандербилт-авеню (линия Мертл-авеню, Би-эм-ти)',en='Vanderbilt Avenue station (BMT Myrtle Avenue Line)',eng='Vanderbilt Avenue',opened='10 апреля 1888',closed='4 октября 1969',boro='B'}, {segment='Myr South 3',station='Вашингтон-авеню (линия Мертл-авеню, Би-эм-ти)',en='Washington Avenue station',eng='Washington Avenue',opened='4 декабря 1888',closed='4 октября 1969',boro='B'}, {segment='Myr South',station='Гранд-авеню (линия Мертл-авеню, Би-эм-ти)',en='Grand Avenue station (BMT Myrtle Avenue Line)',eng='Grand Avenue',opened='27 апреля 1889',closed='21 января 1953',boro='B'}, {segment='Myr South',station='Франклин-авеню (линия Мертл-авеню, Би-эм-ти)',en='Franklin Avenue station (BMT Myrtle Avenue Line)',eng='Franklin Avenue',opened='27 апреля 1889',closed='4 октября 1969',boro='B'}, {segment='Myr South',station='Ностранд-авеню (линия Мертл-авеню, Би-эм-ти)',en='Nostrand Avenue station (BMT Myrtle Avenue Line)',eng='Nostrand Avenue',opened='27 апреля 1889',closed='4 октября 1969',boro='B'}, {segment='Myr South',station='Томпкинс-авеню (линия Мертл-авеню, Би-эм-ти)',en='Tompkins Avenue station (BMT Myrtle Avenue Line)',eng='Tompkins Avenue',opened='27 апреля 1889',closed='4 октября 1969',boro='B'}, {segment='Myr South',station='Самнер-авеню (линия Мертл-авеню, Би-эм-ти)',en='Sumner Avenue station (BMT Myrtle Avenue Line)',eng='Sumner Avenue',opened='27 апреля 1889',closed='4 октября 1969',boro='B'}, {segment='Myr South',station='Бродвей (линия Мертл-авеню, Би-эм-ти)',eng='Broadway',opened='27 апреля 1889',closed='4 октября 1969',boro='B', transfer='станция была на верхнем<br>уровне станции [[Мертл-авеню (линия Джамейка, Би-эм-ти)|Мертл-авеню]]'}, {segment='180',station='180-я улица — Бронкс-парк (линия Уайт-Плейнс-роуд, Ай-ар-ти)',en='180th Street–Bronx Park station',eng='180th Street–Bronx Park',opened='26 ноября 1904',closed='4 августа 1952',boro='Bx',spur='nw'}, {segment='Second 1',station='129-я улица (линия Второй авеню, Ай-ар-ти)',en='129th Street station',eng='129th Street',opened='30 декабря 1878',closed='11 июня 1940',boro='M',spur='nw', transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню'}, {segment='Second 1',station='125-я улица (линия Второй авеню, Ай-ар-ти)',en='125th Street station (IRT Second Avenue Line)',eng='125th Street',opened='',closed='11 июня 1940',boro='M'}, {segment='Second 1',station='121-я улица (линия Второй авеню, Ай-ар-ти)',en='121st Street station (IRT Second Avenue Line)',eng='121st Street',opened='',closed='11 июня 1940',boro='M',type='o'}, {segment='Second 1',station='117-я улица (линия Второй авеню, Ай-ар-ти)',en='117th Street station',eng='117th Street',opened='',closed='11 июня 1940',boro='M',type='o'}, {segment='Second 1',station='111-я улица (линия Второй авеню, Ай-ар-ти)',en='111th Street station (IRT Second Avenue Line)',eng='111th Street',opened='',closed='11 июня 1940',boro='M',type='o'}, {segment='Second 1',station='105-я улица (линия Второй авеню, Ай-ар-ти)',en='105th Street station',eng='105th Street',opened='',closed='11 июня 1940',boro='M',type='o'}, {segment='Second 1',station='99-я улица (линия Второй авеню, Ай-ар-ти)',en='99th Street station (IRT Second Avenue Line)',eng='99th Street',opened='',closed='11 июня 1940',boro='M',type='o'}, {segment='Second 1',station='92-я улица (линия Второй авеню, Ай-ар-ти)',en='92nd Street station',eng='92nd Street',opened='',closed='11 июня 1940',boro='M',type='o'}, {segment='Second 1',station='86-я улица (линия Второй авеню, Ай-ар-ти)',en='86th Street station (IRT Second Avenue Line)',eng='86th Street',opened='',closed='11 июня 1940',boro='M'}, {segment='Second 1',station='80-я улица (линия Второй авеню, Ай-ар-ти)',en='80th Street station (IRT Second Avenue Line)',eng='80th Street',opened='',closed='11 июня 1940',boro='M',type='o'}, {segment='Second 1',station='72-я улица (линия Второй авеню, Ай-ар-ти)',en='72nd Street station (IRT Second Avenue Line)',eng='72nd Street',opened='',closed='11 июня 1940',boro='M',type='o'}, {segment='Second 1',station='65-я улица (линия Второй авеню, Ай-ар-ти)',en='65th Street station (IRT Second Avenue Line)',eng='65th Street',opened='1 марта 1880',closed='11 июня 1940',boro='M',type='o'}, {segment='Second 2',station='57-я улица (линия Второй авеню, Ай-ар-ти)',en='57th Street station (IRT Second Avenue Line)',eng='57th Street',opened='',closed='13 июня 1942',boro='M'}, {segment='Second 2',station='50-я улица (линия Второй авеню, Ай-ар-ти)',en='50th Street station (IRT Second Avenue Line)',eng='50th Street',opened='',closed='13 июня 1942',boro='M',type='o'}, {segment='Second 2',station='42-я улица (линия Второй авеню, Ай-ар-ти)',en='42nd Street station (IRT Second Avenue Line)',eng='42nd Street',opened='1 марта 1880',closed='13 июня 1942',boro='M'}, {segment='Second 2',station='34-я улица (линия Второй авеню, Ай-ар-ти)',en='34th Street station (IRT Second Avenue Line)',eng='34th Street',opened='',closed='13 июня 1942',boro='M', transfer='станция обслуживала поезда<br>[[Линия Второй авеню, Ай-ар-ти|линии Второй авеню]] и [[Линия Третьей авеню, Ай-ар-ти|челнока 34 улицы]]',type='o'}, {segment='Second 2',station='23-я улица (линия Второй авеню, Ай-ар-ти)',en='23rd Street station (IRT Second Avenue Line)',eng='23rd Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'}, {segment='Second 2',station='19-я улица (линия Второй авеню, Ай-ар-ти)',en='19th Street station (IRT Second Avenue Line)',eng='19th Street',opened='',closed='13 июня 1942',boro='M',type='o'}, {segment='Second 2',station='14-я улица (линия Второй авеню, Ай-ар-ти)',en='14th Street station (IRT Second Avenue Line)',eng='14th Street',opened='1 марта 1880',closed='13 июня 1942',boro='M'}, {segment='Second 2',station='Восьмая улица (линия Второй авеню, Ай-ар-ти)',en='Eighth Street station (IRT Second Avenue Line)',eng='Eighth Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'}, {segment='Second 2',station='Первая улица (линия Второй авеню, Ай-ар-ти)',en='First Street station (IRT Second Avenue Line)',eng='First Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'}, {segment='Second 2',station='Ривингтон-стрит (линия Второй авеню, Ай-ар-ти)',en='Rivington Street station',eng='Rivington Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'}, {segment='Second 2',station='Гранд-стрит (линия Второй авеню, Ай-ар-ти)',en='Grand Street station (IRT Second Avenue Line)',eng='Grand Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'}, {segment='Second 2',station='Канал-стрит (линия Второй авеню, Ай-ар-ти)',en='Canal Street station (IRT Second Avenue Line)',eng='Canal Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'}, {segment='Second Chatham',station='Чатем-сквер (линия Второй авеню, Ай-ар-ти)',en='Chatham Square station',eng='Chatham Square',opened='1 марта 1880',closed='12 мая 1955',boro='M', transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню'}, {segment='Second CH',station='Сити-холл (линия Второй авеню, Ай-ар-ти)',en='City Hall station (IRT Second Avenue Line)',eng='City Hall',opened='17 марта 1879',closed='31 декабря 1953',boro='M', transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню'}, --{segment='Third GHR',station='Ган-Хилл-роуд (линия Третьей авеню, Ай-ар-ти)',eng='Gun Hill Road',opened='4 октября 1920',closed='29 апреля 1973',boro='Bx', -- transfer='станция была на нижнем<br>уровне станции [[Ган-Хилл-роуд (линия Уайт-Плейнс-роуд, Ай-ар-ти)|Ган-Хилл-роуд]]'}, {segment='Third 1',station='210-я улица — Уильямсбридж (линия Третьей авеню, Ай-ар-ти)',en='210th Street–Williamsbridge station',eng='210th Street–Williamsbridge',opened='4 октября 1920',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='204-я улица (линия Третьей авеню, Ай-ар-ти)',en='204th Street station',eng='204th Street',opened='4 октября 1920',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='200-я улица (линия Третьей авеню, Ай-ар-ти)',en='200th Street station',eng='200th Street',opened='4 октября 1920',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='Бронкс-парк-терминал (линия Третьей авеню, Ай-ар-ти)',en='Bronx Park Terminal',eng='Bronx Park Terminal',opened='21 мая 1902',closed='14 ноября 1951',boro='Bx',spur='ne'}, {segment='Third 1',station='Фордем-роуд — 190-я улица (линия Третьей авеню, Ай-ар-ти)',en='Fordham Road–190th Street station',eng='Fordham Road–190th Street',opened='1 июля 1901',closed='29 апреля 1973',boro='Bx'}, {segment='Third 1',station='183-я улица (линия Третьей авеню, Ай-ар-ти)',en='183rd Street station (IRT Third Avenue Line)',eng='183rd Street',opened='1 июля 1901',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='180-я улица (линия Третьей авеню, Ай-ар-ти)',en='180th Street station (IRT Third Avenue Line)',eng='180th Street',opened='1 июля 1901',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='Тремонт-авеню — 177-я улица (линия Третьей авеню, Ай-ар-ти)',en='Tremont Avenue–177th Street station',eng='Tremont Avenue–177th Street',opened='20 июля 1891',closed='29 апреля 1973',boro='Bx'}, {segment='Third 1',station='174-я улица (линия Третьей авеню, Ай-ар-ти)',en='174th Street station (IRT Third Avenue Line)',eng='174th Street',opened='20 июля 1891',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='Клэрмонт-Паркуэй (линия Третьей авеню, Ай-ар-ти)',en='Claremont Parkway station',eng='Claremont Parkway',opened='19 сентября 1888',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='169-я улица (линия Третьей авеню, Ай-ар-ти)',en='169th Street station (IRT Third Avenue Line)',eng='169th Street',opened='2 сентября 1888',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='166-я улица (линия Третьей авеню, Ай-ар-ти)',en='166th Street station',eng='166th Street',opened='25 декабря 1887',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='161-я улица (линия Третьей авеню, Ай-ар-ти)',en='161st Street station (IRT Third Avenue Line)',eng='161st Street',opened='7 августа 1887',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='156-я улица (линия Третьей авеню, Ай-ар-ти)',en='156th Street station',eng='156th Street',opened='1 июля 1887',closed='29 апреля 1973',boro='Bx',type='o'}, {segment='Third 1',station='149-я улица (линия Третьей авеню, Ай-ар-ти)',en='149th Street station (IRT Third Avenue Line)',eng='149th Street',opened='16 июня 1887',closed='29 апреля 1973',boro='Bx', transfer='была пересадка на станцию<br>[[Третья авеню — 149-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)|Третья авеню — 149-я улица]]'}, {segment='Third 2',station='143-я улица (линия Третьей авеню, Ай-ар-ти)',en='143rd Street station',eng='143rd Street',opened='23 мая 1886',closed='12 мая 1955',boro='Bx'}, {segment='Third 2',station='138-я улица (линия Третьей авеню, Ай-ар-ти)',en='138th Street station (IRT Third Avenue Line)',eng='138th Street',opened='1 января 1887',closed='12 мая 1955',boro='Bx'}, {segment='Third 2',station='133-я улица (линия Третьей авеню, Ай-ар-ти)',en='133rd Street station',eng='133rd Street',opened='17 мая 1886',closed='12 мая 1955',boro='Bx'}, {segment='Third Willis',station='Уиллис-авеню (линия Третьей авеню, Ай-ар-ти)',en='Willis Avenue station',eng='Willis Avenue',opened='25 ноября 1886',closed='14 апреля 1924',boro='Bx',spur='ne'}, {segment='Third 129',station='129-я улица (линия Третьей авеню, Ай-ар-ти)',en='129th Street station',eng='129th Street',opened='30 декабря 1878',closed='12 мая 1955',boro='M',type='o', transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню',above='Бронкс<hr>Манхэттен'}, {segment='Third 3',station='125-я улица (линия Третьей авеню, Ай-ар-ти)',en='125th Street station (IRT Third Avenue Line)',eng='125th Street',opened='30 декабря 1878',closed='12 мая 1955',boro='M'}, {segment='Third 3',station='116-я улица (линия Третьей авеню, Ай-ар-ти)',en='116th Street station (IRT Third Avenue Line)',eng='116th Street',opened='30 декабря 1878',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 3',station='106-я улица (линия Третьей авеню, Ай-ар-ти)',en='106th Street station (IRT Third Avenue Line)',eng='106th Street',opened='30 декабря 1878',closed='12 мая 1955',boro='M'}, {segment='Third 3',station='99-я улица (линия Третьей авеню, Ай-ар-ти)',en='99th Street station (IRT Third Avenue Line)',eng='99th Street',opened='30 декабря 1878',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 3',station='89-я улица (линия Третьей авеню, Ай-ар-ти)',en='89th Street station',eng='89th Street',opened='9 декабря 1878',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 3',station='84-я улица (линия Третьей авеню, Ай-ар-ти)',en='84th Street station',eng='84th Street',opened='9 декабря 1878',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 3',station='76-я улица (линия Третьей авеню, Ай-ар-ти)',en='76th Street station (IRT Third Avenue Line)',eng='76th Street',opened='9 декабря 1878',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 3',station='67-я улица (линия Третьей авеню, Ай-ар-ти)',en='67th Street station',eng='67th Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 3',station='59-я улица (линия Третьей авеню, Ай-ар-ти)',en='59th Street station (IRT Third Avenue Line)',eng='59th Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 3',station='53-я улица (линия Третьей авеню, Ай-ар-ти)',en='53rd Street station (IRT Third Avenue Line)',eng='53rd Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 3',station='47-я улица (линия Третьей авеню, Ай-ар-ти)',en='47th Street station (IRT Third Avenue Line)',eng='47th Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 3',station='Центральный вокзал (линия Третьей авеню, Ай-ар-ти)',en='Grand Central station (IRT elevated)',eng='Grand Central',opened='26 августа 1878',closed='6 декабря 1923',boro='M',spur='nw'}, {segment='Third 3',station='42-я улица (линия Третьей авеню, Ай-ар-ти)',en='42nd Street station (IRT Third Avenue Line)',eng='42nd Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M'}, {segment='Third 34',station='Паром 34-й улицы (линия Третьей авеню, Ай-ар-ти)',en='34th Street Ferry station',eng='34th Street Ferry',opened='1 июля 1880',closed='14 июля 1930',boro='M'}, {segment='Third 34',station='Вторая авеню (линия Третьей авеню, Ай-ар-ти)',en='34th Street station (IRT Second Avenue Line)',eng='Second Avenue',opened='',closed='14 июля 1930',boro='M', transfer='станция обслуживала поезда<br>[[Линия Второй авеню, Ай-ар-ти|линии Второй авеню]] и [[Линия Третьей авеню, Ай-ар-ти|челнока 34 улицы]]'}, {segment='Third 4',station='34-я улица (линия Третьей авеню, Ай-ар-ти)',en='34th Street station (IRT Third Avenue Line)',eng='34th Street',opened='26 августа 1878',closed='12 мая 1955',boro='M',type='o', transfer='<b>Заканчивался челнок 34 улицы</b>'}, {segment='Third 4',station='28-я улица (линия Третьей авеню, Ай-ар-ти)',en='28th Street station (IRT Third Avenue Line)',eng='28th Street',opened='',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 4',station='23-я улица (линия Третьей авеню, Ай-ар-ти)',en='23rd Street station (IRT Third Avenue Line)',eng='23rd Street',opened='26 августа 1878',closed='12 мая 1955',boro='M'}, {segment='Third 4',station='18-я улица (линия Третьей авеню, Ай-ар-ти)',en='18th Street station (IRT Third Avenue Line)',eng='18th Street',opened='',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 4',station='14-я улица (линия Третьей авеню, Ай-ар-ти)',en='14th Street station (IRT Third Avenue Line)',eng='14th Street',opened='26 августа 1878',closed='12 мая 1955',boro='M',type='o'}, {segment='Third 4',station='Девятая улица (линия Третьей авеню, Ай-ар-ти)',en='Ninth Street station (IRT Third Avenue Line)',eng='Ninth Street',opened='26 августа 1878',closed='12 мая 1955',boro='M'}, {segment='Third 4',station='Хаустон-стрит (линия Третьей авеню, Ай-ар-ти)',en='Houston Street station (IRT Third Avenue Line)',eng='Houston Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M'}, {segment='Third 4',station='Гранд-стрит (линия Третьей авеню, Ай-ар-ти)',en='Grand Street station (IRT Third Avenue Line)',eng='Grand Street',opened='',closed='12 мая 1955',boro='M'}, {segment='Third 4',station='Канал-стрит (линия Третьей авеню, Ай-ар-ти)',en='Canal Street station (IRT Third Avenue Line)',eng='Canal Street',opened='',closed='12 мая 1955',boro='M'}, {segment='Third Chatham',station='Чатем-сквер (линия Третьей авеню, Ай-ар-ти)',en='Chatham Square station',eng='Chatham Square',opened='17 марта 1879',closed='31 декабря 1953',boro='M', transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню'}, {segment='Third CH',station='Сити-холл (линия Третьей авеню, Ай-ар-ти)',en='City Hall station (IRT Second Avenue Line)',eng='City Hall',opened='17 марта 1879',closed='31 декабря 1953',boro='M', transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню',spur='sw'}, {segment='Third 5',station='Франклин-сквер (линия Третьей авеню, Ай-ар-ти)',en='Franklin Square station (IRT Third Avenue Line)',eng='Franklin Square',opened='26 августа 1878',closed='22 декабря 1950',boro='M'}, {segment='Third 5',station='Фултон-стрит (линия Третьей авеню, Ай-ар-ти)',en='Fulton Street station (IRT Third Avenue Line)',eng='Fulton Street',opened='26 августа 1878',closed='22 декабря 1950',boro='M'}, {segment='Third 5',station='Хановер-сквер (линия Третьей авеню, Ай-ар-ти)',en='Hanover Square station',eng='Hanover Square',opened='26 августа 1878',closed='22 декабря 1950',boro='M'}, {segment='SF elevated',station='Саут-Ферри (линия Третьей авеню, Ай-ар-ти)',en='South Ferry station (IRT elevated)',eng='South Ferry',opened='26 августа 1878',closed='22 декабря 1950',boro='M', transfer='станция обслуживала поезда<br>линий [[Линия Третьей авеню, Ай-ар-ти|Третьей]], [[Линия Шестой авеню, Ай-ар-ти|Шестой]] и [[Линия Девятой авеню, Ай-ар-ти|Девятой]] авеню'}, {segment='Sixth 1',station='53-я улица и Восьмая авеню (линия Шестой авеню, Ай-ар-ти)',en='53rd Street and Eighth Avenue station',eng='53rd Street and Eighth Avenue',opened='1881',closed='4 декабря 1938',boro='M',type='o'}, {segment='Sixth 1',station='Терминал 58-й улицы (линия Шестой авеню, Ай-ар-ти)',en='58th Street Terminal',eng='58th Street Terminal',opened='5 июня 1878',closed='16 июня 1924',boro='M',spur='ne'}, {segment='Sixth 1',station='50-я улица (линия Шестой авеню, Ай-ар-ти)',en='50th Street station (IRT Sixth Avenue Line)',eng='50th Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='42-я улица (линия Шестой авеню, Ай-ар-ти)',en='42nd Street station (IRT Sixth Avenue Line)',eng='42nd Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='38-я улица (линия Шестой авеню, Ай-ар-ти)',en='38th Street station (IRT Sixth Avenue Line)',eng='38th Street',opened='31 января 1914',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='33-я улица (линия Шестой авеню, Ай-ар-ти)',en='33rd Street station (IRT Sixth Avenue Line)',eng='33rd Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='28-я улица (линия Шестой авеню, Ай-ар-ти)',en='28th Street station (IRT Sixth Avenue Line)',eng='28th Street',opened='1892',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='23-я улица (линия Шестой авеню, Ай-ар-ти)',en='23rd Street station (IRT Sixth Avenue Line)',eng='23rd Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='18-я улица (линия Шестой авеню, Ай-ар-ти)',en='18th Street station (IRT Sixth Avenue Line)',eng='18th Street',opened='1892',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='14-я улица (линия Шестой авеню, Ай-ар-ти)',en='14th Street station (IRT Sixth Avenue Line)',eng='14th Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='Восьмая улица (линия Шестой авеню, Ай-ар-ти)',en='Eighth Street station (IRT Sixth Avenue Line)',eng='Eighth Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='Бликер-стрит (линия Шестой авеню, Ай-ар-ти)',en='Bleecker Street station (IRT Sixth Avenue Line)',eng='Bleecker Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='Гранд-стрит (линия Шестой авеню, Ай-ар-ти)',en='Grand Street station (IRT Sixth Avenue Line)',eng='Grand Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='Франклин-стрит (линия Шестой авеню, Ай-ар-ти)',en='Franklin Street station (IRT Sixth Avenue Line)',eng='Franklin Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M',type='o'}, {segment='Sixth 1',station='Чеймберс-стрит (линия Шестой авеню, Ай-ар-ти)',en='Chambers Street station (IRT Sixth Avenue Line)',eng='Chambers Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='Парк-Плейс (линия Шестой авеню, Ай-ар-ти)',en='Park Place station (IRT Sixth Avenue Line)',eng='Park Place',opened='5 июня 1878',closed='4 декабря 1938',boro='M'}, {segment='Sixth 1',station='Кортландт-стрит (линия Шестой авеню, Ай-ар-ти)',en='Cortlandt Street station (IRT Sixth Avenue Line)',eng='Cortlandt Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M',type='o'}, {segment='Sixth 1',station='Ректор-стрит (линия Шестой авеню, Ай-ар-ти)',en='Rector Street station (IRT Sixth Avenue Line)',eng='Rector Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M',type='o'}, {segment='BP',station='Баттери-Плейс (линия Шестой авеню, Ай-ар-ти)',en='Battery Place station',eng='Battery Place',opened='',closed='11 июня 1940',boro='M', transfer='станция обслуживала поезда<br>линий [[Линия Шестой авеню, Ай-ар-ти|Шестой]] и [[Линия Девятой авеню, Ай-ар-ти|Девятой]] авеню'}, {segment='Ninth 1',station='Андерсон-авеню — Джером-авеню (линия Девятой авеню, Ай-ар-ти)',en='Anderson–Jerome Avenues station',eng='Anderson–Jerome Avenues',opened='1 июля 1918',closed='31 августа 1958',struc='эстакадная и подземная',boro='Bx', transfer='частично сохранилась'}, {segment='Ninth 1',station='Седжвик-авеню (линия Девятой авеню, Ай-ар-ти)',en='Sedgwick Avenue station',eng='Sedgwick Avenue',opened='1 июля 1918',closed='31 августа 1958',struc='эстакадная и подземная',boro='Bx', transfer='частично сохранилась'}, {segment='Ninth 1',station='155-я улица (линия Девятой авеню, Ай-ар-ти)',en='155th Street station (IRT Ninth Avenue Line)',eng='155th Street',opened='1879',closed='31 августа 1958',boro='M',above='Бронкс<hr>Манхэттен'}, {segment='Ninth 1',station='151-я улица (линия Девятой авеню, Ай-ар-ти)',en='151st Street station',eng='151st Street',opened='15 ноября 1917',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='145-я улица (линия Девятой авеню, Ай-ар-ти)',en='145th Street station (IRT Ninth Avenue Line)',eng='145th Street',opened='1 декабря 1879',closed='11 июня 1940',boro='M'}, {segment='Ninth 1',station='140-я улица (линия Девятой авеню, Ай-ар-ти)',en='140th Street station (IRT Ninth Avenue Line)',eng='140th Street',opened='27 сентября 1879',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='135-я улица (линия Девятой авеню, Ай-ар-ти)',en='135th Street station (IRT Ninth Avenue Line)',eng='135th Street',opened='27 сентября 1879',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='130-я улица (линия Девятой авеню, Ай-ар-ти)',en='130th Street station',eng='130th Street',opened='27 сентября 1879',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='125-я улица (линия Девятой авеню, Ай-ар-ти)',en='125th Street station (IRT Ninth Avenue Line)',eng='125th Street',opened='17 сентября 1879',closed='11 июня 1940',boro='M'}, {segment='Ninth 1',station='116-я улица (линия Девятой авеню, Ай-ар-ти)',en='116th Street station (IRT Ninth Avenue Line)',eng='116th Street',opened='17 сентября 1879',closed='11 июня 1940',boro='M'}, {segment='Ninth 1',station='110-я улица (линия Девятой авеню, Ай-ар-ти)',en='110th Street station (IRT Ninth Avenue Line)',eng='110th Street',opened='3 июня 1903',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='104-я улица (линия Девятой авеню, Ай-ар-ти)',en='104th Street station (IRT Ninth Avenue Line)',eng='104th Street',opened='21 июня 1879',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='99-я улица (линия Девятой авеню, Ай-ар-ти)',en='99th Street station (IRT Ninth Avenue Line)',eng='99th Street',opened='21 июня 1879',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='93-я улица (линия Девятой авеню, Ай-ар-ти)',en='93rd Street station',eng='93rd Street',opened='21 июня 1879',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='86-я улица (линия Девятой авеню, Ай-ар-ти)',en='86th Street station (IRT Ninth Avenue Line)',eng='86th Street',opened='21 июня 1879',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='81-я улица (линия Девятой авеню, Ай-ар-ти)',en='81st Street station (IRT Ninth Avenue Line)',eng='81st Street',opened='9 июня 1879',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='72-я улица (линия Девятой авеню, Ай-ар-ти)',en='72nd Street station (IRT Ninth Avenue Line)',eng='72nd Street',opened='9 июня 1879',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 1',station='66-я улица (линия Девятой авеню, Ай-ар-ти)',en='66th Street station (IRT Ninth Avenue Line)',eng='66th Street',opened='',closed='11 июня 1940',boro='M'}, {segment='Ninth 1',station='59-я улица (линия Девятой авеню, Ай-ар-ти)',en='59th Street station (IRT Ninth Avenue Line)',eng='59th Street',opened='9 июня 1879',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 2',station='50-я улица (линия Девятой авеню, Ай-ар-ти)',en='50th Street station (IRT Ninth Avenue Line)',eng='50th Street',opened='18 января 1876',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 2',station='42-я улица (линия Девятой авеню, Ай-ар-ти)',en='42nd Street station (IRT Ninth Avenue Line)',eng='42nd Street',opened='6 ноября 1875',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 2',station='34-я улица (линия Девятой авеню, Ай-ар-ти)',en='34th Street station (IRT Ninth Avenue Line)',eng='34th Street',opened='30 июля 1873',closed='11 июня 1940',boro='M'}, {segment='Ninth 2',station='30-я улица (линия Девятой авеню, Ай-ар-ти)',en='30th Street station (IRT Ninth Avenue Line)',eng='30th Street',opened='13 декабря 1873',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 2',station='23-я улица (линия Девятой авеню, Ай-ар-ти)',en='23rd Street station (IRT Ninth Avenue Line)',eng='23rd Street',opened='21 октября 1873',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 2',station='14-я улица (линия Девятой авеню, Ай-ар-ти)',en='14th Street station (IRT Ninth Avenue Line)',eng='14th Street',opened='',closed='11 июня 1940',boro='M'}, {segment='Ninth 2',station='Кристофер-стрит (линия Девятой авеню, Ай-ар-ти)',en='Christopher Street station (IRT Ninth Avenue Line)',eng='Christopher Street',opened='3 ноября 1873',closed='11 июня 1940',boro='M'}, {segment='Ninth 2',station='Хаустон-стрит (линия Девятой авеню, Ай-ар-ти)',en='Houston Street station (IRT Ninth Avenue Line)',eng='Houston Street',opened='3 ноября 1873',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 2',station='Дебросс-стрит (линия Девятой авеню, Ай-ар-ти)',en='Desbrosses Street station',eng='Desbrosses Street',opened='23 ноября 1873',closed='11 июня 1940',boro='M'}, {segment='Ninth 2',station='Франклин-стрит (линия Девятой авеню, Ай-ар-ти)',en='Franklin Street station (IRT Ninth Avenue Line)',eng='Franklin Street',opened='21 января 1873',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 2',station='Уоррен-стрит (линия Девятой авеню, Ай-ар-ти)',en='Warren Street station (IRT Ninth Avenue Line)',eng='Warren Street',opened='14 февраля 1870',closed='11 июня 1940',boro='M'}, {segment='Ninth 2',station='Баркли-стрит (линия Девятой авеню, Ай-ар-ти)',en='Barclay Street station',eng='Barclay Street',opened='14 февраля 1870',closed='11 июня 1940',boro='M',type='o'}, {segment='Ninth 2',station='Кортландт-стрит (линия Девятой авеню, Ай-ар-ти)',en='Cortlandt Street station (IRT Ninth Avenue Line)',eng='Cortlandt Street',opened='25 мая 1874',closed='11 июня 1940',boro='M'}, {segment='Ninth 2',station='Ректор-стрит (линия Девятой авеню, Ай-ар-ти)',en='Rector Street station (IRT Ninth Avenue Line)',eng='Rector Street',opened='25 мая 1874',closed='11 июня 1940',boro='M'}, --two additional tracks ended at a bumper just south of the station {segment='Fifth 1',station='Фултон-стрит (линия Пятой авеню, Би-эм-ти)',en='Fulton Street station (BMT Fifth Avenue Line)',eng='Fulton Street',opened='27 июля 1889',closed='1 июня 1940',boro='B'}, {segment='Fifth 1',station='Атлантик-авеню (линия Пятой авеню, Би-эм-ти)',en='Atlantic Avenue (BMT Fifth Avenue Line)',eng='Atlantic Avenue',opened='5 ноября 1888',closed='1 июня 1940',boro='B', transfer='была пересадка на станции «Атлантик-авеню»<br>линий [[Атлантик-авеню — Барклайс-центр (линия Брайтон, Би-эм-ти)|Брайтон]] и [[Атлантик-авеню — Барклайс-центр (линия Четвёртой авеню, Би-эм-ти)|Четвёртой авеню]]'}, {segment='Fifth 1',station='Сент-Маркс-авеню (линия Пятой авеню, Би-эм-ти)',en='Saint Marks Avenue station',eng='St. Marks Avenue',opened='22 июня 1889',closed='1 июня 1940',boro='B'}, {segment='Fifth 1',station='Юнион-стрит (линия Пятой авеню, Би-эм-ти)',en='Union Street station (BMT Fifth Avenue Line)',eng='Union Street',opened='22 июня 1889',closed='1 июня 1940',boro='B'}, {segment='Fifth 1',station='Третья улица (линия Пятой авеню, Би-эм-ти)',en='Third Street station (BMT Fifth Avenue Line)',eng='Third Street',opened='22 июня 1889',closed='1 июня 1940',boro='B'}, {segment='Fifth 1',station='Девятая улица (линия Пятой авеню, Би-эм-ти)',en='Ninth Street station (BMT Fifth Avenue Line)',eng='Ninth Street',opened='15 августа 1889',closed='1 июня 1940',boro='B'}, {segment='Fifth 1',station='16-я улица (линия Пятой авеню, Би-эм-ти)',en='16th Street station (BMT Fifth Avenue Line)',eng='16th Street',opened='15 августа 1889',closed='1 июня 1940',boro='B'}, {segment='Fifth 1',station='20-я улица (линия Пятой авеню, Би-эм-ти)',en='20th Street station (BMT Fifth Avenue Line)',eng='20th Street',opened='15 августа 1889',closed='1 июня 1940',boro='B'}, {segment='Fifth 1',station='25-я улица (линия Пятой авеню, Би-эм-ти)',en='25th Street station (BMT Fifth Avenue Line)',eng='25th Street',opened='15 августа 1889',closed='1 июня 1940',boro='B'}, {segment='Fifth 1',station='36-я улица (линия Пятой авеню, Би-эм-ти)',en='36th Street station (BMT Fifth Avenue Line)',eng='36th Street',opened='29 мая 1890',closed='1 июня 1940',boro='B'}, {segment='Fifth 2',station='40-я улица (линия Пятой авеню, Би-эм-ти)',en='40th Street station (BMT Fifth Avenue Line)',eng='40th Street',opened='1 октября 1893',closed='1 июня 1940',boro='B'}, {segment='Fifth 2',station='46-я улица (линия Пятой авеню, Би-эм-ти)',en='46th Street station (BMT Fifth Avenue Line)',eng='46th Street',opened='1 октября 1893',closed='1 июня 1940',boro='B'}, {segment='Fifth 2',station='52-я улица (линия Пятой авеню, Би-эм-ти)',en='52nd Street station (BMT Fifth Avenue Line)',eng='52nd Street',opened='1 октября 1893',closed='1 июня 1940',boro='B'}, {segment='Fifth 2',station='58-я улица (линия Пятой авеню, Би-эм-ти)',en='58th Street station (BMT Fifth Avenue Line)',eng='58th Street',opened='1 октября 1893',closed='1 июня 1940',boro='B'}, {segment='Fifth 2',station='65-я улица (линия Пятой авеню, Би-эм-ти)',en='65th Street Terminal station',eng='65th Street',opened='1 октября 1893',closed='1 июня 1940',boro='B'}, {segment='FF',station='Фултон-Ферри (линия Фултон-стрит, Би-эм-ти)',en='Fulton Ferry station',eng='Fulton Ferry',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 0',station='Кларк-стрит (линия Фултон-стрит, Би-эм-ти)',station2='Тиллари-стрит (линия Фултон-стрит, Би-эм-ти)',en='Clark–Tillary Streets station',eng='Clark Street, Tillary Street',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 0',station='Корт-стрит (линия Фултон-стрит, Би-эм-ти)',station2='Мертл-авеню (линия Фултон-стрит, Би-эм-ти)',en='Court Street–Myrtle Avenue station',eng='Court Street, Myrtle Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 0',station='Борум-Плейс (линия Фултон-стрит, Би-эм-ти)',en='Boerum Place station',eng='Boerum Place',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 0',station='Элм-Плейс — Даффилд-стрит (линия Фултон-стрит, Би-эм-ти)',en='Elm Place–Duffield Street station',eng='Elm Place–Duffield Street',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 0',station='Флатбуш-авеню (линия Фултон-стрит, Би-эм-ти)',en='Flatbush Avenue station (BMT Fulton Street Line)',eng='Flatbush Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 0',station='Лафайетт-авеню (линия Фултон-стрит, Би-эм-ти)',en='Lafayette Avenue station (BMT Fulton Street Line)',eng='Lafayette Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 0',station='Камберленд-стрит (линия Фултон-стрит, Би-эм-ти)',en='Cumberland Avenue station (BMT Fulton Street Line)',eng='Cumberland Street',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 0',station='Вандербилт-авеню (линия Фултон-стрит, Би-эм-ти)',en='Vanderbilt Avenue station (BMT Fulton Street Line)',eng='Vanderbilt Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 0',station='Гранд-авеню (линия Фултон-стрит, Би-эм-ти)',en='Grand Avenue station (BMT Fulton Street Line)',eng='Grand Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, --{segment='Ful 0',station='Франклин-авеню (линия Фултон-стрит, Би-эм-ти)',en='Franklin Avenue (BMT Fulton Street Line) original station',eng='Franklin Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B', -- transfer='была пересадка на станцию<br>[[Франклин-авеню (линия Франклин-авеню, Би-эм-ти)|Франклин-авеню]]'}, {segment='Ful 1',station='Ностранд-авеню (линия Фултон-стрит, Би-эм-ти)',en='Nostrand Avenue station (BMT Fulton Street Line)',eng='Nostrand Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 1',station='Бруклин-авеню (линия Фултон-стрит, Би-эм-ти)',station2='Томпкинс-авеню (линия Фултон-стрит, Би-эм-ти)',en='Brooklyn–Tompkins Avenues station',eng='Brooklyn Avenue, Tompkins Avenue',opened='30 мая 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 1',station='Олбани-авеню (линия Фултон-стрит, Би-эм-ти)',station2='Самнер-авеню (линия Фултон-стрит, Би-эм-ти)',en='Albany–Sumner Avenues station',eng='Albany Avenue, Sumner Avenue (westbound)',opened='30 мая 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 1',station='Трой-авеню (линия Фултон-стрит, Би-эм-ти)',en='Troy Avenue station',eng='Troy Avenue',opened='середина 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 1',station='Рид-авеню (линия Фултон-стрит, Би-эм-ти)',en='Reid Avenue station (BMT Fulton Street Line)',eng='Reid Avenue',opened='середина 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 1',station='Ральф-авеню (линия Фултон-стрит, Би-эм-ти)',en='Ralph Avenue station (BMT Fulton Street Line)',eng='Ralph Avenue',opened='1 октября 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 1',station='Саратога-авеню (линия Фултон-стрит, Би-эм-ти)',en='Saratoga Avenue station (BMT Fulton Street Line)',eng='Saratoga Avenue',opened='3 декабря 1888',closed='1 июня 1940',boro='B'}, {segment='Ful 1',station='Рокавей-авеню (линия Фултон-стрит, Би-эм-ти)',en='Rockaway Avenue station (BMT Fulton Street Line)',eng='Rockaway Avenue',opened='16 ноября 1888',closed='26 апреля 1956',boro='B'}, {segment='Ful 1',station='Манхэттен-Джанкшен (линия Фултон-стрит, Би-эм-ти)',en='Manhattan Junction (BMT Fulton Street Line)',eng='Manhattan Junction',opened='4 июля 1889',closed='26 апреля 1956',boro='B', transfer='станция входила в пересадочный<br>узел [[Бродвей-Джанкшен (Нью-Йоркское метро)|Бродвей-Джанкшен]]'}, --{segment='Ful 2',station='Истерн-Паркуэй (линия Фултон-стрит, Би-эм-ти)',en='Eastern Parkway station',eng='Eastern Parkway',opened='18 ноября 1889',closed='17 ноября 1918',boro='B'}, {segment='Ful 2',station='Хинсдейл-стрит (линия Фултон-стрит, Би-эм-ти)',en='Hinsdale Street station',eng='Hinsdale Street',opened='17 ноября 1918',closed='26 апреля 1956',boro='B'}, {segment='Ful 2',station='Пенсильвейния-авеню (линия Фултон-стрит, Би-эм-ти)',en='Pennsylvania Avenue station (BMT Fulton Street Line)',eng='Pennsylvania Avenue',opened='18 ноября 1889',closed='26 апреля 1956',boro='B'}, {segment='Ful 2',station='Ван-Сиклен-авеню (линия Фултон-стрит, Би-эм-ти)',en='Van Siclen Avenue station (BMT Fulton Street Line)',eng='Van Siclen Avenue',opened='18 ноября 1889',closed='26 апреля 1956',boro='B'}, {segment='Ful 2',station='Линвуд-стрит (линия Фултон-стрит, Би-эм-ти)',en='Linwood Street station',eng='Linwood Street',opened='22 февраля 1892',closed='26 апреля 1956',boro='B'}, {segment='Ful 2',station='Монток-авеню (линия Фултон-стрит, Би-эм-ти)',en='Montauk Avenue station',eng='Montauk Avenue',opened='21 марта 1892',closed='26 апреля 1956',boro='B'}, {segment='Ful 2',station='Честнат-стрит (линия Фултон-стрит, Би-эм-ти)',en='Chestnut Street station (BMT Fulton Street Line)',eng='Chestnut Street',opened='16 июля 1894',closed='26 апреля 1956',boro='B'}, {segment='Ful 2',station='Кресент-стрит (линия Фултон-стрит, Би-эм-ти)',en='Crescent Street station (BMT Fulton Street Line)',eng='Crescent Street',opened='16 июля 1894',closed='26 апреля 1956',boro='B'}, {segment='Ful 2',station='Грант-авеню (линия Фултон-стрит, Би-эм-ти)',en='Grant Avenue station (BMT Fulton Street Line)',eng='Grant Avenue',opened='16 июля 1894',closed='26 апреля 1956',boro='B'}, {segment='Lex 1',station='Мертл-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Myrtle Avenue station (BMT Lexington Avenue Line)',eng='Myrtle Avenue',opened='после 1912',closed='13 октября 1950',boro='B'}, {segment='Lex 1',station='Декалб-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='DeKalb Avenue station (BMT Lexington Avenue Line)',eng='DeKalb Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'}, {segment='Lex 1',station='Грин-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Greene Avenue station',eng='Greene Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'}, {segment='Lex 1',station='Франклин-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Franklin Avenue station (BMT Lexington Avenue Line)',eng='Franklin Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'}, {segment='Lex 1',station='Ностранд-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Nostrand Avenue station (BMT Lexington Avenue Line)',eng='Nostrand Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'}, {segment='Lex 1',station='Томпкинс-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Tompkins Avenue station (BMT Lexington Avenue Line)',eng='Tompkins Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'}, {segment='Lex 1',station='Самнер-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Sumner Avenue station (BMT Lexington Avenue Line)',eng='Sumner Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'}, {segment='Lex 1',station='Рид-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Reid Avenue station (BMT Lexington Avenue Line)',eng='Reid Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'}, {segment='WF',station='Уорлдс-Фэр (линия Всемирной выставки, Ай-эн-ди)',en='World\'s Fair station',eng='World’s Fair',opened='30 апреля 1939',closed='28 октября 1940',struc='наземная',boro='Q'}, } local twins = { ['Канал-стрит (линия Бродвея, Би-эм-ти)']={ eng='Canal Street', comment1='на ветке через тоннель', comment2='на ветке через мост', station1='Канал-стрит (линия Бродвея, Би-эм-ти, через тоннель)', station2='Канал-стрит (линия Бродвея, Би-эм-ти, через мост)' }, ['Чеймберс-стрит — Всемирный торговый центр (линия Восьмой авеню, Ай-эн-ди)']={ eng='Chambers Street–World Trade Center', comment1='«Чеймберс-стрит»', comment2='«ВТЦ»', station1='Чеймберс-стрит (линия Восьмой авеню, Ай-эн-ди)', station2='Всемирный торговый центр (линия Восьмой авеню, Ай-эн-ди)' }, } local routes_periods = { {route='1',period='rh',segment='Bway7 North Tip'}, {route='1',period='rh',segment='Bway7 North'}, {route='1',period='rh',segment='Bway7 Middle'}, {route='1',period='rh',segment='Bway7a'}, {route='1',period='rh',segment='Bway7b'}, {route='1',period='rh',segment='Bway7 South Tip'}, {route='1',period='md',segment='Bway7 North Tip'}, {route='1',period='md',segment='Bway7 North'}, {route='1',period='md',segment='Bway7 Middle'}, {route='1',period='md',segment='Bway7a'}, {route='1',period='md',segment='Bway7b'}, {route='1',period='md',segment='Bway7 South Tip'}, {route='1',period='ev',segment='Bway7 North Tip'}, {route='1',period='ev',segment='Bway7 North'}, {route='1',period='ev',segment='Bway7 Middle'}, {route='1',period='ev',segment='Bway7a'}, {route='1',period='ev',segment='Bway7b'}, {route='1',period='ev',segment='Bway7 South Tip'}, {route='1',period='we',segment='Bway7 North Tip'}, {route='1',period='we',segment='Bway7 North'}, {route='1',period='we',segment='Bway7 Middle'}, {route='1',period='we',segment='Bway7a'}, {route='1',period='we',segment='Bway7b'}, {route='1',period='we',segment='Bway7 South Tip'}, {route='1',period='ln',segment='Bway7 North Tip'}, {route='1',period='ln',segment='Bway7 North'}, {route='1',period='ln',segment='Bway7 Middle'}, {route='1',period='ln',segment='Bway7a'}, {route='1',period='ln',segment='Bway7b'}, {route='1',period='ln',segment='Bway7 South Tip'}, {route='2',period='rh',segment='WPR North Tip',pattern='o '}, {route='2',period='rh',segment='WPR North'}, {route='2',period='rh',segment='E180'}, {route='2',period='rh',segment='WPR South'}, {route='2',period='rh',segment='WPR South Tip'}, {route='2',period='rh',segment='Lenox South'}, {route='2',period='rh',segment='Bway7a',how='x'}, {route='2',period='rh',segment='Bway7b',how='x'}, {route='2',period='rh',segment='Bway7 South'}, {route='2',period='rh',segment='Hoyt'}, {route='2',period='rh',segment='EP',shape='|\\'}, {route='2',period='rh',segment='Nostrand',pattern='o|'}, {route='2',period='rh',segment='EP East',dir='peak+',fork='south',pattern=' o'}, {route='2',period='rh',segment='NL',dir='peak+'}, {route='2',period='md',segment='WPR North Tip'}, {route='2',period='md',segment='WPR North'}, {route='2',period='md',segment='E180'}, {route='2',period='md',segment='WPR South'}, {route='2',period='md',segment='WPR South Tip'}, {route='2',period='md',segment='Lenox South'}, {route='2',period='md',segment='Bway7a',how='x'}, {route='2',period='md',segment='Bway7b',how='x'}, {route='2',period='md',segment='Bway7 South'}, {route='2',period='md',segment='Hoyt'}, {route='2',period='md',segment='EP'}, {route='2',period='md',segment='Nostrand'}, {route='2',period='ev',segment='WPR North Tip'}, {route='2',period='ev',segment='WPR North'}, {route='2',period='ev',segment='E180'}, {route='2',period='ev',segment='WPR South'}, {route='2',period='ev',segment='WPR South Tip'}, {route='2',period='ev',segment='Lenox South'}, {route='2',period='ev',segment='Bway7a',how='x'}, {route='2',period='ev',segment='Bway7b',how='x'}, {route='2',period='ev',segment='Bway7 South'}, {route='2',period='ev',segment='Hoyt'}, {route='2',period='ev',segment='EP'}, {route='2',period='ev',segment='Nostrand'}, {route='2',period='we',segment='WPR North Tip'}, {route='2',period='we',segment='WPR North'}, {route='2',period='we',segment='E180'}, {route='2',period='we',segment='WPR South'}, {route='2',period='we',segment='WPR South Tip'}, {route='2',period='we',segment='Lenox South'}, {route='2',period='we',segment='Bway7a',how='x'}, {route='2',period='we',segment='Bway7b',how='x'}, {route='2',period='we',segment='Bway7 South'}, {route='2',period='we',segment='Hoyt'}, {route='2',period='we',segment='EP'}, {route='2',period='we',segment='Nostrand'}, {route='2',period='ln',segment='WPR North Tip'}, {route='2',period='ln',segment='WPR North'}, {route='2',period='ln',segment='E180'}, {route='2',period='ln',segment='WPR South'}, {route='2',period='ln',segment='WPR South Tip'}, {route='2',period='ln',segment='Lenox South'}, {route='2',period='ln',segment='Bway7a'}, {route='2',period='ln',segment='Bway7b'}, {route='2',period='ln',segment='Bway7 South'}, {route='2',period='ln',segment='Hoyt'}, {route='2',period='ln',segment='EP'}, {route='2',period='ln',segment='Nostrand'}, {route='3',period='rh',segment='Lenox North'}, {route='3',period='rh',segment='Lenox South'}, {route='3',period='rh',segment='Bway7a',how='x'}, {route='3',period='rh',segment='Bway7b',how='x'}, {route='3',period='rh',segment='Bway7 South'}, {route='3',period='rh',segment='Hoyt'}, {route='3',period='rh',segment='EP'}, {route='3',period='rh',segment='EP East'}, {route='3',period='rh',segment='NL'}, {route='3',period='md',segment='Lenox North'}, {route='3',period='md',segment='Lenox South'}, {route='3',period='md',segment='Bway7a',how='x'}, {route='3',period='md',segment='Bway7b',how='x'}, {route='3',period='md',segment='Bway7 South'}, {route='3',period='md',segment='Hoyt'}, {route='3',period='md',segment='EP'}, {route='3',period='md',segment='EP East'}, {route='3',period='md',segment='NL'}, {route='3',period='ev',segment='Lenox North'}, {route='3',period='ev',segment='Lenox South'}, {route='3',period='ev',segment='Bway7a',how='x'}, {route='3',period='ev',segment='Bway7b',how='x'}, {route='3',period='ev',segment='Bway7 South'}, {route='3',period='ev',segment='Hoyt'}, {route='3',period='ev',segment='EP'}, {route='3',period='ev',segment='EP East'}, {route='3',period='ev',segment='NL'}, {route='3',period='we',segment='Lenox North'}, {route='3',period='we',segment='Lenox South'}, {route='3',period='we',segment='Bway7a',how='x'}, {route='3',period='we',segment='Bway7b',how='x'}, {route='3',period='we',segment='Bway7 South'}, {route='3',period='we',segment='Hoyt'}, {route='3',period='we',segment='EP'}, {route='3',period='we',segment='EP East'}, {route='3',period='we',segment='NL'}, {route='3',period='ln',segment='Lenox North'}, {route='3',period='ln',segment='Lenox South'}, {route='3',period='ln',segment='Bway7a',how='x'}, {route='4',period='rh',segment='Jerome 2'}, {route='4',period='rh',segment='Jerome 1'}, -- {route='4',period='rh',segment='Jerome 2',dir='2'}, -- {route='4',period='rh',segment='Jerome 1',dir='2'}, -- {route='4',period='rh',segment='Jerome 1',dir='1',how='x',except=true}, {route='4',period='rh',segment='Jerome'}, {route='4',period='rh',segment='149',how='x',dir='peak'}, {route='4',period='rh',segment='138',how='x',dir='peak'}, {route='4',period='rh',segment='Lex North',how='x'}, {route='4',period='rh',segment='Lex',how='x'}, {route='4',period='rh',segment='Lex South'}, {route='4',period='rh',segment='BHall'}, {route='4',period='rh',segment='Hoyt',how='x'}, {route='4',period='rh',segment='EP',how='x'}, {route='4',period='rh',segment='EP East',how='x'}, {route='4',period='rh',segment='NL',dir='peak+'}, {route='4',period='md',segment='Jerome 2'}, {route='4',period='md',segment='Jerome 1'}, {route='4',period='md',segment='Jerome'}, {route='4',period='md',segment='149'}, {route='4',period='md',segment='138'}, {route='4',period='md',segment='Lex North',how='x'}, {route='4',period='md',segment='Lex',how='x'}, {route='4',period='md',segment='Lex South'}, {route='4',period='md',segment='BHall'}, {route='4',period='md',segment='Hoyt',how='x'}, {route='4',period='md',segment='EP',how='x'}, {route='4',period='md',segment='EP East',how='x'}, {route='4',period='ev',segment='Jerome 2'}, {route='4',period='ev',segment='Jerome 1'}, {route='4',period='ev',segment='Jerome'}, {route='4',period='ev',segment='149'}, {route='4',period='ev',segment='138'}, {route='4',period='ev',segment='Lex North',how='x'}, {route='4',period='ev',segment='Lex',how='x'}, {route='4',period='ev',segment='Lex South'}, {route='4',period='ev',segment='BHall'}, {route='4',period='ev',segment='Hoyt',how='x'}, {route='4',period='ev',segment='EP',how='x'}, {route='4',period='ev',segment='EP East',how='x'}, {route='4',period='we',segment='Jerome 2'}, {route='4',period='we',segment='Jerome 1'}, {route='4',period='we',segment='Jerome'}, {route='4',period='we',segment='149'}, {route='4',period='we',segment='138'}, {route='4',period='we',segment='Lex North',how='x'}, {route='4',period='we',segment='Lex',how='x'}, {route='4',period='we',segment='Lex South'}, {route='4',period='we',segment='BHall'}, {route='4',period='we',segment='Hoyt',how='x'}, {route='4',period='we',segment='EP',how='x'}, {route='4',period='we',segment='EP East',how='x'}, {route='4',period='ln',segment='Jerome 2'}, {route='4',period='ln',segment='Jerome 1'}, {route='4',period='ln',segment='Jerome'}, {route='4',period='ln',segment='149'}, {route='4',period='ln',segment='138'}, {route='4',period='ln',segment='Lex North'}, {route='4',period='ln',segment='Lex'}, {route='4',period='ln',segment='Lex South'}, {route='4',period='ln',segment='BHall'}, {route='4',period='ln',segment='Hoyt',how='x'}, {route='4',period='ln',segment='EP'}, {route='4',period='ln',segment='EP East'}, {route='4',period='ln',segment='NL'}, {route='5',period='rh',segment='WPR North',dir='peakonly',fork='north',pattern='o '}, {route='5',period='rh',segment='Dyre',shape='|/',pattern='|o'}, {route='5',period='rh',segment='E180',how='x',dir='peak',pattern='o '}, {route='5',period='rh',segment='WPR South',how='x',dir='peak'}, {route='5',period='rh',segment='WPR South Tip'}, {route='5',period='rh',segment='138'}, {route='5',period='rh',segment='Lex North',how='x'}, {route='5',period='rh',segment='Lex',how='x'}, {route='5',period='rh',segment='Lex South'}, {route='5',period='rh',segment='BHall'}, {route='5',period='rh',segment='Hoyt',how='x'}, {route='5',period='rh',segment='EP',how='x',shape='|\\'}, {route='5',period='rh',segment='Nostrand',pattern='o|'}, {route='5',period='rh',segment='EP East',how='x',dir='peak+',fork='south',pattern=' o'}, {route='5',period='md',segment='Dyre'}, {route='5',period='md',segment='E180'}, {route='5',period='md',segment='WPR South'}, {route='5',period='md',segment='WPR South Tip'}, {route='5',period='md',segment='138'}, {route='5',period='md',segment='Lex North',how='x'}, {route='5',period='md',segment='Lex',how='x'}, {route='5',period='md',segment='Lex South'}, {route='5',period='md',segment='BHall'}, {route='5',period='md',segment='Hoyt',how='x'}, {route='5',period='md',segment='EP',how='x'}, {route='5',period='md',segment='Nostrand'}, {route='5',period='ev',segment='Dyre'}, {route='5',period='ev',segment='E180'}, {route='5',period='ev',segment='WPR South'}, {route='5',period='ev',segment='WPR South Tip'}, {route='5',period='ev',segment='138'}, {route='5',period='ev',segment='Lex North',how='x'}, {route='5',period='ev',segment='Lex',how='x'}, {route='5',period='ev',segment='Lex South'}, {route='5',period='we',segment='Dyre'}, {route='5',period='we',segment='E180'}, {route='5',period='we',segment='WPR South'}, {route='5',period='we',segment='WPR South Tip'}, {route='5',period='we',segment='138'}, {route='5',period='we',segment='Lex North',how='x'}, {route='5',period='we',segment='Lex',how='x'}, {route='5',period='we',segment='Lex South'}, {route='5',period='ln',segment='Dyre',shuttle=true}, {route='5',period='ln',segment='E180',how='x',tt=true,shuttle=true}, {route='6',period='rh',segment='Pelham North',dir='notpeakonly'}, {route='6',period='rh',segment='Pelham'}, {route='6',period='rh',segment='Lex North'}, {route='6',period='rh',segment='Lex'}, {route='6',period='md',segment='Pelham North',dir='notpeakonly'}, {route='6',period='md',segment='Pelham'}, {route='6',period='md',segment='Lex North'}, {route='6',period='md',segment='Lex'}, {route='6',period='ev',segment='Pelham North'}, {route='6',period='ev',segment='Pelham'}, {route='6',period='ev',segment='Lex North'}, {route='6',period='ev',segment='Lex'}, {route='6',period='we',segment='Pelham North'}, {route='6',period='we',segment='Pelham'}, {route='6',period='we',segment='Lex North'}, {route='6',period='we',segment='Lex'}, {route='6',period='ln',segment='Pelham North'}, {route='6',period='ln',segment='Pelham'}, {route='6',period='ln',segment='Lex North'}, {route='6',period='ln',segment='Lex'}, {route='<6>',period='rh',segment='Pelham North',dir='peakonly'}, {route='<6>',period='rh',segment='Pelham',how='x',dir='peakonly'}, {route='<6>',period='rh',segment='Lex North',dir='peakonly'}, {route='<6>',period='rh',segment='Lex',dir='peakonly'}, {route='<6>',period='md',segment='Pelham North',dir='peakonly'}, {route='<6>',period='md',segment='Pelham',how='x',dir='peakonly'}, {route='<6>',period='md',segment='Lex North',dir='peakonly'}, {route='<6>',period='md',segment='Lex',dir='peakonly'}, {route='7',period='rh',segment='Flush'}, {route='7',period='rh',segment='Flush West'}, {route='7',period='md',segment='Flush'}, {route='7',period='md',segment='Flush West'}, {route='7',period='ev',segment='Flush'}, {route='7',period='ev',segment='Flush West'}, {route='7',period='we',segment='Flush'}, {route='7',period='we',segment='Flush West'}, {route='7',period='ln',segment='Flush'}, {route='7',period='ln',segment='Flush West'}, {route='<7>',period='rh',segment='Flush',how='x',dir='peakonly'}, {route='<7>',period='rh',segment='Flush West',dir='peakonly'}, {route='A',period='rh',segment='Eighth North',pattern='o '}, {route='A',period='rh',segment='Eighth North Middle',how='x'}, {route='A',period='rh',segment='Eighth 145',how='x'}, {route='A',period='rh',segment='Eighth',how='x'}, {route='A',period='rh',segment='Eighth 50',how='x'}, {route='A',period='rh',segment='Eighth South',how='x'}, {route='A',period='rh',segment='Spring Canal',how='x'}, {route='A',period='rh',segment='Eighth South Tip'}, {route='A',period='rh',segment='Jay F'}, {route='A',period='rh',segment='Fulton',how='x'}, {route='A',period='rh',segment='Euclid',how='x'}, {route='A',period='rh',segment='Fulton East'}, {route='A',period='rh',segment='Rock Blvd',shape='|\\'}, {route='A',period='rh',segment='Fulton East Tip',pattern='|o'}, {route='A',period='rh',segment='Rock North',fork='south',pattern='o '}, {route='A',period='rh',segment='BChan',shape='|\\'}, {route='A',period='rh',segment='Rock East',pattern='|o'}, {route='A',period='rh',segment='Rock West',dir='peak+',fork='south',pattern='o '}, {route='A',period='md',segment='Eighth North'}, {route='A',period='md',segment='Eighth North Middle',how='x'}, {route='A',period='md',segment='Eighth 145',how='x'}, {route='A',period='md',segment='Eighth',how='x'}, {route='A',period='md',segment='Eighth 50',how='x'}, {route='A',period='md',segment='Eighth South',how='x'}, {route='A',period='md',segment='Spring Canal',how='x'}, {route='A',period='md',segment='Eighth South Tip'}, {route='A',period='md',segment='Jay F'}, {route='A',period='md',segment='Fulton',how='x'}, {route='A',period='md',segment='Euclid',how='x'}, {route='A',period='md',segment='Fulton East'}, {route='A',period='md',segment='Rock Blvd'}, {route='A',period='md',segment='Fulton East Tip'}, {route='A',period='md',segment='Rock North',fork='south'}, {route='A',period='md',segment='BChan'}, {route='A',period='md',segment='Rock East'}, {route='A',period='ev',segment='Eighth North'}, {route='A',period='ev',segment='Eighth North Middle',how='x'}, {route='A',period='ev',segment='Eighth 145',how='x'}, {route='A',period='ev',segment='Eighth',how='x'}, {route='A',period='ev',segment='Eighth 50',how='x'}, {route='A',period='ev',segment='Eighth South',how='x'}, {route='A',period='ev',segment='Spring Canal',how='x'}, {route='A',period='ev',segment='Eighth South Tip'}, {route='A',period='ev',segment='Jay F'}, {route='A',period='ev',segment='Fulton',how='x'}, {route='A',period='ev',segment='Euclid',how='x'}, {route='A',period='ev',segment='Fulton East'}, {route='A',period='ev',segment='Rock Blvd'}, {route='A',period='ev',segment='Fulton East Tip'}, {route='A',period='ev',segment='Rock North',fork='south'}, {route='A',period='ev',segment='BChan'}, {route='A',period='ev',segment='Rock East'}, {route='A',period='we',segment='Eighth North'}, {route='A',period='we',segment='Eighth North Middle',how='x'}, {route='A',period='we',segment='Eighth 145',how='x'}, {route='A',period='we',segment='Eighth',how='x'}, {route='A',period='we',segment='Eighth 50',how='x'}, {route='A',period='we',segment='Eighth South',how='x'}, {route='A',period='we',segment='Spring Canal',how='x'}, {route='A',period='we',segment='Eighth South Tip'}, {route='A',period='we',segment='Jay F'}, {route='A',period='we',segment='Fulton',how='x'}, {route='A',period='we',segment='Euclid',how='x'}, {route='A',period='we',segment='Fulton East'}, {route='A',period='we',segment='Rock Blvd'}, {route='A',period='we',segment='Fulton East Tip'}, {route='A',period='we',segment='Rock North',fork='south'}, {route='A',period='we',segment='BChan'}, {route='A',period='we',segment='Rock East'}, {route='A',period='ln',segment='Eighth North'}, {route='A',period='ln',segment='Eighth North Middle'}, {route='A',period='ln',segment='Eighth 145'}, {route='A',period='ln',segment='Eighth'}, {route='A',period='ln',segment='Eighth 50'}, {route='A',period='ln',segment='Eighth South'}, {route='A',period='ln',segment='Spring Canal'}, {route='A',period='ln',segment='Eighth South Tip'}, {route='A',period='ln',segment='Jay F'}, {route='A',period='ln',segment='Fulton'}, {route='A',period='ln',segment='Euclid'}, {route='A',period='ln',segment='Fulton East'}, {route='A',period='ln',segment='Rock Blvd'}, {route='A',period='ln',segment='Rock North'}, {route='A',period='ln',segment='BChan'}, {route='A',period='ln',segment='Rock East'}, {route='B',period='rh',segment='BPB',how='x',tt=true}, {route='B',period='rh',segment='Conc'}, {route='B',period='rh',segment='Conc 145'}, {route='B',period='rh',segment='Eighth'}, {route='B',period='rh',segment='7 Sixth'}, {route='B',period='rh',segment='Sixth',how='x'}, {route='B',period='rh',segment='Broad Laf',how='x'}, {route='B',period='rh',segment='Grand'}, {route='B',period='rh',segment='MB'}, -- сегмент MB обозначает Манхэттенский мост, станций на нём нет, он используется не в модуле, а на схемах линий {route='B',period='rh',segment='Brigh DK'}, {route='B',period='rh',segment='Brigh North'}, {route='B',period='rh',segment='PP'}, {route='B',period='rh',segment='Brigh',how='x'}, {route='B',period='md',segment='Conc 145',how='x',tt=true}, {route='B',period='md',segment='Eighth'}, {route='B',period='md',segment='7 Sixth'}, {route='B',period='md',segment='Sixth',how='x'}, {route='B',period='md',segment='Broad Laf',how='x'}, {route='B',period='md',segment='Grand'}, {route='B',period='md',segment='MB'}, {route='B',period='md',segment='Brigh DK'}, {route='B',period='md',segment='Brigh North'}, {route='B',period='md',segment='PP'}, {route='B',period='md',segment='Brigh',how='x'}, {route='B',period='ev',segment='Conc 145',how='x',dir='1',tt=true}, {route='B',period='ev',segment='Eighth',dir='1'}, {route='B',period='ev',segment='7 Sixth',dir='1'}, {route='B',period='ev',segment='Sixth',how='x',dir='1'}, {route='B',period='ev',segment='Broad Laf',how='x',dir='1'}, {route='B',period='ev',segment='Grand',dir='1'}, {route='B',period='ev',segment='MB',dir='1'}, {route='B',period='ev',segment='Brigh DK',dir='1'}, {route='B',period='ev',segment='Brigh North',dir='1'}, {route='B',period='ev',segment='PP',dir='1'}, {route='B',period='ev',segment='Brigh',how='x',dir='1'}, {route='C',period='rh',segment='Eighth North Middle'}, {route='C',period='rh',segment='Eighth 145'}, {route='C',period='rh',segment='Eighth'}, {route='C',period='rh',segment='Eighth 50'}, {route='C',period='rh',segment='Eighth South'}, {route='C',period='rh',segment='Spring Canal'}, {route='C',period='rh',segment='Eighth South Tip'}, {route='C',period='rh',segment='Jay F'}, {route='C',period='rh',segment='Fulton'}, {route='C',period='rh',segment='Euclid'}, {route='C',period='md',segment='Eighth North Middle'}, {route='C',period='md',segment='Eighth 145'}, {route='C',period='md',segment='Eighth'}, {route='C',period='md',segment='Eighth 50'}, {route='C',period='md',segment='Eighth South'}, {route='C',period='md',segment='Spring Canal'}, {route='C',period='md',segment='Eighth South Tip'}, {route='C',period='md',segment='Jay F'}, {route='C',period='md',segment='Fulton'}, {route='C',period='md',segment='Euclid'}, {route='C',period='ev',segment='Eighth North Middle'}, {route='C',period='ev',segment='Eighth 145'}, {route='C',period='ev',segment='Eighth'}, {route='C',period='ev',segment='Eighth 50'}, {route='C',period='ev',segment='Eighth South'}, {route='C',period='ev',segment='Spring Canal'}, {route='C',period='ev',segment='Eighth South Tip'}, {route='C',period='ev',segment='Jay F'}, {route='C',period='ev',segment='Fulton'}, {route='C',period='ev',segment='Euclid'}, {route='C',period='we',segment='Eighth North Middle'}, {route='C',period='we',segment='Eighth 145'}, {route='C',period='we',segment='Eighth'}, {route='C',period='we',segment='Eighth 50'}, {route='C',period='we',segment='Eighth South'}, {route='C',period='we',segment='Spring Canal'}, {route='C',period='we',segment='Eighth South Tip'}, {route='C',period='we',segment='Jay F'}, {route='C',period='we',segment='Fulton'}, {route='C',period='we',segment='Euclid'}, {route='D',period='rh',segment='Conc North'}, {route='D',period='rh',segment='BPB'}, {route='D',period='rh',segment='Conc',how='x',dir='peak'}, {route='D',period='rh',segment='Conc 145',how='x',dir='peak'}, {route='D',period='rh',segment='Eighth',how='x'}, {route='D',period='rh',segment='7 Sixth'}, {route='D',period='rh',segment='Sixth',how='x'}, {route='D',period='rh',segment='Broad Laf',how='x'}, {route='D',period='rh',segment='Grand'}, {route='D',period='rh',segment='MB'}, {route='D',period='rh',segment='Fourth DK',how='x',fullsta=true}, --ночью D проходит Декалб-авеню по путям "чужой" линии {route='D',period='rh',segment='Fourth North',how='x'}, {route='D',period='rh',segment='WE'}, {route='D',period='md',segment='Conc North'}, {route='D',period='md',segment='BPB'}, {route='D',period='md',segment='Conc'}, {route='D',period='md',segment='Conc 145'}, {route='D',period='md',segment='Eighth',how='x'}, {route='D',period='md',segment='7 Sixth'}, {route='D',period='md',segment='Sixth',how='x'}, {route='D',period='md',segment='Broad Laf',how='x'}, {route='D',period='md',segment='Grand'}, {route='D',period='md',segment='MB'}, {route='D',period='md',segment='Fourth DK',how='x'}, {route='D',period='md',segment='Fourth North',how='x'}, {route='D',period='md',segment='WE'}, {route='D',period='ev',segment='Conc North'}, {route='D',period='ev',segment='BPB'}, {route='D',period='ev',segment='Conc'}, {route='D',period='ev',segment='Conc 145'}, {route='D',period='ev',segment='Eighth',how='x'}, {route='D',period='ev',segment='7 Sixth'}, {route='D',period='ev',segment='Sixth',how='x'}, {route='D',period='ev',segment='Broad Laf',how='x'}, {route='D',period='ev',segment='Grand'}, {route='D',period='ev',segment='MB'}, {route='D',period='ev',segment='Fourth DK',how='x'}, {route='D',period='ev',segment='Fourth North',how='x'}, {route='D',period='ev',segment='WE'}, {route='D',period='we',segment='Conc North'}, {route='D',period='we',segment='BPB'}, {route='D',period='we',segment='Conc'}, {route='D',period='we',segment='Conc 145'}, {route='D',period='we',segment='Eighth',how='x'}, {route='D',period='we',segment='7 Sixth'}, {route='D',period='we',segment='Sixth',how='x'}, {route='D',period='we',segment='Broad Laf',how='x'}, {route='D',period='we',segment='Grand'}, {route='D',period='we',segment='MB'}, {route='D',period='we',segment='Fourth DK',how='x'}, {route='D',period='we',segment='Fourth North',how='x'}, {route='D',period='we',segment='WE'}, {route='D',period='ln',segment='Conc North'}, {route='D',period='ln',segment='BPB'}, {route='D',period='ln',segment='Conc'}, {route='D',period='ln',segment='Conc 145'}, {route='D',period='ln',segment='Eighth',how='x'}, {route='D',period='ln',segment='7 Sixth'}, {route='D',period='ln',segment='Sixth',how='x'}, {route='D',period='ln',segment='Broad Laf',how='x'}, {route='D',period='ln',segment='Grand'}, {route='D',period='ln',segment='MB'}, {route='D',period='ln',segment='Brigh DK',segment_subst='Fourth DK'}, {route='D',period='ln',segment='Fourth North'}, {route='D',period='ln',segment='WE'}, {route='E',period='rh',segment='179',how='x',dir='peak+',fork='north',pattern='o '}, {route='E',period='rh',segment='Arch IND',pattern='|o'}, {route='E',period='rh',segment='Arch IND VW',shape='|/'}, {route='E',period='rh',segment='QB East',how='x',pattern='o '}, {route='E',period='rh',segment='QB',how='x'}, {route='E',period='rh',segment='QP',how='x'}, {route='E',period='rh',segment='QB West'}, {route='E',period='rh',segment='QB West Tip'}, {route='E',period='rh',segment='Eighth South'}, {route='E',period='rh',segment='Spring Canal'}, {route='E',period='rh',segment='WTC'}, {route='E',period='md',segment='Arch IND'}, {route='E',period='md',segment='Arch IND VW'}, {route='E',period='md',segment='QB East',how='x'}, {route='E',period='md',segment='QB',how='x'}, {route='E',period='md',segment='QP',how='x'}, {route='E',period='md',segment='QB West'}, {route='E',period='md',segment='QB West Tip'}, {route='E',period='md',segment='Eighth South'}, {route='E',period='md',segment='Spring Canal'}, {route='E',period='md',segment='WTC'}, {route='E',period='ev',segment='Arch IND'}, {route='E',period='ev',segment='Arch IND VW'}, {route='E',period='ev',segment='QB East'}, {route='E',period='ev',segment='QB',how='x'}, {route='E',period='ev',segment='QP',how='x'}, {route='E',period='ev',segment='QB West'}, {route='E',period='ev',segment='QB West Tip'}, {route='E',period='ev',segment='Eighth South'}, {route='E',period='ev',segment='Spring Canal'}, {route='E',period='ev',segment='WTC'}, {route='E',period='we',segment='Arch IND'}, {route='E',period='we',segment='Arch IND VW'}, {route='E',period='we',segment='QB East'}, {route='E',period='we',segment='QB',how='x'}, {route='E',period='we',segment='QP',how='x'}, {route='E',period='we',segment='QB West'}, {route='E',period='we',segment='QB West Tip'}, {route='E',period='we',segment='Eighth South'}, {route='E',period='we',segment='Spring Canal'}, {route='E',period='we',segment='WTC'}, {route='E',period='ln',segment='Arch IND'}, {route='E',period='ln',segment='Arch IND VW'}, {route='E',period='ln',segment='QB East'}, {route='E',period='ln',segment='QB'}, {route='E',period='ln',segment='QP'}, {route='E',period='ln',segment='QB West'}, {route='E',period='ln',segment='QB West Tip'}, {route='E',period='ln',segment='Eighth South'}, {route='E',period='ln',segment='Spring Canal'}, {route='E',period='ln',segment='WTC'}, {route='F',period='rh',segment='179'}, {route='F',period='rh',segment='QB East'}, {route='F',period='rh',segment='QB',how='x'}, {route='F',period='rh',segment='63 IND'}, {route='F',period='rh',segment='63 IND Lex'}, {route='F',period='rh',segment='57'}, {route='F',period='rh',segment='Sixth'}, {route='F',period='rh',segment='Broad Laf'}, {route='F',period='rh',segment='Culver North Tip'}, {route='F',period='rh',segment='Jay'}, {route='F',period='rh',segment='Culver North'}, {route='F',period='rh',segment='Culver Middle'}, {route='F',period='rh',segment='Culver'}, {route='F',period='rh',segment='Culver 1'}, {route='F',period='rh',segment='Culver 2'}, -- {route='F',period='rh',segment='Culver 1',dir='1',how='x',except=true}, -- {route='F',period='rh',segment='Culver 1',dir='2'}, -- {route='F',period='rh',segment='Culver 2',dir='2'}, {route='F',period='md',segment='179'}, {route='F',period='md',segment='QB East'}, {route='F',period='md',segment='QB',how='x'}, {route='F',period='md',segment='63 IND'}, {route='F',period='md',segment='63 IND Lex'}, {route='F',period='md',segment='57'}, {route='F',period='md',segment='Sixth'}, {route='F',period='md',segment='Broad Laf'}, {route='F',period='md',segment='Culver North Tip'}, {route='F',period='md',segment='Jay'}, {route='F',period='md',segment='Culver North'}, {route='F',period='md',segment='Culver Middle'}, {route='F',period='md',segment='Culver'}, {route='F',period='md',segment='Culver 1'}, {route='F',period='md',segment='Culver 2'}, {route='F',period='ev',segment='179'}, {route='F',period='ev',segment='QB East'}, {route='F',period='ev',segment='QB',how='x'}, {route='F',period='ev',segment='63 IND'}, {route='F',period='ev',segment='63 IND Lex'}, {route='F',period='ev',segment='57'}, {route='F',period='ev',segment='Sixth'}, {route='F',period='ev',segment='Broad Laf'}, {route='F',period='ev',segment='Culver North Tip'}, {route='F',period='ev',segment='Jay'}, {route='F',period='ev',segment='Culver North'}, {route='F',period='ev',segment='Culver Middle'}, {route='F',period='ev',segment='Culver'}, {route='F',period='ev',segment='Culver 1'}, {route='F',period='ev',segment='Culver 2'}, {route='F',period='we',segment='179'}, {route='F',period='we',segment='QB East'}, {route='F',period='we',segment='QB',how='x'}, {route='F',period='we',segment='63 IND'}, {route='F',period='we',segment='63 IND Lex'}, {route='F',period='we',segment='57'}, {route='F',period='we',segment='Sixth'}, {route='F',period='we',segment='Broad Laf'}, {route='F',period='we',segment='Culver North Tip'}, {route='F',period='we',segment='Jay'}, {route='F',period='we',segment='Culver North'}, {route='F',period='we',segment='Culver Middle'}, {route='F',period='we',segment='Culver'}, {route='F',period='we',segment='Culver 1'}, {route='F',period='we',segment='Culver 2'}, {route='F',period='ln',segment='179'}, {route='F',period='ln',segment='QB East'}, {route='F',period='ln',segment='QB',how='x'}, {route='F',period='ln',segment='63 IND'}, {route='F',period='ln',segment='63 IND Lex'}, {route='F',period='ln',segment='57'}, {route='F',period='ln',segment='Sixth'}, {route='F',period='ln',segment='Broad Laf'}, {route='F',period='ln',segment='Culver North Tip'}, {route='F',period='ln',segment='Jay'}, {route='F',period='ln',segment='Culver North'}, {route='F',period='ln',segment='Culver Middle'}, {route='F',period='ln',segment='Culver'}, {route='F',period='ln',segment='Culver 1'}, {route='F',period='ln',segment='Culver 2'}, {route='<F>',period='rh',segment='179',dir='peakonly'}, {route='<F>',period='rh',segment='QB East',dir='peakonly'}, {route='<F>',period='rh',segment='QB',how='x',dir='peakonly'}, {route='<F>',period='rh',segment='63 IND',dir='peakonly'}, {route='<F>',period='rh',segment='63 IND Lex',dir='peakonly'}, {route='<F>',period='rh',segment='57',dir='peakonly'}, {route='<F>',period='rh',segment='Sixth',dir='peakonly'}, {route='<F>',period='rh',segment='Broad Laf',dir='peakonly'}, {route='<F>',period='rh',segment='Culver North Tip',dir='peakonly'}, {route='<F>',period='rh',segment='Jay',dir='peakonly'}, {route='<F>',period='rh',segment='Culver North',how='x',dir='peakonly'}, {route='<F>',period='rh',segment='Culver Middle',dir='peakonly'}, {route='<F>',period='rh',segment='Culver',dir='peakonly'}, {route='<F>',period='rh',segment='Culver 1',dir='peakonly'}, {route='<F>',period='rh',segment='Culver 2',dir='peakonly'}, {route='G',period='rh',segment='Cross'}, {route='G',period='rh',segment='Culver North'}, {route='G',period='md',segment='Cross'}, {route='G',period='md',segment='Culver North'}, {route='G',period='ev',segment='Cross'}, {route='G',period='ev',segment='Culver North'}, {route='G',period='we',segment='Cross'}, {route='G',period='we',segment='Culver North'}, {route='G',period='ln',segment='Cross'}, {route='G',period='ln',segment='Culver North'}, {route='J',period='rh',segment='Arch BMT'}, {route='J',period='rh',segment='Jam East',how='J',dir='peak'}, {route='J',period='rh',segment='Jam BJ',how='J',dir='peak'}, {route='J',period='rh',segment='Jam',how='J',dir='peak'}, {route='J',period='rh',segment='Myrtle Av',how='x',dir='peak'}, {route='J',period='rh',segment='Jam West',how='x',dir='peak'}, {route='J',period='rh',segment='Essex'}, {route='J',period='rh',segment='Nassau'}, {route='J',period='md',segment='Arch BMT'}, {route='J',period='md',segment='Jam East'}, {route='J',period='md',segment='Jam BJ'}, {route='J',period='md',segment='Jam'}, {route='J',period='md',segment='Myrtle Av',how='x',dir='peak'}, {route='J',period='md',segment='Jam West',how='x',dir='peak'}, {route='J',period='md',segment='Essex'}, {route='J',period='md',segment='Nassau'}, {route='J',period='ev',segment='Arch BMT'}, {route='J',period='ev',segment='Jam East'}, {route='J',period='ev',segment='Jam BJ'}, {route='J',period='ev',segment='Jam'}, {route='J',period='ev',segment='Myrtle Av'}, {route='J',period='ev',segment='Jam West'}, {route='J',period='ev',segment='Essex'}, {route='J',period='ev',segment='Nassau'}, {route='J',period='we',segment='Arch BMT'}, {route='J',period='we',segment='Jam East'}, {route='J',period='we',segment='Jam BJ'}, {route='J',period='we',segment='Jam'}, {route='J',period='we',segment='Myrtle Av'}, {route='J',period='we',segment='Jam West'}, {route='J',period='we',segment='Essex'}, {route='J',period='we',segment='Nassau'}, {route='J',period='ln',segment='Arch BMT'}, {route='J',period='ln',segment='Jam East'}, {route='J',period='ln',segment='Jam BJ'}, {route='J',period='ln',segment='Jam'}, {route='J',period='ln',segment='Myrtle Av'}, {route='J',period='ln',segment='Jam West'}, {route='J',period='ln',segment='Essex'}, {route='J',period='ln',segment='Nassau'}, {route='L',period='rh',segment='14'}, {route='L',period='rh',segment='Canar'}, {route='L',period='rh',segment='Canar BJ'}, {route='L',period='rh',segment='Canar South'}, {route='L',period='md',segment='14'}, {route='L',period='md',segment='Canar'}, {route='L',period='md',segment='Canar BJ'}, {route='L',period='md',segment='Canar South'}, {route='L',period='ev',segment='14'}, {route='L',period='ev',segment='Canar'}, {route='L',period='ev',segment='Canar BJ'}, {route='L',period='ev',segment='Canar South'}, {route='L',period='we',segment='14'}, {route='L',period='we',segment='Canar'}, {route='L',period='we',segment='Canar BJ'}, {route='L',period='we',segment='Canar South'}, {route='L',period='ln',segment='14'}, {route='L',period='ln',segment='Canar'}, {route='L',period='ln',segment='Canar BJ'}, {route='L',period='ln',segment='Canar South'}, {route='M',period='rh',segment='QB'}, {route='M',period='rh',segment='QP'}, {route='M',period='rh',segment='QB West'}, {route='M',period='rh',segment='Sixth'}, {route='M',period='rh',segment='Broad Laf',fork='north',joint=true}, {route='M',period='rh',segment='Myrtle'}, {route='M',period='rh',segment='Myrtle Av'}, {route='M',period='rh',segment='Jam West'}, {route='M',period='rh',segment='Essex',fork='uturn'}, {route='M',period='md',segment='QB'}, {route='M',period='md',segment='QP'}, {route='M',period='md',segment='QB West'}, {route='M',period='md',segment='Sixth'}, {route='M',period='md',segment='Broad Laf',fork='north'}, {route='M',period='md',segment='Myrtle'}, {route='M',period='md',segment='Myrtle Av'}, {route='M',period='md',segment='Jam West'}, {route='M',period='md',segment='Essex',fork='uturn'}, {route='M',period='ev',segment='QB'}, {route='M',period='ev',segment='QP'}, {route='M',period='ev',segment='QB West'}, {route='M',period='ev',segment='Sixth'}, {route='M',period='ev',segment='Broad Laf',fork='north'}, {route='M',period='ev',segment='Myrtle'}, {route='M',period='ev',segment='Myrtle Av'}, {route='M',period='ev',segment='Jam West'}, {route='M',period='ev',segment='Essex',fork='uturn'}, {route='M',period='we',segment='Myrtle'}, {route='M',period='we',segment='Myrtle Av'}, {route='M',period='we',segment='Jam West'}, {route='M',period='we',segment='Essex',fork='uturn'}, {route='M',period='ln',segment='Myrtle',shuttle=true}, {route='M',period='ln',segment='Myrtle Av',how='x',tt=true,shuttle=true}, {route='N',period='rh',segment='Second',dir='peak+',pattern='o '}, {route='N',period='rh',segment='63 BMT',dir='peak+',fork='north'}, {route='N',period='rh',segment='Ast',pattern='|o'}, {route='N',period='rh',segment='QBP'}, {route='N',period='rh',segment='Bway North',shape='|/'}, {route='N',period='rh',segment='Bway 57',pattern='o '}, {route='N',period='rh',segment='Bway 49'}, {route='N',period='rh',segment='Bway',how='x',shape='|\\'}, {route='N',period='rh',segment='Canal Bridge',pattern='|o'}, {route='N',period='rh',segment='MB',pattern='|o'}, {route='N',period='also',segment='Bway South',pattern='o|'}, --ночью N идёт через Нижний Манхэттен {route='N',period='also',segment='Whall'}, {route='N',period='also',segment='Fourth North Tip',shape='|/'}, {route='N',period='rh',segment='Fourth DK',how='x',pattern='o '}, {route='N',period='rh',segment='Fourth North',how='x'}, {route='N',period='rh',segment='Fourth',how='x'}, {route='N',period='rh',segment='SB'}, {route='N',period='rh',segment='SB South'}, {route='N',period='md',segment='Ast'}, {route='N',period='md',segment='QBP'}, {route='N',period='md',segment='Bway North'}, {route='N',period='md',segment='Bway 57'}, {route='N',period='md',segment='Bway 49'}, {route='N',period='md',segment='Bway',how='x'}, {route='N',period='md',segment='Canal Bridge'}, {route='N',period='md',segment='MB'}, {route='N',period='md',segment='Fourth DK',how='x'}, {route='N',period='md',segment='Fourth North',how='x'}, {route='N',period='md',segment='Fourth',how='x'}, {route='N',period='md',segment='SB'}, {route='N',period='md',segment='SB South'}, {route='N',period='ev',segment='Ast'}, {route='N',period='ev',segment='QBP'}, {route='N',period='ev',segment='Bway North'}, {route='N',period='ev',segment='Bway 57'}, {route='N',period='ev',segment='Bway 49'}, {route='N',period='ev',segment='Bway',how='x'}, {route='N',period='ev',segment='Canal Bridge'}, {route='N',period='ev',segment='MB'}, {route='N',period='ev',segment='Fourth DK',how='x'}, {route='N',period='ev',segment='Fourth North',how='x'}, {route='N',period='ev',segment='Fourth',how='x'}, {route='N',period='ev',segment='SB'}, {route='N',period='ev',segment='SB South'}, {route='N',period='we',segment='Ast'}, {route='N',period='we',segment='QBP'}, {route='N',period='we',segment='Bway North'}, {route='N',period='we',segment='Bway 57'}, {route='N',period='we',segment='Bway 49'}, {route='N',period='we',segment='Bway'}, {route='N',period='we',segment='Canal Bridge'}, {route='N',period='we',segment='MB'}, {route='N',period='we',segment='Fourth DK',how='x'}, {route='N',period='we',segment='Fourth North',how='x'}, {route='N',period='we',segment='Fourth',how='x'}, {route='N',period='we',segment='SB'}, {route='N',period='we',segment='SB South'}, {route='N',period='ln',segment='Ast'}, {route='N',period='ln',segment='QBP'}, {route='N',period='ln',segment='Bway North'}, {route='N',period='ln',segment='Bway 57'}, {route='N',period='ln',segment='Bway 49'}, {route='N',period='ln',segment='Bway'}, {route='N',period='ln',segment='Bway South'}, {route='N',period='ln',segment='Whall'}, {route='N',period='ln',segment='Fourth North Tip'}, {route='N',period='ln',segment='Fourth DK'}, {route='N',period='ln',segment='Fourth North'}, {route='N',period='ln',segment='Fourth'}, {route='N',period='ln',segment='SB'}, {route='N',period='ln',segment='SB South'}, {route='Q',period='rh',segment='Second'}, {route='Q',period='rh',segment='63 BMT'}, {route='Q',period='rh',segment='Bway 57',how='x'}, {route='Q',period='rh',segment='Bway 49',how='x'}, {route='Q',period='rh',segment='Bway',how='x'}, {route='Q',period='rh',segment='Canal Bridge'}, {route='Q',period='rh',segment='MB'}, {route='Q',period='rh',segment='Brigh DK'}, {route='Q',period='rh',segment='Brigh North'}, {route='Q',period='rh',segment='PP'}, {route='Q',period='rh',segment='Brigh'}, {route='Q',period='rh',segment='Brigh South'}, {route='Q',period='md',segment='Second'}, {route='Q',period='md',segment='63 BMT'}, {route='Q',period='md',segment='Bway 57',how='x'}, {route='Q',period='md',segment='Bway 49',how='x'}, {route='Q',period='md',segment='Bway',how='x'}, {route='Q',period='md',segment='Canal Bridge'}, {route='Q',period='md',segment='MB'}, {route='Q',period='md',segment='Brigh DK'}, {route='Q',period='md',segment='Brigh North'}, {route='Q',period='md',segment='PP'}, {route='Q',period='md',segment='Brigh'}, {route='Q',period='md',segment='Brigh South'}, {route='Q',period='ev',segment='Second'}, {route='Q',period='ev',segment='63 BMT'}, {route='Q',period='ev',segment='Bway 57',how='x'}, {route='Q',period='ev',segment='Bway 49',how='x'}, {route='Q',period='ev',segment='Bway',how='x'}, {route='Q',period='ev',segment='Canal Bridge'}, {route='Q',period='ev',segment='MB'}, {route='Q',period='ev',segment='Brigh DK'}, {route='Q',period='ev',segment='Brigh North'}, {route='Q',period='ev',segment='PP'}, {route='Q',period='ev',segment='Brigh'}, {route='Q',period='ev',segment='Brigh South'}, {route='Q',period='we',segment='Second'}, {route='Q',period='we',segment='63 BMT'}, {route='Q',period='we',segment='Bway 57',how='x'}, {route='Q',period='we',segment='Bway 49',how='x'}, {route='Q',period='we',segment='Bway',how='x'}, {route='Q',period='we',segment='Canal Bridge'}, {route='Q',period='we',segment='MB'}, {route='Q',period='we',segment='Brigh DK'}, {route='Q',period='we',segment='Brigh North'}, {route='Q',period='we',segment='PP'}, {route='Q',period='we',segment='Brigh'}, {route='Q',period='we',segment='Brigh South'}, {route='Q',period='ln',segment='Second'}, {route='Q',period='ln',segment='63 BMT'}, {route='Q',period='ln',segment='Bway 57',how='x'}, {route='Q',period='ln',segment='Bway 49'}, {route='Q',period='ln',segment='Bway'}, {route='Q',period='ln',segment='Canal Bridge'}, {route='Q',period='ln',segment='MB'}, {route='Q',period='ln',segment='Brigh DK'}, {route='Q',period='ln',segment='Brigh North'}, {route='Q',period='ln',segment='PP'}, {route='Q',period='ln',segment='Brigh'}, {route='Q',period='ln',segment='Brigh South'}, {route='R',period='rh',segment='QB'}, {route='R',period='rh',segment='QP'}, {route='R',period='rh',segment='Bway North'}, {route='R',period='rh',segment='Bway 57'}, {route='R',period='rh',segment='Bway 49'}, {route='R',period='rh',segment='Bway'}, {route='R',period='rh',segment='Bway South'}, {route='R',period='rh',segment='Whall'}, {route='R',period='rh',segment='Fourth North Tip'}, {route='R',period='rh',segment='Fourth DK'}, {route='R',period='rh',segment='Fourth North'}, {route='R',period='rh',segment='Fourth'}, {route='R',period='rh',segment='Fourth South'}, {route='R',period='md',segment='QB'}, {route='R',period='md',segment='QP'}, {route='R',period='md',segment='Bway North'}, {route='R',period='md',segment='Bway 57'}, {route='R',period='md',segment='Bway 49'}, {route='R',period='md',segment='Bway'}, {route='R',period='md',segment='Bway South'}, {route='R',period='md',segment='Whall'}, {route='R',period='md',segment='Fourth North Tip'}, {route='R',period='md',segment='Fourth DK'}, {route='R',period='md',segment='Fourth North'}, {route='R',period='md',segment='Fourth'}, {route='R',period='md',segment='Fourth South'}, {route='R',period='ev',segment='QB'}, {route='R',period='ev',segment='QP'}, {route='R',period='ev',segment='Bway North'}, {route='R',period='ev',segment='Bway 57'}, {route='R',period='ev',segment='Bway 49'}, {route='R',period='ev',segment='Bway'}, {route='R',period='ev',segment='Bway South'}, {route='R',period='ev',segment='Whall'}, {route='R',period='ev',segment='Fourth North Tip'}, {route='R',period='ev',segment='Fourth DK'}, {route='R',period='ev',segment='Fourth North'}, {route='R',period='ev',segment='Fourth'}, {route='R',period='ev',segment='Fourth South'}, {route='R',period='we',segment='QB'}, {route='R',period='we',segment='QP'}, {route='R',period='we',segment='Bway North'}, {route='R',period='we',segment='Bway 57'}, {route='R',period='we',segment='Bway 49'}, {route='R',period='we',segment='Bway'}, {route='R',period='we',segment='Bway South'}, {route='R',period='we',segment='Whall'}, {route='R',period='we',segment='Fourth North Tip'}, {route='R',period='we',segment='Fourth DK'}, {route='R',period='we',segment='Fourth North'}, {route='R',period='we',segment='Fourth'}, {route='R',period='we',segment='Fourth South'}, {route='R',period='ln',segment='Whall',how='x',tt=true}, {route='R',period='ln',segment='Fourth North Tip'}, {route='R',period='ln',segment='Fourth DK'}, {route='R',period='ln',segment='Fourth North'}, {route='R',period='ln',segment='Fourth'}, {route='R',period='ln',segment='Fourth South'}, {route='S 42',period='rh',segment='42'}, {route='S 42',period='md',segment='42'}, {route='S 42',period='ev',segment='42'}, {route='S 42',period='we',segment='42'}, {route='S F',period='rh',segment='Franklin'}, {route='S F',period='md',segment='Franklin'}, {route='S F',period='ev',segment='Franklin'}, {route='S F',period='we',segment='Franklin'}, {route='S F',period='ln',segment='Franklin'}, {route='S R',period='also',segment='Rock Blvd'}, {route='S R',period='also',segment='Rock North'}, {route='S R',period='rh',segment='BChan'}, {route='S R',period='rh',segment='Rock West'}, {route='S R',period='md',segment='BChan'}, {route='S R',period='md',segment='Rock West'}, {route='S R',period='ev',segment='BChan'}, {route='S R',period='ev',segment='Rock West'}, {route='S R',period='we',segment='Rock Blvd',dir='1'}, {route='S R',period='we',segment='Rock North',dir='1'}, {route='S R',period='we',segment='BChan'}, {route='S R',period='we',segment='Rock West'}, {route='S R',period='ln',segment='BChan'}, {route='S R',period='ln',segment='Rock West'}, {route='A S',period='also',segment='Euclid'}, --это чисто ночной маршрут {route='A S',period='also',segment='Fulton East'}, {route='A S',period='also',segment='Rock Blvd'}, {route='A S',period='also',segment='Fulton East Tip'}, {route='A S',period='ln',segment='Euclid',how='x',tt=true,shuttle=true}, {route='A S',period='ln',segment='Fulton East',shuttle=true}, {route='A S',period='ln',segment='Rock Blvd',shuttle=true}, {route='A S',period='ln',segment='Fulton East Tip',shuttle=true}, {route='W',period='rh',segment='Ast'}, {route='W',period='rh',segment='QBP'}, {route='W',period='rh',segment='Bway North'}, {route='W',period='rh',segment='Bway 57'}, {route='W',period='rh',segment='Bway 49'}, {route='W',period='rh',segment='Bway'}, {route='W',period='rh',segment='Bway South'}, {route='W',period='rh',segment='Whall',how='x',tt=true}, {route='W',period='rh',segment='Fourth North Tip',dir='peak+'}, {route='W',period='rh',segment='Fourth DK',dir='peak+'}, {route='W',period='rh',segment='Fourth North',dir='peak+'}, {route='W',period='rh',segment='Fourth',dir='peak+'}, {route='W',period='rh',segment='SB',dir='peak+'}, {route='W',period='md',segment='Ast'}, {route='W',period='md',segment='QBP'}, {route='W',period='md',segment='Bway North'}, {route='W',period='md',segment='Bway 57'}, {route='W',period='md',segment='Bway 49'}, {route='W',period='md',segment='Bway'}, {route='W',period='md',segment='Bway South'}, {route='W',period='md',segment='Whall',how='x',tt=true}, {route='W',period='ev',segment='Ast',dir='1'}, {route='W',period='ev',segment='QBP',dir='1'}, {route='W',period='ev',segment='Bway North',dir='1'}, {route='W',period='ev',segment='Bway 57',dir='1'}, {route='W',period='ev',segment='Bway 49',dir='1'}, {route='W',period='ev',segment='Bway',dir='1'}, {route='W',period='ev',segment='Bway South',dir='1'}, {route='W',period='ev',segment='Whall',how='x',dir='1',tt=true}, {route='Z',period='rh',segment='Arch BMT',dir='peakonly'}, {route='Z',period='rh',segment='Jam East',how='Z',dir='peakonly'}, {route='Z',period='rh',segment='Jam BJ',how='Z',dir='peakonly'}, {route='Z',period='rh',segment='Jam',how='Z',dir='peakonly'}, {route='Z',period='rh',segment='Myrtle Av',how='x',dir='peakonly'}, {route='Z',period='rh',segment='Jam West',how='x',dir='peakonly'}, {route='Z',period='rh',segment='Essex',dir='peakonly'}, {route='Z',period='rh',segment='Nassau',dir='peakonly'}, {route='T',period='rh',segment='Second 2',future=true}, {route='T',period='rh',segment='Second',future=true}, {route='T',period='rh',segment='Second 3',future=true}, {route='T',period='rh',segment='Second 4',future=true}, {route='T',period='md',segment='Second 2',future=true}, {route='T',period='md',segment='Second',future=true}, {route='T',period='md',segment='Second 3',future=true}, {route='T',period='md',segment='Second 4',future=true}, {route='T',period='ev',segment='Second 2',future=true}, {route='T',period='ev',segment='Second',future=true}, {route='T',period='ev',segment='Second 3',future=true}, {route='T',period='ev',segment='Second 4',future=true}, {route='T',period='we',segment='Second 2',future=true}, {route='T',period='we',segment='Second',future=true}, {route='T',period='we',segment='Second 3',future=true}, {route='T',period='we',segment='Second 4',future=true}, {route='T',period='ln',segment='Second 2',future=true}, {route='T',period='ln',segment='Second',future=true}, {route='T',period='ln',segment='Second 3',future=true}, {route='T',period='ln',segment='Second 4',future=true}, } local ridership = { ['138 St-Grand Concourse 4 5']={r=1035878,prev=944598,rank=356}, ['149 St-Grand Concourse 2 4 5']={r=3931908,prev=3972763,rank=123}, ['161 St-Yankee Stadium B D 4']={r=8254928,prev=8392290,rank=40}, ['167 St 4']={r=2653237,prev=2933140,rank=182}, ['167 St B D']={r=2734530,prev=2022919,rank=178}, ['170 St 4']={r=2487611,prev=2562443,rank=192}, ['170 St B D']={r=2130461,prev=2454974,rank=222}, ['174 St 2 5']={r=2057118,prev=2056692,rank=230}, ['174-175 Sts B D']={r=1518260,prev=1005075,rank=293}, ['176 St 4']={r=1713696,prev=1803691,rank=272}, ['182-183 Sts B D']={r=1513443,prev=1502814,rank=294}, ['183 St 4']={r=1779224,prev=1831457,rank=261}, ['219 St 2 5']={r=979390,prev=1026894,rank=364}, ['225 St 2 5']={r=1187486,prev=1224369,rank=333}, ['231 St 1']={r=2919305,prev=3133231,rank=170}, ['233 St 2 5']={r=1445532,prev=1496673,rank=304}, ['238 St 1']={r=1204095,prev=960970,rank=332}, ['3 Av-138 St 6']={r=2503850,prev=2451972,rank=190}, ['3 Av-149 St 2 5']={r=6768255,prev=6784053,rank=59}, ['Allerton Av 2 5']={r=1614464,prev=1603702,rank=280}, ['Baychester Av 5']={r=1094872,prev=1006343,rank=346}, ['Bedford Park Blvd B D']={r=2143375,prev=1984267,rank=219}, ['Bedford Park Blvd-Lehman College 4']={r=1538253,prev=1575555,rank=291}, ['Bronx Park East 2 5']={r=769303,prev=752916,rank=385}, ['Brook Av 6']={r=1823468,prev=1895570,rank=254}, ['Buhre Av 6']={r=1146032,prev=1110307,rank=338}, ['Burke Av 2 5']={r=1000896,prev=997617,rank=362}, ['Burnside Av 4']={r=3113514,prev=3198218,rank=161}, ['Castle Hill Av 6']={r=1954511,prev=2000084,rank=243}, ['Cypress Av 6']={r=1043922,prev=1113667,rank=354}, ['East 143 St-St Mary\'s St 6']={r=313938,prev=301240,rank=417}, ['East 149 St 6']={r=1467410,prev=1508022,rank=302}, ['East 180 St 2 5']={r=2211198,prev=2249646,rank=213}, ['Eastchester-Dyre Av 5']={r=1331886,prev=1259009,rank=321}, ['Elder Av 6']={r=1996492,prev=2000985,rank=236}, ['Fordham Rd 4']={r=3120976,prev=3321215,rank=160}, ['Fordham Rd B D']={r=3671217,prev=3596416,rank=137}, ['Freeman St 2 5']={r=1358821,prev=1354453,rank=316}, ['Gun Hill Rd 2 5']={r=2271942,prev=2197147,rank=208}, ['Gun Hill Rd 5']={r=1248513,prev=1521987,rank=329}, ['Hunts Point Av 6']={r=3174354,prev=3216569,rank=156}, ['Intervale Av 2 5']={r=964689,prev=943016,rank=367}, ['Jackson Av 2 5']={r=1584727,prev=1597307,rank=283}, ['Kingsbridge Rd 4']={r=2733096,prev=2783082,rank=179}, ['Kingsbridge Rd B D']={r=2485283,prev=2475107,rank=193}, ['Longwood Av 6']={r=949680,prev=1040934,rank=369}, ['Middletown Rd 6']={r=597839,prev=595044,rank=402}, ['Morris Park 5']={r=711229,prev=668423,rank=393}, ['Morrison Av-Soundview 6']={r=1970185,prev=1988053,rank=239}, ['Mosholu Pkwy 4']={r=2491758,prev=2531607,rank=191}, ['Mt Eden Av 4']={r=1551038,prev=1652407,rank=289}, ['Nereid Av 2 5']={r=1006617,prev=1034335,rank=360}, ['Norwood-205 St D']={r=2639003,prev=2611874,rank=186}, ['Parkchester 6']={r=4734709,prev=4836244,rank=97}, ['Pelham Bay Park 6']={r=2134403,prev=2146552,rank=220}, ['Pelham Pkwy 2 5']={r=2651208,prev=2639586,rank=183}, ['Pelham Pkwy 5']={r=896134,prev=844884,rank=372}, ['Prospect Av 2 5']={r=2148059,prev=2142697,rank=217}, ['Simpson St 2 5']={r=2602749,prev=2585974,rank=188}, ['St Lawrence Av 6']={r=1276865,prev=1273609,rank=327}, ['Tremont Av B D']={r=3052099,prev=3246064,rank=165}, ['Van Cortlandt Park-242 St 1']={r=2189109,prev=2333136,rank=214}, ['Wakefield-241 St 2']={r=1404748,prev=1484478,rank=307}, ['West Farms Sq-East Tremont Av 2 5']={r=2104945,prev=2094751,rank=224}, ['Westchester Sq-East Tremont Av 6']={r=1796415,prev=1817925,rank=257}, ['Whitlock Av 6']={r=586845,prev=592103,rank=403}, ['Woodlawn 4']={r=2094285,prev=2160859,rank=226}, ['Zerega Av 6']={r=795756,prev=792928,rank=382}, ['15 St-Prospect Park F G']={r=1964534,prev=1867619,rank=240}, ['18 Av D']={r=1942617,prev=1909554,rank=244}, ['18 Av F']={r=1113492,prev=1163390,rank=344}, ['18 Av N']={r=1179756,prev=981261,rank=334}, ['20 Av D']={r=1578971,prev=1534396,rank=284}, ['20 Av N']={r=1142086,prev=1075077,rank=339}, ['25 Av D']={r=1507759,prev=1571134,rank=295}, ['25 St R']={r=1153842,prev=1149469,rank=337}, ['36 St D N R']={r=4254406,prev=4293364,rank=116}, ['4 Av F G/9 St R']={r=3924882,prev=3906028,rank=125}, ['45 St R']={r=2461410,prev=2251921,rank=195}, ['50 St D']={r=976988,prev=965643,rank=366}, ['53 St R']={r=2797730,prev=2378056,rank=174}, ['55 St D']={r=637405,prev=650590,rank=397}, ['59 St N R']={r=3664480,prev=3998207,rank=138}, ['7 Av B Q']={r=3103599,prev=3126475,rank=162}, ['7 Av F G']={r=3675218,prev=3572223,rank=136}, ['71 St D']={r=1722921,prev=1746966,rank=270}, ['77 St R']={r=1674582,prev=1676402,rank=277}, ['79 St D']={r=1926290,prev=1901043,rank=247}, ['8 Av N']={r=3801700,prev=3700661,rank=130}, ['86 St N']={r=708542,prev=609555,rank=394}, ['86 St R']={r=3434888,prev=3470741,rank=145}, ['9 Av D']={r=1708387,prev=1667200,rank=274}, ['Alabama Av J']={r=628299,prev=652030,rank=398}, ['Atlantic Av L']={r=469819,prev=559411,rank=411}, ['Atlantic Av-Barclays Ctr B D N Q R 2 3 4 5']={r=13939794,prev=13807282,rank=20}, ['Avenue H Q']={r=991766,prev=1034018,rank=363}, ['Avenue I F']={r=584129,prev=326005,rank=404}, ['Avenue J Q']={r=1775846,prev=1878547,rank=264}, ['Avenue M Q']={r=1691285,prev=1808189,rank=276}, ['Avenue N F']={r=877383,prev=612201,rank=375}, ['Avenue P F']={r=739804,prev=509036,rank=389}, ['Avenue U F']={r=547776,prev=310821,rank=405}, ['Avenue U N']={r=1019104,prev=830278,rank=359}, ['Avenue U Q']={r=2301941,prev=2329614,rank=202}, ['Avenue X F']={r=758700,prev=775436,rank=388}, ['Bay 50 St D']={r=821873,prev=826074,rank=381}, ['Bay Pkwy D']={r=2446673,prev=2435949,rank=196}, ['Bay Pkwy F']={r=362802,prev=188225,rank=414}, ['Bay Pkwy N']={r=2071452,prev=2266916,rank=229}, ['Bay Ridge Av R']={r=2354120,prev=2228497,rank=200}, ['Bay Ridge-95 St R']={r=1743441,prev=1739178,rank=269}, ['Bedford Av L']={r=7836366,prev=9053980,rank=45}, ['Bedford-Nostrand Avs G']={r=2795387,prev=2774993,rank=175}, ['Bergen St 2 3']={r=1208319,prev=1140677,rank=330}, ['Bergen St F G']={r=3577496,prev=3478946,rank=141}, ['Beverley Rd Q']={r=1048249,prev=1060568,rank=352}, ['Beverly Rd 2 5']={r=1284232,prev=1307405,rank=326}, ['Brighton Beach B Q']={r=3745994,prev=3778194,rank=133}, ['Broadway G']={r=1506905,prev=1402102,rank=296}, ['Broadway Junction A C J L Z']={r=2759349,prev=2810636,rank=177}, ['Bushwick Av-Aberdeen St L']={r=600188,prev=671545,rank=401}, ['Canarsie-Rockaway Pkwy L']={r=3302691,prev=3598843,rank=151}, ['Carroll St F G']={r=3615019,prev=3490924,rank=139}, ['Central Av M']={r=1472067,prev=725022,rank=301}, ['Chauncey St J Z']={r=1076510,prev=1063828,rank=349}, ['Church Av 2 5']={r=2862033,prev=2818535,rank=172}, ['Church Av B Q']={r=5061013,prev=5161293,rank=90}, ['Church Av F G']={r=3051736,prev=3099383,rank=166}, ['Clark St 2 3']={r=1781419,prev=1550414,rank=259}, ['Classon Av G']={r=1722852,prev=1649340,rank=271}, ['Cleveland St J']={r=880879,prev=901928,rank=374}, ['Clinton-Washington Avs C']={r=2144338,prev=2178439,rank=218}, ['Clinton-Washington Avs G']={r=1609332,prev=1534802,rank=281}, ['Coney Island-Stillwell Av D F N Q']={r=4579191,prev=4615664,rank=104}, ['Cortelyou Rd Q']={r=1957538,prev=1994734,rank=241}, ['Court St R/Borough Hall 2 3 4 5']={r=10135722,prev=10364534,rank=28}, ['Crescent St J Z']={r=1391945,prev=1467166,rank=308}, ['Crown Heights-Utica Av 3 4']={r=7933008,prev=7920192,rank=44}, ['Cypress Hills J']={r=420647,prev=411331,rank=413}, ['DeKalb Av B Q R']={r=6708640,prev=6776248,rank=60}, ['DeKalb Av L']={r=3290894,prev=4000252,rank=152}, ['Ditmas Av F']={r=1177275,prev=1149528,rank=335}, ['East 105 St L']={r=1001343,prev=1139556,rank=361}, ['Eastern Pkwy-Brooklyn Museum 2 3']={r=1338351,prev=1544013,rank=319}, ['Euclid Av A C']={r=3240578,prev=3174827,rank=154}, ['Flatbush Av-Brooklyn College 2 5']={r=5684108,prev=5822873,rank=76}, ['Flushing Av G']={r=732897,prev=874498,rank=390}, ['Flushing Av J M']={r=2773154,prev=2537390,rank=176}, ['Fort Hamilton Pkwy D']={r=1207971,prev=1191580,rank=331}, ['Fort Hamilton Pkwy F G']={r=1800167,prev=1765887,rank=256}, ['Fort Hamilton Pkwy N']={r=1372278,prev=969878,rank=311}, ['Franklin Av 2 3 4 5/Botanic Garden S']={r=4999385,prev=4604219,rank=92}, ['Franklin Av C S']={r=1977940,prev=2051171,rank=238}, ['Fulton St G']={r=1768601,prev=1745439,rank=265}, ['Gates Av J Z']={r=2249791,prev=2234908,rank=209}, ['Graham Av L']={r=2709511,prev=3093428,rank=180}, ['Grand Army Plaza 2 3']={r=2295401,prev=2228173,rank=204}, ['Grand St L']={r=1847219,prev=2126443,rank=252}, ['Grant Av A']={r=1749932,prev=1842974,rank=266}, ['Greenpoint Av G']={r=3089912,prev=2859047,rank=163}, ['Halsey St J']={r=2120521,prev=2059030,rank=223}, ['Halsey St L']={r=2176141,prev=2625255,rank=215}, ['Hewes St J M']={r=1117566,prev=893262,rank=343}, ['High St A C']={r=3536860,prev=3463611,rank=142}, ['Hoyt St 2 3']={r=2293256,prev=1982208,rank=205}, ['Hoyt-Schermerhorn Sts A C G']={r=3605153,prev=3370038,rank=140}, ['Jay St-MetroTech A C F R']={r=12238047,prev=12504027,rank=24}, ['Jefferson St L']={r=2237997,prev=2515861,rank=211}, ['Junius St 3']={r=676092,prev=620548,rank=395}, ['Kings Hwy B Q']={r=5938819,prev=5895421,rank=71}, ['Kings Hwy F']={r=1129071,prev=1356085,rank=340}, ['Kings Hwy N']={r=1371311,prev=1032541,rank=312}, ['Kingston Av 3']={r=1472802,prev=1443692,rank=300}, ['Kingston-Throop Avs C']={r=2055094,prev=2099891,rank=231}, ['Knickerbocker Av M']={r=1544093,prev=772085,rank=290}, ['Kosciuszko St J']={r=1779062,prev=1908610,rank=262}, ['Lafayette Av C']={r=1599887,prev=1631673,rank=282}, ['Liberty Av C']={r=833633,prev=839241,rank=380}, ['Livonia Av L']={r=856615,prev=994378,rank=376}, ['Lorimer St J M']={r=1747990,prev=1495068,rank=267}, ['Lorimer St L/Metropolitan Av G']={r=4696924,prev=4821359,rank=100}, ['Marcy Av J M Z']={r=4717791,prev=4171666,rank=98}, ['Montrose Av L']={r=1933886,prev=2239760,rank=245}, ['Morgan Av L']={r=2100475,prev=2465927,rank=225}, ['Myrtle Av J M Z']={r=3854024,prev=3789470,rank=128}, ['Myrtle-Willoughby Avs G']={r=1820637,prev=1768122,rank=255}, ['Myrtle-Wyckoff Avs L M']={r=5927332,prev=6893183,rank=72}, ['Nassau Av G']={r=3136229,prev=2880235,rank=159}, ['Neck Rd Q']={r=1362524,prev=1366989,rank=314}, ['Neptune Av F']={r=428163,prev=433083,rank=412}, ['Nevins St 2 3 4 5']={r=3150597,prev=3215723,rank=158}, ['New Lots Av 3']={r=1643487,prev=1644379,rank=279}, ['New Lots Av L']={r=1254351,prev=1499170,rank=328}, ['New Utrecht Av N/62 St D']={r=1501183,prev=1503742,rank=297}, ['Newkirk Av 2 5']={r=2131839,prev=2221270,rank=221}, ['Newkirk Plaza B Q']={r=3252504,prev=3258207,rank=153}, ['Norwood Av J Z']={r=948571,prev=966728,rank=370}, ['Nostrand Av 3']={r=1370372,prev=1250715,rank=313}, ['Nostrand Av A C']={r=5608232,prev=5609408,rank=78}, ['Ocean Pkwy Q']={r=1033340,prev=1018695,rank=357}, ['Park Pl S']={r=519984,prev=537340,rank=409}, ['Parkside Av Q']={r=1955051,prev=1979647,rank=242}, ['Pennsylvania Av 3']={r=1360708,prev=1279685,rank=315}, ['President St 2 5']={r=1037219,prev=1197019,rank=355}, ['Prospect Av R']={r=1780893,prev=1638002,rank=260}, ['Prospect Park B Q S']={r=3323334,prev=3289464,rank=149}, ['Ralph Av C']={r=1829126,prev=1850375,rank=253}, ['Rockaway Av 3']={r=1451431,prev=1412271,rank=303}, ['Rockaway Av C']={r=1787343,prev=1790683,rank=258}, ['Saratoga Av 3']={r=1556357,prev=1535733,rank=288}, ['Sheepshead Bay B Q']={r=4169796,prev=4183545,rank=119}, ['Shepherd Av C']={r=977012,prev=990387,rank=365}, ['Smith-9 Sts F G']={r=1435824,prev=1466151,rank=305}, ['Sterling St 2 5']={r=1654809,prev=1753125,rank=278}, ['Sutter Av L']={r=1047762,prev=1246958,rank=353}, ['Sutter Av-Rutland Rd 3']={r=2019485,prev=1968448,rank=233}, ['Union St R']={r=2271983,prev=2090848,rank=207}, ['Utica Av A C']={r=5106247,prev=5195786,rank=89}, ['Van Siclen Av 3']={r=853106,prev=854150,rank=378}, ['Van Siclen Av C']={r=918811,prev=955230,rank=371}, ['Van Siclen Av J Z']={r=791691,prev=818735,rank=383}, ['West 8 St-New York Aquarium F Q']={r=837836,prev=818685,rank=379}, ['Wilson Av L']={r=1290221,prev=1420065,rank=325}, ['Winthrop St 2 5']={r=1882065,prev=2140028,rank=250}, ['York St F']={r=3927129,prev=3256154,rank=124}, ['1 Av L']={r=5345371,prev=6743140,rank=83}, ['103 St 1']={r=3766055,prev=4072703,rank=131}, ['103 St 6']={r=4039570,prev=4065523,rank=120}, ['103 St B C']={r=1498363,prev=1630405,rank=299}, ['110 St 6']={r=3316061,prev=3394176,rank=150}, ['116 St 2 3']={r=3345661,prev=3446526,rank=148}, ['116 St 6']={r=4572453,prev=4683148,rank=105}, ['116 St B C']={r=2288111,prev=2262578,rank=206}, ['116 St-Columbia University 1']={r=4380469,prev=4528136,rank=112}, ['125 St 1']={r=2368025,prev=2457157,rank=199}, ['125 St 2 3']={r=4644262,prev=4727671,rank=101}, ['125 St 4 5 6']={r=8554857,prev=8630430,rank=37}, ['125 St A B C D']={r=9208598,prev=9037343,rank=31}, ['135 St 2 3']={r=4268823,prev=4506259,rank=115}, ['135 St B C']={r=1743921,prev=1622552,rank=268}, ['137 St-City College 1']={r=3874783,prev=4260166,rank=126}, ['14 St A C E/8 Av L']={r=14239275,prev=14324670,rank=18}, ['14 St F M 1 2 3/6 Av L']={r=14736035,prev=15002214,rank=17}, ['14 St-Union Sq L N Q R W 4 5 6']={r=32385260,prev=33124407,rank=4}, ['145 St 1']={r=2936613,prev=3062446,rank=169}, ['145 St 3']={r=954825,prev=635413,rank=368}, ['145 St A B C D']={r=7464653,prev=7434662,rank=49}, ['155 St B D']={r=1123868,prev=1115948,rank=341}, ['155 St C']={r=895036,prev=1001262,rank=373}, ['157 St 1']={r=3739786,prev=3514522,rank=134}, ['163 St-Amsterdam Av C']={r=1390312,prev=548092,rank=309}, ['168 St A C 1']={r=6156288,prev=8150537,rank=67}, ['175 St A']={r=4182625,prev=3879652,rank=118}, ['18 St 1']={r=2649616,prev=2683235,rank=184}, ['181 St 1']={r=3523536,prev=3605435,rank=143}, ['181 St A']={r=3404841,prev=3368097,rank=147}, ['190 St A']={r=1535450,prev=1423142,rank=292}, ['191 St 1']={r=2333160,prev=2526932,rank=201}, ['2 Av F']={r=5583944,prev=5034358,rank=79}, ['207 St 1']={r=1853146,prev=2020214,rank=251}, ['215 St 1']={r=527505,prev=553050,rank=408}, ['23 St 1']={r=4627755,prev=4853909,rank=102}, ['23 St 6']={r=8659806,prev=9035498,rank=35}, ['23 St C E']={r=7272610,prev=7420152,rank=52}, ['23 St F M']={r=8619473,prev=5099809,rank=36}, ['23 St R W']={r=7085694,prev=8155834,rank=53}, ['28 St 1']={r=4493352,prev=4444072,rank=108}, ['28 St 6']={r=5834989,prev=3525030,rank=73}, ['28 St R W']={r=4018310,prev=4445982,rank=122}, ['3 Av L']={r=1700456,prev=2204834,rank=275}, ['33 St 6']={r=8934900,prev=9530273,rank=33}, ['34 St-Herald Sq B D F M N Q R W']={r=39385436,prev=39111312,rank=3}, ['34 St-Hudson Yards 7']={r=6108384,prev=3189867,rank=69}, ['34 St-Penn Station 1 2 3']={r=25967676,prev=25968950,rank=6}, ['34 St-Penn Station A C E']={r=25631364,prev=24857456,rank=7}, ['42 St-Bryant Pk B D F M/5 Av 7']={r=17213702,prev=16056128,rank=13}, ['47-50 Sts-Rockefeller Center B D F M']={r=18604810,prev=17289384,rank=11}, ['49 St N R W']={r=7410041,prev=8394862,rank=50}, ['5 Av-53 St E M']={r=7684091,prev=7748504,rank=47}, ['5 Av-59 St N R W']={r=4995128,prev=5136918,rank=93}, ['50 St 1']={r=8134360,prev=8088925,rank=41}, ['50 St C E']={r=6902595,prev=6441984,rank=57}, ['57 St F']={r=4550216,prev=2254820,rank=106}, ['57 St-7 Av N Q R W']={r=11012550,prev=11978164,rank=26}, ['59 St-Columbus Circle A B C D 1']={r=23040650,prev=22991014,rank=8}, ['66 St-Lincoln Center 1']={r=7068256,prev=7196026,rank=54}, ['68 St-Hunter College 6']={r=6699711,prev=6537270,rank=61}, ['7 Av B D E']={r=5508778,prev=5299531,rank=80}, ['72 St 1 2 3']={r=12379560,prev=12879887,rank=23}, ['72 St B C']={r=2837041,prev=1382963,rank=173}, ['72 St Q']={r=9528891,prev=9068131,rank=30}, ['77 St 6']={r=7821286,prev=7653602,rank=46}, ['79 St 1']={r=4745863,prev=4990840,rank=96}, ['8 St-New York University R W']={r=5434212,prev=5686332,rank=82}, ['81 St-Museum of Natural History B C']={r=4407607,prev=4748083,rank=111}, ['86 St 1']={r=5659795,prev=6139911,rank=77}, ['86 St 4 5 6']={r=13537308,prev=13486510,rank=21}, ['86 St B C']={r=3232637,prev=1734366,rank=155}, ['86 St Q']={r=8378778,prev=8075480,rank=38}, ['96 St 1 2 3']={r=11628887,prev=11702401,rank=25}, ['96 St 6']={r=5145222,prev=5151742,rank=88}, ['96 St B C']={r=3038864,prev=2836643,rank=167}, ['96 St Q']={r=6154837,prev=6014304,rank=68}, ['Astor Place 6']={r=5502925,prev=5111358,rank=81}, ['Bowery J Z']={r=1325244,prev=1275541,rank=322}, ['Bowling Green 4 5']={r=8362034,prev=8251885,rank=39}, ['Broad St J Z']={r=2172223,prev=1967616,rank=216}, ['Broadway-Lafayette St B D F M/Bleecker St 6']={r=12455155,prev=11414999,rank=22}, ['Brooklyn Bridge-City Hall 4 5 6/Chambers St J Z']={r=9065146,prev=9060206,rank=32}, ['Canal St 1']={r=1984827,prev=1884371,rank=237}, ['Canal St A C E']={r=6403172,prev=6160037,rank=63}, ['Canal St J N Q R W Z 6']={r=15861864,prev=15995877,rank=16}, ['Cathedral Pkwy-110 St 1']={r=3703893,prev=4013259,rank=135}, ['Cathedral Pkwy-110 St B C']={r=2396624,prev=1168203,rank=197}, ['Central Park North-110 St 2 3']={r=2666985,prev=2823756,rank=181}, ['Chambers St 1 2 3']={r=5941546,prev=6108641,rank=70}, ['Chambers St A C/WTC E/Park Pl 2 3/Cortlandt R W']={r=20820549,prev=21636146,rank=9}, ['Christopher St-Sheridan Sq 1']={r=3412332,prev=3312074,rank=146}, ['City Hall R W']={r=1710380,prev=1920070,rank=273}, ['Delancey St F/Essex St J M Z']={r=8861296,prev=7922586,rank=34}, ['Dyckman St 1']={r=2079656,prev=2263932,rank=228}, ['Dyckman St A']={r=2238372,prev=2037425,rank=210}, ['East Broadway F']={r=4460330,prev=4216327,rank=109}, ['Franklin St 1']={r=1567005,prev=1757424,rank=285}, ['Fulton St A C J Z 2 3 4 5']={r=27715365,prev=27719115,rank=5}, ['Grand Central-42 St S 4 5 6 7']={r=45745700,prev=45207849,rank=2}, ['Grand St B D']={r=8024364,prev=7187070,rank=43}, ['Harlem-148 St 3']={r=1120454,prev=1232448,rank=342}, ['Houston St 1']={r=4496793,prev=4488886,rank=107}, ['Inwood-207 St A']={r=3150731,prev=2796626,rank=157}, ['Lexington Av N R W/59 St 4 5 6']={r=16760813,prev=16955204,rank=15}, ['Lexington Av-53 St E M/51 St 6']={r=18957465,prev=18585755,rank=10}, ['Lexington Av-63 St F Q']={r=6567634,prev=6506078,rank=62}, ['Marble Hill-225 St 1']={r=1561844,prev=1686237,rank=287}, ['Prince St R W']={r=4342692,prev=5142727,rank=113}, ['Rector St 1']={r=2554523,prev=2764454,rank=189}, ['Rector St R W']={r=2014996,prev=2154295,rank=234}, ['Roosevelt Island F']={r=2380764,prev=2269432,rank=198}, ['South Ferry 1/Whitehall St R W']={r=10272682,prev=10275268,rank=27}, ['Spring St 6']={r=3754272,prev=3654673,rank=132}, ['Spring St C E']={r=4423135,prev=3853792,rank=110}, ['Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E']={r=65020294,prev=65060656,rank=1}, ['Wall St 2 3']={r=6910581,prev=6452733,rank=56}, ['Wall St 4 5']={r=5720475,prev=5646207,rank=75}, ['West 4 St-Washington Sq A B C D E F M']={r=14063633,prev=13446383,rank=19}, ['WTC Cortlandt 1']={r=4232521,prev=1245455,rank=117}, ['103 St-Corona Plaza 7']={r=6399657,prev=6319564,rank=64}, ['104 St A']={r=536924,prev=548871,rank=406}, ['104 St J Z']={r=774888,prev=456765,rank=384}, ['111 St 7']={r=3836999,prev=3608389,rank=129}, ['111 St A']={r=760163,prev=762641,rank=387}, ['111 St J']={r=350344,prev=801639,rank=415}, ['121 St J Z']={r=675500,prev=391696,rank=396}, ['169 St F']={r=2465120,prev=2497336,rank=194}, ['21 St G']={r=535536,prev=550464,rank=407}, ['21 St-Queensbridge F']={r=3516992,prev=3340366,rank=144}, ['30 Av N W']={r=5230182,prev=2373721,rank=87}, ['33 St-Rawson St 7']={r=2907388,prev=3031465,rank=171}, ['36 Av N W']={r=1933812,prev=1446827,rank=246}, ['36 St M R']={r=1383420,prev=1513330,rank=310}, ['39 Av-Dutch Kills N W']={r=761816,prev=665750,rank=386}, ['40 St-Lowery St 7']={r=3074342,prev=3048104,rank=164}, ['46 St M R']={r=2609445,prev=2711011,rank=187}, ['46 St-Bliss St 7']={r=4019044,prev=4058815,rank=121}, ['52 St 7']={r=1907368,prev=1883246,rank=248}, ['63 Dr-Rego Park M R']={r=4753706,prev=4769745,rank=95}, ['65 St M R']={r=1098148,prev=1129031,rank=345}, ['67 Av M R']={r=2641450,prev=2592645,rank=185}, ['69 St 7']={r=1564387,prev=1510410,rank=286}, ['74-Broadway 7/Jackson Hts-Roosevelt Av E F M R']={r=17077862,prev=16994358,rank=14}, ['75 Av E F']={r=1059027,prev=1019978,rank=351}, ['75 St-Elderts Ln J Z']={r=1029388,prev=992267,rank=358}, ['80 St A']={r=1298825,prev=1332047,rank=324}, ['82 St-Jackson Hts 7']={r=4893865,prev=4741470,rank=94}, ['85 St-Forest Pkwy J']={r=1061293,prev=1063133,rank=350}, ['88 St A']={r=853110,prev=855851,rank=377}, ['90 St-Elmhurst Av 7']={r=5272683,prev=5245160,rank=86}, ['Aqueduct Racetrack A']={r=601436,prev=732091,rank=400}, ['Aqueduct-North Conduit Av A']={r=263422,prev=276067,rank=419}, ['Astoria Blvd N W']={r=723354,prev=4226298,rank=391}, ['Astoria-Ditmars Blvd N W']={r=5277341,prev=4543854,rank=85}, ['Beach 105 St A S']={r=88439,prev=92852,rank=424}, ['Beach 25 St A']={r=517164,prev=543839,rank=410}, ['Beach 36 St A']={r=292305,prev=275165,rank=418}, ['Beach 44 St A']={r=215701,prev=216609,rank=421}, ['Beach 60 St A']={r=623826,prev=630038,rank=399}, ['Beach 67 St-Arverne By The Sea A']={r=718008,prev=669421,rank=392}, ['Beach 90 St A S']={r=348771,prev=382766,rank=416}, ['Beach 98 St A S']={r=164130,prev=154620,rank=422}, ['Briarwood-Van Wyck Blvd E F']={r=1501152,prev=1462744,rank=298}, ['Broad Channel A S']={r=90358,prev=82248,rank=423}, ['Broadway N W']={r=3038655,prev=2436810,rank=168}, ['Court Sq E G M 7']={r=7033377,prev=7218939,rank=55}, ['Elmhurst Av M R']={r=3867341,prev=3898046,rank=127}, ['Far Rockaway-Mott Av A']={r=1347765,prev=1376087,rank=317}, ['Flushing-Main St 7']={r=17568837,prev=17799862,rank=12}, ['Forest Av M']={r=1310163,prev=927801,rank=323}, ['Forest Hills-71 Av E F M R']={r=8027234,prev=8115385,rank=42}, ['Fresh Pond Rd M']={r=1776084,prev=1400512,rank=263}, ['Grand Av-Newtown M R']={r=5730846,prev=5713827,rank=74}, ['Howard Beach-JFK Airport A']={r=1171303,prev=1154695,rank=336}, ['Hunters Point Av 7']={r=1885928,prev=1932478,rank=249}, ['Jamaica Center-Parsons-Archer E J Z']={r=10010419,prev=10681269,rank=29}, ['Jamaica-179 St F']={r=6262449,prev=6270766,rank=66}, ['Jamaica-Van Wyck E']={r=1412179,prev=1502672,rank=306}, ['Junction Blvd 7']={r=6883317,prev=6896657,rank=58}, ['Kew Gardens-Union Turnpike E F']={r=7625674,prev=7680149,rank=48}, ['Mets-Willets Point 7']={r=2025162,prev=1756825,rank=232}, ['Middle Village-Metropolitan Av M']={r=1090449,prev=954875,rank=347}, ['Northern Blvd M R']={r=2008091,prev=2097374,rank=235}, ['Ozone Park-Lefferts Blvd A']={r=2216647,prev=2296755,rank=212}, ['Parsons Blvd F']={r=2086114,prev=2003517,rank=227}, ['Queens Plaza E M R']={r=4334290,prev=3886574,rank=114}, ['Queensboro Plaza N W 7']={r=5018211,prev=5079051,rank=91}, ['Rockaway Blvd A']={r=2299903,prev=2336304,rank=203}, ['Rockaway Park-Beach 116 St A S']={r=228144,prev=240483,rank=420}, ['Seneca Av M']={r=1080829,prev=565714,rank=348}, ['Steinway St M R']={r=4715335,prev=5075623,rank=99}, ['Sutphin Blvd F']={r=1345420,prev=1303795,rank=318}, ['Sutphin Blvd-Archer Av-JFK Airport E J Z']={r=7354064,prev=7282128,rank=51}, ['Vernon Blvd-Jackson Av 7']={r=4623070,prev=4493326,rank=103}, ['Woodhaven Blvd J Z']={r=1337787,prev=1370889,rank=320}, ['Woodhaven Blvd M R']={r=6381132,prev=6509386,rank=65}, ['Woodside-61 St 7']={r=5345369,prev=5282486,rank=84}, } local csv = { ['R01']={boro='Q',struc='Elevated',lat='40.775036',lon='-73.912034',id='1',n='',s='Manhattan'}, --Astoria - Ditmars Blvd / N W ['R03']={boro='Q',struc='Elevated',lat='40.770258',lon='-73.917843',id='2',n='Ditmars Blvd',s='Manhattan'}, --Astoria Blvd / N W ['R04']={boro='Q',struc='Elevated',lat='40.766779',lon='-73.921479',id='3',n='Astoria - Ditmars Blvd',s='Manhattan'}, --30 Av / N W ['R05']={boro='Q',struc='Elevated',lat='40.76182',lon='-73.925508',id='4',n='Astoria - Ditmars Blvd',s='Manhattan'}, --Broadway / N W ['R06']={boro='Q',struc='Elevated',lat='40.756804',lon='-73.929575',id='5',n='Astoria - Ditmars Blvd',s='Manhattan'}, --36 Av / N W ['R08']={boro='Q',struc='Elevated',lat='40.752882',lon='-73.932755',id='6',n='Astoria - Ditmars Blvd',s='Manhattan'}, --39 Av / N W ['R11']={boro='M',struc='Subway',lat='40.76266',lon='-73.967258',id='7',n='Queens',s='Downtown & Brooklyn'}, --Lexington Av/59 St / N W R ['R13']={boro='M',struc='Subway',lat='40.764811',lon='-73.973347',id='8',n='Queens',s='Downtown & Brooklyn'}, --5 Av/59 St / N W R ['R14']={boro='M',struc='Subway',lat='40.764664',lon='-73.980658',id='9',n='Uptown & Queens',s='Downtown & Brooklyn'}, --57 St - 7 Av / N Q R W ['R15']={boro='M',struc='Subway',lat='40.759901',lon='-73.984139',id='10',n='Uptown & Queens',s='Downtown & Brooklyn'}, --49 St / N R W ['R16']={boro='M',struc='Subway',lat='40.754672',lon='-73.986754',id='11',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Times Sq - 42 St / N Q R W ['R17']={boro='M',struc='Subway',lat='40.749567',lon='-73.98795',id='12',n='Uptown & Queens',s='Downtown & Brooklyn'}, --34 St - Herald Sq / N Q R W ['R18']={boro='M',struc='Subway',lat='40.745494',lon='-73.988691',id='13',n='Uptown & Queens',s='Downtown & Brooklyn'}, --28 St / R W ['R19']={boro='M',struc='Subway',lat='40.741303',lon='-73.989344',id='14',n='Uptown & Queens',s='Downtown & Brooklyn'}, --23 St / R W ['R20']={boro='M',struc='Subway',lat='40.735736',lon='-73.990568',id='15',n='Uptown & Queens',s='Downtown & Brooklyn'}, --14 St - Union Sq / N Q R W ['R21']={boro='M',struc='Subway',lat='40.730328',lon='-73.992629',id='16',n='Uptown & Queens',s='Downtown & Brooklyn'}, --8 St - NYU / R W ['R22']={boro='M',struc='Subway',lat='40.724329',lon='-73.997702',id='17',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Prince St / R W ['R23']={boro='M',struc='Subway',lat='40.719527',lon='-74.001775',id='18',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Canal St / R W ['Q01']={boro='M',struc='Subway',lat='40.718383',lon='-74.00046',id='19',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Canal St / N Q ['R24']={boro='M',struc='Subway',lat='40.713282',lon='-74.006978',id='20',n='Uptown & Queens',s='Downtown & Brooklyn'}, --City Hall / R W ['R25']={boro='M',struc='Subway',lat='40.710668',lon='-74.011029',id='21',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Cortlandt St / R W ['R26']={boro='M',struc='Subway',lat='40.70722',lon='-74.013342',id='22',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Rector St / R W ['R27']={boro='M',struc='Subway',lat='40.703087',lon='-74.012994',id='23',n='Uptown & Queens',s='Brooklyn'}, --Whitehall St / R W ['R28']={boro='Bk',struc='Subway',lat='40.6941',lon='-73.991777',id='24',n='Manhattan',s='Bay Ridge - 95 St'}, --Court St / R ['R29']={boro='Bk',struc='Subway',lat='40.69218',lon='-73.985942',id='25',n='Manhattan',s='Bay Ridge - 95 St'}, --Jay St - MetroTech / R ['R30']={boro='Bk',struc='Subway',lat='40.690635',lon='-73.981824',id='26',n='Manhattan',s='Coney Island - Bay Ridge'}, --DeKalb Av / B Q R ['R31']={boro='Bk',struc='Subway',lat='40.683666',lon='-73.97881',id='27',n='Manhattan',s='Coney Island - Bay Ridge'}, --Atlantic Av - Barclays Ctr / D N R ['R32']={boro='Bk',struc='Subway',lat='40.677316',lon='-73.98311',id='28',n='Manhattan',s='Bay Ridge - 95 St'}, --Union St / R ['R33']={boro='Bk',struc='Subway',lat='40.670847',lon='-73.988302',id='29',n='Manhattan',s='Bay Ridge - 95 St'}, --9 St / R ['R34']={boro='Bk',struc='Subway',lat='40.665414',lon='-73.992872',id='30',n='Manhattan',s='Bay Ridge - 95 St'}, --Prospect Av / R ['R35']={boro='Bk',struc='Subway',lat='40.660397',lon='-73.998091',id='31',n='Manhattan',s='Bay Ridge - 95 St'}, --25 St / R ['R36']={boro='Bk',struc='Subway',lat='40.655144',lon='-74.003549',id='32',n='Manhattan',s='Coney Island - Bay Ridge'}, --36 St / D N R ['R39']={boro='Bk',struc='Subway',lat='40.648939',lon='-74.010006',id='33',n='Manhattan',s='Bay Ridge - 95 St'}, --45 St / R ['R40']={boro='Bk',struc='Subway',lat='40.645069',lon='-74.014034',id='34',n='Manhattan',s='Bay Ridge - 95 St'}, --53 St / R ['R41']={boro='Bk',struc='Subway',lat='40.641362',lon='-74.017881',id='35',n='Manhattan',s='Coney Island - Bay Ridge'}, --59 St / N R ['R42']={boro='Bk',struc='Subway',lat='40.634967',lon='-74.023377',id='36',n='Manhattan',s='95 St'}, --Bay Ridge Av / R ['R43']={boro='Bk',struc='Subway',lat='40.629742',lon='-74.02551',id='37',n='Manhattan',s='95 St'}, --77 St / R ['R44']={boro='Bk',struc='Subway',lat='40.622687',lon='-74.028398',id='38',n='Manhattan',s='95 St'}, --86 St / R ['R45']={boro='Bk',struc='Subway',lat='40.616622',lon='-74.030876',id='39',n='Manhattan',s=''}, --Bay Ridge - 95 St / R ['D24']={boro='Bk',struc='Subway',lat='40.68446',lon='-73.97689',id='40',n='Manhattan',s='Brighton Beach & Coney Island'}, --Atlantic Av - Barclays Ctr / B Q ['D25']={boro='Bk',struc='Subway',lat='40.67705',lon='-73.972367',id='41',n='Manhattan',s='Brighton Beach & Coney Island'}, --7 Av / B Q ['D26']={boro='Bk',struc='Open Cut',lat='40.661614',lon='-73.962246',id='42',n='Manhattan & Franklin Av',s='Brighton Beach & Coney Island'}, --Prospect Park / B Q ['D27']={boro='Bk',struc='Open Cut',lat='40.655292',lon='-73.961495',id='43',n='Manhattan',s='Brighton Beach & Coney Island'}, --Parkside Av / B Q ['D28']={boro='Bk',struc='Open Cut',lat='40.650527',lon='-73.962982',id='44',n='Manhattan',s='Brighton Beach & Coney Island'}, --Church Av / B Q ['D29']={boro='Bk',struc='Open Cut',lat='40.644031',lon='-73.964492',id='45',n='Manhattan',s='Brighton Beach & Coney Island'}, --Beverley Rd / B Q ['D30']={boro='Bk',struc='Open Cut',lat='40.640927',lon='-73.963891',id='46',n='Manhattan',s='Brighton Beach & Coney Island'}, --Cortelyou Rd / B Q ['D31']={boro='Bk',struc='Open Cut',lat='40.635082',lon='-73.962793',id='47',n='Manhattan',s='Brighton Beach & Coney Island'}, --Newkirk Plaza / B Q ['D32']={boro='Bk',struc='Open Cut',lat='40.62927',lon='-73.961639',id='48',n='Manhattan',s='Brighton Beach & Coney Island'}, --Avenue H / B Q ['D33']={boro='Bk',struc='Open Cut',lat='40.625039',lon='-73.960803',id='49',n='Manhattan',s='Brighton Beach & Coney Island'}, --Avenue J / B Q ['D34']={boro='Bk',struc='Open Cut',lat='40.617618',lon='-73.959399',id='50',n='Manhattan',s='Brighton Beach & Coney Island'}, --Avenue M / B Q ['D35']={boro='Bk',struc='Open Cut',lat='40.60867',lon='-73.957734',id='51',n='Manhattan',s='Brighton Beach & Coney Island'}, --Kings Hwy / B Q ['D37']={boro='Bk',struc='Open Cut',lat='40.5993',lon='-73.955929',id='52',n='Manhattan',s='Brighton Beach & Coney Island'}, --Avenue U / B Q ['D38']={boro='Bk',struc='Open Cut',lat='40.595246',lon='-73.955161',id='53',n='Manhattan',s='Brighton Beach & Coney Island'}, --Neck Rd / B Q ['D39']={boro='Bk',struc='Open Cut',lat='40.586896',lon='-73.954155',id='54',n='Manhattan',s='Brighton Beach & Coney Island'}, --Sheepshead Bay / B Q ['D40']={boro='Bk',struc='Elevated',lat='40.577621',lon='-73.961376',id='55',n='Manhattan',s='Coney Island'}, --Brighton Beach / B Q ['D41']={boro='Bk',struc='Elevated',lat='40.576312',lon='-73.968501',id='56',n='Manhattan',s='Stillwell Av'}, --Ocean Pkwy / Q ['D42']={boro='Bk',struc='Elevated',lat='40.576127',lon='-73.975939',id='57',n='Manhattan',s='Stillwell Av'}, --W 8 St - NY Aquarium / F Q ['D43']={boro='Bk',struc='Viaduct',lat='40.577422',lon='-73.981233',id='58',n='Manhattan',s=''}, --Coney Island - Stillwell Av / D F N Q ['B12']={boro='Bk',struc='Open Cut',lat='40.646292',lon='-73.994324',id='59',n='Manhattan',s='Coney Island'}, --9 Av / D ['B13']={boro='Bk',struc='Elevated',lat='40.640914',lon='-73.994304',id='60',n='Manhattan',s='Coney Island'}, --Fort Hamilton Pkwy / D ['B14']={boro='Bk',struc='Elevated',lat='40.63626',lon='-73.994791',id='61',n='Manhattan',s='Coney Island'}, --50 St / D ['B15']={boro='Bk',struc='Elevated',lat='40.631435',lon='-73.995476',id='62',n='Manhattan',s='Coney Island'}, --55 St / D ['B16']={boro='Bk',struc='Elevated',lat='40.626472',lon='-73.996895',id='63',n='Manhattan',s='Coney Island'}, --62 St / D ['B17']={boro='Bk',struc='Elevated',lat='40.619589',lon='-73.998864',id='64',n='Manhattan',s='Coney Island'}, --71 St / D ['B18']={boro='Bk',struc='Elevated',lat='40.613501',lon='-74.00061',id='65',n='Manhattan',s='Coney Island'}, --79 St / D ['B19']={boro='Bk',struc='Elevated',lat='40.607954',lon='-74.001736',id='66',n='Manhattan',s='Coney Island'}, --18 Av / D ['B20']={boro='Bk',struc='Elevated',lat='40.604556',lon='-73.998168',id='67',n='Manhattan',s='Coney Island'}, --20 Av / D ['B21']={boro='Bk',struc='Elevated',lat='40.601875',lon='-73.993728',id='68',n='Manhattan',s='Coney Island'}, --Bay Pkwy / D ['B22']={boro='Bk',struc='Elevated',lat='40.597704',lon='-73.986829',id='69',n='Manhattan',s='Coney Island'}, --25 Av / D ['B23']={boro='Bk',struc='Elevated',lat='40.588841',lon='-73.983765',id='70',n='Manhattan',s='Coney Island'}, --Bay 50 St / D ['N02']={boro='Bk',struc='Open Cut',lat='40.635064',lon='-74.011719',id='71',n='Manhattan',s='Coney Island'}, --8 Av / N ['N03']={boro='Bk',struc='Open Cut',lat='40.631386',lon='-74.005351',id='72',n='Manhattan',s='Coney Island'}, --Fort Hamilton Pkwy / N ['N04']={boro='Bk',struc='Open Cut',lat='40.624842',lon='-73.996353',id='73',n='Manhattan',s='Coney Island'}, --New Utrecht Av / N ['N05']={boro='Bk',struc='Open Cut',lat='40.620671',lon='-73.990414',id='74',n='Manhattan',s='Coney Island'}, --18 Av / N ['N06']={boro='Bk',struc='Open Cut',lat='40.61741',lon='-73.985026',id='75',n='Manhattan',s='Coney Island'}, --20 Av / N ['N07']={boro='Bk',struc='Open Cut',lat='40.611815',lon='-73.981848',id='76',n='Manhattan',s='Coney Island'}, --Bay Pkwy / N ['N08']={boro='Bk',struc='Open Cut',lat='40.603923',lon='-73.980353',id='77',n='Manhattan',s='Coney Island'}, --Kings Hwy / N ['N09']={boro='Bk',struc='Open Cut',lat='40.597473',lon='-73.979137',id='78',n='Manhattan',s='Coney Island'}, --Avenue U / N ['N10']={boro='Bk',struc='Open Cut',lat='40.592721',lon='-73.97823',id='79',n='Manhattan',s='Coney Island'}, --86 St / N ['J12']={boro='Q',struc='Elevated',lat='40.700492',lon='-73.828294',id='80',n='Jamaica',s='Manhattan'}, --121 St / J Z ['J13']={boro='Q',struc='Elevated',lat='40.697418',lon='-73.836345',id='81',n='Jamaica',s='Manhattan'}, --111 St / J ['J14']={boro='Q',struc='Elevated',lat='40.695178',lon='-73.84433',id='82',n='Jamaica',s='Manhattan'}, --104 St / J Z ['J15']={boro='Q',struc='Elevated',lat='40.693879',lon='-73.851576',id='83',n='Jamaica',s='Manhattan'}, --Woodhaven Blvd / J Z ['J16']={boro='Q',struc='Elevated',lat='40.692435',lon='-73.86001',id='84',n='Jamaica',s='Manhattan'}, --85 St - Forest Pkwy / J ['J17']={boro='Q',struc='Elevated',lat='40.691324',lon='-73.867139',id='85',n='Jamaica',s='Manhattan'}, --75 St / J Z ['J19']={boro='Bk',struc='Elevated',lat='40.689941',lon='-73.87255',id='86',n='Jamaica',s='Manhattan'}, --Cypress Hills / J ['J20']={boro='Bk',struc='Elevated',lat='40.683194',lon='-73.873785',id='87',n='Jamaica',s='Manhattan'}, --Crescent St / J Z ['J21']={boro='Bk',struc='Elevated',lat='40.68141',lon='-73.880039',id='88',n='Jamaica',s='Manhattan'}, --Norwood Av / J Z ['J22']={boro='Bk',struc='Elevated',lat='40.679947',lon='-73.884639',id='89',n='Jamaica',s='Manhattan'}, --Cleveland St / J ['J23']={boro='Bk',struc='Elevated',lat='40.678024',lon='-73.891688',id='90',n='Jamaica',s='Manhattan'}, --Van Siclen Av / J Z ['J24']={boro='Bk',struc='Elevated',lat='40.676992',lon='-73.898654',id='91',n='Jamaica',s='Manhattan'}, --Alabama Av / J ['J27']={boro='Bk',struc='Elevated',lat='40.679498',lon='-73.904512',id='92',n='Jamaica',s='Manhattan'}, --Broadway Jct / J Z ['J28']={boro='Bk',struc='Elevated',lat='40.682893',lon='-73.910456',id='93',n='Jamaica',s='Manhattan'}, --Chauncey St / J Z ['J29']={boro='Bk',struc='Elevated',lat='40.68637',lon='-73.916559',id='94',n='Jamaica',s='Manhattan'}, --Halsey St / J ['J30']={boro='Bk',struc='Elevated',lat='40.68963',lon='-73.92227',id='95',n='Jamaica',s='Manhattan'}, --Gates Av / J Z ['J31']={boro='Bk',struc='Elevated',lat='40.693342',lon='-73.928814',id='96',n='Jamaica',s='Manhattan'}, --Kosciuszko St / J ['M11']={boro='Bk',struc='Elevated',lat='40.697207',lon='-73.935657',id='97',n='Jamaica - Middle Village',s='Manhattan'}, --Myrtle Av / J M Z ['M12']={boro='Bk',struc='Elevated',lat='40.70026',lon='-73.941126',id='98',n='Jamaica - Middle Village',s='Manhattan'}, --Flushing Av / J M ['M13']={boro='Bk',struc='Elevated',lat='40.703869',lon='-73.947408',id='99',n='Jamaica - Middle Village',s='Manhattan'}, --Lorimer St / J M ['M14']={boro='Bk',struc='Elevated',lat='40.70687',lon='-73.953431',id='100',n='Jamaica - Middle Village',s='Manhattan'}, --Hewes St / J M ['M16']={boro='Bk',struc='Elevated',lat='40.708359',lon='-73.957757',id='101',n='Jamaica - Middle Village',s='Manhattan'}, --Marcy Av / J M Z ['M18']={boro='M',struc='Subway',lat='40.718315',lon='-73.987437',id='102',n='Brooklyn',s='Broad St (JZ) - Uptown (M)'}, --Essex St / J M Z ['M19']={boro='M',struc='Subway',lat='40.72028',lon='-73.993915',id='103',n='Brooklyn',s='Broad St'}, --Bowery / J Z ['M20']={boro='M',struc='Subway',lat='40.718092',lon='-73.999892',id='104',n='Brooklyn',s='Broad St'}, --Canal St / J Z ['M21']={boro='M',struc='Subway',lat='40.713243',lon='-74.003401',id='105',n='Brooklyn',s='Broad St'}, --Chambers St / J Z ['M22']={boro='M',struc='Subway',lat='40.710374',lon='-74.007582',id='106',n='Brooklyn',s='Broad St'}, --Fulton St / J Z ['M23']={boro='M',struc='Subway',lat='40.706476',lon='-74.011056',id='107',n='Brooklyn',s=''}, --Broad St / J Z ['M01']={boro='Q',struc='Elevated',lat='40.711396',lon='-73.889601',id='108',n='Manhattan',s=''}, --Middle Village - Metropolitan Av / M ['M04']={boro='Q',struc='Elevated',lat='40.706186',lon='-73.895877',id='109',n='Manhattan',s='Metropolitan Av'}, --Fresh Pond Rd / M ['M05']={boro='Q',struc='Elevated',lat='40.704423',lon='-73.903077',id='110',n='Manhattan',s='Metropolitan Av'}, --Forest Av / M ['M06']={boro='Q',struc='Elevated',lat='40.702762',lon='-73.90774',id='111',n='Manhattan',s='Metropolitan Av'}, --Seneca Av / M ['M08']={boro='Bk',struc='Elevated',lat='40.69943',lon='-73.912385',id='112',n='Manhattan',s='Metropolitan Av'}, --Myrtle - Wyckoff Avs / M ['M09']={boro='Bk',struc='Elevated',lat='40.698664',lon='-73.919711',id='113',n='Manhattan',s='Metropolitan Av'}, --Knickerbocker Av / M ['M10']={boro='Bk',struc='Elevated',lat='40.697857',lon='-73.927397',id='114',n='Manhattan',s='Metropolitan Av'}, --Central Av / M ['L01']={boro='M',struc='Subway',lat='40.739777',lon='-74.002578',id='115',n='',s='Brooklyn'}, --8 Av / L ['L02']={boro='M',struc='Subway',lat='40.737335',lon='-73.996786',id='116',n='8 Av',s='Brooklyn'}, --6 Av / L ['L03']={boro='M',struc='Subway',lat='40.734789',lon='-73.99073',id='117',n='8 Av',s='Brooklyn'}, --Union Sq - 14 St / L ['L05']={boro='M',struc='Subway',lat='40.732849',lon='-73.986122',id='118',n='8 Av',s='Brooklyn'}, --3 Av / L ['L06']={boro='M',struc='Subway',lat='40.730953',lon='-73.981628',id='119',n='8 Av',s='Brooklyn'}, --1 Av / L ['L08']={boro='Bk',struc='Subway',lat='40.717304',lon='-73.956872',id='120',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Bedford Av / L ['L10']={boro='Bk',struc='Subway',lat='40.714063',lon='-73.950275',id='121',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Lorimer St / L ['L11']={boro='Bk',struc='Subway',lat='40.714565',lon='-73.944053',id='122',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Graham Av / L ['L12']={boro='Bk',struc='Subway',lat='40.711926',lon='-73.94067',id='123',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Grand St / L ['L13']={boro='Bk',struc='Subway',lat='40.707739',lon='-73.93985',id='124',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Montrose Av / L ['L14']={boro='Bk',struc='Subway',lat='40.706152',lon='-73.933147',id='125',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Morgan Av / L ['L15']={boro='Bk',struc='Subway',lat='40.706607',lon='-73.922913',id='126',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Jefferson St / L ['L16']={boro='Bk',struc='Subway',lat='40.703811',lon='-73.918425',id='127',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --DeKalb Av / L ['L17']={boro='Bk',struc='Subway',lat='40.699814',lon='-73.911586',id='128',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Myrtle - Wyckoff Avs / L ['L19']={boro='Q',struc='Subway',lat='40.695602',lon='-73.904084',id='129',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Halsey St / L ['L20']={boro='Bk',struc='Subway',lat='40.688764',lon='-73.904046',id='130',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Wilson Av / L ['L21']={boro='Bk',struc='Subway',lat='40.682829',lon='-73.905249',id='131',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Bushwick Av - Aberdeen St / L ['L22']={boro='Bk',struc='Elevated',lat='40.678856',lon='-73.90324',id='132',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Broadway Jct / L ['L24']={boro='Bk',struc='Elevated',lat='40.675345',lon='-73.903097',id='133',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Atlantic Av / L ['L25']={boro='Bk',struc='Elevated',lat='40.669367',lon='-73.901975',id='134',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Sutter Av / L ['L26']={boro='Bk',struc='Elevated',lat='40.664038',lon='-73.900571',id='135',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Livonia Av / L ['L27']={boro='Bk',struc='Elevated',lat='40.658733',lon='-73.899232',id='136',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --New Lots Av / L ['L28']={boro='Bk',struc='At Grade',lat='40.650573',lon='-73.899485',id='137',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --E 105 St / L ['L29']={boro='Bk',struc='At Grade',lat='40.646654',lon='-73.90185',id='138',n='Manhattan',s=''}, --Canarsie - Rockaway Pkwy / L ['S01']={boro='Bk',struc='Elevated',lat='40.680596',lon='-73.955827',id='139',n='',s='Prospect Park'}, --Franklin Av / S ['S03']={boro='Bk',struc='Open Cut',lat='40.674772',lon='-73.957624',id='141',n='Franklin Av',s='Prospect Park'}, --Park Pl / S ['S04']={boro='Bk',struc='Open Cut',lat='40.670343',lon='-73.959245',id='142',n='Franklin Av',s='Prospect Park'}, --Botanic Garden / S ['A02']={boro='M',struc='Subway',lat='40.868072',lon='-73.919899',id='143',n='',s='Downtown & Brooklyn'}, --Inwood - 207 St / A ['A03']={boro='M',struc='Subway',lat='40.865491',lon='-73.927271',id='144',n='207 St',s='Downtown & Brooklyn'}, --Dyckman St / A ['A05']={boro='M',struc='Subway',lat='40.859022',lon='-73.93418',id='145',n='207 St',s='Downtown & Brooklyn'}, --190 St / A ['A06']={boro='M',struc='Subway',lat='40.851695',lon='-73.937969',id='146',n='207 St',s='Downtown & Brooklyn'}, --181 St / A ['A07']={boro='M',struc='Subway',lat='40.847391',lon='-73.939704',id='147',n='207 St',s='Downtown & Brooklyn'}, --175 St / A ['A09']={boro='M',struc='Subway',lat='40.840719',lon='-73.939561',id='148',n='207 St',s='Downtown & Brooklyn'}, --168 St / A C ['A10']={boro='M',struc='Subway',lat='40.836013',lon='-73.939892',id='149',n='Uptown',s='Downtown & Brooklyn'}, --163 St - Amsterdam Av / C ['A11']={boro='M',struc='Subway',lat='40.830518',lon='-73.941514',id='150',n='Uptown',s='Downtown & Brooklyn'}, --155 St / C ['A12']={boro='M',struc='Subway',lat='40.824783',lon='-73.944216',id='151',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --145 St / A C ['D13']={boro='M',struc='Subway',lat='40.824783',lon='-73.944216',id='151',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --145 St / B D ['A14']={boro='M',struc='Subway',lat='40.817894',lon='-73.947649',id='152',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --135 St / B C ['A15']={boro='M',struc='Subway',lat='40.811109',lon='-73.952343',id='153',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --125 St / A B C D ['A16']={boro='M',struc='Subway',lat='40.805085',lon='-73.954882',id='154',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --116 St / B C ['A17']={boro='M',struc='Subway',lat='40.800603',lon='-73.958161',id='155',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Cathedral Pkwy (110 St) / B C ['A18']={boro='M',struc='Subway',lat='40.796092',lon='-73.961454',id='156',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --103 St / B C ['A19']={boro='M',struc='Subway',lat='40.791642',lon='-73.964696',id='157',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --96 St / B C ['A20']={boro='M',struc='Subway',lat='40.785868',lon='-73.968916',id='158',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --86 St / B C ['A21']={boro='M',struc='Subway',lat='40.781433',lon='-73.972143',id='159',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --81 St - Museum of Natural History / B C ['A22']={boro='M',struc='Subway',lat='40.775594',lon='-73.97641',id='160',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --72 St / B C ['A24']={boro='M',struc='Subway',lat='40.768296',lon='-73.981736',id='161',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --59 St - Columbus Circle / A B C D ['A25']={boro='M',struc='Subway',lat='40.762456',lon='-73.985984',id='162',n='Uptown - Queens',s='Downtown & Brooklyn'}, --50 St / C E ['A27']={boro='M',struc='Subway',lat='40.757308',lon='-73.989735',id='163',n='Uptown - Queens',s='Downtown & Brooklyn'}, --42 St - Port Authority Bus Terminal / A C E ['A28']={boro='M',struc='Subway',lat='40.752287',lon='-73.993391',id='164',n='Uptown - Queens',s='Downtown & Brooklyn'}, --34 St - Penn Station / A C E ['A30']={boro='M',struc='Subway',lat='40.745906',lon='-73.998041',id='165',n='Uptown - Queens',s='Downtown & Brooklyn'}, --23 St / C E ['A31']={boro='M',struc='Subway',lat='40.740893',lon='-74.00169',id='166',n='Uptown - Queens',s='Downtown & Brooklyn'}, --14 St / A C E ['A32']={boro='M',struc='Subway',lat='40.732338',lon='-74.000495',id='167',n='Uptown - Queens',s='Downtown & Brooklyn'}, --W 4 St / A C E ['D20']={boro='M',struc='Subway',lat='40.732338',lon='-74.000495',id='167',n='Uptown - Queens',s='Downtown & Brooklyn'}, --W 4 St / B D F M ['A33']={boro='M',struc='Subway',lat='40.726227',lon='-74.003739',id='168',n='Uptown - Queens',s='Downtown & Brooklyn'}, --Spring St / C E ['A34']={boro='M',struc='Subway',lat='40.720824',lon='-74.005229',id='169',n='Uptown - Queens',s='Downtown & Brooklyn'}, --Canal St / A C E ['A36']={boro='M',struc='Subway',lat='40.714111',lon='-74.008585',id='170',n='Uptown',s='Downtown & Brooklyn'}, --Chambers St / A C ['E01']={boro='M',struc='Subway',lat='40.712582',lon='-74.009781',id='171',n='Uptown & Queens',s=''}, --World Trade Center / E ['A38']={boro='M',struc='Subway',lat='40.710197',lon='-74.007691',id='172',n='Uptown',s='Brooklyn'}, --Fulton St / A C ['A40']={boro='Bk',struc='Subway',lat='40.699337',lon='-73.990531',id='173',n='Manhattan',s='Euclid - Lefferts - Rockaways'}, --High St / A C ['A41']={boro='Bk',struc='Subway',lat='40.692338',lon='-73.987342',id='174',n='Manhattan',s='Euclid - Lefferts - Rockaways - Coney Island'}, --Jay St - MetroTech / A C F ['A42']={boro='Bk',struc='Subway',lat='40.688484',lon='-73.985001',id='175',n='Manhattan - Church Av',s='Euclid Av & Queens - Court Sq'}, --Hoyt - Schermerhorn Sts / A C G ['A43']={boro='Bk',struc='Subway',lat='40.686113',lon='-73.973946',id='176',n='Manhattan',s='Euclid Av'}, --Lafayette Av / C ['A44']={boro='Bk',struc='Subway',lat='40.683263',lon='-73.965838',id='177',n='Manhattan',s='Euclid Av'}, --Clinton - Washington Avs / C ['A45']={boro='Bk',struc='Subway',lat='40.68138',lon='-73.956848',id='178',n='Manhattan',s='Euclid Av'}, --Franklin Av / C ['A46']={boro='Bk',struc='Subway',lat='40.680438',lon='-73.950426',id='179',n='Manhattan',s='Euclid - Lefferts - Rockaways'}, --Nostrand Av / A C ['A47']={boro='Bk',struc='Subway',lat='40.679921',lon='-73.940858',id='180',n='Manhattan',s='Euclid Av'}, --Kingston - Throop Avs / C ['A48']={boro='Bk',struc='Subway',lat='40.679364',lon='-73.930729',id='181',n='Manhattan',s='Euclid - Lefferts - Rockaways'}, --Utica Av / A C ['A49']={boro='Bk',struc='Subway',lat='40.678822',lon='-73.920786',id='182',n='Manhattan',s='Euclid Av'}, --Ralph Av / C ['A50']={boro='Bk',struc='Subway',lat='40.67834',lon='-73.911946',id='183',n='Manhattan',s='Euclid Av'}, --Rockaway Av / C ['A51']={boro='Bk',struc='Subway',lat='40.678334',lon='-73.905316',id='184',n='Manhattan',s='Euclid - Lefferts - Rockaways'}, --Broadway Jct / A C ['A52']={boro='Bk',struc='Subway',lat='40.674542',lon='-73.896548',id='185',n='Manhattan',s='Euclid Av'}, --Liberty Av / C ['A53']={boro='Bk',struc='Subway',lat='40.67271',lon='-73.890358',id='186',n='Manhattan',s='Euclid Av'}, --Van Siclen Av / C ['A54']={boro='Bk',struc='Subway',lat='40.67413',lon='-73.88075',id='187',n='Manhattan',s='Euclid Av'}, --Shepherd Av / C ['A55']={boro='Bk',struc='Subway',lat='40.675377',lon='-73.872106',id='188',n='Manhattan',s='Lefferts - Rockaways'}, --Euclid Av / A C ['A57']={boro='Bk',struc='Subway',lat='40.677044',lon='-73.86505',id='189',n='Manhattan',s='Lefferts - Rockaways'}, --Grant Av / A ['A59']={boro='Q',struc='Elevated',lat='40.679371',lon='-73.858992',id='190',n='Manhattan',s='Lefferts - Rockaways'}, --80 St / A ['A60']={boro='Q',struc='Elevated',lat='40.679843',lon='-73.85147',id='191',n='Manhattan',s='Lefferts - Rockaways'}, --88 St / A ['A61']={boro='Q',struc='Elevated',lat='40.680429',lon='-73.843853',id='192',n='Manhattan',s='Lefferts - Rockaways'}, --Rockaway Blvd / A ['A63']={boro='Q',struc='Elevated',lat='40.681711',lon='-73.837683',id='193',n='Manhattan',s='Lefferts Blvd'}, --104 St / A ['A64']={boro='Q',struc='Elevated',lat='40.684331',lon='-73.832163',id='194',n='Manhattan',s='Lefferts Blvd'}, --111 St / A ['A65']={boro='Q',struc='Elevated',lat='40.685951',lon='-73.825798',id='195',n='Manhattan',s=''}, --Ozone Park - Lefferts Blvd / A ['H01']={boro='Q',struc='At Grade',lat='40.672097',lon='-73.835919',id='196',n='Manhattan',s='Rockaways'}, --Aqueduct Racetrack / A ['H02']={boro='Q',struc='At Grade',lat='40.668234',lon='-73.834058',id='197',n='Manhattan',s='Rockaways'}, --Aqueduct - N Conduit Av / A ['H03']={boro='Q',struc='At Grade',lat='40.660476',lon='-73.830301',id='198',n='Manhattan',s='Rockaways'}, --Howard Beach - JFK Airport / A ['H04']={boro='Q',struc='At Grade',lat='40.608382',lon='-73.815925',id='199',n='Manhattan',s='Rockaways'}, --Broad Channel / A S ['H12']={boro='Q',struc='Viaduct',lat='40.588034',lon='-73.813641',id='200',n='Manhattan',s='Rockaway Park'}, --Beach 90 St / A S ['H13']={boro='Q',struc='Viaduct',lat='40.585307',lon='-73.820558',id='201',n='Manhattan',s='Rockaway Park'}, --Beach 98 St / A S ['H14']={boro='Q',struc='Viaduct',lat='40.583209',lon='-73.827559',id='202',n='Manhattan',s='Rockaway Park'}, --Beach 105 St / A S ['H15']={boro='Q',struc='At Grade',lat='40.580903',lon='-73.835592',id='203',n='Manhattan',s=''}, --Rockaway Park - Beach 116 St / A S ['H06']={boro='Q',struc='Viaduct',lat='40.590927',lon='-73.796924',id='204',n='Manhattan',s='Far Rockaway'}, --Beach 67 St / A ['H07']={boro='Q',struc='Viaduct',lat='40.592374',lon='-73.788522',id='205',n='Manhattan',s='Far Rockaway'}, --Beach 60 St / A ['H08']={boro='Q',struc='Viaduct',lat='40.592943',lon='-73.776013',id='206',n='Manhattan',s='Far Rockaway'}, --Beach 44 St / A ['H09']={boro='Q',struc='Viaduct',lat='40.595398',lon='-73.768175',id='207',n='Manhattan',s='Far Rockaway'}, --Beach 36 St / A ['H10']={boro='Q',struc='Viaduct',lat='40.600066',lon='-73.761353',id='208',n='Manhattan',s='Far Rockaway'}, --Beach 25 St / A ['H11']={boro='Q',struc='Viaduct',lat='40.603995',lon='-73.755405',id='209',n='Manhattan',s=''}, --Far Rockaway - Mott Av / A ['D01']={boro='Bx',struc='Subway',lat='40.874811',lon='-73.878855',id='210',n='',s='Manhattan'}, --Norwood - 205 St / D ['D03']={boro='Bx',struc='Subway',lat='40.873244',lon='-73.887138',id='211',n='Norwood - 205 St',s='Manhattan'}, --Bedford Park Blvd / B D ['D04']={boro='Bx',struc='Subway',lat='40.866978',lon='-73.893509',id='212',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --Kingsbridge Rd / B D ['D05']={boro='Bx',struc='Subway',lat='40.861296',lon='-73.897749',id='213',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --Fordham Rd / B D ['D06']={boro='Bx',struc='Subway',lat='40.856093',lon='-73.900741',id='214',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --182-183 Sts / B D ['D07']={boro='Bx',struc='Subway',lat='40.85041',lon='-73.905227',id='215',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --Tremont Av / B D ['D08']={boro='Bx',struc='Subway',lat='40.8459',lon='-73.910136',id='216',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --174-175 Sts / B D ['D09']={boro='Bx',struc='Subway',lat='40.839306',lon='-73.9134',id='217',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --170 St / B D ['D10']={boro='Bx',struc='Subway',lat='40.833771',lon='-73.91844',id='218',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --167 St / B D ['D11']={boro='Bx',struc='Subway',lat='40.827905',lon='-73.925651',id='219',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --161 St - Yankee Stadium / B D ['D12']={boro='M',struc='Subway',lat='40.830135',lon='-73.938209',id='220',n='The Bronx',s='Downtown & Brooklyn'}, --155 St / B D ['B04']={boro='Q',struc='Subway',lat='40.754203',lon='-73.942836',id='221',n='Jamaica',s='Manhattan'}, --21 St - Queensbridge / F ['B06']={boro='M',struc='Subway',lat='40.759145',lon='-73.95326',id='222',n='Queens',s='Manhattan'}, --Roosevelt Island / F ['B08']={boro='M',struc='Subway',lat='40.764629',lon='-73.966113',id='223',n='Uptown - Queens',s='Downtown & Brooklyn'}, --Lexington Av/63 St / F Q ['B10']={boro='M',struc='Subway',lat='40.763972',lon='-73.97745',id='224',n='Uptown & Queens',s='Downtown & Brooklyn'}, --57 St / F ['D15']={boro='M',struc='Subway',lat='40.758663',lon='-73.981329',id='225',n='Uptown & The Bronx - Queens',s='Downtown & Brooklyn'}, --47-50 Sts - Rockefeller Ctr / B D F M ['D16']={boro='M',struc='Subway',lat='40.754222',lon='-73.984569',id='226',n='Uptown & The Bronx - Queens',s='Downtown & Brooklyn'}, --42 St - Bryant Pk / B D F M ['D17']={boro='M',struc='Subway',lat='40.749719',lon='-73.987823',id='227',n='Uptown & The Bronx - Queens',s='Downtown & Brooklyn'}, --34 St - Herald Sq / B D F M ['D18']={boro='M',struc='Subway',lat='40.742878',lon='-73.992821',id='228',n='Uptown & Queens',s='Downtown & Brooklyn'}, --23 St / F M ['D19']={boro='M',struc='Subway',lat='40.738228',lon='-73.996209',id='229',n='Uptown & Queens',s='Downtown & Brooklyn'}, --14 St / F M ['D21']={boro='M',struc='Subway',lat='40.725297',lon='-73.996204',id='230',n='Uptown & The Bronx - Queens',s='Downtown & Brooklyn'}, --Broadway-Lafayette St / B D F M ['D22']={boro='M',struc='Subway',lat='40.718267',lon='-73.993753',id='231',n='Uptown & The Bronx',s='Brooklyn'}, --Grand St / B D ['F14']={boro='M',struc='Subway',lat='40.723402',lon='-73.989938',id='232',n='Uptown & Queens',s='Downtown & Brooklyn'}, --2 Av / F ['F15']={boro='M',struc='Subway',lat='40.718611',lon='-73.988114',id='233',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Delancey St / F ['F16']={boro='M',struc='Subway',lat='40.713715',lon='-73.990173',id='234',n='Uptown & Queens',s='Brooklyn'}, --East Broadway / F ['F18']={boro='Bk',struc='Subway',lat='40.701397',lon='-73.986751',id='235',n='Manhattan',s='Coney Island'}, --York St / F ['F20']={boro='Bk',struc='Subway',lat='40.686145',lon='-73.990862',id='236',n='Manhattan - Queens',s='Church Av - Coney Island'}, --Bergen St / F G ['F21']={boro='Bk',struc='Subway',lat='40.680303',lon='-73.995048',id='237',n='Manhattan - Queens',s='Church Av - Coney Island'}, --Carroll St / F G ['F22']={boro='Bk',struc='Viaduct',lat='40.67358',lon='-73.995959',id='238',n='Manhattan - Queens',s='Church Av - Coney Island'}, --Smith - 9 Sts / F G ['F23']={boro='Bk',struc='Viaduct',lat='40.670272',lon='-73.989779',id='239',n='Manhattan - Queens',s='Church Av - Coney Island'}, --4 Av / F G ['F24']={boro='Bk',struc='Subway',lat='40.666271',lon='-73.980305',id='240',n='Manhattan - Queens',s='Church Av - Coney Island'}, --7 Av / F G ['F25']={boro='Bk',struc='Subway',lat='40.660365',lon='-73.979493',id='241',n='Manhattan - Queens',s='Church Av - Coney Island'}, --15 St - Prospect Park / F G ['F26']={boro='Bk',struc='Subway',lat='40.650782',lon='-73.975776',id='242',n='Manhattan - Queens',s='Church Av - Coney Island'}, --Fort Hamilton Pkwy / F G ['F27']={boro='Bk',struc='Subway',lat='40.644041',lon='-73.979678',id='243',n='Manhattan',s='Coney Island'}, --Church Av / F ['F29']={boro='Bk',struc='Elevated',lat='40.636119',lon='-73.978172',id='244',n='Manhattan',s='Coney Island'}, --Ditmas Av / F ['F30']={boro='Bk',struc='Elevated',lat='40.629755',lon='-73.976971',id='245',n='Manhattan',s='Coney Island'}, --18 Av / F ['F31']={boro='Bk',struc='Elevated',lat='40.625322',lon='-73.976127',id='246',n='Manhattan',s='Coney Island'}, --Avenue I / F ['F32']={boro='Bk',struc='Elevated',lat='40.620769',lon='-73.975264',id='247',n='Manhattan',s='Coney Island'}, --Bay Pkwy / F ['F33']={boro='Bk',struc='Elevated',lat='40.61514',lon='-73.974197',id='248',n='Manhattan',s='Coney Island'}, --Avenue N / F ['F34']={boro='Bk',struc='Elevated',lat='40.608944',lon='-73.973022',id='249',n='Manhattan',s='Coney Island'}, --Avenue P / F ['F35']={boro='Bk',struc='Elevated',lat='40.603217',lon='-73.972361',id='250',n='Manhattan',s='Coney Island'}, --Kings Hwy / F ['F36']={boro='Bk',struc='Elevated',lat='40.596063',lon='-73.973357',id='251',n='Manhattan',s='Coney Island'}, --Avenue U / F ['F38']={boro='Bk',struc='Elevated',lat='40.58962',lon='-73.97425',id='252',n='Manhattan',s='Coney Island'}, --Avenue X / F ['F39']={boro='Bk',struc='Elevated',lat='40.581011',lon='-73.974574',id='253',n='Manhattan',s='Stillwell Av'}, --Neptune Av / F ['F01']={boro='Q',struc='Subway',lat='40.712646',lon='-73.783817',id='254',n='',s='Manhattan'}, --Jamaica - 179 St / F ['F02']={boro='Q',struc='Subway',lat='40.71047',lon='-73.793604',id='255',n='179 St',s='Manhattan'}, --169 St / F ['F03']={boro='Q',struc='Subway',lat='40.707564',lon='-73.803326',id='256',n='179 St',s='Manhattan'}, --Parsons Blvd / F ['F04']={boro='Q',struc='Subway',lat='40.70546',lon='-73.810708',id='257',n='179 St',s='Manhattan'}, --Sutphin Blvd / F ['F05']={boro='Q',struc='Subway',lat='40.709179',lon='-73.820574',id='258',n='Jamaica',s='Manhattan'}, --Briarwood - Van Wyck Blvd / E F ['F06']={boro='Q',struc='Subway',lat='40.714441',lon='-73.831008',id='259',n='Jamaica',s='Manhattan'}, --Kew Gardens - Union Tpke / E F ['F07']={boro='Q',struc='Subway',lat='40.718331',lon='-73.837324',id='260',n='Jamaica',s='Manhattan'}, --75 Av / E F ['G08']={boro='Q',struc='Subway',lat='40.721691',lon='-73.844521',id='261',n='Jamaica',s='Manhattan'}, --Forest Hills - 71 Av / E F M R ['G09']={boro='Q',struc='Subway',lat='40.726523',lon='-73.852719',id='262',n='Forest Hills',s='Manhattan'}, --67 Av / M R ['G10']={boro='Q',struc='Subway',lat='40.729846',lon='-73.861604',id='263',n='Forest Hills',s='Manhattan'}, --63 Dr - Rego Park / M R ['G11']={boro='Q',struc='Subway',lat='40.733106',lon='-73.869229',id='264',n='Forest Hills',s='Manhattan'}, --Woodhaven Blvd / M R ['G12']={boro='Q',struc='Subway',lat='40.737015',lon='-73.877223',id='265',n='Forest Hills',s='Manhattan'}, --Grand Av - Newtown / M R ['G13']={boro='Q',struc='Subway',lat='40.742454',lon='-73.882017',id='266',n='Forest Hills',s='Manhattan'}, --Elmhurst Av / M R ['G14']={boro='Q',struc='Subway',lat='40.746644',lon='-73.891338',id='267',n='Forest Hills - Jamaica',s='Manhattan'}, --Jackson Hts - Roosevelt Av / E F M R ['G15']={boro='Q',struc='Subway',lat='40.749669',lon='-73.898453',id='268',n='Forest Hills',s='Manhattan'}, --65 St / M R ['G16']={boro='Q',struc='Subway',lat='40.752885',lon='-73.906006',id='269',n='Forest Hills',s='Manhattan'}, --Northern Blvd / M R ['G18']={boro='Q',struc='Subway',lat='40.756312',lon='-73.913333',id='270',n='Forest Hills',s='Manhattan'}, --46 St / M R ['G19']={boro='Q',struc='Subway',lat='40.756879',lon='-73.92074',id='271',n='Forest Hills',s='Manhattan'}, --Steinway St / M R ['G20']={boro='Q',struc='Subway',lat='40.752039',lon='-73.928781',id='272',n='Forest Hills',s='Manhattan'}, --36 St / M R ['G21']={boro='Q',struc='Subway',lat='40.748973',lon='-73.937243',id='273',n='Forest Hills - Jamaica',s='Manhattan'}, --Queens Plaza / E M R ['F09']={boro='Q',struc='Subway',lat='40.747846',lon='-73.946',id='274',n='Forest Hills - Jamaica',s='Manhattan'}, --Court Sq / E M ['F11']={boro='M',struc='Subway',lat='40.757552',lon='-73.969055',id='275',n='Queens',s='Downtown & Brooklyn'}, --Lexington Av/53 St / E M ['F12']={boro='M',struc='Subway',lat='40.760167',lon='-73.975224',id='276',n='Queens',s='Downtown & Brooklyn'}, --5 Av/53 St / E M ['D14']={boro='M',struc='Subway',lat='40.762862',lon='-73.981637',id='277',n='Uptown & The Bronx - Queens',s='Downtown & Brooklyn'}, --7 Av / B D E ['G05']={boro='Q',struc='Subway',lat='40.702147',lon='-73.801109',id='278',n='',s='Manhattan'}, --Jamaica Center - Parsons/Archer / E J Z ['G06']={boro='Q',struc='Subway',lat='40.700486',lon='-73.807969',id='279',n='Jamaica Center',s='Manhattan'}, --Sutphin Blvd - Archer Av - JFK Airport / E J Z ['G07']={boro='Q',struc='Subway',lat='40.702566',lon='-73.816859',id='280',n='Jamaica Center',s='Manhattan'}, --Jamaica - Van Wyck / E ['G22']={boro='Q',struc='Subway',lat='40.746554',lon='-73.943832',id='281',n='',s='Brooklyn'}, --Court Sq / G ['G24']={boro='Q',struc='Subway',lat='40.744065',lon='-73.949724',id='282',n='Court Sq',s='Brooklyn'}, --21 St / G ['G26']={boro='Bk',struc='Subway',lat='40.731352',lon='-73.954449',id='283',n='Queens',s='Church Av'}, --Greenpoint Av / G ['G28']={boro='Bk',struc='Subway',lat='40.724635',lon='-73.951277',id='284',n='Queens',s='Church Av'}, --Nassau Av / G ['G29']={boro='Bk',struc='Subway',lat='40.712792',lon='-73.951418',id='285',n='Queens',s='Church Av'}, --Metropolitan Av / G ['G30']={boro='Bk',struc='Subway',lat='40.706092',lon='-73.950308',id='286',n='Queens',s='Church Av'}, --Broadway / G ['G31']={boro='Bk',struc='Subway',lat='40.700377',lon='-73.950234',id='287',n='Queens',s='Church Av'}, --Flushing Av / G ['G32']={boro='Bk',struc='Subway',lat='40.694568',lon='-73.949046',id='288',n='Queens',s='Church Av'}, --Myrtle - Willoughby Avs / G ['G33']={boro='Bk',struc='Subway',lat='40.689627',lon='-73.953522',id='289',n='Queens',s='Church Av'}, --Bedford - Nostrand Avs / G ['G34']={boro='Bk',struc='Subway',lat='40.688873',lon='-73.96007',id='290',n='Queens',s='Church Av'}, --Classon Av / G ['G35']={boro='Bk',struc='Subway',lat='40.688089',lon='-73.966839',id='291',n='Queens',s='Church Av'}, --Clinton - Washington Avs / G ['G36']={boro='Bk',struc='Subway',lat='40.687119',lon='-73.975375',id='292',n='Queens',s='Church Av'}, --Fulton St / G ['101']={boro='Bx',struc='Elevated',lat='40.889248',lon='-73.898583',id='293',n='',s='Manhattan'}, --Van Cortlandt Park - 242 St / 1 ['103']={boro='Bx',struc='Elevated',lat='40.884667',lon='-73.90087',id='294',n='242 St',s='Manhattan'}, --238 St / 1 ['104']={boro='Bx',struc='Elevated',lat='40.878856',lon='-73.904834',id='295',n='242 St',s='Manhattan'}, --231 St / 1 ['106']={boro='M',struc='Elevated',lat='40.874561',lon='-73.909831',id='296',n='242 St',s='Downtown'}, --Marble Hill - 225 St / 1 ['107']={boro='M',struc='Elevated',lat='40.869444',lon='-73.915279',id='297',n='The Bronx',s='Downtown'}, --215 St / 1 ['108']={boro='M',struc='Elevated',lat='40.864621',lon='-73.918822',id='298',n='Uptown & The Bronx',s='Downtown'}, --207 St / 1 ['109']={boro='M',struc='Elevated',lat='40.860531',lon='-73.925536',id='299',n='Uptown & The Bronx',s='Downtown'}, --Dyckman St / 1 ['110']={boro='M',struc='Subway',lat='40.855225',lon='-73.929412',id='300',n='Uptown & The Bronx',s='Downtown'}, --191 St / 1 ['111']={boro='M',struc='Subway',lat='40.849505',lon='-73.933596',id='301',n='Uptown & The Bronx',s='Downtown'}, --181 St / 1 ['112']={boro='M',struc='Subway',lat='40.840556',lon='-73.940133',id='302',n='Uptown & The Bronx',s='Downtown'}, --168 St - Washington Hts / 1 ['113']={boro='M',struc='Subway',lat='40.834041',lon='-73.94489',id='303',n='Uptown & The Bronx',s='Downtown'}, --157 St / 1 ['114']={boro='M',struc='Subway',lat='40.826551',lon='-73.95036',id='304',n='Uptown & The Bronx',s='Downtown'}, --145 St / 1 ['115']={boro='M',struc='Subway',lat='40.822008',lon='-73.953676',id='305',n='Uptown & The Bronx',s='Downtown'}, --137 St - City College / 1 ['116']={boro='M',struc='Elevated',lat='40.815581',lon='-73.958372',id='306',n='Uptown & The Bronx',s='Downtown'}, --125 St / 1 ['117']={boro='M',struc='Subway',lat='40.807722',lon='-73.96411',id='307',n='Uptown & The Bronx',s='Downtown'}, --116 St - Columbia University / 1 ['118']={boro='M',struc='Subway',lat='40.803967',lon='-73.966847',id='308',n='Uptown & The Bronx',s='Downtown'}, --Cathedral Pkwy / 1 ['119']={boro='M',struc='Subway',lat='40.799446',lon='-73.968379',id='309',n='Uptown & The Bronx',s='Downtown'}, --103 St / 1 ['120']={boro='M',struc='Subway',lat='40.793919',lon='-73.972323',id='310',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --96 St / 1 2 3 ['121']={boro='M',struc='Subway',lat='40.788644',lon='-73.976218',id='311',n='Uptown & The Bronx',s='Downtown'}, --86 St / 1 ['122']={boro='M',struc='Subway',lat='40.783934',lon='-73.979917',id='312',n='Uptown & The Bronx',s='Downtown'}, --79 St / 1 ['123']={boro='M',struc='Subway',lat='40.778453',lon='-73.98197',id='313',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --72 St / 1 2 3 ['124']={boro='M',struc='Subway',lat='40.77344',lon='-73.982209',id='314',n='Uptown & The Bronx',s='Downtown'}, --66 St - Lincoln Center / 1 ['125']={boro='M',struc='Subway',lat='40.768247',lon='-73.981929',id='315',n='Uptown & The Bronx',s='Downtown'}, --59 St - Columbus Circle / 1 ['126']={boro='M',struc='Subway',lat='40.761728',lon='-73.983849',id='316',n='Uptown & The Bronx',s='Downtown'}, --50 St / 1 ['127']={boro='M',struc='Subway',lat='40.75529',lon='-73.987495',id='317',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Times Sq - 42 St / 1 2 3 ['128']={boro='M',struc='Subway',lat='40.750373',lon='-73.991057',id='318',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --34 St - Penn Station / 1 2 3 ['129']={boro='M',struc='Subway',lat='40.747215',lon='-73.993365',id='319',n='Uptown & The Bronx',s='Downtown'}, --28 St / 1 ['130']={boro='M',struc='Subway',lat='40.744081',lon='-73.995657',id='320',n='Uptown & The Bronx',s='Downtown'}, --23 St / 1 ['131']={boro='M',struc='Subway',lat='40.74104',lon='-73.997871',id='321',n='Uptown & The Bronx',s='Downtown'}, --18 St / 1 ['132']={boro='M',struc='Subway',lat='40.737826',lon='-74.000201',id='322',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --14 St / 1 2 3 ['133']={boro='M',struc='Subway',lat='40.733422',lon='-74.002906',id='323',n='Uptown & The Bronx',s='Downtown'}, --Christopher St - Sheridan Sq / 1 ['134']={boro='M',struc='Subway',lat='40.728251',lon='-74.005367',id='324',n='Uptown & The Bronx',s='Downtown'}, --Houston St / 1 ['135']={boro='M',struc='Subway',lat='40.722854',lon='-74.006277',id='325',n='Uptown & The Bronx',s='Downtown'}, --Canal St / 1 ['136']={boro='M',struc='Subway',lat='40.719318',lon='-74.006886',id='326',n='Uptown & The Bronx',s='Downtown'}, --Franklin St / 1 ['137']={boro='M',struc='Subway',lat='40.715478',lon='-74.009266',id='327',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Chambers St / 1 2 3 ['138']={boro='M',struc='Subway',lat='40.711835',lon='-74.012188',id='328',n='Uptown & The Bronx',s='Downtown'}, --WTC Cortlandt / 1 ['139']={boro='M',struc='Subway',lat='40.707513',lon='-74.013783',id='329',n='Uptown & The Bronx',s='Downtown'}, --Rector St / 1 ['142']={boro='M',struc='Subway',lat='40.702068',lon='-74.013664',id='330',n='Uptown & The Bronx',s=''}, --South Ferry / 1 ['228']={boro='M',struc='Subway',lat='40.713051',lon='-74.008811',id='331',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Park Pl / 2 3 ['229']={boro='M',struc='Subway',lat='40.709416',lon='-74.006571',id='332',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Fulton St / 2 3 ['230']={boro='M',struc='Subway',lat='40.706821',lon='-74.0091',id='333',n='Uptown & The Bronx',s='Brooklyn'}, --Wall St / 2 3 ['231']={boro='Bk',struc='Subway',lat='40.697466',lon='-73.993086',id='334',n='Manhattan',s='Flatbush - New Lots'}, --Clark St / 2 3 ['232']={boro='Bk',struc='Subway',lat='40.693219',lon='-73.989998',id='335',n='Manhattan',s='Flatbush - New Lots'}, --Borough Hall / 2 3 ['233']={boro='Bk',struc='Subway',lat='40.690545',lon='-73.985065',id='336',n='Manhattan',s='Flatbush - New Lots'}, --Hoyt St / 2 3 ['234']={boro='Bk',struc='Subway',lat='40.688246',lon='-73.980492',id='337',n='Manhattan',s='Flatbush - Utica - New Lots'}, --Nevins St / 2 3 4 5 ['235']={boro='Bk',struc='Subway',lat='40.684359',lon='-73.977666',id='338',n='Manhattan',s='Flatbush - New Lots'}, --Atlantic Av - Barclays Ctr / 2 3 4 5 ['236']={boro='Bk',struc='Subway',lat='40.680829',lon='-73.975098',id='339',n='Manhattan',s='Flatbush - New Lots'}, --Bergen St / 2 3 ['237']={boro='Bk',struc='Subway',lat='40.675235',lon='-73.971046',id='340',n='Manhattan',s='Flatbush - New Lots'}, --Grand Army Plaza / 2 3 ['238']={boro='Bk',struc='Subway',lat='40.671987',lon='-73.964375',id='341',n='Manhattan',s='Flatbush - New Lots'}, --Eastern Pkwy - Brooklyn Museum / 2 3 ['239']={boro='Bk',struc='Subway',lat='40.670682',lon='-73.958131',id='342',n='Manhattan',s='Flatbush - Utica - New Lots'}, --Franklin Av / 2 3 4 5 ['248']={boro='Bk',struc='Subway',lat='40.669847',lon='-73.950466',id='343',n='Manhattan',s='New Lots'}, --Nostrand Av / 3 ['249']={boro='Bk',struc='Subway',lat='40.669399',lon='-73.942161',id='344',n='Manhattan',s='New Lots'}, --Kingston Av / 3 ['250']={boro='Bk',struc='Subway',lat='40.668897',lon='-73.932942',id='345',n='Manhattan',s='New Lots'}, --Crown Hts - Utica Av / 3 4 ['251']={boro='Bk',struc='Elevated',lat='40.664717',lon='-73.92261',id='346',n='Manhattan',s='New Lots'}, --Sutter Av - Rutland Rd / 3 ['252']={boro='Bk',struc='Elevated',lat='40.661453',lon='-73.916327',id='347',n='Manhattan',s='New Lots'}, --Saratoga Av / 3 ['253']={boro='Bk',struc='Elevated',lat='40.662549',lon='-73.908946',id='348',n='Manhattan',s='New Lots'}, --Rockaway Av / 3 ['254']={boro='Bk',struc='Elevated',lat='40.663515',lon='-73.902447',id='349',n='Manhattan',s='New Lots'}, --Junius St / 3 ['255']={boro='Bk',struc='Elevated',lat='40.664635',lon='-73.894895',id='350',n='Manhattan',s='New Lots'}, --Pennsylvania Av / 3 ['256']={boro='Bk',struc='Elevated',lat='40.665449',lon='-73.889395',id='351',n='Manhattan',s='New Lots'}, --Van Siclen Av / 3 ['257']={boro='Bk',struc='Elevated',lat='40.666235',lon='-73.884079',id='352',n='Manhattan',s=''}, --New Lots Av / 3 ['241']={boro='Bk',struc='Subway',lat='40.667883',lon='-73.950683',id='353',n='Manhattan',s='Flatbush'}, --President St / 2 5 ['242']={boro='Bk',struc='Subway',lat='40.662742',lon='-73.95085',id='354',n='Manhattan',s='Flatbush'}, --Sterling St / 2 5 ['243']={boro='Bk',struc='Subway',lat='40.656652',lon='-73.9502',id='355',n='Manhattan',s='Flatbush'}, --Winthrop St / 2 5 ['244']={boro='Bk',struc='Subway',lat='40.650843',lon='-73.949575',id='356',n='Manhattan',s='Flatbush'}, --Church Av / 2 5 ['245']={boro='Bk',struc='Subway',lat='40.645098',lon='-73.948959',id='357',n='Manhattan',s='Flatbush'}, --Beverly Rd / 2 5 ['246']={boro='Bk',struc='Subway',lat='40.639967',lon='-73.948411',id='358',n='Manhattan',s='Flatbush'}, --Newkirk Av / 2 5 ['247']={boro='Bk',struc='Subway',lat='40.632836',lon='-73.947642',id='359',n='Manhattan',s=''}, --Flatbush Av - Brooklyn College / 2 5 ['601']={boro='Bx',struc='Elevated',lat='40.852462',lon='-73.828121',id='360',n='',s='Manhattan'}, --Pelham Bay Park / 6 ['602']={boro='Bx',struc='Elevated',lat='40.84681',lon='-73.832569',id='361',n='Pelham Bay Park',s='Manhattan'}, --Buhre Av / 6 ['603']={boro='Bx',struc='Elevated',lat='40.843863',lon='-73.836322',id='362',n='Pelham Bay Park',s='Manhattan'}, --Middletown Rd / 6 ['604']={boro='Bx',struc='Elevated',lat='40.839892',lon='-73.842952',id='363',n='Pelham Bay Park',s='Manhattan'}, --Westchester Sq - E Tremont Av / 6 ['606']={boro='Bx',struc='Elevated',lat='40.836488',lon='-73.847036',id='364',n='Pelham Bay Park',s='Manhattan'}, --Zerega Av / 6 ['607']={boro='Bx',struc='Elevated',lat='40.834255',lon='-73.851222',id='365',n='Pelham Bay Park',s='Manhattan'}, --Castle Hill Av / 6 ['608']={boro='Bx',struc='Elevated',lat='40.833226',lon='-73.860816',id='366',n='Pelham Bay Park',s='Manhattan'}, --Parkchester / 6 ['609']={boro='Bx',struc='Elevated',lat='40.831509',lon='-73.867618',id='367',n='Pelham Bay Park',s='Manhattan'}, --St Lawrence Av / 6 ['610']={boro='Bx',struc='Elevated',lat='40.829521',lon='-73.874516',id='368',n='Pelham Bay Park',s='Manhattan'}, --Morrison Av- Sound View / 6 ['611']={boro='Bx',struc='Elevated',lat='40.828584',lon='-73.879159',id='369',n='Pelham Bay Park',s='Manhattan'}, --Elder Av / 6 ['612']={boro='Bx',struc='Elevated',lat='40.826525',lon='-73.886283',id='370',n='Pelham Bay Park',s='Manhattan'}, --Whitlock Av / 6 ['613']={boro='Bx',struc='Subway',lat='40.820948',lon='-73.890549',id='371',n='Pelham Bay Park',s='Manhattan'}, --Hunts Point Av / 6 ['614']={boro='Bx',struc='Subway',lat='40.816104',lon='-73.896435',id='372',n='Pelham Bay Park',s='Manhattan'}, --Longwood Av / 6 ['615']={boro='Bx',struc='Subway',lat='40.812118',lon='-73.904098',id='373',n='Pelham Bay Park',s='Manhattan'}, --E 149 St / 6 ['616']={boro='Bx',struc='Subway',lat='40.808719',lon='-73.907657',id='374',n='Pelham Bay Park',s='Manhattan'}, --E 143 St - St Mary's St / 6 ['617']={boro='Bx',struc='Subway',lat='40.805368',lon='-73.914042',id='375',n='Pelham Bay Park',s='Manhattan'}, --Cypress Av / 6 ['618']={boro='Bx',struc='Subway',lat='40.807566',lon='-73.91924',id='376',n='Pelham Bay Park',s='Manhattan'}, --Brook Av / 6 ['619']={boro='Bx',struc='Subway',lat='40.810476',lon='-73.926138',id='377',n='Pelham Bay Park',s='Manhattan'}, --3 Av - 138 St / 6 ['401']={boro='Bx',struc='Elevated',lat='40.886037',lon='-73.878751',id='378',n='',s='Manhattan'}, --Woodlawn / 4 ['402']={boro='Bx',struc='Elevated',lat='40.87975',lon='-73.884655',id='379',n='Woodlawn',s='Manhattan'}, --Mosholu Pkwy / 4 ['405']={boro='Bx',struc='Elevated',lat='40.873412',lon='-73.890064',id='380',n='Woodlawn',s='Manhattan'}, --Bedford Park Blvd - Lehman College / 4 ['406']={boro='Bx',struc='Elevated',lat='40.86776',lon='-73.897174',id='381',n='Woodlawn',s='Manhattan'}, --Kingsbridge Rd / 4 ['407']={boro='Bx',struc='Elevated',lat='40.862803',lon='-73.901034',id='382',n='Woodlawn',s='Manhattan'}, --Fordham Rd / 4 ['408']={boro='Bx',struc='Elevated',lat='40.858407',lon='-73.903879',id='383',n='Woodlawn',s='Manhattan'}, --183 St / 4 ['409']={boro='Bx',struc='Elevated',lat='40.853453',lon='-73.907684',id='384',n='Woodlawn',s='Manhattan'}, --Burnside Av / 4 ['410']={boro='Bx',struc='Elevated',lat='40.84848',lon='-73.911794',id='385',n='Woodlawn',s='Manhattan'}, --176 St / 4 ['411']={boro='Bx',struc='Elevated',lat='40.844434',lon='-73.914685',id='386',n='Woodlawn',s='Manhattan'}, --Mt Eden Av / 4 ['412']={boro='Bx',struc='Elevated',lat='40.840075',lon='-73.917791',id='387',n='Woodlawn',s='Manhattan'}, --170 St / 4 ['413']={boro='Bx',struc='Elevated',lat='40.835537',lon='-73.9214',id='388',n='Woodlawn',s='Manhattan'}, --167 St / 4 ['414']={boro='Bx',struc='Elevated',lat='40.827994',lon='-73.925831',id='389',n='Woodlawn',s='Manhattan'}, --161 St - Yankee Stadium / 4 ['415']={boro='Bx',struc='Subway',lat='40.818375',lon='-73.927351',id='390',n='Woodlawn',s='Manhattan'}, --149 St - Grand Concourse / 4 ['416']={boro='Bx',struc='Subway',lat='40.813224',lon='-73.929849',id='391',n='Woodlawn - Eastchester Dyre Av',s='Manhattan'}, --138 St - Grand Concourse / 4 5 ['621']={boro='M',struc='Subway',lat='40.804138',lon='-73.937594',id='392',n='The Bronx',s='Downtown & Brooklyn'}, --125 St / 4 5 6 ['622']={boro='M',struc='Subway',lat='40.798629',lon='-73.941617',id='393',n='Uptown & The Bronx',s='Downtown'}, --116 St / 6 ['623']={boro='M',struc='Subway',lat='40.79502',lon='-73.94425',id='394',n='Uptown & The Bronx',s='Downtown'}, --110 St / 6 ['624']={boro='M',struc='Subway',lat='40.7906',lon='-73.947478',id='395',n='Uptown & The Bronx',s='Downtown'}, --103 St / 6 ['625']={boro='M',struc='Subway',lat='40.785672',lon='-73.95107',id='396',n='Uptown & The Bronx',s='Downtown'}, --96 St / 6 ['626']={boro='M',struc='Subway',lat='40.779492',lon='-73.955589',id='397',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --86 St / 4 5 6 ['627']={boro='M',struc='Subway',lat='40.77362',lon='-73.959874',id='398',n='Uptown & The Bronx',s='Downtown'}, --77 St / 6 ['628']={boro='M',struc='Subway',lat='40.768141',lon='-73.96387',id='399',n='Uptown & The Bronx',s='Downtown'}, --68 St - Hunter College / 6 ['629']={boro='M',struc='Subway',lat='40.762526',lon='-73.967967',id='400',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --59 St / 4 5 6 ['630']={boro='M',struc='Subway',lat='40.757107',lon='-73.97192',id='401',n='Uptown & The Bronx',s='Downtown'}, --51 St / 6 ['631']={boro='M',struc='Subway',lat='40.751776',lon='-73.976848',id='402',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Grand Central - 42 St / 4 5 6 ['632']={boro='M',struc='Subway',lat='40.746081',lon='-73.982076',id='403',n='Uptown & The Bronx',s='Downtown'}, --33 St / 6 ['633']={boro='M',struc='Subway',lat='40.74307',lon='-73.984264',id='404',n='Uptown & The Bronx',s='Downtown'}, --28 St / 6 ['634']={boro='M',struc='Subway',lat='40.739864',lon='-73.986599',id='405',n='Uptown & The Bronx',s='Downtown'}, --23 St / 6 ['635']={boro='M',struc='Subway',lat='40.734673',lon='-73.989951',id='406',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --14 St - Union Sq / 4 5 6 ['636']={boro='M',struc='Subway',lat='40.730054',lon='-73.99107',id='407',n='Uptown & The Bronx',s='Downtown'}, --Astor Pl / 6 ['637']={boro='M',struc='Subway',lat='40.725915',lon='-73.994659',id='408',n='Uptown & The Bronx',s='Downtown'}, --Bleecker St / 6 ['638']={boro='M',struc='Subway',lat='40.722301',lon='-73.997141',id='409',n='Uptown & The Bronx',s='Downtown'}, --Spring St / 6 ['639']={boro='M',struc='Subway',lat='40.718803',lon='-74.000193',id='410',n='Uptown & The Bronx',s='Downtown'}, --Canal St / 6 ['640']={boro='M',struc='Subway',lat='40.713065',lon='-74.004131',id='411',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Brooklyn Bridge - City Hall / 4 5 6 ['418']={boro='M',struc='Subway',lat='40.710368',lon='-74.009509',id='412',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Fulton St / 4 5 ['419']={boro='M',struc='Subway',lat='40.707557',lon='-74.011862',id='413',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Wall St / 4 5 ['420']={boro='M',struc='Subway',lat='40.704817',lon='-74.014065',id='414',n='Uptown & The Bronx',s='Brooklyn'}, --Bowling Green / 4 5 ['423']={boro='Bk',struc='Subway',lat='40.692404',lon='-73.990151',id='415',n='Manhattan',s='Flatbush - Utica'}, --Borough Hall / 4 5 ['201']={boro='Bx',struc='Elevated',lat='40.903125',lon='-73.85062',id='416',n='',s='Manhattan'}, --Wakefield - 241 St / 2 ['204']={boro='Bx',struc='Elevated',lat='40.898379',lon='-73.854376',id='417',n='Wakefield - 241 St',s='Manhattan'}, --Nereid Av / 2 5 ['205']={boro='Bx',struc='Elevated',lat='40.893193',lon='-73.857473',id='418',n='Wakefield - 241 St',s='Manhattan'}, --233 St / 2 5 ['206']={boro='Bx',struc='Elevated',lat='40.888022',lon='-73.860341',id='419',n='Wakefield - 241 St',s='Manhattan'}, --225 St / 2 5 ['207']={boro='Bx',struc='Elevated',lat='40.883895',lon='-73.862633',id='420',n='Wakefield - 241 St',s='Manhattan'}, --219 St / 2 5 ['208']={boro='Bx',struc='Elevated',lat='40.87785',lon='-73.866256',id='421',n='Wakefield - 241 St',s='Manhattan'}, --Gun Hill Rd / 2 5 ['209']={boro='Bx',struc='Elevated',lat='40.871356',lon='-73.867164',id='422',n='Wakefield - 241 St',s='Manhattan'}, --Burke Av / 2 5 ['210']={boro='Bx',struc='Elevated',lat='40.865462',lon='-73.867352',id='423',n='Wakefield - 241 St',s='Manhattan'}, --Allerton Av / 2 5 ['211']={boro='Bx',struc='Elevated',lat='40.857192',lon='-73.867615',id='424',n='Wakefield - 241 St',s='Manhattan'}, --Pelham Pkwy / 2 5 ['212']={boro='Bx',struc='Elevated',lat='40.848828',lon='-73.868457',id='425',n='Wakefield - 241 St',s='Manhattan'}, --Bronx Park East / 2 5 ['213']={boro='Bx',struc='Elevated',lat='40.841894',lon='-73.873488',id='426',n='Wakefield - Eastchester',s='Manhattan'}, --E 180 St / 2 5 ['214']={boro='Bx',struc='Elevated',lat='40.840295',lon='-73.880049',id='427',n='Wakefield - Eastchester',s='Manhattan'}, --West Farms Sq - E Tremont Av / 2 5 ['215']={boro='Bx',struc='Elevated',lat='40.837288',lon='-73.887734',id='428',n='Wakefield - Eastchester',s='Manhattan'}, --174 St / 2 5 ['216']={boro='Bx',struc='Elevated',lat='40.829993',lon='-73.891865',id='429',n='Wakefield - Eastchester',s='Manhattan'}, --Freeman St / 2 5 ['217']={boro='Bx',struc='Elevated',lat='40.824073',lon='-73.893064',id='430',n='Wakefield - Eastchester',s='Manhattan'}, --Simpson St / 2 5 ['218']={boro='Bx',struc='Elevated',lat='40.822181',lon='-73.896736',id='431',n='Wakefield - Eastchester',s='Manhattan'}, --Intervale Av / 2 5 ['219']={boro='Bx',struc='Elevated',lat='40.819585',lon='-73.90177',id='432',n='Wakefield - Eastchester',s='Manhattan'}, --Prospect Av / 2 5 ['220']={boro='Bx',struc='Elevated',lat='40.81649',lon='-73.907807',id='433',n='Wakefield - Eastchester',s='Manhattan'}, --Jackson Av / 2 5 ['221']={boro='Bx',struc='Subway',lat='40.816109',lon='-73.917757',id='434',n='Wakefield - Eastchester',s='Manhattan'}, --3 Av - 149 St / 2 5 ['222']={boro='Bx',struc='Subway',lat='40.81841',lon='-73.926718',id='435',n='Wakefield - Eastchester',s='Manhattan'}, --149 St - Grand Concourse / 2 5 ['301']={boro='M',struc='Subway',lat='40.82388',lon='-73.93647',id='436',n='',s='Downtown & Brooklyn'}, --Harlem - 148 St / 3 ['302']={boro='M',struc='Subway',lat='40.820421',lon='-73.936245',id='437',n='148 St',s='Downtown & Brooklyn'}, --145 St / 3 ['224']={boro='M',struc='Subway',lat='40.814229',lon='-73.94077',id='438',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --135 St / 2 3 ['225']={boro='M',struc='Subway',lat='40.807754',lon='-73.945495',id='439',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --125 St / 2 3 ['226']={boro='M',struc='Subway',lat='40.802098',lon='-73.949625',id='440',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --116 St / 2 3 ['227']={boro='M',struc='Subway',lat='40.799075',lon='-73.951822',id='441',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Central Park North (110 St) / 2 3 ['501']={boro='Bx',struc='At Grade',lat='40.8883',lon='-73.830834',id='442',n='',s='Manhattan'}, --Eastchester - Dyre Av / 5 ['502']={boro='Bx',struc='Open Cut',lat='40.878663',lon='-73.838591',id='443',n='Eastchester - Dyre Av',s='Manhattan'}, --Baychester Av / 5 ['503']={boro='Bx',struc='Open Cut',lat='40.869526',lon='-73.846384',id='444',n='Eastchester - Dyre Av',s='Manhattan'}, --Gun Hill Rd / 5 ['504']={boro='Bx',struc='Open Cut',lat='40.858985',lon='-73.855359',id='445',n='Eastchester - Dyre Av',s='Manhattan'}, --Pelham Pkwy / 5 ['505']={boro='Bx',struc='Open Cut',lat='40.854364',lon='-73.860495',id='446',n='Eastchester - Dyre Av',s='Manhattan'}, --Morris Park / 5 ['701']={boro='Q',struc='Subway',lat='40.7596',lon='-73.83003',id='447',n='',s='Manhattan'}, --Flushing - Main St / 7 ['702']={boro='Q',struc='Elevated',lat='40.754622',lon='-73.845625',id='448',n='Flushing',s='Manhattan'}, --Mets - Willets Point / 7 ['705']={boro='Q',struc='Elevated',lat='40.75173',lon='-73.855334',id='449',n='Flushing',s='Manhattan'}, --111 St / 7 ['706']={boro='Q',struc='Elevated',lat='40.749865',lon='-73.8627',id='450',n='Flushing',s='Manhattan'}, --103 St - Corona Plaza / 7 ['707']={boro='Q',struc='Elevated',lat='40.749145',lon='-73.869527',id='451',n='Flushing',s='Manhattan'}, --Junction Blvd / 7 ['708']={boro='Q',struc='Elevated',lat='40.748408',lon='-73.876613',id='452',n='Flushing',s='Manhattan'}, --90 St - Elmhurst Av / 7 ['709']={boro='Q',struc='Elevated',lat='40.747659',lon='-73.883697',id='453',n='Flushing',s='Manhattan'}, --82 St - Jackson Hts / 7 ['710']={boro='Q',struc='Elevated',lat='40.746848',lon='-73.891394',id='454',n='Flushing',s='Manhattan'}, --74 St - Broadway / 7 ['711']={boro='Q',struc='Elevated',lat='40.746325',lon='-73.896403',id='455',n='Flushing',s='Manhattan'}, --69 St / 7 ['712']={boro='Q',struc='Elevated',lat='40.74563',lon='-73.902984',id='456',n='Flushing',s='Manhattan'}, --Woodside - 61 St / 7 ['713']={boro='Q',struc='Elevated',lat='40.744149',lon='-73.912549',id='457',n='Flushing',s='Manhattan'}, --52 St / 7 ['714']={boro='Q',struc='Elevated',lat='40.743132',lon='-73.918435',id='458',n='Flushing',s='Manhattan'}, --46 St / 7 ['715']={boro='Q',struc='Elevated',lat='40.743781',lon='-73.924016',id='459',n='Flushing',s='Manhattan'}, --40 St / 7 ['716']={boro='Q',struc='Elevated',lat='40.744587',lon='-73.930997',id='460',n='Flushing',s='Manhattan'}, --33 St / 7 ['718']={boro='Q',struc='Elevated',lat='40.750582',lon='-73.940202',id='461',n='Astoria - Flushing',s='Manhattan'}, --Queensboro Plaza / 7 ['R09']={boro='Q',struc='Elevated',lat='40.750582',lon='-73.940202',id='461',n='Astoria - Flushing',s='Manhattan'}, --Queensboro Plaza / N W ['719']={boro='Q',struc='Elevated',lat='40.747023',lon='-73.945264',id='462',n='Flushing',s='Manhattan'}, --Court Sq / 7 ['720']={boro='Q',struc='Subway',lat='40.742216',lon='-73.948916',id='463',n='Flushing',s='Manhattan'}, --Hunters Point Av / 7 ['721']={boro='Q',struc='Subway',lat='40.742626',lon='-73.953581',id='464',n='Flushing',s='Manhattan'}, --Vernon Blvd - Jackson Av / 7 ['723']={boro='M',struc='Subway',lat='40.751431',lon='-73.976041',id='465',n='Queens',s='34 St - Hudson Yards'}, --Grand Central - 42 St / 7 ['724']={boro='M',struc='Subway',lat='40.753821',lon='-73.981963',id='466',n='Queens',s='34 St - Hudson Yards'}, --5 Av / 7 ['725']={boro='M',struc='Subway',lat='40.755477',lon='-73.987691',id='467',n='Queens',s='34 St - Hudson Yards'}, --Times Sq - 42 St / 7 ['902']={boro='M',struc='Subway',lat='40.755983',lon='-73.986229',id='468',n='',s='Grand Central'}, --Times Sq - 42 St / S ['901']={boro='M',struc='Subway',lat='40.752769',lon='-73.979189',id='469',n='Times Sq',s=''}, --Grand Central - 42 St / S ['726']={boro='M',struc='Subway',lat='40.755882',lon='-74.00191',id='471',n='Queens',s=''}, --34 St - 11 Av / 7 ['Q05']={boro='M',struc='Subway',lat='40.784318',lon='-73.947152',id='475',n='',s='Downtown & Brooklyn'}, --96 St / Q ['Q04']={boro='M',struc='Subway',lat='40.777891',lon='-73.951787',id='476',n='Uptown',s='Downtown & Brooklyn'}, --86 St / Q ['Q03']={boro='M',struc='Subway',lat='40.768799',lon='-73.958424',id='477',n='Uptown',s='Downtown & Brooklyn'}, --72 St / Q } local nodes = { {segment='E180',node_n='180',nodetype='fork'}, {segment='WPR North',node_s='180',nodetype='fork'}, {segment='Dyre',node_s='180',nodetype='fork'}, {segment='EP',node_s='Frank',nodetype='fork'}, {segment='EP East',node_n='Frank',nodetype='fork'}, {segment='Nostrand',node_n='Frank',nodetype='fork'}, {segment='Rock Blvd',node_s='RockB',nodetype='fork'}, {segment='Fulton East Tip',node_n='RockB',nodetype='fork'}, {segment='Rock North',node_n='RockB',nodetype='fork'}, {segment='BChan',node_s='BChan',nodetype='fork'}, {segment='Rock West',node_n='BChan',nodetype='fork'}, {segment='Rock East',node_n='BChan',nodetype='fork'}, {segment='QB East',node_n='Briar',nodetype='fork'}, {segment='179',node_s='Briar',nodetype='fork'}, {segment='Arch IND VW',node_s='Briar',nodetype='fork'}, {segment='BWay 57',node_n='57',nodetype='fork'}, {segment='63 BMT',node_s='57',nodetype='fork'}, {segment='BWay North',node_s='57',nodetype='fork'}, {segment='Broad Laf',node_s='M',nodetype='uturn'}, {segment='Essex',node_s='M',nodetype='uturn'}, } local unused_connections = { {station='Куинс-Плаза (линия Куинс-бульвара, Ай-эн-ди)',north=true,connection='G'}, {station='Корт-сквер (линия Кросстаун, Ай-эн-ди)',north=false,connection='G'}, {station='Брод-стрит (линия Нассо-стрит, Би-эм-ти)',north=true,connection='J'}, {station='Корт-стрит (линия Четвёртой авеню, Би-эм-ти)',north=false,connection='J'}, {station='Бич 90-я улица (линия Рокавей, Ай-эн-ди)',north=false,connection='H'}, {station='Бич 67-я улица (линия Рокавей, Ай-эн-ди)',north=false,connection='H'}, {station='Атлантик-авеню (линия Канарси, Би-эм-ти)',north=false,connection='BJ'}, {station='Бродвей-Джанкшен (линия Джамейка, Би-эм-ти)',north=false,connection='BJ'}, --{station='Уэст Четвёртая улица — Вашингтон-сквер (линия Шестой авеню, Ай-эн-ди)',north=true,connection='6-8'}, --{station='Спринг-стрит (линия Восьмой авеню, Ай-эн-ди)',north=false,connection='6-8'}, --{station='Уэст Четвёртая улица — Вашингтон-сквер (линия Восьмой авеню, Ай-эн-ди)',north=true,connection='8-6'}, --{station='Бродвей — Лафайетт-стрит (линия Шестой авеню, Ай-эн-ди)',north=false,connection='8-6'}, } local unused_tracks = { {segment='Court',station='Корт-стрит (линия Фултон-стрит, Ай-эн-ди)',index=1,closed='закрыта и превращена в музей'}, {segment='Court',station='Хойт-стрит — Скермерхорн-стрит (линия Фултон-стрит, Ай-эн-ди)',index=2}, {segment='Lex South',station='Канал-стрит (линия Лексингтон-авеню, Ай-ар-ти)',index=1}, {segment='Lex South',station='Уэрт-стрит (линия Лексингтон-авеню, Ай-ар-ти)',index=2,closed='закрыта'}, {segment='Lex South',station='Бруклинский мост — Сити-холл (линия Лексингтон-авеню, Ай-ар-ти)',index=3}, {segment='Lex South',station='Сити-холл (линия Лексингтон-авеню, Ай-ар-ти)',index=4,closed='закрыта'}, {segment='18',station='23-я улица (линия Лексингтон-авеню, Ай-ар-ти)',index=1}, {segment='18',station='18-я улица (линия Лексингтон-авеню, Ай-ар-ти)',index=2,closed='закрыта'}, {segment='18',station='14-я улица — Юнион-сквер (линия Лексингтон-авеню, Ай-ар-ти)',index=3}, {segment='91',station='96-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',index=1}, {segment='91',station='91-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',index=2,closed='закрыта'}, {segment='91',station='86-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',index=3}, {segment='Bronx',station='180-я улица — Бронкс-парк (линия Уайт-Плейнс-роуд, Ай-ар-ти)',index=1,closed='снесена'}, {segment='Bronx',station='Уэст-Фармс-сквер — Ист-Тремонт-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',index=2}, {segment='Jam East',station='168-я улица (линия Джамейка, Би-эм-ти)',index=1,closed='снесена'}, {segment='Jam East',station='160-я улица (линия Джамейка, Би-эм-ти)',index=2,closed='снесена'}, {segment='Jam East',station='Сатфин-бульвар (линия Джамейка, Би-эм-ти)',index=3,closed='снесена'}, {segment='Jam East',station='Куинс-бульвар (линия Джамейка, Би-эм-ти)',index=4,closed='снесена'}, {segment='Jam East',station='Метрополитан-авеню (линия Джамейка, Би-эм-ти)',index=5,closed='снесена'}, {segment='Jam East',station='121-я улица (линия Джамейка, Би-эм-ти)',index=6}, {segment='Dean',station='Франклин-авеню (линия Франклин-авеню, Би-эм-ти)',index=1}, {segment='Dean',station='Дин-стрит (линия Франклин-авеню, Би-эм-ти)',index=2,closed='снесена'}, {segment='Dean',station='Парк-Плейс (линия Франклин-авеню, Би-эм-ти)',index=3}, {segment='Myr IND',station='Гранд-стрит (линия Шестой авеню, Ай-эн-ди)',index=1}, {segment='Myr IND',station='Мертл-авеню (линия Четвёртой авеню, Би-эм-ти)',index=2,closed='закрыта'}, {segment='Myr BMT',station='Канал-стрит (линия Бродвея, Би-эм-ти, через мост)',index=1}, {segment='Myr BMT',station='Мертл-авеню (линия Четвёртой авеню, Би-эм-ти)',index=2,closed='закрыта'}, {segment='Myr BMT',station='Декалб-авеню (линия Четвёртой авеню, Би-эм-ти)',index=3}, {segment='SFerry',station='Ректор-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',index=1}, {segment='SFerry',station='кольцо Саут-Ферри (линия Бродвея и Седьмой авеню, Ай-ар-ти)',index=2,closed='закрыта'}, {segment='SFerry Lex',station='Боулинг-Грин (линия Лексингтон-авеню, Ай-ар-ти)',index=1}, {segment='SFerry Lex',station='кольцо Саут-Ферри (линия Лексингтон-авеню, Ай-ар-ти)',index=2,closed='закрыта'}, {segment='Culver Shuttle',station='36-я улица (линия Пятой авеню, Би-эм-ти)',index=1,closed='снесена'}, {segment='Culver Shuttle',station='Девятая авеню (линия Уэст-Энд, Би-эм-ти)',index=2}, {segment='Culver Shuttle',station='Форт-Гамильтон-Паркуэй (линия Калвер, Би-эм-ти)',index=3,closed='снесена'}, {segment='Culver Shuttle',station='13-я авеню (линия Калвер, Би-эм-ти)',index=4,closed='снесена'}, {segment='Culver Shuttle',station='Дитмас-авеню (линия Калвер, Ай-эн-ди)',index=5}, {segment='GHR',station='Ган-Хилл-роуд (линия Уайт-Плейнс-роуд, Ай-ар-ти)',index=1}, {segment='GHR',station='210-я улица — Уильямсбридж (линия Третьей авеню, Ай-ар-ти)',index=2,closed='снесена'}, {segment='Jackson',station='Джексон-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',index=1}, {segment='Jackson',station='143-я улица (линия Третьей авеню, Ай-ар-ти)',index=2,closed='снесена'}, {segment='167',station='167-я улица (линия Джером-авеню, Ай-ар-ти)',index=1}, {segment='167',station='Андерсон-авеню — Джером-авеню (линия Девятой авеню, Ай-ар-ти)',index=2,closed='снесена'}, {segment='QBP',station='Куинсборо-Плаза (линия Флашинг, Ай-ар-ти)',index=1}, {segment='QBP',station='57-я улица (линия Второй авеню, Ай-ар-ти)',index=2,closed='снесена'}, {segment='80',station='Грант-авеню (линия Фултон-стрит, Би-эм-ти)',index=1,closed='снесена'}, {segment='80',station='80-я улица (линия Фултон-стрит, Ай-эн-ди)',index=2}, {segment='Canarsie',station='Канарси — Рокавей-Паркуэй (линия Канарси, Би-эм-ти)',index=1}, {segment='Canarsie',station='Флатландс-авеню (линия Канарси, Би-эм-ти)',index=2,closed='снесена'}, {segment='Atl Can',station='Манхэттен-Джанкшен (линия Фултон-стрит, Би-эм-ти)',index=1,closed='снесена'}, {segment='Atl Can',station='Атлантик-авеню (линия Канарси, Би-эм-ти)',index=2}, {segment='Atl Can',station='Хинсдейл-стрит (линия Фултон-стрит, Би-эм-ти)',index=3,closed='снесена'}, {segment='Gates',station='Гейтс-авеню (линия Джамейка, Би-эм-ти)',index=1}, {segment='Gates',station='Рид-авеню (линия Лексингтон-авеню, Би-эм-ти)',index=2,closed='снесена'}, {segment='Central',station='Сентрал-авеню (линия Мертл-авеню, Би-эм-ти)',index=1}, {segment='Central',station='Бродвей (линия Мертл-авеню, Би-эм-ти)',index=2,closed='закрыта'}, {segment='Marcy',station='Марси-авеню (линия Джамейка, Би-эм-ти)',index=1}, {segment='Marcy',station='Дригс-авеню (линия Джамейка, Би-эм-ти)',index=2,closed='снесена'}, {segment='Frank',station='Гранд-авеню (линия Фултон-стрит, Би-эм-ти)',index=1,closed='снесена'}, {segment='Frank',station='Франклин-авеню (линия Франклин-авеню, Би-эм-ти)',index=2}, {segment='Frank',station='Ностранд-авеню (линия Фултон-стрит, Би-эм-ти)',index=3,closed='снесена'}, {segment='WF',station='Уорлдс-Фэр (линия Всемирной выставки, Ай-эн-ди)',index=1,closed='снесена вместе с линией'}, {segment='WF',station='Форест-Хилс — 71-я авеню (линия Куинс-бульвара, Ай-эн-ди)',index=2}, } local multiline_stations = { {full='Джамейка-Сентер — Парсонс — Арчер (Нью-Йоркское метро)', part='Джамейка-Сентер — Парсонс — Арчер (линия Арчер-авеню, Ай-эн-ди)',text='Через верхний уровень станции'}, {full='Джамейка-Сентер — Парсонс — Арчер (Нью-Йоркское метро)', part='Джамейка-Сентер — Парсонс — Арчер (линия Арчер-авеню, Би-эм-ти)',text='а через нижний'}, {full='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (Нью-Йоркское метро)', part='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (линия Арчер-авеню, Ай-эн-ди)',text='Через верхний уровень станции'}, {full='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (Нью-Йоркское метро)', part='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (линия Арчер-авеню, Би-эм-ти)',text='а через нижний'}, {full='145-я улица (Нью-Йоркское метро)',part='145-я улица (линия Восьмой авеню, Ай-эн-ди)',text='Через верхний уровень станции',level='верхнего уровня'}, {full='145-я улица (Нью-Йоркское метро)',part='145-я улица (линия Конкорс, Ай-эн-ди)',text='а через нижний',level='нижнего уровня'}, {full='Уэст Четвёртая улица — Вашингтон-сквер (Нью-Йоркское метро)', part='Уэст Четвёртая улица — Вашингтон-сквер (линия Восьмой авеню, Ай-эн-ди)',text='Через верхний уровень станции',level='верхнего уровня'}, {full='Уэст Четвёртая улица — Вашингтон-сквер (Нью-Йоркское метро)', part='Уэст Четвёртая улица — Вашингтон-сквер (линия Шестой авеню, Ай-эн-ди)',text='а через нижний',level='нижнего уровня'}, {full='Уэст Восьмая улица — Нью-Йоркский аквариум (Нью-Йоркское метро)', part='Уэст Восьмая улица — Нью-Йоркский аквариум (линия Брайтон, Би-эм-ти)',text='Через верхний уровень станции'}, {full='Уэст Восьмая улица — Нью-Йоркский аквариум (Нью-Йоркское метро)', part='Уэст Восьмая улица — Нью-Йоркский аквариум (линия Калвер, Ай-эн-ди)',text='а через нижний'}, {full='50-я улица (Нью-Йоркское метро)',part='50-я улица (линия Восьмой авеню, Ай-эн-ди)',text='Через верхний уровень станции'}, {full='50-я улица (Нью-Йоркское метро)',part='50-я улица (линия Куинс-бульвара, Ай-эн-ди)',text='а через нижний'}, {full='Куинсборо-Плаза (Нью-Йоркское метро)',part='Куинсборо-Плаза (линия Астория, Би-эм-ти)',text='С северной стороны островных платформ на обоих уровнях станции',cross=true}, {full='Куинсборо-Плаза (Нью-Йоркское метро)',part='Куинсборо-Плаза (линия Флашинг, Ай-ар-ти)',text='а с южной',after='на верхнем уровне на Манхэттен, а на нижнем на Куинс',cross=true}, {full='Лексингтон-авеню — 63-я улица (Нью-Йоркское метро)', part='Лексингтон-авеню — 63-я улица (линия 63-й улицы, Би-эм-ти)',text='С северной стороны островных платформ на обоих уровнях станции',cross=true}, {full='Лексингтон-авеню — 63-я улица (Нью-Йоркское метро)', part='Лексингтон-авеню — 63-я улица (линия 63-й улицы, Ай-эн-ди)',text='а с южной',after='на верхнем уровне на Нижний Манхэттен, а на нижнем на Верхний Манхэттен и Куинс',cross=true}, {full='Седьмая авеню (Нью-Йоркское метро)',part='Седьмая авеню (линия Куинс-бульвара, Ай-эн-ди)',text='С северной стороны островных платформ на обоих уровнях станции',cross=true}, {full='Седьмая авеню (Нью-Йоркское метро)',part='Седьмая авеню (линия Шестой авеню, Ай-эн-ди)',text='а с южной',after='на верхнем уровне на Манхэттен, а на нижнем на Куинс и Бронкс',cross=true}, {full='Проспект-парк (Нью-Йоркское метро)',part='Проспект-парк (линия Брайтон, Би-эм-ти)',text='По двум центральным путям станции',cross=true}, {full='Проспект-парк (Нью-Йоркское метро)',part='Проспект-парк (линия Франклин-авеню, Би-эм-ти)',text='а по крайнему восточному пути',cross=true}, {full='Джей-стрит — Метротек (линии Ай-эн-ди)',part='Джей-стрит — Метротек (линия Фултон-стрит, Ай-эн-ди)',text='По двум центральным путям станции',cross=true}, {full='Джей-стрит — Метротек (линии Ай-эн-ди)',part='Джей-стрит — Метротек (линия Калвер, Ай-эн-ди)',text='а по двум крайним',cross=true}, {full='Хойт-стрит — Скермерхорн-стрит (Нью-Йоркское метро)', part='Хойт-стрит — Скермерхорн-стрит (линия Кросстаун, Ай-эн-ди)',text='По двум центральным путям станции',cross=true}, {full='Хойт-стрит — Скермерхорн-стрит (Нью-Йоркское метро)', part='Хойт-стрит — Скермерхорн-стрит (линия Фултон-стрит, Ай-эн-ди)',text='а по двум следующим (по другую сторону от действующих островных платформ)',cross=true}, {full='Декалб-авеню (Нью-Йоркское метро)',part='Декалб-авеню (линия Брайтон, Би-эм-ти)',text='По двум крайним путям станции',detailed=true,cross=true}, {full='Декалб-авеню (Нью-Йоркское метро)',part='Декалб-авеню (линия Четвёртой авеню, Би-эм-ти)',text='а по четырём центральным',level='в центральной части станции',no_exp=true,cross=true}, {full='Кони-Айленд — Стилуэлл-авеню (Нью-Йоркское метро)',part='Кони-Айленд — Стилуэлл-авеню (линия Си-Бич, Би-эм-ти)',text='У первой с востока островной платформы'}, {full='Кони-Айленд — Стилуэлл-авеню (Нью-Йоркское метро)',part='Кони-Айленд — Стилуэлл-авеню (линия Брайтон, Би-эм-ти)',text='у второй'}, {full='Кони-Айленд — Стилуэлл-авеню (Нью-Йоркское метро)',part='Кони-Айленд — Стилуэлл-авеню (линия Калвер, Ай-эн-ди)',text='у третьей'}, {full='Кони-Айленд — Стилуэлл-авеню (Нью-Йоркское метро)',part='Кони-Айленд — Стилуэлл-авеню (линия Уэст-Энд, Би-эм-ти)',text='а у четвёртой'}, -- бывшая станция {full='Саут-Ферри (Нью-Йоркское метро)',part='кольцо Саут-Ферри (линия Бродвея и Седьмой авеню, Ай-ар-ти)',text=''}, {full='Саут-Ферри (Нью-Йоркское метро)',part='кольцо Саут-Ферри (линия Лексингтон-авеню, Ай-ар-ти)',text=''}, } local station_complexes = { {article='149-я улица — Гранд-Конкорс (Нью-Йоркское метро)',station='149-я улица — Гранд-Конкорс (линия Уайт-Плейнс-роуд, Ай-ар-ти)',section='Платформы линии Уайт-Плейнс-роуд, Ай-ар-ти'}, {article='149-я улица — Гранд-Конкорс (Нью-Йоркское метро)',station='149-я улица — Гранд-Конкорс (линия Джером-авеню, Ай-ар-ти)',section='Платформы линии Джером-авеню, Ай-ар-ти'}, {article='14-я улица / Восьмая авеню (Нью-Йоркское метро)',station='14-я улица (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'}, {article='14-я улица / Восьмая авеню (Нью-Йоркское метро)',station='Восьмая авеню (линия Канарси, Би-эм-ти)',section='Платформа линии Канарси, Би-эм-ти'}, {article='14-я улица — Юнион-сквер (Нью-Йоркское метро)',station='14-я улица — Юнион-сквер (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'}, {article='14-я улица — Юнион-сквер (Нью-Йоркское метро)',station='Юнион-сквер (линия Канарси, Би-эм-ти)',section='Платформа линии Канарси, Би-эм-ти'}, {article='14-я улица — Юнион-сквер (Нью-Йоркское метро)',station='14-я улица — Юнион-сквер (линия Бродвея, Би-эм-ти)',section='Платформы линии Бродвея, Би-эм-ти'}, {article='14-я улица / Шестая авеню (Нью-Йоркское метро)',station='14-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформы линии Бродвея и Седьмой авеню, Ай-ар-ти'}, {article='14-я улица / Шестая авеню (Нью-Йоркское метро)',station='14-я улица (линия Шестой авеню, Ай-эн-ди)',section='Платформы линии Шестой авеню, Ай-эн-ди'}, {article='14-я улица / Шестая авеню (Нью-Йоркское метро)',station='Шестая авеню (линия Канарси, Би-эм-ти)',section='Платформа линии Канарси, Би-эм-ти'}, {article='161-я улица — Стадион Янки (Нью-Йоркское метро)',station='161-я улица — Стадион Янки (линия Джером-авеню, Ай-ар-ти)',section='Платформы линии Джером-авеню, Ай-ар-ти'}, {article='161-я улица — Стадион Янки (Нью-Йоркское метро)',station='161-я улица — Стадион Янки (линия Конкорс, Ай-эн-ди)',section='Платформы линии Конкорс, Ай-эн-ди'}, {article='168-я улица (Нью-Йоркское метро)',station='168-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформы линии Бродвея и Седьмой авеню, Ай-ар-ти'}, {article='168-я улица (Нью-Йоркское метро)',station='168-я улица (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'}, {article='34-я улица — Геральд-сквер (Нью-Йоркское метро)',station='34-я улица — Геральд-сквер (линия Бродвея, Би-эм-ти)',section='Платформы линии Бродвея, Би-эм-ти'}, {article='34-я улица — Геральд-сквер (Нью-Йоркское метро)',station='34-я улица — Геральд-сквер (линия Шестой авеню, Ай-эн-ди)',section='Платформы линии Шестой авеню, Ай-эн-ди'}, {article='42-я улица — Брайант-парк / Пятая авеню (Нью-Йоркское метро)',station='Пятая авеню (линия Флашинг, Ай-ар-ти)',section='Платформа линии Флашинг, Ай-ар-ти'}, {article='42-я улица — Брайант-парк / Пятая авеню (Нью-Йоркское метро)',station='42-я улица — Брайант-парк (линия Шестой авеню, Ай-эн-ди)',section='Платформы линии Шестой авеню, Ай-эн-ди'}, {article='59-я улица — Колумбус-Серкл (Нью-Йоркское метро)',station='59-я улица — Колумбус-Серкл (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформы линии Бродвея и Седьмой авеню, Ай-ар-ти'}, {article='59-я улица — Колумбус-Серкл (Нью-Йоркское метро)',station='59-я улица — Колумбус-Серкл (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'}, {article='Атлантик-авеню — Барклайс-центр (Нью-Йоркское метро)',station='Атлантик-авеню — Барклайс-центр (линия Истерн-Паркуэй, Ай-ар-ти)',section='Платформы линии Истерн-Паркуэй, Ай-ар-ти'}, {article='Атлантик-авеню — Барклайс-центр (Нью-Йоркское метро)',station='Атлантик-авеню — Барклайс-центр (линия Брайтон, Би-эм-ти)',section='Платформа линии Брайтон, Би-эм-ти'}, {article='Атлантик-авеню — Барклайс-центр (Нью-Йоркское метро)',station='Атлантик-авеню — Барклайс-центр (линия Четвёртой авеню, Би-эм-ти)',section='Платформы линии Четвёртой авеню, Би-эм-ти'}, {article='Бродвей — Лафайетт-стрит / Бликер-стрит (Нью-Йоркское метро)',station='Бликер-стрит (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'}, {article='Бродвей — Лафайетт-стрит / Бликер-стрит (Нью-Йоркское метро)',station='Бродвей — Лафайетт-стрит (линия Шестой авеню, Ай-эн-ди)',section='Платформы линии Шестой авеню, Ай-эн-ди'}, {article='Бродвей-Джанкшен (Нью-Йоркское метро)',station='Бродвей-Джанкшен (линия Фултон-стрит, Ай-эн-ди)',section='Платформы линии Фултон-стрит, Ай-эн-ди'}, {article='Бродвей-Джанкшен (Нью-Йоркское метро)',station='Бродвей-Джанкшен (линия Джамейка, Би-эм-ти)',section='Платформы линии Джамейка, Би-эм-ти'}, {article='Бродвей-Джанкшен (Нью-Йоркское метро)',station='Бродвей-Джанкшен (линия Канарси, Би-эм-ти)',section='Платформы линии Канарси, Би-эм-ти'}, {article='Бруклинский мост — Сити-холл / Чеймберс-стрит (Нью-Йоркское метро)',station='Бруклинский мост — Сити-холл (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'}, {article='Бруклинский мост — Сити-холл / Чеймберс-стрит (Нью-Йоркское метро)',station='Чеймберс-стрит (линия Нассо-стрит, Би-эм-ти)',section='Платформы линии Нассо-стрит, Би-эм-ти'}, {article='Канал-стрит (Нью-Йоркское метро)',station='Канал-стрит (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'}, {article='Канал-стрит (Нью-Йоркское метро)',station='Канал-стрит (линия Нассо-стрит, Би-эм-ти)',section='Платформы линии Нассо-стрит, Би-эм-ти'}, {article='Канал-стрит (Нью-Йоркское метро)',station='Канал-стрит (линия Бродвея, Би-эм-ти, через тоннель)',section='Платформы линии Бродвея, Би-эм-ти'}, --две станции - один раздел статьи {article='Канал-стрит (Нью-Йоркское метро)',station='Канал-стрит (линия Бродвея, Би-эм-ти, через мост)',section='Платформы линии Бродвея, Би-эм-ти'}, --две станции - один раздел статьи {article='Чеймберс-стрит — Всемирный торговый центр / Парк-Плейс (Нью-Йоркское метро)',station='Парк-Плейс (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформа линии Бродвея и Седьмой авеню, Ай-ар-ти'}, {article='Чеймберс-стрит — Всемирный торговый центр / Парк-Плейс (Нью-Йоркское метро)',station='Чеймберс-стрит (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'}, --две станции - один раздел статьи {article='Чеймберс-стрит — Всемирный торговый центр / Парк-Плейс (Нью-Йоркское метро)',station='Всемирный торговый центр (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'}, --две станции - один раздел статьи {article='Чеймберс-стрит — Всемирный торговый центр / Парк-Плейс (Нью-Йоркское метро)',station='Кортландт-стрит (линия Бродвея, Би-эм-ти)',section='Платформы линии Бродвея, Би-эм-ти'}, {article='Корт-сквер — 23-я улица (Нью-Йоркское метро)',station='Корт-сквер (линия Флашинг, Ай-ар-ти)',section='Платформы линии Флашинг, Ай-ар-ти'}, {article='Корт-сквер — 23-я улица (Нью-Йоркское метро)',station='Корт-сквер (линия Кросстаун, Ай-эн-ди)',section='Платформа линии Кросстаун, Ай-эн-ди'}, {article='Корт-сквер — 23-я улица (Нью-Йоркское метро)',station='Корт-сквер — 23-я улица (линия Куинс-бульвара, Ай-эн-ди)',section='Платформы линии Куинс-бульвара, Ай-эн-ди'}, {article='Корт-стрит / Боро-холл (Нью-Йоркское метро)',station='Боро-холл (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформы линии Бродвея и Седьмой авеню, Ай-ар-ти'}, {article='Корт-стрит / Боро-холл (Нью-Йоркское метро)',station='Боро-холл (линия Истерн-Паркуэй, Ай-ар-ти)',section='Платформы линии Истерн-Паркуэй, Ай-ар-ти'}, {article='Корт-стрит / Боро-холл (Нью-Йоркское метро)',station='Корт-стрит (линия Четвёртой авеню, Би-эм-ти)',section='Платформа линии Четвёртой авеню, Би-эм-ти'}, {article='Деланси-стрит / Эссекс-стрит (Нью-Йоркское метро)',station='Эссекс-стрит (линия Нассо-стрит, Би-эм-ти)',section='Платформы линии Нассо-стрит, Би-эм-ти'}, {article='Деланси-стрит / Эссекс-стрит (Нью-Йоркское метро)',station='Деланси-стрит (линия Шестой авеню, Ай-эн-ди)',section='Платформы линии Шестой авеню, Ай-эн-ди'}, {article='Четвёртая авеню / Девятая улица (Нью-Йоркское метро)',station='Девятая улица (линия Четвёртой авеню, Би-эм-ти)',section='Платформы линии Четвёртой авеню, Би-эм-ти'}, {article='Четвёртая авеню / Девятая улица (Нью-Йоркское метро)',station='Четвёртая авеню (линия Калвер, Ай-эн-ди)',section='Платформы линии Калвер, Ай-эн-ди'}, {article='Франклин-авеню / Ботанический сад (Нью-Йоркское метро)',station='Франклин-авеню — Медгар-Эверс-колледж (линия Истерн-Паркуэй, Ай-ар-ти)',section='Платформы линии Истерн-Паркуэй, Ай-ар-ти'}, {article='Франклин-авеню / Ботанический сад (Нью-Йоркское метро)',station='Ботанический сад (линия Франклин-авеню, Би-эм-ти)',section='Платформы линии Франклин-авеню, Би-эм-ти'}, {article='Франклин-авеню (Нью-Йоркское метро)',station='Франклин-авеню (линия Франклин-авеню, Би-эм-ти)',section='Платформа линии Франклин-авеню, Би-эм-ти'}, {article='Франклин-авеню (Нью-Йоркское метро)',station='Франклин-авеню (линия Фултон-стрит, Ай-эн-ди)',section='Платформы линии Фултон-стрит, Ай-эн-ди'}, {article='Фултон-стрит (Нью-Йоркское метро)',station='Фултон-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформа линии Бродвея и Седьмой авеню, Ай-ар-ти'}, {article='Фултон-стрит (Нью-Йоркское метро)',station='Фултон-стрит (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'}, {article='Фултон-стрит (Нью-Йоркское метро)',station='Фултон-стрит (линия Восьмой авеню, Ай-эн-ди)',section='Платформа линии Восьмой авеню, Ай-эн-ди'}, {article='Фултон-стрит (Нью-Йоркское метро)',station='Фултон-стрит (линия Нассо-стрит, Би-эм-ти)',section='Платформы линии Нассо-стрит, Би-эм-ти'}, {article='Центральный вокзал — 42-я улица (Нью-Йоркское метро)',station='Центральный вокзал — 42-я улица (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'}, {article='Центральный вокзал — 42-я улица (Нью-Йоркское метро)',station='Центральный вокзал (линия Флашинг, Ай-ар-ти)',section='Платформа линии Флашинг, Ай-ар-ти'}, {article='Центральный вокзал — 42-я улица (Нью-Йоркское метро)',station='Центральный вокзал (челнок 42-й улицы, Ай-ар-ти)',section='Платформа челнока 42-й улицы, Ай-ар-ти'}, {article='Центральный вокзал — 42-я улица (Нью-Йоркское метро)',station='42-я улица (линия Второй авеню, Ай-эн-ди)',section='',future=true}, {article='Джей-стрит — Метротек (Нью-Йоркское метро)',station='Джей-стрит — Метротек (линии Ай-эн-ди)',section='Платформы Ай-эн-ди'}, --станция с двумя линиями входит в пересадочный узел {article='Джей-стрит — Метротек (Нью-Йоркское метро)',station='Джей-стрит — Метротек (линия Четвёртой авеню, Би-эм-ти)',section='Платформа Би-эм-ти'}, {article='Лексингтон-авеню — 53-я улица / 51-я улица (Нью-Йоркское метро)',station='51-я улица (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'}, {article='Лексингтон-авеню — 53-я улица / 51-я улица (Нью-Йоркское метро)',station='Лексингтон-авеню — 53-я улица (линия Куинс-бульвара, Ай-эн-ди)',section='Платформа линии Куинс-бульвара, Ай-эн-ди'}, {article='Лексингтон-авеню — 53-я улица / 51-я улица (Нью-Йоркское метро)',station='55-я улица (линия Второй авеню, Ай-эн-ди)',section='',future=true}, {article='Лексингтон-авеню — 59-я улица (Нью-Йоркское метро)',station='59-я улица (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'}, {article='Лексингтон-авеню — 59-я улица (Нью-Йоркское метро)',station='Лексингтон-авеню — 59-я улица (линия Бродвея, Би-эм-ти)',section='Платформа линии Бродвея, Би-эм-ти'}, {article='Лексингтон-авеню — 59-я улица (Нью-Йоркское метро)',station='Лексингтон-авеню — 63-я улица (Нью-Йоркское метро)',section=''}, --станция с двумя линиями входит в пересадочный узел виртуально {article='Лоример-стрит / Метрополитан-авеню (Нью-Йоркское метро)',station='Лоример-стрит (линия Канарси, Би-эм-ти)',section='Платформы линии Канарси, Би-эм-ти'}, {article='Лоример-стрит / Метрополитан-авеню (Нью-Йоркское метро)',station='Метрополитан-авеню (линия Кросстаун, Ай-эн-ди)',section='Платформы линии Кросстаун, Ай-эн-ди'}, {article='Мертл-авеню — Уайкофф-авеню (Нью-Йоркское метро)',station='Мертл-авеню — Уайкофф-авеню (линия Канарси, Би-эм-ти)',section='Платформа линии Канарси, Би-эм-ти'}, {article='Мертл-авеню — Уайкофф-авеню (Нью-Йоркское метро)',station='Мертл-авеню — Уайкофф-авеню (линия Мертл-авеню, Би-эм-ти)',section='Платформа линии Мертл-авеню, Би-эм-ти'}, {article='Нью-Ютрект-авеню / 62-я улица (Нью-Йоркское метро)',station='Нью-Ютрект-авеню (линия Си-Бич, Би-эм-ти)',section='Платформы линии Си-Бич, Би-эм-ти'}, {article='Нью-Ютрект-авеню / 62-я улица (Нью-Йоркское метро)',station='62-я улица (линия Уэст-Энд, Би-эм-ти)',section='Платформы линии Уэст-Энд, Би-эм-ти'}, {article='74-я улица — Бродвей / Рузвельт-авеню (Нью-Йоркское метро)',station='74-я улица — Бродвей (линия Флашинг, Ай-ар-ти)',section='Платформы линии Флашинг, Ай-ар-ти'}, {article='74-я улица — Бродвей / Рузвельт-авеню (Нью-Йоркское метро)',station='Джексон-Хайтс — Рузвельт-авеню (линия Куинс-бульвара, Ай-эн-ди)',section='Платформы линии Куинс-бульвара, Ай-эн-ди'}, {article='Саут-Ферри — Уайтхолл-стрит (Нью-Йоркское метро)',station='Саут-Ферри (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформа линии Бродвея и Седьмой авеню, Ай-ар-ти'}, {article='Саут-Ферри — Уайтхолл-стрит (Нью-Йоркское метро)',station='Уайтхолл-стрит — Саут-Ферри (линия Бродвея, Би-эм-ти)',section='Платформы линии Бродвея, Би-эм-ти'}, {article='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',station='Таймс-сквер — 42-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформы линии Бродвея и Седьмой авеню, Ай-ар-ти'}, {article='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',station='Таймс-сквер (линия Флашинг, Ай-ар-ти)',section='Платформа линии Флашинг, Ай-ар-ти'}, {article='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',station='42-я улица — Автовокзал Портового управления (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'}, {article='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',station='Таймс-сквер — 42-я улица (линия Бродвея, Би-эм-ти)',section='Платформы линии Бродвея, Би-эм-ти'}, {article='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',station='Таймс-сквер (челнок 42-й улицы, Ай-ар-ти)',section='Платформа челнока 42-й улицы, Ай-ар-ти'}, {article='2',station='Ливония-авеню (линия Канарси, Би-эм-ти)',section=''}, {article='2',station='Джуниус-стрит (линия Нью-Лотс, Ай-ар-ти)',section=''}, {article='3',station='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',section='',periods='rh+md+ev+we'}, {article='3',station='42-я улица — Брайант-парк / Пятая авеню (Нью-Йоркское метро)',section='',periods='rh+md+ev+we'}, {article='a',station='125-я улица (линия Лексингтон-авеню, Ай-ар-ти)',section='',future=true}, {article='a',station='125-я улица (линия Второй авеню, Ай-эн-ди)',section='',future=true}, {article='b',station='Третья авеню (линия Канарси, Би-эм-ти)',section='',future=true}, {article='b',station='14-я улица (линия Второй авеню, Ай-эн-ди)',section='',future=true}, {article='c',station='Вторая авеню (линия Шестой авеню, Ай-эн-ди)',section='',future=true}, {article='c',station='Хаустон-стрит (линия Второй авеню, Ай-эн-ди)',section='',future=true}, {article='d',station='Гранд-стрит (линия Шестой авеню, Ай-эн-ди)',section='',future=true}, {article='d',station='Гранд-стрит (линия Второй авеню, Ай-эн-ди)',section='',future=true}, } local route_fun=function(xx) return setmetatable(xx, { __index=function(xx,key) if key=='label' or key=='tooltip' or key=='name' then return xx.id elseif key=='link' then return xx.id..' (маршрут метро, Нью-Йорк)' end end, __call=function(xx,key,param1,param2) if key=='bullet' then if param2==nil then param2=xx.tooltip end return '[[Файл:NYCS-bull-trans-'..xx.label..'-Std.svg|'..param1..'px|'..param2..'|link='..xx.link..']]' elseif key=='bold' then if param1 then txt=xx.name else txt=xx.tooltip end pos=string.find(txt,' ',1,true) if pos then return '[['..xx.link..'|<b>'..string.sub(txt,1,pos-1)..'</b>]]'..string.sub(txt,pos,string.len(txt)) else return '[['..xx.link..'|<b>'..txt..'</b>]]' end end end }) end local routes = { ['1']=route_fun({id='1',bkg='FFCCCC',color='ee352e',descr='Локальный маршрут [[Линия Бродвея и Седьмой авеню, Ай-ар-ти|линии Бродвея и Седьмой авеню]]',schedule='9426'}), ['2']=route_fun({id='2',bkg='FFCCCC',color='ee352e',descr='Экспресс-маршрут [[Линия Бродвея и Седьмой авеню, Ай-ар-ти|линии Бродвея и Седьмой авеню]]',schedule='9431'}), ['3']=route_fun({id='3',bkg='FFCCCC',color='ee352e',descr='Экспресс-маршрут [[Линия Бродвея и Седьмой авеню, Ай-ар-ти|линии Бродвея и Седьмой авеню]]',schedule='9436'}), ['4']=route_fun({id='4',bkg='BFFA9C',color='00933c',descr='Экспресс-маршрут [[Линия Лексингтон-авеню, Ай-ар-ти|линии Лексингтон-авеню]]',schedule='9441'}), ['5']=route_fun({id='5',bkg='BFFA9C',color='00933c',descr='Экспресс-маршрут [[Линия Лексингтон-авеню, Ай-ар-ти|линии Лексингтон-авеню]]',schedule='9446'}), ['6']=route_fun({id='6',bkg='BFFA9C',color='00933c',descr='Локальный маршрут [[Линия Лексингтон-авеню, Ай-ар-ти|линии Лексингтон-авеню]]',schedule='9456'}), ['<6>']=route_fun({id='<6>',bkg='BFFA9C',label='6d',link='6 (маршрут метро, Нью-Йорк)',color='00933c', descr='Локальный маршрут [[Линия Лексингтон-авеню, Ай-ар-ти|линии Лексингтон-авеню]],<br>экспресс-маршрут [[Линия Пелем, Ай-ар-ти|линии Пелем]]',onedir=true}), ['7']=route_fun({id='7',bkg='FFCCFF',color='b933ad',descr='Локальный маршрут [[Линия Флашинг, Ай-ар-ти|линии Флашинг]]',schedule='9461'}), ['<7>']=route_fun({id='<7>',bkg='FFCCFF',label='7d',link='7 (маршрут метро, Нью-Йорк)',color='b933ad',descr='Экспресс-маршрут [[Линия Флашинг, Ай-ар-ти|линии Флашинг]]',onedir=true}), ['A']=route_fun({id='A',bkg='CDE6FE',color='2850ad',descr='Экспресс-маршрут [[Линия Восьмой авеню, Ай-эн-ди|линии Восьмой авеню]]',schedule='9466',second='A S'}), ['B']=route_fun({id='B',bkg='FFCD97',color='ff6319',descr='Экспресс-маршрут [[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]]',schedule='9481'}), ['C']=route_fun({id='C',bkg='CDE6FE',color='2850ad',descr='Локальный маршрут [[Линия Восьмой авеню, Ай-эн-ди|линии Восьмой авеню]]',schedule='9471'}), ['D']=route_fun({id='D',bkg='FFCD97',color='ff6319',descr='Экспресс-маршрут [[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]]',schedule='9486'}), ['E']=route_fun({id='E',bkg='CDE6FE',color='2850ad',descr='Локальный маршрут [[Линия Восьмой авеню, Ай-эн-ди|линии Восьмой авеню]]',schedule='9476'}), ['F']=route_fun({id='F',bkg='FFCD97',color='ff6319',descr='Локальный маршрут [[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]]',schedule='10366'}), ['<F>']=route_fun({id='<F>',bkg='FFCD97',label='Fd',link='F (маршрут метро, Нью-Йорк)',color='ff6319', descr='Локальный маршрут [[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]],<br>экспресс-маршрут [[Линия Калвер, Ай-эн-ди|линии Калвер]]',onedir=true}), ['G']=route_fun({id='G',bkg='CCFFCC',color='6cbe45',descr='Локальный маршрут [[Линия Кросстаун, Ай-эн-ди|линии Кросстаун]]',schedule='9501'}), ['J']=route_fun({id='J',bkg='E2BF9C',link='J/Z (маршрут метро, Нью-Йорк)',color='996633',descr='Локальный маршрут [[Линия Нассо-стрит, Би-эм-ти|линии Нассо-стрит]]',schedule='9506'}), ['L']=route_fun({id='L',bkg='EEEEEE',color='a7a9ac',descr='Локальный маршрут [[Линия Канарси, Би-эм-ти|линии Канарси]]',schedule='18241'}), ['M']=route_fun({id='M',bkg='FFCD97',color='ff6319',descr='Локальный маршрут [[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]]',schedule='9496'}), ['N']=route_fun({id='N',bkg='FFF793',color='fccc0a',descr='Экспресс-маршрут [[Линия Бродвея, Би-эм-ти|линии Бродвея]]',schedule='9511'}), ['Q']=route_fun({id='Q',bkg='FFF793',color='fccc0a',descr='Экспресс-маршрут [[Линия Бродвея, Би-эм-ти|линии Бродвея]]',schedule='9516'}), ['R']=route_fun({id='R',bkg='FFF793',color='fccc0a',descr='Локальный маршрут [[Линия Бродвея, Би-эм-ти|линии Бродвея]]',schedule='9521'}), ['A S']=route_fun({id='A S',bkg='CDE6FE',label='S blue',tooltip='S (челнок Леффертс-бульвара)',link='A (маршрут метро, Нью-Йорк)',color='2850ad',name='S',descr='Челнок Леффертс-бульвара',shuttle=true}), --,sameas='A' ['S 42']=route_fun({id='S 42',bkg='CCCCCC',label='S',tooltip='S (челнок 42-й улицы)',link='Челнок 42-й улицы',color='808183',name='S',descr='[[Челнок 42-й улицы, Ай-ар-ти|Челнок 42-й улицы]]',schedule='9531',shuttle=true}), ['S F']=route_fun({id='S F',bkg='CCCCCC',label='S',tooltip='S (челнок Франклин-авеню)',link='Челнок Франклин-авеню',color='808183',name='S',descr='[[Челнок Франклин-авеню]]',schedule='9541',shuttle=true}), ['S R']=route_fun({id='S R',bkg='CCCCCC',label='S',tooltip='S (челнок Рокавей-парка)',link='Челнок Рокавей-парка',color='808183',name='S',descr='[[Челнок Рокавей-парка]]',schedule='9536',shuttle=true}), ['W']=route_fun({id='W',bkg='FFF793',color='fccc0a',descr='Локальный маршрут [[Линия Бродвея, Би-эм-ти|линии Бродвея]]',schedule='9526'}), ['Z']=route_fun({id='Z',bkg='E2BF9C',link='J/Z (маршрут метро, Нью-Йорк)',color='996633',descr='Экспресс-маршрут [[Линия Нассо-стрит, Би-эм-ти|линии Нассо-стрит]]',onedir=true}), ['T']=route_fun({id='T',bkg='CCFFFF',color='00add0',descr='Локальный маршрут [[Линия Второй авеню, Ай-эн-ди|линии Второй авеню]]',future=true}), } local icon_fun=function(x0) return setmetatable(x0, { __call=function(x0,key,param1,param2,param3) if key=='icon' then if param2==nil then param2=x0.tooltip end if param3==nil then param3='' end if x0.icon=='' then return '[[Файл:Transparent square.svg|'..param1..'px|'..param2..'|link='..param3..']]' else return '[[Файл:NYCS-SSI-'..x0.icon..'.svg|'..param1..'px|'..param2..'|link='..param3..']]' end end end }) end local icons = { ['rh+md+ev+we+ln']=icon_fun({icon='alltimes',tooltip='круглосуточно',alltimes=true,num=1}), ['rh+md+ev+we']=icon_fun({icon='allexceptnights',tooltip='круглосуточно, кроме ночи',comma=true,num=2}), ['rh(not peak)+md+ev+we+ln']=icon_fun({icon='allexceptrush',tooltip='круглосуточно, кроме часов пик в пиковом направлении',comma=true, alltimes=true,legend='круглосуточно, кроме будней днём (либо часов пик) в пиковом направлении',num=3}), ['rh+md+ev']=icon_fun({icon='weekdaysonly',tooltip='в будни днём и вечером',legend='в будни днём (и, возможно, вечером)',num=4}), ['rh+md+ev+ln(1)']=icon_fun({icon='nightsweekdays',tooltip='в будни круглосуточно',num=5}), ['rh']=icon_fun({icon='rushonly',tooltip='в часы пик',num=6}), ['rh(peak)']=icon_fun({icon='rushpeak',tooltip='в часы пик в пиковом направлении', legend='в будни днём (либо в часы пик) в пиковом направлении',num=7}), ['rh(not peak)']=icon_fun({icon='rushreversepeak',tooltip='в часы пик в направлении, обратном пиковому',comma=true, legend='в будни днём (либо в часы пик) в направлении, обратном пиковому',num=8}), ['we']=icon_fun({icon='weekendsonly',tooltip='в выходные',num=9}), ['ln']=icon_fun({icon='nightsonly',tooltip='ночью',ignore=true,num=10}), ['we+ln']=icon_fun({icon='nightsweekends',tooltip='ночью и в выходные',legend='ночью и в выходные (и, возможно, вечером)',num=11}), ['-']=icon_fun({icon='closed',tooltip='нет движения поездов',num=12}), -- файлы для сочетаний времён есть только досюда, далее используются те же файлы повторно ['rh(some peak)']=icon_fun({icon='rushpeak',tooltip='часть рейсов в часы пик в пиковом направлении',ignore=true}), ['rh(2)+md+ev+we+ln']=icon_fun({icon='alltimes',tooltip='круглосуточно (в часы пик большинство поездов)',alltimes=true}), ['rh+md+ev+we+ln(2)']=icon_fun({icon='allexceptnights',tooltip='круглосуточно, кроме ночи рабочих дней',comma=true}), ['rh+ev+we']=icon_fun({icon='allexceptnights',tooltip='в часы пик, вечером и в выходные'}), ['rh+we']=icon_fun({icon='allexceptnights',tooltip='в часы пик и в выходные'}), ['rh+md(not peak)+ev+we+ln']=icon_fun({icon='alltimes',tooltip='круглосуточно, кроме будней (не в час пик) в пиковом направлении',comma=true,alltimes=true}), ['rh+md+ev+ln']=icon_fun({icon='nightsweekdays',tooltip='в будни круглосуточно и в выходные ночью'}), ['rh+md+ev(1)']=icon_fun({icon='weekdaysonly',tooltip='в будни днём и вечером до 23:00'}), ['rh+md']=icon_fun({icon='weekdaysonly',tooltip='в будни днём'}), ['rh+md(peak)']=icon_fun({icon='weekdaysonly',tooltip='в будни днём (в часы пик в обе стороны, в другое время в пиковом направлении)'}), ['ev+we+ln']=icon_fun({icon='nightsweekends',tooltip='вечером, ночью и в выходные'}), ['rh(1)']=icon_fun({icon='rushonly',tooltip='часть рейсов в часы пик'}), ['rh(peak)+md(peak)']=icon_fun({icon='rushpeak',tooltip='в будни днём в пиковом направлении'}), ['rh(peak)+ln']=icon_fun({icon='rushpeak',tooltip='в часы пик в пиковом направлении, а также ночью'}), ['rh(not peak)+md(not peak)+ev+we+ln']=icon_fun({icon='allexceptrush',tooltip='круглосуточно, кроме будней днём в пиковом направлении',comma=true,alltimes=true}), ['rh(not peak)+md+ev+we']=icon_fun({icon='allexceptrush',tooltip='круглосуточно, кроме часов пик в пиковом направлении и ночи',comma=true}), ['md+ev+we']=icon_fun({icon='allexceptrush',tooltip='круглосуточно, кроме часов пик и ночи',comma=true}), ['rh(some peak)+ln']=icon_fun({icon='nightsonly',tooltip='ночью, а также часть рейсов в часы пик в пиковом направлении',ignore=true}), ['we+ln(2)']=icon_fun({icon='weekendsonly',tooltip='в выходные, включая ночь',comma=true}), ['we(1)']=icon_fun({icon='weekendsonly',tooltip='в выходные летом',ignore=true}), ['ev+we']=icon_fun({icon='nightsweekends',tooltip='вечером и в выходные'}), ['md+ev']=icon_fun({icon='weekdaysonly',tooltip='в будни днём, кроме часов пик, и вечером'}), ['md+ev(1)']=icon_fun({icon='weekdaysonly',tooltip='в будни днём, кроме часов пик, и вечером до 23:00'}), ['rh(some peak)+ev+we']=icon_fun({icon='nightsweekends',tooltip='вечером и в выходные, а также часть рейсов в часы пик в пиковом направлении'}), ['md']=icon_fun({icon='weekdaysonly',tooltip='в будни днём, кроме часов пик',comma=true}), ['rh(some peak)+we']=icon_fun({icon='weekendsonly',tooltip='в выходные, а также часть рейсов в часы пик в пиковом направлении'}), ['rh(not peak)+md(not peak)+ev+we']=icon_fun({icon='allexceptrush',tooltip='круглосуточно, кроме будней днём в пиковом направлении и ночи',comma=true}), ['rh(not peak)+md(not peak)']=icon_fun({icon='rushreversepeak',tooltip='в будни днём в направлении, обратном пиковому',comma=true}), } local subperiods = { {period='rh',subperiod='peak'}, {period='rh',subperiod='not peak'}, {period='rh',subperiod='some peak'}, {period='rh',subperiod='1'}, {period='rh',subperiod='2'}, {period='md',subperiod='peak'}, {period='md',subperiod='not peak'}, {period='ev',subperiod=''}, {period='we',subperiod=''}, {period='ln',subperiod=''}, {period='ev',subperiod='1'}, {period='we',subperiod='1'}, {period='ln',subperiod='1'}, } local lines = { ['линия Восьмой авеню, Ай-эн-ди']={color='2850ad',link='[[Линия Восьмой авеню, Ай-эн-ди|линии Восьмой авеню]]'}, ['линия Нассо-стрит, Би-эм-ти']={color='996633',link='[[Линия Нассо-стрит, Би-эм-ти|линии Нассо-стрит]]'}, ['линия Франклин-авеню, Би-эм-ти']={color='808183',shuttle=true}, ['челнок 42-й улицы, Ай-ар-ти']={color='808183',shuttle=true}, ['линия Канарси, Би-эм-ти']={color='a7a9ac',link='[[Линия Канарси, Би-эм-ти|линии Канарси]]'}, ['линия Лексингтон-авеню, Ай-ар-ти']={color='00933c',link='[[Линия Лексингтон-авеню, Ай-ар-ти|линии Лексингтон-авеню]]'}, ['линия Кросстаун, Ай-эн-ди']={color='6cbe45',link='[[Линия Кросстаун, Ай-эн-ди|линии Кросстаун]]'}, ['линия Шестой авеню, Ай-эн-ди']={color='ff6319',link='[[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]]'}, ['линия Флашинг, Ай-ар-ти']={color='b933ad',link='[[Линия Флашинг, Ай-ар-ти|линии Флашинг]]'}, ['линия Бродвея и Седьмой авеню, Ай-ар-ти']={color='ee352e',link='[[Линия Бродвея и Седьмой авеню, Ай-ар-ти|линии Бродвея и Седьмой авеню]]'}, ['линия Бродвея, Би-эм-ти']={color='fccc0a',link='[[Линия Бродвея, Би-эм-ти|линии Бродвея]]'}, -- ['линия Второй авеню, Ай-эн-ди']={color='00add0',link='[[Линия Второй авеню, Ай-эн-ди|линии Второй авеню]]'}, -- на будущее } local colors = { ['2850ad']={text='синим'}, ['996633']={text='коричневым'}, ['808183']={text='тёмно-серым'}, ['a7a9ac']={text='светло-серым'}, ['00933c']={text='зелёным'}, ['6cbe45']={text='салатовым'}, ['ff6319']={text='оранжевым'}, ['b933ad']={text='фиолетовым'}, ['ee352e']={text='красным'}, ['fccc0a']={text='жёлтым'}, ['00add0']={text='бирюзовым'}, } local alts = { {number=nil, text='', refname='', link='', title='' }, -- эта запись должна оставаться в таблице, когда нет других записей } -- global functions function p.test(frame) param=getArgs(frame)[1] s='' for i=1,param do s=s..' ' end return string.len(s) end function p.const(frame) param=getArgs(frame)[1] return const(param,frame) end function p.station_lines(frame) local aa=getArgs(frame) station=aa[1] color=aa[2] rtn='' for n,x in pairs(station_parts(station)) do if rtn~='' then rtn=rtn..'<br>' end rtn=rtn..line(x,color) end return rtn end function p.station_cats(frame) local aa=getArgs(frame) local station=aa[1] local param=aa[2] if param=='former' then return '' end local rtn='' local parts=station_parts(station) local pref='\r\n' if frame:preprocess('{{NAMESPACE}}')~='' then pref=pref..'* [[:' else pref=pref..'[[' end for n,x in pairs(parts) do local tmp=line_netto(x) local pos=string.find(tmp,' ',1,true) if string.sub(tmp,1,2)=="л" then rtn=rtn..pref..'Категория:Станции линии ' elseif string.sub(tmp,1,2)=="ч" then rtn=rtn..pref..'Категория:Станции челнока ' else pos=0 end if pos>0 then rtn=rtn..string.sub(tmp,pos+1,string.len(tmp))..']]' end end if param=='future' then return rtn end for n,x in pairs(stations) do for nn,xx in pairs(parts) do if x.station==xx then if x.orig then tmp=x.orig else tmp=x.opened end if tmp~='' then tmp=last4(tmp) rtn=rtn..pref..'Категория:Станции метрополитена, построенные в '..tmp..' году]]' rtn=rtn..pref..'Категория:Здания и сооружения, построенные в '..tmp..' году в США]]' rtn=rtn..pref..'Категория:'..tmp..' год в Нью-Йорке]]' end break end end end for n,x in pairs(multiline_stations) do if x.full==station then if x.cross then rtn=rtn..pref..'Категория:Кросс-платформенные пересадки Нью-Йоркского метрополитена]]' end break end end return rtn end function last4(tmp) return string.sub(tmp,string.len(tmp)-3,string.len(tmp)) end function p.complex_lines(frame) local aa=getArgs(frame) complex=aa[1] color=aa[2] a=complex_lines(complex,color) rtn='' for n0,x0 in pairs(a) do if rtn~='' then rtn=rtn..'<br>' end rtn=rtn..x0 end return rtn end function p.station_next(frame) local aa=getArgs(frame) station=aa[1] acc=aa[2]=='acc' local tw=twins[station] if tw then return '<b>'..tw.comment1..':</b><br>'..next_station_list(tw.station1,true,acc,false)..'<hr>'..next_station_list(tw.station1,false,acc,false).. '<hr><b>'..tw.comment2..':</b><br>'..next_station_list(tw.station2,true,acc,false)..'<hr>'..next_station_list(tw.station2,false,acc,false) end return next_station_list(station,true,acc,false)..'<hr>'..next_station_list(station,false,acc,false) end function p.station_next_ns(frame) local aa=getArgs(frame) station=aa[1] acc=aa[2]=='acc' north=aa[3]=='n' local tw=twins[station] if tw then return '<b>'..tw.comment1..':</b><br>'..next_station_list(tw.station1,north,acc,false).. '<hr><b>'..tw.comment2..':</b><br>'..next_station_list(tw.station2,north,acc,false) end return next_station_list(station,north,acc,false) end function p.station_bkg(frame) station=getArgs(frame)[1] arr={} for n,x in pairs(station_parts(station)) do arr=station_list_once(arr,x) end return arr_text(arr,'bkg') end function p.station_letters(frame) station=getArgs(frame)[1] t=arr_text(complex_sum(station),'letters') if t~='' then return t end return station_list_full(station,'letters') end function p.station_bullets(frame) station=getArgs(frame)[1] t=arr_text(complex_sum(station),'bullets') if t~='' then return t end t=station_list_full(station,'bullets') if t~='' then return t end return nostation end function p.station_letters_L(frame) local aa=getArgs(frame) station=aa[1] text=aa[2] if station=='' then return '' end t=arr_text(complex_sum(station),'letters') if t~='' then rtn=netto(station,'text')..' ('..t..')' else rtn=netto(station,'text')..' ('..station_list_full(station,'letters')..')' end if text then return rtn else return '[['..station..'|'..rtn..']]' end end function p.station_full(frame) station=getArgs(frame)[1] local tw=twins[station] if tw then return tw.comment1..': '..station_list_full(tw.station1,'full')..'<br>'..tw.comment2..': '..station_list_full(tw.station2,'full') end local s=station_list_full(station,'full') if s=='' then return nostation end if not alt_exist() then return s end alt_on=true for nnn,xxx in pairs(alts) do xxx.relevant=false end t=station_list_full(station,'full') if t=='' then t='<b>станция закрыта</b>' end if t~=s then return s..alt_text('all','','<br><small><i>',':</i></small>','<br>'..t,frame) else return s end end function p.SM(frame) local aa=getArgs(frame) local station=aa[1] local tail=aa[2] local param=aa[3] local gray=aa[4] local label=aa[5] if tail==nil then tail='' end local rtn,typeO,staname,staname2,en,years if param=='former' then rtn='|black' for n,x in pairs(stations_former) do if x.station==station then if x.station2 then rtn=rtn..'|black|white|black|black' staname2=netto(x.station2,'text') end if x.type=='o' then typeO=true end en=x.en years=last4(x.opened)..'—'..last4(x.closed) end end else rtn=station_list_full(station,'colors') for n0,x0 in pairs(station_parts(station)) do csta=x0 for n,x in pairs(stations) do if x.station==csta then if x.type=='o' then typeO=true end if param=='reincarn' and x.old~='-' then staname=x.old if x.oldtype=='o' then typeO=true end elseif label then else label=x.br end years=last4(x.opened) end end end end if typeO then rtn=rtn..'|type=O' if gray then rtn=rtn..'_lightgrey' end else if gray then rtn=rtn..'|type=_lightgrey' end end if staname==nil then staname=netto(station,'text') end if staname2 then staname=staname..' — '..staname2 station=staname..' ('..line_netto(station)..')' end local page=mw.title.new(station) if not page.exists then if en then station='en:'..en else station='' end end if label then label='{{line-height|80%|'..label..'}}' else label=staname end rtn=rtn..'|link='..station..'|label='..label..'|text='..staname..' ('..years..')'..tail return frame:preprocess('{{SM smart'..rtn..'}}') end function p.complex_prose(frame) complex=getArgs(frame)[1] a=complex_lines(complex,color) rtn='' local r='' for n0,x0 in pairs(a) do if rtn~='' then rtn=rtn..',\r\n' end rtn=rtn..'* '..x0 end arr=complex_sum(complex) list={} for n,x in pairs(routes_sorted()) do for n0,x0 in pairs(arr) do if x.id==x0.route then periods=normalize(x0.periods,false) if list[periods] then r1=list[periods].routes..', ' k=list[periods].key else r1='' k=x.label end if icons[periods] then title=icons[periods].tooltip else title=noperiods end list[periods]={title=title,routes=r1..x('bold',true),key=k} end end end list0={} cou=0 for n0,x0 in pairs(list) do table.insert(list0, {routes=x0.routes,title=x0.title,key=x0.key}) cou=cou+1 end for n00,x00 in pairs(station_complexes) do if r=='' and x00.article==complex then if alt_ok(x00) then for n0,x0 in pairs(stations) do if x0.station==x00.station then r=rider(x0,frame,'complex text') end end end end end if cou==1 then for n0,x0 in pairs(list0) do rtn0=x0.routes end return 'В пересадочный узел входят станции следующих линий:\r\n'..rtn..'.\r\nНа станциях пересадочного узла круглосуточно останавливаются маршруты: '..rtn0..'.'..r else table.sort(list0, function(a,b) return a.key<b.key end) rtn0='' for n0,x0 in pairs(list0) do if rtn0~='' then rtn0=rtn0..',\r\n' end rtn0=rtn0..'* '..x0.routes..' ('..x0.title..')' end return 'В пересадочный узел входят станции следующих линий:\r\n'..rtn..'.\r\nНа станциях пересадочного узла останавливаются маршруты:\r\n'..rtn0..'.'..r end end function p.station_prose(frame) local aa=getArgs(frame) station=aa[1] level=aa[2] if level=='' then level=nil end local tw=twins[station] if tw then return '* '..station_prose(tw.station1,tw.comment1,frame)..'\r\n* '..station_prose(tw.station2,tw.comment2,frame) end return station_prose(station,level,frame) end function station_prose(station,level,frame) local rtn='' local r='' typ=nil subt=nil for n0,x0 in pairs(station_parts(station)) do csta=x0 for nn,xx in pairs(stations) do if xx.station==csta then typ=xx.type subt=xx.subtype r=rider(xx,frame,'station text') end end end if subt=='split' then tmp=station_list_full(station,'prose skip split',nil,nil,'skip') elseif subt=='under' then tmp=station_list_full(station,'prose skip under',nil,nil,'skip') else tmp=station_list_full(station,'prose skip',nil,nil,'skip') end if tmp~='' then rtn=tmp..'.' else if typ=='x' and subt~='suppress' and subt~='bumper' then if subt=='tt' then tmp=station_list_full(station,'prose tt',nil,nil,'exp') elseif subt=='bidi' then tmp=station_list_full(station,'prose exp 1',nil,nil,'exp') else tmp=station_list_full(station,'prose exp 2',nil,nil,'exp') end if tmp~='' then tmp=tmp..'. '..station_list_full(station,'prose lcl',nil,nil,'lcl')..'.' end elseif subt=='bumper' then tmp=tmp..'Оба пути заканчиваются тупиками: поезд приходит на любой из путей и отправляется обратно.' end if tmp~='' then rtn=tmp end end tmp=station_list_full(station,'prose',nil,nil,nil,level) if tmp~='' and rtn~='' then return tmp..'. '..rtn..r elseif tmp~='' then return tmp..'.'..r elseif rtn~='' then return rtn..r else return nostation end end function p.station_netto_T(frame) station=getArgs(frame)[1] return netto(station,'text') end function p.station_netto_L(frame) station=getArgs(frame)[1] return netto(station,'link') end function p.station_descr(frame) article=getArgs(frame)[1] arr=complex_sum(article) local t=arr_text(arr,'letters') local b='' if t~='' then b=complex_csv(article,'boro plain',frame) return "«"..netto(article,'link')..'» — пересадочный узел Нью-Йоркского метрополитена'..b..', обслуживаемый маршрутами <img class="nowrap">'..t..'.</img>' end for n,x in pairs(station_parts(article)) do arr=station_list_once(arr,x) end if arr_text(arr,'count letters')==1 then m='маршрутом' else m='маршрутами' end b=station_csv(article,'boro plain',frame) if b then return "«"..netto(article,'link')..'» — станция Нью-Йоркского метрополитена'..b..', обслуживаемая '..m..' <img class="nowrap">'..arr_text(arr,'letters')..'.</img>' else return nostation end end function p.route_prose(frame) route=getArgs(frame)[1] plural=getArgs(frame)[2]=="plural" local rtn="На картах, станциях, вагонах и т. д. " if plural then rtn=rtn.."они обозначаются " else rtn=rtn.."он обозначается " end local c=routes[route].color rtn=rtn..colors[c].text.." цветом" for n,x in pairs(lines) do if x.color==c then if plural then if x.shuttle then rtn=rtn..", поскольку являются [[S (маршрут метро, Нью-Йорк)|челночными маршрутами]]" else rtn=rtn..", поскольку проходят по "..x.link end else if x.shuttle then rtn=rtn..", поскольку является [[S (маршрут метро, Нью-Йорк)|челночным маршрутом]]" else rtn=rtn..", поскольку проходит по "..x.link end end break end end rtn=rtn.."." return rtn end function p.route_periods(frame) route=getArgs(frame)[1] param=getArgs(frame)[2] if param=='future' then future_on=true end return periods(route,true) end function p.route_terminals(frame) local aa=getArgs(frame) route=aa[1] param=aa[2] if param=='future' then future_on=true end total_periods=periods(route,true) arrarr_n={} arrarr_s={} fill_terminals(route,arrarr_n,arrarr_s) return text_terminals(arrarr_n,total_periods,param=='small')..'<hr>'..text_terminals(arrarr_s,total_periods,param=='small') end function p.station_terminal(frame) local aa=getArgs(frame) station=aa[1] north=aa[2]=='n' when=aa[3] plain=aa[4] arr={} for n,x in pairs(station_parts(station)) do arr=station_list_once(arr,x) multiline=x~=station end arrarr_n={} arrarr_s={} for n,x in pairs(arr) do fill_terminals(x.route,arrarr_n,arrarr_s,station,multiline) end if north then if arrarr_n[station] then arr=arrarr_n[station].arr else arr={} end else if arrarr_s[station] then arr=arrarr_s[station].arr else arr={} end end if plain=='letters' or when=='letters' then if when=='when' then return arr_text(arr,'when') else return arr_text(arr,'letters') end elseif plain=='plain' or when=='plain' then if when=='when' then return arr_text(arr,'prose semishort plain') else return arr_text(arr,'prose short plain') end else if when=='when' then return arr_text(arr,'prose semishort') else return arr_text(arr,'prose short') end end end function p.route_count_stations(frame) local aa=getArgs(frame) route=aa[1] param=aa[2] if param=='future' then future_on=true end total_periods=periods(route,false) arr={} for n0,x0 in pairs(stations_all()) do for n,x in pairs(routes_periods) do if x.segment==x0.segment and x.route==route then if alt_ok(x) then comment=howstops(x.how,x.dir,x0.type,x.period) if comment then --if comment=='some peak' or comment=='1' then if comment=='1' or comment=='2' then group=x.period..'('..comment..')' else group=x.period end if arr[group] then arr[group].quantity=arr[group].quantity+1 else arr[group]={group=group,quantity=1} end end end end end end --if arr['rh']~=nil and arr['rh(1)']~=nil then -- arr['rh(1)'].quantity=arr['rh(1)'].quantity+arr['rh'].quantity --end if arr['ev']~=nil and arr['ev(1)']~=nil then arr['ev(1)'].quantity=arr['ev(1)'].quantity+arr['ev'].quantity end if arr['we']~=nil and arr['we(1)']~=nil then arr['we(1)'].quantity=arr['we(1)'].quantity+arr['we'].quantity end if arr['ln']~=nil and arr['ln(1)']~=nil then arr['ln(1)'].quantity=arr['ln(1)'].quantity+arr['ln'].quantity end if arr['ev']~=nil and arr['ev(2)']~=nil then arr['ev(2)'].quantity=arr['ev(2)'].quantity+arr['ev'].quantity end if arr['we']~=nil and arr['we(2)']~=nil then arr['we(2)'].quantity=arr['we(2)'].quantity+arr['we'].quantity end if arr['ln']~=nil and arr['ln(2)']~=nil then arr['ln(2)'].quantity=arr['ln(2)'].quantity+arr['ln'].quantity end arr0={} for n,x in pairs(arr) do if arr0[x.quantity] then arr0[x.quantity].group=arr0[x.quantity].group..'+'..x.group else arr0[x.quantity]={group=x.group,quantity=x.quantity} end end arr={} for n,x in pairs(arr0) do table.insert(arr, {group=x.group,quantity=x.quantity}) end table.sort(arr, function(a,b) return a.quantity<b.quantity end) rtn='' for n,x in pairs(arr) do if rtn~='' then rtn=rtn..'<br>' end periods=normalize(x.group,false) x0=icons[periods] if x0==nil then rtn=rtn..x.quantity..' (нет индикатора: '..x.group..')'..noperiods elseif x0.tooltip==total_periods then rtn=rtn..x.quantity else rtn=rtn..x.quantity..' ('..x0.tooltip..')' end end return rtn end function p.complex_next(frame) local aa=getArgs(frame) complex=aa[1] acc=aa[2]=='acc' rtn='' rtn=rtn..'{|class="standard" style="'..whiteback..'"\r\n' rtn=rtn..'!Предыдущая станция\r\n!Линия<hr>Название станции\r\n!Следующая станция\r\n' for n,x in pairs(station_complexes) do station=x.station if x.article==complex and x.section~='' then if alt_ok(x) then rtn=rtn..'|- align=center\r\n|'..next_station_list(station,true,acc,true)..'\r\n|\r\n' rtn0='' for n0,x0 in pairs(station_parts(station)) do if rtn0~='' then rtn0=rtn0..'<br>' end rtn0=rtn0..line(x0) end rtn=rtn..'<b>'..rtn0..'</b>\r\n<br>\r\n'..netto(station,'text')..'\r\n|'..next_station_list(station,false,acc,true)..'\r\n' end end end rtn=rtn..'|}\r\n' return rtn end function p.segment_table(frame) local aa=getArgs(frame) local seg=aa[1] local param=aa[2] local param2=aa[3] local param3=aa[4] local rtn='' local sta_table if param=='future' then sta_table=stations_future future_on=true elseif param=='former' then sta_table=stations_former else sta_table=stations end for n,x in pairs(sta_table) do if x.segment==seg then if (param~='reincarn' and param~='reincarn back') or x.old~='-' then if param=='reincarn back' then rtn=segment_row(x,'reincarn',param2,param3,frame)..rtn else rtn=rtn..segment_row(x,param,param2,param3,frame) end end end end if param=='former' and rtn=='' then rtn='|-\r\n|colimg=7 align=center style="'..grayback..'"|<i>('..seg..')</i>\r\n' end return rtn end function segment_row(x,param,param2,param3,frame) local img if param=='2' then img=8 else img=7 end local gray=param=='future' or param=='former' local milestone_style='padding-left:2em;padding-right:2em;' if gray then milestone_style=milestone_style..grayback end local rtn='' if x.above then rtn=rtn..'|-\r\n|colimg='..img..' align=center style="'..milestone_style..'"|<b>'..ita1(gray)..x.above..ita2(gray)..'</b>\r\n' end local sta=x.station local full=from_part(sta,true) local struc if param=='future' then if x.struc then struc=x.struc else struc='подземная' end elseif param=='former' then if x.struc then struc=x.struc else struc='эстакадная' end else struc=key_csv(x.c_key,'struc') end local a1,a2,a3 if param~='2' then excludefound=false if full=='' then a1='' a2=station_transfers(sta,'full small',nil,frame,param) if gray then a3=x.conn else a3=station_connections(sta) end else a2=station_transfers(full,'full small',nil,frame,param) if gray then a3=x.conn else a3=station_connections(full) end if param=='1' then if a3~='' then a3=a3..'<br>' end a3=a3..'<i><small>На этой станции даны единым списком маршруты обеих линий, проходящих через неё</small></i>' a1=station_list_full(full,'full') else arr={} for nn,xx in pairs(multiline_stations) do if full==xx.full and xx.part~=sta then arr=station_list_once(arr,xx.part) end end a1=arr_text(arr,'full small') end end local link if param=='reincarn' then link='[[' if x.oldlink then link=link..x.oldlink else link=link..sta end link=link..'|' if x.old then link=link..x.old else link=link..netto(sta,'text') end link=link..']]' else if x.br then link='[['..sta..'|'..x.br..']]' else link=netto(sta,'link') end if x.info then link=link..frame:preprocess('<ref>'..x.info..'</ref>') end end local en=x.en if en then local page=mw.title.new(sta) if not page.exists then link=link..'<sup style="font-style:normal;">[[[:en:'..en..'|en]]]</sup>' end end if x.spur=='sw' or x.spur=='se' then rtn=rtn..stub_spur(x.spur,'Станция '..link..' находилась на ответвлении',true) end if param2~='reincarn' then if x.spur_noreincarn=='sw' or x.spur_noreincarn=='se' then rtn=rtn..stub_spur(x.spur_noreincarn,'Станция '..link..' находилась на ответвлении',true) end end if x.above_stub~=nil and param~='reincarn' then rtn=rtn..stub_spur(x.above_stub,x.above_stub_text,false) end rtn=rtn..'|-' local style='' if gray then style=style..grayback end if x.spur=='nw' or x.spur=='ne' then style=style..bor('left')..bor('right')..bor('top') elseif x.spur=='sw' or x.spur=='se' then style=style..bor('left')..bor('right')..bor('bottom') end if param2~='reincarn' then if x.spur_noreincarn=='nw' or x.spur_noreincarn=='ne' then style=style..bor('left')..bor('right')..bor('top') elseif x.spur_noreincarn=='sw' or x.spur_noreincarn=='se' then style=style..bor('left')..bor('right')..bor('bottom') end end if style~='' then rtn=rtn..' style="'..style..'"' end if param2~=nil and (excludefound or param=='0') then rtn=rtn..' style="'..bor('top')..bor('bottom')..bor(param2) if param3 then rtn=rtn..'height:'..(param3*20)..'px;' end rtn=rtn..'"\r\n|nowrap|' else rtn=rtn..'\r\n|' end rtn=rtn..ita1(gray,param=='future',param=='former',x.saved) rtn=rtn..link if x.station2 then rtn=rtn..' [[Файл:U+21C3.svg|x18px|link=]] [[Файл:U+21BE.svg|x18px|link=]] '..netto(x.station2,'link') end rtn=rtn..ita2(gray)..'\r\n|' if param=='former' or param=='reincarn' then else rtn=rtn..acc_cell(x.acc) end rtn=rtn..'\r\n|'..ita1(gray)..struc..ita2(gray)..'\r\n|'..ita1(gray) if x.type=='o' or x.other_type=='o' or (x.oldtype=='o' and param=='reincarn') then rtn=rtn..'лок.' else rtn=rtn..'<b>все</b>' end if x.note then rtn=rtn..' '..x.note end rtn=rtn..ita2(gray)..'\r\n' if param2~=nil and (excludefound or param=='0') then rtn=rtn..'|nowrap' end rtn=rtn..'|'..ita1(gray) if x.orig then rtn=rtn..x.orig..frame:preprocess('<ref name="date '..x.opened..'">В составе метро с '..x.opened..'.</ref>') else rtn=rtn..x.opened end rtn=rtn..ita2(gray)..'\r\n' if param=='1' then rtn=rtn..'|colimg=2|\r\n'..inner_table(a1,a2,a3) else if param=='former' then rtn=rtn..'|'..ita1(gray)..x.closed..ita2(gray)..'\r\n' elseif x.future then rtn=rtn..'|\r\n' else rtn=rtn..'|'..station_list_full(sta,'full')..'\r\n' end if param~='0' then if param=='former' or param=='reincarn' then local tt='' if x.station2 then tt=tt..frame:preprocess( '<ref name="split">Платформы разных направлений располагались на параллельных улицах и представляли собой отдельные станции.</ref>') end if x.transfer then if tt~='' then tt=tt..'<br>' end tt=tt..frame:preprocess(x.transfer) end rtn=rtn..'|nowrap| '..ita1(gray or param=='reincarn')..tt..ita2(gray or param=='reincarn')..'\r\n' else rtn=rtn..'|\r\n'..inner_table(a1,a2,a3) end else rtn=rtn..'|\r\n'..tab..'\r\n|nowrap|<i><small>Все станции в этой рамке<br>связаны пересадкой</small></i>\r\n|}\r\n' end end if x.spur=='nw' or x.spur=='ne' then rtn=rtn..stub_spur(x.spur,'Станция '..link..' находилась на ответвлении',true) end if param2~='reincarn' then if x.spur_noreincarn=='nw' or x.spur_noreincarn=='ne' then rtn=rtn..stub_spur(x.spur_noreincarn,'Станция '..link..' находилась на ответвлении',true) end end if x.below_stub~=nil and param~='reincarn' then rtn=rtn..stub_spur(x.below_stub,x.below_stub_text,false) end else rtn=rtn..'|-\r\n|' if x.br then if full=='' then rtn=rtn..'[['..sta..'|'..x.br..']]' else rtn=rtn..'[['..full..'|'..x.br..']]' end else if full=='' then rtn=rtn..netto(sta,'link') else rtn=rtn..netto(full,'link') end end rtn=rtn..'\r\n|'..acc_cell(x.acc)..'\r\n|'..struc..'\r\n|' if x.type=='o' or x.other_type=='o' then rtn=rtn..'лок.\r\n' else rtn=rtn..'<b>все</b>\r\n' end rtn=rtn..'|' if x.orig then rtn=rtn..x.orig..frame:preprocess('<ref name="date '..x.opened..'">В составе метро с '..x.opened..'.</ref>') else rtn=rtn..x.opened end rtn=rtn..'\r\n|'..station_list_full(sta,'full')..'\r\n' if full=='' then rtn=rtn..'|\r\n' a2=station_transfers(sta,'full small',nil,frame) a3=station_connections(sta) else arr={} for nn,xx in pairs(multiline_stations) do if full==xx.full and xx.part~=sta then arr=station_list_once(arr,xx.part) rtn=rtn..'|'..station_list_full(xx.part,'full')..'\r\n' end end a2=station_transfers(full,'full small',nil,frame) a3=station_connections(full) end rtn=rtn..'|\r\n'..inner_table('',a2,a3) end if x.below then rtn=rtn..'|-\r\n|colimg='..img..' align=center style="'..milestone_style..'"|<b>'..ita1(gray)..x.below..ita2(gray)..'</b>\r\n' end if x.below_key then for n00,x00 in pairs(stations_former) do if x00.segment==x.below_key then rtn=rtn..segment_row(x00,'former',param,'',frame) end end end if x.below_key_noreincarn~=nil and param~='reincarn' then for n00,x00 in pairs(stations_former) do if x00.segment==x.below_key_noreincarn then rtn=rtn..segment_row(x00,'former',param,'',frame) end end end return rtn end function p.route_table(frame) local aa=getArgs(frame) route=aa[1] route2=aa[2] forperiod=aa[3] if route2=='future' then future_on=true route2=nil elseif route2=='' then route2=nil end if forperiod then return tab..' class="standard" style="line-height:0;'..whiteback..'"\r\n'..build_route(route,route2,'route',frame,nil,forperiod)..'\r\n|}' else return tab..' class="standard" style="line-height:0;'..whiteback..'"\r\n'..build_route(route,route2,'route',frame)..'\r\n|}' end end function p.route_regimes(frame) local aa=getArgs(frame) route=aa[1] route2=aa[2] if route2=='future' then future_on=true route2=nil elseif route2=='' then route2=nil end return tab..' class="standard" style="'..whiteback..'"\r\n'..build_route(route,route2,'regimes',frame)..'\r\n|}' end function p.route_table_nav(frame) local aa=getArgs(frame) article=aa[1] arr=complex_sum(article) if arr_text(arr,'count letters')==0 then for n,x in pairs(station_parts(article)) do arr=station_list_once(arr,x) end end rtn='' letters=arr_text(arr,'check') for nn,xx in pairs(routes_sorted()) do if string.find('+'..letters..'+','+'..xx.id..'+',1,true) then if rtn~='' then rtn=rtn..'|-\r\n|colimg=2|<hr>\r\n' end rtn=rtn..build_route(xx.id,nil,'navtext',frame,article) end end return tab..'\r\n'..rtn..'|}' end function p.route_lines(frame) local aa=getArgs(frame) route=aa[1] purpose=aa[2] if purpose=='' or purpose==nil then purpose='list' end return build_route(route,nil,'lines '..purpose,frame,'') end function p.connection_use(frame) local aa=getArgs(frame) seg1=aa[1] seg2=aa[2] ifno=aa[3] if seg1=='' or seg1==nil or seg2=='' or seg2==nil then return 'не заданы два сегмента'..badparams end if ifno==nil then ifno='соединение не используется' end return two_segments(seg1,seg2,'','full small',ifno) end function p.connection_use_2(frame) local aa=getArgs(frame) seg1=aa[1] seg2=aa[2] seg3=aa[3] seg4=aa[4] ifno1=aa[5] ifno2=aa[6] if seg1=='' or seg1==nil or seg2=='' or seg2==nil or seg3=='' or seg3==nil or seg4=='' or seg4==nil then return 'не заданы два сегмента'..badparams end if ifno1==nil then ifno1='соединение не используется' end if ifno2==nil then ifno2='оба соединения не используются' end rtn1=two_segments(seg1,seg2,'','full small',ifno1) rtn2=two_segments(seg3,seg4,'','full small',ifno1) if rtn1==ifno1 and rtn2==ifno1 then return 'и обратно ('..ifno2..')' else return '('..rtn1..') и обратно ('..rtn2..')' end end function p.connection_use_color(frame) local aa=getArgs(frame) seg1=aa[1] seg2=aa[2] if seg1=='' or seg1==nil or seg2=='' or seg2==nil then return '000000' end return two_segments(seg1,seg2,'','color','000000') end function p.connection_use_st(frame) local aa=getArgs(frame) sta1=aa[1] sta2=aa[2] param3=aa[3] param4=aa[4] if param3=='when' or param4=='when' then fmt='when' elseif param3=='letters' or param4=='letters' then fmt='letters' elseif param3=='bullets' or param4=='bullets' then fmt='bullets' elseif param3=='bullets all' or param4=='bullets all' then fmt='bullets all' elseif param3=='full small' or param4=='full small' then fmt='full small' else fmt='' end if param3=='when' then sta2a='' else sta2a=param3 end seg1='' seg2='' seg2a='' typ1=nil typ2=nil typ2a=nil for n,x in pairs(stations) do if x.station==sta1 then seg1=x.segment typ1=x.type end if x.station==sta2 then seg2=x.segment typ2=x.type end if x.station==sta2a then seg2a=x.segment typ2a=x.type end end if seg1=='' or seg1==nil or seg2=='' or seg2==nil then return 'не заданы два сегмента'..badparams end if param3=='x' or param3=='o' then seg2a=param3 end if fmt=='when' then return two_segments(seg1,seg2,seg2a,'prose semishort','регулярного движения нет',true,typ1,typ2,typ2a) elseif fmt=='letters' or fmt=='bullets' or fmt=='bullets all' or fmt=='full small' then return two_segments(seg1,seg2,seg2a,fmt,'',true,typ1,typ2,typ2a) else return two_segments(seg1,seg2,seg2a,'prose short','регулярного движения нет',true,typ1,typ2,typ2a) end end function p.line_nowrap(frame) line=tolower(getArgs(frame)[1]) return toupper(line_nowrap(line)) end function p.line_bullets(frame) line=tolower(getArgs(frame)[1]) arr=line_routes(line) if getArgs(frame)[2]==nil then return '<img class="nowrap">'..arr_text(arr,'large bullets')..'</img>' else return '<img class="nowrap">'..arr_text(arr,'bullets')..'</img>' end end function p.line_opened(frame) local y='' local o='' line=tolower(getArgs(frame)[1]) full=getArgs(frame)[2] for n,x in pairs(stations) do if line_netto(x.station)==line then local yy=last4(x.opened) if y=='' or yy<y then y=yy end if x.orig then local oo=last4(x.orig) if o=='' or oo<o then o=oo end end end end if full~=nil and o~='' then return o..' (в составе метро с '..y..')' else return y end end function p.line_aboveground(frame) local above=false local below=false line=tolower(getArgs(frame)[1]) for n,x in pairs(stations) do if line_netto(x.station)==line then if key_csv(x.c_key,'struc')=='подземная' then below=true else above=true end end end if below and above then return 'есть' elseif above then return 'вся линия' else return 'нет' end end function p.line_prose(frame) line=tolower(getArgs(frame)[1]) arr=line_routes(line) if arr_text(arr,'all alltimes') then rtn='круглосуточно '..arr_text(arr,'prose by short')..'.' else rtn=arr_text(arr,'prose by')..'.' end o=lines[line] if o then cou=0 arr={} for n,x in pairs(routes_sorted()) do if x.color==o.color and x.tooltip==x.id then cou=cou+1 arr[cou]=x('bold') end end if cou>0 then rtn=rtn..' Линия считается «[[Список линий Нью-Йоркского метрополитена#Терминология|стволовой]]»: ' if cou==1 then rtn=rtn..'маршрут '..arr[1]..', проходящий по ней, обозначается ' else rtn=rtn..'маршруты ' for n=1,cou do rtn=rtn..arr[n] if n==cou then elseif n==cou-1 then rtn=rtn.." и " else rtn=rtn..", " end end rtn=rtn..', проходящие по ней, обозначаются ' end rtn=rtn..colors[o.color].text..' цветом.' end end return rtn end function p.line_count_stations(frame) line=tolower(getArgs(frame)[1]) sum=0 for n,x in pairs(stations) do if line_netto(x.station)==line then sum=sum+1 end end return sum end function p.line_color(frame) line=tolower(getArgs(frame)[1]) o=lines[line] if o then return o.color else return '000000' end end function p.segment_color(frame) local aa=getArgs(frame) local seg1=aa[1] local seg2=aa[2] local cond=aa[3] local arr={} if cond=='segand' or cond=='segandnot' then local arr1={} arr1=segment_routes(arr1,seg1) local arr2={} arr2=segment_routes(arr2,seg2) for n0,x0 in pairs(routes) do local elem1=arr1[x0.id] local elem2=arr2[x0.id] local elem='' if elem1==nil then elseif elem2==nil then if cond=='segandnot' then elem=elem1.periods end else elem1='+'..normalize(elem1.periods)..'+' elem2='+'..normalize(elem2.periods)..'+' for nn,xx in pairs({'rh','md','ev','we','ln'}) do if string.find(elem1,'+'..xx,1,true)~=nil then local f1=string.find(elem1,'+'..xx..'+',1,true) local f1_1=string.find(elem1,'+'..xx..'(1)+',1,true) local f1_2=string.find(elem1,'+'..xx..'(2)+',1,true) local f1_p=string.find(elem1,'+'..xx..'(peak)+',1,true) local f1_sp=string.find(elem1,'+'..xx..'(some peak)+',1,true) local f1_np=string.find(elem1,'+'..xx..'(not peak)+',1,true) local f2=string.find(elem2,'+'..xx..'+',1,true) local f2_1=string.find(elem2,'+'..xx..'(1)+',1,true) local f2_2=string.find(elem2,'+'..xx..'(2)+',1,true) local f2_p=string.find(elem2,'+'..xx..'(peak)+',1,true) local f2_sp=string.find(elem2,'+'..xx..'(some peak)+',1,true) local f2_np=string.find(elem2,'+'..xx..'(not peak)+',1,true) if cond=='segand' then if not( (f1_2 and f2_1) or (f1_1 and f2_2) or (f1_np and (f2_p or f2_sp)) or (f2_np and (f1_p or f1_sp)) ) then elem=elem..'+'..xx end else if not( f2 or (f1_1 and f2_1) or (f1_2 and f2_2) or (f1_p and f2_p) or (f1_sp and f2_sp) or (f1_np and f2_np) or (f1_sp and f2_p) ) then elem=elem..'+'..xx end end end end end if elem~='' then arr[x0.id]={route=x0.id,periods=string.sub(elem,2,string.len(elem))} end end else arr=segment_routes(arr,seg1) if cond=='segor' then arr=segment_routes(arr,seg2) end end local rtn=arr_text(arr,'color') if rtn=='' then rtn='000000' end return rtn end function p.segment_route_coef(frame) local aa=getArgs(frame) local route1=aa[1] local route2=routes[route1].second if route2==nil then route2='' end local seg1=aa[2] local seg2=aa[3] local cond=aa[4] local a1=segment_route_when(seg1,route1,route2) if seg2 then local a2=segment_route_when(seg2,route1,route2) for nn,xx in pairs({'rh','md','ev','we','ln'}) do if cond=='segor' then if a1[xx]==nil and a2[xx]~=nil then a1[xx]=a2[xx] end elseif cond=='segand' then if a1[xx]==nil or a2[xx]==nil then a1[xx]=nil elseif (a1[xx]=='1' and a2[xx]=='2') or (a1[xx]=='2' and a2[xx]=='1') or (a1[xx]=='notpeakonly' and a2[xx]=='peakonly') or (a1[xx]=='notpeakonly' and a2[xx]=='peak+') or (a2[xx]=='notpeakonly' and a1[xx]=='peakonly') or (a2[xx]=='notpeakonly' and a1[xx]=='peak+') then a1[xx]=nil end elseif cond=='segandnot' then if a1[xx]==nil or a2[xx]==nil then elseif a2[xx]=='' or a2[xx]=='peak' or a1[xx]=='' or a1[xx]=='peak' or a2[xx]==a1[xx] or (a1[xx]=='peak+' and a2[xx]=='peakonly') or (a2[xx]=='peak+' and a1[xx]=='peakonly') then a1[xx]=nil end end end end if a1['md'] then if a1['ln'] then return 0 elseif a1['we'] then return 50 else return 100 end else if a1['rh'] then return 150 elseif a1['ln'] then return 200 else return 255 end end end function segment_route_when(seg,route1,route2) local a={} for n,x in pairs(routes_periods) do if x.segment==seg then if alt_ok(x) then if x.route==route1 or x.route==route2 then if x.dir then a[x.period]=x.dir else a[x.period]='' end end end end end return a end function p.segment_dir(frame) local aa=frame.args --=getArgs(frame) local seg1=aa[1] local seg2=aa[2] local cond=aa[3] local period=aa[4] if period==nil then period='' end local dir1=segment_dir(seg1,period) if cond~='segor' and cond~='segand' and cond~='segandnot' then return dir2color(dir1) end local inuse=false for nn,xx in pairs(routes) do local r1=seg_route(seg1,xx.id,period) local r2=seg_route(seg2,xx.id,period) if cond=='segor' then if r1 or r2 then inuse=true end elseif cond=='segand' then if r1 and r2 then inuse=true end elseif cond=='segandnot' then if r1 and not r2 then inuse=true end end end if not inuse then return dir2color('no') end local dir2=segment_dir(seg2,period) if cond=='segor' then if dir1=='2' or dir2=='2' then return dir2color('2') elseif dir1=='1' or dir2=='1' then return dir2color('1') elseif dir1=='ss' or dir2=='ss' then return dir2color('ss') elseif dir1=='sh' and dir2=='sh' then return dir2color('sh') else return dir2color('') end elseif cond=='segand' then if dir1==dir2 then return dir2color(dir1) elseif (dir1=='1' and dir2=='2') or (dir2=='1' and dir1=='2') then return dir2color('1') elseif (dir1=='ss' and dir2~='') or (dir2=='ss' and dir1~='') then return dir2color('ss') elseif dir1=='sh' and dir2=='sh' then return dir2color('sh') else return dir2color('') end elseif cond=='segandnot' then if dir1=='2' and dir2~='2' then return dir2color('2') elseif dir1=='1' and (dir2=='ss' or dir2=='') then return dir2color('1') elseif dir1=='ss' and dir2=='' then return dir2color('ss') elseif dir1=='sh' and dir2~='sh' then return dir2color('sh') else return dir2color('') end end end function dir2color(dir) if dir=='2' then return 'red' elseif dir=='1' then return 'pink' elseif dir=='ss' then return 'chocolate' elseif dir=='sh' then return 'lightseagreen' elseif dir=='no' then return 'black' else return 'grey' end end function segment_dir(seg,period) local x1,x2,ss,notsh,inuse if seg=='SIR' then return '' end for n,x in pairs(routes_periods) do if x.segment==seg and (period=='' or x.period==period) then if alt_ok(x) then inuse=true if x.how=='x' then if x.tt then elseif x.dir==nil then x2=true elseif x.dir=='peak' or x.dir=='peak+' or x.dir=='peakonly' then x1=true end elseif x.how then ss=true end if routes[x.route].shuttle==nil and x.shuttle==nil then notsh=true end end end end if inuse==nil then return 'no' elseif x2 then return '2' elseif x1 then return '1' elseif ss then return 'ss' elseif notsh==nil then return 'sh' else return '' end end function p.SL(frame) --local aa=getArgs(frame) -- здесь это почему-то не работает local aa=frame.args station=aa[1] orient=aa[2] -- V or H track=aa[3] -- 'exp', 'lcl', 'skip' or nil (or 'manual') route_plus=aa[4] route_minus=aa[5] if track=='' then track=nil end if route_plus=='' then route_plus=nil end if route_minus=='' then route_minus=nil end local arr={} if track~='manual' then arr=station_list_once(arr,station,nil,nil,track) end if route_plus then for match in (route_plus..', '):gmatch("(.-), ") do -- https://stackoverflow.com/questions/1426954/split-string-in-lua arr_add(arr,match,'md','') end end m1=nil m2=nil if route_minus then for match in (route_minus..', '):gmatch("(.-), ") do -- https://stackoverflow.com/questions/1426954/split-string-in-lua if m1==nil then m1=match elseif m2==nil then m2=match end end end return arr_text(arr,'SL '..orient,m1,m2) end function p.station_acc(frame) station=getArgs(frame)[1] for n0,x0 in pairs(station_parts(station)) do csta=x0 for n,x in pairs(stations) do if x.station==csta then cacc=x.acc end end end if cacc then rtn=accicon if cacc=='yes' then return rtn elseif cacc=='n' then return rtn..' (только на север)' elseif cacc=='s' then return rtn..' (только на юг)' else return rtn..' ('..cacc..')' end else return '' end end function p.station_opened(frame) station=getArgs(frame)[1] local tw=twins[station] if tw then local so1=station_opened(tw.station1) local so2=station_opened(tw.station2) if so1==so2 then return so1 else return '<b>'..tw.comment1..':</b>'..indent..so1 ..'<br><b>'..tw.comment2..':</b>'..indent..so2 end end return station_opened(station) end function station_opened(station) for n0,x0 in pairs(station_parts(station)) do csta=x0 for n,x in pairs(stations) do if x.station==csta then if x.orig then return x.orig..'<br>(в составе метро с '..x.opened..')' else return x.opened end end end end end function p.complex_boro(frame) complex=getArgs(frame)[1] return complex_csv(complex,'boro',frame) end function complex_csv(complex,field,frame) local rtn='' local cur for nn,xx in pairs(station_complexes) do if xx.article==complex and xx.section~='' then cur=station_csv(xx.station,field,frame) if rtn=='' then rtn=cur elseif rtn~=cur then rtn=rtn..', '..cur end end end return rtn end function p.station_csv(frame) station=getArgs(frame)[1] field=getArgs(frame)[2] local tw=twins[station] if tw then local so1=station_csv(tw.station1,field,frame) local so2=station_csv(tw.station2,field,frame) if so1==so2 then return so1 else return '<b>'..tw.comment1..':</b>'..indent..so1 ..'<br><b>'..tw.comment2..':</b>'..indent..so2 end end return station_csv(station,field,frame) end function station_csv(station,field,frame) for n0,x0 in pairs(station_parts(station)) do csta=x0 for n,x in pairs(stations) do if x.station==csta then return key_csv(x.c_key,field,frame) end end end end function key_csv(key,field,frame) local c=csv[key] if field=='boro' then cf=c.boro if cf=='M' then return '[[Манхэттен]]' elseif cf=='Bk' then return '[[Бруклин]]' elseif cf=='Q' then return '[[Куинс]]' elseif cf=='Bx' then return '[[Бронкс]]' end elseif field=='boro plain' then cf=c.boro if cf=='M' then return ' на Манхэттене' elseif cf=='Bk' then return ' в Бруклине' elseif cf=='Q' then return ' в Куинсе' elseif cf=='Bx' then return ' в Бронксе' end elseif field=='struc' then cf=c.struc if cf=='At Grade' then return 'наземная' elseif cf=='Elevated' or cf=='Viaduct' then return 'эстакадная' elseif cf=='Open Cut' then return 'в выемке' elseif cf=='Subway' then return 'подземная' end elseif field=='coord' then return frame:preprocess('{{coord|'..c.lat..'|'..c.lon..'|region:US_type:railwaystation}}') elseif field=='id' then return c.id end end function p.former_data(frame) station=getArgs(frame)[1] field=getArgs(frame)[2] for n,x in pairs(stations_former) do if x.station==station then if field=='boro' then cf=x.boro if cf=='M' then return '[[Манхэттен]]' elseif cf=='B' then return '[[Бруклин]]' elseif cf=='Q' then return '[[Куинс]]' elseif cf=='Bx' then return '[[Бронкс]]' end elseif field=='opened' then return x.opened elseif field=='closed' then return x.closed elseif field=='struc' then if x.struc then return x.struc else return 'эстакадная' end end end end end function p.station_eng(frame) station=getArgs(frame)[1] period=getArgs(frame)[2] if period=='future' then for n,x in pairs(stations_future) do if x.station==station then return x.eng end end return '' elseif period=='former' then for n,x in pairs(stations_former) do if x.station==station then return x.eng end end return '' end local tw=twins[station] if tw then return tw.eng end for n0,x0 in pairs(station_parts(station)) do csta=x0 for n,x in pairs(stations) do if x.station==csta then return x.eng end end end end function p.complex_ridership(frame) article=getArgs(frame)[1] local tmp for n00,x00 in pairs(station_complexes) do if x00.article==article then if alt_ok(x00) then csta=x00.station for n,x in pairs(stations) do if x.station==csta then tmp=rider(x,frame,'complex') if tmp~='ERROR' then return tmp end end end end end end return tmp end function p.station_ridership(frame) station=getArgs(frame)[1] for n0,x0 in pairs(station_parts(station)) do csta=x0 for n,x in pairs(stations) do if x.station==csta then return rider(x,frame,'station') end end end end function p.route_descr(frame) route=getArgs(frame)[1] return routes[route].descr end function p.route_color(frame) route=getArgs(frame)[1] return routes[route].color end function p.route_schedule(frame) route=getArgs(frame)[1] local r=routes[route] if r then local rtn=r.schedule if rtn then return 'https://new.mta.info/document/'..rtn else return '' end else return '' end end function p.station_connections(frame) station=getArgs(frame)[1] period=getArgs(frame)[2] if period=='future' then for n,x in pairs(stations_future) do if x.station==station then return x.conn end end return '' elseif period=='former' then for n,x in pairs(stations_former) do if x.station==station then return x.transfer end end return '' end local tw=twins[station] if tw then station=tw.station1 end sta_ext=station alt_on=alt_exist() for n,x in pairs(station_complexes) do if x.section~='' then if alt_ok(x) then if x.station==station then return '' --для станций, входящих в узел, на уровне станции не показываем ничего elseif x.article==station then sta_ext=x.station --если передан узел, для внешних пересадок берём данные из одной из его станций break end end end end local s=station_connections(sta_ext) local t='' local found=false for n,x in pairs(station_complexes) do if alt_ok(x,true) and x.section=='' then if x.station==station then if string.len(x.article)==1 then for nn,xx in pairs(station_complexes) do if xx.article==x.article and xx.station~=x.station then t=t..one_conn(t,xx.station,xx.alt,xx.periods,frame) end end else t=t..one_conn(t,x.article,x.alt,x.periods,frame) end found=true elseif x.article==station then t=t..one_conn(t,x.station,x.alt,x.periods,frame) found=true end if found then break end end end if s~='' and t~='' then return s..'<br>'..t else return s..t end end function one_conn(t,sta,alt,periods,frame) local rtn=t if t~='' then rtn=rtn..'<br>' end rtn=rtn..netto(sta,'link') if periods==nil then rtn=rtn..frame:preprocess(metrocard) end rtn=rtn..alt_text(alt,'+','<br>(',')','',frame) if periods then rtn=rtn..'<sup>'..icons[periods]('icon',8)..'</sup>' end return rtn end function p.all_stations(frame) local pics={} odd=true for n,x in pairs(getArgs(frame)) do if odd then sta=x else pics[sta]=x end odd=not odd end local list={} for n,x in pairs(stations) do found=false sta=x.station for n0,x0 in pairs(multiline_stations) do if x.station==x0.part then found=true sta=x0.full end end rtn1='| <b>'..netto(sta,'link')..'</b><br>[[английский язык|англ.]] <i>'..x.eng..'</i>\r\n|'..acc_cell(x.acc)..'\r\n' local arr={} if found then rtn2='' for n0,x0 in pairs(multiline_stations) do if sta==x0.full then if rtn2~='' then rtn2=rtn2..'<br>' end rtn2=rtn2..line(x0.part) for n00,x00 in pairs(stations) do if x00.station==x0.part then arr=station_list_once_given(arr,x0.part,nil,nil,nil,x00.segment,x00.type,x00.sep) end end end end else rtn2=line(sta) arr=station_list_once_given(arr,sta,nil,nil,nil,x.segment,x.type,x.sep) end rtn3='| '..arr_text(arr,'full')..'\r\n' s=station_transfers(sta,'full small',nil,frame,nil,true) if x.conn then t=x.conn else t='' end if s=='' then if t=='' then rtn3=rtn3..'| —\r\n' else rtn3=rtn3..'| style="text-align:left;" |'..t..'\r\n' end else rtn3=rtn3..'| style="text-align:left;" |\r\n'..inner_table('',s,t)..'\r\n' end if x.orig then rtn3=rtn3..'| '..x.orig..'<br><small><img class="nowrap">(в составе метро</img> <img class="nowrap">с '..x.opened..')</img></small>' else rtn3=rtn3..'| '..x.opened end rtn3=rtn3..'\r\n| '..rider(x,frame,'list')..'\r\n| ' if pics[sta] then rtn3=rtn3..pics[sta]..'\r\n' else rtn3=rtn3..badparams..'\r\n' end pos=string.find(sta,' ',1,true) if string.find(sta,'-я',1,true)==3 then key='0'..sta elseif string.find(sta,'Первая ',1,true)==1 then key='001-я'..string.sub(sta,pos,string.len(sta)) elseif string.find(sta,'Вторая ',1,true)==1 then key='002-я'..string.sub(sta,pos,string.len(sta)) elseif string.find(sta,'Третья ',1,true)==1 then key='003-я'..string.sub(sta,pos,string.len(sta)) elseif string.find(sta,'Четвёртая ',1,true)==1 then key='004-я'..string.sub(sta,pos,string.len(sta)) elseif string.find(sta,'Пятая ',1,true)==1 then key='005-я'..string.sub(sta,pos,string.len(sta)) elseif string.find(sta,'Шестая ',1,true)==1 then key='006-я'..string.sub(sta,pos,string.len(sta)) elseif string.find(sta,'Седьмая ',1,true)==1 then key='007-я'..string.sub(sta,pos,string.len(sta)) elseif string.find(sta,'Восьмая ',1,true)==1 then key='008-я'..string.sub(sta,pos,string.len(sta)) elseif string.find(sta,'Девятая ',1,true)==1 then key='009-я'..string.sub(sta,pos,string.len(sta)) else key=sta end list[sta]={key=key,bkg=arr_text(arr,'bkg'),row=rtn1..'| '..rtn2..'\r\n'..rtn3} end list0={} for n,x in pairs(list) do table.insert(list0, x) end table.sort(list0, function(a,b) return a.key<b.key end) rtn1='' rtn2='' rtn3='' num=0 part=1 for n,x in pairs(list0) do num=num+1 delta='|- style="background-color:#'..x.bkg..'"\r\n| <b>'..num..'</b>\r\n| '..x.row if part==1 then rtn1=rtn1..delta if string.len(rtn1)>260000 then part=2 end elseif part==2 then rtn2=rtn2..delta if string.len(rtn2)>260000 then part=3 end else rtn3=rtn3..delta end end return rtn1..rtn2..rtn3 end function p.station_prose0(frame) station=getArgs(frame)[1] local tw=twins[station] return station_prose0(station,tw) end function station_prose0(station,tw) local list={} cou=0 for n,x in pairs(multiline_stations) do if x.full==station then list[x.part]=x.part cou=cou+1 end end if cou==0 then list[station]=station end rtn1='' rtn2='линиях' num=1 for n0,x0 in pairs(list) do if tw then rtn1='<b>«'..netto(station,'text')..'»</b> ([[английский язык|англ.]] <i>'..tw.eng..'</i>) — две станции [[Нью-Йоркский метрополитен|Нью-Йоркского метрополитена]], расположенные на двух ветках ' else for n,x in pairs(stations) do if x.station==x0 and rtn1=='' then rtn1='<b>«'..netto(station,'text')..'»</b> ([[английский язык|англ.]] <i>'..x.eng..'</i>) — станция [[Нью-Йоркский метрополитен|Нью-Йоркского метрополитена]], расположенная на ' end end end if rtn1=='' then return nostation end l=line_netto(x0) if cou==0 then return rtn1..line_link(l,'линии ')..'.' end rtn2=rtn2..' '..line_link(l,'') if num==cou then rtn2=rtn2..'.' else rtn2=rtn2..',' end if num==cou-1 then rtn2=rtn2..' и' end num=num+1 end return rtn1..rtn2 end function p.segment_regimes(frame) local aa=getArgs(frame) seg=aa[1] title=aa[2] exptracks='-пути' if aa[3] then exptracks='-путь' end exp={} lcl={} sks={} note=false noteplus=false for n,x in pairs(routes_periods) do if x.segment==seg then if alt_ok(x) then txt=routes[x.route]('bullet',20) if x.dir=='1' or x.dir=='2' then subp=subperiod1(x.period,x.dir) if subp then txt=txt..subp end end if x.how=='x' then if x.dir=='peak' then exp[x.period]=add2elem(exp[x.period],txt)..markpeak lcl[x.period]=add2elem(lcl[x.period],txt)..markback note=true elseif x.dir=='peak+' then exp[x.period]=add2elem(exp[x.period],txt)..asterisk noteplus=true elseif x.dir=='peakonly' then exp[x.period]=add2elem(exp[x.period],txt)..markpeak note=true elseif x.dir=='notpeakonly' then exp[x.period]=add2elem(exp[x.period],txt)..markback note=true else exp[x.period]=add2elem(exp[x.period],txt) end elseif x.how==nil then if x.dir=='peak+' then lcl[x.period]=add2elem(lcl[x.period],txt)..asterisk noteplus=true elseif x.dir=='peakonly' then lcl[x.period]=add2elem(lcl[x.period],txt)..markpeak note=true elseif x.dir=='notpeakonly' then lcl[x.period]=add2elem(lcl[x.period],txt)..markback note=true else lcl[x.period]=add2elem(lcl[x.period],txt) end else if x.dir=='peak' then sks[x.period]=add2elem(sks[x.period],txt)..markpeak lcl[x.period]=add2elem(lcl[x.period],txt)..markback note=true elseif x.dir=='peak+' then sks[x.period]=add2elem(sks[x.period],txt)..asterisk noteplus=true elseif x.dir=='peakonly' then sks[x.period]=add2elem(sks[x.period],txt)..markpeak note=true elseif x.dir=='notpeakonly' then sks[x.period]=add2elem(sks[x.period],txt)..markback note=true else sks[x.period]=add2elem(sks[x.period],txt) end end end end end eq1=qq(exp['rh'],exp['md']) and qq(lcl['rh'],lcl['md']) and qq(sks['rh'],sks['md']) eq2=qq(exp['md'],exp['ev']) and qq(lcl['md'],lcl['ev']) and qq(sks['md'],sks['ev']) eq3=qq(exp['ev'],exp['we']) and qq(lcl['ev'],lcl['we']) and qq(sks['ev'],sks['we']) eq4=qq(exp['we'],exp['ln']) and qq(lcl['we'],lcl['ln']) and qq(sks['we'],sks['ln']) local rtn=tab..' class="standard" style="'..whiteback..'"\r\n|-\r\n!style="line-height:80%;"|' if title=='auto' then first='' last='' for n,x in pairs(stations) do if x.segment==seg then if first=='' then first=x.station end last=x.station end end rtn=rtn..'<small>'..netto(first,'text') if first~=last then rtn=rtn..' —<br>'..netto(last,'text') end rtn=rtn..'</small>' elseif title~=nil and title~='' then rtn=rtn..'<small>'..title..'</small>' end rtn=rtn..'\r\n!'..period_captions(eq1,eq2,eq3,eq4)..'\r\n' if exp.rh~=nil or exp.md~=nil or exp.ev~=nil or exp.we~=nil or exp.ln~=nil then rtn=rtn..'|-\r\n! Экспресс'..exptracks..'\r\n'..period_cells(eq1,eq2,eq3,eq4,exp,'',true) else for n,x in pairs(stations) do if x.segment==seg and x.type=='o' then rtn=rtn..'|-\r\n! Экспресс'..exptracks..'\r\n'..period_cells(eq1,eq2,eq3,eq4,exp,'',true) break end end end if sks.rh~=nil or sks.md~=nil or sks.ev~=nil or sks.we~=nil or sks.ln~=nil then rtn=rtn..'|-\r\n! Локальные пути в режиме [[скип-стоп]]\r\n'..period_cells(eq1,eq2,eq3,eq4,sks,'',true) rtn=rtn..'|-\r\n! Локальные пути со всеми остановками\r\n'..period_cells(eq1,eq2,eq3,eq4,lcl,'',true) else rtn=rtn..'|-\r\n! Локальные пути\r\n'..period_cells(eq1,eq2,eq3,eq4,lcl,'',true) end if note or noteplus then rtn=rtn..'|-\r\n|colimg='..(img_count(eq1,eq2,eq3,eq4)+1)..'| <small>' if note then rtn=rtn..markpeak..' — в [[Список маршрутов Нью-Йоркского метрополитена#Терминология|пиковом направлении]]; '..markback..' — в обратном пиковому' end if noteplus then if note then rtn=rtn..';<br>'..asterisk..' — в пиковом направлении, часть рейсов' else rtn=rtn..asterisk..' — в [[Список маршрутов Нью-Йоркского метрополитена#Терминология|пиковом направлении]], часть рейсов' end end rtn=rtn..'</small>\r\n' end return rtn..'|}' end function p.station_expressinuse(frame) local aa=getArgs(frame) local station=aa[1] local ifyes=aa[2] if ifyes==nil then ifyes='' end local ifno=aa[3] if ifno==nil then ifno='' end if station=='+' then return ifyes end if station=='-' then return ifno end local seg='' for n,x in pairs(stations_all()) do if x.station==station then seg=x.segment end end if seg=='' then return ifno..badparams end for n,x in pairs(routes_periods) do if x.how=='x' and x.segment==seg then return ifyes end end return ifno end function p.station_terminalinuse(frame) local aa=getArgs(frame) local station=aa[1] local ifyes=aa[2] if ifyes==nil then ifyes='' end local ifno=aa[3] if ifno==nil then ifno='' end if station=='+' then return ifyes end if station=='-' then return ifno end arr={} for n,x in pairs(station_parts(station)) do arr=station_list_once(arr,x) multiline=x~=station end if arr==nil then return ifno..badparams end arrarr_n={} arrarr_s={} for n,x in pairs(arr) do fill_terminals(x.route,arrarr_n,arrarr_s,station,multiline) end if aa[4]=='n' then if arrarr_n[station] then return ifyes else return ifno end elseif aa[4]=='s' then if arrarr_s[station] then return ifyes else return ifno end else if arrarr_n[station]~=nil or arrarr_s[station]~=nil then return ifyes else return ifno end end end function p.station_terminalonly(frame) local aa=getArgs(frame) local station=aa[1] arr={} for n,x in pairs(station_parts(station)) do arr=station_list_once(arr,x) multiline=x~=station end if arr==nil then return '' end local a=arr_text(arr,'full') arrarr_n={} arrarr_s={} for n,x in pairs(arr) do fill_terminals(x.route,arrarr_n,arrarr_s,station,multiline) end local n='' if arrarr_n[station] then n=arr_text(arrarr_n[station].arr,'full') end local s='' if arrarr_s[station] then s=arr_text(arrarr_s[station].arr,'full') end if a==n then return 'n' elseif a==s then return 's' else return '' end end function p.legend(frame) local icons0={} for n,x in pairs(icons) do if x.num then table.insert(icons0, x) end end table.sort(icons0, function(a,b) return a.num<b.num end) local rtn='' for n,x in pairs(icons0) do rtn=rtn..': [[Файл:NYCS-SSI-'..x.icon..'.svg|link=]] ' if x.legend then rtn=rtn..x.legend..'\r\n' else rtn=rtn..x.tooltip..'\r\n' end end return rtn end function p.seg2color(frame) local aa=getArgs(frame) local seg1=aa[1] local seg2=aa[2] local rtn local rtn1='000000' local rtn2='000000' for n,x in pairs(stations) do if x.segment==seg1 then rtn=lines[line_netto(x.station)] if rtn then rtn1=rtn.color end end end if seg2 then for n,x in pairs(stations) do if x.segment==seg2 then rtn=lines[line_netto(x.station)] if rtn then rtn2=rtn.color end end end if rtn1==rtn2 then return rtn1 else return '000000' end else return rtn1 end end function p.seg_line(frame) local aa=getArgs(frame) local seg=aa[1] local line=aa[2] if line=='Железная дорога Статен-Айленда' then -- если станции SIR будут добавлены в таблицы, этот кусок надо будет убрать if seg=='SIR' then return 'x' else return '' end end for n,x in pairs(stations) do if x.segment==seg then if line_netto(x.station)==tolower(line) then return 'x' end end end return '' end function p.seg_route(frame) local aa=getArgs(frame) local seg=aa[1] local route=aa[2] if seg_route(seg,route,'') then return 'x' else return '' end end function seg_route(seg,route1,period) local route2=routes[route1].second if route2==nil then route2='' end for n,x in pairs(routes_periods) do if x.segment==seg then if period=='' or x.period==period then if x.route==route1 or x.route==route2 then if not(x.period=='also' or (x.period=='ln' and period=='') or (x.period=='rh' and x.dir=='peak+' and period=='') or (x.period=='we' and x.dir=='1' and period=='')) then if alt_ok(x) then return true end end end end end end return false end -- local functions function alt_exist() for nnn,xxx in pairs(alts) do if xxx.number then return true --если один элемент с номером найден end end return false end function alt_text(val,prefix,t1,t2,t3,frame) local rtn='' for nnn,xxx in pairs(alts) do if xxx.relevant and (val==prefix..xxx.number or val=='all') then rtn=rtn..t1..frame:preprocess(xxx.text..'<ref name="'..xxx.refname..'">['..xxx.link..' '..xxx.title..']</ref>')..t2 end end if rtn=='' then return rtn else return rtn..t3 end end function alt_ok(x,ignore_lastalt) if x.future and not future_on then return false end local a=x.alt if a==nil then return true end for nnn,xxx in pairs(alts) do if a=='+'..xxx.number then if alt_on and not ignore_lastalt then xxx.relevant=true end return alt_on elseif a=='-'..xxx.number then if alt_on and not ignore_lastalt then xxx.relevant=true end return not alt_on end end return false end function const(param,frame) if param=='year' then -- год, в котором последний раз проверено, что скип-стоп только у маршрутов J/Z, а варианты с ромбом только у 6, 7 и F (если это изменится, пройти по статьям и исправить везде, где есть {{NYCS const|year}}) return '2023' elseif param=='r_year' then -- год, на который приводится пассажиропоток return '2019' elseif param=='r_y' then -- годовой пассажиропоток return '1698 млн чел.'..frame:preprocess(r_link) elseif param=='r_d' then -- дневной пассажиропоток return '5,5 млн чел.'..frame:preprocess(r_link) elseif param=='stations' then -- количество станций, если считать по одной return '472' elseif param=='complexes' then -- количество станций, если считать каждый пересадочный узел за одну станцию return '424' elseif param=='r_complexes' then -- то же, на год пассажиропотока return '424' elseif param=='routes' then -- количество маршрутов return '29' elseif param=='lines' then -- количество линий return '36' elseif param=='complexes only' then -- количество пересадочных узлов return '32' else return '' end end function rider(x,frame,what) local o=ridership[x.r_key] local rtn if o==nil then return 'ERROR' end local tot=const('r_complexes')-0 if what=='station text' and (x.r_ast or (o.rank>10 and o.rank~=tot)) then return '' end if what=='complex text' and (x.r_ast~=true or (o.rank>10 and o.rank~=tot)) then return '' end datum=tostring(o.r) rtn=datum:reverse():gsub("%d%d%d", "%1 "):reverse():gsub("^ ", "") -- https://love2d.org/forums/viewtopic.php?f=4&t=1802 if what=='station text' or what=='complex text' then rtn=' место по пассажиропотоку: <img class="nowrap">'..rtn..'</img>' if o.rank==tot then rtn=' занимает последнее'..rtn else rtn=' занимает '..o.rank..'-е'..rtn end if what=='station text' then rtn=' На '..const('r_year')..' год станция'..rtn else rtn='\r\nНа '..const('r_year')..' год пересадочный узел'..rtn end last1=string.sub(datum,-1) last2=string.sub('0'..datum,-2) if last1=='1' and last2~='11' then rtn=rtn..' пассажир' elseif (last1=='2' and last2~='12') or (last1=='3' and last2~='13') or (last1=='4' and last2~='14') then rtn=rtn..' пассажира' else rtn=rtn..' пассажиров' end return rtn..' в год'..frame:preprocess(r_link)..'.' end if o.r==0 or o.prev==0 then elseif o.r>o.prev then rtn='<img style="color:#0C0;font-size:larger;">▲</img>'..rtn elseif o.r<o.prev then rtn='<img style="color:#F00;font-size:larger;">▼</img>'..rtn else rtn='<img style="color:#0AF;font-size:larger;">▬</img>'..rtn end if x.r_ast then if what=='station' then return '' end if what~='complex' then rtn=rtn..asterisk end end if what~='list' then rtn=rtn..'<br>('..o.rank..' из '..const('r_complexes')..')' end if what=='station' or what=='complex' then rtn=rtn..frame:preprocess(r_link) end if o.r==0 then ref='Станция весь год была закрыта.' elseif o.prev==0 then ref='Новая станция, по предыдущему году данных нет.' else ref='' end if o.comment then if ref=='' then ref=o.comment else ref=ref..' '..o.comment end end if ref~='' then rtn=rtn..frame:preprocess('<ref name="'..ref..'">'..ref..'</ref>') end return '<img class="nowrap">'..rtn..'</img>' end function add2elem(elem,txt) if elem then txt=elem..' '..txt end return txt end function two_segments(seg1,seg2,seg2a,fmt,ifno,withsta,typ1,typ2,typ2a) if seg2a=='x' or seg2a=='o' then seg2how=seg2a seg2a='' else seg2how=nil end if withsta==nil then typ1='x' typ2='x' typ2a='x' end arr={} for nn,xx in pairs(routes_sorted()) do for n,x in pairs({'rh','md','ev','we','ln'}) do how1=nil how2=nil how2a=nil for n0,x0 in pairs(routes_periods) do if x0.route==xx.id and x0.period==x then if alt_ok(x0) then if x0.segment==seg1 then how1=howstops(x0.how,x0.dir,typ1,x) end if seg2how=='x' then if x0.segment==seg2 and x0.how=='x' then how2=howstops(x0.how,x0.dir,typ2,x,'x') end elseif seg2how=='o' then if x0.segment==seg2 and (x0.how~='x' or x0.dir=='peak') then how2=howstops(x0.how,x0.dir,typ2,x,'o') end else if x0.segment==seg2 then how2=howstops(x0.how,x0.dir,typ2,x) end end if x0.segment==seg2a then how2a=howstops(x0.how,x0.dir,typ2a,x) end end end end for n0,x0 in pairs({how2,how2a}) do if how1==nil or x0==nil then how=nil elseif how1==x0 or x0=='' then how=how1 elseif how1=='' then how=x0 elseif (how1=='peak' and x0=='some peak') or (x0=='peak' and how1=='some peak') then how='some peak' elseif (how1=='1' and x0=='2') or (how1=='2' and x0=='1') then how=nil elseif how1=='1' or x0=='1' then how='1' elseif how1=='2' or x0=='2' then how='2' end if how then arr_add(arr,xx.id,x,how) end end end end rtn=arr_text(arr,fmt) if rtn=='' then return ifno else return rtn end end function fill_terminals(route,arrarr_n,arrarr_s,cursta,multiline) for nn,xx in pairs(subperiods) do period=xx.period subperiod=xx.subperiod seg_n=nil seg_s=nil dir_n=nil dir_s=nil how_n='' how_s='' fork_n='' for n,x in pairs(routes_periods) do if x.route==route and x.period==period then if alt_ok(x) then if subperiod_ok(subperiod,x.dir) then if x.fork=='south' then add_terminal(arrarr_n,route,period,seg_n,how_n,false,dir_n,subperiod,cursta,multiline) add_terminal(arrarr_s,route,period,seg_s,how_s,true,dir_s,subperiod,cursta,multiline) end if seg_n==nil then seg_n=x.segment dir_n=x.dir how_n=x.how end seg_s=x.segment dir_s=x.dir how_s=x.how fork_s=x.fork if x.fork=='north' then add_terminal(arrarr_n,route,period,seg_n,how_n,false,dir_n,subperiod,cursta,multiline) -- add_terminal(arrarr_s,route,period,seg_s,how_s,true,dir_s,subperiod,cursta,multiline) fork_n='north' seg_n=nil seg_s=nil dir_n=nil dir_s=nil how_n='' how_s='' end end end end end if fork_s=='uturn' then if fork_n~='north' then add_terminal(arrarr_n,route,period,seg_s,how_s,true,dir_s,subperiod,cursta,multiline) end add_terminal(arrarr_s,route,period,seg_n,how_n,false,dir_n,subperiod,cursta,multiline) else add_terminal(arrarr_n,route,period,seg_n,how_n,false,dir_n,subperiod,cursta,multiline) add_terminal(arrarr_s,route,period,seg_s,how_s,true,dir_s,subperiod,cursta,multiline) end end end function text_terminals(arrarr,total_periods,small) cou=0 for n,x in pairs(arrarr) do cou=cou+1 end rtn='' for n,x in pairs(arrarr) do if rtn~='' then rtn=rtn..'<br>' end rtn=rtn..netto(x.station,'link') arrtext=arr_text(x.arr,'when') if arrtext~='' and (arrtext~=total_periods or cou>1) then if small then rtn=rtn..' <small>('..arrtext..')</small>' else rtn=rtn..' ('..arrtext..')' end end end return rtn end function build_route(route,route2,action,frame,article,period) local icon route_color=routes[route].color b1=routes[route]('bullet',20) if route2 then b2=routes[route2]('bullet',20) end if action=='lines list' or action=='lines lead' then rtn1='' rtn2='' pos1=0 pos2=0 if action=='lines lead' then delim=', ' dot='.' prefix='линиям ' cou=0 else delim='; ' dot='' prefix='' end elseif action=='regimes' then segs={} minseg=1000 maxseg=0 segs_empty=true else rtn1='|-\r\n' rtn2='' if action=='navtext' then rtn1='|- valign=top\r\n|'..b1..'\r\n|' elseif action=='nav' then rtn1=rtn1..'!nowrap style="font-size:90%" colimg=' if route2 then rtn1=rtn1..'5|'..b1..b2..'\r\n' else rtn1=rtn1..'4|'..b1..'\r\n' end end end updown=false first=true pattern='o' if action=='route' then seg_first='' for n0,x0 in pairs(routes_periods) do if x0.route==route and (x0.period=='rh' or x0.period=='also') and not x0.except then if alt_ok(x0) then if seg_first=='' then seg_first=x0.segment end seg_last=x0.segment end end end if route2 then first2='' for n0,x0 in pairs(routes_periods) do if x0.route==route2 and (x0.period=='rh' or x0.period=='also') and not x0.except then if alt_ok(x0) then for n00,x00 in pairs(stations_all()) do if x00.segment==x0.segment then icon2=station_list_full(x00.station,'icons','eq',route2,nil) if icon2~='' then if first2=='' then first2=x00.station end last2=x00.station end end end end end end route2_active=false end end for n0,x0 in pairs(routes_periods) do if x0.route==route then if alt_ok(x0) then if (x0.period=='rh' or x0.period=='also') and not x0.except then if action=='route' then if x0.pattern then pattern=x0.pattern end if first then if pattern~='o' then rtn1=rtn1..'! colimg=2 |\r\n' else rtn1=rtn1..'!\r\n' end if route2 then rtn1=rtn1..'!'..b1..'\r\n!'..b2..'\r\n!Станция\r\n!'..acc_cell('yes')..'\r\n!Пересадки для '..b1..'\r\n!Пересадки для '..b2..'\r\n' else rtn1=rtn1..'!'..b1..'\r\n!Станция\r\n!'..acc_cell('yes')..'\r\n!Пересадки\r\n' end first=false end end sta_first='' for n,x in pairs(stations_all()) do if x.segment==x0.segment then if sta_first=='' then sta_first=x.station end sta_last=x.station end end if action=='regimes' then if x0.fork=='south' then if segs_empty then segs_empty=false elseif updown then minseg=minseg-1 else maxseg=maxseg+1 end if updown then segs['before '..x0.segment]={key=minseg} else segs['before '..x0.segment]={key=maxseg} end end if segs_empty then segs_empty=false elseif updown then minseg=minseg-1 else maxseg=maxseg+1 end local tt=false if sta_first==sta_last then for nn,xx in pairs(stations) do if xx.station==sta_first then tt=xx.subtype=='tt' end end end if x0.fullsta then sta_first=from_part(sta_first) sta_last=from_part(sta_last) end if updown then segs[x0.segment]={key=minseg,sta_first=sta_last,sta_last=sta_first,tt=tt} else segs[x0.segment]={key=maxseg,sta_first=sta_first,sta_last=sta_last,tt=tt} end else if x0.fork=='south' then rtn1=rtn1..wide_cell(action,route2) end for n,x in pairs(stations_all()) do if x.segment==x0.segment then tmp='' sta=x.station sta_real=from_part(sta) if x0.fullsta~=nil and action=='route' then sta=sta_real end if period then icon=icon_nostop icon2=icon_nostop for n00,x00 in pairs(routes_periods) do if x00.segment==x.segment and x00.period==period then if x00.route==route then icon=howstops2pic(howstops(x00.how,x00.dir,x.type,period),period) elseif x00.route==route2 then icon2=howstops2pic(howstops(x00.how,x00.dir,x.type,period),period) end end end else icon=station_list_full(sta,'icons','eq',route,nil) if route2 then icon2=station_list_full(sta,'icons','eq',route2,nil) end end if icon~='' or action=='route' then if action=='lines list' or action=='lines lead' then tmp=line_netto(sta) if action=='lines lead' then lookfor='[['..tmp..'|' else lookfor='[['..tmp..']]' end if string.find(rtn1,lookfor,1,true)~=nil or string.find(rtn2,lookfor,1,true)~=nil then tmp='' elseif action=='lines lead' then cou=cou+1 if cou==1 then tmp_only=tmp end tmp=line_link(tmp,'') else color='' xx=lines[tmp] if xx then color=xx.color end tmp='[['..tmp..']]' if color==route_color then tmp='<img style="background-color:#'..color..'; border:1px solid #A9A9A9;"> </img> '..tmp end end elseif action=='navtext' then tmp=tmp..' <img class="nowrap"><sup>'..icon..'</sup>' sta1=from_part(sta) sta2=to_complex(sta1) if sta2==article then tmp=tmp..'<b>'..netto(sta,'text')..'</b></img>' else tmp=tmp..'[['..sta2..to_complex_sec(sta1)..'|'..netto(sta,'text')..']]</img>' end else if x.future then tmp=tmp..'|- style="'..grayback..'"\r\n' a3=x.conn else tmp=tmp..'|-\r\n' a3=station_connections(sta_real) end if icon=='' or icon==icon_nostop then ith=1 else if period then filter=period else filter=station_list_full(sta_real,'periods','eq',route,nil) end ith=station_transfers_count(sta_real,filter) if x.future then if x.conn then ith=ith+1 end else if station_list_full(sta_real,'count letters full','ne',route,filter)~=0 then ith=ith+1 end if a3~='' then ith=ith+1 end end end if route2 then if icon2=='' or icon2==icon_nostop then ith2=1 else if period then filter2=period else filter2=station_list_full(sta_real,'periods','eq',route2,nil) end ith2=station_transfers_count(sta_real,filter2) if station_list_full(sta_real,'count letters full','ne',route2,filter2)~=0 then ith2=ith2+1 end if a3~='' then ith2=ith2+1 end if ith2>ith then ith=ith2 end end end icontoshow=icon if action=='route' then novert_n=sta==sta_first and (x0.novert_n~=nil or x0.segment==seg_first) novert_s=sta==sta_last and (x0.novert_s~=nil or (x0.segment==seg_last and x0.fork~='uturn')) circletoshow='O' if icon=='' or icon==icon_nostop then icontoshow=icon_nostop if icon2=='' or icon2==icon_nostop or route2==nil then circletoshow='OO' end end if x.note then icontoshow='<img class="nowrap">'..icon..x.note..'</img>' end tmp=tmp..twomosaics(pattern,route_color,circletoshow,ith,novert_n,novert_s) end if period then cellalign='|' others_format='one period' else cellalign='|align=center|' others_format='full small' end tmp=tmp..cellalign..icontoshow..'\r\n' if route2 then if sta==first2 then route2_active=true end if icon2=='' or icon2==icon_nostop then if route2_active then tmp=tmp..cellalign..icon_nostop..'\r\n' else tmp=tmp..'|\r\n' end else tmp=tmp..cellalign..icon2..'\r\n' end if sta==last2 then route2_active=false end end if action=='nav' then comp=to_complex(sta_real,true) if comp=='' then tmp=tmp..'|'..netto(sta_real,'link')..'\r\n' elseif comp==article then tmp=tmp..'|<b>'..netto(sta_real,'text')..'</b>\r\n' else tmp=tmp..'|[['..comp..to_complex_sec(sta_real)..'|'..netto(sta_real,'text')..']]\r\n' end tmp=tmp..'|'..acc_cell(x.acc)..'\r\n' tmp=tmp..'|nowrap|'..station_transfers_including(sta_real,comp,'bullets',route,route2)..'\r\n' else tmp=tmp..'|nowrap|'..ita1(x.future,true,false)..netto(sta,'link')..ita2(x.future)..'\r\n' tmp=tmp..'|'..acc_cell(x.acc)..'\r\n' if icon=='' or icon==icon_nostop then tmp=tmp..'|\r\n' else a1=station_list_full(sta_real,others_format,'ne',route,filter) a2=station_transfers(sta_real,others_format,filter,frame) if action=='route' then tmp=tmp..'| style="padding:0;margin:0;"|\r\n'..inner_table(a1,a2,a3) else tmp=tmp..'|\r\n'..inner_table(a1,a2,a3) end end if route2 then if icon2=='' or icon2==icon_nostop then tmp=tmp..'|\r\n' else a1=station_list_full(sta_real,others_format,'ne',route2,filter2) a2=station_transfers(sta_real,others_format,filter2,frame) if action=='route' then tmp=tmp..'| style="padding:0;margin:0;"|\r\n'..inner_table(a1,a2,a3) else tmp=tmp..'|\r\n'..inner_table(a1,a2,a3) end end end end end end if action=='lines list' or action=='lines lead' then if tmp~='' then if updown then if rtn2=='' then rtn2=tmp elseif rtn2~='' then if pos2==0 then pos2=string.len(tmp) else pos2=pos2+string.len(tmp..delim) end rtn2=tmp..delim..rtn2 end else if rtn1=='' then rtn1=tmp elseif rtn1~='' then pos1=string.len(rtn1) rtn1=rtn1..delim..tmp end end end else if updown then rtn2=tmp..rtn2 else rtn1=rtn1..tmp end end end end end if x0.joint then updown=true elseif x0.fork=='north' then if action=='regimes' then if segs_empty then segs_empty=false elseif updown then minseg=minseg-1 else maxseg=maxseg+1 end if updown then segs['after '..x0.segment]={key=minseg} else segs['after '..x0.segment]={key=maxseg} end else rtn1=rtn1..wide_cell(action,route2) end end if x0.shape~=nil and action=='route' then rtn1=rtn1..'|-\r\n' if x0.shape=='|\\' then rtn1=rtn1..mosaic(route_color,'N-SE',0,'r') rtn1=rtn1..mosaic(route_color,'SW',0,'l') elseif x0.shape=='|/' then rtn1=rtn1..mosaic(route_color,'S-NE',0,'r') rtn1=rtn1..mosaic(route_color,'NW',0,'l') elseif x0.shape=='\\|' then rtn1=rtn1..mosaic(route_color,'NE',0,'r') rtn1=rtn1..mosaic(route_color,'S-NW',0,'l') elseif x0.shape=='/|' then rtn1=rtn1..mosaic(route_color,'SE',0,'r') rtn1=rtn1..mosaic(route_color,'N-SW',0,'l') end if route2 then rtn1=rtn1..'|colimg=6|\r\n' else rtn1=rtn1..'|colimg=4|\r\n' end end end if action=='regimes' and x0.period~='also' and not x0.except then if x0.segment_subst then seg=x0.segment_subst else seg=x0.segment end if segs[seg] then segs[seg][x0.period]=how_descr(x0,route,segs[seg].tt) end end end end if action=='regimes' and x0.route==route2 and x0.period~='also' and not x0.except then if alt_ok(x0) then if x0.segment_subst then seg=x0.segment_subst else seg=x0.segment end if segs[seg] then segs[seg][x0.period..'2']=how_descr(x0,route2,segs[seg].tt) end end end end if action=='lines list' or action=='lines lead' then if action=='lines lead' and cou==1 then return line_link(tmp_only,'линии ')..dot else if rtn1=='' or rtn2=='' then if pos2>0 then pos1=pos2 end rtn1=rtn1..rtn2..dot else if pos2>0 then pos1=pos2+string.len(rtn1..delim) else pos1=string.len(rtn1) end rtn1=rtn1..delim..rtn2..dot end if action=='lines lead' then rtn1=string.sub(rtn1,1,pos1)..', и '..string.sub(rtn1,pos1+3,string.len(rtn1)) end return prefix..rtn1 end elseif action=='regimes' then segs0={} for n,x in pairs(segs) do table.insert(segs0, x) end table.sort(segs0, function(a,b) return a.key<b.key end) finger=nil for n,x in pairs(segs0) do equal=false if finger then equal=x.rh==finger.rh and x.md==finger.md and x.ev==finger.ev and x.we==finger.we and x.ln==finger.ln if route2 then equal=equal and x.rh2==finger.rh2 and x.md2==finger.md2 and x.ev2==finger.ev2 and x.we2==finger.we2 and x.ln2==finger.ln2 end end if equal then finger.sta_last=x.sta_last x.ignore=true else finger=x end end eq1=true eq2=true eq3=true eq4=true eq5=true eq6=true eq7=true eq8=true for n,x in pairs(segs0) do if x.ignore==nil then if not qq(x.rh,x.md) then eq1=false end if not qq(x.md,x.ev) then eq2=false end if not qq(x.ev,x.we) then eq3=false end if not qq(x.we,x.ln) then eq4=false end if route2 then if not qq(x.rh2,x.md2) then eq5=false end if not qq(x.md2,x.ev2) then eq6=false end if not qq(x.ev2,x.we2) then eq7=false end if not qq(x.we2,x.ln2) then eq8=false end end end end if route2 then rtn='!rowimg=2 style="line-height:80%;"| От станции<small><br>включительно</small>\r\n!rowimg=2 style="line-height:80%;"| До станции<small><br>включительно</small>' img=img_count(eq1,eq2,eq3,eq4) if img==1 then rtn=rtn..'\r\n!'..b1 else rtn=rtn..'\r\n!colimg='..img..'|'..b1 end img=img_count(eq5,eq6,eq7,eq8) if img==1 then rtn=rtn..'\r\n!'..b2 else rtn=rtn..'\r\n!colimg='..img..'|'..b2 end rtn=rtn..'\r\n|-\r\n!' else rtn='!style="line-height:80%;"| От станции<small><br>включительно</small>\r\n!style="line-height:80%;"| До станции<small><br>включительно</small>\r\n!' end rtn=rtn..period_captions(eq1,eq2,eq3,eq4) if route2 then rtn=rtn..'\r\n!'..period_captions(eq5,eq6,eq7,eq8) end rtn=rtn..'\r\n' for n,x in pairs(segs0) do if x.ignore==nil then rtn=rtn..'|-\r\n' if x.sta_first then if x.sta_first==x.sta_last then rtn=rtn..'!colimg=2|'..ita1(future_on,true,false)..netto(x.sta_first,'link')..ita2(future_on)..'\r\n' else rtn=rtn..'!align=left|'..ita1(future_on,true,false)..netto(x.sta_first,'link')..ita2(future_on)..'\r\n' rtn=rtn..'!align=left|'..ita1(future_on,true,false)..netto(x.sta_last,'link')..ita2(future_on)..'\r\n' end rtn=rtn..period_cells(eq1,eq2,eq3,eq4,x,'',false) if route2 then rtn=rtn..period_cells(eq5,eq6,eq7,eq8,x,'2',false) end else rtn=rtn..'!colimg=12|\r\n' end end end return rtn elseif action=='navtext' then return rtn1..rtn2..'\r\n' else return rtn1..rtn2 end end function qq(aa,bb) local a=nil if aa then a=string.gsub(aa,' %(до 23:00%)','') a=string.gsub(a,'%(до 23:00%)','') end local b=nil if bb then b=string.gsub(bb,' %(до 23:00%)','') b=string.gsub(b,'%(до 23:00%)','') end return a==b end function img_count(eq1,eq2,eq3,eq4) local img=5 if eq1 then img=img-1 end if eq2 then img=img-1 end if eq3 then img=img-1 end if eq4 then img=img-1 end return img end function period_captions(eq1,eq2,eq3,eq4) local rtn if eq2 and eq3 then if eq1 and eq4 then rtn=' Круглосуточно' elseif eq4 then rtn=' Часы пик\r\n! Остальное время' elseif eq1 then rtn='style="line-height:80%;"| <small>День + вечер<br>+ выходные</small>\r\n! Ночь' else rtn=' Часы пик\r\n!style="line-height:80%;"| <small>День (кроме часов пик)<br>+ вечер + выходные</small>\r\n! Ночь' end else if eq1 then rtn=' День' else rtn=' Часы пик\r\n! День (кроме часов пик)' end if eq3 and eq4 then rtn=rtn..'\r\n! Остальное время' else rtn=rtn..period_caption(eq2,'Вечер','вечер') rtn=rtn..period_caption(eq3,'Выходные','выходные') rtn=rtn..period_caption(eq4,'Ночь','ночь') end end return rtn end function period_caption(eq,periodU,periodL) if eq then return ' + '..periodL else return '\r\n! '..periodU end end function period_cells(eq1,eq2,eq3,eq4,a,n,small) local rtn='' rtn=rtn..period_cell(eq1,a['rh'..n],small) rtn=rtn..period_cell(eq2,a['md'..n],small) rtn=rtn..period_cell(eq3,a['ev'..n],small) rtn=rtn..period_cell(eq4,a['we'..n],small) rtn=rtn..period_cell(false,a['ln'..n],small) return rtn end function period_cell(eq,data,small) if eq then return '' elseif data then if small then return '|<img class="nowrap"><small>'..data..'</small></img>\r\n' else return '|'..data..'\r\n' end else return '| <img title="нет движения поездов">—</img>\r\n' end end function how_descr(x0,route,tt) local skipstop=false if x0.how==nil then s='локальные пути' elseif x0.how=='x' then if tt then s='оборотный путь' else s='экспресс' if (x0.dir=='peak') or (x0.dir=='peakonly' and routes[route].onedir) then s=s..'-путь' else s=s..'-пути' end end else s='локальные пути в режиме [[скип-стоп]]' skipstop=true end if x0.dir=='peak' then if skipstop then s='локальные пути: в пиковом направлении в режиме [[скип-стоп]], в обратном со всеми остановками' else s=s..' в пиковом направлении, локальный путь в обратном' end elseif x0.dir=='peakonly' then s=s..'; только в пиковом направлении' elseif x0.dir=='peak+' then s=s..'; только в пиковом направлении (часть рейсов)' elseif x0.dir=='notpeakonly' then s=s..'; только в направлении, обратном пиковому' elseif x0.dir=='1' or x0.dir=='2' then subp=subperiod1(x0.period,x0.dir) if subp then s=s..' '..subp end end return s end function subperiod1(period,param) if param=='1' then if period=='rh' then return '(часть рейсов)' elseif period=='ev' then return '(до 23:00)' elseif period=='we' then return '(только летом)' elseif period=='ln' then return '(в будни)' else return nil end else if period=='rh' then return '(большинство рейсов)' elseif period=='ev' then return '(после 23:00)' elseif period=='we' then return '(кроме лета)' elseif period=='ln' then return '(в выходные)' else return nil end end end function wide_cell(action,route2) if action=='nav' then if route2 then return '|- style="'..grayback..'"\r\n|colimg=6|\r\n' else return '|- style="'..grayback..'"\r\n|colimg=4|\r\n' end elseif action=='navtext' then return ' <b>|</b> ' else return '' end end function mosaic(route_color,file,ith,openside,novert_n,novert_s) h20='|- style="height:20px;"\r\n|[[File:SMicon NS.svg|link=]]\r\n' h10='|- style="height:10px;"\r\n|<div style="padding:0;margin:0;height:10px;overflow-y:hidden;">[[File:SMicon NS.svg|link=]]</div>\r\n' if openside=='l' then border=bor0('left') elseif openside=='r' then border=bor0('right') else border='' end if ith==2 then tmp=h10 tmp_novert='|- style="height:10px;'..whiteback..'"\r\n|\r\n' elseif ith==3 then tmp=h20 tmp_novert='|- style="height:20px;'..whiteback..'"\r\n|\r\n' elseif ith==4 then tmp=h20..h10 tmp_novert='|- style="height:30px;'..whiteback..'"\r\n|\r\n' elseif ith==5 then tmp=h20..h20 tmp_novert='|- style="height:40px;'..whiteback..'"\r\n|\r\n' elseif ith==6 then tmp=h20..h20..h10 tmp_novert='|- style="height:50px;'..whiteback..'"\r\n|\r\n' elseif ith==7 then tmp=h20..h20..h20 tmp_novert='|- style="height:60px;'..whiteback..'"\r\n|\r\n' elseif ith==8 then tmp=h20..h20..h20..h10 tmp_novert='|- style="height:70px;'..whiteback..'"\r\n|\r\n' elseif ith==9 then tmp=h20..h20..h20..h20 tmp_novert='|- style="height:80px;'..whiteback..'"\r\n|\r\n' else tmp='' tmp_novert='' end if novert_n then tmp_n=tmp_novert else tmp_n=tmp end if novert_s then tmp_s=tmp_novert else tmp_s=tmp end return '| style="padding:0;margin:0;'..border..'"|\r\n'..tab..' style="background-color:#'..route_color..';padding:0;margin:0;width:0;"\r\n'..tmp_n..'|- style="height:20px;"\r\n|[[File:SMicon '..file..'.svg|link=]]\r\n'..tmp_s..'|}\r\n' end function twomosaics(pattern,route_color,pic,ith,novert_n,novert_s) local tmp='' if pattern=='o' then tmp=tmp..mosaic(route_color,pic,ith,'',novert_n,novert_s) elseif pattern=='o ' then tmp=tmp..mosaic(route_color,pic,ith,'r',novert_n,novert_s) tmp=tmp..'| style="'..bor0('left')..'" |\r\n' elseif pattern==' o' then tmp=tmp..'| style="'..bor0('right')..'" |\r\n' tmp=tmp..mosaic(route_color,pic,ith,'l',novert_n,novert_s) elseif pattern=='o|' then tmp=tmp..mosaic(route_color,pic,ith,'r',novert_n,novert_s) tmp=tmp..mosaic(route_color,'NS',ith,'l') elseif pattern=='|o' then tmp=tmp..mosaic(route_color,'NS',ith,'r') tmp=tmp..mosaic(route_color,pic,ith,'l',novert_n,novert_s) end return tmp end function inner_table(a1,a2,a3) if a3==nil then a3='' end -- a1 - маршруты, на которые можно пересесть на той же станции (на той же платформе или на других) -- a2 - строки таблицы по остальным станциям пересадочного узла, где в первой клетке маршруты на станции, а во второй название станции -- a3 - пересадки вне метрополитена --if a2=='' and (a1=='' or a3=='') then -- return '<img class="nowrap">'..a1..a3..'</img>\r\n' --end rtn=tab..'\r\n' if a2=='' then if a1=='' and a3=='' then return '' end if a1~='' then rtn=rtn..'|-\r\n|nowrap|'..a1..'\r\n' end if a3~='' then rtn=rtn..'|-\r\n|nowrap style="height:20px;"|'..a3..'\r\n' end else if a1~='' then rtn=rtn..'|-\r\n|nowrap|'..a1..'\r\n|nowrap|<i><small>на той же станции</small></i>\r\n' end rtn=rtn..a2 if a3~='' then rtn=rtn..'|-\r\n|colimg=2 nowrap style="height:20px;"|'..a3..'\r\n' end end return rtn..'|}\r\n' end function periods(route,directions) arr={} for n,x in pairs(routes_periods) do if x.route==route then if alt_ok(x) then if not directions then arr_add(arr,route,x.period,'') else arr_add(arr,route,x.period,howstops(x.how,x.dir,'x',x.period)) end end end end return arr_text(arr,'when') end function add_terminal(arrarr,route,period,seg,how,north,dir,subperiod,cursta,multiline) sta=get_first_station(route,period,seg,how,dir,north,subperiod,false) for n0,x0 in pairs(sta) do local term=x0 if multiline then term=from_part(term) end if cursta==nil or cursta==term then if cursta then key=cursta else key=term end if arrarr[key] then arr=arrarr[term].arr else arr={} end comment=howstops(how,dir,'x',period) if comment then if comment=='' and subperiod~='' then comment=subperiod end arr_add(arr,route,period,comment) end arrarr[key]={arr=arr,station=term} end end --return arrarr end function netto(article,fmt) pos=string.find(article,'(',1,true) if fmt=='text' then return string.sub(article,1,pos-2) end if fmt=='link' then return '[['..article..'|'..string.sub(article,1,pos-2)..']]' end end function line_netto(station) pos=string.find(station,'(',1,true) local rtn=string.sub(station,pos+1,string.len(station)-1) pos=string.find(rtn,', через',1,true) if pos then rtn=string.sub(rtn,1,pos-1) end return rtn end function line_nowrap(rtn) pos=string.find(rtn,', ',1,true) if pos then return string.sub(rtn,1,pos+1)..'<img class="nowrap">'..string.sub(rtn,pos+2,string.len(rtn))..'</img>' else return rtn end end function line_link(line,text) pos=string.find(line,' ',1,true) return '[['..line..'|'..text..string.sub(line,pos+1,string.len(line))..']]' end function line_routes(line) arr={} for n,x in pairs(stations) do if line_netto(x.station)==line then arr=station_list_once_given(arr,x.station,nil,nil,nil,x.segment,x.type,x.sep) end end return arr end function segment_routes(arr,segment) for n,x in pairs(routes_periods) do if x.segment==segment then if alt_ok(x) then arr_add(arr,x.route,x.period,howstops(x.how,x.dir,'x',x.period)) end end end return arr end function line(station,color) local rtn=line_netto(station) text=line_nowrap(rtn) if color then return '[['..rtn..'|<img style="color:'..color..'">'..text..'</img>]]' else return '[['..rtn..'|'..text..']]' end end function complex_lines(complex,color) list={} for n0,x0 in pairs(station_complexes) do if x0.article==complex and x0.section~='' then if alt_ok(x0) then for n,x in pairs(station_parts(x0.station)) do tmp=line(x,color) list[tmp]=tmp end end end end list0={} for n0,x0 in pairs(list) do table.insert(list0, x0) end table.sort(list0, function(a,b) return a<b end) return list0 end function next_station_list(station,north_param,acc,centered) arrarr={} for n0,x0 in pairs(station_parts(station)) do north=north_param csta=x0 for n,x in pairs(stations) do if x.station==csta then ctype=x.type cacc=x.acc if x.north_back then north=not north_param end end end for n00,x00 in pairs(subperiods) do for n,x in pairs(routes_periods) do cperiod=x00.period if x.period==cperiod then if alt_ok(x) then croute=x.route csegment=x.segment chow=x.how cdir=x.dir csubperiod=x00.subperiod if stops_ok(chow,cdir,ctype,cperiod,csubperiod) and acc_ok(north,cacc,acc) then for nsta,xsta in pairs(next_station(csta,croute,cperiod,csegment,chow,cdir,north,csubperiod,acc)) do sta=from_part(xsta) if arrarr[sta] then arr=arrarr[sta].arr else arr={} end arr_add(arr,x.route,x.period,x00.subperiod) arrarr[sta]={arr=arr,station=sta} end end end end end end for n,x in pairs(unused_connections) do if x.station==x0 and x.north~=north then for nn,xx in pairs(unused_connections) do if xx.station~=x0 and xx.connection==x.connection then if arrarr[xx.station]==nil then arr={} arr['']={route='',periods=''} arrarr[xx.station]={arr=arr,station=xx.station,small=true} end end end end end for n,x in pairs(unused_tracks) do if x.station==x0 then if north then i=x.index-1 else i=x.index+1 end for nn,xx in pairs(unused_tracks) do if xx.segment==x.segment and xx.index==i then if arrarr[xx.station]==nil then arr={} if x.closed then arr['']={route='-',periods=''} elseif xx.closed then arr['']={route='',periods=xx.closed} else arr['']={route='',periods=''} end arrarr[xx.station]={arr=arr,station=xx.station,small=true} end end end end end end arrarr0={} for n,x in pairs(arrarr) do table.insert(arrarr0, x) end table.sort(arrarr0, function(a,b) return (b.small and not a.small) or (a.small==b.small and a.station<b.station) end) rtn='' for n,x in pairs(arrarr0) do if rtn~='' then rtn=rtn..'<br>' end if x.small then rtn=rtn..'<small><i>' end rtn=rtn..netto(x.station,'link') if x.small then local page=mw.title.new(x.station) if not page.exists then for nn,xx in pairs(stations_former) do if xx.station==x.station then if xx.en then rtn=rtn..'<sup style="font-style:normal;">[[[:en:'..xx.en..'|en]]]</sup>' end end end end end arrtext=arr_text(x.arr,'full halftext') if arrtext~='' then if centered then rtn=rtn..'<br>('..arrtext..')' else rtn=rtn..indent..'('..arrtext..')' end end if x.small then rtn=rtn..'</i></small>' end end if rtn=='' then return '<small><i>(конечная)</i></small>' else return rtn end end function next_station(station,route,period,segment,how,dir,north,subperiod,acc) comment=howstops(how,dir,typ,period) if comment==nil then return {} end sta=station for n,x in pairs(stations) do if x.station==sta then index_this=n seg=x.segment typ=x.type if typ=='-' then return {} end end end if seg~=segment then return {} end rtn='' found=false for n,x in pairs(stations) do if x.segment==seg then if stops_ok(how,dir,x.type,period,subperiod) and acc_ok(north,x.acc,acc) then if north then if x.station==sta then break else rtn=x.station end else if x.station==sta then found=true elseif found then rtn=x.station break end end end end end return station_collection(rtn,route,period,seg,north,sta,subperiod,acc) end function get_next_segment(route,period,seg,north) newseg='' newhow='' newdir='' local list={} nodetype=nil node_n=nil node_s=nil for n,x in pairs(nodes) do if x.segment==seg then nodetype=x.nodetype node_n=x.node_n node_s=x.node_s end end if nodetype=='fork' and ((node_n~=nil and north) or (node_s~=nil and not north)) then for n,x in pairs(nodes) do if (x.node_s==node_n and north) or (x.node_n==node_s and not north) then for nn,xx in pairs(routes_periods) do if xx.segment==x.segment and xx.route==route and xx.period==period then if alt_ok(xx) then list[x.segment]={segment=x.segment,how=xx.how,dir=xx.dir,north=north} end end end end end return list end if nodetype=='uturn' and ((node_n~=nil and north) or (node_s~=nil and not north)) then for n,x in pairs(nodes) do if ((x.node_n==node_n and north) or (x.node_s==node_s and not north)) and x.segment~=seg then for nn,xx in pairs(routes_periods) do if xx.segment==x.segment and xx.route==route and xx.period==period then if alt_ok(xx) then list[x.segment]={segment=x.segment,how=xx.how,dir=xx.dir,north=not north} end end end end end --return list end found=false for n,x in pairs(routes_periods) do if x.route==route and x.period==period then if alt_ok(x) then if north then if x.segment==seg then if x.fork~='south' and newseg~='' then list[newseg]={segment=newseg,how=newhow,dir=newdir,north=north} end break else if x.fork=='north' then newseg='' newhow='' newdir='' else newseg=x.segment newhow=x.how newdir=x.dir end end else if x.segment==seg then if x.fork=='north' then break end found=true elseif found then if x.fork~='south' then list[x.segment]={segment=x.segment,how=x.how,dir=x.dir,north=north} end break end end end end end return list end function get_first_station(route,period,seg,how,dir,north,subperiod,acc) rtn='' for n,x in pairs(stations_all()) do if x.segment==seg then if stops_ok(how,dir,x.type,period,subperiod) and acc_ok(north,x.acc,acc) then rtn=x.station if not north then break end end end end return station_collection(rtn,route,period,seg,north,'',subperiod,acc) end function station_collection(rtn,route,period,seg,north,sta,subperiod,acc) local list={} if rtn~=sta and rtn~='' then list[rtn]=rtn else for n,x in pairs(get_next_segment(route,period,seg,north)) do for nn,xx in pairs(get_first_station(route,period,x.segment,x.how,x.dir,x.north,subperiod,acc)) do list[xx]=xx end end end return list end function complex_sum(complex) arr={} for n,x in pairs(station_complexes) do if x.article==complex and x.section~='' then if alt_ok(x) then for nn,xx in pairs(station_parts(x.station)) do arr=station_list_once(arr,xx) end end end end return arr end function station_connections(station) for n0,x0 in pairs(station_parts(station)) do for n,x in pairs(stations) do if x.station==x0 then if x.conn then return x.conn else return '' end end end end end function station_transfers(station,fmt,filter,frame,exclude,ast) local list complex='' rtn='' virt=false for n,x in pairs(station_complexes) do if x.station==station then if alt_ok(x) then complex=x.article if x.section=='' and x.future==nil then virt=true end end end end if complex=='' then return '' end for n,x in pairs(station_complexes) do if x.article==complex and x.station~=station then if alt_ok(x) then if x.station==exclude then excludefound=true else list=station_list_full(x.station,fmt,nil,nil,filter) if list=='' then list=icon_nostop end rtn=rtn..'|- style="height:20px;"\r\n' rtn=rtn..'|nowrap|'..list..'\r\n' rtn=rtn..'|nowrap| '..netto(x.station,'link') if (x.section=='' or virt) and x.future==nil then if x.periods then rtn=rtn..'<sup>'..icons[x.periods]('icon',8)..'</sup>' elseif ast then rtn=rtn..asterisk else rtn=rtn..frame:preprocess(metrocard) end end rtn=rtn..'\r\n' end end end end super='' for n,x in pairs(station_complexes) do if x.station==complex and x.periods~=nil then if alt_ok(x) then super=x.article end end end if super~='' then for n,x in pairs(station_complexes) do if x.article==super and x.station~=complex then if alt_ok(x) then for nn,xx in pairs(station_complexes) do if xx.article==x.station then list=station_list_full(xx.station,fmt,nil,nil,filter) rtn=rtn..'|- style="height:20px;"\r\n' rtn=rtn..'|nowrap|'..list..'\r\n' rtn=rtn..'|nowrap| '..netto(xx.station,'link') rtn=rtn..'<sup>'..icons[x.periods]('icon',8)..'</sup>' rtn=rtn..'\r\n' end end end end end end return rtn end function station_transfers_count(station,filter,exclude) local cou complex='' for n,x in pairs(station_complexes) do if x.station==station then if alt_ok(x) then complex=x.article end end end if complex=='' then return 0 end cou=0 for n,x in pairs(station_complexes) do if x.article==complex and x.station~=station and x.station~=exclude then if alt_ok(x) then cou=cou+1 end end end super='' for n,x in pairs(station_complexes) do if x.station==complex and x.periods~=nil then if alt_ok(x) then super=x.article end end end if super~='' then for n,x in pairs(station_complexes) do if x.article==super and x.station~=complex then if alt_ok(x) then for nn,xx in pairs(station_complexes) do if xx.article==x.station then cou=cou+1 end end end end end end return cou end function station_transfers_including(station,complex,fmt,route1,route2) arr={} if complex=='' then for nn,xx in pairs(station_parts(station)) do arr=station_list_once(arr,xx) end else for n,x in pairs(station_complexes) do if x.article==complex then if alt_ok(x) then for nn,xx in pairs(station_parts(x.station)) do arr=station_list_once(arr,xx) end end end end end return arr_text(arr,fmt,route1,route2) end function station_list_full(station,fmt,cond,route,filter,level) local arr={} if level or future_on then arr=station_list_once(arr,station,cond,route,filter) else for n,x in pairs(station_parts(station)) do arr=station_list_once(arr,x,cond,route,filter) end end if fmt=='count letters' or fmt=='count letters full' then return arr_text(arr,fmt,nil,nil,level) end local parts='' local term='' if fmt=='prose' then for n,x in pairs(multiline_stations) do if x.full==station then if x.text then arr_p={} arr_p=station_list_once(arr_p,x.part) arr_p=station_list_once(arr_p,x.part,nil,nil,'skip') if parts~='' then if x.detailed then parts=parts..', '..x.text..' '..arr_text(arr_p,'prose dash') else parts=parts..', '..x.text..' '..arr_text(arr_p,'prose dash short') end else if x.detailed then parts=parts..x.text..' '..arr_text(arr_p,'prose where') else parts=parts..x.text..' '..arr_text(arr_p,'prose where short') end end if x.after then parts=parts..' ('..x.after..')' end end end end for n,x in pairs(multiline_stations) do if x.full==station then if x.level then tmp='' if x.no_exp then tmp=station_list_full(x.part,'prose lcl',nil,nil,'lcl',x.level) else local subt='' for nn,xx in pairs(stations_all()) do if xx.station==x.part then subt=xx.subtype end end if subt=='bidi' then tmp=station_list_full(x.part,'prose exp 1',nil,nil,'exp',x.level) else tmp=station_list_full(x.part,'prose exp 2',nil,nil,'exp',x.level) end if tmp~='' and x.no_lcl==nil then tmp=tmp..'. '..station_list_full(x.part,'prose lcl',nil,nil,'lcl',x.level) end end if tmp~='' then parts=parts..'. '..tmp end end end end if parts~='' then parts='. '..parts end arrarr_n={} arrarr_s={} found_all_n=0 found_diff_n=0 found_all_s=0 found_diff_s=0 found_total=0 last_route_n='' last_route_s='' for n,x in pairs(arr) do fill_terminals(x.route,arrarr_n,arrarr_s,station,true) found_total=found_total+1 end if arrarr_n[station]~=nil or arrarr_s[station]~=nil then if arrarr_n[station] then arr_n=arrarr_n[station].arr else arr_n={} end if arrarr_s[station] then arr_s=arrarr_s[station].arr else arr_s={} end for n,x in pairs(arr) do periods_all=normalize(x.periods,false) if arr_n[x.route] then periods_n=normalize(arr_n[x.route].periods,false) last_route_n=x.route else periods_n='' end if arr_s[x.route] then periods_s=normalize(arr_s[x.route].periods,false) last_route_s=x.route else periods_s='' end if periods_n==periods_all then found_all_n=found_all_n+1 elseif periods_n~='' then found_diff_n=found_diff_n+1 end if periods_s==periods_all then found_all_s=found_all_s+1 elseif periods_s~='' then found_diff_s=found_diff_s+1 end end if found_all_n==0 and found_diff_n==0 and found_all_s==0 and found_diff_s==0 then term='' elseif found_all_n>0 and found_diff_n==0 and found_all_s==0 and found_diff_s==0 then term='. Станция является северной конечной ' if found_all_n~=found_total then term=term..arr_text(arr_n,'prose for short') elseif found_all_n==1 then term=term..'для него' elseif found_all_n==2 then term=term..'для обоих маршрутов' else term=term..'для всех маршрутов' end elseif found_all_n==0 and found_diff_n==0 and found_all_s>0 and found_diff_s==0 then term='. Станция является южной конечной ' if found_all_s~=found_total then term=term..arr_text(arr_s,'prose for short') elseif found_all_s==1 then term=term..'для него' elseif found_all_s==2 then term=term..'для обоих маршрутов' else term=term..'для всех маршрутов' end elseif found_all_n==0 and found_diff_n==1 and found_all_s==0 and found_diff_s==1 then if last_route_n~=last_route_s then term='. Станция является северной конечной для маршрута '..arr_text(arr_n,'full text')..' и южной конечной для маршрута '..arr_text(arr_s,'full text') elseif found_total==1 then term='. Станция является конечной для него: северной '..arr_text(arr_n,'when')..' и южной '..arr_text(arr_s,'when') else term='. Станция является конечной для маршрута '..arr_text(arr_s,'route')..': северной '..arr_text(arr_n,'when')..' и южной '..arr_text(arr_s,'when') end elseif found_all_s==0 and found_diff_s==0 then term='. Станция является северной конечной '..arr_text(arr_n,'prose for') elseif found_all_n==0 and found_diff_n==0 then term='. Станция является южной конечной '..arr_text(arr_s,'prose for') elseif found_diff_n==0 and found_diff_s==0 then term='. Станция является северной конечной '..arr_text(arr_n,'prose for short')..' и южной конечной '..arr_text(arr_s,'prose for short') else term='. Станция является северной конечной '..arr_text(arr_n,'prose for')..' и южной конечной '..arr_text(arr_s,'prose for') end end end return arr_text(arr,fmt,nil,nil,level)..parts..term end function station_list_once(arr,sta,cond,route,filter) for nn,xx in pairs(stations_all()) do if xx.station==sta then return station_list_once_given(arr,sta,cond,route,filter,xx.segment,xx.type,xx.sep) end end end function station_list_once_given(arr,sta,cond,route,filter,seg,typ,sep) comment0={} if cond=='ne' and sep=='yes' then for n,x in pairs(routes_periods) do if x.segment==seg and x.route==route then if alt_ok(x) then --filter не проверяем, разные фильтры с 'ne' вроде не используются comment0[x.period]=howstops(x.how,x.dir,typ,x.period) end end end end for n,x in pairs(routes_periods) do if x.segment==seg then if alt_ok(x) then if cond==nil then mustrun=true elseif cond=='eq' then mustrun=x.route==route elseif cond=='ne' then mustrun=x.route~=route else mustrun=false end if filter then if filter~='skip' and filter~='exp' and filter~='lcl' then if string.find('+'..filter..'+','+'..x.period..'+',1,true)==nil and string.find('+'..filter..'+','+'..x.period..'(1)+',1,true)==nil and string.find('+'..filter..'+','+'..x.period..'(2)+',1,true)==nil then mustrun=false end end end if mustrun then if typ=='-' then arr_add(arr,x.route,'-','') else if filter=='exp' then comment=howskips(x.how,x.dir,'o',x.period) --попадаем сюда только если typ=='x' elseif filter=='lcl' then comment=howstops(x.how,x.dir,'o',x.period) --попадаем сюда только если typ=='x' elseif filter=='skip' then comment=howskips(x.how,x.dir,typ,x.period) else comment=howstops(x.how,x.dir,typ,x.period) end if comment then if not(cond=='ne' and sep=='yes' and ( ((comment=='peak' or comment=='some peak') and comment0[x.period]=='not peak') or ((comment0[x.period]=='peak' or comment0[x.period]=='some peak') and comment=='not peak') )) then if comment0[x.period]=='1' or comment0[x.period]=='2' then comment=comment0[x.period] elseif filter then if string.find('+'..filter..'+','+'..x.period..'(1)+',1,true) then comment='1' elseif string.find('+'..filter..'+','+'..x.period..'(2)+',1,true) then comment='2' end end arr_add(arr,x.route,x.period,comment) end end end end end end end return arr end function howstops(how,dir,typ,period,track) -- typ относится к станции, остальное к расписанию if period=='also' then return nil end if how==typ or how==nil or typ=='x' then if dir=='peakonly' or (dir=='peak' and track=='x') then return 'peak' elseif dir=='peak+' then return 'some peak' elseif dir=='notpeakonly' or (dir=='peak' and track=='o') then return 'not peak' elseif dir=='1' or dir=='2' then return dir else return '' end elseif dir=='peak' then return 'not peak' else return nil end end function howstops2pic(param,period) if param==nil then return icon_nostop elseif param=='peak' then return markpeak elseif param=='some peak' then return asterisk elseif param=='not peak' then return markback elseif param=='1' or param=='2' then return ' '..subperiod1(period,param) else return markyes end end function howskips(how,dir,typ,period) -- typ относится к станции, остальное к расписанию if period=='also' then return nil end if how~=typ and typ~=nil and typ~='x' and how~=nil then if dir=='peakonly' or dir=='peak' then return 'peak' elseif dir=='peak+' then return 'some peak' elseif dir=='notpeakonly' then return 'not peak' elseif dir=='1' or dir=='2' then return dir else return '' end else return nil end end function stops_ok(how,dir,type,period,subperiod) comment=howstops(how,dir,type,period) return comment==subperiod or comment=='' or (comment=='peak' and subperiod=='some peak') end function acc_ok(north,acc_station,acc_request) if not acc_request then return true else return acc_station=='yes' or (acc_station=='n' and north) or (acc_station=='s' and not north) end end function acc_cell(cacc) if cacc=='yes' then return accicon elseif cacc=='n' then return '<img class="nowrap">'..accicon..'<img title="В северном направлении">↑</img></img>' elseif cacc=='s' then return '<img class="nowrap">'..accicon..'<img title="В южном направлении">↓</img></img>' else return '' end end function subperiod_ok(subperiod,dir) if dir=='peak' or dir==nil then return true elseif subperiod=='peak' then return dir=='peakonly' elseif subperiod=='not peak' then return dir=='notpeakonly' elseif subperiod=='some peak' then return dir=='peakonly' or dir=='peak+' else return not ((dir=='1' or dir=='2') and subperiod=='') end end function arr_add(arr,route,period,comment) if comment==nil then return end if comment~='' then period=period..'('..comment..')' end r='' if routes[route] then r=route end if arr[r]==nil then arr[r]={route=r,periods=period} elseif string.find('+'..arr[r].periods..'+','+'..period..'+',1,true)==nil then arr[r].periods=arr[r].periods..'+'..period end --return arr end function normalize(param,forfilter) if param==nil then return '' elseif param=='-' then return '-' end a='+'..param..'+' b='' for nn,xx in pairs({'rh','md','ev','we','ln'}) do if string.find(a,'+'..xx..'+',1,true)~=nil or (string.find(a,'+'..xx..'(peak)+',1,true)~=nil and string.find(a,'+'..xx..'(not peak)+',1,true)~=nil) or (string.find(a,'+'..xx..'(1)+',1,true)~=nil and string.find(a,'+'..xx..'(2)+',1,true)~=nil) then b=b..'+'..xx elseif forfilter then if string.find(a,'+'..xx..'(1)',1,true) then b=b..'+'..xx..'(1)' elseif string.find(a,'+'..xx..'(2)',1,true) then b=b..'+'..xx..'(2)' elseif string.find(a,'+'..xx..'(',1,true) then b=b..'+'..xx end else if string.find(a,'+'..xx..'(peak)+',1,true) then b=b..'+'..xx..'(peak)' elseif string.find(a,'+'..xx..'(some peak)+',1,true) then b=b..'+'..xx..'(some peak)' end if string.find(a,'+'..xx..'(not peak)+',1,true) then b=b..'+'..xx..'(not peak)' end if string.find(a,'+'..xx..'(1)+',1,true) then b=b..'+'..xx..'(1)' end if string.find(a,'+'..xx..'(2)+',1,true) then b=b..'+'..xx..'(2)' end end end return string.sub(b,2,string.len(b)) end function arr_text(arr,fmt,exclude1,exclude2,level) if arr==nil then if fmt=='all alltimes' then return true elseif fmt=='count letters' or fmt=='count letters full' then return 0 else return '' end end if string.sub(fmt,1,5)=='prose' then cou=arr_text(arr,'count letters full') end if level then level=level..' ' else level='' end sum='' num=0 all_alltimes=true alltimesfound=false for nn,xx in pairs(routes_sorted()) do if xx.id~=exclude1 and xx.id~=exclude2 then for n,x in pairs(arr) do if x.route==xx.id then label=xx.label link=xx.link name=xx.name periods=normalize(x.periods,fmt=='periods') x0=icons[periods] if x0==nil then x0=icon_fun({icon='',tooltip='нет индикатора: '..periods}) if fmt=='check' then sum='missing description: '..periods elseif fmt=='one period' or fmt=='color' then sum='' else sum=noperiods end end title=x0.tooltip comma=x0.comma ignore=x0.ignore if x0.alltimes then alltimesfound=true else all_alltimes=false end if not (ignore and (fmt=='count letters' or fmt=='letters' or fmt=='bullets' or fmt=='large bullets')) then num=num+1 end if periods=='-' and string.sub(fmt,1,5)=='prose' then title=nil end if fmt=='full small' then sum=sum..together(xx,x0,4) elseif fmt=='full' then sum=sum..together(xx,x0,5) elseif fmt=='full halftext' then if sum~='' then sum=sum..' ' end sum=sum..'[['..link..'|'..name..']]<sup>'..x0('icon',8,title)..'</sup>' elseif fmt=='full text' then if sum~='' then sum=sum..', ' end sum=sum..xx('bold')..' ('..title..')' elseif fmt=='when' then if sum~='' then sum=sum..'/' end sum=sum..title elseif fmt=='prose' then if periods=='-' then elseif level~='' then sum=prose(cou,num,sum,false,xx,title,comma,'На станции '..level,'останавливается маршрут','останавливаются маршруты') else sum=prose(cou,num,sum,false,xx,title,comma,'На станции','останавливается маршрут','останавливаются маршруты') end elseif fmt=='prose skip' then sum=prose(cou,num,sum,false,xx,title,comma,'Станцию','проходит без остановки маршрут','проходят без остановки маршруты') elseif fmt=='prose skip split' then sum=prose(cou,num,sum,false,xx,title,comma,'Экспресс-пути, обходящие станцию стороной по спрямлённой трассе, используются','маршрутом','маршрутами') elseif fmt=='prose skip under' then sum=prose(cou,num,sum,false,xx,title,comma,'Экспресс-пути, проходящие под станцией, используются','маршрутом','маршрутами') elseif fmt=='prose tt' then sum=prose(cou,num,sum,false,xx,title,comma,'Оборотный путь '..level..'используется','маршрутом','маршрутами') elseif fmt=='prose exp 1' then sum=prose(cou,num,sum,false,xx,title,comma,'Экспресс-путь '..level..'используется','маршрутом','маршрутами') elseif fmt=='prose exp 2' then sum=prose(cou,num,sum,false,xx,title,comma,'Экспресс-пути '..level..'используются','маршрутом','маршрутами') elseif fmt=='prose lcl' then sum=prose(cou,num,sum,false,xx,title,comma,'Локальные пути '..level..'используются','маршрутом','маршрутами') elseif fmt=='prose semishort' then sum=prose(cou,num,sum,false,xx,title,comma,'','маршрут','маршруты',true) elseif fmt=='prose short' then -- ignore does not affect this option sum=prose(cou,num,sum,false,xx,nil,comma,'','маршрут','маршруты') elseif fmt=='prose semishort plain' then sum=prose(cou,num,sum,true,xx,title,comma,'','маршрут','маршруты',true) elseif fmt=='prose short plain' then -- ignore does not affect this option sum=prose(cou,num,sum,true,xx,nil,comma,'','маршрут','маршруты') elseif fmt=='prose for' then sum=prose(cou,num,sum,false,xx,title,comma,'для','маршрута','маршрутов') elseif fmt=='prose for short' then -- ignore does not affect this option sum=prose(cou,num,sum,false,xx,nil,comma,'для','маршрута','маршрутов') elseif fmt=='prose where' then sum=prose(cou,num,sum,false,xx,title,comma,'','проходят поезда маршрута','проходят поезда маршрутов') elseif fmt=='prose where short' then -- ignore does not affect this option sum=prose(cou,num,sum,false,xx,nil,comma,'','проходят поезда маршрута','проходят поезда маршрутов') elseif fmt=='prose dash' then sum=prose(cou,num,sum,false,xx,title,comma,'','— маршрута','— маршрутов') elseif fmt=='prose dash short' then -- ignore does not affect this option sum=prose(cou,num,sum,false,xx,nil,comma,'','— маршрута','— маршрутов') elseif fmt=='prose by' then sum=prose(cou,num,sum,false,xx,title,comma,'','маршрутом','маршрутами') elseif fmt=='prose by short' then -- ignore does not affect this option sum=prose(cou,num,sum,false,xx,nil,comma,'','маршрутом','маршрутами') elseif fmt=='prose complex' then if sum=='' then sum='На станциях пересадочного узла останавливаются маршруты:' else sum=sum..',' end sum=sum..'\r\n* '..xx('bold')..' ('..title..')' elseif fmt=='letters' and not ignore then if sum~='' then sum=sum..', ' end letter=xx.tooltip pos=string.find(letter,' ',1,true) if pos then sum=sum..string.sub(letter,1,pos-1) else sum=sum..letter end elseif fmt=='check' then if sum~='' then sum=sum..'+' end sum=sum..xx.id elseif fmt=='bkg' and not ignore then if sum=='' then sum=xx.bkg elseif sum==xx.bkg then else sum='FFFFFF' end elseif fmt=='color' and not ignore then if sum=='' then sum=xx.color elseif sum==xx.color then else sum='000000' end elseif (fmt=='bullets' and not ignore) or fmt=='bullets all' then sum=sum..xx('bullet',20) elseif fmt=='large bullets' and not ignore then sum=sum..xx('bullet',50) elseif fmt=='one period' then sum=sum..xx('bullet',20) pos=string.find(x.periods,'(',1,true) if pos then sum=sum..howstops2pic(string.sub(x.periods,pos+1,string.len(x.periods)-1),string.sub(x.periods,1,pos-1)) end elseif fmt=='icons' then sum=sum..x0('icon',10,title) elseif fmt=='small icons' then sum=sum..x0('icon',8,title) elseif fmt=='route' then sum=sum..xx('bold') elseif fmt=='periods' then sum=sum..periods elseif fmt=='SL V' and not ignore then sum=sum..'<br><div style="padding:0;margin:0;width:0;left:-2px;">' sum=sum..'<div style="position:static;display:inline-block;margin-left:-2px;height:10px;">' sum=sum..xx('bullet',11)..'</div></div><br>' elseif fmt=='SL H' and not ignore then sum=sum..'<img style="padding:0;margin:0;vertical-align:middle;">' sum=sum..'<img style="display:inline-block;margin-left:-2px;margin-right:-2px;line-height:0;padding:0;margin-top:-2px;height:0;">' sum=sum..xx('bullet',11)..'</img></img>' elseif fmt=='colors' and not ignore then if string.find(sum,'|#'..xx.color,1,true)==nil then sum=sum..'|#'..xx.color end end end end end end if sum=='' then for n,x in pairs(arr) do if x.route=='' then if x.periods=='' then sum='нет сообщения' else sum=x.periods end end end --elseif fmt=='prose' and cou>1 and not alltimesfound then -- sum=sum..'. Станция работает круглосуточно, хотя обслуживается разными маршрутами в разное время' end if fmt=='all alltimes' then return all_alltimes elseif fmt=='count letters' or fmt=='count letters full' then return num else sum=string.gsub(sum,'%) %(',', ') return sum end end function prose(cou,num,sum,nolink,xx,title,comma,text0,text1,text2,semishort) if text0=='' then prefix='' else prefix=text0..' ' end if cou==1 then tmp=prefix..text1..' ' elseif cou==2 then if sum=='' then tmp=prefix..text2..' ' else if lastcomma and semishort then tmp=sum..', и ' else tmp=sum..' и ' end end else if sum=='' then if title then tmp=prefix..text2..': ' else tmp=prefix..text2..' ' end elseif num==cou then if lastcomma and semishort then tmp=sum..', и ' else tmp=sum..' и ' end else tmp=sum..', ' end end if nolink then tmp=tmp..xx.tooltip else tmp=tmp..xx('bold') end lastcomma=comma if title then if semishort then return tmp..' '..title else return tmp..' ('..title..')' end else return tmp end end function together(xx,x0,size) local tt=xx.tooltip..' — '..x0.tooltip local rtn='<img class="nowrap">'..xx('bullet',size*5,tt) rtn=rtn..'<img style="position:relative;display:inline-block;margin-left:-'..(size*2)..'px;z-index:1;top:-'..size..'px;">' rtn=rtn..x0('icon',size*2,tt,xx.link)..'</img></img>' return rtn end function station_parts(station) local list={} found=false for n,x in pairs(multiline_stations) do if x.full==station then list[x.part]=x.part found=true end end if not found then list[station]=station end return list end function from_part(sta,empty_if_no) for n,x in pairs(multiline_stations) do if x.part==sta then return x.full end end if empty_if_no then return '' else return sta end end function to_complex(sta,empty_if_no) for n,x in pairs(station_complexes) do if x.station==sta and x.section~='' then if alt_ok(x) then return x.article end end end if empty_if_no then return '' else return sta end end function to_complex_sec(sta) for n,x in pairs(station_complexes) do if x.station==sta and x.section~='' then if alt_ok(x) then return '#'..x.section end end end return '' end function routes_sorted() local list0={} for n0,x0 in pairs(routes) do if x0.future==nil or future_on then table.insert(list0, x0) end end table.sort(list0, function(a,b) return a.label<b.label end) return list0 end function stations_all() if not future_on then return stations end local stations0={} for n0,x0 in pairs(stations) do table.insert(stations0, x0) end for n0,x0 in pairs(stations_future) do x=x0 x.future=true table.insert(stations0, x) end return stations0 end function ita1(future,icon_fu,icon_fo,fo_saved) if future then if icon_fu then return constricon..'<i>' elseif icon_fo then if fo_saved then return closedicon..' <i>' else return demolicon..' <i>' end else return '<i>' end else return '' end end function ita2(future) if future then return '</i>' else return '' end end function tolower(s) if string.sub(s,1,2)=="Л" then return "л"..string.sub(s,3,string.len(s)) elseif string.sub(s,1,2)=="Ч" then return "ч"..string.sub(s,3,string.len(s)) else return s end end function toupper(s) if string.sub(s,1,2)=="л" then return "Л"..string.sub(s,3,string.len(s)) elseif string.sub(s,1,2)=="ч" then return "Ч"..string.sub(s,3,string.len(s)) else return s end end function stub_spur(code,text,border) local right ='|[[Файл:U+2192.svg|20px|link=]]\r\n' local left ='|[[Файл:U+2190.svg|20px|link=]]\r\n' local s='|- style="'..grayback if border then s=s..bor('left')..bor('right')..'"\r\n' else s=s..'"\r\n' end s=s..'|colimg=5 align=center|<i>'..text..'</i>\r\n' s=s..'|colimg=2|\r\n' s=s..tab..' align=left style="line-height:0;"\r\n' s=s..'|-\r\n|\r\n' s=s..tab..' align=center style="line-height:0;"\r\n' if code=='+w' then s=s..'| \r\n'..onearrow..'|-\r\n'..right..onefile('S-NW')..'|-\r\n| \r\n'..onearrow elseif code=='+e' then s=s..onearrow..'| \r\n|-\r\n'..onefile('S-NE')..left..'|-\r\n'..onearrow..'| \r\n' elseif code=='-e' then s=s..onearrow..'| \r\n|-\r\n'..onefile('N-SE')..right..'|-\r\n'..onearrow..'| \r\n' elseif code=='-w' then s=s..'| \r\n'..onearrow..'|-\r\n'..left..onefile('N-SW')..'|-\r\n| \r\n'..onearrow elseif code=='nw' then s=s..onefile('O')..onearrow..'|-\r\n'..onefile('NE')..onefile('S-NW')..'|-\r\n| \r\n'..onearrow elseif code=='ne' then s=s..onearrow..onefile('O')..'|-\r\n'..onefile('S-NE')..onefile('NW')..'|-\r\n'..onearrow..'| \r\n' elseif code=='sw' then s=s..'| \r\n'..onearrow..'|-\r\n'..onefile('SE')..onefile('N-SW')..'|-\r\n'..onefile('O')..onearrow elseif code=='se' then s=s..onearrow..'| \r\n|-\r\n'..onefile('N-SE')..onefile('SW')..'|-\r\n'..onearrow..onefile('O') end s=s..'|}\r\n|}\r\n' return s end function onefile(what) return '|align=center style="width:0;background-color:black;"|[[Файл:SMicon '..what..' lightgrey.svg|20px|link=]]\r\n' end function bor(where) return 'border-'..where..':2px solid black;' end function bor0(where) return 'border-'..where..':0px none transparent;' end -- return p -- =p.station_full{args={'57-я улица (линия Шестой авеню, Ай-эн-ди)'}}