# LBY.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 = LBY temperature data for 2008 at admin level 2

# 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 = LBY
ADMIN_LEVEL = 2
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

LY-AZY-G040001 = 17.33,2.38,26.54,9.72,16.81,-0.02,2.93,17.5,17.58,58758.0,20.65,2.49,31.5,10.0,21.5,0.01,3.68,20.8,20.82,58757.0,30.51,2.96,43.07,18.82,24.25,0.14,2.85,30.66,30.53,58758.0,34.78,3.32,45.0,22.13,22.87,0.15,2.63,34.94,34.8,58758.0,38.34,2.4,45.0,29.98,15.02,0.31,2.79,38.42,38.11,58758.0,42.84,1.73,45.0,34.8,10.2,-0.39,2.16,42.88,42.93,58758.0,44.22,1.11,45.0,35.49,9.51,-1.73,6.43,44.23,44.86,58758.0,44.08,1.22,45.0,34.53,10.47,-1.62,5.88,44.1,44.66,58758.0,41.56,2.16,45.0,32.05,12.95,-0.28,2.5,41.62,41.69,58758.0,33.68,3.55,45.0,21.85,23.15,-0.35,2.6,33.86,34.25,58758.0,27.56,2.88,38.39,17.99,20.39,-0.26,3.52,27.71,27.64,58758.0,20.37,3.49,33.15,11.38,21.77,0.13,2.49,20.67,20.33,58758.0
