# CHN_1_area.properties 
# This file contains area values for CHINA
# /*********************************************************************************************
# * 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 = CHN

# The administration level of the area data
ADMIN_LEVEL = 1

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

CN-0 = 15709.6
CN-2 = 11363.1
CN-22 = 186397.2
CN-23 = 446045.5
CN-3 = 6222.2
CN-32 = 97754.8
CN-33 = 99835.9
CN-34 = 142021.2
CN-35 = 123725.6
CN-36 = 167733.5
CN-37 = 148045.4
CN-4 = 163040.9
CN-42 = 184574.1
CN-43 = 212898.1
CN-44 = 186264.3
CN-45 = 249469.2
CN-46 = 33930.8
CN-5 = 492397.2
CN-50 = 81649.1
CN-52 = 171293.4
CN-53 = 398683.8
CN-54 = 1117084.2
CN-6 = 201815.5
CN-62 = 405514.6
CN-63 = 719247.4
CN-64 = 51802.9
CN-65 = 1591769.5
CN-7 = 36276.0
CN-72 = 151674.8
CN-73 = 185672.2
CN-74 = 153271.8
CN-75 = 1134805.7
CN-HK = 77.2
CN-JK = 30655.2
CN-KOW = 51.3
CN-MAR = 170.6
CN-NT = 755.8
