Eastern Geographic Science Center

Shenandoah National Park Phenology Project—Weather

Data Collection, Description, and Processing

By John W. Jones, Danielle P. Aiello, and Jesse D. Osborne

Open-File Report 2010–1272

U.S. Department of the Interior

U.S. Geological Survey
ii

U.S. Department of the Interior

KEN SALAZAR, Secretary

U.S. Geological Survey

Marcia K. McNutt, Director

U.S. Geological Survey, Reston, Virginia 2010

For product and ordering information:

World Wide Web: http://www.usgs.gov/pubprod

Telephone: 1-888-ASK-USGS

For more information on the USGS—the Federal source for science about the Earth,

its natural and living resources, natural hazards, and the environment:

World Wide Web: http://www.usgs.gov

Telephone: 1-888-ASK-USGS

Suggested citation:

Jones, J. W., Aiello, D. P., Osborne, J. D., 2010, Shenandoah National Park Phenology Project—Weather data 

collection, description, and processing: U.S. Geological Survey Open-File Report 2010–1272, 17 p.

Any use of trade, product, or firm names is for descriptive purposes only and does not imply 

endorsement by the U.S. Government. 

Although this report is in the public domain, permission must be secured from the individual 

copyright owners to reproduce any copyrighted material contained within this report.
iii

Contents

Introduction.................................................................................................................................................................... 1

Methods......................................................................................................................................................................... 1

Weather Station Placement ....................................................................................................................................... 1

Weather Variables ..................................................................................................................................................... 3

Overview of Available Data and Processing Steps........................................................................................................ 3

Data Processing ............................................................................................................................................................ 3

Time Series Inconsistencies in the Weather Station Data ............................................................................................. 8

Data Analysis Processing Stream.................................................................................................................................. 9

Adding New Weather Station Data to Existing Data .....................................................................................................11

File Naming Conventions..............................................................................................................................................11

Conclusion....................................................................................................................................................................12

Acknowledgments ........................................................................................................................................................12

Bibliography..................................................................................................................................................................12

Appendix 1. Detailed flowchart of data processing steps..............................................................................................13

Appendix 2. Macros used in processing data for the Shenandoah National Park Phenology Project...........................14

Figures 

1. Map of Shenandoah National Park depicting locations of weather stations ............................................... 2

2. Simple schematic of weather station Data Cleaning and Data Analysis steps........................................... 3

3. Chart depicting temporal extent of existing air temperature data per weather station between January 

2005 and July 2009, Shenandoah National Park. ...................................................................................... 9 

4. Average monthly maximum air temperature (oC) from the Madison River station, Shenandoah 

National Park. ............................................................................................................................................ 9

5. Example showing how to assess what values should be given to the 'max_columna' and 

'min_columna' code within the grabber and mo_grabber macros ............................................................ 10

Tables

1. Headers for weather data DAT files. .......................................................................................................... 4

2. File naming conventions. ......................................................................................................................... 11
1

Shenandoah National Park Phenology Project—Weather 

Data Collection, Description, and Processing

By John W. Jones, Danielle P. Aiello, and Jesse D. Osborne 

Introduction 

The weather data described in this document are being collected as part of a U.S. Geological 

Survey (USGS) study of changes in Shenandoah National Park (SNP) landscape phenology (Jones and 

Osbourne, 2008). Phenology is the study of the timing of biological events, such as annual plant 

flowering and seasonal bird migration. These events are partially driven by changes in temperature and 

precipitation; therefore, phenology studies how these events may reflect changes in climate. Landscape 

phenology is the study of changes in biological events over broad areas and assemblages of vegetation. 

To study climate-change relations over broad areas (at landscape scale), the timing and amount of 

annual tree leaf emergence, maximum foliage, and leaf fall for forested areas are of interest.

Changes in land use or disturbances such as defoliation by insects, disease, or fire all affect the 

composition and amount of tree canopy in a forest. Observing and understanding the complex ways that 

global or regional-scale climate change combines with these disturbances to affect forest growth 

