SUMOGeoCoordinatesResolver.java

Go to the documentation of this file.
00001 package de.psi.telco.sumoplayer;
00002 
00003 import java.io.File;
00004 import java.io.IOException;
00005 
00006 import javax.xml.parsers.ParserConfigurationException;
00007 import javax.xml.parsers.SAXParser;
00008 import javax.xml.parsers.SAXParserFactory;
00009 
00010 import org.xml.sax.SAXException;
00011 
00012 import de.psi.telco.sumoplayer.util.PROJTransformer;
00013 import de.psi.telco.sumoplayer.util.Point;
00014 import de.psi.telco.sumoplayer.util.PointImpl;
00015 
00016 public class SUMOGeoCoordinatesResolver {
00017     
00018     private File networkFile;
00019     private SUMONetwork network = new SUMONetwork();
00020     private PROJTransformer proj;
00021     
00022     public SUMOGeoCoordinatesResolver(String netfile){
00023         this.networkFile = new File(netfile);
00024         this.readNetwork();
00025         
00026         this.proj = new PROJTransformer(network.projString, network.offset);
00027     }
00028     
00029     private void readNetwork() {
00030         SAXParserFactory saxFactory = SAXParserFactory.newInstance();
00031         SAXParser saxParser = null;
00032         try {
00033             saxParser = saxFactory.newSAXParser();
00034         } catch (ParserConfigurationException e) {
00035             // TODO Auto-generated catch block
00036             e.printStackTrace();
00037         } catch (SAXException e) {
00038             // TODO Auto-generated catch block
00039             e.printStackTrace();
00040         }
00041         SUMOSAXNeworkfileHandler saxHandler = new SUMOSAXNeworkfileHandler();
00042         System.out.println("Reading SUMO Networkfile...");
00043         try {
00044             saxParser.parse(networkFile, saxHandler);
00045         } catch (SAXException e) {
00046             // TODO Auto-generated catch block
00047             e.printStackTrace();
00048         } catch (IOException e) {
00049             // TODO Auto-generated catch block
00050             e.printStackTrace();
00051         }
00052         System.out.println("done.");
00053         
00054         this.network = saxHandler.network;
00055     }
00056 
00057     public Point resolv(String edgeId, String laneId, double pos){
00058         //System.out.println("Resolver call - edge:"+edgeId+" - lane:"+laneId+" - pod:"+pos);
00059         if (this.network != null){  // network loaded. do look up
00060             Point out = network.lanes.get(laneId).getPositionWithin(pos);
00061             
00062             out = proj.transformInvers(out);
00063             return out;
00064         }else{
00065             return new PointImpl(0,0);
00066         }
00067     }
00068 }

Generated on Wed May 5 00:06:36 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6