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

# The title
TITLE = SYC rainfall data for combined 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=combined

# 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 = MM
DATA_TYPE = rainfall

# 120 calculations comma-separated, 10 consecutive calculations for each month (from January to December). Combined data from multiple years. Only Fields 1, 3, 4, and 5 are valid. All other Fields are NaN.
# 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: 2000.0
# Minimum: 1.0
# Data not available for locations above 35 degrees N and below 35 degrees S Latitude

SC-M = 268.24,NaN,457.04,182.0,275.04,NaN,NaN,NaN,NaN,NaN,138.7,NaN,273.69,1.6,272.09,NaN,NaN,NaN,NaN,NaN,146.29,NaN,242.26,47.69,194.57,NaN,NaN,NaN,NaN,NaN,153.45,NaN,287.43,92.4,195.03,NaN,NaN,NaN,NaN,NaN,85.59,NaN,159.03,21.48,137.55,NaN,NaN,NaN,NaN,NaN,75.8,NaN,269.87,5.79,264.08,NaN,NaN,NaN,NaN,NaN,46.83,NaN,173.54,2.3,171.24,NaN,NaN,NaN,NaN,NaN,26.63,NaN,66.19,4.59,61.6,NaN,NaN,NaN,NaN,NaN,93.34,NaN,242.15,7.68,234.47,NaN,NaN,NaN,NaN,NaN,109.95,NaN,232.73,10.24,222.49,NaN,NaN,NaN,NaN,NaN,118.88,NaN,214.72,29.65,185.07,NaN,NaN,NaN,NaN,NaN,201.41,NaN,317.81,58.78,259.03,NaN,NaN,NaN,NaN,NaN
SC-P = 260.94,NaN,416.74,140.7,276.04,NaN,NaN,NaN,NaN,NaN,125.08,NaN,214.62,11.8,202.82,NaN,NaN,NaN,NaN,NaN,145.14,NaN,214.62,33.08,181.54,NaN,NaN,NaN,NaN,NaN,156.66,NaN,281.56,78.22,203.34,NaN,NaN,NaN,NaN,NaN,95.58,NaN,246.12,16.53,229.59,NaN,NaN,NaN,NaN,NaN,92.18,NaN,281.56,10.93,270.63,NaN,NaN,NaN,NaN,NaN,57.73,NaN,179.1,5.89,173.21,NaN,NaN,NaN,NaN,NaN,35.35,NaN,95.06,3.44,91.62,NaN,NaN,NaN,NaN,NaN,120.18,NaN,249.56,28.45,221.11,NaN,NaN,NaN,NaN,NaN,105.52,NaN,239.2,1.31,237.89,NaN,NaN,NaN,NaN,NaN,110.1,NaN,214.62,23.78,190.84,NaN,NaN,NaN,NaN,NaN,199.41,NaN,308.37,101.15,207.22,NaN,NaN,NaN,NaN,NaN
