# YEM.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 = YEM rainfall data for 2010 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=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 = YEM
ADMIN_LEVEL = 2
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

YE-N-G150001 = 1.02,0.1,2.33,1.0,1.33,8.24,83.46,1.02,1.0,751.0,3.97,3.06,17.03,1.0,16.03,1.62,5.57,5.01,2.92,751.0,4.37,3.36,15.1,1.0,14.1,0.96,3.03,5.51,3.25,751.0,41.75,23.32,89.5,1.37,88.12,0.23,1.94,47.82,39.64,751.0,54.88,39.53,208.25,1.7,206.55,0.94,3.49,67.62,46.09,751.0,56.2,53.99,290.18,1.0,289.18,1.5,5.38,77.91,44.66,751.0,64.79,39.43,179.1,6.11,172.99,0.31,1.83,75.83,57.34,751.0,65.09,43.08,202.06,2.96,199.1,0.55,2.64,78.04,62.32,751.0,34.87,34.3,145.01,1.0,144.01,0.9,2.8,48.89,24.88,751.0,26.19,25.83,168.61,1.0,167.61,1.72,6.45,36.77,18.65,751.0,1.19,0.99,14.65,1.0,13.65,8.06,81.88,1.55,1.0,751.0,1.01,0.03,1.3,1.0,0.3,4.51,25.35,1.01,1.0,751.0
YE-S-G160001 = 1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,100.0,4.1,1.58,8.26,1.0,7.26,0.49,2.49,4.39,3.86,100.0,3.02,2.33,10.2,1.0,9.2,1.19,3.62,3.8,2.16,100.0,13.9,8.05,32.11,1.06,31.04,0.24,2.08,16.04,12.95,100.0,21.17,15.0,70.31,2.47,67.84,1.27,4.5,25.9,17.65,100.0,89.77,26.8,168.61,53.59,115.02,0.92,4.18,93.65,92.26,100.0,42.82,17.51,113.92,12.22,101.69,1.43,5.94,46.23,40.49,100.0,46.87,24.36,130.64,15.1,115.54,1.4,4.73,52.77,39.21,100.0,16.57,12.79,55.46,1.44,54.01,1.0,3.28,20.89,12.74,100.0,21.61,24.2,154.02,1.0,153.02,3.54,17.51,32.35,15.91,100.0,1.04,0.16,2.19,1.0,1.19,5.0,30.6,1.05,1.0,100.0,1.54,1.07,6.89,1.0,5.89,2.88,12.29,1.87,1.0,100.0
YE-S-G160002 = 1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,33.0,1.78,0.68,4.06,1.0,3.06,1.96,6.92,1.9,1.58,33.0,1.22,0.28,2.17,1.0,1.17,1.4,4.86,1.25,1.03,33.0,6.82,1.55,10.47,4.77,5.7,0.26,2.16,6.99,6.85,33.0,25.9,13.78,64.23,9.64,54.58,1.35,4.09,29.24,20.65,33.0,83.17,15.62,105.75,57.8,47.95,-0.63,1.88,84.58,89.54,33.0,15.1,4.94,28.45,9.6,18.84,1.24,3.52,15.87,12.99,33.0,30.18,6.71,42.1,18.13,23.98,0.18,2.2,30.9,29.79,33.0,15.8,10.8,44.06,5.13,38.92,1.32,3.78,19.05,10.88,33.0,19.81,14.65,68.61,6.22,62.39,2.32,7.77,24.51,15.94,33.0,1.13,0.26,1.98,1.0,0.98,2.48,8.05,1.16,1.03,33.0,1.26,0.63,3.95,1.0,2.95,3.06,12.05,1.41,1.0,33.0
YE-S-G160003 = 6.91,2.26,23.74,3.95,19.79,2.67,13.53,7.27,6.3,409.0,5.48,5.41,26.78,1.0,25.78,1.87,6.0,7.7,3.69,409.0,1.94,2.43,17.03,1.0,16.03,3.5,16.54,3.11,1.0,409.0,1.14,0.48,5.58,1.0,4.58,5.41,39.21,1.24,1.0,409.0,3.0,2.56,13.38,1.0,12.38,1.52,4.59,3.94,1.9,409.0,11.82,23.96,190.23,1.0,189.23,3.21,16.13,26.69,1.0,409.0,12.41,8.36,56.93,1.31,55.61,1.14,5.1,14.96,11.1,409.0,24.18,11.36,72.46,5.16,67.31,1.01,4.69,26.71,22.35,409.0,8.24,5.34,30.22,1.0,29.22,1.0,3.91,9.82,7.32,409.0,1.75,0.83,5.1,1.0,4.1,2.16,7.61,1.94,1.49,409.0,27.13,3.07,35.28,14.59,20.69,-0.56,3.48,27.31,27.6,409.0,4.74,2.37,8.91,1.0,7.91,0.02,1.65,5.3,4.68,409.0
YE-S-G160004 = 4.14,2.08,20.41,1.0,19.41,2.75,17.04,4.63,3.89,583.0,2.38,1.82,12.22,1.0,11.22,1.88,6.84,2.99,1.66,583.0,2.96,2.51,17.03,1.0,16.03,1.58,5.73,3.88,1.85,583.0,2.21,1.69,8.77,1.0,7.77,1.53,4.79,2.78,1.24,583.0,3.46,2.31,11.17,1.0,10.17,1.05,3.57,4.16,2.72,583.0,15.7,16.48,70.31,1.0,69.31,1.02,3.22,22.75,9.75,583.0,11.4,5.47,30.22,1.57,28.64,0.4,2.78,12.64,11.03,583.0,36.6,25.83,132.46,4.8,127.66,1.13,3.86,44.78,30.74,583.0,5.72,5.81,39.64,1.0,38.64,2.82,12.29,8.15,4.25,583.0,4.61,6.28,81.75,1.0,80.75,6.08,57.37,7.78,2.83,583.0,14.54,5.92,24.84,2.19,22.65,-0.24,2.1,15.69,15.18,583.0,1.4,0.82,5.25,1.0,4.25,2.36,8.3,1.62,1.0,583.0
YE-S-G160005 = 1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,29.0,1.52,0.68,3.44,1.0,2.44,1.39,3.98,1.66,1.3,29.0,3.95,1.54,6.89,1.48,5.41,0.05,1.98,4.23,4.0,29.0,23.11,10.45,44.72,9.04,35.68,0.38,2.05,25.29,21.84,29.0,66.32,23.19,107.25,23.74,83.51,-0.03,2.12,70.12,65.36,29.0,111.53,18.18,172.95,89.5,83.46,1.7,6.17,112.95,110.73,29.0,45.36,22.31,92.11,15.1,77.01,0.31,2.05,50.38,44.02,29.0,78.58,29.9,132.46,33.08,99.39,0.01,1.78,83.89,77.77,29.0,47.85,19.31,90.15,12.22,77.92,0.27,2.48,51.47,45.0,29.0,37.92,18.62,117.41,19.22,98.19,2.9,12.85,42.11,36.28,29.0,1.22,0.46,2.96,1.0,1.96,2.45,8.64,1.3,1.0,29.0,1.15,0.3,2.19,1.0,1.19,2.07,6.55,1.19,1.0,29.0
YE-S-G160006 = 1.57,1.92,23.03,1.0,22.03,6.62,56.9,2.48,1.0,383.0,3.4,2.76,13.79,1.0,12.79,1.47,4.61,4.37,2.36,383.0,4.71,4.11,14.65,1.0,13.65,0.65,1.85,6.25,2.19,383.0,10.72,10.07,46.09,1.0,45.09,1.59,4.85,14.69,6.92,383.0,10.69,6.75,47.5,1.0,46.5,1.77,7.73,12.63,9.21,383.0,42.19,35.93,190.23,1.0,189.23,1.52,5.75,55.39,36.47,383.0,17.18,7.48,46.09,2.71,43.39,0.49,3.22,18.73,16.44,383.0,37.67,18.36,92.24,6.14,86.09,0.5,2.79,41.89,35.28,383.0,18.74,19.44,86.84,1.0,85.84,1.15,3.63,26.98,11.29,383.0,12.95,15.02,132.46,1.0,131.46,3.43,20.26,19.82,7.75,383.0,2.52,2.57,13.38,1.0,12.38,1.82,5.28,3.59,1.0,383.0,1.05,0.37,6.3,1.0,5.3,10.03,123.65,1.12,1.0,383.0
YE-S-G160007 = 11.59,5.73,24.32,2.0,22.32,0.27,2.45,12.88,11.3,26.0,2.07,1.74,6.9,1.0,5.9,1.5,4.17,2.68,1.04,26.0,6.27,4.49,15.89,1.0,14.89,0.46,2.13,7.66,5.66,26.0,7.25,5.96,21.68,1.0,20.68,0.6,2.53,9.31,6.96,26.0,106.39,50.98,327.99,55.23,272.76,3.28,15.02,117.55,100.03,26.0,1.03,0.15,1.77,1.0,0.77,4.8,24.04,1.04,1.0,26.0,1.71,0.96,4.13,1.0,3.13,1.31,3.64,1.95,1.21,26.0,2.79,2.59,12.03,1.0,11.03,2.54,8.82,3.77,1.99,26.0,6.34,3.23,10.84,1.0,9.84,-0.37,1.84,7.09,6.59,26.0,4.57,2.3,9.32,1.0,8.32,0.12,2.24,5.1,4.57,26.0,16.17,7.34,25.78,2.39,23.39,-0.56,2.08,17.7,17.36,26.0,14.66,11.0,34.09,1.0,33.09,-0.03,1.57,18.2,14.65,26.0
