# NPL.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 nighttemp data file's contents
RECORD_CLASSNAME = org.eclipse.stem.internal.data.geography.specifications.EarthPropertyFileSpecification

# The title
TITLE = NPL nighttemp data for 2008 at admin level 1

# 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 = NPL
ADMIN_LEVEL = 1
UNITS = C
DATA_TYPE = nighttemp

# 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

NP-C = 5.82,6.56,12.48,-18.39,30.87,-1.49,4.69,8.77,8.69,991.0,7.58,6.37,13.58,-16.18,29.76,-1.71,5.5,9.9,10.28,991.0,11.36,7.18,19.09,-13.98,33.07,-1.36,4.21,13.43,14.41,991.0,14.66,8.64,24.33,-12.32,36.65,-1.13,3.29,17.01,18.68,991.0,14.66,8.77,23.09,-8.19,31.28,-0.97,2.55,17.08,18.54,991.0,12.65,9.99,24.06,-6.81,30.87,-0.62,1.82,16.11,17.44,991.0,12.26,12.39,26.81,-10.12,36.93,-0.35,1.5,17.43,16.89,951.0,10.64,11.76,25.98,-11.5,37.48,-0.39,1.51,15.86,15.89,964.0,13.96,9.07,25.85,-5.98,31.83,-0.71,2.11,16.65,17.03,991.0,15.52,6.87,23.23,-9.84,33.07,-1.37,4.21,16.98,17.85,991.0,12.31,5.99,18.82,-10.39,29.21,-1.37,4.38,13.69,14.82,991.0,9.85,5.83,15.51,-12.05,27.56,-1.39,4.38,11.45,12.34,991.0
NP-E = 3.85,8.58,13.03,-21.14,34.17,-1.17,3.26,9.4,7.8,1021.0,4.74,8.47,13.58,-17.01,30.59,-1.06,2.85,9.7,8.35,1021.0,8.68,9.79,19.92,-17.56,37.48,-0.88,2.59,13.09,12.07,1021.0,11.7,10.52,24.33,-13.84,38.17,-0.75,2.27,15.73,15.65,1021.0,10.95,10.4,22.54,-12.6,35.14,-0.61,1.84,15.1,15.51,1021.0,9.28,10.72,24.61,-10.94,35.55,-0.31,1.53,14.18,11.38,1021.0,9.28,12.56,27.09,-11.5,38.58,-0.12,1.44,15.61,10.83,1020.0,9.0,12.2,26.26,-11.5,37.76,-0.13,1.5,15.15,11.1,1020.0,11.02,10.22,24.88,-9.84,34.72,-0.29,1.6,15.03,12.96,1021.0,12.27,9.35,23.64,-14.11,37.76,-0.89,2.67,15.43,15.1,1021.0,9.81,8.18,18.54,-16.46,35.0,-1.1,3.28,12.77,12.48,1021.0,7.53,8.1,16.06,-17.01,33.07,-0.95,2.85,11.06,10.55,1021.0
NP-FAW = 0.08,8.84,11.65,-22.24,33.9,-0.93,2.92,8.83,2.01,731.0,2.98,8.6,12.76,-20.87,33.62,-1.27,3.61,9.09,5.66,731.0,8.19,9.1,19.09,-15.91,35.0,-1.01,3.07,12.24,10.83,731.0,10.78,9.52,23.23,-12.6,35.83,-0.82,2.58,14.38,13.93,731.0,10.76,10.47,23.78,-10.12,33.9,-0.48,1.75,15.01,14.13,731.0,10.49,9.49,25.43,-5.71,31.14,-0.16,1.6,14.14,11.79,730.0,6.52,8.66,25.98,-12.05,38.03,0.28,2.14,10.83,6.14,729.0,8.42,10.87,25.16,-7.36,32.52,0.09,1.47,13.74,7.8,731.0,12.98,8.96,24.06,-7.64,31.69,-0.78,2.51,15.77,15.37,731.0,11.49,8.65,21.85,-11.77,33.62,-0.84,2.82,14.38,13.86,731.0,8.94,7.76,17.99,-12.87,30.87,-1.11,3.47,11.83,10.83,731.0,6.08,7.37,14.41,-15.91,30.31,-1.31,3.85,9.55,8.21,731.0
NP-MID = -4.75,11.39,12.48,-25.0,37.48,-0.1,1.54,12.34,-4.85,1580.0,-2.54,11.3,13.58,-23.9,37.48,-0.23,1.56,11.57,-1.16,1580.0,2.27,11.88,19.65,-19.76,39.41,-0.14,1.55,12.09,2.42,1580.0,5.84,12.16,25.43,-17.01,42.44,-0.08,1.55,13.49,5.38,1580.0,6.33,11.75,24.61,-12.32,36.93,0.16,1.43,13.34,3.39,1580.0,5.62,10.07,25.43,-8.19,33.62,0.44,1.62,11.52,2.01,1580.0,4.23,10.37,25.71,-8.46,34.17,0.65,1.77,11.2,-0.89,1580.0,3.26,11.24,25.43,-10.67,36.1,0.77,1.87,11.7,-3.23,1579.0,7.96,10.1,23.78,-10.39,34.17,0.03,1.55,12.86,7.11,1580.0,7.29,10.32,21.71,-17.28,39.0,-0.16,1.68,12.63,6.97,1580.0,3.4,10.42,17.72,-20.04,37.76,-0.28,1.71,10.96,5.0,1580.0,1.05,10.15,14.96,-21.69,36.65,-0.32,1.68,10.2,3.11,1580.0
NP-W = -0.15,10.29,11.93,-21.83,33.76,-0.62,1.89,10.28,3.42,1078.0,1.78,10.32,14.41,-19.76,34.17,-0.63,1.87,10.47,6.21,1078.0,5.48,10.76,19.51,-17.83,37.34,-0.5,1.84,12.07,8.0,1078.0,8.49,11.59,25.16,-15.08,40.24,-0.39,1.73,14.36,9.93,1078.0,8.27,11.17,24.06,-12.32,36.38,-0.12,1.5,13.89,8.76,1078.0,7.9,10.81,26.26,-8.46,34.72,0.01,1.31,13.38,7.04,1078.0,6.59,12.62,26.54,-10.39,36.93,0.18,1.29,14.23,0.63,1066.0,6.03,12.23,25.43,-10.12,35.55,0.19,1.28,13.64,1.39,1073.0,9.22,10.34,24.88,-9.29,34.17,-0.12,1.48,13.84,9.45,1078.0,10.08,10.57,22.95,-13.15,36.1,-0.52,1.84,14.6,13.58,1078.0,6.47,9.67,17.99,-16.73,34.72,-0.67,2.07,11.63,10.21,1078.0,4.22,9.37,15.51,-18.66,34.17,-0.68,2.06,10.27,7.97,1078.0
