# SEN_2_area.properties 
# This file contains area values for SENEGAL
# /*********************************************************************************************
# * Copyright (c) 2006 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
# ***********************************************************************************************/

# /**********************************************************************************************
# * Key Format: 
# * 
# * 	 For level 1 data, the key is the ISO3166-2 code. An ISO3166-2 code is composed as follows: 
# * a two letter country code followed by up to three alphanumeric characters for the level 1 administration.
# *
# * 	 For level 2 data, the key is the ISO3166-2 code followed by six digits. The leftmost two digits indicate
# * the level 1 container of a level 2 administration (i.e. California is a level 1 container for Orange County
# * which is a level 2 administration).  The two digits were taken from a lexicographic sorting of all the
# * level 1 administrations within a country. Similarly, the four leftmost digits indicate a level 2 administration.
# * Again, these four digits are an index into the lexicographic sorting of all level 2 administrations within 
# * a level 1 administration. 
# ************************************************************************************************/

# This is the name of the class that will interpret the rest of the file's contents
RECORD_CLASSNAME = org.eclipse.stem.internal.data.geography.specifications.CountryAreaLabelPropertyFileSpecification

# The ISO-3166-1 alpha3 code for the country
ISOKEY = SEN

# The administration level of the area data
ADMIN_LEVEL = 2

# This is the date range for which the area values in this file are valid 
# See http://purl.org/dc/terms/1.1/valid
VALID = start=1900-01-01;

# This is the source of the data
SOURCE = https://www.cia.gov/library/publications/the-world-factbook/
# SOURCE = https://www.cia.gov/library/publications/the-world-factbook/


# Generated using GeoPolygon Raster Scan (PolygonAreaFinder)
# August 20, 2009.

SN-BAK-G010001 = 8937.7
SN-BAK-G010002 = 1348.4
SN-BAK-G010003 = 6967.8
SN-BAK-G010004 = 5155.6
SN-BBY-G020001 = 405.7
SN-BBY-G020002 = 448.0
SN-BBY-G020003 = 503.7
SN-BGO-G030001 = 1881.3
SN-BGO-G030002 = 1437.2
SN-BGO-G030003 = 884.7
SN-BGO-G030004 = 1055.1
SN-DAG-G040001 = 2352.7
SN-DAG-G040002 = 852.6
SN-DAG-G040003 = 3102.8
SN-DB-G060001 = 611.6
SN-DB-G060002 = 653.3
SN-DK-G050001 = 86.1
SN-FDI-G080001 = 927.3
SN-FDI-G080002 = 593.3
SN-FDI-G080003 = 1510.7
SN-FK-G070001 = 562.2
SN-FK-G070002 = 1134.1
SN-FK-G070003 = 378.2
SN-FK-G070004 = 605.0
SN-GS-G090001 = 1600.1
SN-GS-G090002 = 712.4
SN-GS-G090003 = 637.2
SN-KAF-G100001 = 1408.1
SN-KAF-G100002 = 4392.0
SN-KAF-G100003 = 4233.6
SN-KAF-G100004 = 1180.0
SN-KD-G140001 = 2502.9
SN-KD-G140002 = 1113.8
SN-KD-G140003 = 4743.0
SN-KEM-G120001 = 1620.1
SN-KEM-G120002 = 1463.5
SN-KEM-G120003 = 853.7
SN-KEU-G130001 = 5715.1
SN-KEU-G130002 = 2401.2
SN-KEU-G130003 = 2012.5
SN-KEU-G130004 = 6770.7
SN-KL-G110001 = 517.1
SN-KL-G110002 = 620.2
SN-KL-G110003 = 743.4
SN-LG-G160001 = 2868.3
SN-LG-G160002 = 858.3
SN-LG-G160003 = 816.0
SN-LG-G160004 = 1194.4
SN-LGE-G150001 = 8310.4
SN-LGE-G150002 = 3068.8
SN-LGE-G150003 = 4360.0
SN-LGE-G150004 = 4268.5
SN-MBK-G180001 = 696.1
SN-MBK-G180002 = 986.9
SN-MBU-G190001 = 491.0
SN-MBU-G190002 = 686.8
SN-MBU-G190003 = 832.5
SN-MT-G170001 = 6039.2
SN-MT-G170002 = 14612.3
SN-MT-G170003 = 2559.4
SN-MT-G170004 = 1993.3
SN-NDR-G200001 = 591.0
SN-NDR-G200002 = 977.5
SN-NDR-G200003 = 698.9
SN-OUY-G210001 = 460.1
SN-OUY-G210002 = 410.6
SN-PDR-G230001 = 3231.2
SN-PDR-G230002 = 4073.8
SN-PDR-G230003 = 2391.7
SN-PDR-G230004 = 3239.4
SN-PKE-G220001 = 89.8
SN-RUQ-G240001 = 404.2
SN-SDH-G260001 = 2828.8
SN-SDH-G260002 = 764.0
SN-SDH-G260003 = 1970.8
SN-SDH-G260004 = 696.1
SN-SDH-G260005 = 1055.8
SN-TC-G270001 = 6098.7
SN-TC-G270002 = 3113.3
SN-TC-G270003 = 2565.8
SN-TC-G270004 = 8380.1
SN-TH-G280001 = 507.9
SN-TH-G280002 = 498.8
SN-TH-G280003 = 521.1
SN-TVO-G290001 = 1094.3
SN-TVO-G290002 = 649.5
SN-TVO-G290003 = 717.9
SN-TVO-G290004 = 762.9
SN-VGR-G300001 = 2750.0
SN-VGR-G300002 = 1442.5
SN-VGR-G300003 = 1166.8
SN-ZG-G310001 = 757.6
SN-ZG-G310002 = 408.4

