# PSE.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 = PSE temperature data for 2008 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=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 = PSE
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

PS-801 = 13.36,2.24,20.2,8.9,11.3,0.57,3.29,13.55,13.17,202.0,16.27,1.66,20.47,13.31,7.17,0.48,2.36,16.35,16.06,202.0,25.33,2.68,32.05,21.02,11.02,0.39,1.98,25.47,24.74,202.0,33.57,2.86,40.04,24.88,15.16,-0.03,2.79,33.69,33.39,202.0,37.72,3.0,45.0,28.74,16.26,-0.11,2.92,37.84,37.77,202.0,42.73,2.42,45.0,30.94,14.06,-1.68,7.55,42.79,43.31,202.0,43.01,2.2,45.0,33.98,11.02,-1.1,4.19,43.06,43.97,202.0,41.24,2.53,45.0,32.32,12.68,-0.48,2.74,41.32,41.62,202.0,38.44,2.46,43.9,31.22,12.68,-0.06,2.52,38.52,38.59,202.0,32.8,2.77,40.04,28.19,11.85,0.27,2.12,32.91,32.6,202.0,25.95,2.02,30.67,22.13,8.54,0.23,2.11,26.03,25.98,202.0,20.36,1.75,24.61,16.89,7.72,0.25,2.39,20.43,20.33,202.0
PS-802 = 15.49,0.6,16.2,14.27,1.93,-0.66,2.33,15.5,15.79,15.0,18.32,0.37,18.82,17.58,1.24,-0.92,3.02,18.33,18.41,15.0,27.44,0.71,28.74,26.4,2.34,0.16,1.96,27.45,27.29,15.0,33.5,1.14,35.35,31.91,3.44,0.1,1.77,33.52,33.43,15.0,38.7,1.09,40.18,37.15,3.03,-0.2,1.52,38.71,38.66,15.0,44.05,0.82,45.0,42.66,2.34,-0.33,1.84,44.06,44.17,15.0,44.33,0.58,45.0,43.48,1.52,-0.17,1.56,44.34,44.31,15.0,42.9,0.87,44.17,41.56,2.62,0.07,1.66,42.9,42.86,15.0,39.21,0.57,40.18,38.39,1.79,0.14,2.13,39.21,39.35,15.0,33.5,0.74,34.8,32.32,2.48,0.37,2.3,33.51,33.43,15.0,26.77,0.53,27.5,25.85,1.65,-0.34,1.89,26.77,26.81,15.0,22.66,0.69,23.64,21.44,2.2,-0.22,1.89,22.67,22.68,15.0
