# 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 2003 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=2003

# 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 = 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

YE-N = 2.44,2.32,21.48,1.0,20.48,2.82,16.75,3.36,1.16,751.0,4.51,3.78,24.1,1.0,23.1,2.08,8.0,5.88,3.2,751.0,22.08,20.26,95.06,1.0,94.06,1.44,4.4,29.96,15.56,751.0,50.07,30.48,188.71,1.0,187.71,0.48,3.22,58.6,51.03,751.0,7.67,13.93,107.25,1.0,106.25,2.96,13.17,15.89,1.29,751.0,5.43,6.72,34.09,1.0,33.09,1.65,4.9,8.63,1.68,751.0,6.59,4.79,28.45,1.0,27.45,1.6,5.54,8.15,5.04,751.0,118.44,77.57,392.34,15.47,376.87,1.09,3.9,141.55,100.97,751.0,38.24,61.13,358.4,1.0,357.4,2.42,9.75,72.07,6.68,751.0,2.34,4.14,43.39,1.0,42.39,5.18,35.52,4.75,1.0,751.0,1.05,0.38,7.32,1.0,6.32,10.56,137.47,1.12,1.0,751.0,4.08,2.78,17.04,1.0,16.04,0.76,2.85,4.94,3.34,751.0
YE-S = 1.37,1.49,19.81,1.0,18.81,6.42,55.74,2.02,1.0,1563.0,1.53,2.26,33.08,1.0,32.08,7.49,71.56,2.72,1.0,1563.0,1.74,3.31,58.67,1.0,57.67,8.86,105.66,3.74,1.0,1563.0,45.69,41.2,249.56,1.0,248.56,1.65,5.96,61.51,31.14,1563.0,1.16,1.44,30.22,1.0,29.22,13.92,223.74,1.85,1.0,1563.0,1.67,3.26,37.32,1.0,36.32,7.28,60.42,3.66,1.0,1563.0,10.03,7.64,66.19,1.0,65.19,1.94,9.63,12.6,8.14,1563.0,51.52,39.69,249.56,1.0,248.56,1.03,4.33,65.03,44.48,1563.0,7.13,13.9,136.52,1.0,135.52,4.88,33.28,15.62,2.69,1563.0,1.2,1.11,22.35,1.0,21.35,9.74,130.49,1.63,1.0,1563.0,1.54,3.2,46.09,1.0,45.09,7.5,66.45,3.56,1.0,1563.0,1.4,1.05,7.54,1.0,6.54,3.55,16.61,1.75,1.0,1563.0
