爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2540|回复: 1

[混合编程] IDL编程学习之按字符读取文件(精度截断问题)

[复制链接]

新浪微博达人勋

发表于 2018-8-8 13:48:52 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
附件数据有3列,经度-纬度-PM10浓度:
QQ截图20180808105922.jpg
如果用read_ascii()函数读取,小数位数不会全读进来:
6位有效数字.jpg
经纬度小数点后第6位是米,第4位是百米,第3位是千米,可见误差还是很大的!
怎么办呢?
先确定行数:
a=read_ascii('C:\Users\YGDY\Desktop\pm_example.txt',data_start=0)
x=a.field1
nn=size(x)
;行数是nn[2]

读数据:
openr,lun,'C:\Users\YGDY\Desktop\pm_example.txt',/get_lun

放进变量x中:
x=strarr(1,nn[2])
readf,lun,x

以第一行为例
for i=0,0 do begin

输出原始数据:
help,x

数据之间的间隔符好像不是空格,直接用strmid(x,10,1)进行识别,并以此分隔:
y=strsplit(x,strmid(x,10,1),/extract)

去除空格:
y2=strcompress(y,/remove_all)
print,double(y2)
endfor

输出:
<Expression>    STRING    = '120.093412 30.863572 87.70491803'
       120.09341       30.863572       87.704918

可惜!输出的数限制为8位有效数字!用float()或者long()进行强制转换则位数更少!
看来得仔细研究下format关键字,看看是否可以设置小数位数或者有效数字位数。按道理,浮点型完全可以支持6位的小数呀!

pm_example.txt

2.58 KB, 下载次数: 0, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-8-8 14:56:42 | 显示全部楼层
厉害了      
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表