Идеология и методика привязки километровой сетки листов атласа Арбалета путем введения пользовательской системы координат.

Зона - чечевица Две зоны без искажений не соеденить
     Возьмём атлас московской области, изданный Арбалетом: леса, поля, шоссе и дачные посёлки. Минусов, конечно, много, но нельзя не признать, что это лучшая доступная на данный момент (2006) карта Московской области.
     Наша задача не похвалить или поругать саму карту, а понять, как пользоваться совместно картой и GPS приёмником безо всяких хитроумных девайсов. Делов-то, можете сказать вы с первого взгляда, сетка есть, так что вбиваешь координаты… Но на самом деле, эта сетка не имеет ничего общего с сеткой государственной прямоугольной системой координат, которая нанесена например на топокартах Генштаба.
     Значит, нам остаётся ввести собственную систему координат (можете даже своим именем назвать :), совпадающую с сеткой Арбалета, или же вооружиться линейкой и карандашом и нарисовать общепринятую сетку. Вам нравится идея не один час просидеть с карандашом и линейкой над картой? Если нет, то эта статья для вас!

   Немного Теории

Надо кликнуть туда, где Pulkovo написано, чтобы появился список
     Как известно, принятая у нас поперечно-цилиндрическая проекция Гаусса-Крюгера (Transverse Mercator) и соответствующая ей прямоугольная система координат устроена следующим образом: вся поверхность Земли разбита на равные части, ограниченные меридианами с разностью долгот 6 градусов (координатные зоны), начиная от Гринвичского (нулевого) меридиана. Далее строится цилиндр, касающийся земного эллипсоида по центральному (осевому) меридиану этой зоны, и на него проецируется земная поверхность. Затем этот цилиндр разворачивается в плоскость, и карта зоны готова. Отсюда следует, что все номенклатурные листы карт Генштаба в пределах одной зоны можно склеить без разрывов в одну плоскую мегакарту, простирающуюся от Южного до Северного полюса и имеющую форму чечевицы.
     Соседние две зоны в одну плоскость склеить нельзя. Вообще говоря, без искажений нельзя склеить даже и два листа из соседних зон, но в пределах сотни-другой километров в наших широтах отклонение вертикальной границы зоны от прямой составляет не более 100 метров (1 мм на километровке), так что этим можно пренебречь.
     В каждой зоне определена своя прямоугольная система координат. Так как при данной проекции центральный меридиан и нулевая параллель (экватор) изображаются всегда прямыми взаимно перпендикулярными линиями, именно они и служат осями координат: за ось X принимают центральный меридиан (далее ЦМ), за Y - линию экватора. Чтобы не иметь дело с отрицательными координатами для точек, расположенных западнее ЦМ, введено смещение координаты Y на 500 км, т.е. точки, расположенные на ЦМ, имеют координату Y = 500000 метров.
     В GPS и OZI ЦМ называется Longitude Origin и Central Meridian соответственно, смещение координат - False E и False N (второе в северном полушарии равно нулю). Есть еще такой параметр, как масштаб. В нашей системе координат цилиндр, на который проецируется земная поверхность, касается ЦМ, а не сечет зону на некотором расстоянии от него, как принято в UTM, поэтому масштаб (Scale) у нас должен быть равен 1. В OZI можно ввести еще Latitude Origin, если горизонтальная ось проходит не по экватору, - мы ее всегда оставляем равной нулю, т.к. иначе сместятся горизонтальные линии сетки.

   Эллипсоид

     Но, прежде чем задумываться над системой координат, надо, чтобы модель Земли совпадала в Ozi и GPS приёмнике. Большинство карт бывшего СССР используют эллипсоид (datum) Пулково 1942, который как раз удобнее всего выбрать в качестве такой модели.
     В GPS обычно готового эллипсоида Пулково нет, поэтому его нужно вводить вручную: меню Setup -> Units -> Map datum -> User (для вашей модели может отличаться). Вводим: DX=28, DY=-130, DZ=-95, DA=-108, DF=0.0048079 (подробности на не-грусти). Если ваша модель приёмника не поддерживает пользовательский эллипсоид, значит надо выбрать и в нём и в OZI WGS84.
     В OZI датум Pulkovo 1942 (1) или (2) нужно установить одновременно в двух местах: в привязке карты (File -> Check Calibration of Map) и в дисплее (кнопочка "Select the display Datum" правее строки с координатами и названием текущего эллипсоида - здесь можно ограничиться выбором "Datum of Loaded Map").

   Стандартная прямоугольной система координат

     Теперь вводим пользовательскую прямоугольную систему координат (далее ПСК). В Garmin`овском GPS ПСК обычно вводится через меню Setup -> Units -> Position Frmt -> User grid: Scale = 1, False E = 500000, False N = 0, Longitude Origin в зависимости от текущей зоны: найти ближайший меридиан с запада, кратный 6 градусам, и прибавить к нему 3. Для большей части Московской области, расположенной восточнее 36 градусов восточной долготы, ЦМ равен 39 градусам.
     В OZI есть два пути. Во-первых, можно определить Map Projection в привязке карты (File -> Check Calibration of Map, в выпадающем списке Map Projection выбрать Transverse Mercator, выскочит диалог, где надо, не трогая Std Grids, ввести Latitude Origin = 0, остальное как указано выше).
Кликаем на Projection Setup и появляется окошко, что справа
     Во-вторых, в настройках пользовательской сетки (File -> Configuration -> закладка Maps -> зона Alternate Grid справа, там либо поставить галку "Use Map User Grid", если она определена как указано выше, либо выбрать User Grid из выпадающего списка, нажать кнопочку справа от него и там ввести те же значения).
Тыкаем на кнопочку правее User Grid
     Для включения отображения сетки ПСК в OZI надо пойти в меню Map -> Grid Line Setup -> закладка Other Grid, там поставить галку "Grid On", выбрать Line Interval = 2 km (если работаем с километровками), галку Auto Scale лучше снять, ну и можно включить Label Interval = 2 km, в поле Numbers выбрать радиокнопку "No Meters". Save.
     Если всё сделано правильно, на привязанной карте должна появиться сетка, совпадающая с километровой сеткой ГШ.
Линии сетки совпадают с линиями генштаба
     Метки у горизонтальных линий будут тоже совпадать с надписями на рамке карты, а у вертикальных линий будут совпадать последние три цифры; старшая цифра (или две для зон с двузначными номерами) на рамке карты содержит номер зоны.      
На атласах-двухкилометровках ВКФ им. Дунаева километровая сетка совпадает с ГШ, так что для их привязки достаточно определить на каждом листе координаты вертикальной и горизонтальной линий. Это можно сделать либо сравнив их с километровками ГШ, либо прямо на местности, взяв координаты в ПСК любой известной точки (известной весьма приблизительно, с точностью до 2 км: нам нужно лишь определить, в каком квадрате она находится). Вертикальная линия левее точки и горизонтальная ниже нее будут иметь координаты, равные ближайшему снизу к координатам точки целому числу километров, кратному 4. Кстати, географические координаты (широту и долготу) для справки можно взять на обзорной странице атласа (хотя бы чтобы определить ЦМ зоны).

   Что же делать с Арбалетом?

     Теперь перейдем теперь к Арбалету (рассматриваем те его издания, которые уже имеют километровую сетку). Здесь всё очень запущено и сделано в строгом соответствии с положениями о секретности. Составители, видимо, поступали следующим образом:
  • Склеили карты-километровки в один большой лист, причем пришлось клеить и по границе соседних зон, вводя небольшие искажения (меньше миллиметра).
  • Повернули этот лист таким образом, чтобы меридиан, проходящий примерно посерединке, был направлен на север (это хорошо видно на обзорном листе того же Дунаевского атласа).
  • Убрали нафиг все сетки и порезали этот большой лист на листы атласа. Спасибо, что хоть резали параллельно-перпендикулярно, т.е. границы всех листов параллельны друг другу.
  • На каждый лист наложили свою сетку с шагом в 2 км, параллельную его границам, причем у нее есть особенность, которую не стоит забывать: крайние красные линии отстоят от соседних меньше чем на 2 км.
  • Убрали также всякие другие полезные слои, отдали в типографию, сшили в книжку и продали нам за нехилые бабки :)
     Итак, что мы имеем в сухом остатке:
  • Вертикальные линии сетки на всех листах атласа параллельны друг другу и некоторой линии, не совпадающему с ЦМ ни одной из входящих в атлас зон. О горизонтальных можно сказать только то, что они перпендикулярны вертикальным :).
  • Если склеить два соседних листа по горизонтали или по вертикали, в общем случае их сетки будут смещены друг относительно друга на не кратное двум тысячам число метров.
     То есть в самом общем случае задача привязки сетки листов сводится к определению для каждого своей ПСК.

Центральный меридиан

     Теперь уважаемый читатель достаточно подготовлен, чтобы изложить ему самый интересный и нетривиальный момент. Как было показано выше, склеенная карта атласа была повернута на некий угол. Но ни создатели GPS, ни программист OZI на такой идиотизм не рассчитывали - у них в параметрах ПСК нет угла поворота. И тут мы делаем довольно волюнтаристский ход конем: вместо поворота мы меняем ЦМ! Если за новый ЦМ взять меридиан, параллельный вертикальным линиям сетки атласа, линии сетки такой новой ПСК будут параллельны ему и соответственно всем линиям сетки атласа.
     Волюнтаристский он по той простой причине, что при этом происходит перепроекция сетки, т.е. она не просто поворачивается, но немного искажается. Но как можно показать (уже не в этой статье), при сдвиге ЦМ на 1-2 градуса эти искажения достаточно малы и находятся в пределах точности взятия отсчета по карте с помощью линейки.
     Зато, ЦМ общий для всего атласа, и найти его надо только один раз. Весь вопрос в том, как это сделать. Проще всего было бы отсканировать несколько листов из середины атласа, привязать их в OZI, включить сетку параллелей и меридианов и посмотреть, какой меридиан окажется параллелен вертикальным линиям сетки. Но, как нам завещали классики Марксизма-Ленинизма, мы пойдём  другим путём! (да и сканера нет, и привязывать неохота). Задача разбивается на два этапа: определить угол поворота и найти смещение ЦМ, поворачивающее сетку на этот угол.

      › Угол поворота

     Берем две характерные точки (для Московской области опорные точки лучше брать из зоны восточнее 36 градусов с ЦМ=39, т.к. бОльшая часть области расположена именно там) в пределах одного листа Арбалетовского атласа, желательно поближе к одной из вертикальных линий сетки, и определяем угол между прямой, соединяющей их, и вертикалью. Для этого находим координаты этих точек относительно сетки Арбалета (любую горизонтальную линию берём за x, вертикальную - за y) и считаем арктангенс отношения разностей горизонтальных и вертикальных координат по формуле:
     Эти же две точки отмечаем на любой привязанной карте в OZI и находим их координаты в ПСК, соответствующей зоне этого листа карты. По этим координатам находим угол наклона прямой, соединяющей эти точки, по той же формуле .
     Разность этих двух углов и есть угол, на который надо повернуть Арбалет, чтобы его сетка стала параллельной ГШ.

      › Сдвиг ЦМ

     Теперь вычисляем сдвиг ЦМ относительно ЦМ той зоны, для которой мы определили угол поворота.
     Если мы посмотрим на любую мелкомасштабную карту с нанесенными на нее меридианами, хотя бы на тот же обзорный лист Дунаевского атласа, мы увидим, что сдвинутые на 1 градус меридианы сходятся под определенным углом. Логично предположить, что угол этот одинаков для любых двух меридианов, отличающихся на градус, т.е. есть некий безразмерный коэффициент, равный углу схождения соседних меридианов и определяющий отношение угла схождения двух меридианов на карте к углу - разности их долгот.
     Этот коэффициент можно было бы непосредственно измерить на обзорной карте. Можно также перебрать горизонтальную полосу листов ГШ, где не потеряно зарамочное оформление, и вытащить оттуда средние сближения меридианов (это угол между меридианом и вертикальной линией сетки где-то посередине листа) - по изменению этого угла в зависимости от сдвига листа от центра зоны можно легко вычислить искомый коэффициент. Но это всё сведения, составляющие государственную тайну, поэтому мы вычислим этот угол гораздо точнее, руководствуясь самыми общими соображениями. :)
     Итак, считаем Землю сферой - для данной задачи этого вполне достаточно. Пусть B у нас будет широта. Несложно показать, что … наш коэффициент равен Sin(B). Для широты 56 градусов он равен 0,83. Для достижения максимальной точности этот коэффициент надо брать именно на той широте, для которой мы определили угол поворота. Например, для листа O-37-133, нижняя рамка которого как раз идет по 56 параллели, и который отстоит от центра зоны на 2o45`, сближение меридианов составляет 2o17`. Делим одно на другое, и получаем наши 0,83o. А вы говорите гостайна…
     
Маленькое лирическое отступление. Из этого же коэффициента легко вывести кривизну крайнего меридиана зоны: угол его наклона к ЦМ (и линиям сетки) равен 3o*Sin(B). Для области от широты B1 до B2 разность углов составит 3o*(Sin(B2)-Sin(B1))= 3o*2*Cos((B2+B1)/2)*Sin((B2-B1)/2). Для Московской области B2=57, B1=54, и разность углов составит 0,089o, или плюс-минус 0,044o от прямой, касательной к крайнему меридиану в середине области. Тангенс половины этого угла (0,022o), умноженный на половину размера области с севера на юг 166 км (можно вычислить как 1,5o*111км/ o), дает 64 метра - именно настолько отклоняется крайний меридиан зоны на краях атласа Московской области внутрь от касательной прямой. Таким образом, при сшивке двух соседних зон составителям атласа надо было как-то заштопать дырку между ними шириной до 128 метров, или 1,3 мм в масштабе атласа.

     Далее уже дело техники. Делим требуемый угол поворота на наш коэффициент, и получаем сдвиг ЦМ. Чтобы не попутать со знаком, сверяемся с обзорной картой, прибавляем или вычитаем его из ЦМ зоны, - и вуаля! ЦМ атласа найден!
     Для Арбалетовского атласа Московской области ЦМ равен 37o30`. Это число позже было проверено по горизонтальному ряду листов 46-65, оказавшихся счастливым образом склеенными без сдвига горизонтальных линий сетки между листами, и дает на расстоянии чуть более 300 км ошибку менее 100 м! Но о счастливо склеенных листах позже. Относительная круглость ЦМ имеет свое объяснение: он идет почти через центр Москвы и области, и кроме того по нему проходит граница номенклатурных листов-километровок, например N-37-3 и N-37-4.
     После вычисления ЦМ его корректность надо обязательно проверить, введя его значение в ПСК OZI и убедившись, что теперь углы совпадают. Если окажется, что угол чуть отличается, сделать второе приближение, вычислив новое смещение ЦМ относительно уже введенного.
     Вообще к определению ЦМ надо подойти со всей ответственностью, т.к. при смене его, даже на незначительную величину, полетит привязка всех листов. А неправильно определенный ЦМ дает поворот системы координат, который сдвигом False E и False N не лечится. Если в атласе есть вертикальный или горизонтальный ряд листов, сетка которых точно стыкуется, ЦМ лучше всего определить по ним: так будет достигнута наибольшая точность.

   False E и False N

     Остался сущий пустяк - найти False E и False N для каждого из 72 разворотов атласа. :-] Для каждого листа при известном ЦМ достаточно одной точки, но лучше для проверки брать хотя бы пару. Технология следующая:
    1) Берем характерную точку с координатами, известными либо по карте ГШ, либо по GPS.
    2) Определяем ее координаты (Eold,Nold) в ПСК уже с найденным нами ранее ЦМ атласа и любыми False Eold и False Nold. Это можно сделать как в GPS, так и в OZI, задав ПСК как указано выше. В OZI удобно их сделать равными нулю.
    3) Определяем ее же координаты (Eатл,Nатл) относительно сетки Арбалета (не забывать, что крайними красными горизонтальными линиями сетки пользоваться нельзя!) Начало координат можно расположить либо так, чтобы пересечение чёрных линий в левом нижнем углу имело координаты (2000, 2000), либо сдвинуть его так, чтобы координаты стали к примеру (1002000,1002000) метров.
         а) выбрав нулевые координаты края, мы сразу видим, если вторая координата отрицательна (GPS показывает -----;-----) или более 28000, значит мы вышли за наши калибровки и координаты уже не имеют смысла.
         б) выбрав координаты вторым образом, мы учитываем ситуации на стыке листов, когда мы еще находимся на листе, но уже или западнее, или южнее крайних красных линий. Выбор смещения +1000000 позволяет нам и в этом случае видеть свои координаты. О выходе за линию сигнализирует смена старших разрядов с 100… на 099…
    4) Находим новые False Enew и False Nnew, прибавив к исходным False Eold и False Nold соответствующую разность координат опорной точки по атласу и OZI (или GPS).
    False Enew=False Eold + Eатл - Eold
    False Nnew=False Nold + Nатл - Nold

   Итого

     Вот вроде и всё. Для оптимизации процесса можно учесть некоторые индивидуальные особенности атласа, а именно счастливо стыкующиеся листы. Для атласа Московской области закономерности следующие:
  • У большинства горизонтальных рядов листов горизонтальные линии сетки совпадают, а вертикальные идут с шагом 2 км, т.е. для всего ряда можно ввести единую систему координат.
  • Некоторые ряды стыкуются и по вертикали - имеют общую вертикальную сетку, - а именно 06-11 и 12-19, 66-85 и 86-105. Но мы этим пользоваться не будем.
     Итак, нам остаётся засесть над картой, и, учитывая совпадение сетки в горизонтальных рядах, считать False E и False N для начальных страниц ряда. Для пущей уверенности можно посчитать их и для других разворотов ряда и усреднить полученные значения. В результате этого мы получим нечто вроде этого:
