Программа для создания карт метро MetroMapEditor
-
- Сообщения: 1721
- Зарегистрирован: 20 сен 2012, 21:39
- Станция метро: Приморская
Программа для создания карт метро MetroMapEditor
Всем привет!
Сделал небольшую программку для создания сколь угодно сложных карт метро и фэнтезимапов в несколько кликов мыши.
Программа создана на основе открытого проекта OpenStreetMap (и в частности исходных кодов демонстрационного проекта OSMCtrlApp), использует в качестве подложки карты OpenStreetMap и поэтому требует подключения к интернету для подгрузки тайлов.
Возможности:
Создание неограниченного количества линий, как линейных так и кольцевых
Сохранение и загрузка схем метро в файле
Динамическое масштабирование (колесом мыши или кнопками масштаба)
Макимальное количество станций в линии 200, максимальное количество линий, пересекающихся в одной станции 12 (просто для оптимизации, вряд ли в где-то мире есть пересадка на 12 линий сразу)
Все линии рисуются красивыми сплайнами
Создание новых линий одним кликом мыши, создание станций кликом мыши, перемещение станций мышью, управление режимами мыши через контекстное меню по правой кнопке
Автоматическое создание пересадок при добавлении станции в позицию уже существующей
Все метро представлено в древовидном окне сбоку, там тоже есть контекстное меню, позвляющее переименовывать и удалять станции и линии, назначать станциям каждой линии цвет, группировать и разгруппировывать пересадки, включать и отключать закольцованность линии
В общем-то и все. Запускаться вроде бы должна на любой Windows, ничего особо не требует кроме GDI+, который сейчас есть везде. В качестве бонуса в архиве - карта существующего метро, которую можно загрузить, посмотреть и использовать как основу для создания других карт. Если будет возможность, буду развивать ее, сделаю экспорт в png в произвольном масштабе, настройки шрифтов и цветов, улучшения интерфейса и т.п.
P.S. Почаще сохраняйте промежуточные результаты, у меня программа один раз вылетела в странном месте при попытке изменить цвет станций линии, причину так и не нашел...
Сделал небольшую программку для создания сколь угодно сложных карт метро и фэнтезимапов в несколько кликов мыши.
Программа создана на основе открытого проекта OpenStreetMap (и в частности исходных кодов демонстрационного проекта OSMCtrlApp), использует в качестве подложки карты OpenStreetMap и поэтому требует подключения к интернету для подгрузки тайлов.
Возможности:
Создание неограниченного количества линий, как линейных так и кольцевых
Сохранение и загрузка схем метро в файле
Динамическое масштабирование (колесом мыши или кнопками масштаба)
Макимальное количество станций в линии 200, максимальное количество линий, пересекающихся в одной станции 12 (просто для оптимизации, вряд ли в где-то мире есть пересадка на 12 линий сразу)
Все линии рисуются красивыми сплайнами
Создание новых линий одним кликом мыши, создание станций кликом мыши, перемещение станций мышью, управление режимами мыши через контекстное меню по правой кнопке
Автоматическое создание пересадок при добавлении станции в позицию уже существующей
Все метро представлено в древовидном окне сбоку, там тоже есть контекстное меню, позвляющее переименовывать и удалять станции и линии, назначать станциям каждой линии цвет, группировать и разгруппировывать пересадки, включать и отключать закольцованность линии
В общем-то и все. Запускаться вроде бы должна на любой Windows, ничего особо не требует кроме GDI+, который сейчас есть везде. В качестве бонуса в архиве - карта существующего метро, которую можно загрузить, посмотреть и использовать как основу для создания других карт. Если будет возможность, буду развивать ее, сделаю экспорт в png в произвольном масштабе, настройки шрифтов и цветов, улучшения интерфейса и т.п.
P.S. Почаще сохраняйте промежуточные результаты, у меня программа один раз вылетела в странном месте при попытке изменить цвет станций линии, причину так и не нашел...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Константин Филиппов
- Сообщения: 4903
- Зарегистрирован: 06 окт 2004, 11:02
- Станция метро: Озерки
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Программа для создания карт метро MetroMapEditor
Не стоит забывать про сложные ситуации вроде вилок, петель, прокладки нескольких линий в одном тоннеле, и пересадки с линии на саму себя (даже такое встречается, например в Лондоне разорвали и продлили Сёркл-лайн, в результате линия стала напоминать цифру 6 [отзеркаленную и положенную набок] с пересадкой в стыке, при этом несколько линий в одном тоннеле тоже имеются). За границей вообще много тяжёлых случаев, советую погуглить.
Судя по скриншоту цвета линий у вас везде одинаковые, лучше, чтобы была возможность их задавать в зависимости от цвета на официальной схеме.
Ну и совсем высший пилотаж будет, если все выходы будут точно там где они есть в реальности, особенно на пересадочных узлах. А также была бы интересна возможность из базовых элементов собрать схему станции (пересадочного узла).
Запустил программу и обнаружил один косяк — невозможно менять расположение станций на линии, хотел добавить «Театральную», а она упорно вставляется после «Улицы Дыбенко» и нет возможности перенести её в положение перед «Спасской». Даже если такая возможность и есть, она не очевидна (по хорошему нужно менять последовательность станций на линии таская их по списку станций слева). Переведите программы на русский (или сделайте дополнительно русскую версию).
А это что за фигня: почему не подписано?
И самое главное добавьте UNDO.
Судя по скриншоту цвета линий у вас везде одинаковые, лучше, чтобы была возможность их задавать в зависимости от цвета на официальной схеме.
Ну и совсем высший пилотаж будет, если все выходы будут точно там где они есть в реальности, особенно на пересадочных узлах. А также была бы интересна возможность из базовых элементов собрать схему станции (пересадочного узла).
Запустил программу и обнаружил один косяк — невозможно менять расположение станций на линии, хотел добавить «Театральную», а она упорно вставляется после «Улицы Дыбенко» и нет возможности перенести её в положение перед «Спасской». Даже если такая возможность и есть, она не очевидна (по хорошему нужно менять последовательность станций на линии таская их по списку станций слева). Переведите программы на русский (или сделайте дополнительно русскую версию).
А это что за фигня: почему не подписано?
И самое главное добавьте UNDO.

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ꙁа Россию!!!
-
- Сообщения: 1721
- Зарегистрирован: 20 сен 2012, 21:39
- Станция метро: Приморская
Re: Программа для создания карт метро MetroMapEditor
Косяки там конечно есть, через недельку исправлю. Вставлять станции можно в любое место линии, после выделенной станции или перед ней, как раз эти кнопочки и управляют как вставлять - после станции или перед ней. Для этого нужно выбрать линию (сделать ее активной).
С Театральной тем ни менее косяк в том, что там пересадка, а при выделении пересадки мышью выделяется какая-то одна станция этой пересадки (первая попавшаяся), а надо чтобы выделялась та, которая находится на "активной" линии. Временное решение - "разгруппировать" Сенную-Садовую-Спасскую, отвести Спасскую немного в сторону, сделать Театральную, вернуть Спасскую на место и сгруппировать обратно. Но это действительно косяк, я его исправлю как только будет время. Ну и в целом с интерфейсом неясно - поскольку я придумывал все сам, то изначально было неочевидно, какой способ работы будет наиболее удобным и интуитивно понятным.
Ну и плюс еще несколько вещей надо сделать - выделение станции на карте при выделени ее в дереве, например.
Вилки не поддердживаются, просто непонятно как их наложить на иерархическую структуру (можно сделать пересадку и еще одну линию). Петли (пересечения линии с собой) поддерживаются уже сейчас. Параллельные линии тоже - возможно будет немного некрасиво визуально.
Смысл программы пока - просто проектировать новые ветки метро, без подробностей типа расположения выходов, но если кому-то будет интересно - можно будет открыть исходники.
С Театральной тем ни менее косяк в том, что там пересадка, а при выделении пересадки мышью выделяется какая-то одна станция этой пересадки (первая попавшаяся), а надо чтобы выделялась та, которая находится на "активной" линии. Временное решение - "разгруппировать" Сенную-Садовую-Спасскую, отвести Спасскую немного в сторону, сделать Театральную, вернуть Спасскую на место и сгруппировать обратно. Но это действительно косяк, я его исправлю как только будет время. Ну и в целом с интерфейсом неясно - поскольку я придумывал все сам, то изначально было неочевидно, какой способ работы будет наиболее удобным и интуитивно понятным.
Ну и плюс еще несколько вещей надо сделать - выделение станции на карте при выделени ее в дереве, например.
Вилки не поддердживаются, просто непонятно как их наложить на иерархическую структуру (можно сделать пересадку и еще одну линию). Петли (пересечения линии с собой) поддерживаются уже сейчас. Параллельные линии тоже - возможно будет немного некрасиво визуально.
Смысл программы пока - просто проектировать новые ветки метро, без подробностей типа расположения выходов, но если кому-то будет интересно - можно будет открыть исходники.
- Константин Филиппов
- Сообщения: 4903
- Зарегистрирован: 06 окт 2004, 11:02
- Станция метро: Озерки
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Программа для создания карт метро MetroMapEditor
А вот нарисуйте-ка мне таким способом Киевский узел в Москве, там три станции, одна из которых развилка. По вашему способу «Киевская» Филёвской линии займёт половину кружка, в то время как на Арбатско-Покровскую и Кольцевую достанется по 1/4.Manhattan писал(а):Вилки не поддердживаются, просто непонятно как их наложить на иерархическую структуру (можно сделать пересадку и еще одну линию).
Ещё несколько замечаний:
1. Очень неудобно, что в режиме рисования схемы нельзя подвинуть карту не поставив на ней станции, в большинстве программ передвижение схемы организовано по нажатию на среднюю клавишу мыши (она же колёсико).
2. Режим выбора способа добавления станции до или после существующей должен быть активен всегда, а то при активации карты левым щелчком мыши автоматически ставится станция приходится менять режим потом удалять станцию и ставить заново.
3. Надписи на схеме располагаются несколько странно, и далековато от кружка. Это может иметь смысл, когда линия располагается горизонтально, но когда она располагается вертикально появляется ощущение, что что-то не то. На пересадках вообще получается невесть что, вторая добавленная станция оказывается снизу, а название второй добавленной станции иногда пишется сверху. Непорядок.
4. При сильном отдалении схемы надписи надо убирать, а то получается несъедобная каша.
5. Чисто эстетически, на тройном пересадочном узле — сектора лучше располагать как эмблему Mercedes'а.
6. Переименование станций лучше делать не через контекстное меню, а по двойному щелчку мыши прямо в списке, примерно как в Photoshop'е с текстовыми слоями.
7. Удаление станции нужно реализовать через её выделение и последующем нажатием на клавишу delete.
Может добавить возможность выделять строящиеся и проектируемые участки?
Ꙁа Россию!!!
- Фуфсяк
- Сообщения: 1049
- Зарегистрирован: 06 апр 2005, 17:05
- last_fm: MetroFan
- Станция метро: Ленинский Проспект
- Откуда: Санкт-Петербург
Re: Программа для создания карт метро MetroMapEditor
Да хватит придираться, я вот, например, давно мечтал о такой программе. Косяки есть, но ведь и работа над программой только начата. Это ведь, если не ошибаюсь первый её релиз? В общем, спасибо, очень интересно! Буду ждать следующие версии!
От вселенской любви только морды в крови.
- Divan
- Сообщения: 571
- Зарегистрирован: 31 мар 2010, 10:48
- Станция метро: Приморская
- Откуда: Питер
Re: Программа для создания карт метро MetroMapEditor
Программа конечно с характером. Пусть и не из раздела "без поллитры не разобраться", но тем не менее. Я долго не втыкал, что нужно линию делать активной, чтобы добавлять станции. Но в целом - зачёт! 
Вот, попытался сделать. Может, кого заинтересует.
P.S. Внезапно "Расширение metro запрещено администратором." Ну да что там, пусть будет архивчик.

