# 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 temperature data file's contents
RECORD_CLASSNAME = org.eclipse.stem.internal.data.geography.specifications.EarthPropertyFileSpecification

# The title
TITLE = MWI temperature 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 = MWI
ADMIN_LEVEL = 1
UNITS = C
DATA_TYPE = temperature

# 120 calculations comma-separated, 10 consecutive calculations for each month (from January to December)
# Field 1: Mean
# 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: 45 degrees
# Minimum: -25 degrees

MW-C = 21.17,2.12,27.64,10.0,17.64,-0.68,4.33,21.28,21.44,1304.0,23.55,1.4,26.81,17.99,8.82,-0.47,3.01,23.6,23.64,1304.0,23.42,1.23,27.22,19.92,7.3,0.08,2.73,23.45,23.37,1304.0,25.63,1.75,29.02,19.65,9.37,-0.55,3.1,25.69,25.85,1304.0,26.37,1.92,30.67,20.47,10.2,-0.37,2.21,26.44,26.67,1304.0,25.21,2.06,30.67,19.37,11.3,-0.29,2.28,25.3,25.43,1304.0,25.97,2.35,31.77,19.92,11.85,-0.32,2.25,26.07,26.26,1304.0,29.19,3.21,35.77,20.75,15.02,-0.83,3.03,29.36,29.84,1304.0,35.79,4.43,41.28,22.68,18.6,-1.63,4.98,36.06,37.15,1304.0,38.78,4.7,45.0,23.78,21.22,-1.9,6.12,39.07,40.04,1304.0,36.9,4.7,45.0,24.06,20.94,-0.97,3.53,37.19,37.94,1304.0,25.64,2.7,33.98,16.89,17.09,0.4,3.08,25.78,25.43,1304.0
MW-N = 19.77,1.87,26.26,14.41,11.85,-0.2,2.92,19.86,19.85,1437.0,22.55,1.84,27.36,15.51,11.85,-0.12,3.17,22.62,22.4,1437.0,21.28,1.76,25.71,15.51,10.2,-0.35,3.07,21.35,21.4,1436.0,21.91,2.24,27.78,13.58,14.19,-0.41,4.06,22.02,22.13,1437.0,22.98,2.35,28.74,15.79,12.95,-0.36,3.19,23.1,23.23,1437.0,22.34,2.61,28.19,14.41,13.78,-0.42,2.87,22.49,22.81,1437.0,22.54,2.6,29.84,15.24,14.61,-0.0,2.63,22.69,22.4,1437.0,24.57,3.54,32.87,16.61,16.26,0.5,2.0,24.82,23.5,1437.0,29.87,5.05,39.49,22.68,16.81,0.17,1.68,30.29,29.84,1437.0,32.2,5.94,41.97,23.78,18.19,-0.04,1.54,32.75,32.87,1437.0,31.65,5.08,42.52,21.57,20.94,0.02,1.7,32.05,32.05,1437.0,24.69,3.09,34.53,14.41,20.12,0.36,3.36,24.88,24.06,1437.0
MW-S = 22.21,1.73,28.19,16.06,12.13,-0.1,3.04,22.28,22.26,1190.0,25.1,1.61,29.02,18.27,10.75,-0.31,2.92,25.15,25.16,1190.0,24.22,1.48,28.74,17.99,10.75,0.07,3.17,24.27,24.12,1190.0,27.29,2.17,32.32,19.65,12.68,-0.47,2.81,27.37,27.64,1190.0,27.16,2.09,31.5,17.44,14.06,-0.57,3.41,27.24,27.36,1190.0,25.93,2.2,32.05,16.89,15.16,-0.41,3.13,26.02,26.12,1190.0,25.75,2.29,31.77,17.44,14.33,-0.55,3.32,25.85,25.98,1190.0,29.43,3.28,36.73,18.54,18.19,-0.86,3.46,29.61,29.98,1190.0,35.49,4.2,42.24,22.4,19.84,-1.38,4.42,35.74,36.59,1190.0,39.56,5.1,45.0,23.78,21.22,-1.55,4.66,39.89,41.42,1190.0,38.71,5.03,45.0,24.06,20.94,-1.31,3.89,39.03,40.45,1190.0,29.37,4.13,43.35,14.96,28.39,-0.08,2.42,29.66,29.29,1190.0
