forked from jbeezley/WRF-GoogleEarth
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnc2kml_sequence.py
executable file
·63 lines (55 loc) · 1.56 KB
/
nc2kml_sequence.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python
'''
Driver script for converting WRF-Fire netcdf output file to a sequence of kml
for use with Google maps.
Usage: nc2kml_sequence.py filename [var1 [var2 ...]]
'''
from ncEarth import ncWRFFire,ncWRFFireLog,ZeroArray
from netCDF4 import Dataset
import sys
import os
import shutil
kmlpath='kml'
filepath='files'
def uselog(vname):
if vname in ('FGRNHFX','GRNHFX'):
return True
else:
return False
def getTimes(file):
f=Dataset(file,'r')
t=f.variables['Times'][:]
t=[t[i,:].tostring() for i in range(t.shape[0])]
return t
if __name__ == '__main__':
import sys
if len(sys.argv) < 2:
print "Takes a WRF-Fire output file and writes fire.kmz."
print "usage: %s filename"%sys.argv[0]
else:
filename=sys.argv[1]
if len(sys.argv) == 2:
vars=('FGRNHFX',)
else:
vars=sys.argv[2:]
#kmz=ncWRFFire_mov(filename)
times=getTimes(filename)
n=0
try:
shutil.rmtree(kmlpath)
except Exception:
pass
os.mkdir(kmlpath)
for time in times:
n=n+1
fname=os.path.join(kmlpath,'WRF-Fire_%03i.kml'%n)
print 'Creating %s.' % fname
if uselog(vars[0]):
foo=ncWRFFireLog
else:
foo=ncWRFFire
kml=foo(filename,istep=n-1)
try:
kml.write_kml(vars,kmlfile=fname,imgfile=os.path.join(filepath,'img_%03i.png' % n),colorbar=False)
except ZeroArray:
pass