################################################################################################################################################
#
# ********** CONFIGURATION FILE FOR MULTI PASS 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\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. MAP_OUTPUT=C:\stemII\org.eclipse.stem.geography\resources\data\geo\country\)
MAP_OUTPUT= C:\tempout\
#
# ********** END OF CONFIGURATION FILE FOR MULTI PASS DOWN-SAMPLER **********
#
################################################################################################################################################
