# GNB.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 = GNB temperature data for 2003 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=2003

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

# ISO3166-1 alpha3 code for the country
ISOKEY = GNB
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

GW-BA = 29.06,1.57,33.01,25.98,7.03,0.74,2.9,29.1,28.74,192.0,32.36,2.47,37.42,27.36,10.06,0.12,2.12,32.45,32.32,192.0,33.59,2.16,37.97,29.02,8.96,-0.05,2.17,33.66,33.7,192.0,36.39,2.68,41.69,30.39,11.3,-0.2,2.04,36.49,36.8,192.0,34.28,2.3,39.49,30.32,9.16,0.2,1.91,34.36,34.25,192.0,28.05,3.57,34.8,22.95,11.85,0.19,1.6,28.27,28.05,192.0,20.01,0.82,22.68,17.65,5.03,0.42,3.43,20.03,19.92,192.0,21.21,0.79,23.5,18.82,4.69,-0.01,3.44,21.22,21.16,192.0,22.4,0.91,24.06,19.65,4.41,-0.37,2.51,22.42,22.47,192.0,23.36,0.89,25.71,21.16,4.55,0.1,2.53,23.37,23.33,192.0,25.47,0.54,26.81,23.64,3.17,-0.45,3.84,25.47,25.43,192.0,24.35,0.91,26.4,21.57,4.82,-0.27,3.15,24.37,24.33,192.0
GW-BL = 25.53,1.6,29.7,19.65,10.06,0.4,5.46,25.58,25.16,85.0,24.84,1.69,29.43,21.76,7.67,0.99,3.92,24.9,24.61,85.0,24.64,1.55,28.74,22.68,6.06,1.17,3.52,24.69,24.19,85.0,26.03,1.98,31.22,21.02,10.2,0.78,3.7,26.1,25.71,85.0,25.8,1.45,29.57,22.95,6.61,0.87,3.37,25.84,25.43,85.0,23.02,1.56,25.16,14.96,10.2,-2.55,11.51,23.07,23.5,85.0,20.71,1.33,22.68,16.06,6.61,-1.08,4.04,20.75,21.02,83.0,20.27,1.26,23.78,17.03,6.75,-0.11,2.95,20.31,20.2,83.0,23.31,1.2,25.16,19.92,5.24,-1.26,4.09,23.34,23.57,83.0,24.59,0.91,26.4,23.23,3.17,0.53,2.13,24.61,24.33,84.0,26.55,0.76,28.6,25.16,3.44,0.62,3.18,26.56,26.54,85.0,24.76,1.63,28.6,18.54,10.06,0.06,5.09,24.82,24.61,85.0
GW-BM = 27.05,0.66,28.19,25.16,3.03,-0.39,3.8,27.06,27.09,30.0,27.82,1.22,29.84,24.33,5.51,-0.52,3.69,27.84,27.91,30.0,27.58,1.6,30.94,23.37,7.58,-0.5,3.76,27.63,27.64,30.0,29.68,1.71,32.87,26.26,6.61,0.15,2.11,29.73,29.57,30.0,28.43,1.82,32.32,25.16,7.17,0.14,2.56,28.49,28.46,30.0,23.91,1.02,27.09,22.68,4.41,1.32,4.56,23.93,23.68,30.0,21.52,0.73,23.78,20.61,3.17,1.08,4.21,21.54,21.51,30.0,21.26,1.4,23.23,19.09,4.13,0.05,1.6,21.31,21.16,30.0,23.98,0.38,24.61,23.09,1.52,-0.98,3.12,23.98,24.06,30.0,25.48,0.63,26.54,24.06,2.48,-0.23,2.5,25.48,25.43,30.0,26.72,0.43,27.36,25.98,1.38,0.06,1.87,26.72,26.64,30.0,24.91,0.68,25.98,23.78,2.2,-0.16,1.94,24.92,25.02,30.0
GW-BS = 27.69,0.54,28.19,26.95,1.24,-0.36,1.63,27.7,27.78,5.0,29.43,0.9,30.39,28.19,2.2,-0.32,1.66,29.44,29.57,5.0,28.89,0.88,29.84,27.64,2.2,-0.44,1.81,28.9,29.15,5.0,31.62,1.24,32.6,29.7,2.89,-0.78,1.99,31.64,32.32,5.0,29.66,1.11,30.53,27.91,2.62,-0.82,2.14,29.68,30.12,5.0,25.25,1.31,27.09,23.78,3.31,0.34,1.79,25.28,25.02,5.0,21.41,0.63,22.13,20.47,1.65,-0.41,2.07,21.42,21.3,5.0,20.18,0.66,21.16,19.65,1.52,0.64,1.84,20.19,19.92,5.0,23.7,0.32,24.19,23.37,0.83,0.69,2.28,23.7,23.64,5.0,25.61,0.55,25.98,24.74,1.24,-0.84,2.08,25.62,25.98,5.0,26.87,0.41,27.36,26.26,1.1,-0.37,2.22,26.87,26.81,5.0,25.57,0.64,26.26,24.74,1.52,-0.15,1.53,25.58,25.57,5.0
GW-CA = 27.94,1.32,31.22,24.88,6.34,0.6,2.74,27.97,27.78,165.0,28.95,2.18,34.8,24.61,10.2,0.56,2.77,29.03,28.6,165.0,29.63,2.41,35.42,24.06,11.37,0.48,2.54,29.73,29.15,165.0,31.6,3.03,39.21,25.71,13.5,0.46,2.29,31.75,31.01,165.0,30.6,2.75,36.87,25.71,11.16,0.37,2.03,30.73,30.12,165.0,24.93,1.92,29.29,18.27,11.02,-0.21,3.0,25.01,24.74,165.0,21.5,1.14,24.33,18.41,5.93,0.08,3.09,21.53,21.51,164.0,20.73,1.48,26.26,14.96,11.3,-0.36,5.33,20.78,20.75,165.0,23.36,1.11,25.98,16.89,9.09,-1.41,9.48,23.39,23.5,165.0,25.58,0.96,27.91,22.4,5.51,-0.46,3.13,25.6,25.71,165.0,26.84,0.54,28.19,25.43,2.76,-0.13,2.66,26.84,26.81,165.0,24.68,1.13,27.36,20.2,7.17,-0.9,5.02,24.71,24.74,165.0
GW-GA = 30.5,1.48,33.98,27.78,6.2,0.22,2.06,30.53,30.26,300.0,35.09,1.4,38.39,32.05,6.34,0.09,2.51,35.11,35.08,300.0,35.56,1.07,39.21,32.6,6.61,0.04,3.54,35.57,35.63,300.0,37.87,1.69,42.52,34.46,8.06,-0.08,2.29,37.9,38.01,300.0,34.89,1.64,38.66,31.22,7.44,-0.2,2.41,34.93,35.08,300.0,26.29,2.52,34.11,21.02,13.09,0.44,3.38,26.41,26.64,300.0,20.16,0.95,23.5,17.17,6.34,0.69,4.06,20.18,20.06,300.0,21.47,0.86,23.5,19.09,4.41,-0.21,2.82,21.49,21.57,300.0,21.62,0.88,23.78,18.82,4.96,-0.38,3.27,21.63,21.64,300.0,24.01,0.89,26.81,21.3,5.51,-0.07,2.92,24.03,23.92,300.0,26.56,1.06,29.02,24.61,4.41,0.74,2.53,26.58,26.26,300.0,26.39,1.63,31.22,22.95,8.27,0.64,2.72,26.44,26.05,300.0
GW-OI = 29.26,1.17,32.46,26.54,5.93,0.4,3.29,29.29,29.15,184.0,32.99,1.6,37.42,30.12,7.3,0.5,2.41,33.03,32.67,184.0,34.15,1.69,38.52,28.74,9.78,-0.16,3.65,34.2,34.25,184.0,38.13,1.77,41.69,32.6,9.09,-0.79,3.79,38.17,38.32,184.0,35.42,1.52,38.32,30.12,8.2,-0.68,3.69,35.45,35.63,184.0,28.59,1.41,32.6,24.88,7.72,0.09,2.82,28.63,28.6,184.0,20.08,1.48,24.06,14.13,9.92,-0.71,5.02,20.13,20.06,184.0,21.99,0.97,24.06,18.82,5.24,-0.89,4.17,22.02,21.99,184.0,23.3,0.92,25.43,17.99,7.44,-1.56,9.7,23.31,23.3,184.0,24.03,1.3,26.81,21.3,5.51,0.14,2.09,24.07,23.99,184.0,25.77,0.73,27.64,22.68,4.96,-0.31,3.77,25.78,25.71,184.0,24.72,1.23,27.09,17.99,9.09,-1.18,6.84,24.75,25.02,184.0
GW-QU = 26.81,0.94,29.02,25.16,3.86,0.46,2.47,26.82,26.67,103.0,28.33,1.43,31.5,25.3,6.2,0.42,2.76,28.37,28.19,103.0,28.7,1.93,32.6,24.88,7.72,-0.23,2.5,28.76,29.02,103.0,31.36,2.42,36.04,26.54,9.51,-0.04,2.31,31.45,31.36,103.0,29.83,2.59,34.53,24.61,9.92,-0.38,2.16,29.94,30.12,103.0,25.26,1.76,29.29,22.13,7.17,0.54,2.5,25.32,24.88,103.0,20.62,0.94,22.4,17.44,4.96,-0.52,3.65,20.64,20.61,103.0,20.45,1.93,23.78,13.58,10.2,-1.33,4.71,20.54,21.02,103.0,22.51,0.79,24.88,20.75,4.13,0.01,3.32,22.52,22.68,103.0,23.78,0.84,26.26,21.57,4.69,0.25,3.33,23.8,23.71,103.0,26.09,0.54,27.64,24.88,2.76,0.41,3.58,26.1,26.12,103.0,24.53,0.74,26.54,22.68,3.86,0.42,3.3,24.54,24.47,103.0
GW-TO = 26.68,0.83,29.7,24.88,4.82,0.67,4.59,26.69,26.67,119.0,28.09,1.39,33.98,25.98,7.99,1.63,6.91,28.13,27.78,119.0,28.29,2.09,35.08,24.61,10.47,1.32,5.23,28.36,27.91,119.0,30.39,1.92,36.18,25.43,10.75,0.16,3.79,30.45,30.39,119.0,29.16,2.02,34.8,25.71,9.09,0.26,2.61,29.23,29.29,119.0,23.9,1.39,26.26,17.72,8.54,-1.02,4.85,23.94,24.19,119.0,21.13,0.82,24.33,18.82,5.51,-0.11,4.81,21.15,21.23,119.0,21.39,1.26,25.16,16.06,9.09,-0.65,5.96,21.43,21.54,118.0,22.69,1.19,24.33,18.27,6.06,-1.3,4.62,22.72,22.95,119.0,24.77,0.9,26.26,22.68,3.58,-0.9,2.77,24.79,25.02,119.0,25.54,0.7,27.09,23.23,3.86,-0.27,3.48,25.55,25.43,119.0,25.14,0.87,27.09,22.68,4.41,0.19,2.59,25.16,24.95,119.0
