[Gdal-dev] IPCC raster format
Tim Sutton
tim at linfiniti.com
Sun Jun 18 19:26:39 EDT 2006
Hi
I wrote a tool in c++ once to read this and if I recall correctly
spit out arc/info ascii grid files. Its been a while since I looked
at it so Ill need to dig it up and recheck exactly what it did. Pete
can you remember if this is in the climate data processing wizard? I
have no network access as I write this so I will only be able to
confirm for you tomorrow what I actually have. Ivan if you still
have not found a suitable solution and Ill dig out what I have.
Regards
Tim
On 16/06/2006, at 12:08, Ivan Lucena wrote:
> Hi there,
>
>
>
> I would rather been watching the World Cup, but I have to get this
> data in a usable format and there is no better place to get it than
> from GDAL’s experts.
>
>
>
> The “Intergovernmental Panel on Climate Change” (IPCC) offers data
> on the web in a format described by this Fortran source code: (The
> file extension is just a generic “.dat”)
>
>
>
> http://ipcc-ddc.cru.uea.ac.uk/obs/observed_fileformat.html
>
>
>
> > more cpre0130.dat
>
> grd_sz xmin ymin xmax ymax n_cols
> n_rows n_months
>
> 0.50 0.25 -89.75 359.75 89.75 720
> 360 12
>
> …
>
> -9999-9999-9999-9999-9999-9999-9999-9999-9999 52 88 103 91
> 65 45 27 32 …
>
> -9999-9999-9999-9999-9999 11 20 22 25 27 26 27 28
> 31 29 28 30 …
>
> …
>
>
>
> It’s not hard to analyze the pattern on the data or the code, so I
> figured that:
>
>
>
> - It’s an ASCII format;
>
> - There are two lines of reader (easy to read)
>
> - Each cell is 5 characters wide;
>
> - The no-data is “-9999”;
>
> - There is no separator between cells (what makes my task difficult);
>
> - It’s a multi-band raster dataset with 12 bands; (720x360x12 cells)
>
> - I am not sure if positive values can go beyond 9999 (that reminds
> me COBOL)
>
>
>
> I am heading in the direction of writing a Python+GDAL script to do
> the task, but I am stuck in how to separate the cells. The Fortran
> code is doing it in just one command as you can see in the code. I
> am thing that maybe by using the NumPY stuff embedded in GDAL I
> could do the same.
>
>
>
> Any Idea? Any experience with this data format?
>
>
>
> Thanks in advance,
>
>
>
> Ivan
>
>
>
> -------------------------------------------------------
>
> This is a Python command line interaction with the data:
>
>
>
> >>> import gdal
>
> >>> f = open('C:/Data/IPCC/cpre0130.dat', 'r');
>
> >>> f.readline()
>
> ' grd_sz xmin ymin xmax ymax n_cols
> n_rows n_months\n'
>
> >>> f.readline()
>
> ' 0.50 0.25 -89.75 359.75 89.75 720
> 360 12\n'
>
> >>> f.readline()
>
> '-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-999
> 9-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-999
> 9-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-999
> 9-9999-9999-9999-9999-9999-9999-9
>
>
>
> -------------------------------------------------------
>
> Fortran source code:
>
>
> program rd_ascii
> !
> ! f90 program to read in an integer ascii grid with
> ! variable dimensions into a global grid (720x360x12)
> !
> parameter :: n_cols=720
> parameter :: n_rows=360
> integer, dimension (n_cols,n_rows,12) :: grid
> character(len=72) :: infl
> character(len=20) :: fmt
> !
> call getarg(1,infl)
> !
> if(infl.eq.' ')then
> write(*,*) 'Enter ascii grid file name'
> read(*,'(a72)')infl
> end if
> !
> open(1,file=infl,status='old')
> read(1,*)
> read(1,*)xmin,ymin,xmax,ymax,ncols,nrows,nmonths,missing
> grid=missing
> fmt='( i5)'
> write(fmt(2:4),'(i3)')n_cols
> do im=1,nmonths
> do lat=1,n_rows
> read(1,fmt)(grid(lon,lat,im),lon=1,n_cols)
> enddo
> enddo
> !
> end program rd_ascii
>
>
>
>
>
>
> _______________________________________________
> Gdal-dev mailing list
> Gdal-dev at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/gdal-dev
Tim Sutton
tim at linfiniti.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20060618/59831d72/attachment.html
More information about the Gdal-dev
mailing list