# TJK.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 = TJK temperature data for 2009 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=2009

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

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

TJ-GB = -16.95,3.74,-1.02,-23.9,22.87,1.07,3.88,17.35,-18.11,2655.0,-15.13,3.83,2.15,-25.0,27.15,0.68,3.05,15.6,-16.18,2655.0,-4.92,5.63,15.24,-16.18,31.42,0.78,2.87,7.48,-6.12,2655.0,1.92,6.89,24.06,-13.15,37.2,0.55,2.64,7.15,1.04,2655.0,10.37,7.45,30.94,-7.09,38.03,0.19,2.5,12.77,10.41,2655.0,11.69,5.8,27.91,-5.16,33.07,-0.16,2.53,13.05,12.14,2655.0,19.73,7.71,38.66,-3.5,42.17,-0.22,2.62,21.19,20.2,2655.0,24.57,7.47,40.87,-4.06,44.92,-0.63,3.48,25.69,25.3,2655.0,16.7,6.77,31.5,-8.46,39.96,-0.71,3.53,18.02,17.58,2655.0,6.8,6.34,24.61,-15.91,40.51,-0.25,3.01,9.3,6.97,2655.0,-7.68,4.71,10.28,-22.24,32.52,0.15,2.67,9.01,-8.05,2655.0,-15.91,3.97,-1.57,-25.0,23.43,0.72,2.99,16.4,-16.87,2655.0
TJ-KT = 6.2,4.21,11.38,-9.84,21.22,-1.68,5.08,7.49,7.66,1001.0,9.91,5.62,17.17,-10.67,27.83,-1.64,4.85,11.39,12.0,1001.0,18.74,5.68,30.39,-4.06,34.45,-1.43,5.28,19.58,20.06,1001.0,20.1,4.51,29.57,2.83,26.73,-0.66,3.48,20.6,20.4,1001.0,30.08,6.82,44.45,13.93,30.52,-0.11,1.94,30.85,30.53,1001.0,36.0,7.91,45.0,13.86,31.14,-0.78,2.54,36.86,38.11,1001.0,39.91,5.34,45.0,23.78,21.22,-1.07,3.13,40.26,41.42,1001.0,39.97,4.31,45.0,28.46,16.54,-0.66,2.47,40.2,40.66,1001.0,35.47,4.65,45.0,22.4,22.6,-0.55,2.85,35.78,35.91,1001.0,27.92,3.41,35.63,18.54,17.09,-0.46,2.72,28.12,28.26,1001.0,15.96,4.62,22.68,-0.95,23.63,-1.4,4.64,16.62,17.17,1001.0,6.49,4.26,12.76,-8.74,21.5,-1.55,4.71,7.76,7.93,1001.0
TJ-LE = -4.8,6.97,5.59,-18.39,23.98,-0.25,1.56,8.46,-4.19,1028.0,-0.55,9.51,17.72,-19.07,36.79,-0.09,1.57,9.52,-0.2,1028.0,7.83,9.19,23.5,-11.63,35.14,-0.29,1.66,12.07,9.45,1028.0,11.0,8.71,28.19,-7.64,35.83,-0.3,1.91,14.03,12.96,1028.0,20.1,9.36,37.01,-1.44,38.44,-0.34,2.0,22.17,21.71,1028.0,27.46,11.27,45.0,2.83,42.17,-0.23,1.72,29.68,28.98,1028.0,31.59,9.53,45.0,4.9,40.1,-0.43,1.94,33.0,33.7,1028.0,31.94,8.03,45.0,5.73,39.27,-0.45,2.11,32.93,33.77,1028.0,24.85,7.93,37.56,-0.47,38.03,-0.47,2.04,26.09,27.09,1028.0,18.43,6.95,29.84,-2.95,32.8,-0.41,1.96,19.7,19.99,1028.0,4.12,8.44,16.61,-13.7,30.31,-0.44,1.71,9.39,7.24,1028.0,-5.02,8.17,8.07,-19.35,27.42,-0.03,1.43,9.59,-5.23,1028.0
TJ-TA = -9.44,7.63,9.17,-21.69,30.87,0.97,2.8,12.13,-11.77,1172.0,-7.94,8.56,13.58,-21.69,35.28,1.11,3.0,11.67,-10.81,1172.0,0.47,9.07,23.5,-13.98,37.48,0.96,2.66,9.08,-2.68,1172.0,4.96,7.68,19.78,-10.94,30.73,0.17,1.79,9.14,4.21,1172.0,12.68,8.37,37.56,-3.78,41.34,0.2,2.19,15.19,12.62,1172.0,17.16,9.1,43.35,-2.13,45.47,0.58,2.76,19.42,16.34,1172.0,22.85,9.73,45.0,0.63,44.37,0.36,2.36,24.83,22.02,1172.0,25.71,8.56,45.0,3.11,41.89,0.03,2.33,27.09,25.85,1172.0,20.05,8.77,40.18,-7.09,47.26,-0.01,2.51,21.88,20.09,1172.0,15.13,8.24,30.67,-11.77,42.44,-0.42,2.75,17.23,15.79,1172.0,-1.02,8.79,21.85,-17.01,38.86,0.41,2.2,8.85,-1.85,1172.0,-9.16,7.75,8.9,-22.24,31.14,0.89,2.73,12.0,-11.29,1172.0
