@Override public void startTag(final String name, final org.xml.sax.Attributes atts, final Stack<String> context) { if (FACILITIES.equals(name)) { startFacilities(atts); } else if (FACILITY.equals(name)) { startFacility(atts); } else if (ACTIVITY.equals(name)) { startActivity(atts); } else if (CAPACITY.equals(name)) { startCapacity(atts); } else if (OPENTIME.equals(name)) { startOpentime(atts); } else if (ATTRIBUTE.equals(name)) { this.attributesReader.startTag(name, atts, context, this.currAttributes); } else if (ATTRIBUTES.equals(name)) { currAttributes = context.peek().equals(FACILITIES) ? this.facilities.getAttributes() : this.currfacility.getAttributes(); attributesReader.startTag(name, atts, context, currAttributes); } }
public static void assignAdditionalFacilitiesDataToMeasurePoint(ActivityFacilities measurePoints, Map<Id<ActivityFacility>, Geometry> measurePointGeometryMap, Map<String, ActivityFacilities> additionalFacilityData) { LOG.info("Start assigning additional facilities data to measure point."); GeometryFactory geometryFactory = new GeometryFactory(); for (ActivityFacilities additionalDataFacilities : additionalFacilityData.values()) { // Iterate over all additional data collections String additionalDataName = additionalDataFacilities.getName(); int additionalDataFacilitiesToAssign = additionalDataFacilities.getFacilities().size(); for (Id<ActivityFacility> measurePointId : measurePoints.getFacilities().keySet()) { // Iterate over all measure points ActivityFacility measurePoint = measurePoints.getFacilities().get(measurePointId); measurePoint.getAttributes().putAttribute(additionalDataName, 0); Geometry geometry = measurePointGeometryMap.get(measurePointId); for (ActivityFacility facility : additionalDataFacilities.getFacilities().values()) { // Iterate over additional-data facilities Point point = geometryFactory.createPoint(new Coordinate(facility.getCoord().getX(), facility.getCoord().getY())); if (geometry.contains(point)) { measurePoint.getAttributes().putAttribute(additionalDataName, (int) measurePoint.getAttributes().getAttribute(additionalDataName) + 1); additionalDataFacilitiesToAssign--; } } } LOG.warn(additionalDataFacilitiesToAssign + " have not been assigned to a measure point geometry."); } LOG.info("Finished assigning additional facilities data to measure point."); } }
if (opportunity.getAttributes().getAttribute(AccessibilityAttributes.WEIGHT) == null) { throw new RuntimeException("If option \"useOpportunityWeights\" is used, the facilities must have an attribute with key " + AccessibilityAttributes.WEIGHT + "."); } else { double weight = Double.parseDouble(opportunity.getAttributes().getAttribute(AccessibilityAttributes.WEIGHT).toString()); jco.addObject(opportunity.getId(), expVjk * Math.pow(weight, acg.getWeightExponent()));
Double additionalFacInfoValue = Double.parseDouble(entry.getKey().getFirst().getAttributes().getAttribute(currentAdditionalFacInfo).toString()); if (additionalFacInfoValue != null && !Double.isNaN(additionalFacInfoValue)) { featureBuilder.add(additionalFacInfoValue);
int value = (int) facility.getAttributes().getAttribute(additionalDataName); writer.writeField(value);
@Test public void testWriteReadV1_withAttributes() { Scenario scenario = ScenarioUtils.createScenario(ConfigUtils.createConfig()); ActivityFacilities facilities = scenario.getActivityFacilities(); ActivityFacilitiesFactory factory = facilities.getFactory(); ActivityFacility fac1 = factory.createActivityFacility(Id.create("1", ActivityFacility.class), new Coord(10.0, 15.0)); fac1.getAttributes().putAttribute("size_m2", 100); facilities.addActivityFacility(fac1); ActivityFacility fac2 = factory.createActivityFacility(Id.create("2", ActivityFacility.class), new Coord(20.0, 25.0)); fac2.getAttributes().putAttribute("size_m2", 500); facilities.addActivityFacility(fac2); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); new FacilitiesWriter(facilities).write(outStream); /* ------ */ ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray()); ActivityFacilities facilities2 = FacilitiesUtils.createActivityFacilities(); new MatsimFacilitiesReader(null, null, facilities2).parse(inStream); Assert.assertEquals(2, facilities2.getFacilities().size()); ActivityFacility fac1b = facilities2.getFacilities().get(Id.create("1", ActivityFacility.class)); Assert.assertEquals(0, fac1b.getActivityOptions().size()); Assert.assertEquals(1, fac1b.getAttributes().size()); Assert.assertEquals(100, fac1b.getAttributes().getAttribute("size_m2")); ActivityFacility fac2b = facilities2.getFacilities().get(Id.create("2", ActivityFacility.class)); Assert.assertEquals(0, fac2b.getActivityOptions().size()); Assert.assertEquals(1, fac2b.getAttributes().size()); Assert.assertEquals(500, fac2b.getAttributes().getAttribute("size_m2")); }
fac1.getAttributes().putAttribute("size_m2", 100); facilities.addActivityFacility(fac1); shopOption.addOpeningTime(new OpeningTimeImpl(8*3600, 20*3600)); fac2.addActivityOption(shopOption); fac2.getAttributes().putAttribute("size_m2", 500); facilities.addActivityFacility(fac2); Assert.assertEquals(1, fac1b.getActivityOptions().size()); Assert.assertTrue(fac1b.getActivityOptions().get("home").getOpeningTimes().isEmpty()); Assert.assertEquals(1, fac1b.getAttributes().size()); Assert.assertEquals(100, fac1b.getAttributes().getAttribute("size_m2")); Assert.assertEquals(8*3600, fac2b.getActivityOptions().get("shop").getOpeningTimes().first().getStartTime(), 0.0); Assert.assertEquals(20*3600, fac2b.getActivityOptions().get("shop").getOpeningTimes().first().getEndTime(), 0.0); Assert.assertEquals(1, fac2b.getAttributes().size()); Assert.assertEquals(500, fac2b.getAttributes().getAttribute("size_m2"));
Assert.assertEquals(1, fac1b.getActivityOptions().size()); Assert.assertTrue(fac1b.getActivityOptions().get("home").getOpeningTimes().isEmpty()); Assert.assertEquals(0, fac1b.getAttributes().size()); Assert.assertEquals(8*3600, fac2b.getActivityOptions().get("shop").getOpeningTimes().first().getStartTime(), 0.0); Assert.assertEquals(20*3600, fac2b.getActivityOptions().get("shop").getOpeningTimes().first().getEndTime(), 0.0); Assert.assertEquals(0, fac2b.getAttributes().size());
ActivityFacility fac3 = factory.createActivityFacility(Id.create("3", ActivityFacility.class), new Coord(30.0, 35.0)); fac1.getAttributes().putAttribute("population", 1000); fac2.getAttributes().putAttribute("population", 1200); fac3.getAttributes().putAttribute("owner", "pepsiCo"); Assert.assertEquals(1000, fac1b.getAttributes().getAttribute("population")); Assert.assertEquals(1200, fac2b.getAttributes().getAttribute("population")); Assert.assertEquals("pepsiCo", fac3b.getAttributes().getAttribute("owner"));