~libecbufr-dev/libecbufr/trunk

« back to all changes in this revision

Viewing changes to Bindings/python/examples/test-python2.py

  • Committer: vanh.souvanlasy at canada
  • Date: 2019-11-05 21:50:59 UTC
  • Revision ID: vanh.souvanlasy@canada.ca-20191105215059-0a0yolehj3jcmm67
add python bindings

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
 
 
3
import sys
 
4
 
 
5
from ecbufr.template import BUFR_Template as BT
 
6
from ecbufr.template import BufrDescValue
 
7
from ecbufr.tables import BUFR_Tables as Tables
 
8
from ecbufr.tables import EntryTableB as TB
 
9
from ecbufr.message import BUFR_Message as BM
 
10
from ecbufr.message import BUFR_File as BF
 
11
from ecbufr.dataset import BUFR_Dataset
 
12
from ecbufr.section1 import BufrSection1
 
13
from ecbufr.meta import BufrRTMD
 
14
 
 
15
import ecbufr
 
16
 
 
17
ecbufr.__doc__
 
18
 
 
19
if len(sys.argv)!=2:
 
20
   print "Usage:",sys.argv[0]," input_bufr_file"
 
21
   in_bufr=""
 
22
else:
 
23
   in_bufr=str(sys.argv[1])
 
24
 
 
25
print "Input BUFR:", in_bufr
 
26
 
 
27
def choose_bufrtable(tlist,version):
 
28
   nb=len(tlist)
 
29
   for i in range(nb):
 
30
      t=tlist[i]
 
31
      tmv=t.get_master_version()
 
32
      if tmv==version:
 
33
         print "Using Table version:",tmv
 
34
         return t
 
35
   print "Using Default Table version:",tlist[0].get_master_version()
 
36
   return tlist[0]
 
37
 
 
38
def try_bufrtable(t):
 
39
   b=t.fetch_tableB( 10001 )
 
40
   print b.descriptor,b.description
 
41
   del b
 
42
   d=t.fetch_tableD( 301025 )
 
43
   print d.descriptor,d.description
 
44
   print d.get_descriptors()
 
45
   del d
 
46
 
 
47
 
 
48
t_13=Tables()
 
49
t_13.load_TableB ( "../Tables/table_b_bufr-13", 0 )
 
50
t_13.load_TableD ( "../Tables/table_d_bufr-13", 0 )
 
51
print "Loaded Table master version:", t_13.get_master_version()
 
52
 
 
53
t_cmc=Tables()
 
54
t_cmc.load_cmc_tables()
 
55
print "Loaded CMC Table master version:", t_cmc.get_master_version()
 
56
 
 
57
try_bufrtable(t_cmc)
 
58
 
 
59
tables_list = []
 
60
tables_list.append ( t_cmc )
 
61
tables_list.append ( t_13 )
 
62
 
 
63
bdv=BufrDescValue(2)
 
64
bdv.set_desc( 0, 8034 )
 
65
bdv.set_desc( 1, 10034 )
 
66
 
 
67
bdv2=BufrDescValue(2)
 
68
bdv2.set_desc( 0, 8033 )
 
69
bdv2.set_desc( 1, 10034 )
 
70
 
 
71
print bdv.get_desc(0)
 
72
print bdv.get_desc(1)
 
73
print  len(bdv)
 
74
bt=BT()
 
75
bt.allocate(bdv,t_cmc,4)
 
76
 
 
77
bdv0=BufrDescValue(0)
 
78
bt2=BT()
 
79
bt2.allocate(bdv0,t_cmc,4)
 
80
bt2.add( bdv2, t_cmc )
 
81
bt2.finalize()
 
82
print "Template compare:", bt.compare( bt2 )
 
83
 
 
84
#bt2.save( "t2.template" )
 
85
 
 
86
try:
 
87
   bf=BF()
 
88
   print bf.open.__doc__
 
89
   print bf.read.__doc__
 
90
   bf.open( in_bufr, "rb" )
 
91
except Exception as inst:
 
92
   print "Cannot open file:",type(inst)
 
93
else:
 
94
   msg=bf.read()
 
95
   while isinstance(msg,BM):
 
96
      s1=msg.get_section1()
 
97
      msg_version=s1.master_table_version
 
98
      print "Message Table version:",msg_version
 
99
      print "Message edition:",msg.edition
 
100
      print "Orig Center:",s1.orig_centre
 
101
      print "bufr_master_table:",s1.bufr_master_table
 
102
      table=choose_bufrtable(tables_list,msg_version)
 
103
      dts=table.decode(msg)
 
104
      print "Subsets count:", dts.size()
 
105
      for i in range(len(dts)):
 
106
         print "subset:", i
 
107
         dss=dts.get_subset(i)
 
108
         print "Descriptors count:", dss.size()
 
109
         pos = dss.find( 4024, 0 )
 
110
         print "found 4024 at ", pos
 
111
         for j in range(len(dss)):
 
112
            dsc=dss.get_descriptor(j)
 
113
            print "descriptor:",j
 
114
            meta=dsc.get_rtmd()
 
115
            if isinstance(meta,BufrRTMD):
 
116
               print "{",
 
117
               nb=meta.len_nesting()
 
118
               for n in range(nb):
 
119
                  print meta.get_nesting(n),
 
120
               print "}",
 
121
            del meta
 
122
            print " ", dsc.descriptor, " ", dsc.get_value()
 
123
#            print "descriptor:",j," ", dsc.descriptor, " ", dsc.get_value(), " flags=",dsc.flags
 
124
 
 
125
      del dts
 
126
      del msg
 
127
      msg=bf.read()
 
128
   bf.close()
 
129
   del bf