Привязка исторических карт. Часть 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 точек (углы листов, середины сторон и центр), а при желании добавить альтернативные координаты из километровой сетки.
В случае трехверстной военно-топографической карты, карт Менде и т.д. зачастую такой удобной возможности нет. Листы трехверстки хотя и содержат нанесенную градусную сетку, но бывает, что лист может содержать лишь одну параллель, пересеченную двумя-тремя меридианами приблизительно в центре листа. Для привязки такое расположение точек не годится; точки привязки (и это крайне желательно!) должны равномерно покрывать всю площадь карты, лишь тогда возможно избежать значительных искажений и ошибок. Да и количество точек для более или менее точной привязки должно быть не менее пяти. Что делать в таких случаях?
Одним из способов решения проблемы может быть добавление на карту недостающих линий градусной сетки. В самом деле, листы трехверстки на полях имеют минутные рамки, которые, в свою очередь, еще дополнительно разбиты штрихами. Таким образом, можно в любом графическом редакторе через нужные точки на рамке провести линии (пользуясь тем, что, в случае проекции Бонна для трехверстки в пределах одного листа меридианы являются практически идеальными прямыми линиями, а кривизна параллелей также практически неизменна). Тем не менее, этот способ имеет два существенных недостатка. Первый: он трудоемок, причем для каждого листа работу приходится делать заново. Второй недостаток: не всегда достаточная точность минутной рамки, а штрихи внутри каждой минуты имеют переменный шаг и даже их количество часто не одинаково.
Немного выше мы уже выяснили, с какой точностью нам желательно работать. В применении к поиску точек привязки эта точность означает поиск таковых с точностью до одного пикселя (если линии широт и долгот шире, то для точек их пересечения лучше брать визуальные середины). Поэтому, "ручная" отрисовка линий, да еще и по неточной минутной рамке автоматически влечет за собой источник заметных ошибок.
К счастью, есть способ проще и точнее.
Полностью текст статьи вы можете прочитать, посетив страницу автора на Boosty.