def getvehicleAttribs(sncfFileName): ''' Function that returns the value of the meta-data of the vehicle attribute. getvehicleAttribs(sncfFileName)[1] returns the vehicle type ID. ''' vehicleBuff=[] vehicleBet=strutils.betweenHeaders('@start_vehID_({uID,vTypeID,routeID,[R G B],entryTime,entryLane,entryPtPos,entrySpeed,exitLane,exitPos,exitSpeed,line})','@end_vehID',sncfFileName) lenBuff=len(vehicleBet) for itr in range(0,lenBuff): buffInBet=strutils.whatsInBetween('{','}',vehicleBet[itr]) vehicleBuff.append(buffInBet.split(',')) return vehicleBuff
def getvehicleColor(sncfFileName): ''' Function that returns the color triad of vehicle attribute. ''' listFinal=[] lenAttribs=len(getvehicleAttribs(sncfFileName)) for itr in range(0,lenAttribs): buffAttribs=getvehicleAttribs(sncfFileName)[itr][3] inResult=strutils.whatsInBetween('[',']',buffAttribs) listFinal.append(inResult.replace(' ',',')) return listFinal
def getrouteEntryAttribs(sncfFileName): ''' Function that returns the value of the meta-data of the routeEntry attribute. getrouteEntryAttribs(sncfFileName)[1] returns the color triad value. ''' routeBuff=[] routeEntryBet=strutils.betweenHeaders('@start_routeentry_({routeID,[R G B],[edgName_a edgName_b edgName_c edgName_n]})','@end_routeentry',sncfFileName) lenBuff=len(routeEntryBet) for itr in range(0,lenBuff): buffInBet=strutils.whatsInBetween('{','}',routeEntryBet[itr]) routeBuff.append(buffInBet.split(',')) return routeBuff
def getvTypeAttribs(sncfFileName): ''' Function that returns the value of the meta-data of the vType attribute. There are 18 meta-data variables. Hence, getvTypeAttribs(sncfFileName)[1] returns the acceleration value 'accel'. ''' vTypeBuff=[] vTypeBet=strutils.betweenHeaders('@start_vTypeID_({vTypeID,accel,decel,sigma,tau,length,minGap,maxSpeed,speedFactor,speedDev,[R G B],vClass,emissionClass,guiShape,width,imgFile,impatience,laneChangeModel})','@end_vTypeID',sncfFileName) lenBuff=len(vTypeBet) for itr in range(0,lenBuff): buffInBet=strutils.whatsInBetween('{','}',vTypeBet[itr]) vTypeBuff.append(buffInBet.split(',')) return vTypeBuff
def getvectEdgeNames(sncfFileName): ''' Function that returns the edge names used in the route attributes as an alphabetically sorted vector. ''' instrList=[] sepList2d=[] vectorEdgeNames=[] edgeNames=getroute_edgeName(sncfFileName) # Gets the string in between the [ and ] for itr in range(0,len(getroute_edgeName(sncfFileName))): instrList.append(strutils.whatsInBetween('[',']',edgeNames[itr])) # Gets the 2d list of the strings separated by spaces for itr in range(0,len(getroute_edgeName(sncfFileName))): edgeName2d=instrList[itr] sepList2d.append(edgeName2d.split(' ')) # This part does the vectorisation part. Examines every element in the 2d array. for itr in range(0,len(sepList2d)): # Get the length of each element in the 2d array to sort of dynamically adjust the iteration counter len_sepList2d=len(sepList2d[itr]) for jtr in range(0,len_sepList2d): # Dynamically adjusted iteration and store the result in a vector. Done! vectorEdgeNames.append(sepList2d[itr][jtr]) return vectorEdgeNames
def writeRoute(sncfFileName,outputFileName): ''' Function that writes the *.rou.xml file from an existing sncf file sncfFileName. ''' if dependencychecker.depChecker(sncfFileName)==True: # Initial setup # Routes start and end routesStart='''<?xml version="1.0" encoding="UTF-8"?> <routes>''' routesEnd='</routes>' # vType start and end vTypeID='<vType id=\"' vTypeAccel='\" accel=\"' vTypeDecel='\" decel=\"' vTypeSigma='\" sigma=\"' vTypeTau='\" tau=\"' vTypeLength='\" length=\"' vTypeminGap='\" minGap=\"' vTypemaxSpeed='\" maxSpeed=\"' vTypespeedFactor='\" speedFactor=\"' vTypespeedDev='\" speedDev=\"' vTypecolor='\" color=\"' vTypevClass='\" vClass=\"' vTypeemissionClass='\" emissionClass=\"' vTypeguiShape='\" guiShape=\"' vTypewidth='\" width=\"' vTypeimgFile='\" imgFile=\"' vTypeimpatience='\" impatience=\"' vTypelaneChangeModel='\" laneChangeModel=\"' vTypeEnd='\" />' # route start and end routeID='<route id=\"' routeColor='\" color=\"' routeEdges='\" edges=\"' routeEnd='\" />' # vehicle start and end vehicleID='< vehicle id=\"' vehicleType='\" type=\"' vehicleRoute='\" route=\"' vehicleColor='\" color=\"' vehicleDepart='\" depart=\"' vehicledepartLane='\" departLane=\"' vehicledepartPos='\" departPos=\"' vehicledepartSpeed='\" departSpeed=\"' vehiclearrivalLane='\" arrivalLane=\"' vehiclearrivalPos='\" arrivalPos=\"' vehiclearrivalSpeed='\" arrivalSpeed=\"' vehicleline='\" line=\"' vehicleEnd='\" />' lenVtype=len(getattribs.getvTypeAttribs(sncfFileName)) lenRoute=len(getattribs.getrouteEntryAttribs(sncfFileName)) lenVehicle=len(getattribs.getvehicleAttribs(sncfFileName)) # Begin writing the file try: fileHandler=open(outputFileName,'w') fileHandler.write(routesStart+sncfheaders.printNew()) # Returns the list containing vType values. vType=getattribs.getvTypeDefaults(sncfFileName) for itr in range(0,lenVtype): vTypeWrite=vTypeID+vType[itr][0]+vTypeAccel+vType[itr][1]+vTypeDecel+vType[itr][2]+vTypeSigma+vType[itr][3]+vTypeTau+vType[itr][4]+vTypeLength+vType[itr][5]+vTypeminGap+vType[itr][6]+vTypemaxSpeed+vType[itr][7]+vTypespeedFactor+vType[itr][8]+vTypespeedDev+vType[itr][9]+vTypecolor+getattribs.getvTypeColor(sncfFileName)[itr]+vTypevClass+vType[itr][11]+vTypeemissionClass+vType[itr][12]+vTypeguiShape+vType[itr][13]+vTypewidth+vType[itr][14]+vTypeimgFile+vType[itr][15]+vTypeimpatience+vType[itr][16]+vTypelaneChangeModel+vType[itr][17]+vTypeEnd+sncfheaders.printNew() fileHandler.write(vTypeWrite) # Returns the list containing route entry values. routeEntry=getattribs.getrouteEntryAttribs(sncfFileName) for itr in range(0,lenRoute): routeWrite=routeID+routeEntry[itr][0]+routeColor+getattribs.getrouteColor(sncfFileName)[itr]+routeEdges+strutils.whatsInBetween('[',']',getattribs.getroute_edgeName(sncfFileName)[itr])+routeEnd+sncfheaders.printNew() fileHandler.write(routeWrite) # Returns the list containing vehicle values. vehicle=getattribs.getvehicleAttribs(sncfFileName) for itr in range(0,lenVehicle): vehicleWrite=vehicleID+vehicle[itr][0]+vehicleType+vehicle[itr][1]+vehicleRoute+vehicle[itr][2]+vehicleColor+getattribs.getvehicleColor(sncfFileName)[itr]+vehicleDepart+vehicle[itr][4]+vehicledepartLane+vehicle[itr][5]+vehicledepartPos+vehicle[itr][6]+vehicledepartSpeed+vehicle[itr][7]+vehiclearrivalLane+vehicle[itr][8]+vehiclearrivalPos+vehicle[itr][9]+vehiclearrivalSpeed+vehicle[itr][10]+vehicleline+vehicle[itr][11]+vehicleEnd+sncfheaders.printNew() fileHandler.write(vehicleWrite) fileHandler.write(routesEnd+sncfheaders.printNew()) fileHandler.close() print''' [writeRoute says]:The route file %s has been written to the location %s. '''%(outputFileName,os.getcwd()) except IOError,WindowsError: print''' [writeRoute says]:Error! Could not open the file %s for writing. Check the administrative rights or check if the location exists. '''%(outputFileName)