################################################################################################################################################
#
# ********** CONFIGURATION FILE FOR DOWN-SAMPLER **********
#
# TO CHANGE DEFAULT CONFIGURATION VALUES, MODIFY ORG.ECLIPSE.STEM.UTILITY.GENERATORS\GenConstants.java
#
# CONFIGURATION VARIABLES SET IN THIS FILE OVERRIDE THE DEFAULTS
#
# The WORKSPACE VARIABLE IS REQUIRED, ALL OTHER VARIABLES ARE OPTIONAL (i.e. WORKSPACE=C:\stemII\)
WORKSPACE=C:\stemII\
#
# The THRESHOLD variable specifies an angle in degrees for which we want to reduce. If not provided it defaults to 5 degrees.
THRESHOLD=5
#
# The number of reduction ITERATIONS. If not provided it defaults to 5 iterations.
ITERATIONS=5
#
# ISO3166-1 file (i.e. ISO3166_1=C:\stemII\org.eclipse.stem.utility\parameters\ISO3166-1\ISO3166_1_list.txt)
#IS03166_1=
#
# ISO3166-2 file (i.e. ISO3166_2=C:\stemII\org.eclipse.stem.utility\parameters\ISO3166-2\ISO3166_2_list.txt)
#ISO3166_2=
#
# ISO fix  file (i.e. ISO_FIX=C:\stemII\org.eclipse.stem.utility\parameters\ISOFIX\ISO_FIX.txt)
#ISO_FIX=
#
# File with target countries we want to process (i.e. TARGET_LIST=C:\stemII\org.eclipse.stem.utility\parameters\targets\groupedDataFiles.txt)
TARGET_LIST = C:\stemII\org.eclipse.stem.utility\parameters\targets\CountriesLight.txt
#
# File with target countries we want to process (i.e. TARGET_LIST=C:\stemII\org.eclipse.stem.utility\parameters\targets\groupedDataFiles.txt)
REDUCE_LIST = C:\stemII\org.eclipse.stem.utility\parameters\targets\reduceList.txt
#
# Path to folder with lexicographically sorted files (i.e. LEX_DIR=C:\stemII\org.eclipse.stem.utility\parameters\sort\)
#LEX_DIR=
#
# Output directory for new files (i.e. PROPERTIES_OUTPUT=C:\stemII\org.eclipse.stem.internal.data\resources\data\country\)
MAP_OUTPUT= C:\tempout\
#
# ********** END OF CONFIGURATION FILE FOR DOWN-SAMPLER **********
#
################################################################################################################################################

