Найти в Дзене
sevprostor

Как я привязывал кривые советские карты

Так, ну что же. В прошлый раз я обещал рассказать о процессе географической привязки карт для навигационных программ. Тема эта, конечно, не столь популярна, как особенности жизни коренных народов Севера, но все-таки есть определенный круг лиц, которым это будет интересно и полезно.

Тот самый атлас
Тот самый атлас

Передо мной стояла задача привязать отсканированные листы из атласа Беломоро-Балтийского канала, над которой я, на самом деле, работаю и до сих пор, так как дело оказалось сложное и небыстрое. Попробую описать этот нетривиальный процесс в двух словах. К посту так же приложу ссылки на исходные странички, а так же картинки с .map файлами для уже привязанных карт.

Так как я не хотел вникать в незнакомые мне и очень громоздкие навороченные ГИС, для работы я решил воспользоваться древним, но надежным Ozi Explorer-ом. Он нужен был мне только для генерации вот этих самых файлов с информацией о контрольных точках, которые далее использовались для автоматического создания файлов карт формата BSB (*.kap). Насколько мне известно, это общепринятый формат для растровой морской навигации, его использует в том числе и обожаемый мной OpenCPN. Существуют в природе и более прямые способы привязки, чем использованный мной, но я им просто не владею, поэтому сделал все как умел. Любой желающий может рассказать о своих методах и сделать все по правильному. Вот здесь лежат MAP-файлы с картинками для Ozi, а здесь - исходники атласа.

В прошлый раз я упоминал, что на моем компьютере я внезапно для себя обнаружил старые растровые карты, склеенные из тогда еще доступного Navioncs-а. Они, кстати, лежат вот здесь, и там есть все от Ладоги до Белого моря. На радостях я решил попробовать использовать их в качестве эталонных карт. Казалось бы — что может быть проще? И на них, и в атласе указаны одни и те объекты: буи, маяки, и прочие навигационные знаки. Ставь себе на них точки в Навиониксе, сохраняй, а затем используй для привязки атласа, просто так же поставив реперы на те же объекты! Но, увы. Почему-то такой принцип оказался неработоспособным. Я подозреваю, что проблема заключена в том, что карты из атласа во-первых, нарисованы в какой-то другой проекции, и во-вторых — они содержат в себе намеренные искажения, которые не мешают ориентироваться непосредственно на местности, но затруднят, например, нацеливание какого-либо высокоточного оружия на важные объекты. При том, что данные карты нарисованы в незапамятные времена, это, надо полагать, имело определенный смысл.

Когда я потерпел неудачу с легким способом, то обратился к чуть более сложному. По счастью, на Яндекс.Картах имеются хорошие космоснимки почти всего ББК, на которых, местами, как на ладони видны даже отдельные буи. Что же, попробуем! Я опять же не претендую на правильность метода, а только рассказываю вам о своем личном опыте. Само собой разумеется, что карта у нас уже подготовлена для привязки — то есть разворот склеен по возможности без искажений, а так же развернут севером наверх. По поводу севера есть одно важное замечание: для этих карт он не всегда четко наверху, и чем севернее у нас лист — тем больше он склоняется вправо. Величина этого склонения находится эмпирическим методом.

Итак: сперва надо внимательно посмотреть на нашу карту и космический снимок. На обоих изображениях обязательно обнаружатся одинаково видимые объекты, с которыми мы и будем работать. Мой метод сохранения и переноса точек достаточно коряв — я тыкаю правой кнопкой мыши в браузере на нужную точку, в выпадающем меню спрашиваю «что здесь», и в левой панели вижу десятичные координаты точки. Если что, то я люблю именно десятичные координаты и метрическую систему. Координаты копируются и затем вставляются в новую точку, создаваемую в вашей любимой навигационной программе. Моя проблема в том, что Озик у меня работает на виртуальной машине, и поэтому мне проще было проставлять все точки в OpenCPN на хосте, экспортировать их оттуда в GPX, и этот файл потом открывать в ОзиЭксплорере. И вот, через несколько минут точки готовы и загружены в Озик вместе с новой девственной картой для калибровки.

