1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

enable plotter to switch coordinates

This commit is contained in:
oblonski 2015-03-27 14:40:32 +01:00
parent 7280e343ad
commit 053840e333

View file

@ -178,6 +178,8 @@ public class Plotter {
private double scalingFactor = 1.; private double scalingFactor = 1.;
private boolean invert = false;
/** /**
* Constructs Plotter with problem. Thus only the problem can be rendered. * Constructs Plotter with problem. Thus only the problem can be rendered.
* *
@ -230,6 +232,11 @@ public class Plotter {
return this; return this;
} }
public Plotter invertCoordinates(boolean invert){
this.invert = invert;
return this;
}
/** /**
* Sets a bounding box to zoom in to certain areas. * Sets a bounding box to zoom in to certain areas.
* *
@ -461,15 +468,15 @@ public class Plotter {
if(route.isEmpty()) continue; if(route.isEmpty()) continue;
XYSeries series = new XYSeries(counter, false, true); XYSeries series = new XYSeries(counter, false, true);
Coordinate startCoord = locations.getCoord(route.getStart().getLocation().getId()); Coordinate startCoord = getCoordinate(locations.getCoord(route.getStart().getLocation().getId()));
series.add(startCoord.getX()*scalingFactor, startCoord.getY()*scalingFactor); series.add(startCoord.getX()*scalingFactor, startCoord.getY()*scalingFactor);
for(TourActivity act : route.getTourActivities().getActivities()){ for(TourActivity act : route.getTourActivities().getActivities()){
Coordinate coord = locations.getCoord(act.getLocation().getId()); Coordinate coord = getCoordinate(locations.getCoord(act.getLocation().getId()));
series.add(coord.getX()*scalingFactor, coord.getY()*scalingFactor); series.add(coord.getX()*scalingFactor, coord.getY()*scalingFactor);
} }
Coordinate endCoord = locations.getCoord(route.getEnd().getLocation().getId()); Coordinate endCoord = getCoordinate(locations.getCoord(route.getEnd().getLocation().getId()));
series.add(endCoord.getX()*scalingFactor, endCoord.getY()*scalingFactor); series.add(endCoord.getX()*scalingFactor, endCoord.getY()*scalingFactor);
coll.addSeries(series); coll.addSeries(series);
@ -498,8 +505,10 @@ public class Plotter {
shipmentSeries = new XYSeries(sCounter, false, true); shipmentSeries = new XYSeries(sCounter, false, true);
sCounter++; sCounter++;
} }
shipmentSeries.add(shipment.getPickupLocation().getCoordinate().getX()*scalingFactor, shipment.getPickupLocation().getCoordinate().getY()*scalingFactor); Coordinate pickupCoordinate = getCoordinate(shipment.getPickupLocation().getCoordinate());
shipmentSeries.add(shipment.getDeliveryLocation().getCoordinate().getX()*scalingFactor, shipment.getDeliveryLocation().getCoordinate().getY()*scalingFactor); Coordinate delCoordinate = getCoordinate(shipment.getDeliveryLocation().getCoordinate());
shipmentSeries.add(pickupCoordinate.getX()*scalingFactor, pickupCoordinate.getY()*scalingFactor);
shipmentSeries.add(delCoordinate.getX()*scalingFactor, delCoordinate.getY()*scalingFactor);
coll.addSeries(shipmentSeries); coll.addSeries(shipmentSeries);
} }
return coll; return coll;
@ -508,13 +517,15 @@ public class Plotter {
private void addJob(XYSeries activities, Job job) { private void addJob(XYSeries activities, Job job) {
if(job instanceof Shipment){ if(job instanceof Shipment){
Shipment s = (Shipment)job; Shipment s = (Shipment)job;
XYDataItem dataItem = new XYDataItem(s.getPickupLocation().getCoordinate().getX()*scalingFactor, s.getPickupLocation().getCoordinate().getY()*scalingFactor); Coordinate pickupCoordinate = getCoordinate(s.getPickupLocation().getCoordinate());
XYDataItem dataItem = new XYDataItem(pickupCoordinate.getX()*scalingFactor, pickupCoordinate.getY()*scalingFactor);
activities.add(dataItem); activities.add(dataItem);
addLabel(s, dataItem); addLabel(s, dataItem);
markItem(dataItem,Activity.PICKUP); markItem(dataItem,Activity.PICKUP);
containsPickupAct = true; containsPickupAct = true;
XYDataItem dataItem2 = new XYDataItem(s.getDeliveryLocation().getCoordinate().getX()*scalingFactor, s.getDeliveryLocation().getCoordinate().getY()*scalingFactor); Coordinate deliveryCoordinate = getCoordinate(s.getDeliveryLocation().getCoordinate());
XYDataItem dataItem2 = new XYDataItem(deliveryCoordinate.getX()*scalingFactor, deliveryCoordinate.getY()*scalingFactor);
activities.add(dataItem2); activities.add(dataItem2);
addLabel(s, dataItem2); addLabel(s, dataItem2);
markItem(dataItem2,Activity.DELIVERY); markItem(dataItem2,Activity.DELIVERY);
@ -522,7 +533,7 @@ public class Plotter {
} }
else if(job instanceof Pickup){ else if(job instanceof Pickup){
Pickup service = (Pickup)job; Pickup service = (Pickup)job;
Coordinate coord = service.getLocation().getCoordinate(); Coordinate coord = getCoordinate(service.getLocation().getCoordinate());
XYDataItem dataItem = new XYDataItem(coord.getX()*scalingFactor, coord.getY()*scalingFactor); XYDataItem dataItem = new XYDataItem(coord.getX()*scalingFactor, coord.getY()*scalingFactor);
activities.add(dataItem); activities.add(dataItem);
addLabel(service, dataItem); addLabel(service, dataItem);
@ -531,7 +542,7 @@ public class Plotter {
} }
else if(job instanceof Delivery){ else if(job instanceof Delivery){
Delivery service = (Delivery)job; Delivery service = (Delivery)job;
Coordinate coord = service.getLocation().getCoordinate(); Coordinate coord = getCoordinate(service.getLocation().getCoordinate());
XYDataItem dataItem = new XYDataItem(coord.getX()*scalingFactor, coord.getY()*scalingFactor); XYDataItem dataItem = new XYDataItem(coord.getX()*scalingFactor, coord.getY()*scalingFactor);
activities.add(dataItem); activities.add(dataItem);
addLabel(service, dataItem); addLabel(service, dataItem);
@ -540,7 +551,7 @@ public class Plotter {
} }
else if(job instanceof Service){ else if(job instanceof Service){
Service service = (Service)job; Service service = (Service)job;
Coordinate coord = service.getLocation().getCoordinate(); Coordinate coord = getCoordinate(service.getLocation().getCoordinate());
XYDataItem dataItem = new XYDataItem(coord.getX()*scalingFactor, coord.getY()*scalingFactor); XYDataItem dataItem = new XYDataItem(coord.getX()*scalingFactor, coord.getY()*scalingFactor);
activities.add(dataItem); activities.add(dataItem);
addLabel(service, dataItem); addLabel(service, dataItem);
@ -579,17 +590,24 @@ public class Plotter {
return builder.toString(); return builder.toString();
} }
private Coordinate getCoordinate(Coordinate coordinate){
if(invert){
return Coordinate.newInstance(coordinate.getY(),coordinate.getX());
}
return coordinate;
}
private void retrieveActivities(VehicleRoutingProblem vrp) throws NoLocationFoundException{ private void retrieveActivities(VehicleRoutingProblem vrp) throws NoLocationFoundException{
activities = new XYSeries("activities", false, true); activities = new XYSeries("activities", false, true);
for(Vehicle v : vrp.getVehicles()){ for(Vehicle v : vrp.getVehicles()){
Coordinate start_coordinate = v.getStartLocation().getCoordinate(); Coordinate start_coordinate = getCoordinate(v.getStartLocation().getCoordinate());
if(start_coordinate == null) throw new NoLocationFoundException(); if(start_coordinate == null) throw new NoLocationFoundException();
XYDataItem item = new XYDataItem(start_coordinate.getX()*scalingFactor, start_coordinate.getY()*scalingFactor); XYDataItem item = new XYDataItem(start_coordinate.getX()*scalingFactor, start_coordinate.getY()*scalingFactor);
markItem(item,Activity.START); markItem(item,Activity.START);
activities.add(item); activities.add(item);
if(!v.getStartLocation().getId().equals(v.getEndLocation().getId())){ if(!v.getStartLocation().getId().equals(v.getEndLocation().getId())){
Coordinate end_coordinate = v.getEndLocation().getCoordinate(); Coordinate end_coordinate = getCoordinate(v.getEndLocation().getCoordinate());
if(end_coordinate == null) throw new NoLocationFoundException(); if(end_coordinate == null) throw new NoLocationFoundException();
XYDataItem end_item = new XYDataItem(end_coordinate.getX()*scalingFactor,end_coordinate.getY()*scalingFactor); XYDataItem end_item = new XYDataItem(end_coordinate.getX()*scalingFactor,end_coordinate.getY()*scalingFactor);
markItem(end_item,Activity.END); markItem(end_item,Activity.END);