Привязка архивных карт: некоторые секреты
В предыдущей статье нашего "Практикума" я подробно рассказал о том, как привязать трехверстную военную топографическую карту западной части Российской империи. Однако, та карта была специально выбрана, чтобы продемонстрировать на её примере выполнение всех необходимых шагов. Зачастую же, мы сталкиваемся с другой ситуацией: не все шаги можно выполнить, а часть - можно пропустить. Кроме того, в работе всегда могут встретиться определённого рода "подводные камни", которых надо постараться избежать. В этой статье мы рассмотрим пример такого рода и постараемся качественно привязать довоенную карту. Её пример можно найти и скачать по следующей ссылке.
Шаг первый - выявление проекции и системы координат.
С проекцией этих карт всё достаточно просто: они создавались в проекции Гаусса-Крюгера. Эта проекция является частным случаем поперечно-цилиндрической проекции (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.
Владимир Комиссаров