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

ST-P = 20.72,0.93,21.71,19.78,1.93,-0.02,1.26,20.74,20.75,5.0,20.29,0.26,20.47,19.92,0.55,-0.59,1.56,20.29,20.47,5.0,21.57,0.39,22.13,21.3,0.83,0.59,1.56,21.58,21.3,5.0,20.98,1.14,22.95,20.06,2.89,1.26,2.97,21.01,20.75,5.0,21.82,1.29,23.09,20.06,3.03,-0.2,1.68,21.85,21.57,5.0,18.5,1.07,19.65,17.44,2.2,0.03,1.26,18.53,18.47,5.0,20.75,0.28,21.16,20.47,0.69,0.63,1.95,20.75,20.61,5.0,22.42,0.41,22.95,21.85,1.1,-0.13,1.99,22.42,22.54,5.0,18.74,1.71,21.3,17.17,4.13,0.51,2.0,18.8,18.82,5.0,20.62,1.24,22.4,19.51,2.89,0.46,1.75,20.65,20.4,5.0,22.03,0.65,22.95,21.57,1.38,0.59,1.56,22.04,21.57,5.0,22.24,0.69,23.23,21.57,1.65,0.34,1.85,22.24,22.4,5.0
ST-S = 21.59,0.59,23.23,20.75,2.48,0.85,3.3,21.6,21.47,30.0,20.53,0.56,22.13,19.09,3.03,0.23,4.5,20.54,20.54,30.0,22.42,1.2,24.33,19.37,4.96,-0.48,2.73,22.45,22.75,30.0,22.82,0.74,24.33,21.57,2.76,0.08,2.39,22.83,22.88,30.0,20.75,0.81,22.4,18.82,3.58,-0.27,3.04,20.77,20.75,30.0,19.53,1.0,21.85,18.27,3.58,0.63,2.49,19.56,19.4,30.0,20.17,1.27,22.95,18.27,4.69,0.75,2.56,20.21,19.65,30.0,20.08,1.23,23.09,18.54,4.55,0.72,2.86,20.12,19.99,30.0,20.24,1.79,24.06,16.61,7.44,0.49,2.85,20.32,19.99,30.0,20.69,1.08,22.95,18.54,4.41,0.14,2.19,20.71,20.5,30.0,20.17,1.29,22.13,17.44,4.69,-0.55,2.47,20.21,20.47,30.0,21.66,0.7,23.23,20.2,3.03,0.08,2.76,21.67,21.61,30.0
