# MWI.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 = MWI rainfall data for 2005 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=2005

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

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

MW-C = 149.77,21.52,257.2,110.53,146.67,1.02,5.83,151.3,149.45,211.0,128.25,19.87,168.61,52.94,115.67,-0.69,4.21,129.77,128.61,211.0,94.99,39.42,214.62,31.65,182.97,0.93,3.45,102.81,88.12,211.0,52.69,15.92,95.06,27.43,67.63,0.59,2.49,55.03,49.86,211.0,21.4,11.8,48.96,1.24,47.72,0.23,2.26,24.43,20.13,211.0,13.37,8.16,55.23,2.63,52.61,1.41,6.32,15.65,12.04,211.0,4.74,3.54,30.22,1.0,29.22,3.12,18.6,5.91,4.03,211.0,1.21,0.44,3.89,1.0,2.89,2.77,11.96,1.28,1.0,211.0,5.57,6.15,39.05,1.24,37.81,3.39,16.01,8.29,3.84,211.0,3.68,3.32,17.56,1.0,16.56,2.06,6.86,4.95,2.56,211.0,29.74,18.89,84.6,5.35,79.26,0.66,2.47,35.21,25.89,211.0,201.49,48.71,404.36,110.53,293.82,1.15,4.84,207.27,190.32,211.0
MW-N = 152.41,32.49,249.67,86.84,162.84,0.54,3.13,155.82,149.45,234.0,125.23,17.35,168.61,92.24,76.38,0.45,2.5,126.42,123.19,234.0,163.91,45.99,290.18,37.92,252.26,-0.11,3.38,170.21,164.27,234.0,76.95,57.16,306.42,14.53,291.88,1.57,5.47,95.79,61.65,234.0,15.8,12.39,67.82,1.18,66.64,1.06,4.42,20.06,14.3,234.0,20.37,22.36,132.46,1.38,131.09,2.09,8.45,30.21,11.2,234.0,9.54,14.96,117.41,1.0,116.41,3.18,16.77,17.72,3.2,234.0,2.06,3.42,32.05,1.0,31.05,5.89,43.05,3.98,1.0,234.0,6.14,3.33,26.78,1.0,25.78,2.06,11.82,6.99,6.18,234.0,2.1,2.02,21.04,1.0,20.04,5.94,48.66,2.91,1.54,234.0,16.42,14.46,61.01,2.1,58.91,1.13,3.47,21.86,10.57,234.0,149.37,51.53,327.39,49.46,277.93,0.51,3.22,157.97,140.7,234.0
MW-S = 136.07,18.64,196.06,86.84,109.22,0.34,3.24,137.33,135.22,193.0,80.19,18.87,131.68,33.08,98.61,0.32,2.34,82.37,77.28,193.0,66.73,20.6,173.77,36.21,137.56,1.63,6.84,69.82,60.47,193.0,62.35,12.02,100.97,35.7,65.27,0.25,3.23,63.5,62.77,193.0,49.18,13.59,83.08,21.68,61.4,0.08,2.66,51.02,48.65,193.0,18.01,13.12,64.23,4.38,59.84,1.49,4.83,22.26,12.23,193.0,12.3,10.61,86.84,4.01,82.82,3.42,18.48,16.23,8.32,193.0,3.75,4.76,24.83,1.0,23.83,2.32,8.31,6.05,1.46,193.0,29.22,19.71,79.32,4.97,74.36,0.67,2.41,35.22,24.48,193.0,6.15,5.15,23.74,1.0,22.74,1.29,3.98,8.01,4.3,193.0,33.26,16.73,76.97,9.32,67.65,0.57,2.24,37.21,30.16,193.0,279.45,73.39,530.47,158.74,371.73,1.0,3.67,288.88,258.43,193.0
