# GAB.properties
#/*******************************************************************************
# * Copyright (c) 2010 IBM Corporation and others.
# * All rights reserved. This program and the accompanying materials
# * are made available under the terms of the Eclipse Public License v1.0
# * which accompanies this distribution, and is available at
# * http://www.eclipse.org/legal/epl-v10.html
# *
# * Contributors:
# *     IBM Corporation - initial API and implementation
# *******************************************************************************/

# This is the name of the class that will interpret the temperature data file's contents
RECORD_CLASSNAME = org.eclipse.stem.internal.data.geography.specifications.EarthPropertyFileSpecification

# The title
TITLE = GAB temperature data for 2008 at admin level 1

# This is the date for which the values in this file are valid
# See http://purl.org/dc/terms/1.1/valid
VALID=start=2008

# The data is derived from the following primary source
#SOURCE = http://neo.sci.gsfc.nasa.gov/

# ISO3166-1 alpha3 code for the country
ISOKEY = GAB
ADMIN_LEVEL = 1
UNITS = C
DATA_TYPE = temperature

# 120 calculations comma-separated, 10 consecutive calculations for each month (from January to December)
# Field 1: Mean
# Field 2: Standard Deviation
# Field 3: Maximum
# Field 4: Minimum
# Field 5: Range
# Field 6: Skewness
# Field 7: Kurtosis
# Field 8: Root Mean Square
# Field 9: Median
# Field 10: Sample Size
# No data points for a month indicated by 99999.0,0.0,0.0,0.0,0.0,0.0,-1.2,1.0,0.0,0.0
# Maximum: 45 degrees
# Minimum: -25 degrees