patterns and succession is difficult, especially for regions where changes in climate are not the most 

extreme, such as the mid-latitude forests of the Eastern United States. 

The forests of the SNP in the Blue Ridge province of Virginia have been protected from major 

land-use change for many decades. In addition, the National Park Service (NPS) has recorded the dates 

and often the location of disturbances such as fires and insect infestations. These factors make the SNP 

an excellent “laboratory” in which to conduct an experiment. 

To better link vegetation changes with climate, weather data are necessary. This report 

documents weather-station data collection and processing procedures used in the Shenandoah National 

Park Phenology Project. For more information about the SNP phenological study, read USGS Fact 

Sheet 2008–3046, Detecting Evidence of Climate Change in the Forests of the Eastern United States,

which is free and available for download at http://pubs.usgs.gov/fs/2008/3046. 

Methods

Weather Station Placement

In consultation with NPS authorities, meteorological stations were placed in the SNP at locations 

selected after considering forest-cover type, the slope of the ground, the direction in which the ground is 

facing (aspect), and whether there is adequate distance from a trail or historic feature (fig. 1). Six of the 

stations were installed during spring of 2005. An additional station (Meadow Spring) was added in 

2008. Additional stations may be added as resources allow. Five of these stations must be visited 

periodically to download data. However, the Meadow Spring and Pocosin stations provide continuous 
2

data retrieval through automated communications with weather satellites. Their data are available in real 

time via the internet at http://egsc.usgs.gov/shenandoah.html.

Figure 1. Map of Shenandoah National Park depicting locations of weather stations. Sources: Environmental 

Science Research Institute, National Park Service, U.S. Geological Survey. 
3

Weather Variables

The instruments on each of the weather stations measure three variables: air temperature, soil 

temperature, and relative humidity (RH). At two of the sites (Meadow Spring and Pocosin) wind speed, 

wind direction, solar radiation, and rainfall are also collected. All observations are recorded on an 

hourly basis. 

Overview of Available Data and Processing Steps

The raw data are downloaded using Campbell Scientific® PC400 Datalogger Support 

Software® from the weather station data loggers to ASCII file format. These data must be reformatted 

and “cleaned” before they can be analyzed. Distribution files are in .dat file format. During the Data 

Cleaning Process and the Data Analysis steps, four workbooks (.xls files) are created for each weather 

station (fig. 2). First, a workbook is created for the Data Cleaning Process, as described in the next 

section. This workbook must have worksheets for raw and reorganized soil temperature, air temperature, 

and relative humidity data. The other three workbooks are created after the Data Cleaning Process is 

completed. There is one workbook for each data type: Soil, Air, and RH. In these workbooks the 

cleaned weather station data undergo basic analysis, and summary tables are created. The Data Cleaning

Process and Data Analysis steps are simplistically represented in figure 2. A detailed flowchart of the 

data processing steps described within this document can be found in appendix 1. 

Figure 2. Simple schematic of weather station Data Cleaning and Data Analysis steps.

Data Processing

Data obtained directly from the five non-automated weather stations in SNP are preprocessed 

through a provisional Microsoft® Excel® workbook to filter out weather data that may be corrupt or 

invalid. The Data Cleaning Process takes place in a user-operated database along with a set of 

instructions to discriminate valid data from invalid data. It is important to note that the process involves 

some decisionmaking for identifying corrupt and invalid data collected by the weather stations, and 

user-intervention at this stage affects all data output. 

The Data Cleaning Process begins with importing the data. The user performs the following 

operations. Please Note: The following directives were produced using Excel 2003, while Excel 2007 
4

commands are given within certain steps where necessary. Some options may be different in other 

versions of the Excel software. 

1. Create a single worksheet named RawData in an Excel workbook named 

Cleanup_StationName.xls. 

The headers (column names) for the .dat files are shown below (table 1) and can be pasted in the 

Excel spreadsheet using the Transpose option in the Paste Special dialog box. First, copy and paste the 

appropriate header list into a randomly chosen cell in the worksheet other than cell A1. Select the pasted

