读取下面的GNSS时间序列数据,需要解决两个问题:(1)如何实现十进制时间(年)转换成年月日?
(2)如何实现LLH转换成ENU坐标系?
2011.0027 YNZD 99.697985844 27.823145802 3296.9366 2.8 1.0 4.8 0.145 -0.311 -0.293
2011.0055 YNZD 99.697985737 27.823145852 3296.9438 1.7 0.7 3.4 0.094 -0.249 -0.315
2011.0082 YNZD 99.697985837 27.823145850 3296.9551 1.7 0.7 3.4 0.094 -0.254 -0.325
2011.0110 YNZD 99.697985750 27.823145905 3296.9418 1.7 0.7 3.4 0.068 -0.201 -0.288
2011.0137 YNZD 99.697985736 27.823145879 3296.9357 1.7 0.7 3.6 0.085 -0.237 -0.319
2011.0164 YNZD 99.697985740 27.823145857 3296.9370 1.7 0.7 3.4 0.125 -0.253 -0.319
2011.0192 YNZD 99.697985686 27.823145846 3296.9356 1.7 0.7 3.4 0.081 -0.245 -0.313
解决办法:
(1)需要注意如何实现取整天?设置一个时间容差,比如,与24时比60分钟以内认为加一天!
%将十进制年拆分为年和日
[YYYY, DOY] = deal(floor(tm), (tm - floor(tm)) * 365);
%将年和日转换为 MATLAB 内部时间格式
dt = datetime(YYYY,1,1) + days(DOY);
for i =1:length(dt)
[h,m,s]=hms(dt);
seconds = h*60*60 + m*60 + s;
if seconds > 23*60*60
dt(i).Day = dt(i).Day + 1;
end
end
(2)采用MATLAB自带程序lla2enu.m
enu=lla2enu(timeseries.llh',timeseries.refllh','flat');
转载本文请联系原作者获取授权,同时请注明本文来自陈超科学网博客。
链接地址:https://wap.sciencenet.cn/blog-858128-1418929.html?mobile=1
收藏