;dieses Programm soll die in Terascan in ascii Format ;exportierten Files importieren und als Binary exportieren, ;so dass sie von Envi wieder importiert werden koennen. ; Dieser Programm liest ASCII Daten ein, schreibt diese als ; Float Binary aus, exportiert sie nach ENVI und erzeugt einen ; gültigen Header-File mit Geoinformation ; erstellt von J. Richters, RSRG, GIUB-Bonn, 12.12.2001 ;import-ordern ; eingabe von Importparameters base =widget_auto_base(title='ASCII to ENVI - Importparameter') sb = widget_base(base, row=5) ; anzahl der Pixel in y-Richtung y_wert=widget_param(sb, dt=3, floor=0, uvalue='ydim',$ prompt='Spalten:', default=1250, /auto) ; anzahl der Pixel in x-Richtung x_wert=widget_param(sb, dt=3, floor=0, uvalue='xdim',$ prompt='Zeilen:', default=1050, /auto) f=widget_string(sb,uvalue='folder', prompt='Eingabe des zu Bearbeitenden Ordners', $ default='/usr/data/maroc/idl_export/envi_maroc_5ch_sub/*.idl',/auto) ; anzahl der Bänder txt='Die Angabe der Bänder umfaßt nur die Satellitenkanäle' info=widget_slabel(sb, prompt=txt) band=widget_param(sb, dt=2, floor=0, uvalue='bnd',default=5, prompt='Bänder:', /auto) wgs=widget_param(sb, dt=2, floor=0, uvalue='utm',default=29,$ prompt='UTM-Zone:', /auto) ofo=widget_string(sb,uvalue='ofolder',prompt='Eingabe des Ausgabe Ordners', $ default='/usr/data/maroc/idl_export/envi_maroc_5ch_sub/envi_NOAA14_5chanels/',/auto) result = auto_wid_mng(base) if (result.accept eq 0) then return ; Übergabe der eingebenen Importparameter y_dim=(result.ydim) x_dim=(result.xdim) n_band=(result.bnd) zone=(result.utm) folder=(result.folder) ofolder=(result.ofolder) ; Einlesen der ASCII-Datei data=fltarr(x_dim,y_dim,n_band) posdata=fltarr(x_dim,y_dim,2) z= FINDFILE(folder) for ihh=0,n_elements(z)-1 do begin infile=z[ihh] openr,1,infile eindat={pos:fltarr(2),dat:fltarr(n_band)} for y=0,y_dim-1 do begin for x=0,x_dim-1 do begin readf,1,eindat data(x,y,*)=eindat.dat posdata(x,y,*)=eindat.pos endfor endfor close,1 ;Erzeugen des Output Namens nn=STRPOS(infile, 'channel_') oname=STRMID(infile, nn-1) out_name=ofolder + oname + '.envi' ;Oeffnen der Ausgabedatei openw,10, out_name ; Schreiben der einzelnen Baender for b=0,n_band-1 do begin writeu,10, byte(data(*,*,b)) endfor ; Schliessen der Ausgabedatei close,10 ; Erzeugen der ENVI-Headerdatei ; Bestimmen der Geo_points (ULX,ULY,MapX, MapY) geo=dblarr(4) geo(0)=0 geo(1)=0 geo(2)=posdata(0,0,1) geo(3)=posdata(0,0,0) ; Pixelgröße ps(x,y) ps1=fltarr(2) ps1(0)=1100 ps1(1)=1100 ;########################################################## datum='WGS-84' iymap=float(geo(3)) ixmap=float(geo(2)) ;units=envi_translate_projection_units('Meters') iproj=envi_proj_create(/geographic) oproj=envi_proj_create(/utm, datum=datum,zone=zone) envi_convert_projection_coordinates,ixmap,iymap,iproj,oxmap2,oymap2,oproj geo(2)=double(oxmap2) geo(3)=double(oymap2) ;'###################################################################### map_inf=envi_map_info_create(/utm, mc=geo,ps=ps1, datum=datum, zone=zone) ;envi_map_struct={proj:{envi_proj_struct}, mc:geo, ps:ps1} envi_setup_head, fname=out_name, file_type=0, ns=y_dim, nl=x_dim, nb=n_band, $ data_type=1, interleave=0, offset=0, /write , map_info = map_inf endfor end