list again to re-copy and Paste Special into cell A1 using the Transpose option. The text will now be 

horizontal to create the headers for each column. Please note that all temperature data are collected in 

degrees Celsius and that there are more data columns for the Pocosin and Meadow Spring stations than 

for the other five stations. This is due to the collection of soil temperature data at two depths and rain 

gages located at these two stations. 

Table 1. Headers for weather data DAT files.

[temp=temperature; avg=average; max=maximum; min=minimum; RH=relative humidity; slrkW=solar radiation kilowatts; 

slrMJ=solar radiation megajoules; tot=total; ws=wind speed; winddir=wind direction; ms=meters per second; N/A=not 

applicable]

TableCellHeading

Moorman River, Doyle 

River, Mathews Arm, 

Madison River, and 

Pine River

Pocosin and Meadow 

Spring

1 Input_type Input_type

2 Year Year

3 Day Day

4 Hour Hour 

5 Soil_temp_avg Air_temp_max

6 Soil_Temp_max Air_temp_min

7 SoilMax_time RH_max

8 Soil_temp_Min RH_min

9 SoilMin_time SlrkW_Max

10 Air_temp_max SlrMJ_TOT

11 AirMax_time SlrkW_2_Max

12 Air_temp_min SlrMJ_2_TOT

13 AirMin_time WS_ms_Max

14 RH_max WS_ms_Min

15 RHMax_time WindDir

16 RH_min Soil_Temp_Max

17 RHMin_time Soil_Temp_Min 

18 N/A Soil_Temp_2_Max

19 N/A Soil_Temp_2_Min

20 N/A N/A
5

2. In Excel 2003 or earlier, use the import external data function under the Data pull-down menu 

on the toolbar, go to ‘Import External Data’, then ‘Import Data’. In Excel 2007, select ‘From 

Text’ on the Data tab. 

