Привязка исторических карт. Часть I, теоретическая. Необходимые шаги

   Привязка (калибровка) исторической карты, как, впрочем, и любой другой - достаточно сложный и комплексный процесс, который состоит из определенных шагов. Зачастую некоторыми из этих шагов пренебрегают, что приводит к неудовлетворительным результатам. В этой статье я подробно разберу стадии процесса, а также постараюсь дать ответ, для чего нужен тот или иной шаг и почему без него нельзя обойтись. 

   Итак, вот эти шаги в той последовательности, в которой их желательно выполнять.

1. Выявление информации о проекции карты и ее системе координат

2. Геометрическая и цветовая коррекция исходного растрового материала.

3. Определение допустимых ошибок привязки.

4. Поиск имеющихся на карте точек привязки и расчет недостающих точек.

5. Привязка карты в имеющихся программах.

6. Определение точек на карте, которые можно использовать для перевода системы координат карты в современную.

7. Расчет параметров датума по изестным современным координатам определенных выше точек.

Разберем эти пункты по порядку.

1. Для чего нужно знать, в какой проекции была изготовлена ваша отсканированная карта? Дело в том, что при изображении части земной поверхности на плоском листе всегда возникают искажения, вид которых и обусловлен выбранной проекцией при составлении карты. Лучше всего это иллюстрирует классический пример из учебника Б.Б. Серапинаса с видом полуострова Аляска в разных проекциях (а попутно в тех же проекциях изображен контур человеческой головы):

  Представим себе, что мы пытаемся привязать карту, на которой Аляска изображена, как на третьем рисунке слева, в той проекции, которая изобразила бы ее, как на четвертом рисунке! Как бы мы не поворачивали и не растягивали исходный растр (это умеют делать практически все программы), искажения углов будут настолько значительными, что даже приблизительного соответствия координат всех точек растра координатам сетки выбранной проекции достичь не удастся. И тем не менее, удивителен тот факт, сколь большое количество людей пытаются воткнуть в квадратную сетку проекции Geographic (Lat/Lon) сложную "криволинейно-трапециевидную" сетку проекции Бонна!

   Справедливости ради заметим тут, что с уменьшением размера участка земной поверхности этот эффект уменьшается (поэтому часто эта ошибка остается незамеченной), но не исчезает до конца. И уж совсем недопустим такой подход при привязке цельных листов среднемасштабных карт, каковыми являются, например, военные трехверстки и карты Менде.

   Знание системы координат и, в первую очередь, параметров земного эллипсоида, применяемого при создании карты также немаловажно. Достаточно упомянуть тот факт, что размеры большой полуоси эллипсоида Вальбека, который использовали при создании "военных трехверсток" на 1200 метров меньше большой полуоси современного эллипсоида WGS84! Это значит, что вся область покрытия трехверстками, что в меридиональном, что в широтном направлении, если измерять по картам, меньше реальной на десятки и сотни метров! Говоря иными словами, если мы наколем на физических листах трехверсток достаточно удаленные друг от друга точки и измерим между ними расстояние с учетом масштаба карт, мы получим существенно меньшую величину, чем если бы измерили то же расстояние на местности (естественно, современными средствами) или по современным картам с использованием современных параметров эллипсоида.
   Из сказанного выше следует и еще один факт: разные по размеру эллипсоиды имеют еще и разную кривизну в любой точке. А значит, участок поверхности, перенесенный с "кривой" поверхности одного эллипсоида на плоскость (именно так создается любая карта и в этом и заключается суть "проекции") нельзя перенести обратно на "менее кривую" поверхность эллипсоида с бОльшей полуосью без внесения каких-то дополнительных искажений. Вот поэтому при привязке карт всегда крайне желательно использовать в программе именно тот эллипсоид, на котором создавалась карта. А как перейти от "старого" эллипсоида  к современным параметрам, мы увидим чуть позже.
   Теперь, прежде, чем двигаться дальше и заняться непосредственно привязкой исторических карт, давайте возьмем в качестве образца какую-нибудь известную карту с хорошей привязкой и каждый раз будем проверять, был ли выполнен при ее привязке каждый из перечисленных пунктов. Можно взять практически любую карту из топографических карт 80-х годов (так называемый "Генштаб") - все они выдержали проверку миллионами пользователей и годами использования.
   Итак, первое, что мы должны проверить, известна ли нам проекция карты и ее система координат? Да, проекция известна, это так называемая проекция Гаусса-Крюгера, в которой снимаются большинство топографических карт России и которая ничем, кроме фиктивной целочисленной величины "восточного смещения" в километрах не отличается от используемой в большинстве известных программ проекции Transverse Mercator. На координатах, выраженных в градусах это различие вообще никак не сказывается, поэтому именно эта проекция и используется при привязке карт "Генштаба". Что касается системы координат, то она также известна, это СК "Пулково 1942 года". Об этой системе можно написать не одну статью, здесь мы ограничимся тем, что она имеется в наличии в подавляющемся большинстве современных программ.
   Ну а что же с тем, что нас непосредственно интересует? В самом деле, для "военных трехверсток" проекция также хорошо известна, это проекция Бонна, также имеющаяся в большинстве программ, эллипсоид, на котором построена проекция - это эллипсоид Вальбека. А для не менее известной десятиверстной карты Стрельбицкого использовалась коническая проекция Гаусса.
   Итак, когда у нас есть некоторая эталонная карта, мы можем пойти дальше и перейти к исследованию исходного растрового материала.

