Language: RU EN
Main page...

Различия Mapsoft1 и Mapsoft2 (2021-01-09)

Форматы геоданных

В целом, mapsoft1 и mapsoft2 поддерживают примерно одинаковый набор форматов геоданных. mapsoft2 почти всегда делает это полнее и аккуратнее (см. текст про геоданные).

Однако в mapsoft2 не поддерживается "внутренний" формат "xml", который мог использоваться в mapsoft1 для хранения всей структуры данных, без потерь информации. Это был довольно странный формат (не XML!), для его разбора использовалась библиотека boost::spirit, которую я не очень хочу использовать в mapsoft2. Планов поддержки этого формата пока нет, данные надо преобразовывать вручную. Геоданные и простые карты можно преобразовать с помощью mapsoft через формат OziExplorer, а вот плиточные карты - только вручную. В mapsoft2 форматом, который хранит всю структуру данных без искажений, является GeoJSON (с собственными расширениями).

Кроме того, в mapsoft2 не поддерживается чтение геоданных из fig файла (а добавить их туда можно с помощью программы ms2geofig).

Названия номенклатурных листов

Обнаружилась весьма неприятная несовместимость в названиях номенклатурных листов советских карт. Листы в высоких широтах в mapsoft1 записываются в виде p52-101-102, то есть, склеенные листы разделены дефисом. В mapsoft2 это p52-101,102, с запятой. И mapsoft1 и mapsoft2 допускают нестандартные одиночные листы, типа p52-101. Кроме того, допускаются "блоки" листов, но для высоких широт они записываются по-разному: p52-101-102.2x4 в mapsoft1 и p52-101.4x4 в mapsoft2. То есть, в качестве основы блока в mapsoft1 берется стандартный "склеенный" лист, а в mapsoft2 - одиночный лист.

Указание геодезических систем координат

В mapsoft1 была попытка умным образом разбить информацию о системе координат и проекции на отдельные компоненты (собственно система координат, проекция, параметры) и использовать их, по возможности, отдельно. Например, при привязки карты можно было не указывать систему координат, считая, что различие будет скомпенсировано афинным преобразованием, которое всегда присутствует при преобразовании карт. Это сильно убыстряло совместное рисование карт, имеющих одну проекцию. Еще одно преимущество: было легко разобрать такую информацию и преобразовать в то что нужно, например, в указание проекции карты в формате OziExplorer. Для указания системы координат надо было использовать несколько параметров. Например, для советских карт:
--proj tmerc --datum pulk --lon0 39

В mapsoft2 система координат задается строчкой параметров для libproj (или одним из псевдонимов), это всегда один параметр. Тот же пример будет:
--proj "+ellps=krass +towgs84=+28,-130,-95 +proj=tmerc +lon_0=39 +x_0=7500000"
или просто --proj SU39

Проблема со скоростью пересчета карт между разными проекциями решена теперь достаточно радикально: во вьюере, там где карты используются в виде небольших плиток, преобразование координат по возможности локально заменяется на афинное. Это происходит, если ошибка преобразования не превосходит 1/2 пиксела. Проблема с записью проекции для формата OziExplorer решается разбором строчки для proj. Там вполне могут быть сюрпризы, но очевидные варианты вполне работают.

maposft2 переведен на новый интерфейс libproj в октябре 2022. Переводить mapsoft1 я пока не планирую (и из-за этого перестал собирать его в altlinux и пользоваться им).

Векторные карты

Сейчас (ноябрь 2022) происходит очередное большое переписывание системы векторных карт в mapsoft2. В целом: по-прежнему поддерживаются форматы vmap и mp. Введен новый формат vmap2, который можно хранить в виде текстового файла или базы данных с гео-индексацией. Введены удобные конфигурационные файлы - для описания типов объектов (в частности, как надо преобразовывать их в разные форматы, как правильно создавать подписи) и для рендера растровой карты. Поддержка fig почти доделана, но не тестирована. Происходит движение к "мягкой" привязке подписей к объектам, которая существовала в mapsoft1 и позволяла работать с mp, где подписей не было, и с fig, где было непросто вводить жесткие связи между объектами. В mapsoft2 сперва была сделана "жесткая" привязка, но теперь я от нее полностью отказываюсь.

Что надо бы добавить в mapsoft2