Карта мира с произвольным центральным меридианом в MapInfo: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 44: Строка 44:


=== Разрезание слоя ===
=== Разрезание слоя ===
<gallery widths="120px" heights="80px" perrow="4">
File:Non-std_map_17.png|Откроем '''ocean''' и слой островов
File:Non-std_map_18.png|Выделим все объекты слоя островов
File:Non-std_map_19.png|Перейдём в режим выбора изменяющих объектов
File:Non-std_map_20.png|Укажем '''ocean''' в качестве изменяющего объекта
File:Non-std_map_22.png|После команды [Erase Outside] сохраним объекты в новый слой '''GSHHS_c_L1'''; восстановим таблицу
File:Non-std_map_27.png|Повторим действия с выделениями; после команды [Erase] экспортируем объекты в файл '''GSHHS_c_L1_1.MIF'''
</gallery>


=== Перемещение половины слоя на 360° ===
=== Перемещение половины слоя на 360° ===

Версия от 15:06, 24 марта 2013

Эта страница является черновиком статьи.


MapInfo при отображении карты в проекции не сворачивает слои вокруг меридиана-антипода. Задача подготовки слоёв для отображения ложится на плечи картографа.

Введение

Как многие ГИС, MapInfo при отображении карты в какой-либо проекции не сворачивает отображаемые слои вокруг меридиана-антипода, который отстоит на 180° от центрального. Это позволяет создавать карты мира, разрезанные по произвольной линии, — линии смены дат, например. Однако для пользователя свобода, как обычно, идёт рука об руку с необходимостью. Если имеющаяся в наличии карта должна быть отображена в проекции, центральный меридиан которой отличается от среднего меридиана исходной карты, в форме милой глазу симметричной фигуры, то картографу для этого придётся приложить некоторые усилия.

Данные

В качестве тестового материала используем карту мира GSHHG, которая распространяется под лицензией LGPL. Эта карта развивается как географическая основа открытого проекта GMT. GMT сворачивает изображение вокруг меридиана-антипода, и слои карты в «родном» формате не содержат разрезанных объектов. Однако перед экспортом слоёв в формат ESRI shapefiles полигоны под меридианом 180° разрезаются на восточную и западную часть, что даёт карту в стандартном диапазоне долгот ±180°.

Постановка задачи

Для демонстрации возьмём из GSHHG несколько слоёв грубого (crude) разрешения. Поставим перед собой цель отобразить карту в проекции Робинсона с центральным меридианом 150° з. д. Для достижения этой цели создадим новые слои в диапазоне долгот от 330° з. д. до 30° в. д. Кроме того, дополним карту слоями сетки параллелей и меридианов grid15 и «океана» ocean.

Построение карты

Программа PacWorld

Утилита PacWorld от IAA Pty Ltd решает задачу преобразования карты из стандартного диапазона долгот в диапазон 0°–360°. Поскольку она доступна в кодах MapBasic, можно модифицировать её для работы с произвольным центральным меридианом.

Алгоритм работы начинается с создания полигона, одной из сторон которого является начальный меридиан. Объекты слоя разрезается этим полигоном. Затем объекты западного полушария модифицируются: каждый узел перемещается на 360° к востоку.

Недостатки PacWorld, помимо упомянутой жёсткой привязки к меридиану 180° в. д.:

  • разрезы материков на краю карты отображаются в проекциях несглаженными прямыми отрезками; — легко исправить, запрограммировав создание промежуточных узлов в стороне полигона, образованной начальным меридианом;
  • некорректно трансформируется Антарктида; — можно обойти эту проблему через конвертирование полигона в полилинию и обратно с некоторым редактированием;
  • зависание при переносе объектов с большим количеством узлов; с картой GSHHG это происходит уже для слоя континентов со средним (intermediate) разрешением; похоже, дело в принципиальной ограниченности ресурсов, выделяемых программам MapBasic; — фатальный недостаток.

Проблема с зависанием связана не с процедурой разрезания. Зависание происходит в процессе перемещения узлов. Можно модифицировать PacWorld так, чтобы он только разрезал объекты, а перемещение осуществить другими средствами. Однако с методической точки зрения полезно поработать руками.

Конструирование координатной сетки и «океана»

Построим слой параллелей и меридианов grid15 программой GridMaker, входящей в набор стандартных утилит MapInfo. Используем четыре линии по контуру для создания слоя «океана» ocean.

Разрезание слоя

Перемещение половины слоя на 360°

Утилита shiftxy

Воссоединение слоя

Заключение