# NER_2_area.properties 
# This file contains area values for NIGER
# /*********************************************************************************************
# * 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 = NER

# 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/

# Level 1 (admin 1 = e.g., state)
# Level 2 (admin 2 = e.g., county)

# Generated key details :  Level 1 ( NE-9 = AGADEZ ). Level 2 ( 010002 = BILMA ). 
NE-9-G010002 = 278395.488291
# Generated key details :  Level 1 ( NE-9 = AGADEZ ). Level 2 ( 010001 = ARLIT ). 
NE-9-G010001 = 203165.148047
# Generated key details :  Level 1 ( NE-9 = AGADEZ ). Level 2 ( 010003 = TCHIROZERINE ). 
NE-9-G010003 = 145519.352013
# Generated key details :  Level 1 ( NE-5 = TAHOUA ). Level 2 ( 060007 = TCHIN-TABARADEN ). 
NE-5-G060007 = 73881.678682
# Generated key details :  Level 1 ( NE-2 = DIFFA ). Level 2 ( 020003 = NGUIGMI ). 
NE-2-G020003 = 125398.954960
# Generated key details :  Level 1 ( NE-7 = ZINDER ). Level 2 ( 080001 = GOURE ). 
NE-7-G080001 = 89887.839746
# Generated key details :  Level 1 ( NE-7 = ZINDER ). Level 2 ( 080005 = TANOUT ). 
NE-7-G080005 = 33522.676522
# Generated key details :  Level 1 ( NE-6 = TILLABERY ). Level 2 ( 070001 = FELINGUE ). 
NE-6-G070001 = 24316.166922
# Generated key details :  Level 1 ( NE-4 = MARADI ). Level 2 ( 040002 = DAKORO ). 
NE-4-G040002 = 16583.748210
# Generated key details :  Level 1 ( NE-6 = TILLABERY ). Level 2 ( 070003 = OUALLAM ). 
NE-6-G070003 = 21070.073629
# Generated key details :  Level 1 ( NE-6 = TILLABERY ). Level 2 ( 070006 = TILLABERI ). 
NE-6-G070006 = 8296.137735
# Generated key details :  Level 1 ( NE-5 = TAHOUA ). Level 2 ( 060006 = TAHOUA ). 
NE-5-G060006 = 9131.778774
# Generated key details :  Level 1 ( NE-5 = TAHOUA ). Level 2 ( 060004 = KEITA ). 
NE-5-G060004 = 4761.934915
# Generated key details :  Level 1 ( NE-6 = TILLABERY ). Level 2 ( 070005 = TERA ). 
NE-6-G070005 = 15365.309116
# Generated key details :  Level 1 ( NE-5 = TAHOUA ). Level 2 ( 060002 = BOUZA ). 
NE-5-G060002 = 3566.626926
# Generated key details :  Level 1 ( NE-5 = TAHOUA ). Level 2 ( 060003 = ILLELA ). 
NE-5-G060003 = 7372.553833
# Generated key details :  Level 1 ( NE-3 = DOSSO ). Level 2 ( 030003 = DOUTCHI ). 
NE-3-G030003 = 11001.320739
# Generated key details :  Level 1 ( NE-4 = MARADI ). Level 2 ( 040005 = MAYAHI ). 
NE-4-G040005 = 6694.941393
# Generated key details :  Level 1 ( NE-7 = ZINDER ). Level 2 ( 080004 = MIRRIAH ). 
NE-7-G080004 = 12949.396071
# Generated key details :  Level 1 ( NE-4 = MARADI ). Level 2 ( 040006 = TESSAOUA ). 
NE-4-G040006 = 5464.708907
# Generated key details :  Level 1 ( NE-2 = DIFFA ). Level 2 ( 020002 = MAINE-SORDA ). 
NE-2-G020002 = 14642.006038
# Generated key details :  Level 1 ( NE-5 = TAHOUA ). Level 2 ( 060005 = MADAOUA ). 
NE-5-G060005 = 4293.442361
# Generated key details :  Level 1 ( NE-5 = TAHOUA ). Level 2 ( 060001 = BIRNI NKONNI ). 
NE-5-G060001 = 3388.936828
# Generated key details :  Level 1 ( NE-2 = DIFFA ). Level 2 ( 020001 = DIFFA ). 
NE-2-G020001 = 6976.039000
# Generated key details :  Level 1 ( NE-3 = DOSSO ). Level 2 ( 030005 = LOGA ). 
NE-3-G030005 = 2918.997932
# Generated key details :  Level 1 ( NE-6 = TILLABERY ). Level 2 ( 070002 = KOLLO ). 
NE-6-G070002 = 8391.891197
# Generated key details :  Level 1 ( NE-4 = MARADI ). Level 2 ( 040003 = GUIDAN-ROUMJI ). 
NE-4-G040003 = 4313.760041
# Generated key details :  Level 1 ( NE-4 = MARADI ). Level 2 ( 040001 = AGUIE ). 
NE-4-G040001 = 2606.219787
# Generated key details :  Level 1 ( NE-4 = MARADI ). Level 2 ( 040004 = MADAROUNFA ). 
NE-4-G040004 = 3555.597690
# Generated key details :  Level 1 ( NE-7 = ZINDER ). Level 2 ( 080003 = MATAMEYE ). 
NE-7-G080003 = 2146.118860
# Generated key details :  Level 1 ( NE-6 = TILLABERY ). Level 2 ( 070004 = SAY ). 
NE-6-G070004 = 14081.397705
# Generated key details :  Level 1 ( NE-3 = DOSSO ). Level 2 ( 030001 = BOBOYE ). 
NE-3-G030001 = 4528.756310
# Generated key details :  Level 1 ( NE-7 = ZINDER ). Level 2 ( 080002 = MAGARIA ). 
NE-7-G080002 = 7663.920965
# Generated key details :  Level 1 ( NE-3 = DOSSO ). Level 2 ( 030002 = DOSSO CANTON ). 
NE-3-G030002 = 9252.338599
# Generated key details :  Level 1 ( NE-3 = DOSSO ). Level 2 ( 030004 = GAYA ). 
NE-3-G030004 = 4038.573948