2. Файлы изображений, которые получаются после сканирования исходного бумажного материала могут иметь самое разное качество. Многое зависит от размера оригинального бумажного листа. Небольшие листы (близкие по размерам к современным А4 и А3) часто сканируют целиком на доступных планшетных сканерах, что, в общем, дает вполне удовлетворительное качество. Если же речь идет о больших по размеру листах карт, каковыми, например, являются "военные трехверстки", то их приходится либо сканировать по частям, а затем полученные изображения склеивать в подходящей программе, либо использовать для сканирования дорогие модели сканеров больших форматов. Такие сканеры тоже не свободны от некоторых недостатков. Так, барабанные сканеры могут физически деформировать бумажный лист, кроме того, масштаб получаемого изображения "в направлении протягивания" листа может отличаться от масштаба в перпендикулярном направлении. Таким образом возникают геометрические искажения, которые крайне желательно перед привязкой постараться устранить и привести размеры отсканированного изображения возможно ближе к оригинальному - в любом случае, программе, в которой вы в дальнейшем будете привязывать растр, не придется беспокоиться о дополнительной подгонке растра к контрольным точкам. Такую обработку можно сделать практически в любом графическом редакторе, например Adobe Photoshop, но существуют и специализированные программы для этих целей. Я использовал SpotLight Pro, который дает лучшие результаты и чрезвычайно прост в использовании, так как содержит отдельный модуль коррекции подобных изображений. Стоит упомянуть также, что и размеры бумажного оригинала со временем меняются из-за высыхания, коробления и других деформаций старой бумаги, поэтому всегда полезно иметь возможность вернуться к оригинальным размерам.
   Однако, существуют и неустранимые искажения. Не всегда возможно отсканировать лист целиком, он, в конце концов, может быть слишком ветхим для этого, а некоторые карты можно только сфотографировать. Тогда приходится собирать изображение "по частям" в подходящей программе и при неаккуратной сборке могут возникнуть такие дефекты, которые убрать потом просто невозможно (разрывы и нахлесты на изображении). Примеры фрагментов листа XII-13 трехверстки, доступной в Сети, приведены на рисунках ниже:

  

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

   Цветовая коррекция изображения также полезна. Краски на цветных картах со временем имеют обыкновение блекнуть. Исправив же цвета изображения, мы приведем карту к виду более близкому к исходному, сделаем изображение более четким и "сочным". Если же карта не цветная, то иногда полезно перевести ее в черно-белое изображение - это добавит ему четкости и сделает размер файла изображения меньше. Таким образом, не потеряв в информативности, мы улучшим восприятие карты на экране, особенно мобильного устройства, да и заодно облегчим жизнь нашей геоинформационной программе. 
   К счастью, все такие операции входят в стандартный набор практически любого графического редактора. А в SpotLight Pro этим также заведует отдельный модуль, причем процесс можно полностью автоматизировать.
   И напоследок в этой части вспомним о нашем эталоне - карте-"генштабовке". Можно взять любой лист карты, практически на любом из них есть альтернативная километровая сетка. Измерив величину шага этой сетки (например, в SpotLight Pro) легко убедиться, что ее ячейки являются практически идеальными квадратами, а значит и качество растра в плане геометрических искажений является весьма приемлемым.

