Как в MATLAB перевести координаты из формата «градусы-минуты» в градусы.
В прошлый раз мы с вами переводили долготы из формата [0 360] в формат [-180 180]. Сегодня мы разберёмся ещё с одной проблемой, которая периодически встречается в работе океанолога да и вообще любого географа.
Широты и долготы принято измерять в градусах, в одном градусе 60 минут, а в одной минуте 60 секунд, секунды обычно записывают уже десятичной дробью, что намного удобнее. А ещё удобнее взять и сразу записать всё просто в градусах, а десятичной дробью записывать всё что меньше градуса и никаких минут и секунд.
Т.е. вместо 20°30′ записывать 20.5°, или вместо 40°59’59» записывать 40.9997°. Если вы не штурман, а датасайнтист, то в большинстве случаев так намного удобнее. Однако данные иногда приходят нам с координатами, записанными в разных форматах. Конечно, с пересчётом из одного формата в другой справится даже школьник, однако в MATLAB эти лишние телодвижения никчему, так как есть родная функция, которая сделает всё за вас. Вернее говоря, это несколько функций. Первая, dm2degrees переводит координаты из формата «градусы-минуты» в градлусы. Для её работы необходимо иметь матрицу, состоящую из двух столбцов, в первом столбце указаны градусы (только целые числа), во втором минуты (можно с десятыми долями), например:
lat = [50 34; 51 45.3; 53 21.89]
lat =
50.0000 34.0000
51.0000 45.3000
53.0000 21.8900
В итоге, скормив эту матрицу функции dm2degrees, вы получите:
dm2degrees(lat)
ans =
50.5667
51.7550
53.3648
Конечно, если у вас данные записаны не в одной переменной, а в двух разных, то проблем тоже не возникнет:
lat_d = [50; 51; 53]
lat_d =
50
51
53
lat_m = [34; 45.3; 21.89]
lat_m =
34.0000
45.3000
21.8900
dm2degrees([lat_d lat_m])
ans =
50.5667
51.7550
53.3648
Если ваши данные представлены в формате «градусы — минуты — секунды», то вам нужна будет другая функция dms2degrees. Работает она практически также, только на вход ей нужна теперь матрица состоящая из трёх столбцов (градусы, минуты, секунды). Грубо говоря, вам нужно будет записать dm2degrees([lat_d, lat_m, lat_s]).
Есть и обратные функции degrees2dm и degrees2dms, которые конвертируют всё обратную сторону.
Чтобы не пропустить новые материалы с рецептами по работе с океанологическими данными, подпишитесь на канал в Telegram: https://t.me/koldunovaleksey