#print "i" + str(i)
	    #print "j" + str(j)
	    if lbm[j,i] == -999:
         		r,h = rcoord.getSlantRangeElevation( i * ppi.rangestep, ppi.posangle[k])

			idx = int(r / ppi.rangestep )

			if  (idx < ppi.bins):
  				lbm[j,i] = ppi.obsval[k,idx]
				mask[j,i] = ppi.mask[k,idx]
			else:
				break

    lbm[lbm == -999] = nan
    mask[mask == -999] = nan
    masked=radar.filler_filter(mask)
    np.savetxt('Hclassi_r.txt',mask)
    np.savetxt('Hclassi_filled_r.txt',masked)
    ilbm = rcoord.getCartesian(lbm)
    mask = rcoord.getCartesian(masked)
    np.savetxt('Hclass_mask_cartessian.txt',mask)

    print ilbm


    #clean mask data
    #mask[mask >= 95.5] = nan
    #mask[maks < -31.5] = nan


    #convert values from 16-bit to real values
def main(ifile,isweep,var,otfile,bit8=True):

	if os.path.exists(ifile):
	    image_folder = os.environ['IMAGE_FOLDER']
	    ppi = hdf5.HDF5scan(ifile,isweep,var)
	    dtime = ppi.dtime	
	    rcells = int(ppi.dist/ppi.rangestep)
	    #matrix of zeros from image
	    lbm = np.zeros( (361., rcells) )
	    #mask for removing clutters 
	    mask = np.zeros( (361., rcells) )
	
	    #fill matriec with some arbitary value(value -999 does not accure on measurments)	
	    lbm[:,:] = -999
	    mask[:,:] = -999
	    #data to radar coordinate system.
	    rcoord = radar.RadarCoordinateSystem(ppi.lat, ppi.lon, ppi.alt)
	    for k in range(ppi.az.size):
	   	for i in range(rcells):

		    j = int((ppi.az[k]))
		    if lbm[j,i] == -999:
		 		r,h = rcoord.getSlantRangeElevation( i * ppi.rangestep, ppi.posangle[k])

				idx = int(r / ppi.rangestep )

				if  (idx < ppi.bins):
	  				lbm[j,i] = ppi.obsval[k,idx]
					mask[j,i] = ppi.mask[k,idx]
				else:
					break

	    lbm[lbm == -999] = nan
	    mask[mask == -999] = nan
            masked=radar.filler_filter(mask)
            masked1=radar.median_filter(mask)
	    masked2=radar.closing_filter(mask)
            np.savetxt('Hclass_filled.txt',masked)
            np.savetxt('Hclass_median.txt',masked1)
            np.savetxt('Hclass_closing.txt',masked2)
            np.savetxt('Data.txt',lbm)
	    ilbm = rcoord.getCartesian(lbm)
            np.savetxt('Data_rcoord.txt',lbm)
	    mask = rcoord.getCartesian(masked)
            h_class = rcoord.getCartesian(mask)
            np.savetxt('Hclass_mask_rcood.txt',mask)
            np.savetxt('Hclass_rcood.txt',h_class)
	    ilbm_8bit = ilbm

	    print "ilbm"
	    if (var == 'Z2'):
		ilbm[ilbm >= 327.66] = nan
	   	ilbm[ilbm <= -327.67] = nan
		ilbm = np.round((100.0*ilbm+32768.0))
		
		if(bit8 == False):
			#8bit data
			ilbm_8bit[ilbm_8bit >= 95.5] = nan
			ilbm_8bit[ilbm_8bit < -31.5] = nan
			ilbm_8bit = np.round((2.0*ilbm_bit+64.0))

	    if (var == "KDP2"):
		ilbm = np.round(100.0*ilbm+32768)
		ilbm[ilbm <= 0] = nan
		ilbm[ilbm >= 65535] = nan
	    
	    if (var == "RHOVH2"):
		ilbm = np.round((ilbm*65533)+1)
		ilbm[ilbm <= 0] = nan
		ilbm[ilbm >= 65535] = nan

	    if (var == "V2"):
		ilbm = np.round(100.0*ilbm+32768)
		ilbm[ilbm <= 0] = nan
		ilbm[ilbm >= 65535] = nan

	    ilbm = np.asarray(ilbm)
 #           np.savetxt('Data.txt',ilbm)
            ilbm=ilbm*mask
           
 #          np.savetxt('Data_filter.txt',ilbm)	

	    #write Geotiff image 16bit
	    otfile2 = "8bit_"+otfile
	    otfile = os.getcwd()+ "/" + image_folder +otfile
	    format = "GTiff"
	    dst_options = ['COMPRESS=LZW','ALPHA=YES']

	    out_driver = gdal.GetDriverByName(format)
	    dst_ds = out_driver.Create( otfile, 2 * rcells, 2 * rcells, 1, gdal.GDT_Float32, dst_options)

	    dst_ds.SetGeoTransform( [ -ppi.dist, ppi.rangestep, 0, ppi.dist, 0, -ppi.rangestep ] )

	    iproj = 'PROJCS["unnamed",GEOGCS["WGS 84",DATUM["unknown",SPHEROID["WGS84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["latitude_of_center",'+str(ppi.lat)+'],PARAMETER["longitude_of_center",'+str(ppi.lon)+'],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]]]'

	    dst_ds.SetProjection(iproj)

	    dst_ds.GetRasterBand(1).WriteArray( ilbm[::-1,:] )

	    dst_ds.SetMetadataItem("RADAR",str(ppi.rname))
	    dst_ds.SetMetadataItem("LAT", str(ppi.lat))
	    dst_ds.SetMetadataItem("LON", str(ppi.lon))
	    dst_ds.SetMetadataItem("ALT", str(ppi.alt))
	    dst_ds.SetMetadataItem("ELEV", str(float(ppi.posangle[0])))
	    dst_ds.SetMetadataItem("VARIABLE",var)
	    dst_ds.SetMetadataItem("VOL_NAME",str(ppi.scan))
	    dst_ds.SetMetadataItem("DATETIME", dtime)

	    dst_ds = None
	    #8bit
	    format = "GTiff"
	    dst_options = ['COMPRESS=LZW','ALPHA=YES']
	    otfile2 = os.getcwd()+"/" + image_folder +otfile2

	    out_driver = gdal.GetDriverByName(format)
	    dst_ds = out_driver.Create( otfile2, 2 * rcells, 2 * rcells, 1, gdal.GDT_Float32, dst_options)

	    dst_ds.SetGeoTransform( [ -ppi.dist, ppi.rangestep, 0, ppi.dist, 0, -ppi.rangestep ] )

	    iproj = 'PROJCS["unnamed",GEOGCS["WGS 84",DATUM["unknown",SPHEROID["WGS84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["latitude_of_center",'+str(ppi.lat)+'],PARAMETER["longitude_of_center",'+str(ppi.lon)+'],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]]]'

	    dst_ds.SetProjection(iproj)

	    dst_ds.GetRasterBand(1).WriteArray( ilbm[::-1,:] )

	    dst_ds.SetMetadataItem("RADAR",str(ppi.rname))
	    dst_ds.SetMetadataItem("LAT", str(ppi.lat))
	    dst_ds.SetMetadataItem("LON", str(ppi.lon))
	    dst_ds.SetMetadataItem("ALT", str(ppi.alt))
	    dst_ds.SetMetadataItem("ELEV", str(float(ppi.posangle[0])))
	    dst_ds.SetMetadataItem("VARIABLE",var)
	    dst_ds.SetMetadataItem("VOL_NAME",str(ppi.scan))
	    dst_ds.SetMetadataItem("DATETIME", dtime)

	    dst_ds = None



	else:
	    print "File " + ifile + " non disponibile"