3. Locate the first .dat file (make sure the ‘Files of type’ reads “All Files”, not “All Data Sources”, 

or else you will not be able to see your files at their location on the disk. 

4. On the ‘Text Import Wizard’ prompt, make sure that the ‘Delimited’ radio button is selected and 

press ‘Next’.

5. Under the ‘Delimeters’ box selection, unselect ‘Tab’ and then select ‘Comma’. Press the ‘Finish’ 

button. 

6. When asked, select the cell location that you would like the data to begin. For the first dataset of 

a series, this would logically be cell A2. The rest of these instructions will assume that you have 

pasted your first dataset into cell A2. Each successive dataset would logically be the next 

available cell after all existing datasets. You may find that there are more data columns than 

headers; these data will be removed in the cleaning process. Keep in mind that you do not have 

to import your data in any particular order, but see the note at the end of this sub-section before 

proceeding. 

7. Press ‘OK’. 

8. Repeat steps 3-8 for each successive .dat file dataset until all .dat files are entered into the 

worksheet. 

Please note: We change the cell colors for each imported dataset as a simple way of visually 

tracking the origin of the datasets as they move through the procedure. This helps show which 

records overlap and the origin of errors. However, once the following step (duplicate record deletion) is 

completed, the origin of data can no longer be tracked this way. 

Identify Duplicate Records

1. Select all of your data using the hot-key Ctrl+a (be sure to select all your data every time you 

‘sort’ the data). 

2. If using Excel 2007, go to the Home tab on the toolbar, select Format, then ‘Autofit Column 

Width’. In Excel 2003, under the Format pull-down menu on the toolbar, select ‘Column’, then 

‘AutoFit Selection’.

3. Under the Data pull-down menu (or Data tab in Excel 2007) on the toolbar, go to ‘Sort’.

4. On the ‘Sort’ window prompt, under ‘My data range has’ select the ‘Header row’ option.

5. Then, using the drop-down boxes, Sort by “Year”, then by “Day”, then by “Hour” leaving the 

‘Ascending’ radio button to its default position (‘Smallest to Largest’ in Excel 2007). 

Delete Duplicate Records

1. Select all records (Ctrl+a). 

2. If using Excel 2007, under the Data tab on the toolbar, go to the ‘Data Tools’ section and select 

‘Remove Duplicates’. Select ‘My data has headers’ and make sure that all possible columns are 

checked. If using Excel 2003, under the Data pull-down menu on the toolbar, go to ‘Filter’ then 

‘Advanced Filter’. Complete the following steps when using Excel 2003 to complete the process 

of deleting duplicate records. 
6

3. Click the radio button ‘Filter the list, in-place’. 

4. Under ‘List Range’, make sure that all your data are highlighted. 

5. Check the box that reads, ‘Unique records only’, then click OK. 

6. Depending on the size of your file, this may take a few minutes to process. Once it is finished, 

the filtered list will be displayed and the duplicate rows will be hidden. (Keep in mind that those 

hidden records still exist underneath the filtered display!) In Excel 2007, the duplicate records 

will have been removed completely after the process has run. 

7. Under the Edit pull-down menu on the toolbar, go to ‘Office Clipboard’. Make sure that the 

filtered list is still selected, and click ‘copy’ under the Edit pull-down menu. 

8. Under the Data pull-down menu, click ‘Filter’ then ‘Show All’. 

9. Press the Delete key.

10. In the Clipboard on the right of your screen, click on the filtered list item to paste.

Please note: Once this step is complete, imported data can no longer be updated as an external 

dataset that is linked to the file. Also, the cell colors of the original datasets will be lost. It is best to 

reset the colors of all cells to ‘No fill’ at this point.

From this point on, only one variable is to be cleaned at a time. The raw data will stay as is, and the next 

steps will take place only on a certain data type in a single worksheet for that data type. Each time a data

type is cleaned, the RawData worksheet must be copied and renamed, as described in Step 2 below. 

1. Right-click the mouse on the RawData worksheet tab, then choose ‘Move or Copy’. 

2. Select the worksheet RawData and check the ‘Create a copy’ checkbox. Then, rename the new 

worksheet as “Reorg[sitename]_[variable type]” (for example, ReorgMormanR_Air). For the 

remainder of the procedure you will be working out of the new worksheet (not the RawData

worksheet). After all data types have been cleaned with the steps that follow, there will be four 

worksheets in the Excel workbook: (1) RawData, (2) Reorg[sitename]_Air, 

(3) Reorg[sitename]_Soil, and (4) Reorg[sitename]_RH. 

The following steps are used to delete obviously inaccurate readings within the data. 

1. Select all data.

2. Begin with cleaning the soil temperature data. Sort data as ascending by ‘Soil_temp_avg’, then 

by ‘None’, then by ‘None’. (Note: there is no average soil temperature column for the Pocosin or 

Meadow Spring stations. The Soil_Temp_Max and Soil_Temp_Min columns will be evaluated 

for those two stations’ soil temperature data.)

3. Examine the data. Any values for Soil Temperature that are ≤ -5° or ≥ 33° C should raise a red 

flag. [Note: Readings for Air Temperature that are ≤ -25° or ≥ 41° C should also be looked at 

more closely, and Relative Humidity readings should be between 0 and 100 percent.] It should 

be rather evident that inaccurate readings have been recorded if (1) a long list of the same value 

appears consistently throughout a certain period of time, (2) the list contains high negative 

values, (3) values occurring within a time period of just a few hours are inconsistent within a 

small sequence, (4) values are inconsistent with their respective Julian date or season, (5) records 

contain values of 6999 and 2599 in the min/max fields (delete these), and (6) minimum values 

are greater than maximum values for the same records.
7

4. Select all of the data and sort the data as descending by the same field. After the data have been 

flipped, repeat step 3.

5. Select all of the data and sort the data as ascending by Soil_Temp_Max. Repeat step 3 and 4. 

6. Select all of the data and sort the data as ascending by Soil_Temp_Min. Repeat step 3 and 4. 

7. When cleaning the Air Temperature and Relative Humidity data, both the ‘min’ and ‘max’ 

fields need to be examined with the above steps for these variables within their separate 

worksheets. 

After all obviously inaccurate readings have been removed, sort the records in ascending order by 

‘Year’, then ‘Day’, then ‘Hour’. Create a date field in the format of mm/dd/yyyy from the Julian date 

serial number imbedded in the raw data with the following steps: 

1. Select the field titled ‘Soil_temp_avg’ (or Air_temp_max for the Pocosin and Meadow Spring 

stations). Under the Insert pull-down menu on the toolbar, go to ‘Columns’. 

2. Repeat step 1 four times so that you now have four new empty column fields. 

3. Title the first new column with the heading ‘Date_Dummy’, the second new column with the 

heading ‘Month’, the third with ‘Day’, and the fourth with ‘Date’.

4. Select the ‘Date_Dummy’ field and format the cell type. Under the Format pull-down menu on 

the toolbar, go to ‘Cells’. Within the ‘Format Cells’ prompt, under the ‘Number’ tab, select 

‘Date’ from the ‘Category’ frame. Select the first option, ‘3/14/2001’ and press the OK button. 

5. Select cell E2 and write the following formula: =$C2 and press enter. This should return a value 

in mm/dd/yyyy format. Evaluate the month and day of this date (do not worry about the year 

being “1900” right now). 

• IF the date returned in cell E2 is before February 28th, continue to step 6. 

• IF the date returned in cell E2 is after February 28th of a leap year (look at the respective 

value under the field ‘Year’), continue to step 6. 

• IF the date returned in E2 is after February 28th of a perpetual year (a non-leap year), rewrite 

the formula in cell E2 as the following: =($C2+1), and then continue to step 6. 

6. Copy the formula of cell E2 to the clipboard and paste it to each successive cell under the 

‘Dummy_date’ field until either the end of the year is reached or February 28th is reached (Julian 

date # 365 or Julian date # 59, respectively).

7. Look at the next available cell under the ‘Dummy_date’ field and repeat steps 5 and 6 until 

every record has a ‘dummy date’ in mm/dd/yyyy format. Each time you need to write a new 

formula, be sure to substitute the current record number for the number “2” in the formula 

“=$C2”.

8. Select cell F2 (under the ‘Month’ field) and write the following formula: =MONTH(E2). Copy 

this cell and paste it to the remaining cells of the field. 

9. Select cell G2 (under the ‘Day’ field) and write the following formula: =DAY(E2). Copy this 

cell and paste it to the remaining cells of the field.

10. Select cell H2 (under the ‘Date’ field) and write the following formula: =DATE(B2,F2,G2). 

Copy this cell and paste it into the remaining cells of the field.

11. Select and copy all values in the fields ‘Dummy_date’, ‘Month’, ‘Day’, and ‘Date’ to the 

clipboard. In Excel 2003, with the selection still highlighted, execute a ‘Paste Special’ in place. 

To do this, click under the Edit pull-down menu on the toolbar, and find ‘Paste Special’. On the 
8

‘Paste Special’ prompt, choose the ‘Paste’ option ‘Values’ and press OK. In Excel 2007, with 

the selection still highlighted, go to the Clipboard section of the Home tab, click on the 

downward arrow on the ‘Paste’ button and choose ‘Paste Values’. You should notice that the 

content of each cell is no longer the formula you wrote. The contents should now be the product 

of those formulas. 

Finally, the data are saved (Excel save command) as SitenameMMYY_MMYY’. The data are now 

cleaned and ready for analysis. The file name includes the following: 

a) Sitename = Name of the weather station (for example, Mathews Arm = MatArm) 

b) MM = Month that the data begin 

