Как конвертировать долготы из формата [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: https://t.me/koldunovaleksey