1 package org.opentrafficsim.demo.network.xml;
2
3 import java.awt.Dimension;
4 import java.io.IOException;
5 import java.net.URL;
6 import java.nio.file.Files;
7 import java.nio.file.Paths;
8 import java.rmi.RemoteException;
9
10 import javax.naming.NamingException;
11 import javax.swing.SwingUtilities;
12
13 import org.djunits.value.vdouble.scalar.Duration;
14 import org.djunits.value.vdouble.scalar.Time;
15 import org.djutils.io.URLResource;
16 import org.opentrafficsim.core.animation.gtu.colorer.DefaultSwitchableGTUColorer;
17 import org.opentrafficsim.core.dsol.AbstractOTSModel;
18 import org.opentrafficsim.core.dsol.OTSAnimator;
19 import org.opentrafficsim.core.dsol.OTSModelInterface;
20 import org.opentrafficsim.core.dsol.OTSSimulatorInterface;
21 import org.opentrafficsim.core.gis.CoordinateTransformWGS84toRDNew;
22 import org.opentrafficsim.draw.core.OTSDrawingException;
23 import org.opentrafficsim.road.network.OTSRoadNetwork;
24 import org.opentrafficsim.swing.gui.OTSAnimationPanel;
25 import org.opentrafficsim.swing.gui.OTSSimulationApplication;
26
27 import com.thoughtworks.xstream.XStream;
28
29 import nl.javel.gisbeans.io.esri.CoordinateTransform;
30 import nl.tudelft.simulation.dsol.SimRuntimeException;
31 import nl.tudelft.simulation.dsol.animation.D2.GisRenderable2D;
32
33
34
35
36
37
38
39
40
41
42 public class TestXMLParserReadXstream extends OTSSimulationApplication<OTSModelInterface>
43 {
44
45 private static final long serialVersionUID = 1L;
46
47
48
49
50
51
52 public TestXMLParserReadXstream(final OTSModelInterface model, final OTSAnimationPanel animationPanel)
53 throws OTSDrawingException
54 {
55 super(model, animationPanel);
56 }
57
58
59
60
61
62
63 public static void main(final String[] args) throws SimRuntimeException
64 {
65 SwingUtilities.invokeLater(new Runnable()
66 {
67 @Override
68 public void run()
69 {
70 try
71 {
72 OTSAnimator simulator = new OTSAnimator();
73 TestXMLModelReadXStream xmlModel = new TestXMLModelReadXStream(simulator);
74 simulator.initialize(Time.ZERO, Duration.ZERO, Duration.instantiateSI(3600.0), xmlModel);
75 OTSAnimationPanel animationPanel =
76 new OTSAnimationPanel(xmlModel.getNetwork().getExtent(), new Dimension(800, 600), simulator,
77 xmlModel, new DefaultSwitchableGTUColorer(), xmlModel.getNetwork());
78 new TestXMLParserReadXstream(xmlModel, animationPanel);
79 }
80 catch (SimRuntimeException | NamingException | RemoteException | OTSDrawingException exception)
81 {
82 exception.printStackTrace();
83 }
84 }
85 });
86 }
87
88
89 @Override
90 public final String toString()
91 {
92 return "TestXMLParser []";
93 }
94
95
96
97
98
99
100
101
102
103
104
105
106
107 static class TestXMLModelReadXStream extends AbstractOTSModel
108 {
109
110 private static final long serialVersionUID = 20141121L;
111
112
113 private OTSRoadNetwork network;
114
115
116
117
118 TestXMLModelReadXStream(final OTSSimulatorInterface simulator)
119 {
120 super(simulator);
121 }
122
123
124 @Override
125 public final void constructModel() throws SimRuntimeException
126 {
127 long millis = System.currentTimeMillis();
128 String xml;
129 try
130 {
131 xml = new String(Files.readAllBytes(Paths.get("e://temp/network.txt")));
132 }
133 catch (IOException exception)
134 {
135 throw new SimRuntimeException(exception);
136 }
137 System.out.println("reading took : " + (System.currentTimeMillis() - millis) + " ms");
138
139 millis = System.currentTimeMillis();
140 XStream xstream = new XStream();
141 this.network = (OTSRoadNetwork) xstream.fromXML(xml);
142 System.out.println(this.network.getNodeMap());
143 System.out.println(this.network.getLinkMap());
144 System.out.println("building took : " + (System.currentTimeMillis() - millis) + " ms");
145
146 URL gisURL = URLResource.getResource("/xml/N201/map.xml");
147 System.err.println("GIS-map file: " + gisURL.toString());
148 CoordinateTransform rdto0 = new CoordinateTransformWGS84toRDNew(0, 0);
149 new GisRenderable2D(this.simulator, gisURL, rdto0);
150 }
151
152
153 @Override
154 public OTSRoadNetwork getNetwork()
155 {
156 return this.network;
157 }
158
159
160 @Override
161 public final String toString()
162 {
163 return "TestXMLModel [simulator=" + this.simulator + "]";
164 }
165
166 }
167
168 }