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

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

JO-AM-G020001 = 2.38,2.88,17.03,-0.2,17.22,3.24,14.18,3.74,1.59,387.0,4.66,2.18,15.93,2.01,13.92,3.26,14.62,5.14,3.94,387.0,6.83,2.12,17.72,4.49,13.23,3.08,13.27,7.16,6.28,387.0,8.8,2.3,19.37,4.76,14.61,2.41,9.89,9.09,8.35,387.0,16.79,1.72,23.78,13.58,10.2,1.35,5.52,16.87,16.61,387.0,21.38,2.05,29.29,18.27,11.02,1.65,6.3,21.48,21.02,387.0,22.25,2.18,30.94,19.37,11.57,1.96,7.66,22.36,21.78,387.0,22.72,2.23,31.5,19.92,11.57,2.0,7.59,22.83,22.13,387.0,20.49,2.0,29.29,17.17,12.13,2.22,9.06,20.59,19.92,387.0,15.67,2.15,25.98,13.03,12.95,2.89,12.32,15.82,15.1,387.0,8.02,2.62,19.92,3.11,16.81,2.6,10.57,8.44,7.38,387.0,3.24,2.88,17.58,0.08,17.5,3.07,13.55,4.33,2.49,387.0
JO-AT-G110001 = 3.89,3.31,9.59,-0.06,9.65,0.31,1.38,5.09,2.63,82.0,5.02,3.08,10.55,0.91,9.65,0.5,1.66,5.88,3.8,82.0,7.24,3.03,13.31,2.83,10.47,0.55,1.79,7.84,6.04,82.0,10.67,3.29,16.61,6.14,10.47,0.41,1.54,11.16,9.52,82.0,16.68,2.62,22.54,12.48,10.06,0.51,1.86,16.88,15.75,82.0,21.6,3.47,27.36,17.44,9.92,0.5,1.59,21.87,19.99,82.0,23.33,3.77,30.39,18.82,11.57,0.54,1.69,23.63,21.71,82.0,23.45,3.82,29.98,18.27,11.71,0.43,1.57,23.76,21.78,82.0,20.78,3.4,26.54,15.79,10.75,0.48,1.73,21.06,19.44,82.0,17.09,3.27,22.95,13.31,9.65,0.46,1.57,17.4,15.65,82.0,9.35,2.71,14.96,5.18,9.78,0.36,1.87,9.73,8.97,82.0,4.12,2.97,9.86,-0.2,10.06,0.26,1.54,5.07,3.49,82.0
JO-AZ-G120001 = 2.1,0.91,4.49,-0.2,4.69,-0.03,2.97,2.29,2.15,195.0,5.16,0.57,6.42,3.66,2.76,-0.11,2.34,5.19,5.18,195.0,6.92,0.82,8.9,4.9,4.0,0.15,3.03,6.97,6.9,195.0,9.61,0.88,11.93,7.8,4.13,0.33,2.62,9.65,9.45,195.0,18.38,0.97,20.75,15.79,4.96,-0.4,2.82,18.41,18.54,195.0,23.04,1.05,25.43,20.06,5.37,-0.15,2.55,23.06,23.09,195.0,23.75,0.95,27.09,21.44,5.65,-0.01,3.65,23.77,23.92,195.0,23.95,0.91,25.71,21.02,4.69,-1.16,3.9,23.97,24.26,195.0,21.94,1.1,25.16,18.41,6.75,-0.19,4.09,21.96,21.99,195.0,15.98,0.77,18.54,14.41,4.13,0.65,3.51,16.0,15.93,195.0,8.14,1.13,12.2,5.31,6.89,0.54,3.96,8.21,8.07,195.0,2.46,1.27,5.31,-0.75,6.06,0.01,3.18,2.77,2.42,195.0
JO-BA-G100001 = 7.63,2.27,12.0,3.39,8.61,-0.19,2.39,7.95,8.07,40.0,8.39,2.04,11.65,4.63,7.03,-0.35,1.98,8.63,8.83,40.0,10.41,2.45,14.69,5.87,8.82,-0.13,1.97,10.69,10.62,40.0,12.47,2.48,15.51,7.52,7.99,-0.61,2.0,12.7,13.24,40.0,19.61,2.0,22.4,16.06,6.34,-0.53,1.88,19.71,20.47,40.0,25.17,2.26,27.91,21.02,6.89,-0.54,1.83,25.27,26.26,40.0,26.5,2.77,29.57,21.3,8.27,-0.61,1.84,26.64,27.84,40.0,26.7,2.95,30.12,21.3,8.82,-0.6,1.84,26.86,28.05,40.0,23.87,2.95,27.36,17.99,9.37,-0.67,2.02,24.05,24.88,40.0,20.04,2.62,23.78,15.51,8.27,-0.36,1.75,20.21,20.58,40.0,12.93,2.11,16.89,9.04,7.85,-0.15,2.16,13.09,13.17,40.0,8.29,1.94,12.62,4.49,8.13,0.12,2.92,8.51,8.38,40.0
JO-IR-G030001 = 5.0,2.04,8.76,2.01,6.75,0.17,1.76,5.4,4.9,97.0,5.96,1.55,9.17,2.97,6.2,0.26,2.15,6.15,5.73,97.0,7.76,1.61,11.1,4.76,6.34,0.42,2.13,7.92,7.45,97.0,9.66,1.89,13.86,6.42,7.44,0.52,2.16,9.84,9.24,97.0,16.62,1.61,20.2,13.31,6.89,-0.08,2.25,16.69,16.75,97.0,22.17,2.06,26.81,18.54,8.27,0.37,2.36,22.26,22.13,97.0,22.53,2.3,28.46,19.09,9.37,0.59,2.62,22.64,22.26,97.0,22.96,2.3,28.33,19.37,8.96,0.32,2.18,23.07,22.88,97.0,20.43,2.0,24.74,16.61,8.13,0.35,2.3,20.53,20.2,97.0,16.99,1.93,22.26,14.13,8.13,0.58,2.72,17.1,16.75,97.0,10.68,1.69,14.41,7.52,6.89,0.12,2.01,10.81,10.55,97.0,6.54,1.64,9.31,3.11,6.2,0.02,1.83,6.74,6.42,97.0
JO-KA-G060001 = 4.7,4.01,15.44,0.35,15.09,1.12,2.85,6.16,2.56,147.0,6.26,3.41,15.51,2.83,12.68,1.22,3.06,7.12,4.76,147.0,8.45,3.55,17.72,4.49,13.23,1.14,2.87,9.16,6.97,147.0,11.17,3.73,21.02,6.97,14.06,1.17,2.98,11.77,9.59,147.0,18.0,3.57,27.09,13.86,13.23,1.05,2.68,18.35,16.48,147.0,22.42,4.06,32.6,17.72,14.88,0.96,2.62,22.78,21.02,147.0,24.32,3.87,33.7,19.92,13.78,1.14,2.78,24.62,22.54,147.0,24.14,4.01,33.43,19.37,14.06,1.06,2.58,24.47,22.26,147.0,21.85,3.51,29.57,17.72,11.85,1.13,2.7,22.13,20.06,147.0,17.68,4.34,29.02,13.44,15.57,1.13,2.83,18.2,15.37,147.0,10.69,4.08,22.13,5.59,16.54,1.01,2.76,11.44,8.76,147.0,4.93,4.28,15.99,0.08,15.92,0.98,2.71,6.52,3.18,147.0
JO-MA-G080001 = 0.44,1.73,4.21,-2.95,7.17,0.1,1.68,1.78,0.08,1018.0,4.11,1.08,6.69,1.46,5.24,0.27,2.32,4.25,3.94,1018.0,5.96,1.27,9.72,3.11,6.61,0.25,2.38,6.09,5.87,1018.0,8.76,1.23,12.2,4.76,7.44,-0.23,3.12,8.84,8.83,1018.0,17.0,1.6,21.85,13.86,7.99,0.23,2.17,17.07,16.89,1018.0,22.14,1.73,26.26,19.37,6.89,0.5,1.89,22.2,21.44,1018.0,23.89,1.61,27.91,19.37,8.54,0.25,2.38,23.95,23.64,1018.0,24.29,1.32,27.64,19.92,7.72,-0.22,3.29,24.32,24.19,1018.0,21.2,1.42,24.88,17.99,6.89,0.18,2.19,21.25,21.02,1018.0,14.95,1.5,19.37,11.79,7.58,0.12,2.1,15.03,14.82,1018.0,7.1,1.91,11.38,3.11,8.27,0.26,1.98,7.35,6.69,1018.0,1.89,1.9,6.69,-2.68,9.37,0.18,2.11,2.68,1.84,1018.0
JO-MN-G070001 = 1.45,2.14,11.52,-1.3,12.81,1.68,5.7,2.58,0.77,1443.0,4.25,1.79,12.48,0.63,11.85,1.4,5.33,4.61,3.8,1443.0,6.23,1.87,14.69,2.56,12.13,1.13,4.75,6.51,5.87,1443.0,9.51,2.02,17.44,5.59,11.85,1.13,4.01,9.73,8.9,1443.0,16.76,1.76,24.06,13.03,11.02,0.72,3.99,16.85,16.61,1443.0,21.52,2.2,28.74,16.06,12.68,0.37,2.9,21.63,21.3,1443.0,23.21,2.27,30.39,17.72,12.68,0.53,3.46,23.32,23.09,1443.0,23.6,2.02,29.57,17.44,12.13,0.08,3.31,23.69,23.78,1443.0,20.94,1.79,26.9,16.06,10.84,0.6,3.91,21.02,20.75,1443.0,15.64,1.87,22.95,12.2,10.75,1.12,4.19,15.75,15.24,1443.0,7.22,2.21,16.68,2.01,14.68,0.96,4.2,7.56,6.83,1443.0,1.84,2.54,13.72,-2.68,16.4,1.33,4.58,3.14,0.91,1443.0