3. Теперь мы готовы к тому, чтобы понять, с какой точностью нам необходимо работать. Сразу оговоримся: нужно различать точность исходных бумажных оригиналов и точность, с которой сохраняется информация в растровом файле. Начнем со второй величины, которую всегда легко оценить. Наилучшие растры трехверсток, которые можно встретить в Сети отсканированы с разрешением в 300 точек в дюйме. Это значит, что мы можем различить пиксели изображения, находящиеся на расстоянии друг от друга в 1/300 дюйма. А с учетом масштаба карты, 1/300 дюйма - это 3 версты, деленные на 300, или одна сотая версты, или 5 саженей. В современных единицах - это около 10 метров. Все было бы прекрасно, если бы не одно "но": минимальный размер более или менее внятных единиц изображения на такой карте составляет 2-3 пикселя (таковы, например, ширины линий сетки и рамки карты). Это значит, что мы не сможем различить точки на карте, расположенные ближе 20-30 метров друг от друга. Вот эта величина и задает нам верхнюю планку точности,  которую мы можем ожидать от конечного результата. В угловых единицах это составит порядка 1 секунды по широте и 1,5-2 секунд по долготе. 
   Сказанное выше не означает, что все измерения и вычисления нам следует делать с точностью в 1 секунду. Ошибки измерений и вычислений имеют обыкновение складываться, поэтому каждое отдельное измерение и вычисление нам лучше производить с точностью примерно на порядок лучшей, чем ожидаемый конечный результат, то есть порядка одной десятой секунды (3 метра по широте). А вот большая точность нам вряд ли понадобится.
   Теперь посмотрим на наш бумажный оригинал. Считается, что нельзя измерить расстояние стандартными средствами (циркуль и линейка) точнее, чем 0,2 мм. Это примерно одна сотая дюйма, а значит и любое измерение на карте-трехверстке мы не сможем провести точнее, чем 3 версты деленные на 100, или 15 саженей. Получается ровно та самая величина (30 метров), которую мы определили исходя из размера минимальной ширины линии в пикселях. Вот ее мы и примем для оценки точности нашей дальнейшей работы. Иными словами, отличия, например, линии трека от изображенной на карте дороги заметно большие, чем 30 метров, будут говорить нам либо о неудовлетворительном качестве нашей работы, либо о том, что дорога, изображенная на карте вполне достоверно отличается от современной.
   Теперь сравним трехверстку с нашим эталоном. Размер пикселя близкой по масштабу карты-километровки составляет около 12 метров (а ширина характерных линий на карте порядка тех же 2-3 пикселей), что дает по порядку величины ту же 1 секунду.
   Из сказанного следует, что точность исходной карты-трехверстки ничуть не хуже современных километровок! Это я хочу еще раз повторить тем, кто в своем невежестве и вере в могущество GPS, продолжает считать, что в XIX веке "карты чертили при керосиновой лампе" (что, в общем, правильно) и поэтому точности лучше 150-200 метров добиться нельзя (что и является невежественным заблуждением). Да будет вам известно, что инструмент, именуемый теодолитом, был создан в XVI (прописью: шестнадцатом!) веке, а к середине века XIX-го был настолько усовершенствован, что, кроме электроники в наше время в него и добавить почти ничего не пришлось. А точность измерений геодезистами XIX века позволяла вести теодолитные ходы длиной в несколько сотен верст с суммарной погрешностью в пару-тройку саженей (все что было хуже, обычно считалось никуда не годной работой)! Поэтому и карты XIX века являются продуктом этой точности и, естественно, требуют соответствующего подхода.

