Section 1: SFWMD Hydrology FAQ

Q: SFWMD?
Q: SFWMD Hydrology and the SFWMM?
Q: What time frame does the SFWMM output cover?
Q: What is the spatial extent/resolution of the data?
Q: What are the units of the data?
Q: How is the data stored?

Q:SFWMD?
      SFWMD stands for South Florida Water Management District. This is an agency of the Florida State Government which is responsible for water use and control for the southern portion of Florida. The area under their jurisdiction includes the Kissimee River drainage basin, Lake Okeechobee, the Everglades Agricultural Area (EAA), several Water Conservation Area (WCA), the urban areas along the east cost of Florida including Miami, the Everglades National Park (ENP) and Big Cypress National Preserve (BCNP). The SFWMD is the agency responsible for operating the many canals, levees, pumping stations and other fresh water control structures in South Florida. For more information about the SFWMD please see their web site at:
www.sfwmd.com. These are the people from whom we acquire most of the hydrology scenarios.

Q:SFWMD Hydrology and the SFWMM?
      The SFWMD has a hydrology model commonly referred to as the South Florida Water Management Model (SFWMM). This model is used to simulate the flow of fresh water over SF. The model includes the effects of canals, levees, pumping stations, and other water control structures over SF. Recently, in connection with the Everglades Restoration Project (ERP), the SFWMM has been used to provide estimations of flow of fresh water for different scenarios which might be used as part of a Everglades restoration. This has resulted in the production of a number of alternative hydrology scenarios for SF.

Q:What time frame does the SFWMM output cover?
      The SFWMM typically covers a 31 year time period from Jan. 1 1965 (1/1/1965) to Dec. 31. 1995 (12/31/1995). Over this time period the SFWMM provides hydrology data on a daily time step. The model does include leap year in its reckoning of time. The result of cover the 31 year time period on a daily time step results in 11322 days worth of data.
      The exception to this 31 year time frame is the output of the SFWMM when Calibration/Validation data is created. The Calibration/Validation run of the SFWMM is used to set internal state variable in the model. The model is calibrated using stage hight (water surface elevation relative to NGDV) data from gauging station located across SF. The calibration phase of the run starts on Jan. 1 1979 (1/1/1979) and goes until Dec. 31 1990 (12/31/1990). The validation phase of the model is a check to see if the stage heights being predicted by the model a reasonably close to the stage height values recorded by the gauging stations. The validation phase of the model run starts on Jan. 1 1991 (1/1/1991) and goes until Dec 31 1995 (12/31/1995). This is the run which is generally considered to model accurately reflect the historical pattern of water distribution covering the time period 1/1/1979 to 12/31/1995. Taken together the Calibration/Validation data contains 6209 days worth of data.

