# GNQ.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 = GNQ rainfall data for 2002 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=2002

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

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

GQ-AN = 312.11,0.53,312.49,311.74,0.75,-0.0,1.0,312.11,312.11,2.0,78.94,8.41,84.88,72.99,11.9,-0.0,1.0,79.16,78.94,2.0,176.2,5.76,180.28,172.13,8.15,-0.0,1.0,176.25,176.2,2.0,306.3,10.22,313.53,299.07,14.46,0.0,1.0,306.39,306.3,2.0,82.38,0.83,82.96,81.79,1.17,-0.0,1.0,82.38,82.38,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,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,15.99,0.21,16.14,15.84,0.3,-0.0,1.0,15.99,15.99,2.0,47.71,4.83,51.13,44.3,6.83,0.0,1.0,47.83,47.71,2.0,147.38,33.48,171.05,123.71,47.34,-0.0,1.0,149.27,147.38,2.0
GQ-BN = 5.87,2.52,9.33,4.0,5.32,0.69,1.86,6.26,5.07,4.0,26.65,2.83,29.65,23.45,6.2,-0.07,1.38,26.76,26.74,4.0,259.89,12.54,273.32,243.82,29.5,-0.31,1.79,260.11,261.2,4.0,252.72,30.96,281.56,224.29,57.28,0.0,1.02,254.14,252.52,4.0,360.14,23.46,392.34,336.95,55.39,0.6,2.01,360.72,355.64,4.0,345.11,12.62,358.4,328.74,29.67,-0.36,1.82,345.28,346.65,4.0,359.14,24.57,392.34,334.05,58.3,0.52,1.97,359.77,355.08,4.0,535.46,17.5,556.6,514.71,41.89,0.03,1.83,535.68,535.27,4.0,400.92,36.99,451.89,370.89,81.0,0.69,1.88,402.2,390.46,4.0,205.79,25.27,224.79,168.61,56.17,-1.02,2.24,206.95,214.88,4.0,136.8,7.31,145.01,129.46,15.54,0.11,1.28,136.95,136.37,4.0,62.35,13.48,79.07,46.09,32.98,0.06,2.0,63.43,62.12,4.0
GQ-BS = 17.42,3.62,22.18,12.52,9.66,0.01,1.58,17.74,17.56,7.0,36.84,6.51,46.09,26.89,19.2,-0.14,1.99,37.33,38.92,7.0,202.6,21.96,230.33,175.56,54.77,0.03,1.49,203.61,202.06,7.0,189.45,22.41,220.9,168.61,52.29,0.67,1.73,190.58,179.42,7.0,368.43,25.52,404.36,335.1,69.26,0.08,1.69,369.19,365.88,7.0,399.45,26.06,424.69,357.9,66.78,-0.62,1.78,400.18,416.74,7.0,318.14,10.34,337.42,308.23,29.19,0.82,2.72,318.28,317.81,7.0,481.47,47.68,548.95,404.36,144.59,-0.17,2.26,483.49,472.61,7.0,290.21,43.4,382.25,257.2,125.04,1.55,4.06,292.98,279.23,7.0,214.55,15.14,236.66,196.06,40.61,0.43,1.81,215.01,210.13,7.0,144.07,14.85,163.6,123.19,40.41,0.0,1.71,144.73,146.65,7.0,99.68,7.64,113.92,91.46,22.46,0.98,2.72,99.93,96.62,7.0
GQ-CS = 116.16,27.62,154.02,51.63,102.4,-0.84,2.78,119.33,122.98,45.0,153.85,16.61,190.23,124.76,65.47,0.14,2.2,154.73,153.56,45.0,343.6,40.92,442.65,243.14,199.52,-0.04,3.09,345.97,343.05,45.0,286.07,28.06,369.38,249.56,119.81,1.42,4.38,287.41,277.88,45.0,256.31,35.5,352.0,190.58,161.42,0.42,2.77,258.71,253.61,45.0,70.25,12.34,92.24,46.09,46.14,-0.01,2.28,71.3,69.26,45.0,38.15,15.22,71.03,15.56,55.47,0.51,2.21,41.01,34.86,45.0,76.06,21.97,134.6,44.72,89.88,0.95,3.35,79.1,69.37,45.0,286.26,50.99,353.08,184.58,168.5,-0.49,2.03,290.67,290.32,45.0,337.04,29.83,380.69,273.32,107.37,-0.42,2.18,338.33,342.59,45.0,294.11,51.36,416.74,185.92,230.82,-0.05,2.89,298.46,299.07,45.0,149.47,27.44,230.55,96.78,133.77,0.51,3.37,151.91,147.36,45.0
GQ-KN = 56.23,7.37,65.83,42.37,23.46,-0.41,1.98,56.69,57.4,18.0,113.16,14.02,138.61,89.54,49.07,0.09,2.3,113.98,114.01,18.0,236.19,18.83,276.03,195.79,80.24,-0.11,3.06,236.89,238.98,18.0,229.26,14.21,257.2,211.86,45.34,0.65,2.23,229.67,225.58,18.0,199.32,10.3,217.91,184.58,33.33,0.34,2.0,199.57,197.74,18.0,103.95,9.08,114.0,88.17,25.83,-0.7,2.04,104.32,107.35,18.0,82.94,7.0,94.51,69.45,25.05,-0.01,2.17,83.21,81.82,18.0,136.98,15.26,163.6,107.25,56.35,-0.09,2.44,137.78,136.32,18.0,311.72,20.48,347.75,273.2,74.56,-0.14,2.45,312.35,313.67,18.0,303.66,14.59,332.71,278.14,54.57,0.13,2.37,303.99,301.31,18.0,191.74,13.26,214.62,163.95,50.67,-0.23,2.47,192.18,191.69,18.0,56.47,14.24,89.37,40.09,49.28,0.98,3.0,58.14,52.36,18.0
GQ-LI = 101.7,39.48,184.58,42.41,142.17,0.37,2.17,108.93,99.4,42.0,213.11,48.97,318.24,124.53,193.71,0.33,2.21,218.54,205.61,42.0,415.03,50.75,530.47,307.8,222.67,-0.01,2.94,418.05,410.59,42.0,392.24,60.55,546.71,281.56,265.15,0.36,2.98,396.78,392.34,42.0,329.04,50.44,442.65,220.89,221.76,-0.1,2.49,332.8,330.69,42.0,55.31,10.95,73.77,27.47,46.3,-0.58,2.9,56.36,55.76,42.0,23.64,17.39,71.46,5.75,65.71,1.41,4.09,29.22,18.07,42.0,58.0,27.18,135.22,31.7,103.52,1.52,4.25,63.91,48.05,42.0,307.12,57.95,392.34,156.3,236.05,-0.75,2.82,312.41,321.59,42.0,349.81,42.64,450.66,273.2,177.46,0.45,2.81,352.33,344.12,42.0,351.93,81.84,484.58,189.97,294.61,-0.35,1.95,361.1,369.12,42.0,243.8,47.25,318.24,122.99,195.26,-0.58,2.74,248.23,251.47,42.0
GQ-WN = 90.79,14.04,121.88,67.27,54.62,0.31,2.25,91.84,90.3,32.0,111.68,15.9,142.85,89.5,53.36,0.35,2.0,112.77,110.06,32.0,297.88,32.59,369.38,231.46,137.91,-0.43,2.69,299.6,308.85,32.0,250.87,13.6,273.2,231.46,41.74,-0.02,1.61,251.23,250.16,32.0,178.97,19.65,211.44,140.95,70.48,-0.19,2.07,180.01,179.14,32.0,88.82,17.48,121.0,63.27,57.73,0.19,1.82,90.47,87.02,32.0,58.08,20.24,96.78,20.13,76.65,-0.3,2.18,61.4,61.5,32.0,106.27,11.49,135.43,79.65,55.78,-0.09,3.44,106.87,106.85,32.0,270.18,52.91,347.75,161.32,186.43,-0.4,2.24,275.16,273.2,32.0,321.53,23.62,369.54,285.87,83.67,0.4,2.16,322.37,318.32,32.0,247.16,30.6,317.67,205.34,112.33,0.74,2.73,248.99,242.64,32.0,90.21,20.59,123.97,57.16,66.81,0.01,1.76,92.46,93.35,32.0
