Naposledy aktivní 1 month ago

GOES Packet Assemble

Revize fe6c703ad7b6091d83b5ab5e3cb9c0f76ff8360f

packetassemble.py Raw
1#!/usr/bin/env python
2
3import sys, struct, os
4
5HEADERTYPE_MAP = {
6 0: "Primary Header",
7 1: "Image Structure",
8 2: "Image Navigation",
9 3: "Image Data Function",
10 4: "Annotation",
11 5: "Timestamp",
12 6: "Acililary Text",
13 7: "Key Header",
14 128: "Segment Identification",
15 129: "NOAA Specific",
16 130: "Header Structured Record"
17}
18
19for i in range(8,128):
20 HEADERTYPE_MAP[i] = "Reserved"
21
22for i in range(131,256):
23 HEADERTYPE_MAP[i] = "Reserved"
24
25filename = "channels/53/1702_0_1311_1.lrit"
26
27f = open(filename, "r")
28fsize = os.path.getsize(filename)
29readbytes = 0
30t = 0
31
32def readHeader(f):
33 global t
34 type = ord(f.read(1))
35 size = f.read(2)
36 size = struct.unpack(">H", size)[0]
37 data = f.read(size-3)
38 t += size
39 if type == 0:
40 filetypecode, headerlength, datalength = struct.unpack(">BIQ", data)
41 print "Header type: %s (%s) File Type Code: %s Header Length %s Data Field Length: %s" %(type, HEADERTYPE_MAP[type], filetypecode, headerlength, datalength)
42 elif type == 1:
43 bitsperpixel, columns, lines, compression = struct.unpack(">BHHB", data)
44 print "Image Structure Header: "
45 print " Bits Per Pixel: %s" %bitsperpixel
46 print " Columns: %s" %columns
47 print " Lines: %s" %lines
48 print " Compression: %s" %compression
49
50 elif type == 2:
51 projname, cfac, lfac, coff, loff = struct.unpack(">32sIIII", data)
52 print "Image Navigation Record"
53 print " Projection Name: %s" %projname
54 print " Column Scaling Factor: %s" %cfac
55 print " Line Scaling Factor: %s" %lfac
56 print " Column Offset: %s" %coff
57 print " Line Offset: %s" %loff
58
59 elif type == 3:
60 print "Image Data Function Record"
61 print " Data: {HIDDEN}"
62 #print " Data: \n%s" %data
63
64 elif type == 4:
65 print "Annotation Record"
66 print " Data: %s" %data
67
68 elif type == 5:
69 print "Timestamp Record"
70 days, ms = struct.unpack(">HI", data[1:])
71 print " Delta from 1 January 1958"
72 print " Days: %s" %days
73 print " Miliseconds: %s" %ms
74
75 elif type == 6:
76 print "Ancillary Text"
77 print " Data: %s" %data
78
79 elif type == 7:
80 print "Key Header"
81 print " Data: %s" %data
82
83 elif type == 128:
84 print size
85 imageid, sequence, startcol, startline, maxseg, maxcol, maxrow = struct.unpack(">7H", data)
86 print "Segment Identification Header"
87 print " Image Id: %s" %imageid
88 print " Sequence: %s" %sequence
89 print " Start Column: %s" %startcol
90 print " Start Line: %s" %startline
91 print " Number of Segments: %s" %maxseg
92 print " Width: %s" %maxcol
93 print " Height: %s" %maxrow
94
95 elif type == 129:
96 print "NOAA Specific Header"
97 signature, productId, productSubId, parameter, compression = struct.unpack(">4sHHHB", data)
98 print " Signature: %s" %signature
99 print " Product ID: %s" %productId
100 print " Product SubId: %s" %productSubId
101 print " Parameter: %s" %parameter
102 print " Compression: %s" %compression
103
104 elif type == 130:
105 print "Header Structured Record"
106 print " Data: %s" % data
107
108 else:
109 print "Type not mapped: %s" % type
110 print ""
111
112data = f.read(10)
113
114filecounter, Transportlength = struct.unpack(">HQ", data)
115
116print "File Counter: %s Transport Size: %s" %(filecounter, Transportlength)
117
118readHeader(f)
119readHeader(f)
120readHeader(f)
121readHeader(f)
122readHeader(f)
123readHeader(f)
124readHeader(f)
125readHeader(f)
126readHeader(f)
127readHeader(f)
128
129print t
130
131f.close()