# SVN.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 = SVN rainfall data for 2009 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=2009

# The data is derived from the following primary source
#SOURCE = http://neo.sci.gsfc.nasa.gov/

# ISO3166-1 alpha3 code for the country
ISOKEY = SVN
ADMIN_LEVEL = 1
UNITS = MM
DATA_TYPE = rainfall

# 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: 2000.0
# Minimum: 1.0
# Data not available for locations above 35 degrees N and below 35 degrees S Latitude

SI-01 = 129.39,13.85,158.74,105.75,52.99,0.21,1.85,130.12,127.05,152.0,98.25,26.96,149.45,60.47,88.98,0.27,1.75,101.86,98.23,152.0,103.76,24.69,140.76,51.28,89.49,-0.58,2.1,106.64,110.53,152.0,89.62,19.43,122.85,39.16,83.7,-0.78,2.94,91.69,95.06,152.0,62.12,28.92,117.46,13.38,104.08,0.3,1.88,68.48,58.26,152.0,125.6,20.82,168.92,79.32,89.59,-0.02,1.99,127.31,125.8,152.0,99.51,15.3,124.71,44.72,79.99,-1.01,4.25,100.67,102.52,152.0,99.62,30.34,163.68,47.5,116.17,0.35,2.11,104.11,97.75,152.0,80.52,28.38,159.39,36.36,123.03,0.75,2.87,85.35,74.68,152.0,83.41,13.71,119.2,58.7,60.51,0.21,2.52,84.53,81.8,152.0,114.46,26.58,179.1,66.19,112.9,0.14,2.12,117.49,113.97,152.0,210.16,75.92,317.67,88.17,229.5,-0.22,1.58,223.36,214.82,152.0