стрFalse EFalse N
6 +0037011-6291539
12 +0069042-6264051
20 +0131267-6236518
32 +0147415-6209034
46 +0149045-6181560
66 +0144825-6154023
86 +0144787-6126575
106 +0144792-6113508
112 +0048742-6099082
126 +0024377-6074343
136 +0007897-6063135
138 -0027436-6044090
144 -0045248-6029992
146 -0072083-6025094
148 -0048539-6009897

   Примерчик напоследок

     Например, мы едем-едем по Р-115, нам надоедает асфальт и мы решаемся разведку - к ур. Климовка. Что нам надо? Найти тропинку от Дарищи и двигаться по ней на юг. Чтобы не запутаться с поворотами, лучше всего вбитить координаты нашей точки.
     Сначала определяем страницу начала ряда по обзорной карте - 112. Вбиваем в GPS Longtitude origin: 37o30`, Scale: 1, False Easting +48742, False Northing: -6099082. Так как это не точечный объект, а довольно большое поле, мы определяем координаты на глаз: получаем 136800, 17400. Вот и всё! Ошибка составляет около 300 метров. Это при точности "на глаз"! Линейкой: 136770, 17780, что даёт ошибку всего в несколько метров!


     © Жураковский Дмитрий, Черкасов Николай. 2006.




Hosted by uCoz