/** * Writes the population in the format of plans_v4.dtd * * @param filename */ public void writeV4(final String filename) { new org.matsim.core.population.io.PopulationWriter(transformation , this.population, this.network).writeV4(filename); }
/** * Writes the population in the format of population_v5.dtd * * @param filename */ public void writeV5(final String filename) { new org.matsim.core.population.io.PopulationWriter( transformation , this.population, this.network).writeV5(filename); }
@Override public void run() { final PopulationWriter writer = new PopulationWriter(s1); try { writer.write(out); } catch (UncheckedIOException e) { // Writer will throw an IOException when pipe is closed from the other side (like "broken pipe" in UNIX) // This is expected. Don't even log anything. // Other exceptions (from the Writer) are not caught // but written to the console. } } }).start();
public static void writePopulation( Population population, String filename ) { new PopulationWriter( population).write( filename ); }
/** * The InputStream which comes from this method must be properly * resource-managed, i.e. always be closed. * * Otherwise, the Thread which is opened here may stay alive. */ @SuppressWarnings("resource") private static InputStream openPopulationInputStream(final Population s1) { try { final PipedInputStream in = new PipedInputStream(); final PipedOutputStream out = new PipedOutputStream(in); new Thread(new Runnable() { @Override public void run() { final PopulationWriter writer = new PopulationWriter(s1); try { writer.write(out); } catch (UncheckedIOException e) { // Writer will throw an IOException when pipe is closed from the other side (like "broken pipe" in UNIX) // This is expected. Don't even log anything. // Other exceptions (from the Writer) are not caught // but written to the console. } } }).start(); return in; } catch (IOException e) { throw new UncheckedIOException(e); } }
/** * Writes the population in the format of population_v5.dtd * * @param filename */ public void writeV6(final String filename) { final org.matsim.core.population.io.PopulationWriter writer = new org.matsim.core.population.io.PopulationWriter( transformation , this.population, this.network); writer.putAttributeConverters( attributeConverters ); writer.writeV6(filename); } }
PopulationWriter writer = new PopulationWriter( pop2 ) ; writer.writeV4( iterationPlansFile );
@Test public void testInput_V5() { final String testFile = new File(utils.getOutputDirectory() + "/plans.xml.gz").getAbsolutePath(); // create test file in V5 format Config config = ConfigUtils.createConfig(ExamplesUtils.getTestScenarioURL("berlin")); final Scenario scenario = ScenarioUtils.createScenario(config); // necessary for v4... new MatsimNetworkReader(scenario.getNetwork()).parse(IOUtils.newUrl(config.getContext(), NET_FILE)); new PopulationReader(scenario).parse(IOUtils.newUrl(config.getContext(), BASE_FILE)); new PopulationWriter(scenario.getPopulation(), scenario.getNetwork()).writeV5(testFile); testConversionAtInput(testFile); }
@Test public void testInput_V4() { final String testFile = new File(utils.getOutputDirectory() + "/plans.xml.gz").getAbsolutePath(); // create test file in V4 format Config config = ConfigUtils.createConfig(ExamplesUtils.getTestScenarioURL("berlin")); final Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).parse(IOUtils.newUrl(config.getContext(), NET_FILE)); new PopulationReader(scenario).parse(IOUtils.newUrl(config.getContext(), BASE_FILE)); new PopulationWriter(scenario.getPopulation(), scenario.getNetwork()).writeV4(testFile); testConversionAtInput(testFile); }
@Test public void testEmptyPersonAttributesIO() { final Population population = PopulationUtils.createPopulation(ConfigUtils.createConfig() ); final Person person = population.getFactory().createPerson(Id.createPersonId( "Donald Trump")); population.addPerson( person ); final String file = utils.getOutputDirectory()+"/population.xml"; new PopulationWriter( population ).writeV6( file ); // just check everything works without attributes (dtd validation etc) final Scenario readScenario = ScenarioUtils.createScenario( ConfigUtils.createConfig() ); new PopulationReader( readScenario ).readFile( file ); }
@Test public void testOutput_V5() { final String testFile = new File(utils.getOutputDirectory() + "/plans.xml.gz").getAbsolutePath(); // read test population Config config = ConfigUtils.createConfig(ExamplesUtils.getTestScenarioURL("berlin")); final Scenario originalScenario = ScenarioUtils.createScenario(config); // necessary for v4... new MatsimNetworkReader(originalScenario.getNetwork()).parse(IOUtils.newUrl(config.getContext(), NET_FILE)); new PopulationReader(originalScenario).parse(IOUtils.newUrl(config.getContext(), BASE_FILE)); // write test population with conversion new PopulationWriter( transformation, originalScenario.getPopulation(), originalScenario.getNetwork()).writeV5( testFile ); // read converted population final Scenario reprojectedScenario = ScenarioUtils.createScenario(config); new PopulationReader(reprojectedScenario).readFile(testFile); assertPopulationCorrectlyTransformed( originalScenario.getPopulation() , reprojectedScenario.getPopulation() ); }
ProjectionUtils.putCRS(originalScenario.getPopulation(), INITIAL_CRS); new PopulationWriter(originalScenario.getPopulation()).write(utils.getOutputDirectory()+BASE_FILE); new NetworkWriter(originalScenario.getNetwork()).write(utils.getOutputDirectory()+NET_FILE);
@Test public void testOutput_V4() { final String testFile = new File(utils.getOutputDirectory() + "/plans.xml.gz").getAbsolutePath(); // read test population Config config = ConfigUtils.createConfig(ExamplesUtils.getTestScenarioURL("berlin")); final Scenario originalScenario = ScenarioUtils.createScenario(config); // necessary for v4... new MatsimNetworkReader(originalScenario.getNetwork()).parse(IOUtils.newUrl(config.getContext(), NET_FILE)); new PopulationReader(originalScenario).parse(IOUtils.newUrl(config.getContext(), BASE_FILE)); // write test population with conversion new PopulationWriter( transformation, originalScenario.getPopulation(), originalScenario.getNetwork()).writeV4( testFile ); // read converted population final Scenario reprojectedScenario = ScenarioUtils.createScenario(config); // necessary for v4... new MatsimNetworkReader(reprojectedScenario.getNetwork()).parse(IOUtils.newUrl(config.getContext(), NET_FILE)); new PopulationReader(reprojectedScenario).readFile(testFile); assertPopulationCorrectlyTransformed( originalScenario.getPopulation() , reprojectedScenario.getPopulation() ); }
@Test public void testCoord3dIO() { final Population population = PopulationUtils.createPopulation(ConfigUtils.createConfig() ); final Person person = population.getFactory().createPerson(Id.createPersonId( "Donald Trump")); population.addPerson( person ); final Plan plan = population.getFactory().createPlan(); person.addPlan( plan ); plan.addActivity(population.getFactory().createActivityFromCoord( "speech" , new Coord( 0 , 0 ) )); plan.addActivity(population.getFactory().createActivityFromCoord( "tweet" , new Coord( 0 , 0 , -100 ) )); final String file = utils.getOutputDirectory()+"/population.xml"; new PopulationWriter( population ).writeV6( file ); final Scenario readScenario = ScenarioUtils.createScenario( ConfigUtils.createConfig() ); new PopulationReader( readScenario ).readFile( file ); final Person readPerson = readScenario.getPopulation().getPersons().get( Id.createPersonId( "Donald Trump" ) ); final Activity readSpeach = (Activity) readPerson.getSelectedPlan().getPlanElements().get( 0 ); final Activity readTweet = (Activity) readPerson.getSelectedPlan().getPlanElements().get( 1 ); Assert.assertFalse( "did not expect Z value in "+readSpeach.getCoord() , readSpeach.getCoord().hasZ() ); Assert.assertTrue( "did expect T value in "+readTweet.getCoord() , readTweet.getCoord().hasZ() ); Assert.assertEquals( "unexpected Z value in "+readTweet.getCoord(), -100, readTweet.getCoord().getZ(), MatsimTestUtils.EPSILON ); }
@Test public void testPersonAttributesIO() { final Population population = PopulationUtils.createPopulation(ConfigUtils.createConfig() ); final Person person = population.getFactory().createPerson(Id.createPersonId( "Donald Trump")); population.addPerson( person ); person.getAttributes().putAttribute( "brain" , false ); person.getAttributes().putAttribute( "party" , "republican" ); final String file = utils.getOutputDirectory()+"/population.xml"; new PopulationWriter( population ).writeV6( file ); final Scenario readScenario = ScenarioUtils.createScenario( ConfigUtils.createConfig() ); new PopulationReader( readScenario ).readFile( file ); final Person readPerson = readScenario.getPopulation().getPersons().get( Id.createPersonId( "Donald Trump" ) ); Assert.assertEquals( "Unexpected boolean attribute in " + readPerson.getAttributes(), person.getAttributes().getAttribute( "brain" ) , readPerson.getAttributes().getAttribute( "brain" ) ); Assert.assertEquals( "Unexpected String attribute in " + readPerson.getAttributes(), person.getAttributes().getAttribute( "party" ) , readPerson.getAttributes().getAttribute( "party" ) ); }
@Test public void testLegAttributesIO() { final Population population = PopulationUtils.createPopulation(ConfigUtils.createConfig() ); final Person person = population.getFactory().createPerson(Id.createPersonId( "Donald Trump")); population.addPerson( person ); final Plan plan = population.getFactory().createPlan(); person.addPlan( plan ); final Leg leg = population.getFactory().createLeg( "SUV" ); plan.addActivity( population.getFactory().createActivityFromLinkId( "speech" , Id.createLinkId( 1 ))); plan.addLeg( leg ); plan.addActivity( population.getFactory().createActivityFromLinkId( "tweet" , Id.createLinkId( 2 ))); leg.getAttributes().putAttribute( "mpg" , 0.000001d ); final String file = utils.getOutputDirectory()+"/population.xml"; new PopulationWriter( population ).writeV6( file ); final Scenario readScenario = ScenarioUtils.createScenario( ConfigUtils.createConfig() ); new PopulationReader( readScenario ).readFile( file ); final Person readPerson = readScenario.getPopulation().getPersons().get( Id.createPersonId( "Donald Trump" ) ); final Leg readLeg = (Leg) readPerson.getSelectedPlan().getPlanElements().get( 1 ); Assert.assertEquals( "Unexpected Double attribute in " + readLeg.getAttributes(), leg.getAttributes().getAttribute( "mpg" ) , readLeg.getAttributes().getAttribute( "mpg" ) ); }
@Test public void testActivityAttributesIO() { final Population population = PopulationUtils.createPopulation(ConfigUtils.createConfig() ); final Person person = population.getFactory().createPerson(Id.createPersonId( "Donald Trump")); population.addPerson( person ); final Plan plan = population.getFactory().createPlan(); person.addPlan( plan ); final Activity act = population.getFactory().createActivityFromCoord( "speech" , new Coord( 0 , 0 ) ); plan.addActivity( act ); act.getAttributes().putAttribute( "makes sense" , false ); act.getAttributes().putAttribute( "length" , 1895L ); final String file = utils.getOutputDirectory()+"/population.xml"; new PopulationWriter( population ).writeV6( file ); final Scenario readScenario = ScenarioUtils.createScenario( ConfigUtils.createConfig() ); new PopulationReader( readScenario ).readFile( file ); final Person readPerson = readScenario.getPopulation().getPersons().get( Id.createPersonId( "Donald Trump" ) ); final Activity readAct = (Activity) readPerson.getSelectedPlan().getPlanElements().get( 0 ); Assert.assertEquals( "Unexpected boolean attribute in " + readAct.getAttributes(), act.getAttributes().getAttribute( "makes sense" ) , readAct.getAttributes().getAttribute( "makes sense" ) ); Assert.assertEquals( "Unexpected Long attribute in " + readAct.getAttributes(), act.getAttributes().getAttribute( "length" ) , readAct.getAttributes().getAttribute( "length" ) ); }
@Test public void testPlanAttributesIO() { final Population population = PopulationUtils.createPopulation(ConfigUtils.createConfig() ); final Person person = population.getFactory().createPerson(Id.createPersonId( "Donald Trump")); population.addPerson( person ); final Plan plan = population.getFactory().createPlan(); person.addPlan( plan ); final Leg leg = population.getFactory().createLeg( "SUV" ); plan.addActivity( population.getFactory().createActivityFromLinkId( "speech" , Id.createLinkId( 1 ))); plan.addLeg( leg ); plan.addActivity( population.getFactory().createActivityFromLinkId( "tweet" , Id.createLinkId( 2 ))); plan.getAttributes().putAttribute( "beauty" , 0.000001d ); final String file = utils.getOutputDirectory()+"/population.xml"; new PopulationWriter( population ).writeV6( file ); final Scenario readScenario = ScenarioUtils.createScenario( ConfigUtils.createConfig() ); new PopulationReader( readScenario ).readFile( file ); final Person readPerson = readScenario.getPopulation().getPersons().get( Id.createPersonId( "Donald Trump" ) ); final Plan readPlan = readPerson.getSelectedPlan() ; Assert.assertEquals( plan.getAttributes().getAttribute( "beauty" ) , readPlan.getAttributes().getAttribute( "beauty" ) ); }
@Test public void testPopulationAttributesIO() { final Population population = PopulationUtils.createPopulation(ConfigUtils.createConfig() ); population.getAttributes().putAttribute( "type" , "candidates" ); population.getAttributes().putAttribute( "number" , 2 ); final String file = utils.getOutputDirectory()+"/population.xml"; new PopulationWriter( population ).writeV6( file ); final Scenario readScenario = ScenarioUtils.createScenario( ConfigUtils.createConfig() ); new PopulationReader( readScenario ).readFile( file ); Assert.assertEquals( "Unexpected numeric attribute in " + readScenario.getPopulation().getAttributes(), population.getAttributes().getAttribute( "number" ) , readScenario.getPopulation().getAttributes().getAttribute( "number" ) ); Assert.assertEquals( "Unexpected String attribute in " + readScenario.getPopulation().getAttributes(), population.getAttributes().getAttribute( "type" ) , readScenario.getPopulation().getAttributes().getAttribute( "type" ) ); } }