# 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 combined 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=combined

# 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). Combined data from multiple years. Only Fields 1, 3, 4, and 5 are valid. All other Fields are NaN.
# 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 = 21.16,NaN,36.46,5.04,31.42,NaN,NaN,NaN,NaN,NaN,24.18,NaN,39.76,11.93,27.83,NaN,NaN,NaN,NaN,NaN,30.29,NaN,45.0,16.06,28.94,NaN,NaN,NaN,NaN,NaN,34.94,NaN,45.0,19.37,25.63,NaN,NaN,NaN,NaN,NaN,40.02,NaN,45.0,22.68,22.32,NaN,NaN,NaN,NaN,NaN,42.96,NaN,45.0,27.09,17.91,NaN,NaN,NaN,NaN,NaN,43.74,NaN,45.0,27.91,17.09,NaN,NaN,NaN,NaN,NaN,43.43,NaN,45.0,28.46,16.54,NaN,NaN,NaN,NaN,NaN,40.77,NaN,45.0,26.54,18.46,NaN,NaN,NaN,NaN,NaN,36.01,NaN,45.0,22.68,22.32,NaN,NaN,NaN,NaN,NaN,28.76,NaN,41.97,14.13,27.84,NaN,NaN,NaN,NaN,NaN,22.63,NaN,35.91,13.58,22.33,NaN,NaN,NaN,NaN,NaN
