# EGY.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 = EGY temperature data for 2008 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=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 = EGY
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

EGY = 18.4,3.29,29.84,10.28,19.57,0.95,3.48,18.69,17.58,35856.0,22.3,3.51,33.98,14.69,19.29,0.79,3.3,22.57,21.57,35857.0,31.91,3.97,44.17,20.2,23.98,0.42,3.19,32.15,31.36,35857.0,35.98,4.04,45.0,20.47,24.53,0.36,3.24,36.2,35.49,35857.0,39.9,3.24,45.0,25.16,19.84,-0.11,2.78,40.03,39.76,35857.0,43.5,2.07,45.0,28.19,16.81,-2.37,10.91,43.55,44.17,35857.0,43.76,2.26,45.0,29.57,15.43,-3.18,14.99,43.82,44.72,35857.0,44.02,2.27,45.0,29.29,15.71,-3.82,19.37,44.08,45.0,35857.0,41.03,2.76,45.0,27.36,17.64,-0.84,4.69,41.12,41.0,35857.0,34.98,3.79,45.0,22.68,22.32,0.65,3.26,35.19,34.25,35857.0,29.28,3.66,40.87,20.75,20.12,0.98,3.35,29.51,28.33,35857.0,23.51,3.75,35.91,14.41,21.5,0.82,3.23,23.8,22.81,35857.0
