# MMR_1_node.properties Wed Apr 12 16:31:08 PDT 2006  
# This file contains node data values for regions in Myanmar  
#/******************************************************************************* 
# * 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 
# *******************************************************************************/ 
#  
# 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 = MMR 
#  
# The title that will appear in the generated graph 
TITLE = All Myanmar (level 1) 
#  
# The administration level of the graph data 
ADMIN_LEVEL = 1 
#  
# This is the date range for which the 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://en.wikipedia.org/wiki/ISO_3166-2 
# 	 
# The file that contains the latitude/longitude polygon data for the node 
SPATIAL_URI = platform:/plugin/org.eclipse.stem.data.geography/resources/data/geo/country/MMR/MMR_1_MAP.xml

#  
# Format: Code = Name, ISO-3166-2 numeric code, Two letter code 
#  
MM-TNS = Tenasserim,00,NS
MM-MND = Mandalay,00,ND
MM-IRR = Irrawaddy,00,RR
MM-PEG = Pegu,00,EG
MM-CST = Chin State,00,ST
MM-SST = Shan State,00,ST
MM-KST = Kachin State,00,ST
MM-MAG = Magwe,00,AG
MM-KSE = Kayah State,00,SE
MM-AST = Arakan State,00,ST
MM-MST = Mon State,00,ST
MM-KSA = Karen State,00,SA
MM-RNG = Rangoon,00,NG
MM-SGN = Sagaing,00,GN

