1234567891011121314151617181920212223242526272829303132 |
- #!/usr/bin/env python3
- ''' Python generator for MATSim plans. '''
- import sys
- import lxml.etree as etree
- import plan_gen.plan_gen as pg
- if __name__ == '__main__':
- # command line arguments
- if len(sys.argv) != 5:
- print('usage:', sys.argv[0], '<nb_persons> <input_network> <input_home_clusters> <input_work_clusters>')
- print('type "" if you don\'t want to use specific clusters')
- sys.exit(-1)
- NB_PERSONS = int(sys.argv[1])
- INPUT_NETWORK = sys.argv[2]
- INPUT_HOME_CLUSTERS = sys.argv[3].split(',')
- INPUT_WORK_CLUSTERS = sys.argv[4].split(',')
- # get data
- NODES = pg.read_nodes(INPUT_NETWORK)
- HOME_CLUSTERS = [pg.read_nodes(cluster) for cluster in INPUT_HOME_CLUSTERS]
- WORK_CLUSTERS = [pg.read_nodes(cluster) for cluster in INPUT_WORK_CLUSTERS]
- # make xml
- PERSONS = [pg.rand_person(NODES, HOME_CLUSTERS, WORK_CLUSTERS) for _ in range(NB_PERSONS)]
- PLANS = pg.make_plans(PERSONS)
- # print XML
- print('<?xml version="1.0" ?>')
- print('<!DOCTYPE plans SYSTEM "http://www.matsim.org/files/dtd/plans_v4.dtd">')
- print(etree.tostring(PLANS, pretty_print=True).decode('utf-8'))
|