Добрый день!
Сейчас в mapsoft2 произошла очередная революция в работе с векторными картами.
C 2020 до 2022 основным форматом для векторных карт была
гео-индексированная база данных, "mapdb". Однако, для хранения карт я все
равно использовал старый текстовый формат (vmap) - для удобства хранения
в git, просмотра изменений, обновления отдельных листов. База данных
использовалась только как промежуточный (и не вполне совместимый с vmap)
формат. Кроме того, во всей это системе отсутствовала поддержка формата
xfig, с помощью которого я редактирую карты - для этого я пользовался
программами из mapsoft1.
Сейчас база данных переделана таким образом, что она может существовать
на диске в виде базы BerkleyDB или в памяти, в виде простых структур c++. И я
не уверен, что буду использовать BerkleyDB.
Основное изменение в формате базы: "жесткая" привязка подписей к объектам
(по id) заменена на "мягкую" (подпись знает, что по таким-то координатам
можно найти объект такого-то типа, к которому она может привязаться).
Такая мягкая привязка использовалась и раньше, она удобна для
взаимодействия с форматами mp и xfig, где нет id объектов и жестких
связей между ними. Соответственно, id объектов важны только для
работы с базой, наружу они не вылезают.
Вся дополнительная информация о карте не хранится вместе с объектами. Все
эти форматы - это только наборы объектов. Возможно, потом можно будет
сделать следующий уровень для удобной работы с коллекциями карт типа
Подмосковья, который будет знать про название, привязку, границу карт,
связи между объектами, конфигурационные файлы и т.п. (сейчас этот уровень
сделан с помощью shell скриптов).
Появился текстовый формат vmap2, который в точности соответствует
структуре бызы данных. Я планирую постепенно перейти на него (форматом
vmap тоже пока можно пользоваться).
Работает преобразование между форматами vmap2, vmap, mp, fig (наконец-то!).
В записи mp теперь поддерживаются уровни данных и поле EndLevel. Это было
во времена mapsoft1, но потом потерялось, пользователи жаловались.
Появился файл конфигурации, который описывает, как правильно преобразовывать разные типа, создавать подписи и т.п.
Рендер карт остался практически без изменений. Я изменил команду define в
конфигурационном файле, так что файлы придется немного исправить. Кроме
того, рендер карт вынесен в отдельную программу, ms2render. Туда же
перенесено все, что было на эту тему в ms2conv: рендер растровых карт, DEM и
геоданных.
Таким образом, программы поменялись таким образом:
* ms2conv -- только преобразование геоданных
* ms2vmap -- преобразование векторных карт (точнее, наборов объектов)
* ms2vmapdb -- работа с базой данных векторных карт и разные мелкие операции
типа построения библиотеки знаков для xfig.
* ms2render -- рендер геоданных, DEM, растровых и векторных карт.
Какая-то документация по новому формату векторных карт есть тут:
https://slazav.github.io/mapsoft2/vmap2.htmПо рендеру карт (этот текст почти не изменился):
https://slazav.github.io/mapsoft2/vmap2render.htmНовый релиз mapsoft2 я сделаю чуть позже, сперва поработаю с картами,
повылавливаю ошибки, может быть, что-нибудь еще поменяю.