# BGD.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 = BGD nighttemp data for 2001 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=2001

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

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

BD-0 = 13.11,1.12,17.72,10.83,6.89,0.84,3.43,13.16,12.89,1538.0,16.07,1.2,22.4,13.58,8.82,0.32,3.16,16.12,16.06,1538.0,19.01,1.14,23.78,16.89,6.89,1.07,3.91,19.04,18.68,1538.0,22.26,1.09,27.09,19.92,7.17,0.92,3.87,22.29,22.13,1538.0,21.99,0.97,24.61,18.54,6.06,-0.38,2.68,22.01,22.13,1538.0,20.2,3.77,26.26,10.55,15.71,0.1,1.98,20.54,19.37,600.0,18.02,3.56,26.54,-10.94,37.48,-1.06,17.72,18.37,17.44,1197.0,20.54,2.51,27.91,11.93,15.98,0.34,3.29,20.7,20.27,1523.0,23.5,2.25,27.64,18.82,8.82,-0.25,1.75,23.61,23.78,1538.0,23.5,1.28,26.54,19.65,6.89,-0.08,2.6,23.54,23.5,1538.0,20.21,1.44,25.43,16.61,8.82,0.32,2.54,20.27,20.2,1538.0,15.37,1.2,22.95,12.48,10.47,1.29,5.38,15.42,15.1,1538.0
BD-06 = 13.13,0.65,16.06,11.93,4.13,1.09,4.83,13.15,13.03,428.0,17.28,0.5,19.65,15.79,3.86,1.06,5.47,17.29,17.17,431.0,20.72,0.77,24.06,19.09,4.96,1.08,4.61,20.74,20.54,428.0,23.73,0.65,25.98,22.13,3.86,0.7,4.11,23.74,23.64,431.0,23.58,0.39,24.61,22.4,2.2,-0.15,2.71,23.59,23.57,428.0,21.64,0.12,21.85,21.57,0.28,1.28,2.63,21.64,21.57,13.0,18.33,1.4,20.75,14.69,6.06,-0.36,2.23,18.38,18.54,360.0,22.45,2.71,26.81,10.0,16.81,-1.64,7.27,22.62,22.68,430.0,25.93,0.51,26.81,24.06,2.76,-1.04,3.76,25.94,25.98,431.0,24.61,0.64,25.98,22.13,3.86,-0.75,3.76,24.62,24.61,431.0,21.45,0.77,23.78,19.92,3.86,0.83,3.23,21.47,21.3,431.0,15.43,1.07,20.47,13.86,6.61,1.71,7.18,15.47,15.24,431.0
BD-27 = 12.92,1.09,15.51,10.83,4.69,-0.16,1.92,12.97,13.07,756.0,17.28,1.1,19.99,14.41,5.58,-0.29,2.64,17.32,17.41,756.0,20.48,1.48,23.78,17.44,6.34,0.09,2.01,20.53,20.47,757.0,23.12,1.21,25.98,21.02,4.96,0.21,1.76,23.15,23.09,757.0,23.13,0.66,25.71,21.02,4.69,0.52,3.63,23.13,23.02,757.0,21.29,1.45,24.74,18.54,6.2,0.12,2.0,21.34,21.25,342.0,17.69,1.68,25.71,13.86,11.85,1.28,7.35,17.77,17.58,679.0,22.99,1.62,26.81,19.09,7.72,0.27,2.32,23.05,22.88,757.0,25.12,0.71,26.81,22.95,3.86,-0.07,2.73,25.13,25.16,757.0,23.04,0.94,25.43,21.02,4.41,0.12,2.05,23.06,23.09,757.0,20.72,1.27,25.43,18.27,7.17,0.05,2.07,20.75,20.89,757.0,14.91,1.42,19.71,12.76,6.96,0.3,2.11,14.98,14.86,756.0
BD-3 = 12.61,0.96,15.65,10.55,5.1,0.76,3.34,12.65,12.48,1134.0,16.19,0.69,17.85,14.13,3.72,-0.15,2.45,16.2,16.2,1134.0,18.78,0.68,21.57,16.89,4.69,0.9,4.4,18.79,18.68,1134.0,21.99,0.65,24.19,20.47,3.72,-0.0,2.62,22.0,21.99,1134.0,22.1,0.59,23.78,20.47,3.31,0.15,2.9,22.11,22.13,1134.0,20.78,2.91,26.26,10.55,15.71,-0.58,3.83,20.98,20.75,807.0,19.3,3.12,26.26,12.2,14.06,0.52,2.75,19.55,18.82,1029.0,24.84,2.07,28.19,12.48,15.71,-1.88,8.13,24.93,25.67,1134.0,25.42,0.97,28.19,21.85,6.34,-0.79,3.62,25.44,25.54,1134.0,23.37,1.05,26.54,21.57,4.96,0.68,2.83,23.39,23.23,1134.0,20.13,1.2,24.06,18.13,5.93,0.87,3.3,20.16,19.85,1134.0,14.69,1.03,19.09,12.76,6.34,1.23,5.17,14.73,14.55,1134.0
BD-54 = 11.13,0.76,13.31,9.45,3.86,0.23,2.68,11.15,11.1,1238.0,15.09,0.98,17.72,12.96,4.75,0.08,2.65,15.12,15.1,1238.0,17.43,0.89,19.92,15.24,4.69,0.1,2.68,17.45,17.44,1238.0,20.89,1.01,22.95,18.27,4.69,-0.44,2.03,20.92,21.23,1238.0,21.73,0.54,23.5,18.27,5.24,-0.53,6.09,21.74,21.71,1238.0,22.15,2.44,26.54,5.45,21.08,-3.02,17.9,22.29,22.4,1180.0,20.29,2.89,26.26,13.03,13.23,-0.04,2.13,20.49,20.61,1040.0,25.28,1.38,27.36,5.04,22.32,-3.95,48.64,25.32,25.57,1192.0,24.71,1.11,27.36,17.99,9.37,-1.55,9.69,24.73,24.74,1238.0,22.75,0.77,24.88,20.06,4.82,0.43,2.78,22.76,22.68,1238.0,19.05,0.66,21.57,17.17,4.41,0.61,2.77,19.06,18.82,1238.0,13.86,0.51,15.79,12.62,3.17,0.56,3.18,13.86,13.86,1238.0