Первичная установка калибровочных точек в приметных местах
Первичная установка калибровочных точек в приметных местах

На первом этапе все выглядит совершенно обыденно. Нам надо поставить точки калибровки на картинку, указав их координаты. В этом как раз помогает заранее загруженный файл с уже поставленными вейпоинтами. Замечу, что контрольных точек не требуется много: зачастую достаточно поставить всего 3 точки так, чтобы они были максимально разнесены друг от друга по площади карты. Бац-бац, и готово. Сохраняем наш map-файл, возвращаемся в нормальный режим, и что же мы видим?.. Путевые точки, которые мы только что использовали, стоят совсем не там где надо! Хоть по координатам они и совпадают с калибровками, но на карте они отображаются совсем в других местах!

Но это не беда. Видимо, это те самые издержки намеренных искажений и другой проекции. Опять же, ОзиЭксплорер — программа очень древняя, он не умеет соотвтетствующе деформировать изображение карты для того, чтобы оно отображалось корректно. Но он нам, собственно, пока больше и не нужен — далее в дело вступает конвертер MAP-BSB. Делаем с помощью него карту .kap и открываем ее в OpenCPN.

Карта в OpenCPN не соответствует действительности. Ошибки составляют более 100 метров. Но можно представить, что карта резиновая, и тогда становится понятным, где и в какую сторону ее надо подтянуть, чтобы она стала более точной.
Карта в OpenCPN не соответствует действительности. Ошибки составляют более 100 метров. Но можно представить, что карта резиновая, и тогда становится понятным, где и в какую сторону ее надо подтянуть, чтобы она стала более точной.

Здесь картина уже несколько лучше. Изображение деформировано; точки, возможно, стоят чуть более точно, но по-прежнему слишком далеко от тех мест, где они должны быть. Внимательно смотрим на карту: представьте, что она сделана из резины и приколота булавками к доске. Эти воображаемые булавки можно доставать, а затем втыкать обратно, но только при том условии, что она войдет в ту же дырочку, которую оставила в доске изначально. А вот резиновую карту можно без проблем растягивать в любую сторону до тех пор, пока ее изображение не начнет соответствовать географической действительности.

Перемещение калибровочных точек методом научного тыка и результат этих действий. На самом деле, подобных итераций может быть очень много, у меня показан конечный результат. Ошибка в районе судового хода составляет не более 35 метров
Перемещение калибровочных точек методом научного тыка и результат этих действий. На самом деле, подобных итераций может быть очень много, у меня показан конечный результат. Ошибка в районе судового хода составляет не более 35 метров

Для этого мы возвращаемся в Ози и там меняем имеющуюся калибровку. Географические координаты точек привязки мы оставляем неизменными, а вот их положение на карте — смело меняем, и плевать на то, что вот эти вот географические координаты как-бы по смыслу должны находиться в своих изначальных местах. Опять сохраняем карту, опять конвертируем, и снова смотрим на нее в ОпенЦПН. Стало лучше, но до сих пор картина не идеальна. Повторяем все сначала. Этим можно заниматься довольно долго, но в конце концов результат становится вполне удовлетворительным. Я для себя лично установил приемлемый порог погрешности в 30 метров. Проверяю я его очень просто: в браузере на Яндекс.Картах ставлю точки на произвольно выбранные объекты — например, на мелкие острова, и затем переношу эти точки в OpenCPN. Точки должны встать на те же самые острова, нарисованные на карте.

Вообще, с привязкой карт именно канала все достаточно просто. На канале есть полно шлюзов, и их ворота, которые хорошо видны и на карте, и на космоснимках, являются идеальными реперами. Сложнее дело обстоит с теми местами, где нет ничего, кроме заболоченных островов неясных очертаний, но и эти карты вполне можно привязать. Конечно, все по своим местам расставит только реальное применение этих карт, пока я могу контролировать процесс только с помощью Яндекса. Но вроде-бы, у меня все получается нормально. Вот такой вот топорный у меня метод.

Если вам интересна тематика Арктики и путешествий по русскому Заполярью, подписывайтесь на наш канал в Яндекс.Дзен. Или на группу в ВК, инстаграм, либо ютуб.