Как конвертировать долготы из формата [0 360] в [-180 180] в MATLAB

В сегодняшней заметке мы переведём долготы, записанные в формате [-180 180] в формат [0 360] и обратно.

Как известно, долготы обычно принято отсчитывать от нулевого меридиана. На запад от него - западная широта, на восток - восточная. Если буквенные обозначения использовать неудобно (а их при работе с данными неудобно использовать практически всегда), то восточные долготы записываются как положительные числа, а западные - как отрицательные. Такой формат записи будем обозначать [-180 180].

Однако иногда отрицательных значений избегают и долготы отсчитывают не на запад и восток от нулевого меридиана, а только на восток. Такой формат географических координат будем называть [0 360] и бывают случаи, когда данные приходят именно нём. Что же делать, если вам хочется перевести формат [0 360] в [-180 180]? Процедура несложная:

lon_new=rem((lon+180),360)-180;

где rem - функция, которая находит остаток от деления (lon+180)/360. Такая функция есть во многих языках программирования, но конкретно этот пример записан для MATLAB.

Кроме того, в MATLAB есть специальная функция wrapTo180, которая избавит вас от написания каких либо математических операций. Например,

wrapTo180([0 50 175 195 355])

ans =

     0    50   175  -165    -5

Если же вам хочется конвертировать координаты в формат [0 360], то есть аналогичная функция - wrapTo360:

wrapTo360([-10 -5 5 180 185])

ans =

   350   355     5   180   185

Бываю и более непривычные форматы, когда избегают всяческих резких переходов в долготах, и градусы отсчитываются от минус бесконечности до плюс бесконечности, т.е. после 359 идёт не 0, а 360, 361 и т.д. Данная функция с лёгкостью справляется и с этой задачей:

wrapTo360([-4000 -500 -5 89 567])

ans =

   320   220   355    89   207
wrapTo180([-4000 -500 -5 89 567])

ans =

   -40  -140    -5    89  -153

Ну и напоследок следует сказать, что при картировании ваших данных может случиться, что вам нужно, чтобы долготы записывались в формате [0 360] (по умолчанию на картах долготы записываются в [-180 190]), то делается при помощи функции mlabelzero22pi.

 telegram

В следующий решим ещё одну проблему, связанную с форматом записи координат. Чтобы не пропустить новые материалы, подпишитесь на канал в Telegram: https://t.me/koldunovaleksey