# BEN.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 nighttemp data file's contents
RECORD_CLASSNAME = org.eclipse.stem.internal.data.geography.specifications.EarthPropertyFileSpecification

# The title
TITLE = BEN nighttemp 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 = BEN
ADMIN_LEVEL = 1
UNITS = C
DATA_TYPE = nighttemp

# 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

BJ-AK = 15.62,1.35,20.2,6.97,13.23,-0.32,6.85,15.68,15.51,1043.0,18.67,1.28,22.4,12.48,9.92,-0.06,4.43,18.72,18.61,1022.0,20.25,1.52,25.16,13.31,11.85,0.12,4.16,20.3,20.2,1042.0,21.19,1.15,24.33,16.34,7.99,-0.55,3.56,21.22,21.3,1043.0,22.91,0.84,26.26,20.47,5.79,0.26,3.5,22.93,22.95,1043.0,21.47,1.34,26.26,17.99,8.27,0.99,3.58,21.51,21.02,1043.0,19.04,1.23,22.81,14.41,8.41,0.22,3.62,19.08,18.96,1043.0,19.32,1.52,22.4,14.13,8.27,-0.48,3.29,19.38,19.37,1041.0,20.25,1.12,23.78,15.24,8.54,-0.33,3.57,20.28,20.33,1018.0,19.64,0.8,22.13,17.17,4.96,0.46,3.22,19.66,19.51,1043.0,17.4,1.11,20.75,13.58,7.17,0.04,2.95,17.43,17.3,1043.0,18.26,1.09,21.02,13.58,7.44,-0.24,3.27,18.29,18.27,1043.0
BJ-AQ = 19.14,0.87,21.85,17.44,4.41,0.78,3.53,19.16,19.03,105.0,20.25,1.38,23.23,16.61,6.61,-0.01,2.76,20.3,20.2,103.0,21.06,1.51,23.5,15.79,7.72,-1.36,5.03,21.11,21.51,105.0,21.0,0.92,23.23,18.54,4.69,0.17,2.96,21.02,21.02,105.0,21.83,1.11,23.78,17.72,6.06,-0.91,4.83,21.86,21.85,105.0,20.75,0.57,21.85,19.09,2.76,-0.63,3.76,20.76,20.82,105.0,19.94,0.6,21.02,18.27,2.76,-0.94,3.75,19.94,20.06,103.0,19.45,0.93,21.02,16.89,4.13,-1.17,4.24,19.47,19.58,105.0,20.16,0.76,21.57,17.99,3.58,-1.0,3.58,20.17,20.47,105.0,20.36,0.74,21.57,17.17,4.41,-1.4,6.01,20.37,20.47,105.0,21.53,0.91,23.5,19.92,3.58,0.07,1.85,21.55,21.57,105.0,21.6,0.85,23.78,19.92,3.86,0.51,3.01,21.62,21.44,105.0
BJ-BO = 15.44,0.97,19.09,11.38,7.72,0.05,3.81,15.47,15.51,1732.0,18.07,1.4,22.68,12.2,10.47,-0.77,5.26,18.12,18.13,1730.0,19.9,1.6,27.36,12.48,14.88,0.14,3.88,19.96,19.78,1731.0,22.11,1.4,26.26,15.51,10.75,-0.73,4.48,22.16,22.26,1733.0,23.31,1.03,27.64,19.37,8.27,0.32,3.72,23.33,23.23,1733.0,22.14,1.81,29.02,16.06,12.95,0.96,3.85,22.21,21.85,1733.0,19.76,1.47,23.23,14.96,8.27,-0.15,2.41,19.82,19.85,1733.0,19.51,1.69,23.78,11.1,12.68,-0.65,3.92,19.58,19.58,1666.0,20.67,1.19,23.5,12.76,10.75,-1.81,9.88,20.7,20.82,1724.0,19.78,1.05,22.68,15.51,7.17,-0.68,3.77,19.81,19.92,1733.0,16.69,0.84,20.2,13.86,6.34,0.36,3.75,16.71,16.61,1733.0,17.25,1.2,21.85,13.58,8.27,0.15,2.69,17.29,17.17,1733.0
BJ-MO = 18.41,0.73,20.47,17.17,3.31,0.56,2.52,18.42,18.27,136.0,19.41,0.88,22.68,16.61,6.06,0.08,5.04,19.42,19.51,135.0,21.79,1.59,24.61,17.72,6.89,-0.42,2.61,21.85,21.85,133.0,21.43,0.62,23.5,19.09,4.41,0.2,4.83,21.44,21.37,136.0,22.27,1.32,24.61,18.82,5.79,-0.76,3.29,22.31,22.4,136.0,20.61,0.48,21.85,19.65,2.2,0.39,2.98,20.61,20.47,136.0,19.57,0.89,21.44,17.17,4.27,0.09,2.74,19.59,19.37,136.0,19.56,0.65,21.02,18.2,2.82,-0.04,2.36,19.57,19.58,136.0,20.48,0.74,22.26,16.34,5.93,-1.87,10.45,20.49,20.61,136.0,20.43,0.64,21.44,17.72,3.72,-1.77,6.48,20.44,20.61,136.0,21.26,0.89,24.06,19.65,4.41,0.79,3.64,21.28,21.16,136.0,21.47,0.89,23.5,19.65,3.86,0.33,2.65,21.49,21.44,136.0
BJ-OU = 19.0,0.71,21.85,17.17,4.69,1.41,7.37,19.02,18.96,147.0,20.15,1.14,23.23,17.44,5.79,0.45,2.88,20.18,19.92,146.0,21.32,2.24,25.71,14.13,11.57,-0.33,3.44,21.43,21.07,146.0,21.2,0.56,22.4,19.37,3.03,-0.75,4.12,21.21,21.26,146.0,22.12,0.72,24.06,19.92,4.13,0.08,3.27,22.13,21.99,147.0,21.17,0.63,22.4,17.44,4.96,-2.1,11.49,21.18,21.3,147.0,19.49,0.8,20.75,17.17,3.58,-0.66,2.46,19.51,19.65,147.0,19.15,1.26,22.4,14.69,7.72,-0.75,4.4,19.19,19.37,147.0,19.95,1.05,22.13,16.61,5.51,-0.74,3.31,19.98,20.06,146.0,20.18,0.53,21.85,19.09,2.76,0.7,3.45,20.19,20.2,147.0,21.19,0.93,24.06,18.82,5.24,0.42,2.88,21.21,21.02,147.0,21.5,0.63,23.09,19.78,3.31,-0.02,3.4,21.51,21.44,147.0
BJ-ZO = 18.08,1.11,20.75,13.86,6.89,-0.3,2.82,18.11,18.13,637.0,19.5,1.09,22.95,16.61,6.34,-0.08,2.43,19.53,19.65,637.0,21.97,2.26,25.71,10.83,14.88,-1.3,5.87,22.08,22.13,611.0,22.33,1.01,24.88,16.89,7.99,-0.67,5.37,22.35,22.4,636.0,22.42,0.9,25.16,19.37,5.79,-0.12,2.83,22.44,22.4,636.0,21.22,0.56,22.68,18.54,4.13,-0.31,3.51,21.23,21.3,637.0,18.7,1.37,21.85,8.07,13.78,-1.36,9.55,18.75,18.82,637.0,19.08,1.06,21.57,14.69,6.89,-0.1,2.96,19.11,19.09,637.0,19.69,1.01,22.4,16.61,5.79,-0.06,3.19,19.72,19.65,626.0,20.05,0.78,22.13,16.06,6.06,-0.55,3.57,20.07,20.2,637.0,19.73,1.15,23.5,16.34,7.17,0.05,2.82,19.76,19.65,637.0,20.91,1.11,23.37,18.54,4.82,-0.16,1.81,20.94,21.09,637.0
