chaoshu的个人博客分享 http://blog.sciencenet.cn/u/chaoshu

博文

如何实现十进制时间(年)转成年月日

已有 566 次阅读 2024-1-22 15:16 |个人分类:时间序列|系统分类:科研笔记

 读取下面的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);

image.png

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

1705907613118.jpg

(2)采用MATLAB自带程序lla2enu.m

enu=lla2enu(timeseries.llh',timeseries.refllh','flat');



https://blog.sciencenet.cn/blog-858128-1418929.html

上一篇:如何获得水文站经纬度
下一篇:GMT绘图技巧(2)——多Y轴
收藏 IP: 59.71.241.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-13 23:13

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部