c) YY = Year that the data begin

d) MM’ = Month that the data end 

e) YY’ = Year that the data end

Please note: At this point, each worksheet contains categorical data associated with all weather 

variables, but only data fields related to the primary variable for the worksheet are clean. For 

example, air data are visible within the worksheet for soil data. However, only the fields related to soil 

data have been cleaned. In this case, all fields related to air data may be erroneous and should not be 

used for any purpose. Cleaned air data can be found in the air data worksheet. During the process 

described in the Data Analysis processing stream, only valid data are moved to a new worksheet for 

further analysis.

Time Series Inconsistencies in the Weather Station Data

It is extremely difficult to keep all weather stations operating at all times in the SNP. They are 

subjected to harsh conditions in an uncontrolled environment where many incidents may occur, 

including interferences from wildlife and humans. Because of these conditions, not all instruments on a 

weather station may be functioning properly at any given time. For this reason, we split the data into 

three separate variable-type categories to retain logged data for instruments known to be functioning 

properly and discard data for instruments that are not. Damage to the sensors and data loggers interrupts 

the continuity of the data stream and results in different temporal extents among the stations (fig. 3). 

These ‘gaps’ in data records are not omissions but are an indication of corrupt and invalid data that have 

been eliminated in the Data Cleaning Process.
9

