# JOR.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 = JOR nighttemp 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 = JOR
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

JO-AM = 2.16,3.04,16.75,-1.57,18.33,2.94,12.67,3.73,1.32,387.0,4.09,2.7,17.72,1.18,16.54,3.08,13.47,4.9,3.39,387.0,5.27,2.54,18.41,2.28,16.12,3.06,13.58,5.85,4.69,387.0,9.56,2.32,19.65,6.42,13.23,2.26,9.0,9.83,8.97,387.0,14.96,2.07,23.99,11.65,12.33,2.12,8.7,15.1,14.41,387.0,20.86,2.28,29.29,17.72,11.57,1.32,5.36,20.98,20.54,387.0,22.78,2.23,31.5,19.65,11.85,1.88,7.4,22.88,22.47,387.0,22.84,2.25,31.63,19.09,12.54,1.45,6.21,22.95,22.61,387.0,18.86,2.09,28.33,15.79,12.54,2.35,9.92,18.97,18.41,387.0,15.45,2.17,25.43,13.03,12.4,2.67,11.01,15.6,14.82,387.0,7.68,2.66,20.61,3.66,16.95,3.01,12.96,8.12,7.11,387.0,5.54,2.32,18.27,3.11,15.16,3.41,15.4,6.01,5.04,387.0
JO-AT = 3.75,2.55,8.9,-1.16,10.06,0.2,1.88,4.53,3.25,82.0,4.82,2.7,9.86,1.18,8.68,0.33,1.59,5.52,4.11,82.0,6.57,3.27,12.62,2.56,10.06,0.5,1.69,7.33,5.28,82.0,11.09,2.97,16.89,7.24,9.65,0.54,1.79,11.48,10.0,82.0,15.4,3.15,22.4,11.65,10.75,0.69,2.04,15.72,13.93,82.0,21.28,3.39,27.5,16.89,10.61,0.47,1.62,21.54,19.65,82.0,23.42,3.87,30.12,18.27,11.85,0.41,1.62,23.74,21.85,82.0,23.28,3.53,29.84,18.27,11.57,0.57,1.84,23.55,21.85,82.0,19.75,3.39,25.85,15.51,10.33,0.58,1.73,20.03,18.27,82.0,16.78,2.97,21.71,13.31,8.41,0.44,1.48,17.04,15.58,82.0,9.47,3.34,14.96,4.49,10.47,0.41,1.6,10.04,8.04,82.0,6.55,2.76,11.38,3.39,7.99,0.47,1.54,7.11,5.18,82.0
JO-AZ = 1.61,0.94,4.21,-0.75,4.96,0.5,3.15,1.87,1.46,195.0,3.46,0.89,6.14,1.18,4.96,0.21,3.11,3.58,3.39,195.0,6.04,0.86,8.35,3.94,4.41,0.41,2.91,6.1,5.87,195.0,10.2,0.84,12.2,7.8,4.41,-0.39,3.03,10.23,10.28,195.0,15.63,1.3,19.09,11.65,7.44,-0.25,3.06,15.69,15.79,195.0,22.59,0.96,24.88,19.65,5.24,-0.54,4.02,22.61,22.68,195.0,24.15,0.86,25.98,21.02,4.96,-0.85,3.93,24.17,24.33,195.0,24.4,1.07,26.4,20.75,5.65,-1.35,4.68,24.42,24.61,195.0,19.71,0.84,21.44,16.34,5.1,-1.26,4.76,19.73,19.92,195.0,15.66,1.13,18.54,12.89,5.65,0.28,2.77,15.7,15.65,195.0,7.9,1.09,11.1,5.31,5.79,-0.03,2.67,7.98,8.0,195.0,5.89,0.82,7.38,3.39,4.0,-0.4,2.5,5.94,6.0,195.0
JO-BA = 7.48,1.99,11.65,3.66,7.99,0.01,2.73,7.74,7.8,40.0,8.98,2.3,13.03,5.31,7.72,0.01,1.77,9.26,8.93,40.0,9.44,2.77,13.03,4.21,8.82,-0.45,1.83,9.83,10.03,40.0,13.55,2.43,17.03,9.45,7.58,-0.25,1.78,13.76,13.79,40.0,19.88,2.98,23.5,12.76,10.75,-1.0,2.87,20.1,21.44,40.0,24.52,2.26,27.36,19.92,7.44,-0.49,1.87,24.62,24.95,40.0,27.06,2.79,30.39,21.85,8.54,-0.56,1.94,27.2,27.6,40.0,26.63,3.16,30.67,20.75,9.92,-0.56,1.83,26.81,27.98,40.0,22.5,2.9,26.67,17.17,9.51,-0.41,1.87,22.68,22.95,40.0,19.92,2.06,22.81,16.06,6.75,-0.41,1.88,20.03,20.47,40.0,12.48,2.26,16.34,8.48,7.85,-0.21,2.02,12.68,12.69,40.0,9.32,1.8,12.82,5.87,6.96,-0.32,2.12,9.49,9.86,40.0
JO-IR = 5.05,1.78,8.21,2.28,5.93,0.23,1.74,5.35,4.76,97.0,6.49,1.65,9.86,3.66,6.2,0.16,2.06,6.69,6.42,97.0,6.6,1.78,10.14,3.66,6.48,0.15,1.88,6.83,6.42,97.0,10.36,1.76,14.55,6.97,7.58,0.3,2.22,10.51,10.0,97.0,16.72,1.95,22.13,13.31,8.82,0.68,3.16,16.83,16.34,97.0,21.14,1.8,25.71,17.99,7.72,0.58,2.58,21.22,21.02,97.0,23.32,2.06,28.05,19.65,8.41,0.36,2.36,23.41,23.23,97.0,22.79,2.48,28.6,19.09,9.51,0.46,2.3,22.93,22.4,97.0,19.33,1.86,23.64,16.06,7.58,0.38,2.32,19.42,18.96,97.0,17.58,1.9,20.89,14.55,6.34,0.21,1.79,17.69,17.44,97.0,9.36,2.22,14.13,5.87,8.27,0.37,1.94,9.62,8.9,97.0,7.99,1.78,11.38,5.31,6.06,0.36,1.97,8.18,7.66,97.0
JO-KA = 4.53,3.99,15.51,-0.75,16.26,0.98,2.79,6.03,3.11,147.0,5.45,3.77,16.48,0.91,15.57,1.15,3.13,6.62,3.66,147.0,7.5,4.31,18.82,3.11,15.71,1.22,2.97,8.65,5.31,147.0,11.63,3.82,21.85,7.52,14.33,1.27,3.27,12.23,10.0,147.0,16.43,4.14,27.64,12.2,15.43,1.33,3.24,16.93,14.41,147.0,22.03,4.1,32.6,17.99,14.61,1.17,2.87,22.4,19.92,147.0,24.2,4.24,34.53,19.09,15.43,1.12,2.75,24.56,22.26,147.0,24.45,4.06,34.8,19.65,15.16,1.2,2.92,24.78,22.4,147.0,20.54,3.91,30.94,16.34,14.61,1.22,2.97,20.91,18.68,147.0,16.91,3.82,26.26,12.2,14.06,1.02,2.74,17.33,15.37,147.0,9.91,4.24,20.75,4.76,15.98,1.02,2.69,10.77,7.93,147.0,7.08,3.5,16.34,2.83,13.5,1.24,3.24,7.89,5.31,147.0
JO-MA = 0.25,2.07,4.49,-4.06,8.54,0.06,1.7,2.08,0.08,1018.0,2.75,1.27,6.42,-0.75,7.17,0.2,2.66,3.03,2.7,1018.0,5.67,1.19,8.62,2.83,5.79,0.17,2.13,5.8,5.59,1018.0,9.83,1.36,13.58,7.24,6.34,0.39,2.13,9.92,9.59,1018.0,15.56,1.38,19.37,11.38,7.99,0.11,2.6,15.62,15.51,1018.0,21.45,1.45,24.88,18.82,6.06,0.49,2.19,21.5,21.16,1018.0,24.52,1.49,28.19,20.75,7.44,0.19,2.31,24.57,24.33,1018.0,23.71,1.67,27.91,19.65,8.27,0.32,2.4,23.77,23.44,1018.0,18.46,1.63,24.06,13.86,10.2,0.04,2.8,18.53,18.27,1018.0,14.34,1.47,18.27,10.28,7.99,0.1,2.43,14.41,14.27,1018.0,6.24,1.97,11.38,2.28,9.09,0.08,1.96,6.54,6.21,1018.0,4.66,1.46,7.8,1.18,6.61,-0.01,1.83,4.88,4.76,1018.0
JO-MN = 0.76,2.38,11.24,-3.78,15.02,1.17,4.39,2.5,0.22,1443.0,3.14,2.01,14.0,-0.75,14.74,1.35,5.71,3.72,2.7,1443.0,6.12,2.2,15.1,0.91,14.19,0.73,3.66,6.51,5.94,1443.0,10.09,1.97,18.13,5.59,12.54,0.93,4.51,10.28,9.86,1443.0,15.95,2.01,22.47,10.55,11.92,0.4,3.23,16.08,15.79,1443.0,21.28,2.0,28.74,16.06,12.68,0.12,3.19,21.37,21.3,1443.0,23.58,2.2,31.15,17.44,13.71,0.2,3.18,23.68,23.64,1443.0,23.67,1.95,29.84,17.44,12.4,0.06,3.18,23.75,23.78,1443.0,19.45,2.04,26.4,14.69,11.71,0.58,3.34,19.56,19.16,1443.0,15.0,1.93,23.23,11.65,11.57,1.56,5.69,15.12,14.55,1443.0,7.32,2.39,16.48,1.73,14.74,0.99,3.7,7.7,6.69,1443.0,4.56,1.88,13.72,1.18,12.54,1.69,6.09,4.93,4.07,1443.0
