问题描述
大家好!我读了一个CDF文件,里面有卫星在轨道上的日期,时间,纬度和经度。我正在尝试编写一个txt文件,以便每次卫星在北极站上盘旋时都会保存数据(我的LAT和LON的错误值很小)。
我设法在适当的条件下保存了txt文件,但这是查看和输出以下数据的方式:
2013-01-09 02:05:00 -57.097008 40.165134
2013-01-09 02:06:00 -57.29849 40.504826
2013-01-09 02:07:00 -57.49554 40.834732
2013-01-09 02:08:00 -57.68884 41.154243
2013-01-09 02:09:00 -57.881386 41.45857
等
数年的数据等于处理太多的方法...本质上,我想找到一种方法来显示时间间隔的代码。因此,与其说是一分钟一分钟,不如说是
2013-09-01 02:00:00〜2013-09-01 02:14:00
2013-10-05 04:23:00〜2013-10-05 04:32:00
我使用的代码是:
From spacepy import cdf
import datetime
from numpy import *
import numpy as np
cdf = pycdf.CDF('/directory/file.cdf')
print(cdf)
TIME = cdf['EPOCH']
LAT = cdf['SouthBtrace_GM_LAT']
LON = cdf['SouthBTrace_GM_LON']
#Loop Count
count = 0
with open("example.txt","a") as testing:
for i,j in zip(LAT,LON):
if(-65.26 <= i <= -59.26 and 32.31 <= j <= 52.31):
count +=1
n = count
testing.write(str(TIME[n-1])+'\t'+str(i)+'\t'+str(j)+ '\n')
else:
count +=1
很抱歉,如果我的问题令人困惑。我是编程新手,也从未使用过stackoverflow。
编辑:
>> type(TIME[0])
datetime.datetime
解决方法
好吧,我的想法是,您添加一个时间参数和一个附加的“ if”条件,只有在时差足够大(10分钟或15分钟,或您想要的任何时间)时才能满足。因此,就像:
import datetime
delta = datetime.timedelta(seconds = 600) ## the time gap that you want to use
time_one = datetime.datetime(2020,9,16,5,26,0) ## some arbitrary starting value
with open("example.txt","a") as testing:
for i,j in zip(LAT,LON):
if(-65.26 <= i <= -59.26 and 32.31 <= j <= 52.31):
if TIME > time_one + delta:
count +=1
n = count
testing.write(str(TIME[n-1])+'\t'+str(i)+'\t'+str(j)+ '\n')
time_one = TIME ## resets the time_one value to the new time
else:
count +=1
这样,除非时间值至少比前一个写入时间晚600秒(假设EPOCH值以秒为单位……如果不是,显然使用适当的单位),则不会将新数据写入txt文件。项。