Skip to content

Commit

Permalink
scale counts to model scale
Browse files Browse the repository at this point in the history
  • Loading branch information
simei94 committed Mar 22, 2024
1 parent 964e294 commit a7148b7
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 1 deletion.
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,9 @@ input/mexico-city-v1.0.counts_car.2017.xml: ../../public-svn/matsim/scenarios/co
--manual-matched-counts input/manualLinkAssignment.csv\
--year 2017

$(sc) prepare scale-counts\
--input $@

# create first scenario specific config
input/mexico-city-v1.0-1pct.input.config.xml: ./input/v1.0 ./input
$(sc) prepare config\
Expand Down
66 changes: 66 additions & 0 deletions src/main/java/org/matsim/prepare/AdaptCountsScale.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package org.matsim.prepare;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.matsim.api.core.v01.TransportMode;
import org.matsim.api.core.v01.network.Link;
import org.matsim.application.MATSimAppCommand;
import org.matsim.counts.*;
import picocli.CommandLine;

import java.nio.file.Path;
import java.util.OptionalDouble;

@CommandLine.Command(name = "scale-counts", description = "Set MATSim count to the wished scale.")
public class AdaptCountsScale implements MATSimAppCommand {
private Logger log = LogManager.getLogger(AdaptCountsScale.class);

@CommandLine.Option(names = "--input", description = "input counts file", required = true)
Path input;
@CommandLine.Option(names = "--output", description = "output counts file")
Path output;
@CommandLine.Option(names = "--scale", description = "scale to be applied to count values.", defaultValue = "1")
double scale;
@CommandLine.Option(names = "--mode", description = "Transport mode of counts.", defaultValue = TransportMode.car)
String mode;


public static void main(String[] args) {
new AdaptCountsScale().execute(args);
}

@Override
public Integer call() throws Exception {

Counts<Link> counts = new Counts<>();

MatsimCountsReader reader = new MatsimCountsReader(counts);
reader.readFile(input.toString());

for (MeasurementLocation<Link> loc : counts.getMeasureLocations().values()) {
for (int i = 0; i < 24; i++) {
OptionalDouble volume = loc.getVolumesForMode(mode).getAtHour(i);
double hourlyVolume;
if (volume.isPresent()) {
hourlyVolume = volume.getAsDouble();
} else {
return 2;
}
loc.getVolumesForMode(mode).setAtHour(i, hourlyVolume * scale / 100);
}
}

counts.setDescription(counts.getDescription() + ". A scale of " + scale + "% was applied to the hourly count values.");

String outputPath = input.toString();
if (MexicoCityUtils.isDefined(output)) {
outputPath = output.toString();
}

new CountsWriter(counts).write(outputPath);

log.info("Counts with an applied scale of {} % were written to {}.", scale, outputPath);

return 0;
}
}
2 changes: 1 addition & 1 deletion src/main/java/org/matsim/run/RunMexicoCityScenario.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@

@CommandLine.Command(header = ":: Open Mexico-City Scenario ::", version = RunMexicoCityScenario.VERSION, mixinStandardHelpOptions = true)
@MATSimApplication.Prepare({
AdjustActivityToLinkDistances.class, ChangeFacilities.class, ChangeModeNames.class, CheckActivityFacilities.class, CheckCarAvailability.class, CleanNetwork.class, CorrectPtVehicleTypes.class,
AdaptCountsScale.class, AdjustActivityToLinkDistances.class, ChangeFacilities.class, ChangeModeNames.class, CheckActivityFacilities.class, CheckCarAvailability.class, CleanNetwork.class, CorrectPtVehicleTypes.class,
CreateCommuterRelations.class, CreateCountsFromDatosVialesPortal.class, CreateLandUseShp.class, CreateMATSimFacilities.class, CreateMetropolitanAreaPopulation.class,
CreateMexicoCityPopulation.class, CreateMexicoCityScenarioConfig.class, CreateMexicoCityNetworkFromSumo.class, CreateTransitScheduleFromGtfs.class, CreateVehicleTypes.class,
DownSamplePopulation.class, ExtractHomeCoordinates.class, FixSubtourModes.class, GenerateShortDistanceTrips.class, InitLocationChoice.class, MergePopulations.class,
Expand Down

0 comments on commit a7148b7

Please sign in to comment.