4. Выясним теперь, возможно ли, зная проекцию и систему координат карты, начать привязку непосредственно или нам придется предпринять еще какие-то дополнительные шаги. Возьмем для начала наш эталон, карту-"генштабовку". Известно, что листы этих карт обрезаны по границам строго по градусной сетке, а, кроме того, имеют "засечки" посередине этих границ и строго в центре листа. Кроме того, на листы нанесена еще и километровая, альтернативная сетка проекции Гаусса-Крюгера. Таким образом, привязка такой карты под любую программу не вызовет затруднений: на листе всегда можно найти как минимум 9 точек (углы листов, середины сторон и центр), а при желании добавить альтернативные координаты из километровой сетки.
   В случае трехверстной военно-топографической карты, карт Менде и т.д. зачастую такой удобной возможности нет. Листы трехверстки хотя и содержат нанесенную градусную сетку, но бывает, что лист может содержать лишь одну параллель, пересеченную двумя-тремя меридианами приблизительно в центре листа. Для привязки такое расположение точек не годится; точки привязки (и это крайне желательно!) должны равномерно покрывать всю площадь карты, лишь тогда возможно избежать значительных искажений и ошибок. Да и количество точек для более или менее точной привязки должно быть не менее пяти. Что делать в таких случаях?
   Одним из способов решения проблемы может быть добавление на карту недостающих линий градусной сетки. В самом деле, листы трехверстки на полях имеют минутные рамки, которые, в свою очередь, еще дополнительно разбиты штрихами. Таким образом, можно в любом графическом редакторе через нужные точки на рамке провести линии (пользуясь тем, что, в случае проекции Бонна для трехверстки в пределах одного листа меридианы являются практически идеальными прямыми линиями, а кривизна параллелей также практически неизменна). Тем не менее, этот способ имеет два существенных недостатка. Первый: он трудоемок, причем для каждого листа работу приходится делать заново. Второй недостаток: не всегда достаточная точность минутной рамки, а штрихи внутри каждой минуты имеют переменный шаг и даже их количество часто не одинаково.
   Немного выше мы уже выяснили, с какой точностью нам желательно работать. В применении к поиску точек привязки эта точность означает поиск таковых с точностью до одного пикселя (если линии широт и долгот шире, то для точек их пересечения лучше брать  визуальные середины). Поэтому, "ручная" отрисовка линий, да еще и по неточной минутной рамке автоматически влечет за собой источник заметных ошибок.
   К счастью, есть способ проще и точнее. Разглядывая сборные листы карт (военно-топографической, Менде, той же десятиверстной карты Стрельбицкого) нетрудно заметить, что листы этих карт в большинстве случаев имеют строго постоянные, определенные ширину и высоту, а, следовательно, границы листов задают удобную альтернативную сетку координат. Если еще вспомнить о том, что "ручное" рисование карты (единственный доступный картографам XIX века способ) всегда начинается с ее рамки, к которой потом привязываются остальные объекты, то мы имеем еще одну, точную и бесспорную альтернативную систему координат в дополнение к имеющейся градусной сетке. Таким образом, помимо легко определимых на карте точек пересечения параллелей и меридианов, мы имеем однозначно определяемые координаты углов листа, а также, зная эти координаты, можем рассчитать и координаты точек пересечения имеющихся на карте линий параллелей и меридианов с рамкой карты. Такой простейший калькулятор недавно был создан и опубликован. То что для привязки мы будем иметь "смешанные" координаты (часть по градусной сетке, а часть - по альтернативной, километровой, верстовой или футовой) не является большим затруднением: так, программа Global Mapper прекрасно справляется с такими "смешанными" координатами, а для популярного Ozi Explorer, который  не позволяет ввести в одном сеансе привязки одновременно координаты в угловых и линейных единицах, можно создать два разных файла привязки, а затем объединить их в текстовом редакторе.

