# TUN.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 = TUN rainfall data for 2010 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=2010

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

# ISO3166-1 alpha3 code for the country
ISOKEY = TUN
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

TN-R1 = 55.13,14.14,82.19,35.87,46.33,0.6,2.29,56.81,52.15,16.0,44.04,4.4,52.99,36.8,16.19,0.38,2.46,44.25,43.48,16.0,78.66,6.24,92.4,70.44,21.97,0.62,2.57,78.89,78.41,16.0,48.98,4.26,55.26,41.52,13.74,0.06,1.82,49.16,49.31,16.0,44.76,6.87,56.95,34.09,22.86,0.5,2.24,45.25,42.14,16.0,15.58,5.19,23.6,6.89,16.71,0.0,1.85,16.37,15.21,16.0,1.94,0.76,3.29,1.0,2.29,0.35,1.86,2.08,1.8,16.0,4.15,2.37,8.4,1.62,6.77,0.53,1.74,4.74,3.19,16.0,59.52,4.81,67.21,53.59,13.61,0.14,1.72,59.7,60.06,16.0,74.12,1.97,77.09,70.44,6.65,-0.46,2.41,74.14,74.71,16.0,62.83,6.32,76.47,53.09,23.38,0.78,2.91,63.13,60.73,16.0,32.66,9.0,48.46,22.39,26.08,0.39,1.79,33.8,31.84,16.0
TN-R2 = 59.5,30.82,121.0,24.3,96.7,0.59,1.78,66.88,43.61,58.0,42.51,12.67,66.19,26.98,39.22,0.54,1.67,44.33,36.09,58.0,73.31,6.75,92.4,58.67,33.73,0.62,3.41,73.61,72.49,58.0,45.87,7.71,60.47,33.14,27.33,-0.03,1.63,46.5,47.06,58.0,40.86,9.59,70.31,21.05,49.26,0.3,3.56,41.95,39.97,58.0,14.57,7.84,29.32,3.65,25.66,0.18,1.68,16.51,13.9,58.0,2.98,2.47,11.26,1.0,10.26,1.5,4.7,3.85,1.66,58.0,5.21,2.95,11.86,1.0,10.86,0.25,2.2,5.98,5.38,58.0,59.25,5.1,68.22,48.49,19.73,0.02,2.17,59.47,59.2,58.0,75.82,10.09,91.36,52.59,38.77,-0.65,2.51,76.48,78.22,58.0,76.88,22.36,128.76,47.5,81.26,0.74,2.57,80.01,69.79,58.0,37.66,20.29,84.26,13.79,70.46,0.66,2.33,42.69,32.6,58.0
TN-R3 = 58.01,20.62,95.06,7.78,87.28,-0.63,2.62,61.53,61.95,104.0,32.78,11.9,56.93,10.84,46.09,0.21,2.0,34.85,31.14,104.0,54.22,15.4,77.0,22.35,54.65,-0.41,1.97,56.35,56.99,104.0,61.4,12.04,86.84,37.39,49.45,0.3,2.47,62.56,59.57,104.0,48.71,11.97,76.97,25.21,51.75,0.42,2.37,50.14,46.2,104.0,26.4,3.15,32.09,20.41,11.68,-0.08,1.91,26.58,26.53,104.0,10.77,8.07,27.6,1.62,25.98,0.6,1.91,13.44,7.84,104.0,18.26,6.94,36.21,8.77,27.44,0.85,2.78,19.52,16.62,104.0,59.16,7.35,72.46,42.75,29.71,-0.29,2.08,59.61,60.98,104.0,56.41,17.03,88.17,29.08,59.08,-0.04,1.67,58.9,56.93,104.0,83.92,22.27,136.52,50.46,86.06,0.7,2.36,86.8,76.98,104.0,36.69,14.95,68.67,12.45,56.22,0.22,2.18,39.59,37.09,104.0
TN-R4 = 14.23,9.23,41.48,3.89,37.59,1.2,3.81,16.94,11.51,141.0,11.58,5.34,26.53,2.24,24.28,0.96,3.53,12.75,10.39,141.0,25.38,21.45,84.26,4.13,80.13,1.36,3.71,33.18,18.65,141.0,43.19,10.73,73.16,20.41,52.75,0.87,3.26,44.49,39.26,141.0,21.17,9.45,42.1,6.17,35.93,0.17,2.05,23.17,22.22,141.0,15.56,8.36,32.09,2.79,29.3,0.21,1.76,17.65,14.84,141.0,14.1,6.7,28.45,3.75,24.7,0.5,2.22,15.6,13.38,141.0,9.57,8.99,34.15,1.0,33.15,1.18,3.47,13.11,6.69,141.0,42.61,16.13,74.68,18.65,56.03,0.04,1.66,45.54,42.55,141.0,41.58,11.99,70.31,21.68,48.62,0.14,1.91,43.26,41.02,141.0,47.44,12.33,75.82,26.78,49.04,0.42,2.34,49.01,46.09,141.0,20.08,11.87,50.46,6.11,44.35,1.15,3.15,23.3,15.62,141.0
TN-R5 = 6.64,4.04,27.83,2.26,25.58,2.55,12.19,7.76,5.8,93.0,10.72,5.9,30.7,2.91,27.78,0.74,3.37,12.22,10.5,93.0,54.78,27.28,105.24,5.7,99.55,-0.0,1.97,61.13,52.0,93.0,31.64,10.1,53.59,14.71,38.88,-0.01,1.73,33.2,33.08,93.0,19.42,6.84,34.56,6.06,28.5,0.26,2.52,20.58,18.78,93.0,5.03,2.21,12.6,1.56,11.04,0.97,3.71,5.49,4.52,93.0,3.46,1.87,9.12,1.0,8.12,0.93,3.27,3.93,3.1,93.0,1.04,0.1,1.56,1.0,0.56,3.37,14.72,1.04,1.0,93.0,36.16,13.1,66.19,15.82,50.37,0.61,2.51,38.43,34.67,93.0,60.33,12.26,85.63,36.21,49.42,0.32,2.27,61.55,59.1,93.0,46.74,5.87,60.47,33.08,27.39,-0.17,2.33,47.1,46.8,93.0,19.74,9.59,49.51,6.83,42.69,0.72,3.23,21.92,19.2,93.0
TN-R6 = 17.12,14.42,72.46,2.46,70.0,1.5,4.9,22.36,12.36,222.0,2.57,1.86,9.9,1.0,8.9,1.41,4.56,3.17,2.01,222.0,13.72,10.71,50.46,1.0,49.46,1.1,3.35,17.39,9.65,222.0,27.69,10.32,51.93,12.22,39.71,0.4,2.05,29.54,25.91,222.0,5.29,2.25,10.24,1.0,9.24,0.16,1.82,5.75,5.14,222.0,9.96,6.12,28.58,1.53,27.06,1.01,3.82,11.68,8.41,222.0,1.82,1.41,7.51,1.0,6.51,1.89,5.85,2.3,1.0,222.0,1.11,0.38,3.46,1.0,2.46,4.4,23.55,1.17,1.0,222.0,11.7,3.98,23.74,5.41,18.32,0.86,2.71,12.35,10.22,222.0,34.91,7.93,53.59,13.38,40.21,-0.25,2.54,35.8,35.13,222.0,35.79,12.93,84.26,11.86,72.39,0.84,3.89,38.05,34.01,222.0,20.58,16.63,62.32,1.53,60.79,0.88,2.62,26.43,14.25,222.0
TN-R7 = 6.07,6.04,34.09,1.0,33.09,1.65,5.8,8.56,3.37,338.0,1.37,0.88,6.3,1.0,5.3,2.97,12.1,1.63,1.0,338.0,5.39,5.2,27.6,1.0,26.6,1.67,5.48,7.48,3.2,338.0,18.51,14.02,64.23,1.0,63.23,0.86,2.99,23.21,14.35,338.0,4.59,2.27,11.86,1.0,10.86,1.07,3.46,5.12,3.81,338.0,3.24,2.09,17.45,1.0,16.45,3.09,16.75,3.85,2.65,338.0,1.13,0.37,3.66,1.0,2.66,3.68,18.15,1.19,1.0,338.0,1.02,0.09,2.14,1.0,1.14,8.54,94.66,1.02,1.0,338.0,6.53,3.41,20.92,1.77,19.14,1.59,5.86,7.36,5.88,338.0,12.51,11.34,42.79,1.0,41.79,1.19,3.31,16.87,9.32,338.0,25.69,13.98,68.22,2.6,65.62,0.18,2.17,29.24,25.33,338.0,14.48,18.08,78.57,1.0,77.57,1.69,5.15,23.14,7.36,338.0
