[Proj] lla file format

Richard Greenwood richard.greenwood at gmail.com
Tue Feb 26 20:23:49 PST 2008


That's a bit more than I was looking for. I'm just trying to decypher
the .lla file. I assume that an .lla file is a combination of .las and
.los files (that the lat and long shifts are in a single file) and
that the shifts are in angular units. But that's about as far as I
have gotten.

Thanks for the reply,
Rich


On Tue, Feb 26, 2008 at 12:19 PM, Clifford J Mugnier <cjmce at lsu.edu> wrote:
>
>
>
> Is this what you need?
>
> Cliff Mugnier
> LOUISIANA STATE UNIVERSITY
>
> c       program convert.ftn  -- cpfs csm golden,co
> c
> c       this routine converts ascii files of x,y,z1,z2,...zn
> c       data to the center format for binary file storage
> c       the interactive nature allows for creation of the
> c       appropriate headers and file formats
> c
> c----------------------------------------------------------------
>       program convdam
>       parameter(nfile=50,nx=6000,ny=10)
>       character rident*56,pgm*8,filin(nfile)*30,
>      1          filout*30,formin*56
>       character gname(nfile)*8
>       dimension data(ny,nx),zero(ny)
>       common /inout/ iit,iot
>       common /input/ nv,nr,formin,rident,pgm,filout
> c      data iit,iot/5,6/,in,iout/30,31/,nc/-1/
> c      data pgm/'convertd'/
>       data x0,dx,y0,dy,angle/5*0.0/,zero/ny*0.0/
>  iit = 5
>  iot = 6
>  in = 30
>  iout = 31
>  nc = -1
>  pgm = 'convertd'
> c
> c......................................................................
> 1000  format(///,5x,'this program converts a formatted data file to',/,
>      &           5x,'an unformatted binary file conforming to the  ',/,
>      &           5x,'center format',//,' ** warning - the input files',
>      &              ' are assumed to have a uniform format;',
>      &            /,' all the groups are to have the same number',
>      &              ' and type of variables',//,
>      &           5x,'each group will come from one input file.',//,
>      &           5x,'program is dimensioned to read',i3,' files of',/,
>      &           8x,i6,' variables per sample',/,
>      &           8x,i6,' samples per group',//)
> 1005  format(' enter number of input-files/output-groups',
>      &       ' (eg. flightlines):')
> 1010  format(' enter filename for input file ',i3,' :')
> 1020  format(/,' enter filename for output file:')
> 1030  format(a30)
> 1040  format(///,5x,'enter header information,up to 56 characters',/,
>      &           5x,'this should include data identifier',/,
>      &           5x,'and coordinate system used !!')
> 1050  format(a56)
> 1070  format(/,5x,'enter the number of variables at each location',/,
>      &         5x,'this includes the x and y locations')
> 1080  format(/,5x,'enter the format of the input file records',/,
>      &         5x,'e.g. (3f20.4)    ')
> 1100  format(' enter an groupname (8 char) for input file ',a30,)
> 1110  format(a8)
> 1120  format('there will be',i3,' sample sets on each binary record')
> 1130  format(' there are ',i6,' samples in group: ',a8)
> 1300  format(' cannot open file ',a30,/,' reenter correct name:')
> 1400  format(' error in read; current format: ',a56,//,
>      &       ' fix file and/or reenter correct format:')
> c......................................................................
> c
> c...write intro to screen
>       write(iot,1000)nfile,ny,nx
> c...get in and out filenames
>
>       write(iot,1005)
>       read(iit,*)nr
>       do 50 i = 1,nr
>          write(iot,1010)i
>          read(iit,1030)filin(i)
> 50    continue
>       write(iot,1020)
>       read(iit,1030)filout
> c
> c...get input information from user and set pgm for header
> c
>       write(iot,1040)
>       read(iit,1050)rident
>       write(iot,1070)
>       read(iit,*)nv
>       write(iot,1080)
>       read(iit,1050)formin
>       do 60 i = 1,nr
>          write(iot,1100)filin(i)
>          read(iit,1110)gname(i)
> 60    continue
> c
> c...check input information and allow for changes
> c
>       call go(nfile,filin,gname)
> c
> c...now figure number of samples that will fit in 256 bytes
> c
>       nrec=64/nv
>       write(iot,1120)nrec
> c
> c...open output file
> c
>       open(iout,file=filout,access='direct',
>      *     form='unformatted',status='unknown',recl=256)
> c      rewind(iout)
> c
> c...write header to output file
> c
>       nrd = 1
>       write(iout,rec=nrd)rident,pgm,nc,nr,nv,x0,dx,y0,dy,angle
>       nrd = nrd + 1
> c
> c...proceed to open input data files
> c
>       do 70 if=1,nr
> 1     open(in,file=filin(if),status='old',err=2000)
>       rewind(in)
> c...read in file/group data and recover the number of samples (nsamp)
>
>       j = 1
> 80    read(in,fmt=formin,end=100,err=3000) (data(k,j),k=1,nv)
>       j = j + 1
>       goto 80
> 100   nsamp = j - 1
> c...write group header to binary file
>       write(iout,rec=nrd)gname(if),nsamp
>       nrd = nrd + 1
>       write(iot,1130)nsamp,gname(if)
> c...check to see if last binary record is filled
> c   (use integer division)
>
>       numrec = nsamp / nrec
>       nsleft = nsamp - (nrec*numrec)
>       if(nsleft.eq.0)then
>          numwri = numrec
>       else
>          numwri = numrec + 1
>       endif
> c...see how many zeros are in remainder part of record
>       nremain = 64 - nv * nrec
>
> c...write this data to records (extra space in records are zeros)
>
>       do 110 k=1,numwri
>          write(iout,rec=nrd)((data(j,i),j=1,nv),i=(k-1)*nrec+1,k*nrec),
>      1                                         (zero(ir),ir=1,nremain)
>          nrd = nrd + 1
> 110   continue
> c...zero data array for next file read
> c
>       do 120 kk=1,nx
>          do 130 kkk=1,ny
>             data(kkk,kk) = 0.0
> 130      continue
> 120   continue
>
> c...loop back up and write next file
>       close(in)
>       go to 70
> 2000  write(iot,1300)filin(if)
>       read(iit,1030)filin(if)
>       goto 1
> 3000  write(iot,1400)formin
>       read(iit,1050)formin
>       goto 80
> 70    continue
> c
>       close(iout)
>       stop
>       end
> c-------------------------------------------------------------------
>       subroutine go(nfile,filin,gname)
> c
> c  purpose: allows alteration of input parameters
> c
>       character rident*56,pgm*8,filin(nfile)*30,ac*1,
>      1     filout*30,formin*56,gname(nfile)*8,
>      1     buffer*200
>       common /inout/ iit,iot
>       common /input/ nv,nr,formin,rident,pgm,filout
> c....................................................................
> 100   format(/,' there are ',i3,' input data files:',/)
> 102   format(' file ',i3,' is :',a30)
> 103   format(/,'  enter filename number to change: ',/,
>      1         '  (enter 0 if no changes desired)')
> 104   format(/,' file ',i3,' is presently :',a30,/,
>      1         ' please enter correct filename :')
> 105   format(a30)
> 110   format(/,' there are ',i3,' group names:',/)
> 111   format(' group ',i3,' is :',a8)
> 112   format(/,'  enter groupname number to change: ',/,
>      1         '  (enter 0 if no changes desired)')
> 113   format(/,' group ',i3,' is presently :',a8,/,
>      1         ' please enter correct groupname (8 char):')
> 114   format(a8)
> 300   format(/,' okay, enter changes ... (c/r twice when finished)',/)
> 301   format(a1)
> c....................................................................
> 200     write(iot,400)nr,nr,formin,filout,rident,pgm,nr,nv
> 400     format(/////,
>      1  ' the following are the control parameters:',//,
>      1  ' 1. enter  1  to change any of the ',i3,' input files',/,
>      1  ' 2. enter  2  to change any of the ',i3,' group names',/,
>      1  ' 3. input files format (assumed the same): ',/,4x,a56,/,
>      1  ' 4. output filename: ',/,4x,a30,/,
>      1  ' 5. output file header comment:',/,4x,a56,/,
>      1  ' 6. program title (8 CHARACTERS): ...................',A8,/,
>      1  ' 7. NUMBER OF DATA Groups in output file: ...........',i3,/,
>      1  ' 8. number of variables per sample: .................',i3,//)
>         write(iot,*)' do you wish to change anything ? (y/n) :'
>         read(iit,301)ac
>             if(ac.eq.'n'.or.ac.eq.'n')return
>             write(iot,300)
> c    an 80 character buffer is used to input the changed parameters
> c    from the crt screen.  the number identifying the parameter is
> c    read first then the parameter is read.  changes are accordingly
> c    made.
> c
> 201           read(iit,fmt='(a)',end=200)buffer
>                 read(buffer(1:2),403)chng
> 403             format(f2.0)
> 410             format(f2.0,1x,a8)
> 420             format(f2.0,1x,a30)
> 430             format(f2.0,1x,a56)
> 440             format(f2.0,1x,i3)
>               if(chng.eq.1.0)goto 500
>               if(chng.eq.2.0)goto 600
>               if(chng.eq.3.0)read(buffer,430)chng,formin
>               if(chng.eq.4.0)read(buffer,420)chng,filout
>               if(chng.eq.5.0)read(buffer,430)chng,rident
>               if(chng.eq.6.0)read(buffer,410)chng,pgm
>               if(chng.eq.7.0)read(buffer,440)chng,nr
>               if(chng.eq.8.0)read(buffer,440)chng,nv
>               if(chng.eq.0.0)goto 200
>               goto 201
> c
> 500   write(iot,100)nr
>       do 501 i=1,nr
>          write(iot,102)filin(i)
> 501   continue
>       write(iot,103)
>       read(iit,*)ichng
>       if(ichng.eq.0)goto 200
>       write(iot,104)ichng,filin(ichng)
>       read(iit,105)filin(ichng)
>       goto 500
> 600   write(iot,110)nr
>       do 601 i=1,nr
>          write(iot,111)gname(i)
> 601   continue
>       write(iot,112)
>       read(iit,*)ichng
>       if(ichng.eq.0)goto 200
>       write(iot,113)ichng,gname(ichng)
>       read(iit,114)gname(ichng)
>       goto 600
> c
>       end
>
>  ________________________________
>  From: proj-bounces at lists.maptools.org on behalf of Eric Miller
> Sent: Tue 26-Feb-08 12:00
> To: PROJ.4 and general Projections Discussions
> Subject: Re: [Proj] lla file format
>
>
>
>
>
> As far as I can tell, it is only documented in the Fortran source code for
> nadgrd.  Get the sources and read "readme.grd" for some help...
>
> """
> The program NADCON reads binary grids that contain NAD 27 to NAD 83
> latitude and longitude shifts.  The first record in a grid file consists of
> header information.  All the other records consist of FORTRAN REAL*4
> numbers.  The grid files are unformatted and direct access.
>
> ...
> """
>
> >>> On 2/16/2008 at 5:30 PM, "Richard Greenwood"
> <richard.greenwood at gmail.com>
> wrote:
> > Can anyone point me to documentation of the *.lla file format?
>
>
> _______________________________________________
> Proj mailing list
> Proj at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/proj
>
> _______________________________________________
>  Proj mailing list
>  Proj at lists.maptools.org
>  http://lists.maptools.org/mailman/listinfo/proj
>



-- 
Richard Greenwood
richard.greenwood at gmail.com
www.greenwoodmap.com



More information about the Proj mailing list