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
00036 e.printStackTrace();
00037 } catch (SAXException e) {
00038
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
00047 e.printStackTrace();
00048 } catch (IOException e) {
00049
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
00059 if (this.network != null){
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 }