# BHR.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 = BHR temperature data for 2010 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=2010

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

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

BH-B-G070001 = 21.71,0.39,21.99,21.44,0.55,-0.0,1.0,21.71,21.71,2.0,23.68,0.83,24.26,23.09,1.17,-0.0,1.0,23.68,23.68,2.0,30.36,0.73,30.88,29.84,1.03,-0.0,1.0,30.36,30.36,2.0,31.19,0.05,31.22,31.15,0.07,0.0,0.96,31.19,31.19,2.0,35.8,1.22,36.66,34.94,1.72,-0.0,1.0,35.81,35.8,2.0,38.83,1.02,39.56,38.11,1.45,-0.0,1.0,38.84,38.83,2.0,39.73,1.12,40.52,38.94,1.58,-0.0,1.0,39.74,39.73,2.0,40.14,0.73,40.66,39.63,1.03,0.0,1.0,40.15,40.14,2.0,39.69,1.07,40.45,38.94,1.52,-0.0,1.0,39.7,39.69,2.0,36.01,0.73,36.53,35.49,1.03,-0.0,1.0,36.01,36.01,2.0,30.08,0.15,30.19,29.98,0.21,-0.0,1.0,30.08,30.08,2.0,23.13,0.63,23.57,22.68,0.9,-0.0,1.0,23.13,23.13,2.0
BH-B-G070002 = 23.14,0.62,24.06,21.85,2.2,-0.28,2.5,23.15,23.02,22.0,25.59,0.81,27.36,24.06,3.31,0.42,3.09,25.6,25.54,22.0,31.34,1.21,33.15,29.02,4.13,-0.38,2.33,31.36,31.5,22.0,32.35,1.07,34.53,30.67,3.86,0.3,2.28,32.37,32.22,22.0,38.09,0.98,39.76,36.46,3.31,0.1,2.0,38.1,37.97,22.0,41.14,1.29,43.07,38.94,4.13,-0.07,2.02,41.16,41.11,22.0,41.59,1.29,43.62,39.21,4.41,-0.19,2.12,41.61,41.21,22.0,42.33,1.03,43.9,40.59,3.31,-0.0,1.83,42.34,42.24,22.0,41.97,0.95,43.62,40.59,3.03,0.22,1.91,41.98,41.97,22.0,37.58,0.95,38.94,35.91,3.03,-0.11,2.01,37.6,37.42,22.0,30.2,0.6,31.22,29.02,2.2,-0.18,2.52,30.21,30.08,22.0,25.01,0.55,25.71,23.78,1.93,-0.83,2.67,25.02,25.16,22.0
BH-B-G070003 = 23.09,NaN,23.09,23.09,0.0,NaN,NaN,23.09,23.09,1.0,24.47,NaN,24.47,24.47,0.0,NaN,NaN,24.47,24.47,1.0,31.22,NaN,31.22,31.22,0.0,NaN,NaN,31.22,31.22,1.0,31.08,NaN,31.08,31.08,0.0,NaN,NaN,31.08,31.08,1.0,37.56,NaN,37.56,37.56,0.0,NaN,NaN,37.56,37.56,1.0,40.45,NaN,40.45,40.45,0.0,NaN,NaN,40.45,40.45,1.0,41.0,NaN,41.0,41.0,0.0,NaN,NaN,41.0,41.0,1.0,41.42,NaN,41.42,41.42,0.0,NaN,NaN,41.42,41.42,1.0,41.14,NaN,41.14,41.14,0.0,NaN,NaN,41.14,41.14,1.0,37.28,NaN,37.28,37.28,0.0,NaN,NaN,37.28,37.28,1.0,29.98,NaN,29.98,29.98,0.0,NaN,NaN,29.98,29.98,1.0,24.74,NaN,24.74,24.74,0.0,NaN,NaN,24.74,24.74,1.0
BH-B-G070004 = 21.76,NaN,21.76,21.76,0.0,NaN,NaN,21.76,21.76,1.0,24.06,NaN,24.06,24.06,0.0,NaN,NaN,24.06,24.06,1.0,29.93,NaN,29.93,29.93,0.0,NaN,NaN,29.93,29.93,1.0,30.3,NaN,30.3,30.3,0.0,NaN,NaN,30.3,30.3,1.0,36.64,NaN,36.64,36.64,0.0,NaN,NaN,36.64,36.64,1.0,39.49,NaN,39.49,39.49,0.0,NaN,NaN,39.49,39.49,1.0,40.31,NaN,40.31,40.31,0.0,NaN,NaN,40.31,40.31,1.0,41.23,NaN,41.23,41.23,0.0,NaN,NaN,41.23,41.23,1.0,40.5,NaN,40.5,40.5,0.0,NaN,NaN,40.5,40.5,1.0,36.46,NaN,36.46,36.46,0.0,NaN,NaN,36.46,36.46,1.0,29.38,NaN,29.38,29.38,0.0,NaN,NaN,29.38,29.38,1.0,23.87,NaN,23.87,23.87,0.0,NaN,NaN,23.87,23.87,1.0
BH-B-G070005 = 21.85,0.39,22.13,21.57,0.55,0.0,1.0,21.85,21.85,2.0,23.85,0.49,24.19,23.5,0.69,0.0,1.0,23.85,23.85,2.0,29.84,0.39,30.12,29.57,0.55,0.0,1.0,29.84,29.84,2.0,30.26,0.19,30.39,30.12,0.28,-0.0,1.0,30.26,30.26,2.0,35.35,NaN,35.35,35.35,0.0,NaN,-3.288342585064172E14,35.35,35.35,2.0,38.39,0.39,38.66,38.11,0.55,0.0,1.0,38.39,38.39,2.0,38.52,0.19,38.66,38.39,0.28,-0.0,1.0,38.52,38.52,2.0,39.28,0.1,39.35,39.21,0.14,0.0,0.99,39.28,39.28,2.0,39.07,0.19,39.21,38.94,0.28,0.0,1.0,39.08,39.07,2.0,35.63,0.0,35.63,35.63,0.0,-1.34217728E8,1.8014398509481984E16,35.63,35.63,2.0,28.88,0.19,29.02,28.74,0.28,0.0,1.0,28.88,28.88,2.0,24.19,0.19,24.33,24.06,0.28,-0.0,1.0,24.19,24.19,2.0
