Перейти к основному содержанию

Привязка архивных карт: некоторые секреты

    В предыдущей статье  нашего "Практикума" я подробно рассказал о том, как привязать  трехверстную военную топографическую карту западной части Российской империи. Однако, та карта была специально выбрана, чтобы продемонстрировать на её примере выполнение всех необходимых шагов. Зачастую же, мы сталкиваемся с другой ситуацией: не все шаги можно выполнить, а часть - можно пропустить. Кроме того, в работе всегда могут встретиться определённого рода "подводные камни", которых надо постараться избежать. В этой статье мы рассмотрим пример такого рода и постараемся качественно привязать довоенную карту. Её пример можно найти и скачать по следующей ссылке.

      Шаг первый - выявление проекции и системы координат.

   С проекцией этих карт всё достаточно просто: они создавались в проекции Гаусса-Крюгера. Эта проекция является частным случаем поперечно-цилиндрической проекции (Transverse Mercator), а та, в свою очередь, имеется в наличии в подавляющем большинстве современных программ.
   Немного хуже дело обстоит с системой координат. Известно, что эти карты создавались в СК-32, на эллипсоиде Бесселя, но "официальных", так сказать, общепризнанных параметров системы координат в литературе нет. Есть лишь одно интересное упоминание о систематической работе в этом направлении, где исследование касалось территории Украины и были вычислены параметры системы. Поэтому мы поступим точно так же, как и в предыдущей статье: постараемся вычислить параметры этой СК для имеющегося листа карты.
   Поскольку, как и ранее, всю работу по привязке карты мы будем вести в программе Global Mapper, в первую очередь займёмся его настройкой. В этот раз настройка окажется более простой: так как в программе встроенный эллипсоид Бесселя уже имеется, нам достаточно дописать в файл custom_datums.txt одну строчку:

"Zero Bessel","ZRB","Bessel 1841",0.00000000000000000,0.00000000000000000,0.00000000000000000

   Тем самым мы создадим в программе новую систему координат, основанную на эллипсоиде Бесселя с нулевыми (на этом этапе работы) сдвигами относительно WGS84. Напомню, что файл custom_datums.txt должен находиться в рабочей папке программы, а эта папка указывается в пункте меню "Справка" - "О программе":

​

    Настройка координатных сеток у нас сведётся к тому, что для градусной сетки мы установим шаг в 5 минут, а для сетки "текущей проекции" (линейной) шаг в 1000 метров. Как мы увидим в дальнейшем, такие сетки позволят нам легко контролировать процесс привязки.

      Шаг второй, который мы делать не будем.

   Теперь пришло время поподробнее изучить материал, с которым нам предстоит работать. И вот тут нас будет подстерегать первый "подводный камень". Дело в том, что листы карт, созданных в проекции Гаусса-Крюгера не имеют прямоугольной рамки! Форма листа имеет сложный вид, напоминающий криволинейную трапецию. Поэтому такой полезный этап, как выравнивание растра по 4 точкам (например, в программе Spotlight Pro) нам придётся пропустить.
   "А как же километровая сетка на карте?" - спросите вы. Ведь её линии также составляют правильный прямоугольник и можно попытаться выровнять растр по нему?
   К сожалению, тут таится ещё один неприятный секрет. Внимательно рассмотрев наш растр, мы увидим, что он содержит те самые неустранимые дефекты, о которых я говорил в предыдущих статьях, причём двух видов: "смятость" исходного материала, очевидно по месту сгиба, и дефекты, оставшиеся после неточной склейки в графическом редакторе.

​

