# AND.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 = AND nighttemp data for combined 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=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 = AND
ADMIN_LEVEL = 1
UNITS = C
DATA_TYPE = nighttemp

# 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

AD-01 = -7.67,NaN,-1.3,-14.8,13.5,NaN,NaN,NaN,NaN,NaN,-7.61,NaN,-0.75,-14.53,13.78,NaN,NaN,NaN,NaN,NaN,-5.84,NaN,0.08,-10.67,10.75,NaN,NaN,NaN,NaN,NaN,-4.16,NaN,1.18,-8.88,10.06,NaN,NaN,NaN,NaN,NaN,0.68,NaN,7.66,-5.43,13.09,NaN,NaN,NaN,NaN,NaN,6.73,NaN,13.17,1.59,11.58,NaN,NaN,NaN,NaN,NaN,9.89,NaN,15.65,4.63,11.02,NaN,NaN,NaN,NaN,NaN,8.74,NaN,16.61,1.73,14.88,NaN,NaN,NaN,NaN,NaN,4.54,NaN,11.1,0.77,10.33,NaN,NaN,NaN,NaN,NaN,0.95,NaN,7.11,-3.92,11.03,NaN,NaN,NaN,NaN,NaN,-4.13,NaN,2.01,-10.39,12.4,NaN,NaN,NaN,NaN,NaN,-7.49,NaN,-3.23,-11.91,8.68,NaN,NaN,NaN,NaN,NaN
