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

# The title
TITLE = AND vegetation 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 = AND
ADMIN_LEVEL = 0
UNITS = UNITS
DATA_TYPE = vegetation

# 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: Average
# 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: 0.9 
# Minimum: -0.1

AND = 0.3,NaN,0.6,0.03,0.57,NaN,NaN,NaN,NaN,NaN,0.26,NaN,0.56,0.03,0.53,NaN,NaN,NaN,NaN,NaN,0.29,NaN,0.6,0.04,0.56,NaN,NaN,NaN,NaN,NaN,0.35,NaN,0.62,0.07,0.55,NaN,NaN,NaN,NaN,NaN,0.51,NaN,0.69,0.19,0.5,NaN,NaN,NaN,NaN,NaN,0.61,NaN,0.71,0.5,0.21,NaN,NaN,NaN,NaN,NaN,0.63,NaN,0.7,0.54,0.16,NaN,NaN,NaN,NaN,NaN,0.61,NaN,0.72,0.52,0.2,NaN,NaN,NaN,NaN,NaN,0.58,NaN,0.69,0.48,0.21,NaN,NaN,NaN,NaN,NaN,0.55,NaN,0.74,0.3,0.44,NaN,NaN,NaN,NaN,NaN,0.44,NaN,0.64,0.07,0.57,NaN,NaN,NaN,NaN,NaN,0.32,NaN,0.61,0.03,0.58,NaN,NaN,NaN,NaN,NaN
