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

# The title
TITLE = TJK nighttemp data for 2010 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=2010

# 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 = 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

TJ-GB = -22.62,2.58,-10.67,-25.0,14.33,1.43,5.22,22.77,-23.35,2655.0,-22.71,2.2,-11.22,-25.0,13.78,1.18,4.67,22.82,-23.21,2655.0,-16.86,3.22,-4.88,-25.0,20.12,0.5,2.87,17.16,-17.15,2655.0,-13.03,4.03,1.87,-24.17,26.04,0.85,3.8,13.64,-13.49,2655.0,-8.76,3.39,5.31,-21.42,26.73,-0.01,3.27,9.39,-8.74,2655.0,-5.11,3.17,14.69,-16.46,31.14,0.87,6.08,6.01,-5.3,2655.0,0.21,3.8,19.92,-13.98,33.9,0.33,4.96,3.8,0.22,2655.0,2.07,3.73,16.75,-10.94,27.7,0.56,4.24,4.27,1.87,2655.0,-3.88,4.32,13.72,-18.66,32.38,0.75,4.09,5.81,-4.47,2655.0,-9.03,4.01,11.65,-22.8,34.45,0.73,4.75,9.88,-9.43,2655.0,-14.68,4.25,2.56,-25.0,27.56,1.07,4.12,15.28,-15.7,2655.0,-20.09,3.6,-5.43,-25.0,19.57,1.35,4.71,20.41,-21.28,2655.0
TJ-KT = -2.11,3.81,3.94,-16.18,20.12,-1.38,4.11,4.35,-0.47,1001.0,-5.09,4.48,2.01,-20.59,22.6,-0.93,3.29,6.78,-4.06,1001.0,3.84,4.36,8.62,-12.32,20.94,-1.62,4.54,5.81,5.59,1001.0,10.32,4.13,14.69,-3.23,17.91,-1.57,4.4,11.11,12.07,1001.0,14.0,4.06,19.65,0.91,18.74,-1.35,4.06,14.57,15.24,1001.0,18.67,3.41,24.33,6.69,17.64,-1.01,3.43,18.98,19.58,1001.0,21.73,2.92,26.26,11.38,14.88,-1.23,3.92,21.93,22.54,1001.0,19.64,2.27,23.5,10.83,12.68,-1.24,4.08,19.77,20.33,1001.0,15.95,2.38,20.47,7.24,13.23,-1.37,4.27,16.12,16.75,1001.0,11.15,2.13,16.06,3.11,12.95,-1.31,4.48,11.35,11.65,1001.0,3.59,1.53,8.35,-2.68,11.02,-1.34,5.26,3.9,3.94,1001.0,-2.64,1.4,1.46,-9.57,11.02,-1.47,6.51,2.99,-2.4,1001.0
TJ-LE = -11.52,6.37,0.22,-23.07,23.29,-0.05,1.66,13.16,-11.32,1028.0,-12.61,6.2,1.04,-25.0,26.04,-0.05,1.91,14.05,-12.87,1028.0,-5.18,6.78,6.14,-18.52,24.67,-0.13,1.61,8.53,-5.3,1028.0,1.19,7.46,13.58,-13.7,27.28,-0.12,1.54,7.55,0.63,1028.0,5.03,8.25,17.44,-13.01,30.45,-0.15,1.52,9.66,6.42,1028.0,9.52,8.51,21.85,-9.02,30.87,-0.15,1.52,12.77,10.59,1028.0,13.43,7.27,23.5,-3.92,27.42,-0.18,1.58,15.27,14.27,1028.0,13.2,7.14,23.78,-2.81,26.59,-0.12,1.52,15.01,13.86,1028.0,8.03,6.76,20.2,-6.26,26.46,-0.08,1.5,10.5,8.59,1028.0,3.56,6.71,14.41,-12.32,26.73,-0.19,1.66,7.59,4.21,1028.0,-2.91,5.6,7.8,-16.59,24.39,-0.29,1.78,6.31,-1.78,1028.0,-8.52,4.82,1.73,-20.18,21.91,-0.31,1.81,9.79,-6.81,1028.0
TJ-TA = -16.12,5.6,-0.75,-25.0,24.25,0.76,2.65,17.06,-17.56,1172.0,-17.85,5.39,-1.3,-25.0,23.7,0.67,2.58,18.65,-18.97,1172.0,-10.77,5.75,5.87,-25.0,30.87,0.62,3.02,12.2,-11.22,1172.0,-4.73,6.25,13.31,-19.49,32.8,0.49,2.99,7.84,-5.16,1172.0,-3.02,6.93,15.1,-20.04,35.14,0.77,3.13,7.56,-4.33,1172.0,1.76,7.28,19.51,-12.87,32.38,0.87,2.99,7.49,-0.2,1172.0,7.95,7.54,23.78,-9.02,32.8,0.42,2.3,10.95,6.28,1172.0,9.52,6.39,21.99,-6.81,28.8,0.11,2.14,11.47,9.04,1172.0,4.78,6.53,17.44,-13.7,31.14,-0.01,2.38,8.09,4.32,1172.0,-0.66,7.11,13.03,-18.66,31.69,0.02,2.13,7.14,-0.75,1172.0,-5.76,6.2,8.07,-20.59,28.66,-0.08,2.0,8.46,-5.78,1172.0,-11.35,5.97,-0.2,-25.0,24.8,-0.11,1.89,12.82,-11.32,1172.0