5. Описание собственно процесса привязки мы оставим до второй части этой статьи, практической, а здесь и сейчас представим себе, что процесс уже завершен (тем более, что он знаком большинству пользователей картографических и навигационных программ) и рассмотрим, что мы имеем в результате этого процесса.

6. В результате мы получаем карту, которая точно привязана в своей системе координат. Что это значит? Это значит, в частности, что если мы настроим в нашей навигационной или геоинформационной программе отображение линий сетки координат (как градусной, так и альтернативной) в соответствии с системой координат карты, то эти линии должны в точности совпасть с линиями, "нарисованными" на самом растре карты. Более того, если мы знаем координаты неких точек или объектов в системе координат карты, то мы сможем точно идентифицировать их на карте, а, следовательно, использовать эту карту и для навигации.
   Однако, проблема и заключается в том, что, в подавляющем большинстве случаев, мы не знаем координаты точек в системе координат карты. Доступны они нам в общеземной системе координат WGS84. Для того, чтобы перейти от координат в системе WGS84 к системе координат карты нам нужно будет выполнить некоторое преобразование и только после такого преобразования мы сможем использовать точки, треки и т.п., полученные с современного навигатора для работы с привязанной картой. Подробно и очень доступно о таких преобразованиях написано в известной статье Дмитрия Калинина; здесь лишь скажем, что геометрически эта задача сводится к "подгонке" эллипсоида, на котором создана карта, к общеземному эллипсоиду WGS84 путем сдвига его в пространстве (а также нногда поворота осей и некоторого масштабирования). Для нашего эталона, карты "Генштаба" такое преобразование уже известно в числовом виде, а что касается исторических карт, его нужно предварительно вычислить. Как это делается, подробно описано в упомянутой статье, а самое главное, что мы должны знать: для такого преобразования нам необходим набор точек, для которых мы должны иметь, в свою очередь, два набора координат: один в WGS84, а другой - в системе координат карты, которые мы можем уже определить непосредственно из навигационной или геоинформационной программы, поскольку карта привязана у нас именно в этой системе координат.
   Какие же точки нам следует взять? На мой взгляд, наиболее надежными являются координаты церквей (естественно, нужно помнить о том, что церковь должна быть построена не позже даты создания карты и при этом позже не перестраиваться). Тогда, определив самостоятельно координаты или посмотрев их в имеющихся базах данных (именно по церквям такие базы есть и их легко найти в Сети), мы будем иметь первый набор координат в WGS84. Открыв же привязанную карту в навигационной или геоинформационной программе мы легко определим и второй набор координат.
   Несколько слов о рекомендациях использовать для привязки иные объекты на карте: характерные детали русел рек, мосты, перекрестки и т.д. Хотя эти объекты широко используются при привязке спутниковых снимков, для привязки исторических карт они плохо пригодны: реки меняют свое течение, новые мосты часто возводят рядом со старыми, а не на том же самом месте, дороги перестраиваются и перепрокладываются еще чаще. В общем, по надежности отображения на исторических картах все другие объекты сильно уступают церквям.

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

   Итак, теперь, когда мы представляем себе теоретически, как нужно правильно привязывать историческую карту, мы можем перейти к практике. Это и будет темой следующей статьи.