Figure 3. Chart depicting temporal extent of existing air temperature data per weather station between January 

2005 and July 2009, Shenandoah National Park.

Data Analysis Processing Stream

Once the data are cleaned, they are then summarized in Excel using Microsoft Visual Basic® 

code (described in appendix 2) that produce daily and monthly average maximums, max-maximums, 

average minimums, and min-minimums. The data can then be plotted with these results (fig. 4). Please 

note: macros are executed for each data type and each weather station individually. 

Figure 4. Average monthly maximum air temperature (oC) from the Madison River station, Shenandoah National 

Park.
10

The following steps describe how to utilize these macros in an Excel workbook: 

1. Create an Excel workbook with the following three worksheets: Alldata (as one word), monthly, 

and daily. 

2. Under the Tools pull-down menu (the View tab in Excel 2007) go to Macro, then click 

‘Macros...’ to open the Macro Tool. 

3. Name the Macro grabber, then click Create. 

4. In Visual Basic, copy and paste the grabber and mo_grabber code from appendix 2 of this 

document into the module (code) between the text Sub grabber() and End Sub. 

5. The only section of the code that needs editing is the ‘max_columna’ and ‘min_columna’ values. 

This code retrieves the maximum and minimum weather data values from the columns they are 

in. These columns will be different depending on whether you are working with cleaned air 

temperature data, soil temperature data, or RH data, as well as depending on which station is 

being viewed. In order to know what values the 'max_columna' and 'min_columna' need to equal 

within the code, count the number of columns from the Date (H) column to the maximum and 

minimum weather data for the grabber macro, and from the Month (F) column for the 

mo_grabber macro (fig. 5).

Figure 5. Example showing how to assess what values should be given to the 'max_columna' and 'min_columna'

code within the grabber and mo_grabber macros. Pocosin air data are shown. Please note: Values will be 

different for the other data types (for example, soil temp or RH), as well as for different weather stations.

6. With cleaned data for one data type that is being summarized in the Alldata worksheet, the 

macro can be run. After the grabber macro has run successfully the worksheet labeled ‘daily’ 

should be populated with daily averages of the weather data. The headers for the ‘daily’ data are 

as follows: Date (B2), max (C2), average max (D2), min (E2), average min (F2), n (G2), last 

max (H2), last min (I2). 

7. In order to create the monthly averages, repeat the previous steps with the mo_grabber macro. 

For this code, the edits to ‘max_columna’ and ‘min_columna’ need to be counted from the 

month column (F) in the Alldata worksheet. Once the mo_grabber macro is run, the headers for 

the new ‘monthly’ data are as follows: month (B2), year (C2), max (D2), average max (E2), min

(F2), average min (G2), n (H2). 

These data can then be plotted and analyzed (fig. 5). 
11

Adding New Weather Station Data to Existing Data

As new data files are collected from the weather stations, they are cleaned and integrated into the 

data analysis process. The following steps are taken with new .dat files:

1. Open a new Excel workbook and name the first worksheet RawData and add the headers (table 

1) for the station. 

2. Import new .dat files by following the steps in the Data Processing section of this document. 

