# BRN.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 = BRN vegetation data for 2007 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=2007

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

# ISO3166-1 alpha3 code for the country
ISOKEY = BRN
ADMIN_LEVEL = 1
UNITS = UNITS
DATA_TYPE = vegetation

# 120 calculations comma-separated, 10 consecutive calculations for each month (from January to December)
# 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

BN-TE = 0.75,0.05,0.83,0.61,0.22,-1.08,3.56,0.75,0.77,43.0,0.78,0.04,0.86,0.58,0.28,-2.74,13.5,0.78,0.79,43.0,0.83,0.04,0.87,0.64,0.23,-3.58,17.65,0.84,0.84,43.0,0.84,0.05,0.88,0.6,0.28,-2.9,12.69,0.84,0.86,43.0,0.85,0.05,0.88,0.61,0.26,-3.72,18.15,0.85,0.86,43.0,0.84,0.04,0.87,0.62,0.25,-3.73,18.25,0.84,0.85,43.0,0.86,0.04,0.89,0.66,0.23,-3.64,17.79,0.86,0.87,43.0,0.81,0.05,0.86,0.6,0.26,-2.66,11.5,0.82,0.83,43.0,0.82,0.05,0.87,0.58,0.3,-3.24,15.4,0.82,0.83,43.0,0.81,0.05,0.85,0.62,0.24,-1.94,6.96,0.81,0.83,43.0,0.77,0.04,0.84,0.6,0.24,-1.8,7.19,0.77,0.79,43.0,0.79,0.04,0.85,0.63,0.22,-1.71,7.95,0.79,0.8,43.0
BN-TU = 0.71,0.1,0.88,0.32,0.56,-0.7,3.94,0.72,0.71,149.0,0.7,0.07,0.8,0.34,0.46,-1.61,8.31,0.7,0.7,149.0,0.78,0.07,0.84,0.35,0.5,-3.13,17.18,0.79,0.81,149.0,0.82,0.07,0.88,0.4,0.48,-2.95,14.32,0.82,0.84,149.0,0.82,0.07,0.88,0.37,0.51,-3.3,17.19,0.83,0.85,149.0,0.81,0.07,0.86,0.32,0.54,-3.74,20.84,0.82,0.84,149.0,0.83,0.08,0.89,0.33,0.56,-3.49,18.9,0.84,0.86,149.0,0.76,0.08,0.86,0.36,0.5,-1.69,8.38,0.76,0.76,149.0,0.77,0.09,0.87,0.29,0.58,-2.34,10.21,0.78,0.81,149.0,0.78,0.07,0.86,0.34,0.52,-2.83,13.99,0.79,0.81,149.0,0.66,0.07,0.82,0.3,0.52,-1.45,9.58,0.66,0.67,149.0,0.67,0.07,0.79,0.36,0.44,-0.87,5.62,0.68,0.67,149.0