GA-1 = 22.04,0.9,30.81,19.92,10.89,3.02,25.16,22.06,21.99,645.0,22.13,1.21,28.19,19.65,8.54,1.02,5.77,22.17,22.06,645.0,22.54,1.01,26.54,19.37,7.17,0.65,3.88,22.57,22.4,645.0,23.29,1.03,27.09,18.82,8.27,-0.15,6.0,23.32,23.3,645.0,23.75,1.05,26.81,19.37,7.44,-0.44,3.9,23.77,23.78,645.0,21.74,0.94,25.3,18.68,6.61,0.16,3.47,21.76,21.78,645.0,22.08,1.03,27.36,18.82,8.54,1.16,6.4,22.1,21.99,645.0,22.02,1.54,30.12,15.51,14.61,0.59,6.27,22.07,22.13,642.0,22.88,0.9,27.22,19.92,7.3,0.38,4.49,22.9,22.81,641.0,22.45,0.92,26.67,18.82,7.85,0.33,4.96,22.47,22.4,645.0,22.29,0.92,25.71,18.54,7.17,-0.33,4.96,22.31,22.26,644.0,22.5,0.82,24.88,20.06,4.82,-0.09,2.71,22.52,22.54,645.0
GA-2 = 22.48,1.53,26.81,18.54,8.27,0.49,2.84,22.53,22.13,1095.0,22.99,2.47,29.84,18.82,11.02,1.02,2.88,23.13,22.13,1095.0,24.89,2.3,30.94,20.75,10.2,0.91,2.62,25.0,24.06,1095.0,23.66,1.83,29.84,18.54,11.3,0.5,3.06,23.73,23.37,1095.0,23.24,1.72,29.02,19.65,9.37,0.64,2.56,23.31,22.88,1095.0,23.58,2.22,29.84,17.3,12.54,0.64,3.06,23.68,23.09,1095.0,23.63,2.53,30.67,20.2,10.47,1.13,3.07,23.76,22.47,1095.0,24.42,3.05,33.98,19.37,14.61,0.82,2.42,24.61,23.37,1095.0,24.87,2.8,32.32,19.65,12.68,0.89,2.61,25.03,23.92,1095.0,24.37,2.09,30.39,20.47,9.92,0.61,2.35,24.46,23.92,1095.0,23.86,1.54,27.91,20.75,7.17,0.33,2.38,23.91,23.78,1095.0,23.07,1.29,26.81,19.37,7.44,0.44,3.04,23.1,22.88,1095.0
GA-3 = 21.54,0.85,23.5,17.72,5.79,-0.86,4.34,21.56,21.57,577.0,22.7,1.1,24.88,17.99,6.89,-0.61,3.24,22.73,22.81,577.0,22.67,1.12,24.88,18.27,6.61,-0.64,3.35,22.7,22.81,577.0,22.7,0.98,24.88,18.82,6.06,-0.45,3.11,22.72,22.81,577.0,22.5,1.2,25.3,16.89,8.41,-0.95,4.73,22.54,22.68,577.0,21.49,0.8,24.06,19.37,4.69,-0.1,2.52,21.51,21.57,577.0,21.47,0.99,24.61,17.72,6.89,-0.63,4.58,21.49,21.57,577.0,22.16,0.94,26.54,17.99,8.54,-0.48,5.18,22.18,22.26,577.0,22.72,0.97,25.71,19.65,6.06,-0.41,3.08,22.74,22.81,576.0,21.76,0.99,24.06,18.82,5.24,0.2,2.29,21.79,21.57,577.0,22.43,0.84,25.16,20.2,4.96,-0.04,2.54,22.45,22.4,577.0,22.56,0.75,24.61,19.92,4.69,-0.3,2.93,22.57,22.61,577.0
GA-4 = 21.03,1.03,24.06,18.27,5.79,-0.01,2.51,21.06,21.02,1247.0,22.3,0.87,25.16,16.61,8.54,-0.42,4.63,22.32,22.26,1247.0,23.08,1.1,27.09,17.44,9.65,-0.21,4.1,23.11,23.09,1247.0,22.78,0.93,25.71,18.82,6.89,-0.31,3.54,22.8,22.81,1247.0,22.97,0.96,26.26,20.47,5.79,0.39,3.15,22.99,22.95,1247.0,22.06,0.85,25.43,19.92,5.51,0.98,4.37,22.07,21.85,1247.0,21.52,1.05,25.43,18.27,7.17,0.55,3.76,21.55,21.37,1247.0,21.88,1.45,27.91,16.34,11.57,0.19,4.52,21.93,21.85,1227.0,23.01,1.76,29.02,16.34,12.68,0.94,4.73,23.07,22.68,1245.0,22.54,1.32,28.19,16.89,11.3,0.28,4.4,22.58,22.4,1247.0,22.53,0.94,27.64,18.27,9.37,0.1,5.17,22.55,22.47,1247.0,22.69,0.67,24.88,20.47,4.41,0.27,3.19,22.7,22.68,1247.0
GA-5 = 21.27,0.96,24.06,18.54,5.51,0.13,2.85,21.29,21.23,703.0,23.15,0.75,25.43,20.75,4.69,-0.11,2.89,23.16,23.23,703.0,23.5,1.03,27.91,20.47,7.44,0.37,3.94,23.52,23.5,703.0,22.33,0.95,24.88,19.09,5.79,-0.04,2.9,22.35,22.26,703.0,23.19,0.79,25.43,20.2,5.24,0.03,3.22,23.2,23.16,703.0,22.15,1.13,25.43,18.82,6.61,0.5,2.96,22.17,21.99,703.0,22.17,1.16,25.16,19.92,5.24,0.48,2.5,22.2,21.99,703.0,22.4,1.47,26.26,18.27,7.99,0.14,2.55,22.44,22.13,703.0,23.44,2.03,28.74,16.34,12.4,-0.04,2.38,23.53,23.5,703.0,22.74,1.52,27.09,13.31,13.78,-0.54,5.53,22.79,22.68,703.0,22.24,1.11,25.43,18.27,7.17,0.1,3.1,22.27,22.13,703.0,22.28,1.11,24.88,16.89,7.99,-0.95,4.8,22.31,22.4,703.0
GA-6 = 21.36,0.78,23.5,17.17,6.34,-0.26,3.82,21.37,21.3,1410.0,22.2,0.61,24.88,20.2,4.69,0.44,3.86,22.21,22.13,1410.0,23.34,0.9,26.26,19.65,6.61,-0.31,3.27,23.36,23.37,1410.0,22.7,1.02,26.26,15.24,11.02,-1.16,6.66,22.73,22.88,1410.0,22.66,0.78,26.81,19.92,6.89,0.39,3.98,22.67,22.61,1410.0,22.29,0.78,24.88,19.37,5.51,0.02,3.55,22.3,22.33,1410.0,22.06,0.88,25.98,18.54,7.44,-0.06,3.42,22.08,22.13,1410.0,22.11,0.89,25.16,18.68,6.48,-0.31,3.55,22.13,22.13,1410.0,22.57,0.83,24.88,17.99,6.89,-0.45,3.68,22.59,22.68,1409.0,22.38,0.81,25.16,19.09,6.06,-0.39,3.97,22.4,22.4,1410.0,22.7,0.52,24.06,20.2,3.86,-0.38,3.94,22.71,22.68,1410.0,22.61,0.73,25.16,19.37,5.79,0.14,3.42,22.62,22.68,1410.0
GA-7 = 21.27,0.85,23.78,18.54,5.24,-0.1,2.9,21.29,21.3,941.0,21.48,0.76,23.5,17.44,6.06,-0.66,5.01,21.5,21.51,941.0,23.05,0.94,25.71,19.92,5.79,-0.4,3.08,23.07,23.16,941.0,21.56,1.45,25.3,15.51,9.78,-0.34,3.51,21.61,21.64,941.0,22.01,0.75,23.78,19.09,4.69,-0.42,2.98,22.02,22.06,941.0,22.01,0.7,25.16,19.09,6.06,-0.41,4.59,22.02,22.13,941.0,22.03,0.57,23.23,19.92,3.31,-0.53,3.49,22.04,22.13,941.0,21.98,0.81,24.06,18.54,5.51,-0.35,3.31,22.0,21.99,941.0,22.62,0.61,24.61,20.2,4.41,-0.37,3.7,22.63,22.68,941.0,22.34,0.71,24.47,19.92,4.55,-0.05,2.74,22.35,22.26,941.0,22.13,0.75,24.61,19.92,4.69,-0.55,3.12,22.14,22.26,941.0,22.3,0.52,24.06,19.92,4.13,-0.31,3.82,22.31,22.4,941.0
GA-8 = 21.61,0.92,23.78,18.27,5.51,-0.61,3.6,21.63,21.71,751.0,22.59,1.04,28.19,18.82,9.37,-0.06,4.45,22.62,22.61,751.0,23.51,0.93,26.95,18.27,8.68,-0.53,5.84,23.53,23.5,751.0,22.72,1.01,25.71,19.65,6.06,-0.39,3.08,22.74,22.81,751.0,22.09,1.04,25.43,17.99,7.44,-0.21,4.12,22.11,22.13,751.0,21.38,0.88,23.78,18.27,5.51,-0.42,2.97,21.4,21.44,751.0,21.96,0.87,25.43,19.37,6.06,0.27,4.07,21.97,21.99,751.0,22.03,0.92,27.09,19.23,7.85,0.61,5.63,22.05,22.06,751.0,22.77,1.18,25.43,18.54,6.89,-0.86,3.95,22.8,22.95,751.0,22.12,1.16,25.16,17.99,7.17,-0.36,2.79,22.15,22.26,751.0,22.06,1.31,25.43,16.34,9.09,-0.73,4.21,22.1,22.13,751.0,22.63,0.82,24.33,19.65,4.69,-0.65,3.48,22.64,22.68,751.0
GA-9 = 20.71,0.71,22.68,17.99,4.69,-0.17,2.92,20.72,20.75,1214.0,21.11,0.85,23.23,17.72,5.51,-0.51,3.09,21.12,21.16,1214.0,22.66,0.78,26.26,19.37,6.89,-0.13,3.38,22.67,22.68,1214.0,22.52,0.94,25.98,19.09,6.89,-0.1,4.94,22.54,22.54,1214.0,22.07,1.15,35.63,18.82,16.81,2.75,27.45,22.1,21.99,1214.0,21.25,0.69,22.95,18.54,4.41,-0.26,3.26,21.27,21.3,1214.0,21.45,0.66,23.5,19.37,4.13,-0.1,2.72,21.46,21.44,1214.0,21.06,0.9,23.5,17.44,6.06,-0.44,3.61,21.08,21.02,1214.0,21.66,1.0,25.43,16.89,8.54,0.13,3.76,21.69,21.57,1213.0,22.18,0.68,24.61,19.09,5.51,-0.22,3.81,22.19,22.13,1214.0,21.97,0.58,24.33,19.92,4.41,-0.37,3.72,21.98,21.99,1214.0,21.97,0.75,24.33,19.65,4.69,-0.35,2.97,21.98,22.06,1214.0
