# CAN.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 = CAN temperature data for 2009 at admin level 0

# This is the date for which the values in this file are valid
# See http://purl.org/dc/terms/1.1/valid
VALID=start=2009

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

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

CAN = -21.35,5.3,6.97,-25.0,31.97,1.73,5.59,22.0,-24.1,685593.0,-20.09,5.87,7.8,-25.0,32.8,1.22,3.87,20.93,-22.24,685581.0,-16.75,7.62,11.65,-25.0,36.65,0.58,2.27,18.4,-18.39,685407.0,-7.01,9.52,25.16,-25.0,50.16,0.18,2.42,11.82,-6.26,685570.0,1.76,10.16,32.87,-18.39,51.26,0.39,2.31,10.31,1.46,685569.0,11.93,8.4,40.04,-10.85,50.89,-0.07,2.54,14.59,13.72,685653.0,16.28,6.11,41.69,-5.43,47.13,-0.97,4.25,17.39,17.72,685643.0,14.01,5.85,40.31,-11.22,51.54,-0.78,4.52,15.18,15.1,685601.0,7.83,10.33,38.66,-22.52,61.18,-0.48,2.88,12.96,9.31,685521.0,-6.79,8.6,21.57,-25.0,46.57,-0.19,2.16,10.96,-5.5,685588.0,-12.62,9.67,12.76,-25.0,37.76,0.42,1.85,15.9,-14.8,685624.0,-19.98,5.3,6.97,-25.0,31.97,1.47,5.6,20.67,-21.14,685642.0
