# NGA_1_NGA_2.properties
#/*******************************************************************************
# * Copyright (c) 2008 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.infrastructure.transportation.specifications.AirTransportationGeographicRelationshipPropertyFileSpecification

# The title of the relationship
TITLE = Air transport between NGA(1) and NGA(2)
# 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=2000-01-01; end=2008-12-31;

# The data is derived from the following primary source
#SOURCE = http://www.azworldairports.com

# ISO3166-1 alpha3 keys and levels of relationship
ISOKEY_0 = NGA
ISOKEY_0_LEVEL = 1
ISOKEY_1 = NGA
ISOKEY_1_LEVEL = 2

# The mode of transportation 
TRANSPORT_MODE = air

# The population being transported
POPULATION_IDENTIFIER = human

# The time period for the rate in milliseconds 
RATE_TIME_PERIOD = 86400000

#Average time in transportation network
AVG_TIME_IN_SYSTEM = 1

# Record No. = Enclosing Node Key,  Node Key, ArrivalRate (individuals per RATE_TIME_PERIOD), DepartureRate(Individuals per RATE_TIME_PERIOD)
# PHC/DNPO(Actual)
0 = NG-RI,NG-RI-G360013,1256.4383561643835,1256.4383561643835
# MIU/DNMA(Estimated)
1 = NG-BO,NG-BO-G110008,15.0,15.0
# SKO/DNSO(Estimated)
2 = NG-SO,NG-SO-G370004,15.0,15.0
# ENU/DNEN(Actual)
3 = NG-EN,NG-EN-G170003,270.958904109589,270.958904109589
# JOS/DNJO(Estimated)
4 = NG-PL,NG-PL-G350003,15.0,15.0
# KAN/DNKN(Actual)
5 = NG-KN,NG-KN-G230028,448.90410958904107,448.90410958904107
# YOL/DNYO(Estimated)
6 = NG-AWM,NG-AWM-G040015,15.0,15.0
# KAD/DNKA(Actual)
7 = NG-KD,NG-KD-G220005,173.013698630137,173.013698630137
# CBQ/DNCA(Actual)
8 = NG-CR,NG-CR-G120006,229.86301369863014,229.86301369863014
# LOS/DNMM(Actual)
9 = NG-LA,NG-LA-G280010,5272.328767123287,5272.328767123287
# ABV/DNAA(Actual)
10 = NG-FCT,NG-FCT-G180002,2913.150684931507,2913.150684931507
