OsmNetworkReader osmNetworkReader; if (onlyMotorwayToTertiary == true || onlyMotorwayToSecondary == true) { osmNetworkReader = new OsmNetworkReader(network, coordinateTransformation, false); } else { osmNetworkReader = new OsmNetworkReader(network, coordinateTransformation, true); osmNetworkReader.setKeepPaths(true); osmNetworkReader.setHighwayDefaults(7, "cycleway", 1, 30/3.6, 1.0, 0); osmNetworkReader.setHighwayDefaults(7, "pedestrian", 1, 15/3.6, 1.0, 0); osmNetworkReader.setHighwayDefaults(7, "road", 1, 15/3.6, 1.0, 300); // like "living_street" osmNetworkReader.setHighwayDefaults(8, "track", 1, 15/3.6, 1.0, 0); osmNetworkReader.setHighwayDefaults(8, "footway", 1, 15/3.6, 1.0, 0); osmNetworkReader.setHighwayDefaults(8, "steps", 1, 5/3.6, 1.0, 0); osmNetworkReader.setHighwayDefaults(8, "path", 1, 15/3.6, 1.0, 0); osmNetworkReader.setHighwayDefaults(1, "motorway", 2, 120.0/3.6, 1.0, 2000, true); osmNetworkReader.setHighwayDefaults(1, "motorway_link", 1, 80.0/3.6, 1.0, 1500, true); osmNetworkReader.setHighwayDefaults(2, "trunk", 1, 80.0/3.6, 1.0, 2000); osmNetworkReader.setHighwayDefaults(2, "trunk_link", 1, 50.0/3.6, 1.0, 1500); osmNetworkReader.setHighwayDefaults(3, "primary", 1, 80.0/3.6, 1.0, 1500); osmNetworkReader.setHighwayDefaults(3, "primary_link", 1, 60.0/3.6, 1.0, 1500); osmNetworkReader.setHighwayDefaults(4, "secondary", 1, 30.0/3.6, 1.0, 1000); osmNetworkReader.setHighwayDefaults(4, "secondary_link", 1, 30.0/3.6, 1.0, 1000); if (onlyMotorwayToTertiary == true) { osmNetworkReader.setHighwayDefaults(5, "tertiary", 1, 25.0/3.6, 1.0, 600); osmNetworkReader.setHighwayDefaults(5, "tertiary_link", 1, 25.0/3.6, 1.0, 600); osmNetworkReader.parse(osmFileName);
@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 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() { 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 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()); }
/** * 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); }
/** * Sets defaults for converting OSM highway paths into MATSim links, assuming it is no oneway road. * * @param hierarchy The hierarchy layer the highway appears. * @param highwayType The type of highway these defaults are for. * @param lanesPerDirection number of lanes on that road type <em>in each direction</em> * @param freespeed the free speed vehicles can drive on that road type [meters/second] * @param freespeedFactor the factor the freespeed is scaled * @param laneCapacity_vehPerHour the capacity per lane [veh/h] * * @see <a href="http://wiki.openstreetmap.org/wiki/Map_Features#Highway">http://wiki.openstreetmap.org/wiki/Map_Features#Highway</a> */ public final void setHighwayDefaults(final int hierarchy , final String highwayType, final double lanesPerDirection, final double freespeed, final double freespeedFactor, final double laneCapacity_vehPerHour) { setHighwayDefaults(hierarchy, highwayType, lanesPerDirection, freespeed, freespeedFactor, laneCapacity_vehPerHour, false); }
if (node.used) { Node nn = this.network.getFactory().createNode(Id.create(node.id, Node.class), node.coord); setOrModifyNodeAttributes(nn, node); this.network.addNode(nn); createLink(this.network, way, fromNode, toNode, length); } else { for (OsmFilter osmFilter : this.hierarchyLayers) { if(osmFilter.coordInFilter(fromNode.coord, way.hierarchy)){ createLink(this.network, way, fromNode, toNode, length); break; createLink(this.network, way, fromNode, toNode, length); break;
convert(); log.info("= conversion statistics: =========================="); log.info("osm: # nodes read: " + parser.nodeCounter.getCounter());
super.addWayTags(bicycleWayTags);
@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_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()); }
/** * 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); }
this.setHighwayDefaults(1, "motorway", 2, 120.0/3.6, 1.0, 2000, true); this.setHighwayDefaults(1, "motorway_link", 1, 80.0/3.6, 1.0, 1500, true); this.setHighwayDefaults(2, "trunk", 1, 80.0/3.6, 1.0, 2000); this.setHighwayDefaults(2, "trunk_link", 1, 50.0/3.6, 1.0, 1500); if (useVspAdjustments) { this.setHighwayDefaults(3, "primary", 1, 80.0/3.6, 1.0, 1000); this.setHighwayDefaults(3, "primary_link", 1, 60.0/3.6, 1.0, 1000); } else { this.setHighwayDefaults(3, "primary", 1, 80.0/3.6, 1.0, 1500); this.setHighwayDefaults(3, "primary_link", 1, 60.0/3.6, 1.0, 1500); this.setHighwayDefaults(4, "secondary", 1, 30.0/3.6, 1.0, 800); this.setHighwayDefaults(4, "secondary_link", 1, 30.0/3.6, 1.0, 800); } else { this.setHighwayDefaults(4, "secondary", 1, 30.0/3.6, 1.0, 1000); this.setHighwayDefaults(4, "secondary_link", 1, 30.0/3.6, 1.0, 1000); this.setHighwayDefaults(5, "tertiary", 1, 25.0/3.6, 1.0, 600); this.setHighwayDefaults(5, "tertiary_link", 1, 25.0/3.6, 1.0, 600); this.setHighwayDefaults(6, "unclassified", 1, 15.0/3.6, 1.0, 600); this.setHighwayDefaults(7, "residential", 1, 15.0/3.6, 1.0, 600); this.setHighwayDefaults(8, "living_street", 1, 10.0/3.6, 1.0, 300);
.getCoordinateTransformation(TransformationFactory.WGS84, esriWkt); OsmNetworkReader onr = new OsmNetworkReader(net, ct); onr.setHighwayDefaults(1, "motorway", 2, 110.0/3.6, 1.0, 2000, true); onr.setHighwayDefaults(1, "motorway_link", 1, 80.0/3.6, 1.0, 1500, true); onr.setHighwayDefaults(2, "trunk", 1, 100.0/3.6, 1.0, 2000); onr.setHighwayDefaults(2, "trunk_link", 1, 80.0/3.6, 1.0, 1500); onr.setHighwayDefaults(3, "primary", 1, 80.0/3.6, 1.0, 1500); onr.setHighwayDefaults(3, "primary_link", 1, 60.0/3.6, 1.0, 1500); onr.setHighwayDefaults(4, "secondary", 1, 60.0/3.6, 1.0, 1000); onr.setHighwayDefaults(4, "secondary_link",1, 60.0/3.6, 1.0, 1000); onr.setHighwayDefaults(5, "tertiary", 1, 50.0/3.6, 1.0, 600); onr.setHighwayDefaults(5, "tertiary_link", 1, 50.0/3.6, 1.0, 600); onr.setHighwayDefaults(6, "unclassified", 1, 50.0/3.6, 1.0, 600); onr.setHighwayDefaults(7, "residential", 1, 50.0/3.6, 1.0, 600); onr.setHighwayDefaults(8, "living_street", 1, 50.0/3.6, 1.0, 300); onr.setKeepPaths(true); onr.parse(osmfile); new NetworkCleaner().run(net);
CoordinateTransformation ct = new IdentityTransformation(); OsmNetworkReader reader = new OsmNetworkReader(net, ct); reader.setKeepPaths(true); reader.setHighwayDefaults(1, "motorway", 1, 50.0/3.6, 1.0, 2000.0); " </way>\n" + "</osm>"; reader.parse(new ByteArrayInputStream(str.getBytes()));
CoordinateTransformation ct = new IdentityTransformation(); OsmNetworkReader reader = new OsmNetworkReader(net, ct); reader.setKeepPaths(true); reader.setHighwayDefaults(1, "motorway", 1, 50.0/3.6, 1.0, 2000.0); " </way>\n" + "</osm>"; reader.parse(new ByteArrayInputStream(str.getBytes()));