Перепроекция графических объектов

Многие картографические функции Mapping Toolbox™ проецируют признаки на оси карты на основе их назначенных положений широты-долготы. Широты и долготы математически преобразованы в положения x и y с помощью формул для текущей проекции карты. Если проекция карты или ее параметры изменяются, объекты на осях карты могут быть автоматически перепроектированы, чтобы соответствующим образом обновить отображение карты.

Таблица суммирует четыре распространенных примера использования для изменения проекции карты в осях карты с setm или для перепроектирования картографических данных, нанесенных на обычный MATLAB® осей.

Пример использования отображенияТип осейПоведение репроекции
Постройте график географических (широта-долгота) векторных данных координат или сетки данных с помощью функции Mapping Toolbox из релизов до версии 2 (например, plotm)Сопоставить осиАвтоматическая репроекция
Постройте график данных о географических векторах с geoshowСопоставить осиНет автоматической репроекции; удалите графические объекты перед изменением проекции и перерисовайте их после.
Постройте графики сетки данных, изображений и контуров с географическими координатами с geoshowСопоставить осиАвтоматическая репроекция; это поведение может измениться в будущем релизе
Постройте проекционный (x-y) вектор или данные растровой карты с mapshow или с графической функцией MATLAB (например, line, contour, или surf)Правильные осиРучная репроекция (перепроектировать координаты с projinv/projfwd); удалите графические объекты перед изменением проекции и перерисовайте их после.

Вы можете использовать handlem для определения объектов, удаляемых при необходимости удаления вручную. Пример его использования см. в разделе Работа с объектами по имени.

Автоматическая перепроекция отображенных объектов и ее ограничения

Использование setm функция, вы можете изменить текущую проекцию карты на лету, если отображение карты было создано способом, который позволяет перепроектировать. Обратите внимание, что отображения карты может содержать объекты, которые не могут быть перепроектированы, и может потребоваться явное удаление и перерисовка. Автоматическая репроекция будет происходить, когда вы используете setm для изменения MapProjection свойство или любое другое свойство оси из следующего списка:

  • AngleUnits

  • Aspect

  • FalseEasting

  • FalseNorthing

  • FLatLimit

  • FLonLimit

  • Geoid

  • MapLatLimit

  • MapLonLimit

  • MapParallels

  • Origin

  • ScaleFactor

  • TrimLat

  • TrimLon

  • Zone

Автоматическая репроекция выполняется для объектов, созданных с помощью любой из следующих функций Mapping Toolbox:

Вышеописанные функции Mapping Toolbox аналогичны стандартным графическим функциям MATLAB, имеющим то же имя, за вычетом конечных m. Можно использовать оба типа функций для построения графика данных на осях карты, если известно, что стандартные графические функции MATLAB не применяют преобразования проекции карты и, следовательно, требуют, чтобы вы задавали положения в пространстве карты x-y.

В целом объекты, созданные с geoshow или с комбинацией вызовов на projfwd далее следуют обычные графические функции MATLAB, такие как line, patch, или surface, не перепроектируются автоматически. Вы должны удалять такие объекты каждый раз, когда вы изменяете одно или несколько свойств осей карты, перечисленных выше, и затем повторно отображать их.

Если у вас есть предварительно проектированные векторные или растровые данные карты или вы читаете такие данные из файлов, вы можете отобразить их с mapshow, mapview, или стандартные графические функции MATLAB, такие как plot или mesh. Если его проекция известна и включена в библиотеки проекций Mapping Toolbox, можно использовать ее параметры для проецирования геоданных в географических координатах, чтобы отобразить их в тех же осях.

Репроектируемость карт, сгенерированных с помощью геопоказ

Если вы хотите иметь возможность изменять проекцию карты на лету, вы не должны использовать geoshow. Некоторые функции отображения, такие как patchm , fillm, displaym, и linem, позволяет вам перепроектировать данные векторной карты, но geoshow не делает. То есть, когда вы меняете проекцию осей карты, с setm для примера вектора символику карты, которая была создана с geoshow не будет преобразован. Данные с сеткой, визуализированные с geoshow (когда DisplayType является surface, texturemap, или contour), однако, может быть перепроектирован.

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