コード例 #1
0
def extract_bufr_from_lrit_file(file_path, prefix, output_dir):
    """ read lrit file """

    file_size = os.path.getsize(file_path)

    fp = open(file_path, "rb")

    bs = BitString(fp)

    cpt = 0

    print("==== Looking for Bufrs in %s\n" % (file_path))

    # look for BUFR in hex 0x42554652
    f_val = bs.find('0x42554652', bytealigned=True)

    while f_val:

        begin = bs.pos

        print("** Found Bufr in pos %s\n" % (begin))

        # read size
        bufr_value = bs.read(32).hex
        size = bs.read('uint:24')

        print("size in decimal = %s" % (size))

        if size > file_size:
            print("Size read in bufr %d is bigger than the file size %d\n" %
                  (size, file_size))
            return

        #read all bits (end-begin)+1
        bs.pos = begin
        read_bits = bs.read(size)

        dest_fp = open("%s/%s_bufr_%s.bufr" % (output_dir, prefix, cpt), "wb")
        dest_fp.write(read_bits.tobytes())
        dest_fp.close()

        cpt += 1

        #look for the next grib
        f_val = bs.find('0x42554652', start=bs.pos, bytealigned=True)
コード例 #2
0
ファイル: lrit_grib_extractor.py プロジェクト: gaubert/rodd
def extract_bufr_from_lrit_file(file_path, prefix, output_dir):
    """ read lrit file """
    
    file_size = os.path.getsize(file_path)
    
    fp = open(file_path, "rb")
    
    bs = BitString(fp)
    
    cpt=0
    
    print("==== Looking for Bufrs in %s\n" %(file_path))
    
    # look for BUFR in hex 0x42554652
    f_val = bs.find('0x42554652', bytealigned=True)
     
    while f_val:
        
        begin= bs.pos
        
        print("** Found Bufr in pos %s\n" % (begin) )
        
        # read size
        bufr_value = bs.read(32).hex
        size = bs.read('uint:24')
        
        print("size in decimal = %s" %(size))
        
        if size > file_size:
            print("Size read in bufr %d is bigger than the file size %d\n" %(size, file_size))
            return
        
        #read all bits (end-begin)+1
        bs.pos = begin
        read_bits = bs.read(size)
        
        dest_fp = open("%s/%s_bufr_%s.bufr" % (output_dir, prefix, cpt), "wb")
        dest_fp.write(read_bits.tobytes())
        dest_fp.close()
        
        cpt +=1 
        
        #look for the next grib
        f_val = bs.find('0x42554652', start=bs.pos, bytealigned=True)
コード例 #3
0
def extract_grib_from_lrit_file(file_path, prefix, output_dir):
    """ read lrit file """

    fp = open(file_path, "rb")

    bs = BitString(fp)

    cpt = 0

    print("==== Looking for Gribs in %s\n" % (file_path))

    #look for HRAA70 in hex 0x485241413730
    #f_val = bs.find('0x485241413730', bytealigned=True)

    #print("f_val = %s\n" %(f_val))
    #bs.pos = f_val

    # look for GRIB in hex 0x47524942
    f_val = bs.find('0x47524942', bytealigned=True)

    print("f_val = %s\n" % (f_val))

    while f_val:

        begin = bs.pos
        print("begin = %d\n" % (begin))

        #look for bulletin header
        bs.pos -= 21 * 8

        bulletin_header = bs.read(18 * 8).hex

        print("Bulletin Header = %s\n" % bulletin_header)
        l = "%s" % bulletin_header
        header_name = binascii.unhexlify(l[2:])
        header_name = header_name.replace(" ", "_")
        print("Bulletin Header = %s\n" % header_name)

        # look for GRIB in hex 0x47524942
        f_val = bs.find('0x47524942', bytealigned=True)

        bs.pos = begin

        print("** Found Grib in pos %s" % (bs.bytepos))

        # read size
        grib_value = bs.read(32).hex
        size = bs.read('uint:24') * 8

        #print("size in decimal = %s" %(size))

        #read all bits (end-begin)+1
        bs.pos = begin
        read_bits = bs.read(size)

        dest_fp = open(
            "%s/%s_%s_%s.grb" % (output_dir, prefix, bulletin_header, cpt),
            "wb")
        dest_fp.write(read_bits.tobytes())
        dest_fp.close()

        cpt += 1

        #sys.exit(1)

        #look for the next grib
        f_val = bs.find('0x47524942', start=bs.pos, bytealigned=True)
コード例 #4
0
ファイル: lrit_grib_extractor.py プロジェクト: gaubert/rodd
def extract_grib_from_lrit_file(file_path, prefix, output_dir):
    """ read lrit file """
    
    fp = open(file_path, "rb")
    
    bs = BitString(fp)
    
    cpt=0
    
    print("==== Looking for Gribs in %s\n" %(file_path))

    #look for HRAA70 in hex 0x485241413730
    #f_val = bs.find('0x485241413730', bytealigned=True)

    #print("f_val = %s\n" %(f_val))
    #bs.pos = f_val
    
    # look for GRIB in hex 0x47524942
    f_val = bs.find('0x47524942', bytealigned=True)

    print("f_val = %s\n" %(f_val))
     
    while f_val:

        begin = bs.pos
        print("begin = %d\n" % (begin))

        #look for bulletin header
        bs.pos -= 21*8

        bulletin_header = bs.read(18*8).hex   

        print("Bulletin Header = %s\n" % bulletin_header)
        l = "%s" % bulletin_header
        header_name =  binascii.unhexlify(l[2:])
        header_name = header_name.replace(" ","_")
        print("Bulletin Header = %s\n" % header_name)

        # look for GRIB in hex 0x47524942
        f_val = bs.find('0x47524942', bytealigned=True)
        
        bs.pos = begin
        
        print("** Found Grib in pos %s" % (bs.bytepos) )
        
        # read size
        grib_value = bs.read(32).hex
        size = bs.read('uint:24')*8
        
        #print("size in decimal = %s" %(size))
        
        #read all bits (end-begin)+1
        bs.pos = begin
        read_bits = bs.read(size)
        
        dest_fp = open("%s/%s_%s_%s.grb" % (output_dir, prefix, bulletin_header, cpt), "wb")
        dest_fp.write(read_bits.tobytes())
        dest_fp.close()
        
        cpt +=1 

        #sys.exit(1)
        
        #look for the next grib
        f_val = bs.find('0x47524942', start=bs.pos, bytealigned=True)