#include <NILoader.h>
A plain loader which encapsulates calls to the import modules.
Definition at line 53 of file NILoader.h.
Public Member Functions | |
| void | load (OptionsCont &oc) |
| NILoader (NBNetBuilder &nb) throw () | |
| Constructor. | |
| ~NILoader () throw () | |
| Destructor. | |
Private Member Functions | |
| void | loadXML (OptionsCont &oc) |
| void | loadXMLType (SUMOSAXHandler *handler, const std::vector< std::string > &files, const std::string &type) |
| NILoader (const NILoader &) | |
| Invalidated copy constructor. | |
| NILoader & | operator= (const NILoader &) |
| Invalidated assignment operator. | |
Private Attributes | |
| NBNetBuilder & | myNetBuilder |
| The network builder to fill with loaded data. | |
| NILoader::NILoader | ( | NBNetBuilder & | nb | ) | throw () |
Constructor.
| [in] | nb | The network builder to fill with loaded data |
Definition at line 68 of file NILoader.cpp.
00069 : myNetBuilder(nb) {}
| NILoader::~NILoader | ( | ) | throw () |
| NILoader::NILoader | ( | const NILoader & | ) | [private] |
Invalidated copy constructor.
| void NILoader::load | ( | OptionsCont & | oc | ) |
loads data from the files specified in the given option container
Definition at line 76 of file NILoader.cpp.
References NBNetBuilder::getDistrictCont(), NBNetBuilder::getEdgeCont(), NBNetBuilder::getNodeCont(), NBEdgeCont::getNoEdgeSplits(), GeoConvHelper::getProjString(), OptionsCont::getStringVector(), NBNetBuilder::getTypeCont(), GeoConvHelper::init(), NIImporter_OpenDrive::loadNetwork(), NIImporter_DlrNavteq::loadNetwork(), NIImporter_Vissim::loadNetwork(), NIImporter_ArcView::loadNetwork(), NIImporter_VISUM::loadNetwork(), NIImporter_OpenStreetMap::loadNetwork(), NIImporter_RobocupRescue::loadNetwork(), NIImporter_SUMO::loadNetwork(), loadXML(), loadXMLType(), myNetBuilder, NBTypeCont::size(), NBDistrictCont::size(), NBEdgeCont::size(), NBNodeCont::size(), toString(), GeoConvHelper::usingGeoProjection(), and WRITE_MESSAGE.
Referenced by main().
00076 { 00077 // build the projection 00078 if (!GeoConvHelper::init(oc)) { 00079 throw ProcessError("Could not build projection!"); 00080 } 00081 // load types first 00082 NIXMLTypesHandler *handler = 00083 new NIXMLTypesHandler(myNetBuilder.getTypeCont()); 00084 loadXMLType(handler, oc.getStringVector("xml-type-files"), "types"); 00085 // try to load using different methods 00086 NIImporter_SUMO::loadNetwork(oc, myNetBuilder); 00087 NIImporter_RobocupRescue::loadNetwork(oc, myNetBuilder); 00088 NIImporter_OpenStreetMap::loadNetwork(oc, myNetBuilder); 00089 NIImporter_VISUM::loadNetwork(oc, myNetBuilder); 00090 NIImporter_ArcView::loadNetwork(oc, myNetBuilder); 00091 NIImporter_Vissim::loadNetwork(oc, myNetBuilder); 00092 NIImporter_DlrNavteq::loadNetwork(oc, myNetBuilder); 00093 NIImporter_OpenDrive::loadNetwork(oc, myNetBuilder); 00094 loadXML(oc); 00095 // check the loaded structures 00096 if (myNetBuilder.getNodeCont().size()==0) { 00097 throw ProcessError("No nodes loaded."); 00098 } 00099 if (myNetBuilder.getEdgeCont().size()==0) { 00100 throw ProcessError("No edges loaded."); 00101 } 00102 // report loaded structures 00103 WRITE_MESSAGE(" Import done:"); 00104 if (myNetBuilder.getDistrictCont().size()>0) { 00105 WRITE_MESSAGE(" " + toString(myNetBuilder.getDistrictCont().size()) + " districts loaded."); 00106 } 00107 WRITE_MESSAGE(" " + toString(myNetBuilder.getNodeCont().size()) + " nodes loaded."); 00108 if (myNetBuilder.getTypeCont().size()>0) { 00109 WRITE_MESSAGE(" " + toString(myNetBuilder.getTypeCont().size()) + " types loaded."); 00110 } 00111 WRITE_MESSAGE(" " + toString(myNetBuilder.getEdgeCont().size()) + " edges loaded."); 00112 if (myNetBuilder.getEdgeCont().getNoEdgeSplits()>0) { 00113 WRITE_MESSAGE("The split of edges was performed "+ toString(myNetBuilder.getEdgeCont().getNoEdgeSplits()) + " times."); 00114 } 00115 if (GeoConvHelper::usingGeoProjection()) { 00116 WRITE_MESSAGE("Proj projection parameters used: '" + GeoConvHelper::getProjString() + "'."); 00117 } 00118 }
| void NILoader::loadXML | ( | OptionsCont & | oc | ) | [private] |
loads data from sumo-files loads data from XML-files
Definition at line 125 of file NILoader.cpp.
References NBNetBuilder::getDistrictCont(), NBNetBuilder::getEdgeCont(), NBNetBuilder::getNodeCont(), OptionsCont::getStringVector(), NBNetBuilder::getTLLogicCont(), NBNetBuilder::getTypeCont(), loadXMLType(), and myNetBuilder.
Referenced by load().
00125 { 00126 // load nodes 00127 loadXMLType(new NIXMLNodesHandler(myNetBuilder.getNodeCont(), 00128 myNetBuilder.getTLLogicCont(), oc), 00129 oc.getStringVector("xml-node-files"), "nodes"); 00130 // load the edges 00131 loadXMLType(new NIXMLEdgesHandler(myNetBuilder.getNodeCont(), 00132 myNetBuilder.getEdgeCont(), 00133 myNetBuilder.getTypeCont(), 00134 myNetBuilder.getDistrictCont(), oc), 00135 oc.getStringVector("xml-edge-files"), "edges"); 00136 // load the connections 00137 loadXMLType(new NIXMLConnectionsHandler(myNetBuilder.getEdgeCont()), 00138 oc.getStringVector("xml-connection-files"), "connections"); 00139 }
| void NILoader::loadXMLType | ( | SUMOSAXHandler * | handler, | |
| const std::vector< std::string > & | files, | |||
| const std::string & | type | |||
| ) | [private] |
loads data from the list of xml-files of certain type
loads a single user-specified file
Definition at line 144 of file NILoader.cpp.
References TplConvert< E >::_2str(), MsgHandler::beginProcessMsg(), MsgHandler::endProcessMsg(), FileHelpers::exists(), MsgHandler::getErrorInstance(), GenericSAXHandler::getFileName(), MsgHandler::getMessageInstance(), XMLSubSys::getSAXReader(), MsgHandler::inform(), and GenericSAXHandler::setFileName().
Referenced by load(), and loadXML().
00145 { 00146 // build parser 00147 SAX2XMLReader* parser = XMLSubSys::getSAXReader(*handler); 00148 std::string exceptMsg = ""; 00149 // start the parsing 00150 try { 00151 for (std::vector<std::string>::const_iterator file=files.begin(); file!=files.end(); ++file) { 00152 if (!FileHelpers::exists(*file)) { 00153 MsgHandler::getErrorInstance()->inform("Could not open " + type + "-file '" + *file + "'."); 00154 exceptMsg = "Process Error"; 00155 continue; 00156 } 00157 handler->setFileName(*file); 00158 MsgHandler::getMessageInstance()->beginProcessMsg("Parsing " + type + " from '" + *file + "'..."); 00159 parser->parse(file->c_str()); 00160 MsgHandler::getMessageInstance()->endProcessMsg("done."); 00161 } 00162 } catch (const XMLException& toCatch) { 00163 exceptMsg = TplConvert<XMLCh>::_2str(toCatch.getMessage()) 00164 + "\n The " + type + " could not be loaded from '" + handler->getFileName() + "'."; 00165 } catch (const ProcessError& toCatch) { 00166 exceptMsg = std::string(toCatch.what()) + "\n The " + type + " could not be loaded from '" + handler->getFileName() + "'."; 00167 } catch (...) { 00168 exceptMsg = "The " + type + " could not be loaded from '" + handler->getFileName() + "'."; 00169 } 00170 delete parser; 00171 delete handler; 00172 if (exceptMsg != "") { 00173 throw ProcessError(exceptMsg); 00174 } 00175 }
NBNetBuilder& NILoader::myNetBuilder [private] |
1.5.6