# MWI_2_node.properties 
# /*********************************************************************************************
# * 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.CountryNodePropertyFileSpecification

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

# The administration level of the node 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 = http://www.iso.org/iso/home.htm
# SOURCE = http://www.iso.org/iso/home.htm

# The file that contains the latitude/longitude data for the node 
SPATIAL_URI = platform:/plugin/org.eclipse.stem.data.geography/resources/data/geo/country/MWI/MWI_2_MAP.xml

# Generated key details :  Level 1 ( MW-N = NORTHERN [NORTHERN1] ). Level 2 ( 210001 = CHITIPA ). 
MW-N-G210001 = CHITIPA
# Generated key details :  Level 1 ( MW-N = NORTHERN [NORTHERN1] ). Level 2 ( 210002 = KARONGA ). 
MW-N-G210002 = KARONGA
# Generated key details :  Level 1 ( MW-N = NORTHERN [NORTHERN1] ). Level 2 ( 210005 = RUMPHI ). 
MW-N-G210005 = RUMPHI
# Generated key details :  Level 1 ( MW-N = NORTHERN [NORTHERN1] ). Level 2 ( 210004 = NKATA-BAY ). 
MW-N-G210004 = NKATA-BAY
# Generated key details :  Level 1 ( MW-N = NORTHERN [NORTHERN1] ). Level 2 ( 210003 = MZIMBA ). 
MW-N-G210003 = MZIMBA
# Generated key details :  Level 1 ( MW-C = CENTRAL [CENTRAL4] ). Level 2 ( 030003 = KASUNGU ). 
MW-C-G030003 = KASUNGU
# Generated key details :  Level 1 ( MW-C = CENTRAL [CENTRAL4] ). Level 2 ( 030006 = NKHOTAKOTA ). 
MW-C-G030006 = NKHOTAKOTA
# Generated key details :  Level 1 ( MW-C = CENTRAL [CENTRAL4] ). Level 2 ( 030008 = NTCHISI ). 
MW-C-G030008 = NTCHISI
# Generated key details :  Level 1 ( MW-C = CENTRAL [CENTRAL4] ). Level 2 ( 030002 = DOWA ). 
MW-C-G030002 = DOWA
# Generated key details :  Level 1 ( MW-C = CENTRAL [CENTRAL4] ). Level 2 ( 030005 = MCHINGI ). 
MW-C-G030005 = MCHINGI
# Generated key details :  Level 1 ( MW-C = CENTRAL [CENTRAL4] ). Level 2 ( 030009 = SALIMA ). 
MW-C-G030009 = SALIMA
# Generated key details :  Level 1 ( MW-S = SOUTHERN [SOUTHERN2] ). Level 2 ( 280005 = MANGOCHI ). 
MW-S-G280005 = MANGOCHI
# Generated key details :  Level 1 ( MW-C = CENTRAL [CENTRAL4] ). Level 2 ( 030001 = DEDZA ). 
MW-C-G030001 = DEDZA
# Generated key details :  Level 1 ( MW-C = CENTRAL [CENTRAL4] ). Level 2 ( 030004 = LILONGWE ). 
MW-C-G030004 = LILONGWE
# Generated key details :  Level 1 ( MW-C = CENTRAL [CENTRAL4] ). Level 2 ( 030007 = NTCHEU ). 
MW-C-G030007 = NTCHEU
# Generated key details :  Level 1 ( MW-S = SOUTHERN [SOUTHERN2] ). Level 2 ( 280004 = MACHINGA ). 
MW-S-G280004 = MACHINGA
# Generated key details :  Level 1 ( MW-S = SOUTHERN [SOUTHERN2] ). Level 2 ( 280010 = ZOMBA ). 
MW-S-G280010 = ZOMBA
# Generated key details :  Level 1 ( MW-S = SOUTHERN [SOUTHERN2] ). Level 2 ( 280007 = MWANZA ). 
MW-S-G280007 = MWANZA
# Generated key details :  Level 1 ( MW-S = SOUTHERN [SOUTHERN2] ). Level 2 ( 280001 = BLANTYRE ). 
MW-S-G280001 = BLANTYRE
# Generated key details :  Level 1 ( MW-S = SOUTHERN [SOUTHERN2] ). Level 2 ( 280006 = MULANJE ). 
MW-S-G280006 = MULANJE
# Generated key details :  Level 1 ( MW-S = SOUTHERN [SOUTHERN2] ). Level 2 ( 280003 = CHIRADZULU ). 
MW-S-G280003 = CHIRADZULU
# Generated key details :  Level 1 ( MW-S = SOUTHERN [SOUTHERN2] ). Level 2 ( 280002 = CHIKWAWA ). 
MW-S-G280002 = CHIKWAWA
# Generated key details :  Level 1 ( MW-S = SOUTHERN [SOUTHERN2] ). Level 2 ( 280009 = THYOLO ). 
MW-S-G280009 = THYOLO
# Generated key details :  Level 1 ( MW-S = SOUTHERN [SOUTHERN2] ). Level 2 ( 280008 = NSANJE ). 
MW-S-G280008 = NSANJE
