# GIN.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 = GIN vegetation data for 2001 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=2001

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

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

GN-KA = 0.4,0.05,0.57,0.26,0.31,0.38,2.51,0.41,0.4,3326.0,0.37,0.05,0.53,0.24,0.29,0.27,2.19,0.38,0.37,3326.0,0.41,0.08,0.6,0.25,0.36,0.22,1.77,0.42,0.4,3326.0,0.48,0.11,0.73,0.27,0.46,0.21,1.73,0.5,0.46,3326.0,0.58,0.12,0.81,0.34,0.47,-0.06,1.74,0.6,0.57,3326.0,0.62,0.08,0.81,0.41,0.4,0.17,2.4,0.63,0.62,3326.0,0.59,0.08,0.79,0.39,0.4,0.36,2.46,0.6,0.58,3326.0,0.69,0.05,0.82,0.48,0.34,-0.54,3.32,0.7,0.7,3326.0,0.74,0.04,0.83,0.53,0.3,-0.77,3.75,0.74,0.74,3326.0,0.7,0.07,0.83,0.44,0.39,-0.55,2.55,0.71,0.71,3326.0,0.64,0.08,0.8,0.38,0.42,-0.45,2.25,0.65,0.65,3326.0,0.51,0.09,0.72,0.29,0.43,0.14,1.8,0.52,0.5,3326.0
GN-KD = 0.57,0.08,0.71,0.02,0.7,-2.21,14.84,0.57,0.58,1479.0,0.51,0.07,0.68,0.03,0.64,-1.38,8.43,0.52,0.52,1479.0,0.51,0.07,0.68,0.03,0.65,-1.87,11.87,0.52,0.52,1480.0,0.5,0.07,0.65,0.03,0.62,-1.89,10.99,0.51,0.51,1479.0,0.59,0.08,0.76,0.13,0.63,-1.74,8.61,0.6,0.61,1479.0,0.6,0.1,0.77,0.04,0.73,-1.96,8.26,0.61,0.63,1479.0,0.56,0.1,0.8,0.07,0.73,-1.08,5.32,0.56,0.58,1480.0,0.64,0.09,0.79,0.1,0.69,-1.82,7.74,0.64,0.66,1479.0,0.75,0.08,0.84,0.18,0.66,-3.21,17.21,0.76,0.78,1479.0,0.76,0.08,0.85,0.18,0.67,-3.28,17.84,0.77,0.79,1479.0,0.71,0.08,0.82,0.11,0.71,-3.52,22.87,0.71,0.73,1479.0,0.64,0.08,0.79,-0.02,0.8,-3.24,24.1,0.65,0.65,1480.0
GN-LA = 0.47,0.06,0.68,0.33,0.35,0.27,2.37,0.47,0.47,1819.0,0.4,0.07,0.64,0.27,0.37,0.41,2.23,0.41,0.39,1819.0,0.41,0.08,0.65,0.27,0.38,0.61,2.54,0.42,0.39,1819.0,0.44,0.08,0.69,0.28,0.41,0.49,2.73,0.45,0.43,1819.0,0.53,0.09,0.78,0.33,0.45,0.47,2.53,0.54,0.51,1819.0,0.63,0.05,0.76,0.43,0.33,-0.27,3.21,0.63,0.63,1819.0,0.68,0.08,0.81,0.38,0.43,-1.11,4.24,0.69,0.7,1819.0,0.73,0.05,0.83,0.59,0.24,-0.44,2.55,0.73,0.73,1819.0,0.76,0.04,0.84,0.59,0.26,-0.69,3.99,0.76,0.76,1819.0,0.75,0.04,0.83,0.55,0.28,-0.43,3.0,0.75,0.75,1819.0,0.69,0.05,0.8,0.53,0.26,-0.16,2.51,0.69,0.69,1819.0,0.56,0.07,0.74,0.4,0.34,0.17,2.22,0.56,0.55,1819.0
GN-NZ = 0.57,0.14,0.8,0.31,0.49,-0.08,1.58,0.59,0.58,1500.0,0.53,0.13,0.82,0.3,0.52,0.23,1.79,0.55,0.52,1500.0,0.57,0.11,0.82,0.34,0.49,-0.03,2.14,0.58,0.57,1500.0,0.71,0.07,0.85,0.44,0.42,-1.03,3.92,0.71,0.72,1500.0,0.73,0.05,0.83,0.55,0.28,-0.47,2.75,0.73,0.73,1500.0,0.66,0.06,0.8,0.46,0.34,-0.51,3.19,0.66,0.66,1500.0,0.48,0.12,0.76,0.19,0.57,0.19,2.39,0.5,0.47,1500.0,0.6,0.07,0.76,0.34,0.43,-0.62,3.03,0.61,0.61,1500.0,0.72,0.06,0.86,0.5,0.35,-0.12,2.76,0.73,0.72,1500.0,0.75,0.05,0.84,0.58,0.26,-0.84,3.59,0.76,0.76,1500.0,0.7,0.06,0.83,0.49,0.33,-0.44,2.91,0.7,0.71,1500.0,0.66,0.08,0.8,0.44,0.36,-0.63,2.58,0.66,0.67,1500.0