​

   Поэтому для выравнивания растра километровая сетка также не подойдёт и этот этап нам придётся пропустить. Исправлять возникшие неточности нам придётся "лобовым" способом: взяв как можно больше точек для привязки, благо, как мы увидим дальше, карта нам это позволит.     

       Шаг третий - оценка точности.

   Теперь мы можем заняться оценкой той точности, с которой нам предстоит работать. Как обычно,  будем различать точность исходного картографического материала (бумажной карты) и разрешение растра - её электронной копии.
   Напомню, что на любом чертеже или карте нельзя обычными средствами ("циркулем и линейкой") измерить расстояние меньше 0,2 мм. Расстояние на местности, соответствующее этой величине называют предельной точностью масштаба карты.  Применительно к масштабу нашей карты-полукилометровки это составит 10 метров на местности. Разрешение же растра составляет 300 точек на дюйм (2,54 см), следовательно 1 пиксель карты соответствует 2,54/300 сантиметра на карте или около 5 метров на местности. В данном случае разрешение растра вдвое превышает предельную точность масштаба карты. Однако любая, даже самая тонкая линия на карте имеет толщину в 3-4 пикселя. Поэтому реальная точность, которую мы могли бы обеспечить и составит примерно 15-20 метров, что и соответствует предельному масштабу. Такой точности мы могли бы достичь, если бы не одно "но": упомянутые выше смятости листа и грубые "фотошопные" склейки. А они составляют уже несколько десятков метров. Конечно, как мы увидим ниже, некоторую часть таких дефектов удастся компенсировать, но в общем, следует ждать определённых ошибок близко к местам дефектов. По порядку величины они могут составить от 20 до 100 метров.

       Шаг четвёртый - определение точек привязки.

   На этом шаге мы определимся с точками привязки нашей карты. Здесь карты Генштаба дают нам очень хорошее преимущество, которым мы обязательно воспользуемся: наличие сетки проекции на карте. На 500-метровке она проводится с шагом ровно в километр, а расстояния от начала отсчёта указаны на рамке карты. Поскольку программа Global Mapper умеет работать одновременно с точками привязки, заданными как в географических, так и в координатах проекции, мы используем и градусную сетку карты, которую составляют её границы. Правда, у карты есть ещё один дефект, о котором я не сказал выше: отсутствие левого края листа. Но, при обилии других точек, годящихся для привязки, такой недостаток нам не страшен.

       Шаг пятый - привязка.

Теперь у нас всё готово к собственно привязке карты. Запустим Global Mapper и откроем в нём наш  растр.

​

   На вопрос программы, как нам следует поступить с открываемым растром нужно ответить, что мы хотим его скорректировать вручную. Тогда откроется окно корректировки (привязки) изображения:

​

   Теперь нам нужно указать программе необходимую проекцию и систему координат. Для того, чтобы продемонстрировать важность правильного выбора СК, мы сознательно совершим одну ошибку: укажем систему координат, основанную на эллипсоиде другого размера (Pulkovo). Для этого нажмём кнопку "Выбор проекции" и в открывшемся окне введём требуемые параметры проекции:

​

   Теперь всё готово для введения точек привязки. Находим на нашей карте первое пересечение линии широты с меридианом (это угол рамки нашей карты), увеличиваем его до нужного масштаба и проставляем первую точку. Точки ставим на примерные середины линий:

​

   В окошки ввода контрольной точки вводим её координаты в градусах и минутах через пробел (они обозначены на рамке карты). После нажатия кнопки "Добавить точки" наша контрольная точка появится в общей таблице точек внизу. Точно таким же образом введём координаты и остальных трёх точек, у которых на нашей карте помечены их географические координаты. Теперь мы можем сохранить нашу предварительную работу, для этого нужно нажать кнопку "ОК". Посмотрим, что у нас получилось:

​

   Видно, что вертикальные линии километровой сетки достаточно точно совпадают с нарисованными линиями на карте. А вот горизонтальные - сильно смещены. Это произошло из-за того, что при выборе системы координат был указан неверный эллипсоид: не тот, на котором строилась карта. Эту ошибку нам необходимо исправить. К сожалению, всю работу по вводу точек привязки придётся делать заново, только на этапе выбора СК нам нужно будет ввести систему координат "Zero Bessel" (её мы прописали в файле custom_datums.txt в самом начале работы).

​

   Снова введём все 4 точки с географическими координатами, как делали раньше и нажмём кнопку "ОК". Теперь видно, что достаточно хорошо совпадают все линии сетки проекции. Кроме того, совпадает и градусная сетка, которая идёт по рамке карты.

​

​

   Если бы у нашей карты сохранилась левая часть с рамкой и не было бы сильных дефектов растра, в первом приближении мы могли бы удовлетвориться работой. Но, увы, левая часть карты ещё плохо привязана, что хорошо видно по несовпадению линий сетки с нарисованными на карте. Поэтому на следующем шаге мы займёмся расстановкой дополнительных точек привязки по километровой сетке. Точки будем расставлять с шагом примерно в 4-5 делений сетки (этого вполне достаточно). Процедура очень похожа на расстановку точек по градусной сетке, точки расставляем на пересечениях линий километровой сетки, а в качестве координат проекции вводим значения, которые написаны на рамке карты (умножая их на 1000).

​

   После того, как мы введём около 30 точек, нам останется только оценить качество результата. Теперь все линии (километровые и градусные) совпадают с нарисованными на всей карте, за исключением небольшого участка в районе упомянутого выше дефекта "смятия". Эта ошибка так и останется неустранимой. К счастью, она касается лишь небольшого участка карты.

​

Полностью текст статьи вы можете прочитать, посетив страницу автора на Boosty.

Владимир Комиссаров