# GMB.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 = GMB rainfall data for 2008 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=2008

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

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

GM-B = 1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,2.0,15.01,1.72,16.22,13.79,2.43,-0.0,1.0,15.06,15.01,2.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,2.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,2.0,21.16,2.64,23.03,19.3,3.74,-0.0,1.0,21.25,21.16,2.0,92.76,8.38,98.68,86.84,11.85,0.0,1.0,92.95,92.76,2.0,327.83,13.56,337.42,318.24,19.17,-0.0,1.0,327.97,327.83,2.0,342.66,7.2,347.75,337.57,10.18,-0.0,1.0,342.7,342.66,2.0,199.1,4.31,202.15,196.06,6.1,0.0,1.0,199.13,199.1,2.0,114.23,18.76,127.5,100.97,26.53,-0.0,1.0,115.0,114.23,2.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,2.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,2.0
GM-L = 1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,7.0,5.52,1.34,7.91,4.25,3.66,0.87,2.38,5.65,5.09,7.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,7.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,7.0,5.73,4.16,12.73,1.81,10.92,0.68,2.01,6.91,4.23,7.0,125.06,16.34,152.56,104.25,48.31,0.54,2.24,125.97,121.25,7.0,320.85,29.63,355.0,260.13,94.87,-1.24,3.79,322.03,325.33,7.0,313.15,9.56,327.54,299.21,28.34,0.05,2.02,313.28,312.95,7.0,227.64,11.05,249.67,219.1,30.57,1.3,3.24,227.87,223.09,7.0,132.43,22.59,176.92,115.66,61.25,1.25,3.11,134.07,119.86,7.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,7.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,7.0
GM-M = 1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,18.0,2.78,1.91,5.93,1.07,4.86,0.54,1.53,3.34,1.4,18.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,18.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,18.0,6.53,1.76,9.04,2.94,6.1,-0.62,2.32,6.75,6.92,18.0,115.62,12.58,132.55,92.24,40.32,-0.45,2.01,116.26,119.1,18.0,230.98,28.43,294.63,193.67,100.96,1.01,3.25,232.63,226.05,18.0,286.13,17.58,314.66,249.56,65.1,-0.24,2.44,286.64,288.03,18.0,236.53,12.79,265.08,221.2,43.88,0.92,2.86,236.85,231.59,18.0,130.4,13.08,161.53,109.49,52.04,0.45,3.0,131.02,130.34,18.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,18.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,18.0
GM-N = 1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,12.0,10.32,4.8,18.65,4.95,13.7,0.34,1.71,11.3,10.0,12.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,12.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,12.0,9.12,6.72,19.3,1.0,18.3,0.15,1.49,11.16,8.62,12.0,119.59,21.22,168.61,97.97,70.64,1.14,3.35,121.31,113.15,12.0,317.33,18.39,352.56,299.07,53.49,1.0,2.86,317.82,313.23,12.0,318.3,19.24,353.56,290.18,63.37,0.38,2.15,318.83,315.31,12.0,213.96,14.53,242.15,196.06,46.09,0.72,2.3,214.41,208.25,12.0,146.68,24.81,190.23,113.92,76.31,0.37,1.84,148.59,142.04,12.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,12.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,12.0
GM-U = 1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,11.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,11.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,11.0,1.02,0.03,1.09,1.0,0.09,1.32,3.78,1.02,1.0,11.0,12.88,10.89,39.89,4.8,35.09,1.6,4.46,16.55,8.03,11.0,112.95,17.19,136.52,84.26,52.26,-0.16,2.0,114.13,113.97,11.0,181.45,35.27,249.56,132.46,117.1,0.47,2.34,184.54,176.6,11.0,311.69,22.35,337.42,265.56,71.86,-0.87,2.71,312.42,317.67,11.0,238.05,13.19,265.08,221.2,43.88,0.9,2.83,238.38,234.95,11.0,94.18,27.07,149.45,70.31,79.14,0.87,2.45,97.66,81.27,11.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,11.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,11.0
GM-W = 1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,11.0,6.51,2.01,9.6,4.06,5.54,0.28,1.66,6.79,6.71,11.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,11.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,11.0,10.23,5.98,19.22,2.02,17.2,-0.09,1.85,11.71,10.7,11.0,114.39,17.87,136.52,89.84,46.68,-0.04,1.37,115.65,112.84,11.0,376.32,21.13,404.36,337.42,66.94,-0.34,2.05,376.85,375.03,11.0,367.63,36.22,438.06,317.67,120.4,0.5,2.46,369.25,364.22,11.0,213.89,22.1,242.15,187.58,54.57,0.04,1.26,214.93,212.01,11.0,147.23,30.05,202.06,107.25,94.81,0.49,2.03,149.99,135.43,11.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,11.0,1.0,0.0,1.0,1.0,0.0,NaN,NaN,1.0,1.0,11.0