Вот, попытался сделать. Может, кого заинтересует.
P.S. Внезапно "Расширение metro запрещено администратором." Ну да что там, пусть будет архивчик.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Жаль только, жить в эту пору прекрасную
Уж не придётся ни мне, ни тебе...
В детстве я мечтал остаться ночью в метро и посмотреть, как меняют батарейки в поездах и заводят эскалаторы.
Уж не придётся ни мне, ни тебе...
В детстве я мечтал остаться ночью в метро и посмотреть, как меняют батарейки в поездах и заводят эскалаторы.
- 6o4ka
- Сообщения: 81
- Зарегистрирован: 28 дек 2012, 17:26
- Станция метро: Адмиралтейская-1
Re: Программа для создания карт метро MetroMapEditor
Может торможу, но чего-то не понял, как станции к северу добавлять? например после Приморской.
у меня линия упорно разворачивается назад от Рыбацкого
у меня линия упорно разворачивается назад от Рыбацкого

- Константин Филиппов
- Сообщения: 4903
- Зарегистрирован: 06 окт 2004, 11:02
- Станция метро: Озерки
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Программа для создания карт метро MetroMapEditor
Я позволю ещё раз ответить на эту цитату, но в другом ключе.
Вы же сами почти решили задачу с иерархией. Можно сделать ещё одну линию (лучше оформить как суб-линию), но при этом не добавлять новую станцию в узел (можно реализовать как опцию, например через checkbox). Кстати возможность поставить на линии ключевую точку без добавления станции явно не помешает, особенно если кривая плохо соответствует реально существующему перегону (очень хорошо заметно при попытке нарисовать наземный участок).Manhattan писал(а):Вилки не поддердживаются, просто непонятно как их наложить на иерархическую структуру (можно сделать пересадку и еще одну линию).
Ꙁа Россию!!!
- taigaa
- Сообщения: 79
- Зарегистрирован: 04 авг 2009, 02:37
- last_fm: taigadenis
- Станция метро: Бухарестская
Re: Программа для создания карт метро MetroMapEditor
было бы полезно добавить автоматический подсчет расстояний как перегонов, так и общих
-
- Сообщения: 1721
- Зарегистрирован: 20 сен 2012, 21:39
- Станция метро: Приморская
Re: Программа для создания карт метро MetroMapEditor
С вилками подумаю. Сублинии не очень ложатся на структуру, но сделать что-нибудь можно. Ключевые точки в принципе тоже возможны. Расчет расстояний возможен только между географическими точками по прямым линиям, то есть он никогда не будет точно соответствовать реальным длинам перегонов (только если действительно сделтать кучу ключевых точек).
Сейчас, как я понял, наиболее неудобным оказалось именно редактирование линий - добавление новых станций и т.д.
Сейчас логика такая - есть два режима: добавление после выделенной станции и добавление перед выделенной. Каждая новая добавленная станция становится выделенной. Это обеспечивает возможность добавлять станции в начало и в конец ветки, а также вставлять их после и перед любой станцией.
Какие есть идеи как это можно улучшить?
Сейчас, как я понял, наиболее неудобным оказалось именно редактирование линий - добавление новых станций и т.д.
Сейчас логика такая - есть два режима: добавление после выделенной станции и добавление перед выделенной. Каждая новая добавленная станция становится выделенной. Это обеспечивает возможность добавлять станции в начало и в конец ветки, а также вставлять их после и перед любой станцией.
Какие есть идеи как это можно улучшить?
- Divan
- Сообщения: 571
- Зарегистрирован: 31 мар 2010, 10:48
- Станция метро: Приморская
- Откуда: Питер
Re: Программа для создания карт метро MetroMapEditor
Хотелось бы, чтобы он сам додумывался, добавлять станцию перед, или после текущей. Например, сравнивая расстояния.
То есть, например, хочу я развить НВЛ. Для этого выбираю режим добавления станций, тыкаю в Приморскую - он делает НВЛ активной линией, тыкаю в, условно говоря, Смоленское кладбище, и он понимает - ага, от этой станции до Приморской и до Василеостровской ближе, чем длина перегона Василеостровская-Приморская, значит, юзер хочет воткнуть промежуточную станцию. Или тыкаю я на Крестовский остров, и он - ага, эта станция дальше от Василеостровской, чем Приморская, значит, это продолжение линии за Приморскую. Как-то так.
Ну, это в идеале. На худой конец, надо, чтобы было очевидно, где какой конец у линии. А то из двух кнопок мне приходилось методом тыка выбирать нужную. Или я до чего-то не допёр?
Надо ли делать промежуточные точки, рассчёт длин линий - не знаю. Не знаю, насколько это соответствует идеи этой программы. Всё же она, насколько я вижу, нужна чисто для рисования схемок.
Если уж кто хочет точную трассировку, то это делать нужно прежде всего в 3d - иначе не так интересно.
Лично я хочу увидеть в следующей версии экспорт в виде картинки. И конечно, кнопку "undo".
То есть, например, хочу я развить НВЛ. Для этого выбираю режим добавления станций, тыкаю в Приморскую - он делает НВЛ активной линией, тыкаю в, условно говоря, Смоленское кладбище, и он понимает - ага, от этой станции до Приморской и до Василеостровской ближе, чем длина перегона Василеостровская-Приморская, значит, юзер хочет воткнуть промежуточную станцию. Или тыкаю я на Крестовский остров, и он - ага, эта станция дальше от Василеостровской, чем Приморская, значит, это продолжение линии за Приморскую. Как-то так.
Ну, это в идеале. На худой конец, надо, чтобы было очевидно, где какой конец у линии. А то из двух кнопок мне приходилось методом тыка выбирать нужную. Или я до чего-то не допёр?
Надо ли делать промежуточные точки, рассчёт длин линий - не знаю. Не знаю, насколько это соответствует идеи этой программы. Всё же она, насколько я вижу, нужна чисто для рисования схемок.
Если уж кто хочет точную трассировку, то это делать нужно прежде всего в 3d - иначе не так интересно.
Лично я хочу увидеть в следующей версии экспорт в виде картинки. И конечно, кнопку "undo".
Жаль только, жить в эту пору прекрасную
Уж не придётся ни мне, ни тебе...
В детстве я мечтал остаться ночью в метро и посмотреть, как меняют батарейки в поездах и заводят эскалаторы.
Уж не придётся ни мне, ни тебе...
В детстве я мечтал остаться ночью в метро и посмотреть, как меняют батарейки в поездах и заводят эскалаторы.
- Константин Филиппов
- Сообщения: 4903
- Зарегистрирован: 06 окт 2004, 11:02
- Станция метро: Озерки
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Программа для создания карт метро MetroMapEditor
Единственное, что я могу предложить — это сортировку последовательности станций перемещением их по списку слева (как слои в Photoshop'е, например). Станции соединяются линиями в той последовательности в которой обозначены в списке, то есть создал станцию нажатием на её местоположением, допустим она добавилась в конце линии, а нужно в начале, лезешь мышкой список и мышкой drag станцию и тащишь её в то место, где она должна быть и там её drop. При этом станцию можно перенести и на другую линию (напр., выделил в списке «Крылатское» и «Молодёжную» на Филёвской линии, затем drag'n'drop их на Арбатско-Покровскую). Однако ваш переключатель тем не менее имеет смысл, когда одну линию нужно продлить в одну сторону, а другую в другую, иначе уперетаскиваешься. Но сделайте его доступным постоянно, пусть не блокируется при ковырянии со списком.Manhattan писал(а):Сейчас, как я понял, наиболее неудобным оказалось именно редактирование линий - добавление новых станций и т.д.
Сейчас логика такая - есть два режима: добавление после выделенной станции и добавление перед выделенной. Каждая новая добавленная станция становится выделенной. Это обеспечивает возможность добавлять станции в начало и в конец ветки, а также вставлять их после и перед любой станцией.
Какие есть идеи как это можно улучшить?
Убейте напрочь контекстное меню на карте, у вас эти кнопки расположены в основном меню, создание новой линии поместите туда, используйте нажатие на правую кнопку, чтобы двигать карту. Ещё такая мысль, что контекстное меню можно сделать и на левой кнопке, нажал на точку и вылезает меню с вариантами (добавить станцию » в конец линии, в начало линии; добавить контрольную точку), но это меню может быть удобно не каждому, поэтому если его и реализовывать, то исключительно через Опции.
Режим выделения желательно использовать только для перемещения станций, всё остальное можно реализовать другим способом.
А как вам такая структура для вилок:
- Филёвская линия
|Александровский сад
|Арбатская
|Смоленская
|Киевская
−сублиния1
||точка1 (соответствует координатам «Киевской» и изменяется вместе с ними, лучше скрыть из списка)
||Выставочная
||Международная
|Студенческая
|Кутузовская
|Фили
...
|Кунцевская
Создание сублинии можно реализовать через кнопку «Создать вилку», после чего нужно выбрать узловую станцию на активной линии. В результате создаётся сублиния и ключевая точка зависящая от координат выбранной станции, которая считается началом линии и далее обычным способом.
Внимание, в некоторых случаях узловая станция соответствует всем критериям пересадочной станции и имеет две отдельные платформы, поэтому решение отображать узловую станцию самостоятельно (как «Киевскую» Филёвской линии [пересадки на Кольцевую и Арбатско-Покровскую линии к данному вопросу не относятся]) или же как пересадочную (как «Каширскую» в бытность вилочного движения на Горьковско-Замоскворецкой линии) нужно оставить за пользователем.
При этом цвет сублинии соответствует цвету линии в состав которой она входит.
И ещё раз повторю неплохо было бы и перегоны красить в цвет линии.
Ꙁа Россию!!!
-
- Сообщения: 0
- Зарегистрирован: 06 апр 2017, 17:21
- Станция метро: Технологический Институт-1
Re: Программа для создания карт метро MetroMapEditor
Было бы неплохо если бы можно было делать схему не только на карте, но и просто на белом фоне. Просто я хотел сделать схему метро в вымышленном городе которого нет на карте
-
- Сообщения: 0
- Зарегистрирован: 26 фев 2018, 18:28
- Станция метро: Парк Победы
Re: Программа для создания карт метро MetroMapEditor
Как поставить станцию между двумя уже имеющимися?
-
- Сообщения: 0
- Зарегистрирован: 22 авг 2023, 13:58
- Станция метро: Сенная Площадь
Re: Программа для создания карт метро MetroMapEditor
Вместо названия магазина пишется "Рубль сдох", а ещё что похлеще, затрагивая темы насилия.Может лучше поменять на Google или Yandex?
https://drive.google.com/file/d/1JDvcxl ... sp=sharing



https://drive.google.com/file/d/1JDvcxl ... sp=sharing