/** * Parses the given osm file and creates a MATSim network from the data. * * @param osmFilename * @throws UncheckedIOException */ public final void parse(final String osmFilename) { parse(osmFilename, null); }
/** * Parses the given input stream and creates a MATSim network from the data. * * @param stream * @throws UncheckedIOException */ public final void parse(final InputStream stream) throws UncheckedIOException { parse(null, stream); }
@Test public void testConversion_MissingNodeRef() { Scenario sc = ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network net = sc.getNetwork(); CoordinateTransformation ct = new IdentityTransformation(); OsmNetworkReader reader = new OsmNetworkReader(net, ct); reader.setKeepPaths(true); String str = "<?xml version='1.0' encoding='UTF-8'?>\n" + "<osm version=\"0.6\" generator=\"Osmosis 0.36\">\n" + " <bound box=\"0,0,90,180\" origin=\"0.37-SNAPSHOT\"/>\n" + " <node id=\"1\" lat=\"10.0\" lon=\"60.0\"/>\n" + " <node id=\"2\" lat=\"15.0\" lon=\"90.0\"/>\n" + " <node id=\"3\" lat=\"20.0\" lon=\"120.0\"/>\n" + " <node id=\"5\" lat=\"30.0\" lon=\"170.0\"/>\n" + " <way id=\"1234\" version=\"6\" timestamp=\"2010-10-14T12:34:56Z\" uid=\"9876\" user=\"MATSim\" changeset=\"123456789\">\n" + " <nd ref=\"0\"/>\n" + " <nd ref=\"1\"/>\n" + " <nd ref=\"2\"/>\n" + " <nd ref=\"3\"/>\n" + " <nd ref=\"4\"/>\n" + " <nd ref=\"5\"/>\n" + " <tag k=\"highway\" v=\"motorway\"/>\n" + " </way>\n" + "</osm>"; reader.parse(new ByteArrayInputStream(str.getBytes())); Assert.assertEquals("incomplete ways should not be converted.", 0, net.getNodes().size()); Assert.assertEquals("incomplete ways should not be converted.", 0, net.getLinks().size()); }
@Test public void testConversion() { String filename = this.utils.getClassInputDirectory() + "adliswil.osm.gz"; Scenario sc = ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network net = sc.getNetwork(); CoordinateTransformation ct = TransformationFactory.getCoordinateTransformation(TransformationFactory.WGS84, TransformationFactory.CH1903_LV03); new OsmNetworkReader(net,ct).parse(filename); Assert.assertEquals("number of nodes is wrong.", 399, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 872, net.getLinks().size()); new NetworkCleaner().run(net); Assert.assertEquals("number of nodes is wrong.", 344, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 794, net.getLinks().size()); }
@Test public void testConversionWithDetails() { String filename = this.utils.getClassInputDirectory() + "adliswil.osm.gz"; Scenario sc = ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network net = sc.getNetwork(); CoordinateTransformation ct = TransformationFactory.getCoordinateTransformation(TransformationFactory.WGS84, TransformationFactory.CH1903_LV03); OsmNetworkReader reader = new OsmNetworkReader(net,ct); reader.setKeepPaths(true); reader.parse(filename); Assert.assertEquals("number of nodes is wrong.", 1844, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 3535, net.getLinks().size()); new NetworkCleaner().run(net); Assert.assertEquals("number of nodes is wrong.", 1561, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 3168, net.getLinks().size()); }
@Test public void testConversionWithSettings() { String filename = this.utils.getClassInputDirectory() + "adliswil.osm.gz"; Scenario sc = ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network net = sc.getNetwork(); CoordinateTransformation ct = TransformationFactory.getCoordinateTransformation(TransformationFactory.WGS84, TransformationFactory.CH1903_LV03); OsmNetworkReader reader = new OsmNetworkReader(net,ct); reader.setHierarchyLayer(47.4, 8.5, 47.2, 8.6, 5); reader.setMemoryOptimization(false); reader.parse(filename); Assert.assertEquals("number of nodes is wrong.", 67, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 122, net.getLinks().size()); new NetworkCleaner().run(net); Assert.assertEquals("number of nodes is wrong.", 57, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 114, net.getLinks().size()); }
@Test public void testConversionWithDetails_witMemoryOptimized() { String filename = this.utils.getClassInputDirectory() + "adliswil.osm.gz"; Scenario sc = ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network net = sc.getNetwork(); CoordinateTransformation ct = TransformationFactory.getCoordinateTransformation(TransformationFactory.WGS84, TransformationFactory.CH1903_LV03); OsmNetworkReader reader = new OsmNetworkReader(net,ct); reader.setKeepPaths(true); reader.setMemoryOptimization(true); reader.parse(filename); Assert.assertEquals("number of nodes is wrong.", 1844, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 3535, net.getLinks().size()); new NetworkCleaner().run(net); Assert.assertEquals("number of nodes is wrong.", 1561, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 3168, net.getLinks().size()); }
@Test public void testConversionWithSettingsAndDetails() { String filename = this.utils.getClassInputDirectory() + "adliswil.osm.gz"; Scenario sc = ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network net = sc.getNetwork(); CoordinateTransformation ct = TransformationFactory.getCoordinateTransformation(TransformationFactory.WGS84, TransformationFactory.CH1903_LV03); OsmNetworkReader reader = new OsmNetworkReader(net,ct); reader.setKeepPaths(true); reader.setHierarchyLayer(47.4, 8.5, 47.2, 8.6, 5); reader.parse(filename); Assert.assertEquals("number of nodes is wrong.", 769, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 1016, net.getLinks().size()); new NetworkCleaner().run(net); Assert.assertEquals("number of nodes is wrong.", 441, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 841, net.getLinks().size()); }
@Test public void testConversionWithSettings_withMemoryOptimization() { String filename = this.utils.getClassInputDirectory() + "adliswil.osm.gz"; Scenario sc = ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network net = sc.getNetwork(); CoordinateTransformation ct = TransformationFactory.getCoordinateTransformation(TransformationFactory.WGS84, TransformationFactory.CH1903_LV03); OsmNetworkReader reader = new OsmNetworkReader(net,ct); reader.setHierarchyLayer(47.4, 8.5, 47.2, 8.6, 5); reader.setMemoryOptimization(true); reader.parse(filename); Assert.assertEquals("number of nodes is wrong.", 67, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 122, net.getLinks().size()); new NetworkCleaner().run(net); Assert.assertEquals("number of nodes is wrong.", 57, net.getNodes().size()); Assert.assertEquals("number of links is wrong.", 114, net.getLinks().size()); }
" </way>\n" + "</osm>"; reader.parse(new ByteArrayInputStream(str.getBytes()));
" </way>\n" + "</osm>"; reader.parse(new ByteArrayInputStream(str.getBytes()));
onr.parse(osmfile); new NetworkCleaner().run(net);