# 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 vegetation data file's contents
RECORD_CLASSNAME = org.eclipse.stem.internal.data.geography.specifications.EarthPropertyFileSpecification

# The title
TITLE = SYC vegetation 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 = SYC
ADMIN_LEVEL = 1
UNITS = UNITS
DATA_TYPE = vegetation

# 120 calculations comma-separated, 10 consecutive calculations for each month (from January to December)
# Field 1: Average
# 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: 0.9 
# Minimum: -0.1

SC-M = 0.64,0.03,0.67,0.59,0.07,-0.6,1.95,0.64,0.65,5.0,0.61,0.03,0.65,0.58,0.07,-0.04,1.68,0.61,0.62,5.0,0.62,0.06,0.66,0.52,0.14,-1.23,2.9,0.62,0.63,5.0,0.66,0.03,0.69,0.62,0.07,-0.34,1.22,0.66,0.68,5.0,0.68,0.03,0.72,0.64,0.08,0.03,1.67,0.68,0.69,5.0,0.52,0.03,0.53,0.47,0.06,-1.41,3.13,0.52,0.53,5.0,0.4,0.05,0.44,0.33,0.11,-0.33,1.51,0.4,0.41,5.0,0.54,0.09,0.62,0.41,0.21,-0.58,1.86,0.54,0.57,5.0,0.58,0.08,0.65,0.46,0.19,-0.7,2.25,0.59,0.58,5.0,0.56,0.03,0.6,0.53,0.07,0.29,1.61,0.56,0.55,5.0,0.59,0.03,0.62,0.57,0.05,-0.29,1.21,0.59,0.6,5.0,0.7,0.01,0.71,0.69,0.03,0.47,1.73,0.7,0.7,5.0
SC-P = 0.56,0.0,0.56,0.56,0.0,-219403.59,4.738743292269E10,0.56,0.56,2.0,0.47,0.0,0.47,0.47,0.0,-5321829.55,-1.407625546739994E13,0.47,0.47,2.0,0.63,0.0,0.63,0.63,0.0,-460388.76,1.158900383849E11,0.63,0.63,2.0,0.57,0.0,0.57,0.57,0.0,-864117.56,5.0653002687755E11,0.57,0.57,2.0,0.51,0.0,0.51,0.51,0.0,-2910900.62,1.542200588155781E13,0.51,0.51,2.0,0.51,0.0,0.51,0.51,0.0,-1596299.1,1.34716563442175E12,0.51,0.51,2.0,0.45,0.0,0.45,0.45,0.0,-1.022298736E7,5.55996660125951E12,0.45,0.45,2.0,0.55,0.0,0.55,0.55,0.0,-2.2578517859E8,4.6728378532816156E14,0.55,0.55,2.0,0.53,NaN,0.53,0.53,0.0,NaN,-1.29812955134691E12,0.53,0.53,2.0,0.49,0.0,0.49,0.49,0.0,-112391.63,2.1316410580661E11,0.49,0.49,2.0,0.53,NaN,0.53,0.53,0.0,NaN,-7.271820264307E10,0.53,0.53,2.0,0.59,0.0,0.59,0.59,0.0,-189060.34,-7.7554486777E8,0.59,0.59,2.0
