МСК и MapInfow.prj

Значительно количество таблиц ГИС MapInfo, виденных мною, были созданы в проекции «План-схема (метры)». Значения пределов координатной системы плана (bounds) варьировались, но наиболее часто встречающееся значение от -10’000’000 метров до +10’000’000 метров по осям X и Y. Указанная система координат таблиц MapInfo становится неподходящей для работы в ряде случаев, например:

  1. работа с протяженным объектом, расположенном в нескольких зонах местной системы координат (МСК);
  2. необходимость перевода картографического материала, например, в WGS-84;
  3. принятие государственными органами власти решения о переходе на иную местную систему координат.

Конечно, существует целый ряд способов решения перечисленных проблем, но наиболее простой и корректный, с моей точки зрения — использование файла описаний систем координат mapinfow.prj. Укажу сразу первоисточники информации — это, естественно, Руководство пользователя MapInfo:

  • для версии 8.5 это Глава 13 «Работа с системами координат и проекциями»;
  • для версии 10.5 это Глава 14 «Работа с системами координат и проекциями».

Итак, mapinfow.prj это обычный текстовый файл, расположенный в каталоге MapInfo. Возьму в качестве примера три описания системы координат (СК), то есть три строки из файла mapinfow.prj.

  1. «Долгота / Широта (WGS 84)», 1, 104
    «Долгота / Широта (WGS 84)» — название СК, отображаемое в окне интерфейса MapInfo «Выбор проекции»
    1 — проекция «Долгота/Широта»
    104 — топоцентрическая СК «World Geodetic System 1984 (WGS 84)»
  2. «План-схема (метры)», 0, 7
    «План-схема (метры)» — название СК, отображаемое в окне интерфейса MapInfo «Выбор проекции»
    0 — способ отображения объектов, при котором координаты объектов не привязаны к координатой системе Земли
    7 — единица измерения «метры»
  3. Внимание! Следующей строки нет в стандартном файле mapinfow.prj.

  4. «МСК 02 — зона 1», 8, 1001, 7, 55.03333333333, 0, 1, 1300000, -5409414.70
    «МСК 02 — зона 1» — название СК, отображаемое в окне интерфейса MapInfo «Выбор проекции»
    8 — тип проекции «Поперечная Меркатора»
    1001 — регион «Pulkovo 1942, Germany, Krassovsky»
    7 — единица измерения «метр»
    55.03333333333 — нулевая долгота «55 градусов 2 минуты»
    0 — нулевая широта «0 градусов»
    1 — масштабный множитель «1»
    1300000 — восточное смещение «1300000 метров»
    -5409414.70 — северное смещение «-5409414.70 метров»

Таким образом, если ваша таблица имеет любую топоцентрическую СК (Пулково 1942 — зона 10, или Долгота/Широта) и в mapinfow.prj имеется строка описания МСК «МСК 02 — зона 1» вы легко можете как отображать карту в координатах данной МСК, так и сохранить копию таблицы в координатах МСК. В меню MapInfo «Файл» => «Сохранить копию…» => «Проекция…»
При работе программы на MapBasic, вы можете динамически переключаться между различными СК, работая с одной и той же таблицей или картой. Ещё раз оговорюсь — при условии что ваши таблицы имеют топоцентрическую СК, а не «План-схема». Необходимую на данный момент СК может указывать пользователь в диалоговом окне вызываемом функцией ChooseProjection$().

Выбор проекции

Всё перечисленное выше актуально и для таблиц с координатами растровых изображений. Простой пример — если ваш растр зарегистрирован в координатах «Пулково 1942 зона 10» СК «План-схема», а вектор в МСК «МСК 02 — зона 1» СК «План схема» — к сожалению, без дополнительной трансформации, вам не удастся совместить эти данные на одной карте. Если же СК растра и вектора топоцентрические, ну и пусть СК разные — вы легко совместите их на одной карте. Относительно растра зарегистрированного в топоцентрической СК, добавлю ещё, что его можно динамически перерегистрировать в MapInfo «Таблица» => «Растр» => «Регистрация изображения…» => «Проекция». Перерегистрировать в любую топоцентрическую СК, прописанную в mapinfow.prj!
С использованием указанной технологии, необходимым условием для работы с таблицами и картами в региональных, местных системах координат является определение параметров конкретной МСК — определение осевого меридиана и смещений по долготе и широте. Данный вопрос выходит за рамки этой статьи. Отмечу лишь, что региональные МСК обычно базируются на параметрах государственных систем координат 1963 или 1942 годов.
Отмечу проблему расчёта площадей и расстояний в различных топоцентрических системах координат. Суть проблемы — различные осевые меридианы для разных зон или СК. Простой пример:
  1. создаю таблицу p1942_10.tab, СК таблицы «GK зона 10 (Пулково 1942)»;
  2. создаю полигон с координатами
    10364244.05 5765412.68 
    10365235.99 5765910.4 
    10365733.32 5765026.98 
    10364808.41 5764556.19
  3. сохраняю копию таблицы p1942_10.tab под именем msk02_01.tab, СК новой таблицы устанавливаю «МСК 02 — зона 1». Координаты полигона пересчитываются встроенными средствами MapInfo к новым значениям
    1299303.26 354152.23 
    1300281.16 354676.47 
    1300802.09 353807.02 
    1299890.46 353311.5
  4. сравниваю значения площади полигона в разных СК (измерения производятся на плоскости)
    для p1942_10.tab площадь равна 1’090’854.3 кв.м.
    для msk02_01.tab площадь равна 1’090’365.2 кв.м.
    итого разница составляет 489.1 кв.м.

Все закономерно, так как для первой таблицы значение осевого меридиана 57 градусов, а для второй 55 градусов 2 минуты. Один и тот же участок поверхности земного шара проецируется на разные меридианы, соответственно значения координат пересчитаны верно, но расстояния и следовательно площади изменяются. Практический совет — если вам важна точность вычислений — считайте самостоятельно по новым координатам или производите расчёты именно в той таблице, СК которой соответствует необходимым параметрам вычисления.
На практике периодически возникает задача перевода таблиц MapInfo из СК «План-схема» в топоцентрическую СК, ну или наоборот. Если это одна-две-три таблицы это не вызывает проблем. Как указано выше «Файл» => «Сохранить копию…» => «Проекция…»
Но вот если таблиц десятки-сотни? Для оперативно решения этой проблемы написана программа преобразования системы координат группы таблиц TransCoor.mbx. Страница программы TransCoor.
Всем комфортной работы в MapInfo! :-)

© Бирючков Д.А. 2011

Социальные комментарии Cackle