# KWT.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 = KWT nighttemp data for 2008 at admin level 2

# 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 = KWT
ADMIN_LEVEL = 2
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

KW-K-G060001 = 4.76,0.28,5.04,4.49,0.55,-0.0,1.5,4.77,4.76,3.0,11.38,0.83,12.2,10.55,1.65,-0.0,1.5,11.4,11.38,3.0,16.48,0.41,16.89,16.06,0.83,0.0,1.5,16.48,16.48,3.0,20.89,0.41,21.3,20.47,0.83,0.0,1.5,20.89,20.89,3.0,23.23,0.55,23.78,22.68,1.1,-0.0,1.5,23.23,23.23,3.0,28.74,0.28,29.02,28.46,0.55,-0.0,1.5,28.74,28.74,3.0,29.98,0.14,30.12,29.84,0.28,0.0,1.5,29.98,29.98,3.0,30.26,0.14,30.39,30.12,0.28,-0.0,1.5,30.26,30.26,3.0,27.5,0.69,28.19,26.81,1.38,-0.0,1.5,27.51,27.5,3.0,23.92,0.41,24.33,23.5,0.83,-0.0,1.5,23.92,23.92,3.0,15.37,0.41,15.79,14.96,0.83,-0.0,1.5,15.38,15.37,3.0,10.41,0.14,10.55,10.28,0.28,0.0,1.5,10.41,10.41,3.0
KW-K-G060002 = 3.97,1.03,7.24,1.46,5.79,0.2,2.57,4.1,3.94,610.0,7.0,0.93,10.28,5.04,5.24,0.59,3.03,7.06,6.83,610.0,13.57,1.16,17.99,10.0,7.99,0.64,4.65,13.62,13.58,610.0,17.93,1.13,21.57,15.24,6.34,0.52,3.19,17.96,17.85,610.0,22.14,1.21,26.81,18.27,8.54,0.32,3.81,22.18,22.13,610.0,28.01,0.88,30.81,25.71,5.1,0.6,3.19,28.03,27.84,610.0,29.19,1.0,32.87,26.81,6.06,0.23,2.82,29.21,29.29,610.0,29.66,0.76,33.01,26.81,6.2,0.5,4.94,29.66,29.57,610.0,26.9,0.78,30.26,24.88,5.37,0.6,4.87,26.91,26.81,610.0,20.63,0.96,24.54,18.82,5.72,1.02,4.32,20.65,20.47,610.0,11.3,1.19,15.93,7.8,8.13,0.52,3.66,11.36,11.24,610.0,6.31,1.74,11.65,2.28,9.37,0.47,2.78,6.54,6.28,610.0
KW-K-G060003 = 5.3,0.51,6.42,4.49,1.93,0.36,2.16,5.32,5.31,29.0,9.49,0.67,10.96,8.62,2.34,0.41,2.02,9.51,9.45,29.0,14.91,0.65,16.06,13.86,2.2,0.31,1.91,14.92,14.75,29.0,20.42,0.97,22.13,18.54,3.58,-0.26,2.11,20.44,20.54,29.0,22.77,1.0,25.43,21.44,4.0,0.66,2.84,22.8,22.81,29.0,28.26,1.0,29.84,26.26,3.58,-0.46,2.25,28.28,28.46,29.0,28.9,1.14,30.94,26.54,4.41,-0.17,2.07,28.92,29.02,29.0,29.26,0.64,30.39,28.33,2.07,0.1,1.6,29.27,29.15,29.0,26.63,0.91,28.05,25.16,2.89,-0.11,1.67,26.64,26.54,29.0,21.06,0.89,23.09,19.37,3.72,-0.04,2.64,21.08,21.02,29.0,13.14,1.38,16.06,10.83,5.24,0.38,2.48,13.21,13.17,29.0,9.41,1.31,11.93,7.11,4.82,-0.07,2.1,9.49,9.52,29.0
KW-K-G060004 = 5.45,NaN,5.45,5.45,0.0,NaN,NaN,5.45,5.45,1.0,9.45,NaN,9.45,9.45,0.0,NaN,NaN,9.45,9.45,1.0,16.06,NaN,16.06,16.06,0.0,NaN,NaN,16.06,16.06,1.0,20.47,NaN,20.47,20.47,0.0,NaN,NaN,20.47,20.47,1.0,22.13,NaN,22.13,22.13,0.0,NaN,NaN,22.13,22.13,1.0,27.64,NaN,27.64,27.64,0.0,NaN,NaN,27.64,27.64,1.0,29.43,NaN,29.43,29.43,0.0,NaN,NaN,29.43,29.43,1.0,29.84,NaN,29.84,29.84,0.0,NaN,NaN,29.84,29.84,1.0,27.78,NaN,27.78,27.78,0.0,NaN,NaN,27.78,27.78,1.0,21.71,NaN,21.71,21.71,0.0,NaN,NaN,21.71,21.71,1.0,15.65,NaN,15.65,15.65,0.0,NaN,NaN,15.65,15.65,1.0,10.96,NaN,10.96,10.96,0.0,NaN,NaN,10.96,10.96,1.0
KW-K-G060005 = 4.49,NaN,4.49,4.49,0.0,NaN,NaN,4.49,4.49,1.0,9.17,NaN,9.17,9.17,0.0,NaN,NaN,9.17,9.17,1.0,16.06,NaN,16.06,16.06,0.0,NaN,NaN,16.06,16.06,1.0,19.92,NaN,19.92,19.92,0.0,NaN,NaN,19.92,19.92,1.0,22.4,NaN,22.4,22.4,0.0,NaN,NaN,22.4,22.4,1.0,27.91,NaN,27.91,27.91,0.0,NaN,NaN,27.91,27.91,1.0,29.57,NaN,29.57,29.57,0.0,NaN,NaN,29.57,29.57,1.0,29.84,NaN,29.84,29.84,0.0,NaN,NaN,29.84,29.84,1.0,27.64,NaN,27.64,27.64,0.0,NaN,NaN,27.64,27.64,1.0,21.57,NaN,21.57,21.57,0.0,NaN,NaN,21.57,21.57,1.0,15.24,NaN,15.24,15.24,0.0,NaN,NaN,15.24,15.24,1.0,10.0,NaN,10.0,10.0,0.0,NaN,NaN,10.0,10.0,1.0
KW-K-G060006 = 4.35,NaN,4.35,4.35,0.0,NaN,NaN,4.35,4.35,1.0,8.21,NaN,8.21,8.21,0.0,NaN,NaN,8.21,8.21,1.0,14.69,NaN,14.69,14.69,0.0,NaN,NaN,14.69,14.69,1.0,19.37,NaN,19.37,19.37,0.0,NaN,NaN,19.37,19.37,1.0,22.54,NaN,22.54,22.54,0.0,NaN,NaN,22.54,22.54,1.0,28.05,NaN,28.05,28.05,0.0,NaN,NaN,28.05,28.05,1.0,29.84,NaN,29.84,29.84,0.0,NaN,NaN,29.84,29.84,1.0,29.7,NaN,29.7,29.7,0.0,NaN,NaN,29.7,29.7,1.0,27.5,NaN,27.5,27.5,0.0,NaN,NaN,27.5,27.5,1.0,21.44,NaN,21.44,21.44,0.0,NaN,NaN,21.44,21.44,1.0,13.86,NaN,13.86,13.86,0.0,NaN,NaN,13.86,13.86,1.0,10.14,NaN,10.14,10.14,0.0,NaN,NaN,10.14,10.14,1.0
KW-K-G060007 = 5.94,0.68,6.42,5.45,0.96,0.0,1.0,5.95,5.94,2.0,9.59,0.19,9.72,9.45,0.28,0.0,1.0,9.59,9.59,2.0,16.06,0.0,16.06,16.06,0.0,-8177294.2,4.458228080091066E13,16.06,16.06,2.0,20.75,0.39,21.02,20.47,0.55,0.0,1.0,20.75,20.75,2.0,21.99,0.19,22.13,21.85,0.28,-0.0,1.0,21.99,21.99,2.0,27.5,0.19,27.64,27.36,0.28,0.0,1.0,27.5,27.5,2.0,29.36,0.1,29.43,29.29,0.14,0.0,0.99,29.36,29.36,2.0,29.84,0.0,29.84,29.84,0.0,NaN,NaN,29.84,29.84,2.0,27.84,0.1,27.91,27.78,0.14,-0.0,1.01,27.84,27.84,2.0,21.78,0.1,21.85,21.71,0.14,0.0,1.0,21.78,21.78,2.0,15.86,0.29,16.06,15.65,0.41,-0.0,1.0,15.86,15.86,2.0,11.45,0.68,11.93,10.96,0.96,0.0,1.0,11.46,11.45,2.0
KW-K-G060008 = 4.21,NaN,4.21,4.21,0.0,NaN,NaN,4.21,4.21,1.0,7.24,NaN,7.24,7.24,0.0,NaN,NaN,7.24,7.24,1.0,13.31,NaN,13.31,13.31,0.0,NaN,NaN,13.31,13.31,1.0,18.82,NaN,18.82,18.82,0.0,NaN,NaN,18.82,18.82,1.0,22.68,NaN,22.68,22.68,0.0,NaN,NaN,22.68,22.68,1.0,28.19,NaN,28.19,28.19,0.0,NaN,NaN,28.19,28.19,1.0,30.12,NaN,30.12,30.12,0.0,NaN,NaN,30.12,30.12,1.0,29.57,NaN,29.57,29.57,0.0,NaN,NaN,29.57,29.57,1.0,27.36,NaN,27.36,27.36,0.0,NaN,NaN,27.36,27.36,1.0,21.3,NaN,21.3,21.3,0.0,NaN,NaN,21.3,21.3,1.0,12.48,NaN,12.48,12.48,0.0,NaN,NaN,12.48,12.48,1.0,10.28,NaN,10.28,10.28,0.0,NaN,NaN,10.28,10.28,1.0
KW-K-G060009 = 5.59,NaN,5.59,5.59,0.0,NaN,NaN,5.59,5.59,1.0,8.21,NaN,8.21,8.21,0.0,NaN,NaN,8.21,8.21,1.0,14.41,NaN,14.41,14.41,0.0,NaN,NaN,14.41,14.41,1.0,17.85,NaN,17.85,17.85,0.0,NaN,NaN,17.85,17.85,1.0,22.13,NaN,22.13,22.13,0.0,NaN,NaN,22.13,22.13,1.0,27.5,NaN,27.5,27.5,0.0,NaN,NaN,27.5,27.5,1.0,28.33,NaN,28.33,28.33,0.0,NaN,NaN,28.33,28.33,1.0,29.84,NaN,29.84,29.84,0.0,NaN,NaN,29.84,29.84,1.0,28.05,NaN,28.05,28.05,0.0,NaN,NaN,28.05,28.05,1.0,21.85,NaN,21.85,21.85,0.0,NaN,NaN,21.85,21.85,1.0,14.55,NaN,14.55,14.55,0.0,NaN,NaN,14.55,14.55,1.0,10.69,NaN,10.69,10.69,0.0,NaN,NaN,10.69,10.69,1.0
KW-K-G060010 = 6.42,NaN,6.42,6.42,0.0,NaN,NaN,6.42,6.42,1.0,9.24,NaN,9.24,9.24,0.0,NaN,NaN,9.24,9.24,1.0,16.96,NaN,16.96,16.96,0.0,NaN,NaN,16.96,16.96,1.0,20.68,NaN,20.68,20.68,0.0,NaN,NaN,20.68,20.68,1.0,25.85,NaN,25.85,25.85,0.0,NaN,NaN,25.85,25.85,1.0,30.19,NaN,30.19,30.19,0.0,NaN,NaN,30.19,30.19,1.0,31.56,NaN,31.56,31.56,0.0,NaN,NaN,31.56,31.56,1.0,32.19,NaN,32.19,32.19,0.0,NaN,NaN,32.19,32.19,1.0,29.57,NaN,29.57,29.57,0.0,NaN,NaN,29.57,29.57,1.0,23.99,NaN,23.99,23.99,0.0,NaN,NaN,23.99,23.99,1.0,14.82,NaN,14.82,14.82,0.0,NaN,NaN,14.82,14.82,1.0,10.28,NaN,10.28,10.28,0.0,NaN,NaN,10.28,10.28,1.0