3. Once the .dat files are loaded, and given cell colors if there is more than one file, follow the steps 

to identify and delete duplicate records. 

4. Copy the RawData worksheet three times for the three data types (soil temperature, air 

temperature, and RH) using the worksheet naming conventions: Regorg[sitename]_[variable 

type] (for example, ReorgPocosin_Soil). 

5. Within the new worksheets with the copied RawData, follow the steps to manually delete 

obviously inaccurate readings within the data in the Data Processing section of this document. 

6. Next, follow the steps to create a date field in the mm/dd/yyyy format from the Julian date serial 

number. 

7. Save the Excel workbook as SitenameMMYY_MMYY (begin and end dates of the data). 

8. Once the data are cleaned, they can be copied into their respective Data Analysis workbooks in 

the Alldata worksheet following the previous data; now the new data have been combined with 

the previous data. This should be done for all data types: air temp, soil temp, and RH. 

9. Re-run macros (grabber and mo_grabber) to create daily and monthly summary tables that 

include the new data in the daily and monthly worksheets for all data types. 

File Naming Conventions

It is important to maintain a consistent file structure. If the weather station data are being 

processed and analyzed for the Shenandoah National Park Phenology Project, certain file naming 

conventions need to be applied (table 2). 

Table 2. File naming conventions.

File type File name Example

MS Excel workbook 

for cleaning process SitenameMMYY_MMYY Pocosin0809_0410.xls

MS Excel workbook 

macros are run in [Sitename]_[DataType]Data Pocosin_AirData.xls

DAT files SitenameYYYYMMYYYYMM Pocosin200506_20012.dat
12

Conclusion

This report describes the process that the U.S. Geological Survey uses to quality assess and 

quality control data downloaded from project weather stations in the SNP. The weather data described 

in this document are provisional pending further analysis and peer review. However, if these data would 

assist your research, they have been made available from the USGS Eastern Geographic Science Center 

(EGSC). To request them, contact:

John W. Jones

Phone: (703) 648-5543 

Fax: (703) 648-4603 

Email: jwjones@usgs.gov

Acknowledgments

The authors would like to extend their thanks to Cindy Cunningham for all of her hard work and 

dedication with the operation of the weather stations. We would also like to thank Allisyn HudsonDunn, Natlee Hernandez-Guevara, and Louis Keddell for thoroughly testing the manual’s procedures. 

Bibliography

Jones, J.W. and Osborne, J.D., 2008, Detecting evidence of climate change in the forests of the Eastern 

United States: U.S. Geological Survey Fact Sheet 2008–3046, 2 p. 
13

Appendix 1. Detailed flowchart of data processing steps.
14

Appendix 2. Macros used in processing data for the Shenandoah National Park 

Phenology Project.

' grabber Macro

' 

 Dim fecha As Date

 Worksheets("daily").Activate

 Range("B3").Select

 Worksheets("Alldata").Activate

 Range("H2").Select

 max_columna = 6

 min_columna = 8

 n = 0

 fecha_uno = 0

 fecha_dos = 0

 maximo = 0

 minimo = 0

 maximo_max = -99999

 minimo_min = 99999

 suma_max = 0

 suma_min = 0

 

 fecha_uno = ActiveCell.Value

 fecha_dos = ActiveCell.Offset(1, 0).Value

Do While fecha_dos <> ""

' begining of grab day

 

 Do Until fecha_uno <> fecha_dos

 maximo = ActiveCell.Offset(0, max_columna).Value

 minimo = ActiveCell.Offset(0, min_columna).Value

 n = n + 1

 If maximo > maximo_max Then maximo_max = maximo

 If minimo < minimo_min Then minimo_min = minimo

 suma_max = suma_max + maximo

 suma_min = suma_min + minimo

 ActiveCell.Offset(1, 0).Select

 fecha_uno = ActiveCell.Value

 fecha_dos = ActiveCell.Offset(1, 0).Value

 Loop

 maximo = ActiveCell.Offset(0, max_columna).Value

 minimo = ActiveCell.Offset(0, min_columna).Value

 n = n + 1

 If maximo > maximo_max Then maximo_max = maximo

 If minimo < minimo_min Then minimo_min = minimo

 suma_max = suma_max + maximo

 suma_min = suma_min + minimo

 ActiveCell.Offset(1, 0).Select

 'fecha_uno = ActiveCell.Value
