# SYC.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 = SYC temperature 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 = SYC
ADMIN_LEVEL = 2
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

SC-M-G010001 = 23.07,0.75,23.92,21.85,2.07,-0.76,2.62,23.08,23.16,5.0,25.67,1.56,27.09,23.23,3.86,-0.71,2.22,25.71,25.8,5.0,24.25,0.61,24.88,23.23,1.65,-0.96,2.75,24.25,24.33,5.0,25.29,1.02,26.54,24.06,2.48,0.13,1.53,25.3,24.97,5.0,23.72,0.55,24.26,22.95,1.31,-0.28,1.75,23.72,23.64,5.0,21.43,0.92,22.68,20.2,2.48,0.03,2.05,21.44,21.39,5.0,20.91,1.02,21.92,19.37,2.55,-0.57,2.08,20.93,20.93,5.0,22.49,1.21,24.19,21.3,2.89,0.5,1.64,22.51,21.94,5.0,22.04,1.89,23.99,19.37,4.62,-0.34,1.78,22.1,22.03,5.0,25.34,0.25,25.71,25.02,0.69,0.28,2.19,25.34,25.3,5.0,25.17,0.35,25.71,24.88,0.83,0.76,2.14,25.17,25.07,5.0,24.25,0.3,24.61,23.78,0.83,-0.57,2.44,24.25,24.33,5.0
SC-P-G020001 = 23.57,0.29,23.78,23.37,0.41,0.0,1.0,23.57,23.57,2.0,24.68,0.49,25.02,24.33,0.69,0.0,1.0,24.68,24.68,2.0,26.12,0.19,26.26,25.98,0.28,-0.0,1.0,26.12,26.12,2.0,24.74,0.19,24.88,24.61,0.28,-0.0,1.0,24.74,24.74,2.0,25.71,NaN,25.71,25.71,0.0,NaN,-8.882768329395566E13,25.71,25.71,2.0,21.99,0.58,22.4,21.57,0.83,0.0,1.0,21.99,21.99,2.0,21.51,0.1,21.57,21.44,0.14,0.0,1.0,21.51,21.51,2.0,23.02,0.49,23.37,22.68,0.69,0.0,1.0,23.02,23.02,2.0,23.23,NaN,23.23,23.23,0.0,NaN,-1.932282320882769E14,23.23,23.23,2.0,25.09,0.68,25.57,24.61,0.96,0.0,1.0,25.09,25.09,2.0,25.57,0.19,25.71,25.43,0.28,-0.0,1.0,25.57,25.57,2.0,24.33,0.39,24.61,24.06,0.55,0.0,1.0,24.33,24.33,2.0
