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

KG-ISK = 14.51,6.7,35.13,4.66,30.48,0.7,2.93,15.98,14.21,653.0,27.36,11.3,53.59,8.77,44.82,0.28,1.97,29.6,25.61,653.0,20.79,10.48,51.66,4.14,47.52,0.58,2.82,23.28,19.52,653.0,20.01,11.82,79.32,6.11,73.21,1.42,5.49,23.24,16.28,653.0,33.12,8.7,81.75,16.04,65.72,0.75,4.56,34.24,32.46,653.0,27.17,9.83,52.0,7.54,44.46,0.2,2.37,28.89,26.78,653.0,32.38,8.18,64.48,10.51,53.97,0.17,3.56,33.39,32.09,653.0,9.58,4.01,29.04,2.06,26.98,1.16,5.91,10.38,9.18,653.0,11.86,4.02,25.21,4.13,21.09,0.68,3.18,12.52,11.37,653.0,14.7,9.62,68.22,1.62,66.6,1.24,5.18,17.56,11.85,653.0,26.25,8.23,60.47,8.51,51.95,0.73,3.75,27.5,24.96,653.0,18.96,7.09,44.72,4.66,40.06,0.54,3.35,20.24,18.47,653.0
KG-KIT = 18.96,3.67,28.02,12.41,15.61,0.68,2.5,19.3,17.91,130.0,48.42,3.03,57.03,40.85,16.18,0.12,2.75,48.51,48.27,130.0,38.2,5.93,53.69,21.04,32.65,0.05,3.03,38.65,37.68,130.0,41.89,11.58,72.46,21.68,50.78,0.29,2.48,43.45,41.52,130.0,58.78,11.35,92.24,36.21,56.03,0.37,2.67,59.85,57.9,130.0,20.9,5.66,32.59,9.32,23.27,-0.14,2.4,21.65,21.09,130.0,31.13,11.72,58.67,12.6,46.07,0.19,1.88,33.25,30.12,130.0,6.05,3.28,15.1,1.16,13.94,0.54,2.68,6.87,5.87,130.0,21.08,3.91,31.14,13.19,17.95,-0.19,2.29,21.44,21.55,130.0,33.02,14.52,72.46,11.79,60.67,1.26,3.94,36.05,28.63,130.0,45.48,5.51,60.47,34.15,26.31,0.09,2.27,45.81,45.77,130.0,25.41,5.98,39.64,16.3,23.34,0.6,2.44,26.1,24.46,130.0
KG-O = 26.24,7.68,49.37,7.28,42.09,0.22,2.87,27.34,26.27,600.0,47.94,6.29,81.75,26.53,55.23,0.47,5.4,48.35,47.5,600.0,15.63,10.11,72.46,5.42,67.04,1.76,7.74,18.61,12.1,600.0,42.39,15.38,92.24,17.23,75.01,1.04,3.5,45.09,37.86,600.0,33.51,12.89,84.6,14.21,70.39,1.27,4.18,35.89,28.45,600.0,8.27,4.06,25.21,1.0,24.21,0.93,3.86,9.21,7.5,600.0,13.16,5.36,31.14,3.67,27.47,0.68,3.13,14.21,12.52,600.0,4.26,2.92,21.68,1.0,20.68,2.11,9.84,5.16,3.64,600.0,11.5,6.61,36.21,4.13,32.08,1.35,4.5,13.26,9.58,600.0,28.76,15.82,81.75,5.1,76.66,0.92,3.31,32.82,25.12,600.0,40.41,16.65,100.97,10.2,90.77,0.9,4.5,43.7,40.32,600.0,31.78,10.78,75.82,11.51,64.31,1.25,5.9,33.55,30.71,600.0
