8/14/03 readme.txt Zobler Soils ( .5 degree ) - SAFARI subset ------------------------------------------ The original (global) data were downloaded from the Oak Ridge National Laboratory Distributed Active Archive Center (ORNL DAAC). (http://daac.ornl.gov) Awk and perl scripts were written to reformat the global data into ASCII GRID format. This subset consists of two data files: s_contcode.dat - continent codes that correspond to the volume numbers of the major continental divisions in FAO/UNESCO Soil Map of the World, Vols, 2-10 (1971-1981). Data values 0 -10. s_soil_type.dat - global soil type codes, see zobler.legend for the corresponding soil type and abbreviation. Data values 1 - 108. Each file contains a single ASCII array with integer values. (Coordinates listed below are in decimal degrees.) The ASCII file consists of header information containing a set of keywords, followed by cell values in row-major order. The file format is {NODATA_VALUE xxx} row 1 row 2 . . . row n where xxx is a number, and the keyword NODATA_VALUE is optional and defaults to -9999. Row 1 of the data is at the top of the grid, row 2 is just under row 1 and so on. The end of each row of data from the grid is terminated with a carriage return in the file. These six lines (header) appear in all files, e.g.: ncols 720 nrows 360 xllcorner 5 yllcorner -35 cellsize 0.5 NODATA_value -9999 To import this file into ArcInfo use the following command at an ARC prompt: ASCIIGRID {INT | FLOAT} Arguments - the ASCII file to be converted. - the name of the grid to be created. {INT | FLOAT} - the data type of the output grid. INT - an integer grid will be created. FLOAT - a floating-point grid will be created. Procedure used to create the southern Africa subset: ---------------------------------------------------- Using GRID ( a raster- or cell-based geoprocessing toolbox that is integrated with ArcInfo) the SETWINDOW command was used to define the subarea of interest. This subarea was defined by identifying the bounding coordinates as follows: x_min 5 y_min -35 x_max 60 y_max 5 The "snap_grid" option of the SETWINDOW command was used. This snaps the lower- left corner of the specified window to the lower-left corner of the nearest cell in the snap_grid and snaps the upper-right corner of the specified window to the upper-right corner of the nearest cell in the snap_grid. In this case the snap_grid is the original data grid. The purpose of this is to ensure the proper registration of the newly set analysis window. The command format used is as follows: SETWINDOW x_min y_min x_max y_max original_grid Once the window was set, creating the new grid was simply a matter of setting the new subset grid equal to the original grid. subset_grid = original_grid An ASCII array was created from the new subset grid using the GRID command GRIDASCII. file = GRIDASCII(subset_grid) ----------------------------------------------------------------------------- The following contains the readme.txt included with the global .5 degree resolution data available from the ORNL DAAC. (http://ornl.daac.gov) For more information on how the global half degree data set was created, or to access the C programs used to create the global data set, please visit http://ornl.daac.gov. This directory contains a series of codes and data for converting the Zober digital version of the FAO/UNESCO Soil Map of the World at 1 degree resolution to 0.5 map. The resolution of the map is not actually increased. Rather, the 1 degree squares are divided into 4 0.5 degree squares with the necessary fixing of continental boundaries and islands that are different. The Zobler map as distributed by Webb et al. contains 2 columns. One is a continent code. The Soil Map of the World consists of 9 maps that represent parts of the world. The texture data that Webb et al. provide allows for the fact that a soil type in one part of the world may have different properties than the same soil in a different part of the world. I therefore retain this continent information as well as the soil type information which is the second column. A code was written (one2half.c) to take the file CONTIZOB.LER and divide the cells into quarters. This code also reads in a land/water file (land.wave) that specifies the cells that are identified as land at 0.5 degrees. The code checks for consistency between the newly quartered map and the land/water map to which the quartered map is to be registered. If there is a discrepency there was an attempt to fix it (a call to fixcell.c). For example, cells identified as water by the land/water mask are forced to be water in the soils map. If cells are identified as land by the land/water mask but were considered water at 1 degree, the code looks at the surrounding 8 cells and assigns the majority soil type value for the neighborhood to the cell in question. If there are no surrounding land cells then it is kept as water in the hopes that on the next pass one or more of the surrounding cells might be converted from water to a soil type. The process is iterated 5 times for the globe. The remaining cells that should be land but couldn't be determined from surrounding cells (mostly islands that are resolved at 0.5 degree but not at 1 degree) were output to a file with coordinate information. A temporary map was outputted with a flag of -9 indicating where data was required. This process was repeated for the continent codes in CONTIZOB.LER as well (one2halfc.c and fixcellc.c). The areas coded with a -9 were used to consult the printed versions of the soil map. The program manfix.c was used by an operator to interactively input the correct soil and continent codes for the map. This process could be done manually or by preparing a file of changes (new_fix.dat) and redirecting stdin. The result (contizob.half) is in the form of the original CONTIZOB.LER file but is 4 times larger.