Комментарии 87
Но по метро уже есть 3d схема, которую можно повертеть:схема метро
Единицы измерения в этом пространстве — часы. Расстояние между любой парой станций по прямой равно времени, которое нужно затратить на поездку с учётом пересадок (в часах)
Ну а пользоваться как? Куда вбить два названия станций, и увидеть время и маршрут? Или вбить одно название и время, и увидеть, куда можно за это время доехать? Подозреваемый Х сел в метро на станции С, где он может выйти через 10 минут?
А по названию статьи я подумал, что вы глубину залегания станций на схеме отразили, в центре должно было бы интересное макраме визуализироваться…
Тогда к чему вопрос? Как не может у человека быть двух Родин, так не может быть и двух родных языков.
б) научитесь понимать юмор и сарказм. Сложно, но у вас получится
научитесь понимать юмор и сарказмсказал человек, не распознавший сарказм
Автрры тупых шуток любят говорить "учись понимать юмор". Учиться делать вид, что смешна каждая тупизна — вредно.
Я бы сказал, что родной язык автора математика, что встречается реже, чем Питон.
P.S. За красивое и приятное оформление кода автору респект. Это важнее, чем использование всех возможностей языка
Можно ли скачать граф с названием станций в каком-то общедоступным в формате чтобы покрутить на досуге? Те, что в статье крутятся так быстро, ничего не понятно
names = json.loads(codecs.open( "l10n.json", "r", "utf_8_sig" ).read() )
graph = json.loads(codecs.open( "data.json", "r", "utf_8_sig" ).read() )
G=nx.Graph()
for node in graph['nodes']['items']:
G.add_node(node['id'])
#graph['links']
for link in graph['links']['items']:
#G.add_edges_from([(link['fromNodeId'],link['toNodeId'])])
G.add_edge(link['fromNodeId'], link['toNodeId'], length=link['attributes']['time'])
nodestoremove=[]
for node in G.nodes():
if len(G.edges(node))<2:
nodestoremove.append(node)
for node in nodestoremove:
G.remove_node(node)
labels={}
for node in G.nodes():
try:
labels[node]=names['keysets']['generated'][nodeStdict[node]+'-name']['ru']
except: labels[node]='error'
G = nx.relabel_nodes(G, labels)
nx.write_gml(G, "path_where_graph_should_be_saved.gml")
Файлы с JSON из приложения должны находиться в той же папке что и код. В результате генерируется граф в формате gml с названиями, связями и временами в пути.
Ссылка на схему на javascript в шапке, дублирую тут https://alexankharin.github.io/
Здесь можно и самому схему покрутить
Кстати, для полного обоснования утверждения вроде «На севере москвы, судя по плану, происходит частичное дублирование Серой и салатовой ветками — они находятся рядом в пространстве времен путешествий» в схему все же надо вводить еще одну точку — многоэтажку, где живет пользователь, тогда все встает на свои места.
Расстояние между точками — время поездки именно на метро, без другого транспорта?
Тогда две близкие на земле линии будут настолько удалены на схеме, как далеко пересадка между ними.
Круто, спасибо за вашу работу. Впечатляет длина чёрных линий. Я предполагал, что переход занимает много времени, но чтобы настолько...
Спасибо за формулу.
ЗЫ извините за занудство, просто когда-то развлекался гонками на метро.
Странно, откуда у вас получился такой разброс? По моим измерениям, которые я проводил в течение 10 лет, стандартное расстояние между 2 станциями составляет 2 мин 30 сек, включая простой поезда на самой станции. Т. е. последний перегон может быть чуть короче, за счет того, что выходишь из поезда, и время его остановки уже не нужно учитывать.
На западе голубой ветки не наблюдаю никаких аномалий. Разве что среднее время перегона чуть меньше моей оценки в 2,5 минуты.
Точность этой схемы слишком низкая. На ней шкала измерений 1 минута. Если верить этой же схеме, то для перегона Чистые пруды — Лубянка относительная погрешность составляет 100%.
Впрочем, на больших расстояниях эта схема подтверждает мои данные.
Серпуховская — Бульвар Дмитрия Донского: средняя длина перегона 2 мин 27 сек
Октябрьская — Битцевский парк: 2 мин 33 сек
Парк Культуры — Юго-Западная: ровно 2 мин 30 сек
Как я уже написал, в 2,5 минуты на перегон входит также пребывание поезда на станции. Если перегон занимает 2 минуты, то поезд будет стоять на станциях 30 секунд. Причем этот интервал может быть заполнен ожиданием с разных концов перегона и может зависеть от направления движения. Скажем, при движении от Лубянки к Чистым прудам, поезд задержится на Чистых прудах, а в обратную сторону — на Лубянке.
На юге зеленой ветки это правило, очевидно, не соблюдается. Подозреваю, что есть некий фиксированный интервал, который используют для составления расписаний, и время в пути вместе с временем остановки кратно этому интервалу. Например, перегон Спортивная-Университет всегда был точно равен двум стандартным перегонам. Когда между ними появилась станция Воробьевы горы, общее время в пути на красной линии не изменилось. Думаю, на зеленой ветке из-за промзоны и Москва-реки перегоны сделаны с несколькими пропусками станций, но с тем же шагом.
Интервал 1,40 (100 сек, видимо), это, скорее всего, между поездами. Он должен еще в течение суток изменяться.
Если "баран" задержал отправление, то поезд будет ехать чуть быстрее и тормозить чуть резче. Я же наблюдал неоднократно другую картину, как раз на центральных станциях, где перегоны очень короткие. Никто двери не держит, а поезд стоит те самые 25 секунд, или подъезжает к станции медленно как улитка, или просто в тоннеле стоит. И в итоге всегда среднее время в пути составляло 2,5 мин на перегон везде, где я ездил.
А я то было подумал, что тут будет схема, как линии метро в пространстве под землёй расположены.
Этот граф очень удачный для своей цели — показать расстояние в часах между двумя любыми разными точками. Он никак не связан с географическим графом расположения станций, он совсем для другого.
Интересно было бы узнать, насколько в среднем мцк ускоряет время поездки. А то езжу по всей Москве, а как маршрут строю — все время яндекс.метро предлагает через центр ехать, а не по мцк
МЦК — имеет свою специфику. В отличие от обычного метро, там можно возить велосипеды, не разбирая. Некоторые станции находятся там, где вообще никакого транспорта больше нет, скажем, какая-нибудь Белокаменная или Зорге. Поэтому оно не просто выгодно, но и иногда просто незаменимо.
Конечно-конечно. Всего 2,5 километра пешком по автодороге до станции Яуза. И всего 700 метров до остановки автобуса, который аж 3 раза в час иногда появляется. И доехать на этом автобусе можно только до другой станции МЦК Бульвар Рокоссовского. Да и Яуза не станция, а платформа, где далеко не все электрички останавливаются, и до кассы через мост идти надо, а потом назад. Если рассматривать всерьез пересадку с Белокаменной, то нужно закладывать минимум час. Лучше до Ростокино доехать и там на нормальную станцию Северянин перейти.
Станция Белокаменная находится в центре лесного массива, в стороне даже от тропинок, где гуляют отдыхающие. Один из выходов расположен просто в лесу между заброшенными жд-колеями, другой — в тупике яузской аллеи, куда автобусы не заходят, потому что там нет места для разворота. И вот для того чтобы в эту глушь забраться, эта станция очень даже подойдет.
А так-то да, в Москве в любой точке в радиусе 3 км можно найти что угодно.
Но всё равно воспринималось издевательством, когда в электричке объявляли «Платформа Яуза, пересадка на станцию МЦК Ростокино», до которой 1.9 км дворами. Сейчас, к счастью, перестали.
Ну тогда вы согласитесь, что эти 1.5-2 км не приспособлены для пешеходов. Это автодорога без тротуара и без нормальной обочины. Если вам нужно метро, тогда лучше выйти на Рокоссовского, если электричка, то в Ростокино. Вы, наверное, на велосипеде там катаетесь, как и я. Для велосипедистов Белокаменная очень хорошо подходит.
С учётом очень "удобных" пересадок с него на половину линий метро, им целесообразно пользоваться если:
- Начало или конец маршрута находится вблизи станции мцк
- Начало и конец маршрута находятся вблизи северных концов линий метро. Но при этом не соседних. Например: Речной Вокзал — Медведково — есть смысл. Алтуфьево — Медведково — быстрее будет на автобусе.
На юге выгоды не будет. - Если хочется ехать в чуть меньшей давке, чем под землёй, даже с учётом небольшой потери времени.
- Для жителей области: если на вашем направлении жд уже построили удобную пересадку и ехать надо на другой конец города, но не строго противоположный. Например, с Рижского направления на Юго-Западную или с Савёловского в Измайлово. И то, во многих случаях тут больше работает п.3
Лет 20 назад была бесплатная программа под винду (кажется, называлась pMetro). Там была очень крутая 3д схема метро, и всё можно было вращать и масштабировать. Но главная фишка — это то, что все станции были тоже 3д, со всеми эскалаторами, переходами и выходами с обозначением улиц.
Хотя некоторые утверждают что оно выглядело бы примерно так:
вы дергали инфу из приложения, хотя все те же данные есть на офиц. сайте в одном из файлов: mosmetro.ru bitrix/templates/sh1/app.js
(По идее, можно, наверно, опрашивать Яндекс.Карты на эту тему)
Как уж тут не вспомнить «Лист Мёбиуса»
В случае Евклидовых расстояний высокая размерность не поможет точно вложить схему. Например, в метро всего 4 станции, одна соединена со всеми остальными, остальные друг с другом не соединены (звезда). При этом время на путешествие между центральной станцией и граничной равно 1. Тогда время пути между тремя граничными станциями равно 2 (время на пересадку пока игнорируем), и при вложении схемы в евклидово пространство они образуют треугольник со стороной 2. Никакая дополнительная размерность не поможет поставить четвёртую станцию так, что расстояние между ней и остальными будет равно 1.
Пространства, в которые можно вложить любое конечное пространство существуют, например, https://en.m.wikipedia.org/wiki/L-infinity, и там ограничение на размерность совпадает с вашей интуицией
nagix.github.io/mini-tokyo-3d
Очевидно, что в двумерном пространстве невозможно нарисовать такую схему, в которой расстояние между двумя станциями равнялось бы времени путешествия от одной к другой из-за сложной топологии графа метро.
Совершенно не очевидно.
К сожалению не могу проверить это в Питоне, но если кто захочет заимплементить — с удовольствием гляну/подскажу
Для некоторых веток, например зеленой, синей или фиолетовой МЦК (розовое кольцо) практически бесполезно из-за неудобных пересадок, что видно в удалении кольца от этих веток.
Что бесполезно?
Как выглядело бы Московское метро в трехмерном мире