diff --git a/.github/workflows/mvn-verify.yml b/.github/workflows/mvn-verify.yml index 68f41eec..7f290d61 100644 --- a/.github/workflows/mvn-verify.yml +++ b/.github/workflows/mvn-verify.yml @@ -20,7 +20,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 21 distribution: 'temurin' cache: maven - name: Build with Maven diff --git a/pom.xml b/pom.xml index c02af5f0..d01908dc 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,11 @@ jzy3d https://maven.jzy3d.org/releases/ + + + jogamp + https://jogamp.org/deployment/maven + diff --git a/src/main/java/org/matsim/codeexamples/extensions/bicycle/RunBicycleContribExample.java b/src/main/java/org/matsim/codeexamples/extensions/bicycle/RunBicycleContribExample.java index 5edcb77a..c3093dfe 100644 --- a/src/main/java/org/matsim/codeexamples/extensions/bicycle/RunBicycleContribExample.java +++ b/src/main/java/org/matsim/codeexamples/extensions/bicycle/RunBicycleContribExample.java @@ -5,8 +5,13 @@ import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.TransportMode; +import org.matsim.api.core.v01.network.Link; +import org.matsim.api.core.v01.population.Leg; +import org.matsim.api.core.v01.population.Plan; import org.matsim.contrib.bicycle.BicycleConfigGroup; import org.matsim.contrib.bicycle.BicycleModule; +import org.matsim.contrib.bicycle.BicycleUtils; +import org.matsim.contrib.otfvis.OTFVisLiveModule; import org.matsim.core.config.Config; import org.matsim.core.config.ConfigUtils; import org.matsim.core.config.groups.ScoringConfigGroup; @@ -14,57 +19,66 @@ import org.matsim.core.config.groups.ReplanningConfigGroup; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy; +import org.matsim.core.router.TripStructureUtils; import org.matsim.core.scenario.ScenarioUtils; +import org.matsim.core.utils.io.IOUtils; +import org.matsim.examples.ExamplesUtils; import org.matsim.vehicles.VehicleType; import org.matsim.vehicles.VehicleUtils; import org.matsim.vehicles.VehiclesFactory; +import org.matsim.vis.otfvis.OTFVisConfigGroup; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.net.URL; +import java.util.*; public final class RunBicycleContribExample{ private static final Logger LOG = LogManager.getLogger( RunBicycleContribExample.class ); + private static final String BICYCLE_MODE = "bicycle"; + public static void main(String[] args) { Config config; if (args.length >= 1) { LOG.info("A user-specified config.xml file was provided. Using it..."); config = ConfigUtils.loadConfig(args, new BicycleConfigGroup() ); } else { - LOG.info("No config.xml file was provided. Using 'standard' example files given in this contrib's resources folder."); - // Setting the context like this works when the data is stored under "/matsim/contribs/bicycle/src/main/resources/bicycle_example" - config = ConfigUtils.createConfig("bicycle_example/"); - config.addModule(new BicycleConfigGroup()); - config.network().setInputFile("network_lane.xml"); // Modify this - config.plans().setInputFile("population_1200.xml"); + LOG.info("No config.xml file was provided. Using bicycle_example from ExamplesUtils."); + + config = ConfigUtils.createConfig( ExamplesUtils.getTestScenarioURL( "bicycle_example" ) ); + + config.qsim().setLinkDynamics( QSimConfigGroup.LinkDynamics.PassingQ ); + config.qsim().setTrafficDynamics( QSimConfigGroup.TrafficDynamics.kinematicWaves ); + + config.network().setInputFile("network_normal.xml"); // change this to any of the others that are provided + config.plans().setInputFile("population_3.xml"); - config.replanning().addStrategySettings( new ReplanningConfigGroup.StrategySettings().setStrategyName("ChangeExpBeta" ).setWeight(0.8 ) ); - config.replanning().addStrategySettings( new ReplanningConfigGroup.StrategySettings().setStrategyName("ReRoute" ).setWeight(0.2 ) ); +// config.replanning().addStrategySettings( new ReplanningConfigGroup.StrategySettings().setStrategyName("ChangeExpBeta" ).setWeight(0.8 ) ); +// config.replanning().addStrategySettings( new ReplanningConfigGroup.StrategySettings().setStrategyName("ReRoute" ).setWeight(0.2 ) ); config.scoring().addActivityParams( new ScoringConfigGroup.ActivityParams("home").setTypicalDuration(12*60*60 ) ); config.scoring().addActivityParams( new ScoringConfigGroup.ActivityParams("work").setTypicalDuration(8*60*60 ) ); - config.scoring().addModeParams( new ScoringConfigGroup.ModeParams("bicycle").setConstant(0. ).setMarginalUtilityOfDistance(-0.0004 ).setMarginalUtilityOfTraveling(-6.0 ).setMonetaryDistanceRate(0. ) ); + config.scoring().addModeParams( new ScoringConfigGroup.ModeParams( + BICYCLE_MODE ).setConstant(0. ).setMarginalUtilityOfDistance(-0.0004 ).setMarginalUtilityOfTraveling(-6.0 ).setMonetaryDistanceRate(0. ) ); config.global().setNumberOfThreads(1 ); config.controller().setOverwriteFileSetting( OutputDirectoryHierarchy.OverwriteFileSetting.deleteDirectoryIfExists ); - config.controller().setLastIteration(100); // Modify if motorized interaction is used + config.controller().setLastIteration(0); } - BicycleConfigGroup bicycleConfigGroup = ConfigUtils.addOrGetModule( config, BicycleConfigGroup.class ); - bicycleConfigGroup.setBicycleMode( "bicycle" ); - bicycleConfigGroup.setMarginalUtilityOfInfrastructure_m(-0.0002); - bicycleConfigGroup.setMarginalUtilityOfComfort_m(-0.0002); - bicycleConfigGroup.setMarginalUtilityOfGradient_m_100m(-0.02); - bicycleConfigGroup.setMaxBicycleSpeedForRouting(4.16666666); + BicycleConfigGroup bicycleConfig = ConfigUtils.addOrGetModule( config, BicycleConfigGroup.class ); + bicycleConfig.setBicycleMode( BICYCLE_MODE ); +// bicycleConfig.setMarginalUtilityOfInfrastructure_m(-0.0002); +// bicycleConfig.setMarginalUtilityOfComfort_m(-0.0002); +// bicycleConfig.setMarginalUtilityOfGradient_m_100m(-0.02); +// bicycleConfig.setMaxBicycleSpeedForRouting(4.16666666); - List mainModeList = Arrays.asList( "bicycle", TransportMode.car); + Set mainModeSet = new LinkedHashSet<>( Arrays.asList( BICYCLE_MODE, TransportMode.car ) ); - config.qsim().setMainModes(mainModeList ); + config.qsim().setMainModes(mainModeSet ); - config.routing().setNetworkModes(mainModeList ); + config.routing().setNetworkModes(mainModeSet ); // === @@ -73,16 +87,32 @@ public static void main(String[] args) { // set config such that the mode vehicles come from vehicles data: scenario.getConfig().qsim().setVehiclesSource( QSimConfigGroup.VehiclesSource.modeVehicleTypesFromVehiclesData ); - // now put hte mode vehicles into the vehicles data: + // now put the mode vehicles into the vehicles data: final VehiclesFactory vf = VehicleUtils.getFactory(); scenario.getVehicles().addVehicleType( vf.createVehicleType( Id.create(TransportMode.car, VehicleType.class ) ).setNetworkMode( TransportMode.car ) ); - scenario.getVehicles().addVehicleType( vf.createVehicleType(Id.create("bicycle", VehicleType.class ) ).setNetworkMode( "bicycle" ).setMaximumVelocity(4.16666666 ).setPcuEquivalents(0.25 ) ); + scenario.getVehicles().addVehicleType( vf.createVehicleType(Id.create( BICYCLE_MODE, VehicleType.class ) ).setNetworkMode( BICYCLE_MODE ).setMaximumVelocity(4.16666666 ).setPcuEquivalents(0.25 ) ); + +// // create a bicycle expressway +// scenario.getNetwork().getLinks().get( Id.createLinkId( 2 ) ).getAttributes().putAttribute( BicycleUtils.BICYCLE_INFRASTRUCTURE_SPEED_FACTOR, 10. ); + +// // allow cars on all links ... and switch one person to car: +// for( Link link : scenario.getNetwork().getLinks().values() ){ +// link.setAllowedModes( mainModeSet ); +// } +// Plan plan = scenario.getPopulation().getPersons().get( Id.createPersonId( 1 ) ).getSelectedPlan(); +// for( Leg leg : TripStructureUtils.getLegs( plan ) ){ +// leg.setMode( TransportMode.car ); +// } // === Controler controler = new Controler(scenario); controler.addOverridingModule(new BicycleModule() ); + controler.addOverridingModule( new OTFVisLiveModule() ); + OTFVisConfigGroup otfConfig = ConfigUtils.addOrGetModule( config, OTFVisConfigGroup.class ); + otfConfig.setAgentSize( otfConfig.getAgentSize()*2 ); + controler.run(); } diff --git a/src/main/java/org/matsim/codeexamples/extensions/drt/RunMelunPrebooking.java b/src/main/java/org/matsim/codeexamples/extensions/drt/RunMelunPrebooking.java index 2cdeb01c..7be7dbe6 100644 --- a/src/main/java/org/matsim/codeexamples/extensions/drt/RunMelunPrebooking.java +++ b/src/main/java/org/matsim/codeexamples/extensions/drt/RunMelunPrebooking.java @@ -14,6 +14,7 @@ import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.population.Person; +import org.matsim.contrib.common.zones.systems.grid.square.SquareGridZoneSystemParams; import org.matsim.contrib.drt.extension.insertion.DrtInsertionModule; import org.matsim.contrib.drt.optimizer.insertion.DrtInsertionSearchParams; import org.matsim.contrib.drt.optimizer.insertion.extensive.ExtensiveInsertionSearchParams; @@ -21,11 +22,8 @@ import org.matsim.contrib.drt.prebooking.logic.ProbabilityBasedPrebookingLogic; import org.matsim.contrib.drt.routing.DrtRoute; import org.matsim.contrib.drt.routing.DrtRouteFactory; -import org.matsim.contrib.drt.run.DrtConfigGroup; +import org.matsim.contrib.drt.run.*; import org.matsim.contrib.drt.run.DrtConfigGroup.OperationalScheme; -import org.matsim.contrib.drt.run.DrtConfigs; -import org.matsim.contrib.drt.run.MultiModeDrtConfigGroup; -import org.matsim.contrib.drt.run.MultiModeDrtModule; import org.matsim.contrib.dvrp.fleet.DvrpVehicle; import org.matsim.contrib.dvrp.fleet.FleetSpecification; import org.matsim.contrib.dvrp.fleet.FleetSpecificationImpl; @@ -81,7 +79,9 @@ public static class RunSettings { public static void runSingle(File populationPath, File networkPath, File outputPath, RunSettings settings) { // configuration - Config config = ConfigUtils.createConfig(new MultiModeDrtConfigGroup(), new DvrpConfigGroup()); + DvrpConfigGroup dvrpConfigGroup = new DvrpConfigGroup(); + dvrpConfigGroup.getTravelTimeMatrixParams().addParameterSet(new SquareGridZoneSystemParams()); + Config config = ConfigUtils.createConfig(new MultiModeDrtConfigGroup(), dvrpConfigGroup); config.qsim().setSimStarttimeInterpretation(StarttimeInterpretation.onlyUseStarttime); config.qsim().setStartTime(0.0); @@ -117,9 +117,10 @@ public static void runSingle(File populationPath, File networkPath, File outputP drtConfig.mode = "drt"; drtConfig.operationalScheme = OperationalScheme.door2door; drtConfig.stopDuration = 60.0; - drtConfig.maxWaitTime = settings.maxWaitTime; - drtConfig.maxTravelTimeAlpha = settings.maxTravelTimeAlpha; - drtConfig.maxTravelTimeBeta = settings.maxWaitTime; + DrtOptimizationConstraintsParams constraintsParam = drtConfig.getDrtOptimizationConstraintsParam(); + constraintsParam.maxWaitTime = settings.maxWaitTime; + constraintsParam.maxTravelTimeAlpha = settings.maxTravelTimeAlpha; + constraintsParam.maxTravelTimeBeta = settings.maxWaitTime; DrtInsertionSearchParams insertionSearchParams = new ExtensiveInsertionSearchParams(); drtConfig.addDrtInsertionSearchParams(insertionSearchParams); diff --git a/src/main/java/org/matsim/codeexamples/extensions/dvrp/RunDrtExample.java b/src/main/java/org/matsim/codeexamples/extensions/dvrp/RunDrtExample.java index 37607a7e..87c4272b 100644 --- a/src/main/java/org/matsim/codeexamples/extensions/dvrp/RunDrtExample.java +++ b/src/main/java/org/matsim/codeexamples/extensions/dvrp/RunDrtExample.java @@ -1,37 +1,29 @@ package org.matsim.codeexamples.extensions.dvrp; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.TransportMode; -import org.matsim.api.core.v01.events.Event; +import org.matsim.contrib.common.zones.systems.grid.square.SquareGridZoneSystemParams; import org.matsim.contrib.drt.optimizer.insertion.extensive.ExtensiveInsertionSearchParams; import org.matsim.contrib.drt.routing.DrtRoute; import org.matsim.contrib.drt.routing.DrtRouteFactory; -import org.matsim.contrib.drt.run.DrtConfigGroup; -import org.matsim.contrib.drt.run.DrtConfigs; -import org.matsim.contrib.drt.run.MultiModeDrtConfigGroup; -import org.matsim.contrib.drt.run.MultiModeDrtModule; +import org.matsim.contrib.drt.run.*; import org.matsim.contrib.dvrp.run.DvrpConfigGroup; import org.matsim.contrib.dvrp.run.DvrpModule; import org.matsim.contrib.dvrp.run.DvrpQSimComponents; import org.matsim.contrib.otfvis.OTFVisLiveModule; import org.matsim.core.config.Config; import org.matsim.core.config.ConfigUtils; -import org.matsim.core.config.groups.ScoringConfigGroup.ModeParams; import org.matsim.core.config.groups.QSimConfigGroup; import org.matsim.core.config.groups.QSimConfigGroup.SnapshotStyle; import org.matsim.core.config.groups.ReplanningConfigGroup.StrategySettings; -import org.matsim.core.controler.AbstractModule; +import org.matsim.core.config.groups.ScoringConfigGroup.ModeParams; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; -import org.matsim.core.events.handler.BasicEventHandler; -import org.matsim.core.events.handler.EventHandler; import org.matsim.core.replanning.strategies.DefaultPlanStrategiesModule.DefaultSelector; import org.matsim.core.replanning.strategies.DefaultPlanStrategiesModule.DefaultStrategy; import org.matsim.core.scenario.ScenarioUtils; -import org.matsim.core.utils.io.IOUtils; -import org.matsim.examples.ExamplesUtils; import org.matsim.vis.otfvis.OTFVisConfigGroup; class RunDrtExample{ @@ -71,6 +63,7 @@ public static void run(boolean otfvis, String... args ){ @SuppressWarnings("unused") DvrpConfigGroup dvrpConfig = ConfigUtils.addOrGetModule( config, DvrpConfigGroup.class ); + dvrpConfig.getTravelTimeMatrixParams().addParameterSet(new SquareGridZoneSystemParams()); // (config group needs to be "materialized") MultiModeDrtConfigGroup multiModeDrtCfg = ConfigUtils.addOrGetModule(config, MultiModeDrtConfigGroup.class); @@ -78,10 +71,10 @@ public static void run(boolean otfvis, String... args ){ DrtConfigGroup drtConfig = new DrtConfigGroup(); drtConfig.mode = DRT_A; drtConfig.stopDuration = 60.; - drtConfig.maxWaitTime=900; - drtConfig.maxTravelTimeAlpha = 1.3; - drtConfig.maxTravelTimeBeta=10. * 60.; - drtConfig.rejectRequestIfMaxWaitOrTravelTimeViolated= false ; + drtConfig.getDrtOptimizationConstraintsParam().maxWaitTime=900; + drtConfig.getDrtOptimizationConstraintsParam().maxTravelTimeAlpha = 1.3; + drtConfig.getDrtOptimizationConstraintsParam().maxTravelTimeBeta=10. * 60.; + drtConfig.getDrtOptimizationConstraintsParam().rejectRequestIfMaxWaitOrTravelTimeViolated= false ; drtConfig.vehiclesFile="one_shared_taxi_vehicles_A.xml"; drtConfig.changeStartLinkToLastLinkInSchedule=true; drtConfig.addParameterSet( new ExtensiveInsertionSearchParams() ); @@ -91,10 +84,10 @@ public static void run(boolean otfvis, String... args ){ DrtConfigGroup drtConfig = new DrtConfigGroup(); drtConfig.mode = DRT_B; drtConfig.stopDuration = 60.; - drtConfig.maxWaitTime=900; - drtConfig.maxTravelTimeAlpha = 1.3; - drtConfig.maxTravelTimeBeta=10. * 60.; - drtConfig.rejectRequestIfMaxWaitOrTravelTimeViolated= false ; + drtConfig.getDrtOptimizationConstraintsParam().maxWaitTime=900; + drtConfig.getDrtOptimizationConstraintsParam().maxTravelTimeAlpha = 1.3; + drtConfig.getDrtOptimizationConstraintsParam().maxTravelTimeBeta=10. * 60.; + drtConfig.getDrtOptimizationConstraintsParam().rejectRequestIfMaxWaitOrTravelTimeViolated= false ; drtConfig.vehiclesFile="one_shared_taxi_vehicles_B.xml"; drtConfig.changeStartLinkToLastLinkInSchedule=true; drtConfig.addParameterSet( new ExtensiveInsertionSearchParams() ); @@ -104,10 +97,11 @@ public static void run(boolean otfvis, String... args ){ DrtConfigGroup drtConfig = new DrtConfigGroup(); drtConfig.mode = DRT_C; drtConfig.stopDuration = 60.; - drtConfig.maxWaitTime=900; - drtConfig.maxTravelTimeAlpha = 1.3; - drtConfig.maxTravelTimeBeta=10. * 60.; - drtConfig.rejectRequestIfMaxWaitOrTravelTimeViolated= false ; + DrtOptimizationConstraintsParams constraintsParam = drtConfig.getDrtOptimizationConstraintsParam(); + constraintsParam.maxWaitTime=900; + constraintsParam.maxTravelTimeAlpha = 1.3; + constraintsParam.maxTravelTimeBeta=10. * 60.; + constraintsParam.rejectRequestIfMaxWaitOrTravelTimeViolated= false ; drtConfig.vehiclesFile="one_shared_taxi_vehicles_C.xml"; drtConfig.changeStartLinkToLastLinkInSchedule=true; drtConfig.addParameterSet( new ExtensiveInsertionSearchParams() ); diff --git a/src/main/java/org/matsim/codeexamples/integration/RunMultipleModesExample.java b/src/main/java/org/matsim/codeexamples/integration/RunMultipleModesExample.java index 363cbf7c..5851247f 100644 --- a/src/main/java/org/matsim/codeexamples/integration/RunMultipleModesExample.java +++ b/src/main/java/org/matsim/codeexamples/integration/RunMultipleModesExample.java @@ -2,21 +2,26 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.TransportMode; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.population.Person; import org.matsim.core.config.Config; import org.matsim.core.config.ConfigUtils; +import org.matsim.core.config.groups.QSimConfigGroup; import org.matsim.core.config.groups.ReplanningConfigGroup.StrategySettings; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; +import org.matsim.core.controler.OutputDirectoryHierarchy; import org.matsim.core.replanning.strategies.DefaultPlanStrategiesModule; import org.matsim.core.router.util.TravelTime; import org.matsim.core.scenario.ScenarioUtils; import org.matsim.core.utils.io.IOUtils; import org.matsim.examples.ExamplesUtils; import org.matsim.vehicles.Vehicle; +import org.matsim.vehicles.VehicleType; +import org.matsim.vehicles.VehicleUtils; import java.net.URL; import java.util.Arrays; @@ -60,6 +65,16 @@ static Scenario prepareScenario( Config config ){ Set modes = new LinkedHashSet<>( Arrays.asList( TransportMode.car, TransportMode.bike )); link.setAllowedModes( modes ); } + + // add vehicle types for both modes (they are only used, if the vehicles source is set correspondingly) + scenario.getVehicles().addVehicleType( VehicleUtils.getFactory().createVehicleType(Id.create("car", VehicleType.class)) ); + + VehicleType bike = VehicleUtils.getFactory().createVehicleType(Id.create("bike", VehicleType.class)) + .setNetworkMode("bike") + .setMaximumVelocity(5.); + + scenario.getVehicles().addVehicleType(bike); + return scenario; } @@ -67,6 +82,10 @@ static Config prepareConfig(){ final URL url = IOUtils.extendUrl( ExamplesUtils.getTestScenarioURL( "equil" ), "config.xml" ); log.warn("url=" + url) ; Config config = ConfigUtils.loadConfig( url ); + config.controller().setOverwriteFileSetting(OutputDirectoryHierarchy.OverwriteFileSetting.deleteDirectoryIfExists); + + // in case you want the different modes to use different vehicle types, you need to set this + config.qsim().setVehiclesSource(QSimConfigGroup.VehiclesSource.modeVehicleTypesFromVehiclesData); { // add strategy that switches between car and bike: StrategySettings stratSets = new StrategySettings( ) ; diff --git a/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgent/RunAddAgentSourceExample.java b/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgent/RunAddAgentSourceExample.java index f3fe04be..019b8e6a 100644 --- a/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgent/RunAddAgentSourceExample.java +++ b/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgent/RunAddAgentSourceExample.java @@ -78,7 +78,7 @@ public void insertAgentsIntoMobsim(){ qsim.insertAgentIntoMobsim( ag ); // insert vehicle: - final Vehicle vehicle = VehicleUtils.getFactory().createVehicle( Id.create( ag.getId(), Vehicle.class ), VehicleUtils.getDefaultVehicleType() ); + final Vehicle vehicle = VehicleUtils.getFactory().createVehicle( Id.create( ag.getId(), Vehicle.class ), VehicleUtils.createDefaultVehicleType() ); QVehicleImpl qVeh = new QVehicleImpl( vehicle ); qsim.addParkedVehicle( qVeh, ag.getCurrentLinkId() ); diff --git a/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgentUsingRouter/RunOwnMobsimAgentUsingRouterExample.java b/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgentUsingRouter/RunOwnMobsimAgentUsingRouterExample.java index 36187c22..2c7e5563 100644 --- a/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgentUsingRouter/RunOwnMobsimAgentUsingRouterExample.java +++ b/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgentUsingRouter/RunOwnMobsimAgentUsingRouterExample.java @@ -79,7 +79,7 @@ public void insertAgentsIntoMobsim() { qsim.insertAgentIntoMobsim(ag); // insert vehicle: - final Vehicle vehicle = VehicleUtils.getFactory().createVehicle(Id.create(ag.getId(), Vehicle.class), VehicleUtils.getDefaultVehicleType()); + final Vehicle vehicle = VehicleUtils.getFactory().createVehicle(Id.create(ag.getId(), Vehicle.class), VehicleUtils.createDefaultVehicleType()); final Id linkId4VehicleInsertion = Id.createLinkId(1); // qsim.createAndParkVehicleOnLink(vehicle, linkId4VehicleInsertion); final QVehicle qVeh = new QVehicleImpl( vehicle ) ; diff --git a/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgentWithPerception/RunOwnMobsimAgentWithPerceptionExample.java b/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgentWithPerception/RunOwnMobsimAgentWithPerceptionExample.java index 0d8c2da4..fa9bbdd4 100644 --- a/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgentWithPerception/RunOwnMobsimAgentWithPerceptionExample.java +++ b/src/main/java/org/matsim/codeexamples/mobsim/ownMobsimAgentWithPerception/RunOwnMobsimAgentWithPerceptionExample.java @@ -103,7 +103,7 @@ public void insertAgentsIntoMobsim() { // insert vehicle: final Id vehId = Id.create("myVeh", Vehicle.class); - final VehicleType vehType = VehicleUtils.getDefaultVehicleType(); + final VehicleType vehType = VehicleUtils.createDefaultVehicleType(); final VehiclesFactory vehFactory = VehicleUtils.getFactory(); final Vehicle vehicle = vehFactory.createVehicle(vehId, vehType); // qsim.createAndParkVehicleOnLink(vehicle, startingLinkId); diff --git a/src/main/java/org/matsim/codeexamples/network/RunCreateNetworkSHP.java b/src/main/java/org/matsim/codeexamples/network/RunCreateNetworkSHP.java index 2d1ae2df..67524fae 100644 --- a/src/main/java/org/matsim/codeexamples/network/RunCreateNetworkSHP.java +++ b/src/main/java/org/matsim/codeexamples/network/RunCreateNetworkSHP.java @@ -19,6 +19,8 @@ package org.matsim.codeexamples.network; +import org.geotools.api.feature.simple.SimpleFeature; +import org.geotools.api.referencing.crs.CoordinateReferenceSystem; import org.locationtech.jts.geom.Coordinate; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; @@ -29,11 +31,10 @@ import org.matsim.core.network.NetworkUtils; import org.matsim.core.scenario.ScenarioUtils; import org.matsim.core.utils.geometry.geotools.MGC; +import org.matsim.core.utils.gis.GeoFileWriter; import org.matsim.core.utils.gis.PointFeatureFactory; import org.matsim.core.utils.gis.PolylineFeatureFactory; import org.matsim.core.utils.gis.ShapeFileWriter; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.referencing.crs.CoordinateReferenceSystem; import java.util.ArrayList; import java.util.Collection; @@ -70,7 +71,7 @@ public static void main(String[] args) { new Object[]{link.getId().toString(), link.getFromNode().getId().toString(), link.getToNode().getId().toString(), link.getLength(), NetworkUtils.getType(link), link.getCapacity(), link.getFreespeed()}, null); features.add(ft); } - ShapeFileWriter.writeGeometries(features, "output/network_links.shp"); + GeoFileWriter.writeGeometries(features, "output/network_links.shp"); features = new ArrayList<>(); PointFeatureFactory nodeFactory = new PointFeatureFactory.Builder(). diff --git a/src/main/java/org/matsim/codeexamples/population/demandGenerationFromShapefile/CreateDemand.java b/src/main/java/org/matsim/codeexamples/population/demandGenerationFromShapefile/CreateDemand.java index e4e42702..270b6dcc 100644 --- a/src/main/java/org/matsim/codeexamples/population/demandGenerationFromShapefile/CreateDemand.java +++ b/src/main/java/org/matsim/codeexamples/population/demandGenerationFromShapefile/CreateDemand.java @@ -7,6 +7,7 @@ import org.apache.commons.math3.util.Pair; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.geotools.api.feature.simple.SimpleFeature; import org.locationtech.jts.geom.*; import org.matsim.api.core.v01.Coord; import org.matsim.api.core.v01.Id; @@ -14,8 +15,8 @@ import org.matsim.api.core.v01.population.*; import org.matsim.core.config.ConfigUtils; import org.matsim.core.population.PopulationUtils; +import org.matsim.core.utils.gis.GeoFileReader; import org.matsim.core.utils.gis.ShapeFileReader; -import org.opengis.feature.simple.SimpleFeature; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -80,14 +81,14 @@ class CreateDemand { // read in the shape file and store the geometries according to their region identifier stored as 'RS' in the // shape file - regions = ShapeFileReader.getAllFeatures(sampleFolder.resolve("thueringen-kreise.shp").toString()).stream() + regions = GeoFileReader.getAllFeatures(sampleFolder.resolve("thueringen-kreise.shp").toString()).stream() .collect(Collectors.toMap(feature -> (String) feature.getAttribute("RS"), feature -> (Geometry) feature.getDefaultGeometry())); // Read in landcover data to make people stay in populated areas // we are using a weighted distribution by area-size, so that small areas receive less inhabitants than more // populated ones. List> weightedGeometries = new ArrayList<>(); - for (SimpleFeature feature : ShapeFileReader.getAllFeatures(sampleFolder.resolve("landcover.shp").toString())) { + for (SimpleFeature feature : GeoFileReader.getAllFeatures(sampleFolder.resolve("landcover.shp").toString())) { Geometry geometry = (Geometry) feature.getDefaultGeometry(); weightedGeometries.add(new Pair<>(geometry, geometry.getArea())); } diff --git a/src/main/java/org/matsim/codeexamples/programming/example21tutorialTUBclass/demand/CreateDemand.java b/src/main/java/org/matsim/codeexamples/programming/example21tutorialTUBclass/demand/CreateDemand.java index 103419f4..3d62ab85 100644 --- a/src/main/java/org/matsim/codeexamples/programming/example21tutorialTUBclass/demand/CreateDemand.java +++ b/src/main/java/org/matsim/codeexamples/programming/example21tutorialTUBclass/demand/CreateDemand.java @@ -22,6 +22,7 @@ import java.util.Map; import java.util.Random; +import org.geotools.api.feature.simple.SimpleFeature; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.Point; @@ -43,11 +44,11 @@ import org.matsim.core.utils.geometry.CoordinateTransformation; import org.matsim.core.utils.geometry.geotools.MGC; import org.matsim.core.utils.geometry.transformations.GeotoolsTransformation; +import org.matsim.core.utils.gis.GeoFileReader; import org.matsim.core.utils.gis.ShapeFileReader; import org.matsim.core.utils.io.tabularFileParser.TabularFileHandler; import org.matsim.core.utils.io.tabularFileParser.TabularFileParser; import org.matsim.core.utils.io.tabularFileParser.TabularFileParserConfig; -import org.opengis.feature.simple.SimpleFeature; /** * @author jbischoff @@ -161,7 +162,7 @@ public Map readShapeFile(String filename, String attrString){ Map shapeMap = new HashMap(); - for (SimpleFeature ft : ShapeFileReader.getAllFeatures(filename)) { + for (SimpleFeature ft : GeoFileReader.getAllFeatures(filename)) { GeometryFactory geometryFactory= new GeometryFactory(); WKTReader wktReader = new WKTReader(geometryFactory);