Q: What is the spatial extent/resolution of the data?
      For each day the model provides water stage height (water surface elevation relative to NGDV) for each of ~1700 cells which cover most of SF. Latitudinally the data extends from the northern end of Lake Okeechobee south to the southern end of the Everglades National Park (ENP). In longitudinal extent the data goes from the eastern coast of Florida and extends west to include the Everglades Agricultural Area (EAA), Big Cypress National Preserve (BCNP), but excludes most of Hendry county and part of Collier county not in BCNP. Figure 1.1 shows the outline of the region covered by the SFWMM.
      The SFWMM covers the study area with a grid which partitions space into a number of evenly sized square cells. Each grid cell covers an area 2 miles on a side. (Actually this isn't exact true. Each cell is 3218 meters on a side, which is just short of 2 miles. I have derived this from the UTM I was given for the corners of the study area. The UTM are provided below.) At this resolution the the grid contains 41 columns and 71 rows. The origin of the grid used by the SFWMM is in the lower left hand corner.
      From the SFWMD I received Universal Transverse Mercator (UTM) coordinates for the hydrology data. These coordinates are given in table 1 and provide values in UTM zone 17, NAD27.
Figure 1.1 : The outline of the area covered by the SFWMM is shown in red. The black lines show boundaries of South Florida as well as the boundaries of important control structures and management regions within the area.

Northing:3008377
Easting:599103
Westing:467165
Southing:2779899
Table 1 : The Universal Transverse Mercators (UTM) for the box which contains the area covered by the SFWMM. These UTM values are in UTM Zone 17, NAD27.

Q:What are the units of the data?
      As mentioned above, the time units are days. When speaking of the individual cells we usually speak in term of miles even though the cells are slightly smaller than 2 miles. When referring the entire map, the coordinate system is Universal Transverse Mercator (UTM). Each of the cells of the SFWMM data provides water surface elevation in feet relative to either NGDV or ground surface elevation depending on which file you are reading. (NGDV is a particular calculation of mean sea level, I think.) The SFWMM output file most often used by ATLSS is called daily_stg_minus_lsel.bin and provides water surface elevation in feet relative to ground surface elevation. For this file positive values represent water surface which is above the ground surface and negative values represent water surface which is below the ground surface.

Q:How is the data stored?
      The data from the SFWMD is stored in binary format using big endian byte order. Each file contains a small amount of metadata at the beginning of the file followed by data which provides water surface elevation (stage height) for each day over a 31 year period of time (See above). With each days worth of data is included the date which that date set represents. Figure 1.2 gives a graphic depiction of the basic format of the SFWMD hydrology data file.
      We will begin by describing the elements of the metadata; listing them in the order in which they appear in the metadata. The first element is the title of the data set. This is a string containing 80 elements. The next element contains the number of rows in each data set. This is stored as a single, 4 byte integer. The next element contains the number of nodes in each data set. This is also stored as a single, 4 byte integer. The next element is the length and width of a single cell in feet. This value is stored as a pair of 4 byte floating point values. The next element is a collection of offsets needed to read the data from the file properly. The meaning of these values is given below. These values are stored as an array of 4 byte integers. The number of elements is equal to the number of row in each data set (See above). The next element is a second collection of offsets which are also need to read the data correctly into a grid. These values are stored as an array of 4 byte integers. The length of the array is equal to the number of rows in each data set (See above). The final element is a array which contains the cumulative node count for each row of data. This array serves as a check sum which loading data. This array is an array of 4 byte integers. The number of elements is the same as the other arrays described above, e.i. the length of the array is equal to the number of rows in each data set. In order to successfully read the data from the metadata, you MUST read the data elements from the data file in the order described above.
      If you are familiar with C or C++, the following data structure can be used to read in the metadata from a datafile.

const unsigned int GRID_TITLE_LENGTH = 80;
const unsigned int MAX_GRID_ROWS = 71;

typedef struct {
	char title[GRID_TITLE_LENGTH];
	int number_of_rows;
	int number_of_nodes;
	struct { float x, y;} size;
	int xstart[MAX_GRID_ROWS], xend[MAX_GRID_ROWS];
	int cum_node_count[MAX_GRID_ROWS];
} GRID_INFO;
The number of rows in the arrays is defined up front because you can't declare array sizes with variable which have not yet been assigned a value. Obviously, if the SFWMD ever changes the number of rows of data in each data set (which has happened in the past) you would have to change the assigned value to MAX_GRID_ROWS and compile any code which used the above data structure. By declaring a variable of type GRID_INFO, you can use fread to read all to the header information from the SFWMM data file at one time.
      After reading the metadata from the datafile you can start reading actual data from the file. Prepended to each data set is a string which contains the date which the data set represents. This string is 80 characters long. After the reading the string, the file pointer will be located at the first element of hydrology data for that time step. However, this first element does not CO respond to the element (0,0) of the grid. Recall from Fig 1. which shows the boundary of the area covered by the SFWMM. In order to save disk space the SFWMM only stores those cells which are within this boundary. So the first element in the data represents the lower left hand most element which is in the study area. The placement of the of element in the file proceeds from left to right, top to bottom; including only those locations which are with in the study area. The array of offsets, mentioned above, contain the first and last element in each row which contains data. The Nth element of each offset array (xstart[] and xend[]) corresponds to the Nth row of of the grid. For example, if the first element of the xstart[] array is 15 and the first element of the xend[] is 21, then the first 7 elements in the data file will go into the first row of the grid between the 15th and 21st column, inclusive. It is important to note that the offsets in the xstart and xend arrays assume you are indexing the rows and columns of the grid starting with (1,1) as the lower left hand most corner of the grid. If you are indexing your grid from (0,0) then you will have to subtract one from each offset to get the proper value.
      After reading the first data set you begin again, by first reading off the time stamp and then the next data set, repeating this for each data set you wish to read. There is software for the ATLSS project created for converting the data from the SFWMM into data usable by the the ATLSS models. Description of what these programs, data files they data files they create and how they are used in ATLSS are included in other sections of this document.
Figure 1.2 : An overview of the data format used by the SFWMM. The file begins with some metadata, and followed by a sequence of actual data set. Each actual data set is preceded with a time stamp for the following data set.


Copyright © 1999, 2000 by Scott M. Duke-Sylvester/ATLSS
Last updated : 2002/07/26 19:50:04 GMT
Version : 1.5