简介
在数学中,表示角度的度、分、秒分别使用°
、′
、″
符号进行表示。
1°=60′,1′=60″ ,1°=3600″。
在表示经纬度时,常常会用到度数和度分秒两种表示方法,例如深圳的经纬度为北纬N22°32′43.86″
, 东经E114°03′10.40″
。用度数表示则是北纬N22.54551667°
,东经E114.05288889°
。
这里我们利用Matlab,给出了两种格式相互转换的函数。
度分秒转换为度数的函数
function degrees = dms2d(degree,minute,second,varargin)
% degree, minute and second to degrees
% e.g., degrees = dms2d(22, 32, 43.86)
% 'sd' is used to specify the number of decimal places
% e.g., degrees = dms2d(114, 05, 52.35, 'sd', 5)
% Yuechu Wu
% 12131066@mail.sustech.edu.cn
% 2022-09-13
% updated default parameter sd = 8
% 2023-03-06, Yuechu Wu
% significant digits after decimal point, default = 8
p = inputParser;
addParameter(p,'sd',8);
parse(p,varargin{:});
sd = p.Results.sd;
degrees = degree + minute/60 + second/3600;
degrees = vpa(degrees, sd+length(num2str(degree)));
return
如果需要设置有效小数位数,可以指定函数中的sd
的值。
利用这个函数,我们可以将深圳的经纬度换算成度数的格式:
>> degrees = dms2d(22, 32, 43.86)
degrees =
22.54551667
>> degrees = dms2d(114,03,10.40,'sd',5)
degrees =
114.05289
度数转换为度分秒的函数
function [degree, minute, second] = d2dms(degrees,varargin)
% degrees to degree, minute and second
% e.g., [degree, minute, second] = d2dms(22.54551667)
% 'sd' is used to specify the number of decimal places of second
% e.g., [degree, minute, second] = d2dms(114.097875,'sd',3)
% Yuechu Wu
% 12131066@mail.sustech.edu.cn
% 2022-09-13
% updated default parameter sd = 2
% 2023-03-06, Yuechu Wu
% significant digits after decimal point, default = 2
p = inputParser;
addParameter(p,'sd',2);
parse(p,varargin{:});
sd = p.Results.sd;
degree = fix(degrees);
minute = fix((degrees - degree) * 60);
second_int = fix((degrees - degree - minute/60)*3600);
second = (degrees - degree - minute/60)*3600;
second = vpa(second, sd+length(num2str(second_int)));
return
同样地,我们可以将度数转换为度分秒:
如果需要改变秒的小数位数,可以指定函数中的sd
的值。
>> [degree, minute, second] = d2dms(22.54551667,'sd',5)
degree =
22
minute =
32
second =
43.86001
>> [degree, minute, second] = d2dms(114.05288889)
degree =
114
minute =
3
second =
10.4