Я опять взялся за mapsoft2, для разгона исправил довольно много проблем с srtm-слоем во вьюере и с srtm-панорамами. Кроме того, в рамках постепенного отказа от mapsoft1, продвинул программу ms2geofig для работы с привязанными fig-файлами. Теперь в fig можно добавлять векторные данные из srtm и растровые карты. Я это активно использую при рисовании карт.
Я постепенно хочу начать еще один заход по переписыванию системы работы с
векторными картами. Попробую сформулировать, какие изменения
хочется сделать.
## Что было раньше, mapsoft
- лист карты как независимые наборы отдельных объектов
- описанием разных свойств типов объектов
- разные программы, которые могли их обрабатывать
Карта Подмосковья, например, лежала в виде набора отдельных листов в некотором собственном формате vmap. Свойства типов существовали наполовину в виде текстового файла, наполовину были зашиты в программы, что
было неудобно.
## Что есть сейчас, mapsoft2
В качестве центрального хранилища объектов была сделана гео-индексированная база данных (mapdb). Хотелось все объекты положить в нее, однако на практике оказалось, что отдельные текстовые файлы с листами все же удобнее: их можно хранить в гите, отдельно обновлять, выдавать разным людям на редактирование, смотреть архив изменений по каждому листу. В результате, карты по-прежнему хранятся в формате vmap, и перегоняются через базу данных, хотя эти форматы и не вполне совместимы. Это не очень удобно.
Файл с описанием типов исчез, была попытка сделать отдельные конфигурационные файлы, например, для импорта/экспорта в mp. Это все оказалось неудобным и не законченым. Единственно, что получилось хорошо - это универсальная конфигурация рендера карты в виде отдельного текстового файла (да и то в ней хочется сделать некие несовместимые изменения).
## Что хочется сделать
В качестве центрального объекты карты хочется иметь один текстовый файл
с описанием всех ее компонент. Чтобы при работе с картой передавать программе один файл, а не собирать по углам разные конфигурационные файлы, треки с границей и т.п. Компоненты должны быть такими:
- Листы. Карта может содержать один или несколько листов с объектами (в формате vmap, mp, mapdb и т.п.). Каждый лист должен иметь имя, ссылку на файл и определенную границу (например, быть номенклатурным листом). Предполагается, что большинство операций будет происходить с одним листом, независимо от других (рендер, импорт/экспорт в mp и т.п.).
- Общая граница карты в виде трека (например, gpx).
- Описание шагов рендера, как в mapsoft2. Ссылка на отдельный текстовый файл. Тут есть вопрос про возможность рендера разных картинок и разных проекций (например плитки/листы) и про "естественную" проекцию карты. Возможно, все, что связано с проекциями надо вынести из описания рендера и внести в центральный файл.
- Описание типов и разная информация про них. Какие типы бывают, какой тип подписи соответствует данному типу объекта, как преобразовывать объект в форматы fig, mp и обратно, и т.п. Мне кажется, что это должен быть один текстовый файл. (Также на основе этого файла генерить fig-библиотеку, картинку с легендой карты, typ-файл).
Таким образом, вся карта Подмосковья будет одним объектом, но состоящим из многих vmap-листов, с которыми можно будет работать отдельно.