15

 'fecha_dos = ActiveCell.Offset(1, 0).Value

 

 Worksheets("daily").Activate

 'Range("B3").Select

 ActiveCell = fecha_uno

 ActiveCell.Offset(0, 1) = maximo_max

 ActiveCell.Offset(0, 2) = suma_max / n

 ActiveCell.Offset(0, 3) = minimo_min

 ActiveCell.Offset(0, 4) = suma_min / n

 ActiveCell.Offset(0, 5) = n

 ActiveCell.Offset(0, 6) = maximo

 ActiveCell.Offset(0, 7) = minimo

 ' end of one day grab

 

maximo = 0

minimo = 0

maximo_max = -99999

minimo_min = 99999

suma_max = 0

suma_min = 0

n = 0

ActiveCell.Offset(1, 0).Select

Worksheets("Alldata").Activate

fecha_uno = ActiveCell.Value

fecha_dos = ActiveCell.Offset(1, 0).Value 

 

Loop

 

End Sub

Sub mo_grabber()

'

' monthly grabber Macro

'

'

 Dim fecha As Date

 Worksheets("monthly").Activate

 Range("B3").Select

 Worksheets("Alldata").Activate

 Range("F2").Select

 max_columna = 8

 min_columna = 10

 n = 0

 fecha_uno = 0

 fecha_dos = 0

 maximo = 0

 minimo = 0

 maximo_max = -99999

 minimo_min = 99999
16

 suma_max = 0

 suma_min = 0

 

 fecha_uno = ActiveCell.Value

 fecha_dos = ActiveCell.Offset(1, 0).Value

Do While fecha_dos <> ""

' begining of grab day

 Do Until fecha_uno <> fecha_dos

 maximo = ActiveCell.Offset(0, max_columna).Value

 minimo = ActiveCell.Offset(0, min_columna).Value

 n = n + 1

 If maximo > maximo_max Then maximo_max = maximo

 If minimo < minimo_min Then minimo_min = minimo

 suma_max = suma_max + maximo

 suma_min = suma_min + minimo

 ActiveCell.Offset(1, 0).Select

 fecha_uno = ActiveCell.Value

 ano = ActiveCell.Offset(0, -4).Value

 fecha_dos = ActiveCell.Offset(1, 0).Value

 Loop

 maximo = ActiveCell.Offset(0, max_columna).Value

 minimo = ActiveCell.Offset(0, min_columna).Value

 n = n + 1

 If maximo > maximo_max Then maximo_max = maximo

 If minimo < minimo_min Then minimo_min = minimo

 suma_max = suma_max + maximo

 suma_min = suma_min + minimo

 ActiveCell.Offset(1, 0).Select

 'fecha_uno = ActiveCell.Value

 'fecha_dos = ActiveCell.Offset(1, 0).Value

 

 Worksheets("monthly").Activate

 'Range("B3").Select

 ActiveCell = fecha_uno

 ActiveCell.Offset(0, 1) = ano

 ActiveCell.Offset(0, 2) = maximo_max

 ActiveCell.Offset(0, 3) = suma_max / n

 ActiveCell.Offset(0, 4) = minimo_min

 ActiveCell.Offset(0, 5) = suma_min / n

 ActiveCell.Offset(0, 6) = n 

 ' end of one day grab

maximo = 0

minimo = 0

maximo_max = -99999

minimo_min = 99999

suma_max = 0

suma_min = 0

n = 0

ActiveCell.Offset(1, 0).Select

Worksheets("Alldata").Activate
17

fecha_uno = ActiveCell.Value

fecha_dos = ActiveCell.Offset(1, 0).Value

 

 

Loop