From bbe7194438bec87f9954455cd98883edfbc775cf Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Tue, 23 Aug 2022 14:50:22 +0200 Subject: [PATCH 001/123] Add methods to check for a missing value --- .../org/onebusaway/gtfs/model/FareContainer.java | 8 ++++++++ .../org/onebusaway/gtfs/model/FareProduct.java | 12 ++++++++++++ .../onebusaway/gtfs/model/FareTransferRule.java | 15 +++++++++++++++ .../org/onebusaway/gtfs/model/RiderCategory.java | 8 ++++++++ 4 files changed, 43 insertions(+) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareContainer.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareContainer.java index 9d0bdfc29..13df26085 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareContainer.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareContainer.java @@ -93,4 +93,12 @@ public RiderCategory getRiderCategory() { public void setRiderCategory(RiderCategory riderCategory) { this.riderCategory = riderCategory; } + + public boolean isAmountSet() { + return amount != MISSING_VALUE; + } + + public boolean isMinimumInitialPurchaseSet() { + return minimumInitialPurchase != MISSING_VALUE; + } } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareProduct.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareProduct.java index 9285ae091..f083c0aab 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareProduct.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareProduct.java @@ -139,4 +139,16 @@ public RiderCategory getRiderCategory() { public void setRiderCategory(RiderCategory riderCategory) { this.riderCategory = riderCategory; } + + public boolean isDurationUnitSet() { + return durationUnit != MISSING_VALUE; + } + + public boolean isDurationTypeSet() { + return durationType != MISSING_VALUE; + } + + public boolean isDurationAmountSet() { + return durationAmount != MISSING_VALUE; + } } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareTransferRule.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareTransferRule.java index e3154d6ed..76e031693 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareTransferRule.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareTransferRule.java @@ -109,4 +109,19 @@ public String getId() { public void setId(String id) { } + public boolean isTransferCountSet() { + return transferCount != MISSING_VALUE; + } + + public boolean isDurationLimitSet() { + return durationLimit != MISSING_VALUE; + } + + public boolean isDurationLimitTypeSet() { + return durationLimitType != MISSING_VALUE; + } + + public boolean isFareTransferTypeSet() { + return fareTransferType != MISSING_VALUE; + } } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RiderCategory.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RiderCategory.java index 4c645eb6e..36b4ab774 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RiderCategory.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RiderCategory.java @@ -80,4 +80,12 @@ public AgencyAndId getId() { public void setId(AgencyAndId id) { this.id = id; } + + public boolean isMinAgeSet() { + return minAge != MISSING_VALUE; + } + + public boolean isMaxAgeSet() { + return maxAge != MISSING_VALUE; + } } From a585378c3df8852a9f59a29c83ccb817bd7f02e8 Mon Sep 17 00:00:00 2001 From: Viljami Nurminen Date: Thu, 6 Oct 2022 16:22:24 +0300 Subject: [PATCH 002/123] Add min_distance, max_distance and distance_type fields into FareLegRule --- .../onebusaway/gtfs/model/FareLegRule.java | 32 +++++++++++++++++++ .../gtfs/serialization/GtfsReaderTest.java | 15 +++++++++ 2 files changed, 47 insertions(+) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java index 2f30dc25d..b9e3bdf47 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java @@ -45,6 +45,15 @@ public final class FareLegRule extends IdentityBean { @CsvField(name = "rider_category_id", optional = true, mapping = EntityFieldMappingFactory.class) private RiderCategory riderCategory; + @CsvField(name = "min_distance", optional = true) + private Double minDistance; + + @CsvField(name = "max_distance", optional = true) + private Double maxDistance; + + @CsvField(name = "distance_type", optional = true) + public Integer distanceType; + public String getLegGroupId() { return legGroupId; } @@ -114,4 +123,27 @@ public RiderCategory getRiderCategory() { public void setRiderCategory(RiderCategory riderCategory) { this.riderCategory = riderCategory; } + + public void setMinDistance(Double minDistance) { + this.minDistance = minDistance; + } + public Double getMinDistance() { + return minDistance; + } + + public Double getMaxDistance() { + return maxDistance; + } + + public void setMaxDistance(Double maxDistance) { + this.maxDistance = maxDistance; + } + + public Integer getDistanceType() { + return distanceType; + } + + public void setDistanceType(Integer distanceType) { + this.distanceType = distanceType; + } } diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java index 624d208d1..58d471456 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java @@ -877,6 +877,21 @@ public void mdotMetroFaresV2() throws CsvEntityIOException, IOException { assertTrue(dao.hasFaresV2()); } + + @Test + public void testFaresV2Distance() throws IOException{ + MockGtfs gtfs = MockGtfs.create(); + gtfs.putMinimal(); + gtfs.putLines("fare_products.txt", "fare_product_id, amount, currency", "" + + "fare_1,5,EUR"); + gtfs.putLines("fare_leg_rules.txt", "network_id,min_distance,max_distance,distance_type,fare_product_id", + "bus,0,3,1,fare_1" + ); + GtfsRelationalDao dao = processFeed(gtfs.getPath(), "1", false); + assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getMaxDistance()).findFirst().get() == 3.0); + assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getMinDistance()).findFirst().get() == 0.0); + assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getDistanceType()).findFirst().get() == 1); + } @Test public void testFeedInfo() throws CsvEntityIOException, IOException { From 4a174c8a6119cfef9995adc18f902e7f4b967812 Mon Sep 17 00:00:00 2001 From: caylasavitzky Date: Wed, 2 Nov 2022 14:27:02 -0400 Subject: [PATCH 003/123] UpdateRouteNames sets longname to true if null --- .../org/onebusaway/gtfs_transformer/impl/UpdateRouteNames.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/UpdateRouteNames.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/UpdateRouteNames.java index 26c655f73..1e38518df 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/UpdateRouteNames.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/UpdateRouteNames.java @@ -35,6 +35,9 @@ public String getName() { public void run(TransformContext context, GtfsMutableRelationalDao dao) { for (Route route: dao.getAllRoutes()) { + if(route.getLongName()==null){ + route.setLongName(route.getShortName()); + } if (route.getLongName().endsWith(" Line")) { route.setLongName(route.getLongName().replace(" Line", "")); } From 8061be6821911fc5c3cb14abf436186d81cd3059 Mon Sep 17 00:00:00 2001 From: Viljami Nurminen Date: Thu, 3 Nov 2022 14:40:01 +0200 Subject: [PATCH 004/123] Make distance_type csv field private --- .../src/main/java/org/onebusaway/gtfs/model/FareLegRule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java index b9e3bdf47..25f05001b 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java @@ -52,7 +52,7 @@ public final class FareLegRule extends IdentityBean { private Double maxDistance; @CsvField(name = "distance_type", optional = true) - public Integer distanceType; + private Integer distanceType; public String getLegGroupId() { return legGroupId; From 28f29a95faaeaeac211cafdfd6b2c5c6b29532f4 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Mon, 7 Nov 2022 11:19:33 +0100 Subject: [PATCH 005/123] Update Jackson --- onebusaway-gtfs/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index c530e23ea..c41d59281 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -20,12 +20,12 @@ com.fasterxml.jackson.core jackson-databind - 2.12.0 + 2.13.4.2 de.grundid.opendatalab geojson-jackson - 1.8.1 + 1.14 org.slf4j From 555006faf48c4ea9ca439018d08af1e4fd436d00 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 9 Nov 2022 08:56:39 -0500 Subject: [PATCH 006/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.3.115 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 64c1e0d1e..b24f6618c 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115-SNAPSHOT + 1.3.115 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 4db98d641..6b07d2d0a 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115-SNAPSHOT + 1.3.115 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 51d5b244e..dc9682e7e 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.115-SNAPSHOT + 1.3.115 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 8f5dea581..5e91c1156 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.115-SNAPSHOT + 1.3.115 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index a1068c62b..937473770 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115-SNAPSHOT + 1.3.115 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 9aa41a03c..e5376da67 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115-SNAPSHOT + 1.3.115 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 0ee728fcc..16aec3c95 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115-SNAPSHOT + 1.3.115 org.onebusaway onebusaway-gtfs - 1.3.115-SNAPSHOT + 1.3.115 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index c41d59281..77dfeb685 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115-SNAPSHOT + 1.3.115 diff --git a/pom.xml b/pom.xml index 15694fb91..084c6f73d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.115-SNAPSHOT + 1.3.115 pom onebusaway-gtfs-modules @@ -23,7 +23,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.3.115 From e1bacb1b72f6adf919deece419ab098633d7fc88 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 9 Nov 2022 08:56:40 -0500 Subject: [PATCH 007/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index b24f6618c..eadd05432 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115 + 1.3.116-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 6b07d2d0a..9d9a59e22 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115 + 1.3.116-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index dc9682e7e..1a5725f4b 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.115 + 1.3.116-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 5e91c1156..b157fca86 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.115 + 1.3.116-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 937473770..079286a44 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115 + 1.3.116-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index e5376da67..215b8da23 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115 + 1.3.116-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 16aec3c95..00df716d3 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115 + 1.3.116-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.3.115 + 1.3.116-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 77dfeb685..fb17f8c9b 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.115 + 1.3.116-SNAPSHOT diff --git a/pom.xml b/pom.xml index 084c6f73d..493089e08 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.115 + 1.3.116-SNAPSHOT pom onebusaway-gtfs-modules @@ -23,7 +23,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.3.115 + HEAD From 5f4e4f183cc80985d044d8344391f02308382988 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Tue, 13 Dec 2022 10:05:00 +0100 Subject: [PATCH 008/123] Add spec for current spelling --- .../FlexDropOffSpellingTest.java | 47 +++++++++++++++++++ .../gtfs/serialization/GtfsReaderTest.java | 9 ++-- 2 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java new file mode 100644 index 000000000..8deaebc50 --- /dev/null +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java @@ -0,0 +1,47 @@ +package org.onebusaway.gtfs.serialization; + +import static junit.framework.Assert.assertEquals; +import static org.onebusaway.gtfs.serialization.GtfsReaderTest.processFeed; + +import java.io.IOException; +import java.time.LocalTime; +import java.util.List; +import org.junit.Test; +import org.onebusaway.gtfs.model.StopTime; +import org.onebusaway.gtfs.services.GtfsRelationalDao; +import org.onebusaway.gtfs.services.MockGtfs; + +/** + * The commit https://github.com/MobilityData/gtfs-flex/commit/547200dfb580771265ae14b07d9bfd7b91c16ed2 + * of the flex V2 spec changes the following spellings : + * + * - start_pickup_dropoff_window -> start_pickup_drop_off_window + * - end_pickup_dropoff_window -> start_pickup_drop_off_window + * + * Since it's hard to spot: the change is in the word "dropoff" vs "drop_off". + * + * This test makes sure that both spellings are understood. + */ +public class FlexDropOffSpellingTest { + + @Test + public void oldSpelling() throws IOException { + MockGtfs gtfs = MockGtfs.create(); + gtfs.putMinimal(); + gtfs.putDefaultTrips(); + gtfs.putLines( + "stop_times.txt", + "trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_booking_rule_id,drop_off_booking_rule_id,start_pickup_dropoff_window,end_pickup_dropoff_window", + "T10-0,,,location-123,0,headsign-1,,,10:00:00,18:00:00" + ); + GtfsRelationalDao dao = processFeed(gtfs.getPath(), "1", false); + + assertEquals(1, dao.getAllStopTimes().size()); + + StopTime stopTime = List.copyOf(dao.getAllStopTimes()).get(0); + + assertEquals("1_T10-0", stopTime.getTrip().getId().toString()); + assertEquals(LocalTime.parse("10:00").toSecondOfDay(), stopTime.getStartPickupDropOffWindow()); + assertEquals(LocalTime.parse("18:00").toSecondOfDay(), stopTime.getEndPickupDropOffWindow()); + } +} diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java index 58d471456..09ab1ff46 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java @@ -878,8 +878,8 @@ public void mdotMetroFaresV2() throws CsvEntityIOException, IOException { } - @Test - public void testFaresV2Distance() throws IOException{ + @Test + public void testFaresV2Distance() throws IOException{ MockGtfs gtfs = MockGtfs.create(); gtfs.putMinimal(); gtfs.putLines("fare_products.txt", "fare_product_id, amount, currency", "" + @@ -891,7 +891,8 @@ public void testFaresV2Distance() throws IOException{ assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getMaxDistance()).findFirst().get() == 3.0); assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getMinDistance()).findFirst().get() == 0.0); assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getDistanceType()).findFirst().get() == 1); - } + } + @Test public void testFeedInfo() throws CsvEntityIOException, IOException { @@ -1047,7 +1048,7 @@ public void testCsvParser() throws CsvEntityIOException, IOException { * Private Methods ****/ - private GtfsRelationalDao processFeed(File resourcePath, String agencyId, + public static GtfsRelationalDao processFeed(File resourcePath, String agencyId, boolean internStrings) throws IOException { GtfsReader reader = new GtfsReader(); From 5e246d4668dc1ee079911b6ac529490c9e9a3f49 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Tue, 13 Dec 2022 12:12:29 +0100 Subject: [PATCH 009/123] Change spelling of 'drop off' to be in line with the latest Flex spec --- .../org/onebusaway/gtfs/model/StopTime.java | 49 +++++++++++++++++-- .../FlexDropOffSpellingTest.java | 22 +++++++-- 2 files changed, 65 insertions(+), 6 deletions(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index a774ce25a..ffa6afbcd 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -21,11 +21,15 @@ import org.onebusaway.gtfs.serialization.mappings.EntityFieldMappingFactory; import org.onebusaway.gtfs.serialization.mappings.StopTimeFieldMappingFactory; import org.onebusaway.gtfs.serialization.mappings.StopLocationFieldMappingFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; @CsvFields(filename = "stop_times.txt") public final class StopTime extends IdentityBean implements Comparable, StopTimeProxy { + private static Logger _log = LoggerFactory.getLogger(StopTime.class); + private static final long serialVersionUID =2L; public static final int MISSING_VALUE = -999; @@ -55,9 +59,17 @@ public final class StopTime extends IdentityBean implements @CsvField(optional = true, mapping = StopTimeFieldMappingFactory.class) private int minArrivalTime = MISSING_VALUE; - @CsvField(optional = true, name = "start_pickup_dropoff_window", mapping = StopTimeFieldMappingFactory.class) + @CsvField(optional = true, name = "start_pickup_drop_off_window", mapping = StopTimeFieldMappingFactory.class) private int startPickupDropOffWindow = MISSING_VALUE; + /** + * @deprecated + * GTFS-Flex v2.1 renamed "dropoff" to "drop off": https://github.com/MobilityData/gtfs-flex/commit/547200dfb580771265ae14b07d9bfd7b91c16ed2 + */ + @Deprecated + @CsvField(optional = true, name = "start_pickup_dropoff_window", mapping = StopTimeFieldMappingFactory.class) + public int oldSpellingOfStartPickupDropOffWindow = MISSING_VALUE; + /** * @deprecated * GTFS-Flex v2.1 renamed this field. Use {@link #endPickupDropOffWindow} instead. @@ -66,9 +78,17 @@ public final class StopTime extends IdentityBean implements @CsvField(optional = true, mapping = StopTimeFieldMappingFactory.class) private int maxDepartureTime = MISSING_VALUE; - @CsvField(optional = true, name = "end_pickup_dropoff_window", mapping = StopTimeFieldMappingFactory.class) + @CsvField(optional = true, name = "end_pickup_drop_off_window", mapping = StopTimeFieldMappingFactory.class) private int endPickupDropOffWindow = MISSING_VALUE; + /** + * @deprecated + * GTFS-Flex v2.1 renamed "dropoff" to "drop off": https://github.com/MobilityData/gtfs-flex/commit/547200dfb580771265ae14b07d9bfd7b91c16ed2 + */ + @Deprecated + @CsvField(optional = true, name = "end_pickup_dropoff_window", mapping = StopTimeFieldMappingFactory.class) + public int oldSpellingOfEndPickupDropOffWindow = MISSING_VALUE; + @CsvField(optional = true) private int timepoint = MISSING_VALUE; @@ -340,6 +360,8 @@ public void setMinArrivalTime(int minArrivalTime) { public int getStartPickupDropOffWindow() { if (startPickupDropOffWindow != MISSING_VALUE) { return startPickupDropOffWindow; + } else if(oldSpellingOfStartPickupDropOffWindow != MISSING_VALUE){ + return oldSpellingOfStartPickupDropOffWindow; } else { return minArrivalTime; } @@ -362,7 +384,11 @@ public void setMaxDepartureTime(int maxDepartureTime) { public int getEndPickupDropOffWindow() { if (endPickupDropOffWindow != MISSING_VALUE) { return endPickupDropOffWindow; - } else { + } + else if (oldSpellingOfEndPickupDropOffWindow != MISSING_VALUE) { + return oldSpellingOfEndPickupDropOffWindow; + } + else { return maxDepartureTime; } } @@ -716,4 +742,21 @@ public void setFreeRunningFlag(String freeRunningFlag) { } this.freeRunningFlag = freeRunningFlag; } + @Deprecated + public void setOldSpellingOfStartPickupDropOffWindow(int time) { + oldDropOffSpellingWarning("start"); + this.oldSpellingOfStartPickupDropOffWindow = time; + } + + @Deprecated + public void setOldSpellingOfEndPickupDropOffWindow(int time) { + oldDropOffSpellingWarning("end"); + this.oldSpellingOfEndPickupDropOffWindow = time; + } + + private static void oldDropOffSpellingWarning(String type) { + _log.warn("This feed uses the old spelling of '{}_pickup_drop_off_window' ('dropoff' instead of 'drop_off'). " + + "Compatibility will be removed in the future, so please update your feed to be in line with the latest Flex V2 spec:" + + " https://github.com/MobilityData/gtfs-flex/commit/547200dfb", type); + } } diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java index 8deaebc50..e777cd75d 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java @@ -5,7 +5,7 @@ import java.io.IOException; import java.time.LocalTime; -import java.util.List; +import java.util.ArrayList; import org.junit.Test; import org.onebusaway.gtfs.model.StopTime; import org.onebusaway.gtfs.services.GtfsRelationalDao; @@ -26,19 +26,35 @@ public class FlexDropOffSpellingTest { @Test public void oldSpelling() throws IOException { + testFlexStopTimeWithSpelling("dropoff"); + } + + @Test + public void newSpelling() throws IOException { + testFlexStopTimeWithSpelling("drop_off"); + } + + private static void testFlexStopTimeWithSpelling(String dropOffSpelling) throws IOException { MockGtfs gtfs = MockGtfs.create(); gtfs.putMinimal(); gtfs.putDefaultTrips(); + + String rows = + String.format( + "trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_booking_rule_id,drop_off_booking_rule_id,start_pickup_%s_window,end_pickup_%s_window", + dropOffSpelling, dropOffSpelling + ); + gtfs.putLines( "stop_times.txt", - "trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_booking_rule_id,drop_off_booking_rule_id,start_pickup_dropoff_window,end_pickup_dropoff_window", + rows, "T10-0,,,location-123,0,headsign-1,,,10:00:00,18:00:00" ); GtfsRelationalDao dao = processFeed(gtfs.getPath(), "1", false); assertEquals(1, dao.getAllStopTimes().size()); - StopTime stopTime = List.copyOf(dao.getAllStopTimes()).get(0); + StopTime stopTime = new ArrayList<>(dao.getAllStopTimes()).get(0); assertEquals("1_T10-0", stopTime.getTrip().getId().toString()); assertEquals(LocalTime.parse("10:00").toSecondOfDay(), stopTime.getStartPickupDropOffWindow()); From 0fedcca675d71cb8368eee43e5ba56dd515f3d2d Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Tue, 13 Dec 2022 12:24:02 +0100 Subject: [PATCH 010/123] Add missing license header --- .../serialization/FlexDropOffSpellingTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java index e777cd75d..d5bb63ad7 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexDropOffSpellingTest.java @@ -1,3 +1,18 @@ +/** + * Copyright (C) 2022 Leonard Ehrenfried + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.onebusaway.gtfs.serialization; import static junit.framework.Assert.assertEquals; From 146c45177618af4b855cf448226dee9092b386dd Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Tue, 13 Dec 2022 12:35:27 +0100 Subject: [PATCH 011/123] Add getter --- .../main/java/org/onebusaway/gtfs/model/StopTime.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index ffa6afbcd..97ff36097 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -759,4 +759,13 @@ private static void oldDropOffSpellingWarning(String type) { + "Compatibility will be removed in the future, so please update your feed to be in line with the latest Flex V2 spec:" + " https://github.com/MobilityData/gtfs-flex/commit/547200dfb", type); } + @Deprecated + public int getOldSpellingOfStartPickupDropOffWindow() { + return this.oldSpellingOfStartPickupDropOffWindow; + } + + @Deprecated + public int getOldSpellingOfEndPickupDropOffWindow() { + return oldSpellingOfEndPickupDropOffWindow; + } } From a64421b6e6da26fecfdd314ed3093f50e7e38dec Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Tue, 13 Dec 2022 16:35:48 +0100 Subject: [PATCH 012/123] Upgrade to newest Jackson version --- onebusaway-gtfs/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index fb17f8c9b..f413d01b3 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -20,7 +20,7 @@ com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0 de.grundid.opendatalab From fbe9f7b8d2e3080de522fa153466b3c58d90f5e0 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 3 Jan 2023 07:41:22 -0500 Subject: [PATCH 013/123] hide flex fields if not in use --- .../org/onebusaway/gtfs/model/StopTime.java | 32 +-- .../gtfs/model/MissingValueTest.java | 224 ++++++++++++++++++ .../model/StopTimeWithUnderscoreTest.java | 134 +++++++++++ 3 files changed, 374 insertions(+), 16 deletions(-) create mode 100644 onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/MissingValueTest.java create mode 100644 onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/StopTimeWithUnderscoreTest.java diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index 97ff36097..72c51fc70 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -56,10 +56,10 @@ public final class StopTime extends IdentityBean implements * GTFS-Flex v2.1 renamed this field. Use {@link #startPickupDropOffWindow} instead. */ @Deprecated - @CsvField(optional = true, mapping = StopTimeFieldMappingFactory.class) + @CsvField(optional = true, mapping = StopTimeFieldMappingFactory.class, defaultValue = "-999") private int minArrivalTime = MISSING_VALUE; - @CsvField(optional = true, name = "start_pickup_drop_off_window", mapping = StopTimeFieldMappingFactory.class) + @CsvField(optional = true, name = "start_pickup_drop_off_window", mapping = StopTimeFieldMappingFactory.class, defaultValue = "-999") private int startPickupDropOffWindow = MISSING_VALUE; /** @@ -67,7 +67,7 @@ public final class StopTime extends IdentityBean implements * GTFS-Flex v2.1 renamed "dropoff" to "drop off": https://github.com/MobilityData/gtfs-flex/commit/547200dfb580771265ae14b07d9bfd7b91c16ed2 */ @Deprecated - @CsvField(optional = true, name = "start_pickup_dropoff_window", mapping = StopTimeFieldMappingFactory.class) + @CsvField(optional = true, name = "start_pickup_dropoff_window", mapping = StopTimeFieldMappingFactory.class, defaultValue = "-999") public int oldSpellingOfStartPickupDropOffWindow = MISSING_VALUE; /** @@ -75,10 +75,10 @@ public final class StopTime extends IdentityBean implements * GTFS-Flex v2.1 renamed this field. Use {@link #endPickupDropOffWindow} instead. */ @Deprecated - @CsvField(optional = true, mapping = StopTimeFieldMappingFactory.class) + @CsvField(optional = true, mapping = StopTimeFieldMappingFactory.class, defaultValue = "-999") private int maxDepartureTime = MISSING_VALUE; - @CsvField(optional = true, name = "end_pickup_drop_off_window", mapping = StopTimeFieldMappingFactory.class) + @CsvField(optional = true, name = "end_pickup_drop_off_window", mapping = StopTimeFieldMappingFactory.class, defaultValue = "-999") private int endPickupDropOffWindow = MISSING_VALUE; /** @@ -86,10 +86,10 @@ public final class StopTime extends IdentityBean implements * GTFS-Flex v2.1 renamed "dropoff" to "drop off": https://github.com/MobilityData/gtfs-flex/commit/547200dfb580771265ae14b07d9bfd7b91c16ed2 */ @Deprecated - @CsvField(optional = true, name = "end_pickup_dropoff_window", mapping = StopTimeFieldMappingFactory.class) + @CsvField(optional = true, name = "end_pickup_dropoff_window", mapping = StopTimeFieldMappingFactory.class, defaultValue = "-999") public int oldSpellingOfEndPickupDropOffWindow = MISSING_VALUE; - @CsvField(optional = true) + @CsvField(optional = true, defaultValue = "-999") private int timepoint = MISSING_VALUE; private int stopSequence; @@ -109,13 +109,13 @@ public final class StopTime extends IdentityBean implements @CsvField(optional = true, defaultValue = "0") private int dropOffType; - @CsvField(optional = true) + @CsvField(optional = true, defaultValue = "-999") private double shapeDistTraveled = MISSING_VALUE; - @CsvField(optional = true) + @CsvField(optional = true, defaultValue = "1") private int continuousPickup = MISSING_FLEX_VALUE; - @CsvField(optional = true) + @CsvField(optional = true, defaultValue = "1") private int continuousDropOff = MISSING_FLEX_VALUE; @CsvField(optional = true, name = "start_service_area_id", mapping = EntityFieldMappingFactory.class, order = -2) @@ -124,10 +124,10 @@ public final class StopTime extends IdentityBean implements @CsvField(optional = true, name = "end_service_area_id", mapping = EntityFieldMappingFactory.class, order = -2) private Area endServiceArea; - @CsvField(optional = true) + @CsvField(optional = true, defaultValue = "-999.0")/*note defaultValue quirk for non-proxied comparison*/ private double startServiceAreaRadius = MISSING_VALUE; - @CsvField(optional = true) + @CsvField(optional = true, defaultValue = "-999.0")/*note defaultValue quirk for non-proxied comparison*/ private double endServiceAreaRadius = MISSING_VALUE; @CsvField(ignore = true) @@ -157,16 +157,16 @@ public final class StopTime extends IdentityBean implements private Note note; // See https://github.com/MobilityData/gtfs-flex/blob/master/spec/reference.md - @CsvField(optional = true, name = "mean_duration_factor") + @CsvField(optional = true, name = "mean_duration_factor", defaultValue = "-999.0")/*note defaultValue quirk for non-proxied comparison*/ private double meanDurationFactor = MISSING_VALUE; - @CsvField(optional = true, name = "mean_duration_offset") + @CsvField(optional = true, name = "mean_duration_offset", defaultValue = "-999.0")/*note defaultValue quirk for non-proxied comparison*/ private double meanDurationOffset = MISSING_VALUE; - @CsvField(optional = true, name = "safe_duration_factor") + @CsvField(optional = true, name = "safe_duration_factor", defaultValue = "-999.0")/*note defaultValue quirk for non-proxied comparison*/ private double safeDurationFactor = MISSING_VALUE; - @CsvField(optional = true, name = "safe_duration_offset") + @CsvField(optional = true, name = "safe_duration_offset", defaultValue = "-999") private double safeDurationOffset = MISSING_VALUE; @CsvField(optional = true, name = "free_running_flag") diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/MissingValueTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/MissingValueTest.java new file mode 100644 index 000000000..2546374aa --- /dev/null +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/MissingValueTest.java @@ -0,0 +1,224 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.model; + +import java.io.File; +import java.io.IOException; +import java.util.Scanner; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onebusaway.gtfs.serialization.GtfsWriter; +import org.onebusaway.gtfs.serialization.GtfsWriterTest; +import org.onebusaway.gtfs.services.MockGtfs; +import org.onebusaway.gtfs.services.GtfsRelationalDao; + +import static org.junit.Assert.*; + +/** + * Optional flex fields in stop times should not be present + * if not in use. As stop_times is one of the biggest files, + * not only is it annoying it affects the overall GTFS size. + */ +public class MissingValueTest { + + private MockGtfs _gtfs; + + private File _tmpDirectory; + + @Before + public void before() throws IOException { + _gtfs = MockGtfs.create(); + + //make temp directory for gtfs writing output + _tmpDirectory = File.createTempFile("GtfsWriterMissingValueTest-", "-tmp"); + if (_tmpDirectory.exists()) + GtfsWriterTest.deleteFileRecursively(_tmpDirectory); + _tmpDirectory.mkdirs(); + } + + @Test + public void test() throws IOException { + _gtfs.putMinimal(); + _gtfs.putDefaultTrips(); + _gtfs.putDefaultStops(); + _gtfs.putLines("stop_times.txt", + "trip_id,stop_id,stop_sequence,arrival_time,departure_time,mean_duration_factor", + "T10-0,100,0,,08:00:00,", "T10-0,200,1,05:55:55,09:00:00,"); + + GtfsRelationalDao dao = _gtfs.read(); + assertEquals(2, dao.getAllStopTimes().size()); + + GtfsWriter writer = new GtfsWriter(); + writer.setOutputLocation(_tmpDirectory); + writer.run(dao); + + Scanner scan = new Scanner(new File(_tmpDirectory + "/stop_times.txt")); + boolean foundEmptyColumn = false; + boolean foundProperArrivalTime = false; + boolean foundShapeDist = false; + String headerLine = null; + while(scan.hasNext()){ + String line = scan.nextLine(); + if (headerLine == null) headerLine = line; + + if(line.contains("mean_duration_factor")){ + foundEmptyColumn = true; + } + if(line.contains("arrival_time")){ + foundProperArrivalTime = true; + } + // this is an old bug just uncovered -- shape dist traveled is a double + // and the default comparison is quirky due to that + if (line.contains("shape_dist_traveled")) { + foundShapeDist = true; + } + } + assertFalse("Empty Column not properly removed in line " + headerLine, foundEmptyColumn); + assertTrue("Column unexpectedly removed in line " + headerLine, foundProperArrivalTime); + assertFalse("Not expecting shapeDistTraveled in line " + headerLine, foundShapeDist); + } + + @Test + public void testStartingWithMissingValue() throws IOException { + _gtfs.putMinimal(); + _gtfs.putDefaultTrips(); + _gtfs.putDefaultStops(); + _gtfs.putLines("stop_times.txt", + "trip_id,stop_id,stop_sequence,arrival_time,departure_time,timepoint", + "T10-0,100,0,,08:00:00,-999", "T10-0,200,1,05:55:55,09:00:00,-999"); + + GtfsRelationalDao dao = _gtfs.read(); + assertEquals(2, dao.getAllStopTimes().size()); + + GtfsWriter writer = new GtfsWriter(); + writer.setOutputLocation(_tmpDirectory); + writer.run(dao); + + Scanner scan = new Scanner(new File(_tmpDirectory + "/stop_times.txt")); + boolean foundTimepoint = false; + while(scan.hasNext()){ + String line = scan.nextLine(); + if(line.contains("timepoint")){ + foundTimepoint = true; + } + } + assertFalse("Empty Column not properly removed", foundTimepoint); + } + + /** + * Non-proxied double fields have a quirk where the defaultValue needs to be + * -999.0 for the string-based comparison to work. + * @throws IOException + */ + @Test + public void testStartingWithMissingDoubleValue() throws IOException { + _gtfs.putMinimal(); + _gtfs.putDefaultTrips(); + _gtfs.putDefaultStops(); + _gtfs.putLines("stop_times.txt", + "trip_id,stop_id,stop_sequence,arrival_time,departure_time,timepoint,shape_dist_traveled,start_service_area_radius,end_service_area_radius,mean_duration_factor,mean_duration_offset,safe_duration_factor,safe_duration_offset", + "T10-0,100,0,,08:00:00,-999,-999,-999,-999,-999,-999,-999,-999", "T10-0,200,1,05:55:55,09:00:00,-999,-999,-999,-999,-999,-999,-999,-999"); + + GtfsRelationalDao dao = _gtfs.read(); + assertEquals(2, dao.getAllStopTimes().size()); + + GtfsWriter writer = new GtfsWriter(); + writer.setOutputLocation(_tmpDirectory); + writer.run(dao); + + Scanner scan = new Scanner(new File(_tmpDirectory + "/stop_times.txt")); + boolean foundTimepoint = false; + boolean foundShapeDist = false; + boolean foundStartServiceArea = false; + boolean foundEndServiceArea = false; + boolean foundMeanDurationFactor = false; + boolean foundMeanDurationOffset = false; + boolean foundSafeDurationFactor = false; + boolean foundSafeDurationOffset = false; + + String headerLine = null; + while(scan.hasNext()){ + String line = scan.nextLine(); + if (headerLine == null) headerLine = line; + + if(line.contains("timepoint")){ + foundTimepoint = true; + } + if (line.contains("shape_dist_traveled")) { + foundShapeDist = true; + } + if (line.contains("start_service_area_radius")) { + foundStartServiceArea = true; + } + if (line.contains("end_service_area_radius")) { + foundEndServiceArea = true; + } + if (line.contains("mean_duration_factor")) { + foundMeanDurationFactor = true; + } + if (line.contains("mean_duration_offset")) { + foundMeanDurationOffset = true; + } + if (line.contains("safe_duration_factor")) { + foundSafeDurationFactor = true; + } + if (line.contains("safe_duraction_offset")) { + foundSafeDurationOffset = true; + } + + } + assertFalse("Empty Column not properly removed", foundTimepoint); + assertFalse("Not expecting shapeDistTraveled in line " + headerLine, foundShapeDist); + assertFalse("Not expecting start service area radius in line " + headerLine, foundStartServiceArea); + assertFalse("Not expecting end service area radius in line " + headerLine, foundEndServiceArea); + assertFalse("Not expecting mean duration factor in line " + headerLine, foundMeanDurationFactor); + assertFalse("Not expecting mean duration offset in line " + headerLine, foundMeanDurationOffset); + assertFalse("Not expecting safe duration factor in line " + headerLine, foundSafeDurationFactor); + assertFalse("Not expecting safe duration offset in line " + headerLine, foundSafeDurationOffset); + } + + @Test + public void testPutMinimal() throws IOException { + _gtfs.putMinimal(); + // Just make sure it parses without throwing an error. + _gtfs.read(); + } + + @After + public void teardown() { + deleteFileRecursively(_tmpDirectory); + } + + public static void deleteFileRecursively(File file) { + + if (!file.exists()) + return; + + if (file.isDirectory()) { + File[] files = file.listFiles(); + if (files != null) { + for (File child : files) + deleteFileRecursively(child); + } + } + + file.delete(); + } + +} + diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/StopTimeWithUnderscoreTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/StopTimeWithUnderscoreTest.java new file mode 100644 index 000000000..9a5240a7e --- /dev/null +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/StopTimeWithUnderscoreTest.java @@ -0,0 +1,134 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.model; + +import java.io.File; +import java.io.IOException; +import java.util.*; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onebusaway.gtfs.serialization.GtfsWriter; +import org.onebusaway.gtfs.serialization.GtfsWriterTest; +import org.onebusaway.gtfs.services.MockGtfs; +import org.onebusaway.gtfs.services.GtfsRelationalDao; + +import static org.junit.Assert.*; + +public class StopTimeWithUnderscoreTest { + + private MockGtfs _gtfs; + + private File _tmpDirectory; + + @Before + public void before() throws IOException { + _gtfs = MockGtfs.create(); + + //make temp directory for gtfs writing output + _tmpDirectory = File.createTempFile("GtfsWriterStopTimeWithUnderScoreTest-", "-tmp"); + if (_tmpDirectory.exists()) + GtfsWriterTest.deleteFileRecursively(_tmpDirectory); + _tmpDirectory.mkdirs(); + } + + @Test + public void testWithUnderScore() throws IOException { + _gtfs.putMinimal(); + _gtfs.putDefaultTrips(); + _gtfs.putDefaultStops(); + _gtfs.putLines("stop_times.txt", + "trip_id,stop_id,stop_sequence,arrival_time,departure_time,end_pickup_drop_off_window", + "T10-0,100,0,05:55:55,08:00:00,08:23:23", "T10-0,200,1,05:55:55,09:00:00,08:44:44"); + + GtfsRelationalDao dao = _gtfs.read(); + assertEquals(2, dao.getAllStopTimes().size()); + + GtfsWriter writer = new GtfsWriter(); + writer.setOutputLocation(_tmpDirectory); + writer.run(dao); + + Scanner scan = new Scanner(new File(_tmpDirectory + "/stop_times.txt")); + boolean foundUnderscoreParam = false; + while(scan.hasNext()){ + String line = scan.nextLine(); + if(line.contains("end_pickup_drop_off_window")){ + foundUnderscoreParam = true; + } + } + // if the underscore version was input use it as output + assertTrue("Column without underscore was not found", foundUnderscoreParam); + } + + @Test + public void testWithoutUnderscore() throws IOException { + _gtfs.putMinimal(); + _gtfs.putDefaultTrips(); + _gtfs.putDefaultStops(); + _gtfs.putLines("stop_times.txt", + "trip_id,stop_id,stop_sequence,arrival_time,departure_time,end_pickup_dropoff_window", + "T10-0,100,0,05:55:55,08:00:00,08:23:23", "T10-0,200,1,05:55:55,09:00:00,08:44:44"); + + GtfsRelationalDao dao = _gtfs.read(); + assertEquals(2, dao.getAllStopTimes().size()); + + GtfsWriter writer = new GtfsWriter(); + writer.setOutputLocation(_tmpDirectory); + writer.run(dao); + + Scanner scan = new Scanner(new File(_tmpDirectory + "/stop_times.txt")); + boolean foundUnderscoreParam = false; + while(scan.hasNext()){ + String line = scan.nextLine(); + if(line.contains("end_pickup_dropoff_window")){ + foundUnderscoreParam = true; + } + } + // if the new spec was used as input ensure it is output + assertTrue("Column without underscore was not found", foundUnderscoreParam); + } + + @Test + public void testPutMinimal() throws IOException { + _gtfs.putMinimal(); + // Just make sure it parses without throwing an error. + _gtfs.read(); + } + + @After + public void teardown() { + deleteFileRecursively(_tmpDirectory); + } + + public static void deleteFileRecursively(File file) { + + if (!file.exists()) + return; + + if (file.isDirectory()) { + File[] files = file.listFiles(); + if (files != null) { + for (File child : files) + deleteFileRecursively(child); + } + } + + file.delete(); + } + +} + From df7a41c81e371026bde2374b4a526e504f4e932f Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 3 Jan 2023 08:00:15 -0500 Subject: [PATCH 014/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.3.116 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index eadd05432..955cec6e2 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116-SNAPSHOT + 1.3.116 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 9d9a59e22..91df1635d 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116-SNAPSHOT + 1.3.116 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 1a5725f4b..21777b125 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.116-SNAPSHOT + 1.3.116 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index b157fca86..c0bf11dff 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.116-SNAPSHOT + 1.3.116 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 079286a44..5192b31dc 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116-SNAPSHOT + 1.3.116 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 215b8da23..1f28a35e6 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116-SNAPSHOT + 1.3.116 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 00df716d3..eb83c51ee 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116-SNAPSHOT + 1.3.116 org.onebusaway onebusaway-gtfs - 1.3.116-SNAPSHOT + 1.3.116 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index f413d01b3..d8026b08b 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116-SNAPSHOT + 1.3.116 diff --git a/pom.xml b/pom.xml index 493089e08..0fb5a1d8d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.116-SNAPSHOT + 1.3.116 pom onebusaway-gtfs-modules @@ -23,7 +23,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.3.116 From e09cbfaeb997a66a75990f50e13b2d17cea23ce1 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 3 Jan 2023 08:00:22 -0500 Subject: [PATCH 015/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 955cec6e2..6153a9205 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116 + 1.3.117-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 91df1635d..340deb9a1 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116 + 1.3.117-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 21777b125..1c4e750c7 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.116 + 1.3.117-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index c0bf11dff..74de9123c 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.116 + 1.3.117-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 5192b31dc..5fc2b60cc 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116 + 1.3.117-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 1f28a35e6..18fa829e2 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116 + 1.3.117-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index eb83c51ee..e84ace789 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116 + 1.3.117-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.3.116 + 1.3.117-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index d8026b08b..e665fd927 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.116 + 1.3.117-SNAPSHOT diff --git a/pom.xml b/pom.xml index 0fb5a1d8d..38249683f 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.116 + 1.3.117-SNAPSHOT pom onebusaway-gtfs-modules @@ -23,7 +23,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.3.116 + HEAD From 7c01316aa152f12740468b01c13c1766710d81f6 Mon Sep 17 00:00:00 2001 From: Brian Donahue Date: Thu, 12 Jan 2023 16:55:59 -0500 Subject: [PATCH 016/123] Make wkt field optional --- .../src/main/java/org/onebusaway/gtfs/model/Area.java | 1 + 1 file changed, 1 insertion(+) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Area.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Area.java index 5f7426db7..b09828c10 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Area.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Area.java @@ -30,6 +30,7 @@ public final class Area extends IdentityBean { @CsvField(name="area_name", optional = true) private String name; + @CsvField(name="wkt", optional = true) private String wkt; public Area() { From 8c6560b0385bea5d02f1e16f2b4368e369ce1862 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 13 Jan 2023 19:22:25 -0500 Subject: [PATCH 017/123] OTD-468 add support for modifications.txt --- .../impl/HibernateGtfsRelationalDaoImpl.java | 20 +++ .../org/onebusaway/gtfs_merge/GtfsMerger.java | 21 +-- .../strategies/MetadataMergeStrategy.java | 67 +++++++++ .../gtfs_merge/MergeExpectedFilesTest.java | 128 ++++++++++++++++++ .../org/onebusaway/gtfs_merge/testagency.zip | Bin 0 -> 2559 bytes .../gtfs_merge/testagency/agency.txt | 2 + .../gtfs_merge/testagency/calendar.txt | 3 + .../gtfs_merge/testagency/modifications.txt | 1 + .../gtfs_merge/testagency/routes.txt | 8 ++ .../gtfs_merge/testagency/shapes.txt | 10 ++ .../gtfs_merge/testagency/stop_times.txt | 44 ++++++ .../gtfs_merge/testagency/stops.txt | 14 ++ .../gtfs_merge/testagency/transfers.txt | 5 + .../gtfs_merge/testagency/trips.txt | 16 +++ .../org/onebusaway/gtfs_merge/testagency1.zip | Bin 0 -> 2522 bytes .../gtfs_merge/testagency1/agency.txt | 2 + .../gtfs_merge/testagency1/calendar.txt | 3 + .../gtfs_merge/testagency1/modifications.txt | 5 + .../gtfs_merge/testagency1/routes.txt | 8 ++ .../gtfs_merge/testagency1/shapes.txt | 10 ++ .../gtfs_merge/testagency1/stop_times.txt | 44 ++++++ .../gtfs_merge/testagency1/stops.txt | 14 ++ .../gtfs_merge/testagency1/transfers.txt | 5 + .../gtfs_merge/testagency1/trips.txt | 16 +++ .../org/onebusaway/gtfs_merge/testagency2.zip | Bin 0 -> 2537 bytes .../gtfs_merge/testagency2/agency.txt | 2 + .../gtfs_merge/testagency2/calendar.txt | 3 + .../gtfs_merge/testagency2/modifications.txt | 3 + .../gtfs_merge/testagency2/routes.txt | 8 ++ .../gtfs_merge/testagency2/shapes.txt | 10 ++ .../gtfs_merge/testagency2/stop_times.txt | 44 ++++++ .../gtfs_merge/testagency2/stops.txt | 14 ++ .../gtfs_merge/testagency2/transfers.txt | 5 + .../gtfs_merge/testagency2/trips.txt | 16 +++ .../CarryForwardExpectedFilesTest.java | 109 +++++++++++++++ .../gtfs_transformer/testagency.zip | Bin 0 -> 2619 bytes .../testagency/modifications.txt | 5 + .../org/onebusaway/gtfs/impl/FileSupport.java | 57 ++++++++ .../org/onebusaway/gtfs/impl/GtfsDaoImpl.java | 25 +++- .../gtfs/impl/GtfsDataServiceImpl.java | 20 +++ .../org/onebusaway/gtfs/impl/ZipHandler.java | 93 +++++++++++++ .../gtfs/serialization/GtfsReader.java | 67 ++++++++- .../gtfs/serialization/GtfsWriter.java | 50 ++++++- .../org/onebusaway/gtfs/services/GtfsDao.java | 10 ++ .../gtfs/serialization/GtfsWriterTest.java | 7 +- 45 files changed, 968 insertions(+), 26 deletions(-) create mode 100644 onebusaway-gtfs-merge/src/main/java/org/onebusaway/gtfs_merge/strategies/MetadataMergeStrategy.java create mode 100644 onebusaway-gtfs-merge/src/test/java/org/onebusaway/gtfs_merge/MergeExpectedFilesTest.java create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency.zip create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency/agency.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency/calendar.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency/modifications.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency/routes.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency/shapes.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency/stop_times.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency/stops.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency/transfers.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency/trips.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1.zip create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/agency.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/calendar.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/modifications.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/routes.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/shapes.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/stop_times.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/stops.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/transfers.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/trips.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2.zip create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/agency.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/calendar.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/modifications.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/routes.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/shapes.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/stop_times.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/stops.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/transfers.txt create mode 100644 onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/trips.txt create mode 100644 onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/CarryForwardExpectedFilesTest.java create mode 100644 onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/testagency.zip create mode 100644 onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/testagency/modifications.txt create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/FileSupport.java create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/ZipHandler.java diff --git a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java index f75f59cac..b428e1de7 100644 --- a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java +++ b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java @@ -303,6 +303,26 @@ public Collection getAllStopAreas() { return _ops.find("from StopArea"); } + @Override + public List getOptionalMetadataFilenames() { + return new ArrayList<>(); + } + + @Override + public boolean hasMetadata(String filename) { + return false; + } + + @Override + public String getMetadata(String filename) { + return null; + } + + @Override + public void addMetadata(String filename, String content) { + + } + /**** * {@link GtfsRelationalDao} Interface ****/ diff --git a/onebusaway-gtfs-merge/src/main/java/org/onebusaway/gtfs_merge/GtfsMerger.java b/onebusaway-gtfs-merge/src/main/java/org/onebusaway/gtfs_merge/GtfsMerger.java index 810fb669a..66a20922f 100644 --- a/onebusaway-gtfs-merge/src/main/java/org/onebusaway/gtfs_merge/GtfsMerger.java +++ b/onebusaway-gtfs-merge/src/main/java/org/onebusaway/gtfs_merge/GtfsMerger.java @@ -32,19 +32,7 @@ import org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl; import org.onebusaway.gtfs.serialization.GtfsReader; import org.onebusaway.gtfs.serialization.GtfsWriter; -import org.onebusaway.gtfs_merge.strategies.AgencyMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.AreaMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.EntityMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.FareAttributeMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.FareRuleMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.FeedInfoMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.FrequencyMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.RouteMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.ServiceCalendarMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.ShapePointMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.StopMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.TransferMergeStrategy; -import org.onebusaway.gtfs_merge.strategies.TripMergeStrategy; +import org.onebusaway.gtfs_merge.strategies.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -81,6 +69,8 @@ public class GtfsMerger { private EntityMergeStrategy _feedInfoStrategy = new FeedInfoMergeStrategy(); + private EntityMergeStrategy _metadataStrategy = new MetadataMergeStrategy(); + public void setAgencyStrategy(EntityMergeStrategy agencyStrategy) { _agencyStrategy = agencyStrategy; } @@ -128,6 +118,8 @@ public void setAreaStrategy(AreaMergeStrategy areaStrategy) { public void setFeedInfoStrategy(EntityMergeStrategy feedInfoStrategy) { _feedInfoStrategy = feedInfoStrategy; } + public void setMetadataStrategy(EntityMergeStrategy metadataStrategy) { _metadataStrategy = metadataStrategy; } + public EntityMergeStrategy getEntityMergeStrategyForEntityType( Class entityType) { List strategies = new ArrayList(); @@ -212,7 +204,7 @@ public void run(List inputPaths, File outputPath) throws IOException { "lastModifiedTime", FileTime.fromMillis(newestFile)); } else { - _log.info("outputPath not a file, skipping"); + _log.info("outputPath not a file, skipping setting lastModified"); } } @@ -236,6 +228,7 @@ private void buildStrategies(List strategies) { strategies.add(_fareAttributeStrategy); strategies.add(_fareRuleStrategy); strategies.add(_feedInfoStrategy); + strategies.add(_metadataStrategy); } } diff --git a/onebusaway-gtfs-merge/src/main/java/org/onebusaway/gtfs_merge/strategies/MetadataMergeStrategy.java b/onebusaway-gtfs-merge/src/main/java/org/onebusaway/gtfs_merge/strategies/MetadataMergeStrategy.java new file mode 100644 index 000000000..5444f3a5b --- /dev/null +++ b/onebusaway-gtfs-merge/src/main/java/org/onebusaway/gtfs_merge/strategies/MetadataMergeStrategy.java @@ -0,0 +1,67 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_merge.strategies; + +import org.onebusaway.gtfs.model.Agency; +import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; +import org.onebusaway.gtfs.services.GtfsRelationalDao; +import org.onebusaway.gtfs_merge.GtfsMergeContext; + +import java.util.Collection; + +/** + * Merge metadata files such as modifications.txt + */ +public class MetadataMergeStrategy implements EntityMergeStrategy { + @Override + public void getEntityTypes(Collection> entityTypes) { + // no-op, metadata is not represented via entityTypes + } + + @Override + public void merge(GtfsMergeContext context) { + GtfsRelationalDao source = context.getSource(); + GtfsMutableRelationalDao target = context.getTarget(); + String agencyStr = getAgencyStr(source); + for (String filename : source.getOptionalMetadataFilenames()) { + if (source.hasMetadata(filename)) { + StringBuffer content = new StringBuffer(); + content.append("\n====== "); + content.append(agencyStr); + content.append(" ======\n"); + content.append(source.getMetadata(filename)); + if (target.hasMetadata(filename)) { + content.append(target.getMetadata(filename)); + } + target.addMetadata(filename, content.toString()); + } + } + } + + private String getAgencyStr(GtfsRelationalDao source) { + int agencyCount = source.getAllAgencies().size(); + if (agencyCount == 0) + return ""; + if (agencyCount == 1) + return source.getAllAgencies().iterator().next().getId(); + StringBuffer sb = new StringBuffer(); + sb.append("["); + for (Agency agency : source.getAllAgencies()) { + sb.append(agency).append(","); + } + return sb.substring(0, sb.length()-2) + "]"; + } +} diff --git a/onebusaway-gtfs-merge/src/test/java/org/onebusaway/gtfs_merge/MergeExpectedFilesTest.java b/onebusaway-gtfs-merge/src/test/java/org/onebusaway/gtfs_merge/MergeExpectedFilesTest.java new file mode 100644 index 000000000..02be0698d --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/java/org/onebusaway/gtfs_merge/MergeExpectedFilesTest.java @@ -0,0 +1,128 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_merge; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onebusaway.gtfs.impl.FileSupport; +import org.onebusaway.gtfs.impl.ZipHandler; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertTrue; + +/** + * Test appending metadata inputs as part of merge. + */ +public class MergeExpectedFilesTest { + + private GtfsMerger _merger; + + private FileSupport _support = new FileSupport(); + + @Before + public void before() throws IOException { + _merger = new GtfsMerger(); + } + + @After + public void after() { + _support.cleanup(); + } + + @Test + public void testDirectoryMerge() throws Exception { + File path0 = new File(getClass().getResource( + "/org/onebusaway/gtfs_merge/testagency").toURI()); + File path1 = new File(getClass().getResource( + "/org/onebusaway/gtfs_merge/testagency1").toURI()); + File path2 = new File(getClass().getResource( + "/org/onebusaway/gtfs_merge/testagency2").toURI()); + + List paths = new ArrayList(); + paths.add(path0); + paths.add(path1); + paths.add(path2); + + File gtfsDirectory = merge(paths, createTempDirectory()); + String modLocation = gtfsDirectory.getAbsolutePath() + File.separator + "modifications.txt"; + File expectedFile = new File(modLocation); + // verify modifications.txt is there!!!! + assertTrue("expected modifications.txt to be present!", expectedFile.exists()); + assertTrue("expected modifications.txt to be a file!", expectedFile.isFile()); + StringBuffer sb = new StringBuffer(); + BufferedReader br = new BufferedReader(new FileReader(expectedFile)); + sb.append(br.lines().collect(Collectors.joining(System.lineSeparator()))); + assertTrue(sb.toString().contains("testagency")); + assertTrue(sb.toString().contains("testagency1")); + assertTrue(sb.toString().contains("testagency2")); + } + + @Test + public void testZipMerge() throws Exception { + File path0 = new File(getClass().getResource( + "/org/onebusaway/gtfs_merge/testagency.zip").toURI()); + File path1 = new File(getClass().getResource( + "/org/onebusaway/gtfs_merge/testagency1.zip").toURI()); + File path2 = new File(getClass().getResource( + "/org/onebusaway/gtfs_merge/testagency2.zip").toURI()); + List paths = new ArrayList(); + paths.add(path0); + paths.add(path1); + paths.add(path2); + + File gtfsZip = merge(paths, createTempFile()); + + ZipHandler zip = new ZipHandler(gtfsZip); + String content = zip.readTextFromFile("modifications.txt"); + assertTrue(content.contains("testagency ")); + assertTrue(content.contains("testagency1")); + assertTrue(content.contains("testagency2")); + + } + + private File createTempDirectory() throws IOException { + File tmpDirectory = File.createTempFile("MergeExpectedFilesTest-", "-tmp"); + if (tmpDirectory.exists()) + _support.deleteFileRecursively(tmpDirectory); + tmpDirectory.mkdirs(); + _support.markForDeletion(tmpDirectory); + return tmpDirectory; + } + + private File createTempFile() throws IOException { + File tmpZipFileDirectory = File.createTempFile("CarryForwardExpectedFilesTestZip-", "-tmp"); + if (tmpZipFileDirectory.exists()) + _support.deleteFileRecursively(tmpZipFileDirectory); + tmpZipFileDirectory.mkdirs(); + + File zipFile = new File(tmpZipFileDirectory.getAbsolutePath() + File.separator + "gtfs.zip"); + _support.markForDeletion(zipFile); + return zipFile; + } + + private File merge(List paths, File destination) throws IOException { + _merger.run(paths, destination); + return destination; + } +} diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency.zip b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency.zip new file mode 100644 index 0000000000000000000000000000000000000000..a515a690108eeb3414ec320ea527fffa723cabb7 GIT binary patch literal 2559 zcmWIWW@Zs#U}E54V0F(3O-NpSGlYSGAs2|b7-Sd{(^K=3EA>h$NlekbgprE zuBxccog4D+gZvZs$ZrOp1Wv4vRa8*k2v@TC4P1n;w6JNJWb@8?wnHV^zk21g{r%ih(OUmtS)4-{8{<(#Ggs0nnLuPWd%&0 z8C_y@Ox8=5HF#olkrJM zzIf8TQu%W0%3YVa*LFQ}w7dQ&FmtKM0=6$lqXL;YFNphh*)EZ^$m({O`hA0viL}Y= z46T!`J%879iB600oi4J1Q8PYBfw^dx%Gr4dZ?`fUDX3{SPVSw*aO&eJ4XNu&10HK= zEDBq|c4g(XbmL~T1D;tC3uRzQRjY)zT z!nMbfui1dd^}F5ad{)n>YiB-721E%cTnu0gT7SR6y5jNoFFNaQ|H(Nf_Ih7$U5U@+ zdv*rWd)n5`e%CBF{h8V8rLw;Mb~PI8>i&n8GB9>;5>iUpd0-)j;OVQ=Bn-RLRUMh0 z%B4?HY85&oX{2#-j`DM9My&t??|{xpk&Rj*)6So>bN{Dwbw$1FpYFe3*-$<7s4rlW zJvB-{BX2G4pwc4a z&yNI^X6{@WbI;1oip?s<&g!1RDRB?U*9@$+jv{E;J8etXb5OA60y7CHSWAjB3kbR( z^?V@LVFdw}3;*Y&YL;GoVsUT=tEyAeGTyzlXP1ep)*ntTJF;V6nbcpN&PTVS`>MZ4 zPd1i5EE2YR&cgzigI13pXRKK|<&Ve;;RL4{XVn`kI2Z(aANZXy z%1{F6IR*xx?--Uef>_8^BP*n8L@UwJ%|orkkja2-i2p6iEJc%m;#?NDxTqD<~+G5=BlhWW+N_KH`wbQb0Hvcdd;a8!rLDMBl+62>cg< zT-`i+U2C)Z+y)4l^|P{c@1W_yvtR9M(7>8C>RO?TBsxY9xb}QUipi|Uy0{=~=HCvb z*(S2(vzifm*@>LRX7k);wnHf=Ybk~Oc;>{S!h1RWBS^x<_@v0wKC5q3C!KuXVP>W8)cL7>dz~^e zxWzj$m|n~z*y=cRd!3j%ro`Nq*?DFM370*CXGi})g(ZenRAj*8FzE8HA1rQ1^Hm~& zCJ0*o$zUI1n{kY% zLIZWD&`}Huo$;XuMusS)a7|X`GHH(BrvG|Hi;e}Kf4XL!Ug>qA4G1})RXT7i6FbXt z;m(1ERl@f!COp5hoZpr1V`!%$ZSur;5N1O*B&%R1jR#q)DH)h&oTDp z!PHk5AJx(GCt_9OED~CVBrY+zHuzDlC$&nhLTvu_eowe~|4t94cstsJ*Tvr=?dJgzCSr)=Cb1gT-&g+&;nE|iA&SKDhbzb{ur zi7at@Ly`VJ%HF=#XJS}@Yh^jyMF!u@8nMYBV25XMffy>yAWuZ8zxizS8{Ya^%@x}Kc|~1DBp-nQ+o4ar?U%hf#pyJ)HiUF z>NLZ2tWR5uP1e&&a!kJ@CoeTlRQ#R6#J-Wm&c0=9`sUWx9upcNwulHErOJcZU|L9g*!(G}h*nsXtYQ z=@K!n#H@VZ!@54jeShMeR@H{9QyrFBD{sYw6XNC)^Q}NK{FS^7B*dTvMbW`>*f1$Q zP9EBjgFen*$$DLVN9Zn0**WHr7mMqvE8!JO!_IMK)JmJ#{uAbSb1`#&y!iyGYp1i~ z6ofcrBe!O}L#{BN^2-_thJ;^M28|lCp#n;uC-N3bTD1Rt8AT^{coNrMg3z>0Kfmqz zq2BZInyI(Q2YY}yh{)AcVOUp5$}8R+4TD`*wDA}cgo3xWqJE>A5^SD^>X`(~Qx z&yI5Kc(JPQb0crO1A7_<-z~D9&+P)qK@i9eI(L|V5_CPp2iIG(tk?2{{Yj8l0(io1 z^(EqZULr`u1EHUB7J&VXtE?3&Y#M^t8h{nFkT1#nzmUSKUyx@ChlGq^b3EZ?EXbSZ z^VY29%`t`7f*`X^^aJzbYu+4Acqj#NdB8!|jOgZ&!V@Nllo#V8Kh4{EI0X2NKb+#w L1Sr#!e}DZ0?4LXa literal 0 HcmV?d00001 diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/agency.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/agency.txt new file mode 100644 index 000000000..eaceaf9df --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/agency.txt @@ -0,0 +1,2 @@ +agency_id,agency_name,agency_url,agency_timezone +agency1,Fake Agency1,http://fake.example.com,America/New_York diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/calendar.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/calendar.txt new file mode 100644 index 000000000..6b351dffa --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/calendar.txt @@ -0,0 +1,3 @@ +service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date +alldays,1,1,1,1,1,1,1,20090101,20500101 +weekdays,1,1,1,1,1,0,0,20090101,20500101 diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/modifications.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/modifications.txt new file mode 100644 index 000000000..5ea4b46a3 --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/modifications.txt @@ -0,0 +1,5 @@ +This is long text +that forms +the basis + +of testagency1 diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/routes.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/routes.txt new file mode 100644 index 000000000..0a4dd22de --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/routes.txt @@ -0,0 +1,8 @@ +route_id,route_short_name,route_long_name,route_type +1,1,1,3 +2,2,2,3 +3,3,3,3 +4,4,4,4 +5,5,5,5 +6,6,6,6 +7,7,7,7 diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/shapes.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/shapes.txt new file mode 100644 index 000000000..5e0159c3f --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/shapes.txt @@ -0,0 +1,10 @@ +shape_id,shape_pt_lat,shape_pt_lon,shape_pt_sequence,shape_dist_traveled +4,41.0,-75.0,1, +4,42.0,-75.0,2, +4,42.5,-75.3,3, +4,43.0,-75.0,4, +5,41.0,-72.0,1,0 +5,41.5,-72.5,2,1.234 +5,41.0,-73.0,3,17.62 +5,41.5,-73.5,4,35.234 +5,41.0,-74.0,5,52.01 diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/stop_times.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/stop_times.txt new file mode 100644 index 000000000..228561b53 --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/stop_times.txt @@ -0,0 +1,44 @@ +trip_id,arrival_time,departure_time,stop_id,stop_sequence,shape_dist_traveled,pickup_type,drop_off_type +1.1,00:00:00,00:00:00,A,1,,, +1.1,00:10:00,00:10:00,B,2,,, +1.1,00:20:00,00:20:00,C,3,,, +1.2,00:20:00,00:20:00,A,1,0,, +1.2,,,B,2,,3,2 +1.2,00:40:00,00:40:00,C,3,52.1,, +1.3,08:00:00,08:00:00,A,1,,, +1.3,08:10:00,08:20:00,B,2,,, +1.3,08:30:00,08:30:00,C,3,,, +2.1,00:20:00,00:20:00,B,1,,, +2.1,00:30:00,00:30:00,C,2,,, +2.1,00:40:00,00:40:00,D,3,,, +2.2,00:50:00,00:50:00,B,1,,, +2.2,01:00:00,01:00:00,C,2,,, +2.2,01:10:00,01:10:00,D,3,,, +3.1,00:40:00,00:40:00,B,1,,, +3.1,00:50:00,00:50:00,C,2,,, +3.1,01:00:00,01:00:00,D,3,,, +3.1,01:10:00,01:10:00,E,4,,, +3.2,01:00:00,01:00:00,B,1,,, +3.2,01:10:00,01:10:00,C,2,,, +3.2,01:20:00,01:20:00,D,3,,, +3.2,01:30:00,01:30:00,E,4,,, +4.1,05:00:00,05:00:00,F,1,,, +4.1,05:30:00,05:30:00,G,2,,, +4.1,06:00:00,06:00:00,H,3,,, +4.2,23:00:00,23:00:00,F,1,,, +4.2,23:30:00,23:30:00,G,2,,, +4.2,24:00:00,24:00:00,H,3,,, +4.3,23:40:00,23:40:00,F,1,,, +4.3,24:10:00,24:10:00,G,2,,, +4.3,24:40:00,24:40:00,H,3,,, +5.1,08:00:00,08:00:00,I,1,0,, +5.1,08:10:00,08:10:00,J,2,22.5,, +5.1,08:20:00,08:20:00,K,3,52.01,, +6.1,12:00:00,12:00:00,I,1,,, +6.1,12:10:00,12:10:00,J,2,,, +6.2,13:00:00,13:00:00,I,1,,, +6.2,13:10:00,13:10:00,J,2,,, +7.1,12:20:00,12:20:00,J,1,,, +7.1,12:30:00,12:30:00,K,2,,, +7.2,13:20:00,13:20:00,J,1,,, +7.2,13:30:00,13:30:00,K,2,,, diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/stops.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/stops.txt new file mode 100644 index 000000000..37f31d1a3 --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/stops.txt @@ -0,0 +1,14 @@ +stop_id,stop_name,stop_lat,stop_lon,wheelchair_boarding +A,A,40,-73,1 +B,B,40,-74,1 +C,C,40,-75,0 +D,D,40,-76,1 +E,E,40,-77,1 +F,F,41,-75, +G,G,42,-75, +H,H,43,-75, +I,I,41,-72, +J,J,41,-73, +K,K,41,-74, +L,L,41.000001,-73.000001, +M,M,41.000002,-73.000002, diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/transfers.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/transfers.txt new file mode 100644 index 000000000..f085afa3a --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/transfers.txt @@ -0,0 +1,5 @@ +to_stop_id,from_stop_id,transfer_type,min_transfer_time +K,L,0, +L,K,0, +M,K,3, +K,M,3, diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/trips.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/trips.txt new file mode 100644 index 000000000..40f94cba4 --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency1/trips.txt @@ -0,0 +1,16 @@ +route_id,service_id,trip_id,shape_id,block_id,wheelchair_accessible +1,alldays,1.1,,,1 +1,alldays,1.2,,,1 +1,alldays,1.3,,,1 +2,alldays,2.1,,,0 +2,alldays,2.2,,,0 +3,alldays,3.1,,,1 +3,alldays,3.2,,,1 +4,weekdays,4.1,4,, +4,weekdays,4.2,4,, +4,weekdays,4.3,4,, +5,alldays,5.1,5,, +6,alldays,6.1,,block.1, +7,alldays,7.1,,block.1, +6,alldays,6.2,,block.2, +7,alldays,7.2,,block.2, diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2.zip b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2.zip new file mode 100644 index 0000000000000000000000000000000000000000..209caa41b5f1667148cff4ff18e723442ead4fdc GIT binary patch literal 2537 zcmWIWW@Zs#U}E54V0F(3O-NpSGlYSGAs2|b7-Sd{(^K=3EA>h$NlekbgprE zuBxccog4D+gZvZs$ZrOp1Wv4vRa8*k2v@TC4P1n;w6JNJWb@8?wnHV^zk21i2@_8#Jm)) zy!?`k%)E52)STi}JucKB`un-1$PH*QEb5B#OM%+qw&I97?Nj=?p1r`B(_}L4GXB)< z_2@G&{uVM>{;Yg?;?Ja0O(A;DvH~X0j4m-cChH~38ay$&$mpyW3}RdcGKzr=CbY<6 zoT1E61$4=KAOd`-ZV z?ZL{xzz1@DNq#|mNoFo#ALLHHn+NoP+xzc2f?02-EWF$McayD4=*0!08!k?5+Oj?V z)e~;dl`So|ljomzOnGs8U6yp{_uA@}{8um3MPI$K?p=Fv{@=%$7GC`|^WVI``7h`0 z?e)7hhhCo7mi6Lwx9ttL(zj*x?^ZorUp(nvseHM0<*v)zYr7sf+FgGXn7LGB0o#|O zQGraH7sUO$Y?nw{WOX}C{k}oTMA~F_hStf}p1*6lM5o30P8V6hs2Lxmz+ALTXt^RGu|)45`jgpTe$Z=yHZVo$g06|R&6 zo!1aDMgud&d-xM+`AK%KhX z-(Ia_+FMIxXEm9NN$)RjkoxdS+{5ef_iooYK-X_RS-oC0L(^fd1KX1gMKeTn9j#}I zoM^cD#2z&!H40}&_5su2S0Ltu#w5WE;o9TL*KEM!`rYnyKC5TcwKJb31EK^JE(S0L zt-s%3UGez)7oGLD|KuDKd%dr>uEb~ZJv#&GJ#Fh|ziXD8{><$4QdwVryBZC4b^k+4 z85p}a2`Q!QJg|^M@buMb5{BLBs*X%g<Js|gbvdZ}k+&9iP-&6z=SPA{Gk30xxo2f(#by;_XLV2El(>iFYX;U@ zM-jB_owlXxIVf0jftdsptR+R61q5A?dOncruz~=~h5vI>HA}BPu{bz`Rn@6!8SmcO zv&%$P>klWF9oez3OzJOB=cC)vebry2CmTy2775!u=V5`%L954)GuAAf@<(KaaDvl} zv+9i%91H@z4}4X)#T@rlnKkKb>iDC3y+~KvqC-q=syEjH)jg9_E~R=sx1PIH|I+;P zAGa63XnW-RxK#dsU+(^Iz+#(`Nsbv;wI>1e90LQ;cMMA!K`i7-kQGu1qLtm~=Al+s z$mY!enul6>;WH6e)q-rI9nhgzDjJ}%SSlHGhoV**$j0sl8jD<%WjFHV_W(JyvRx}f5CTg*OZ01=Oh?&sTOq_A3nG)H!dB7S3EsGLoBx(*r dHd2KRWF$Pl;WCaDs0@@jIT`K&gZ(R*2LRw4L{|U+ literal 0 HcmV?d00001 diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/agency.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/agency.txt new file mode 100644 index 000000000..9e71d386f --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/agency.txt @@ -0,0 +1,2 @@ +agency_id,agency_name,agency_url,agency_timezone +agency2,Fake Agency 2,http://fake.example.com,America/New_York diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/calendar.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/calendar.txt new file mode 100644 index 000000000..6b351dffa --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/calendar.txt @@ -0,0 +1,3 @@ +service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date +alldays,1,1,1,1,1,1,1,20090101,20500101 +weekdays,1,1,1,1,1,0,0,20090101,20500101 diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/modifications.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/modifications.txt new file mode 100644 index 000000000..821201d3a --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/modifications.txt @@ -0,0 +1,3 @@ +This is long text that forms the basis +of testagency2 + diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/routes.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/routes.txt new file mode 100644 index 000000000..0a4dd22de --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/routes.txt @@ -0,0 +1,8 @@ +route_id,route_short_name,route_long_name,route_type +1,1,1,3 +2,2,2,3 +3,3,3,3 +4,4,4,4 +5,5,5,5 +6,6,6,6 +7,7,7,7 diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/shapes.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/shapes.txt new file mode 100644 index 000000000..5e0159c3f --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/shapes.txt @@ -0,0 +1,10 @@ +shape_id,shape_pt_lat,shape_pt_lon,shape_pt_sequence,shape_dist_traveled +4,41.0,-75.0,1, +4,42.0,-75.0,2, +4,42.5,-75.3,3, +4,43.0,-75.0,4, +5,41.0,-72.0,1,0 +5,41.5,-72.5,2,1.234 +5,41.0,-73.0,3,17.62 +5,41.5,-73.5,4,35.234 +5,41.0,-74.0,5,52.01 diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/stop_times.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/stop_times.txt new file mode 100644 index 000000000..228561b53 --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/stop_times.txt @@ -0,0 +1,44 @@ +trip_id,arrival_time,departure_time,stop_id,stop_sequence,shape_dist_traveled,pickup_type,drop_off_type +1.1,00:00:00,00:00:00,A,1,,, +1.1,00:10:00,00:10:00,B,2,,, +1.1,00:20:00,00:20:00,C,3,,, +1.2,00:20:00,00:20:00,A,1,0,, +1.2,,,B,2,,3,2 +1.2,00:40:00,00:40:00,C,3,52.1,, +1.3,08:00:00,08:00:00,A,1,,, +1.3,08:10:00,08:20:00,B,2,,, +1.3,08:30:00,08:30:00,C,3,,, +2.1,00:20:00,00:20:00,B,1,,, +2.1,00:30:00,00:30:00,C,2,,, +2.1,00:40:00,00:40:00,D,3,,, +2.2,00:50:00,00:50:00,B,1,,, +2.2,01:00:00,01:00:00,C,2,,, +2.2,01:10:00,01:10:00,D,3,,, +3.1,00:40:00,00:40:00,B,1,,, +3.1,00:50:00,00:50:00,C,2,,, +3.1,01:00:00,01:00:00,D,3,,, +3.1,01:10:00,01:10:00,E,4,,, +3.2,01:00:00,01:00:00,B,1,,, +3.2,01:10:00,01:10:00,C,2,,, +3.2,01:20:00,01:20:00,D,3,,, +3.2,01:30:00,01:30:00,E,4,,, +4.1,05:00:00,05:00:00,F,1,,, +4.1,05:30:00,05:30:00,G,2,,, +4.1,06:00:00,06:00:00,H,3,,, +4.2,23:00:00,23:00:00,F,1,,, +4.2,23:30:00,23:30:00,G,2,,, +4.2,24:00:00,24:00:00,H,3,,, +4.3,23:40:00,23:40:00,F,1,,, +4.3,24:10:00,24:10:00,G,2,,, +4.3,24:40:00,24:40:00,H,3,,, +5.1,08:00:00,08:00:00,I,1,0,, +5.1,08:10:00,08:10:00,J,2,22.5,, +5.1,08:20:00,08:20:00,K,3,52.01,, +6.1,12:00:00,12:00:00,I,1,,, +6.1,12:10:00,12:10:00,J,2,,, +6.2,13:00:00,13:00:00,I,1,,, +6.2,13:10:00,13:10:00,J,2,,, +7.1,12:20:00,12:20:00,J,1,,, +7.1,12:30:00,12:30:00,K,2,,, +7.2,13:20:00,13:20:00,J,1,,, +7.2,13:30:00,13:30:00,K,2,,, diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/stops.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/stops.txt new file mode 100644 index 000000000..37f31d1a3 --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/stops.txt @@ -0,0 +1,14 @@ +stop_id,stop_name,stop_lat,stop_lon,wheelchair_boarding +A,A,40,-73,1 +B,B,40,-74,1 +C,C,40,-75,0 +D,D,40,-76,1 +E,E,40,-77,1 +F,F,41,-75, +G,G,42,-75, +H,H,43,-75, +I,I,41,-72, +J,J,41,-73, +K,K,41,-74, +L,L,41.000001,-73.000001, +M,M,41.000002,-73.000002, diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/transfers.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/transfers.txt new file mode 100644 index 000000000..f085afa3a --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/transfers.txt @@ -0,0 +1,5 @@ +to_stop_id,from_stop_id,transfer_type,min_transfer_time +K,L,0, +L,K,0, +M,K,3, +K,M,3, diff --git a/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/trips.txt b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/trips.txt new file mode 100644 index 000000000..40f94cba4 --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/org/onebusaway/gtfs_merge/testagency2/trips.txt @@ -0,0 +1,16 @@ +route_id,service_id,trip_id,shape_id,block_id,wheelchair_accessible +1,alldays,1.1,,,1 +1,alldays,1.2,,,1 +1,alldays,1.3,,,1 +2,alldays,2.1,,,0 +2,alldays,2.2,,,0 +3,alldays,3.1,,,1 +3,alldays,3.2,,,1 +4,weekdays,4.1,4,, +4,weekdays,4.2,4,, +4,weekdays,4.3,4,, +5,alldays,5.1,5,, +6,alldays,6.1,,block.1, +7,alldays,7.1,,block.1, +6,alldays,6.2,,block.2, +7,alldays,7.2,,block.2, diff --git a/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/CarryForwardExpectedFilesTest.java b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/CarryForwardExpectedFilesTest.java new file mode 100644 index 000000000..8fcef1bcd --- /dev/null +++ b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/CarryForwardExpectedFilesTest.java @@ -0,0 +1,109 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_transformer.updates; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onebusaway.gtfs.impl.FileSupport; +import org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl; +import org.onebusaway.gtfs.impl.ZipHandler; +import org.onebusaway.gtfs.serialization.GtfsReader; +import org.onebusaway.gtfs.serialization.GtfsWriter; + +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; + +import static org.junit.Assert.assertTrue; + +/** + * Ensure metadata files are still present in typical read/write cycle. + */ +public class CarryForwardExpectedFilesTest { + + private GtfsRelationalDaoImpl _dao; + private File _tmpFileDirectory; + + private File _tmpZipFileDirectory; + + private FileSupport _support = new FileSupport(); + + @Before + public void setup() throws IOException, URISyntaxException { + _dao = new GtfsRelationalDaoImpl(); + } + + @After + public void teardown() { + _support.cleanup(); + } + + @Test + public void testFile() throws Exception { + GtfsReader reader = new GtfsReader(); + File path = new File(getClass().getResource( + "/org/onebusaway/gtfs_transformer/testagency").toURI()); + reader.setInputLocation(path); + reader.setEntityStore(_dao); + reader.run(); + + _tmpFileDirectory = File.createTempFile("CarryForwardExpectedFilesTest-", "-tmp"); + if (_tmpFileDirectory.exists()) + _support.deleteFileRecursively(_tmpFileDirectory); + _tmpFileDirectory.mkdirs(); + _support.markForDeletion(_tmpFileDirectory); + + // write out the file + GtfsWriter writer = new GtfsWriter(); + writer.setOutputLocation(_tmpFileDirectory); + writer.run(_dao); + writer.close(); + String modLocation = _tmpFileDirectory.getAbsolutePath() + File.separator + "modifications.txt"; + File expectedFile = new File(modLocation); + // verify modifications.txt is there!!!! + assertTrue("expected modifications.txt to be present!", expectedFile.exists()); + assertTrue("expected modifications.txt to be a file!", expectedFile.isFile()); + } + + @Test + public void testZipFile() throws Exception { + GtfsReader reader = new GtfsReader(); + File inputZipFile = new File(getClass().getResource( + "/org/onebusaway/gtfs_transformer/testagency.zip").toURI()); + reader.setInputLocation(inputZipFile); + reader.setEntityStore(_dao); + reader.run(); + + _tmpZipFileDirectory = File.createTempFile("CarryForwardExpectedFilesTestZip-", "-tmp"); + if (_tmpZipFileDirectory.exists()) + _support.deleteFileRecursively(_tmpZipFileDirectory); + _tmpZipFileDirectory.mkdirs(); + _support.markForDeletion(_tmpZipFileDirectory); + + String zipFileName = _tmpZipFileDirectory.getAbsolutePath() + File.separator + "gtfs.zip"; + // write out the file + GtfsWriter writer = new GtfsWriter(); + writer.setOutputLocation(new File(zipFileName)); + writer.run(_dao); + writer.close(); + + ZipHandler zip = new ZipHandler(new File(zipFileName)); + String content = zip.readTextFromFile("modifications.txt"); + // look for some content inside file to verify its correct + assertTrue(content.contains("characters")); + } +} diff --git a/onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/testagency.zip b/onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/testagency.zip new file mode 100644 index 0000000000000000000000000000000000000000..cd6480431237887a3fdfd83da2bb7017f5a2c1c1 GIT binary patch literal 2619 zcmWIWW@Zs#U}E54V0F(3O-NpSGlYSGAs2|b7-Sd{(^K=3EA>h$NlekbgprE zuBxccog4D+gZvZs$ZrOp1Wv4vRa8*k2v@TC4P1n;w6JNJWb@8?wnHV^zk21edM@Ko_n9VnLuQbMsR&(=wA2 zOEUBGis4Qb-MSZBAjY1yjv4F5k zLVE&%AFqK{Bnwcc`kbl3*96Qf9;^%ud?44Cm9T+0t@5dH#9Floz+x zWl4vAudQCmfAvCL^wk^d-nAF!|9zZk;niO=|IPcG|8nl$UcYN|=;e8BSub99+um?1 zeOp%lZq>u}#gp!p%9mSL?z+sqw(F6j-StO-nM*|$uzfii70ASSLEOK~c8R1#R=2~{ z?;Dg%q)ldLXq{~B`Mah|bXtt>bdeQ|n(;vj%tgCY&dy7CyOq&MK~1x9a_{_wQy))h zNL^PN@K{4*QP={uD=Vj^8#kLB@JzeFwdbVIR`Z$qrz$MA=bo8!+boSs#o?4OtC7O; znQ1XAT-3V4=SwOu|9W&bohv3u=;-eACVG=C_H?^m;YvBsdCjre)A;Hqiv)wrBHeyw zsmWH?xl9_=u1``MPhXuT zVc4Cn>d5p|E`5qptI!!qBaM@Dl%Gp8Y6Td02Xsz~Y}5*wcK)25`#+_tE9zbUbpQRz zhU%e5eF2l~ft~@C`Mf|6l@ulB6{n>Z5%iSy$$ovkllmQ?GGF`D`PO2uE}_p|mxH<= zd24Y8l@=L)ek7gkbdUGvM-7`7mQmWT;>$ywyFU>#yaeMKLwnxs7OXdIf8k toDelete = new ArrayList<>(); + public FileSupport() { + } + + public void markForDeletion(File file) { + toDelete.add(file); + } + + public void cleanup() { + for (File file : toDelete) { + deleteFileRecursively(file); + } + toDelete.clear(); + } + + public void deleteFileRecursively(File file) { + if (file == null) + return; + + if (!file.exists()) + return; + + if (file.isDirectory()) { + File[] files = file.listFiles(); + if (files != null) { + for (File child : files) + deleteFileRecursively(child); + } + } + + file.delete(); + } + +} diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java index 7d10aea1a..ffacac03e 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java @@ -16,8 +16,7 @@ package org.onebusaway.gtfs.impl; import java.io.Serializable; -import java.util.Collection; -import java.util.Map; +import java.util.*; import org.onebusaway.gtfs.model.*; import org.onebusaway.gtfs.services.GenericMutableDao; @@ -34,6 +33,10 @@ public class GtfsDaoImpl extends GenericDaoImpl implements GtfsMutableDao { private boolean packShapePoints = false; + private String[] _optionalMetadataFilenames = {"modifications.txt"}; + + private Map metadataByFilename = new HashMap<>(); + public boolean isPackStopTimes() { return packStopTimes; } @@ -364,6 +367,24 @@ public void close() { super.close(); } + @Override + public List getOptionalMetadataFilenames() { + return Arrays.asList(_optionalMetadataFilenames); + } + @Override + public boolean hasMetadata(String filename) { + return metadataByFilename.containsKey(filename); + } + @Override + public String getMetadata(String filename) { + return metadataByFilename.get(filename); + } + @Override + public void addMetadata(String filename, String content) { + metadataByFilename.put(filename, content); + } + + /**** * Private Methods ****/ diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java index 460bf903e..2d5d3167a 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java @@ -379,6 +379,26 @@ public Collection getAllStopAreas() { return _dao.getAllStopAreas(); } + @Override + public List getOptionalMetadataFilenames() { + return _dao.getOptionalMetadataFilenames(); + } + + @Override + public boolean hasMetadata(String filename) { + return _dao.hasMetadata(filename); + } + + @Override + public String getMetadata(String filename) { + return _dao.getMetadata(filename); + } + + @Override + public void addMetadata(String filename, String content) { + _dao.addMetadata(filename, content); + } + @Override public List getRidershipForTrip(AgencyAndId tripId) { return _dao.getRidershipForTrip(tripId); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/ZipHandler.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/ZipHandler.java new file mode 100644 index 000000000..5185be452 --- /dev/null +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/ZipHandler.java @@ -0,0 +1,93 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.impl; + +import java.io.File; +import java.io.IOException; +import java.io.Writer; +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.nio.file.*; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.HashMap; +import java.util.stream.Collectors; + +/** + * Zip file support. + */ +public class ZipHandler { + + public static final String ZIP_SCHEME = "jar:file:"; + + private File zipFile; + + public ZipHandler(File zipFile) { + this.zipFile = zipFile; + } + + /** + * read metadata files from a text file. + * @param fileInZip + * @return + * @throws IOException + */ + public String readTextFromFile(String fileInZip) throws IOException { + final StringBuffer content = new StringBuffer(); + FileSystem zipFileSystem = null; + try { + URI uri = URI.create(ZIP_SCHEME + zipFile.getAbsolutePath()); + // java 7 introduced native support for zip files + zipFileSystem = FileSystems.newFileSystem(uri, new HashMap<>()); + Path root = zipFileSystem.getPath(fileInZip); + + Files.walkFileTree(root, new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + content.append(Files.lines(file).collect(Collectors.joining(System.lineSeparator()))); + return FileVisitResult.TERMINATE; + } + }); + return content.toString(); + } finally { + if (zipFileSystem != null) { + zipFileSystem.close(); + } + } + } + + /** + * write metatdata files to an existing zip file. + * @param fileInZip + * @param content + * @throws IOException + */ + public void writeTextToFile(String fileInZip, String content) throws IOException { + FileSystem zipFileSystem = null; + try { + URI uri = URI.create(ZIP_SCHEME + zipFile.toURI().getPath()); + // java 7 introduced native support for zip files + zipFileSystem = FileSystems.newFileSystem(uri, new HashMap<>()); + Path newZipEntry = zipFileSystem.getPath(fileInZip); + Writer writer = Files.newBufferedWriter(newZipEntry, StandardCharsets.UTF_8, StandardOpenOption.CREATE); + writer.write(content); + writer.close(); + } finally { + if (zipFileSystem != null) { + zipFileSystem.close(); + } + } + } +} diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java index e1b810696..351e4846e 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java @@ -16,13 +16,10 @@ */ package org.onebusaway.gtfs.serialization; -import java.io.IOException; -import java.io.Reader; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.nio.file.*; +import java.util.*; import org.onebusaway.csv_entities.CsvEntityContext; import org.onebusaway.csv_entities.CsvEntityReader; @@ -32,6 +29,7 @@ import org.onebusaway.csv_entities.exceptions.CsvEntityIOException; import org.onebusaway.csv_entities.schema.DefaultEntitySchemaFactory; import org.onebusaway.gtfs.impl.GtfsDaoImpl; +import org.onebusaway.gtfs.impl.ZipHandler; import org.onebusaway.gtfs.model.*; import org.onebusaway.gtfs.services.GenericMutableDao; import org.slf4j.Logger; @@ -60,6 +58,8 @@ public class GtfsReader extends CsvEntityReader { private boolean _overwriteDuplicates = false; + private File _inputLocation = null; + public GtfsReader() { _entityClasses.add(Agency.class); @@ -116,6 +116,11 @@ public GtfsReader() { addEntityHandler(new EntityHandlerImpl()); } + public void setInputLocation(File path) throws IOException { + super.setInputLocation(path); + _inputLocation = path; + } + public void setLastModifiedTime(Long lastModifiedTime) { if (lastModifiedTime != null) getContext().put("lastModifiedTime", lastModifiedTime); @@ -200,6 +205,54 @@ public void run(CsvInputSource source) throws IOException { } _entityStore.close(); + + // support metadata files that are not CSV + // but only if we have a GtfsDao + if (_entityStore instanceof GtfsDaoImpl) { + List filenames = ((GtfsDaoImpl) _entityStore).getOptionalMetadataFilenames(); + if (filenames != null) { + for (String metaFile : filenames) { + if (source.hasResource(metaFile)) { + _log.info("reading metadata file: " + metaFile); + ((GtfsDaoImpl) _entityStore).addMetadata(metaFile, readContent(_inputLocation, metaFile)); + } + } + } + } + } + + private String readContent(File inputLocation, String filename) { + if (inputLocation.getAbsoluteFile().getName().endsWith(".zip")) { + // zip file + return readContentFromZip(inputLocation, + filename); + } else { + // file in directory + return readContentFromFile(new File(inputLocation.getAbsolutePath() + + File.separator + + filename)); + } + } + + private String readContentFromFile(File filePath) { + StringBuffer sb = new StringBuffer(); + try { + byte[] bytes = Files.readAllBytes(filePath.toPath()); + sb.append(new String(bytes, StandardCharsets.UTF_8)); + } catch (IOException e) { + System.err.println("issue reading content from " + filePath); + } + return sb.toString(); + } + + private String readContentFromZip(File zipFilePath, String zipEntryName) { + try { + ZipHandler zip = new ZipHandler(zipFilePath); + return zip.readTextFromFile(zipEntryName); + } catch (IOException e) { + System.err.println("issue reading content from " + zipFilePath + ":" + zipEntryName); + } + return null; } /**** diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsWriter.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsWriter.java index 9e807e3f9..174805354 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsWriter.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsWriter.java @@ -15,6 +15,8 @@ */ package org.onebusaway.gtfs.serialization; +import java.io.File; +import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; @@ -23,9 +25,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; - import org.onebusaway.csv_entities.CsvEntityWriter; import org.onebusaway.csv_entities.schema.DefaultEntitySchemaFactory; +import org.onebusaway.gtfs.impl.ZipHandler; import org.onebusaway.gtfs.services.GtfsDao; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,6 +41,13 @@ public class GtfsWriter extends CsvEntityWriter { private List> _entityClasses = new ArrayList>(); + private File _outputLocation = null; + + public void setOutputLocation(File path) { + super.setOutputLocation(path); + _outputLocation = path; + } + private Map, Comparator> _entityComparators = new HashMap, Comparator>(); public GtfsWriter() { @@ -75,8 +84,47 @@ public void run(GtfsDao dao) throws IOException { } close(); + + // now copy any metadata files + List filenames = dao.getOptionalMetadataFilenames(); + for (String metadataFile : filenames) { + if (dao.hasMetadata(metadataFile)) { + _log.info("writing metadata file : " + metadataFile); + writeContent(metadataFile, dao.getMetadata(metadataFile)); + } + } + } + + private void writeContent(String srcFilename, String content) { + if (content == null) { + return; + } + // outputLocation may be a zip file! + if (_outputLocation.getName().endsWith(".zip")) { + copyToZipFile(srcFilename, content); + } else { + try { + String location = _outputLocation.getAbsolutePath() + File.separator + srcFilename; + FileWriter fw = new FileWriter(location); + fw.write(content); + fw.close(); + } catch (IOException e) { + // don't let metadata issue kill the entire process + System.err.println("issue copying metadata: "+ e); + } + } } + private void copyToZipFile(String srcFilename, String content) { + try { + new ZipHandler(_outputLocation).writeTextToFile(srcFilename, content); + } catch (IOException e) { + // don't let metadata issue kill the entire process + System.err.println("issue copying metadata to zipfile: "+ e); + } + } + + @SuppressWarnings("unchecked") private Collection sortEntities(Class entityClass, Collection entities) { diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java index 1c9bc170b..cd68744bd 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java @@ -17,6 +17,7 @@ import java.util.Collection; +import java.util.List; import java.util.stream.Stream; import org.onebusaway.gtfs.model.*; @@ -211,4 +212,13 @@ default boolean hasFaresV2() { .findAny() .isPresent(); } + + List getOptionalMetadataFilenames(); + + boolean hasMetadata(String filename); + + String getMetadata(String filename); + + void addMetadata(String filename, String content); + } diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsWriterTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsWriterTest.java index 76d44a04d..b8c47d6b5 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsWriterTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsWriterTest.java @@ -23,24 +23,27 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.onebusaway.gtfs.impl.FileSupport; import org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl; import org.onebusaway.gtfs.model.Agency; public class GtfsWriterTest { + private FileSupport _support = new FileSupport(); private File _tmpDirectory; @Before public void setup() throws IOException { _tmpDirectory = File.createTempFile("GtfsWriterTest-", "-tmp"); if (_tmpDirectory.exists()) - deleteFileRecursively(_tmpDirectory); + _support.deleteFileRecursively(_tmpDirectory); _tmpDirectory.mkdirs(); + _support.markForDeletion(_tmpDirectory); } @After public void teardown() { - deleteFileRecursively(_tmpDirectory); + _support.cleanup(); } @Test From c2c1d7401a6563b6071321ba0e5a16c932b1894c Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Wed, 18 Jan 2023 21:56:39 +0100 Subject: [PATCH 018/123] Upgrade to latest plugin versions --- pom.xml | 10 ++++++++-- src/site/site.xml | 6 +++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 38249683f..80034a591 100644 --- a/pom.xml +++ b/pom.xml @@ -135,7 +135,7 @@ version numbers. --> org.apache.maven.plugins maven-javadoc-plugin - 3.0.1 + 3.4.1 -Xdoclint:none @@ -155,12 +155,18 @@ org.apache.maven.plugins maven-compiler-plugin + 3.10.1 1.8 1.8 - + + org.apache.maven.plugins + maven-site-plugin + 3.12.1 + + org.apache.maven.plugins maven-jar-plugin 3.0.1 diff --git a/src/site/site.xml b/src/site/site.xml index 84be4e4cc..5e9ac6f98 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -1,12 +1,12 @@ - + - + - + From 17c497fcfc1e08696c0410079845800c32ce49be Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Wed, 18 Jan 2023 22:06:58 +0100 Subject: [PATCH 019/123] Format XML --- pom.xml | 146 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 74 insertions(+), 72 deletions(-) diff --git a/pom.xml b/pom.xml index 80034a591..dc54c1cb9 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,5 @@ - + 4.0.0 org.onebusaway @@ -109,78 +110,79 @@ 1.8.0 test - - javax.xml.bind - jaxb-api - 2.3.0 - - - com.sun.xml.bind - jaxb-core - 2.3.0 - - - com.sun.xml.bind - jaxb-impl - 2.3.0 - + + javax.xml.bind + jaxb-api + 2.3.0 + + + com.sun.xml.bind + jaxb-core + 2.3.0 + + + com.sun.xml.bind + jaxb-impl + 2.3.0 + - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - - -Xdoclint:none - 8 - false - - - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.10.1 - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-site-plugin - 3.12.1 - - - org.apache.maven.plugins - maven-jar-plugin - 3.0.1 - - - com.mycila - license-maven-plugin - -
LICENSE.txt
- - **/ci.yml - -
-
-
-
+ + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + -Xdoclint:none + 8 + false + + + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.10.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-site-plugin + 3.12.1 + + + org.apache.maven.plugins + maven-jar-plugin + 3.0.1 + + + com.mycila + license-maven-plugin + +
LICENSE.txt
+ + **/ci.yml + +
+
+
+
From 166da9ee191c26f424908cccdfe5f48d3ae92f99 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Wed, 18 Jan 2023 22:14:21 +0100 Subject: [PATCH 020/123] Use nicer theme for documentation --- pom.xml | 11 ++++++++++- src/site/site.xml | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dc54c1cb9..014f805c2 100644 --- a/pom.xml +++ b/pom.xml @@ -128,7 +128,16 @@ - + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 3.4.2 + + + + diff --git a/src/site/site.xml b/src/site/site.xml index 5e9ac6f98..05d5ad552 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -16,4 +16,9 @@ + + org.apache.maven.skins + maven-fluido-skin + 1.11.1 + From 2cf7841fe5f5c6426c2002448cb37b3c7b11a17c Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Wed, 18 Jan 2023 22:15:16 +0100 Subject: [PATCH 021/123] Build documentation on CI --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 80531a5de..222463302 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,3 +28,6 @@ jobs: - name: Test project with Maven run: mvn --no-transfer-progress test verify + + - name: Build documentation + run: mvn --no-transfer-progress site From e57e1b5576e7e991f27145d90a9dec004c1e46f5 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Wed, 18 Jan 2023 22:24:19 +0100 Subject: [PATCH 022/123] Deploy to Github Pages --- .github/workflows/ci.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 222463302..b2b29aa3a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,7 +6,7 @@ on: branches: [ master ] jobs: - test: + build: runs-on: ubuntu-latest @@ -31,3 +31,10 @@ jobs: - name: Build documentation run: mvn --no-transfer-progress site + + - name: Deploy documentation to Github Pages + # only deploy after merging to master + # if: github.event_name == 'push' && github.ref == 'refs/heads/master' + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: target/site/ From d100226d418d172c8574ba99daf4daae4a18cfd3 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Thu, 19 Jan 2023 10:51:51 +0100 Subject: [PATCH 023/123] Only deploy after merging to master --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b2b29aa3a..fe10b2253 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: - name: Deploy documentation to Github Pages # only deploy after merging to master - # if: github.event_name == 'push' && github.ref == 'refs/heads/master' + if: github.repository_owner == 'OneBusAway' github.event_name == 'push' && github.ref == 'refs/heads/master' uses: JamesIves/github-pages-deploy-action@v4 with: folder: target/site/ From fa80b09bb80b1886705b51096d700216b2069682 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 24 Jan 2023 18:51:28 -0500 Subject: [PATCH 024/123] Improved RemoveRepeatedStopTimesStrategy to support trips that overlap across serviceIds --- .../RemoveRepeatedStopTimesStrategy.java | 3 +- .../updates/TripsByBlockInSortedOrder.java | 84 +++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/RemoveRepeatedStopTimesStrategy.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/RemoveRepeatedStopTimesStrategy.java index 0d3d1b7dd..11465f2f4 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/RemoveRepeatedStopTimesStrategy.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/RemoveRepeatedStopTimesStrategy.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.Map; +import org.onebusaway.collections.tuple.T2; import org.onebusaway.gtfs.model.StopTime; import org.onebusaway.gtfs.model.Trip; import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; @@ -41,7 +42,7 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { int removed = 0; int total = 0; - Map> tripsByBlockId = TripsByBlockInSortedOrder.getTripsByBlockInSortedOrder(dao); + Map> tripsByBlockId = TripsByBlockInSortedOrder.getTripsByBlockAndServiceIdInSortedOrder(dao); for (List trips : tripsByBlockId.values()) { diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/TripsByBlockInSortedOrder.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/TripsByBlockInSortedOrder.java index 7f3932417..9c91a6d5b 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/TripsByBlockInSortedOrder.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/TripsByBlockInSortedOrder.java @@ -22,6 +22,9 @@ import java.util.List; import java.util.Map; +import org.onebusaway.collections.tuple.Pair; +import org.onebusaway.collections.tuple.T2; +import org.onebusaway.gtfs.model.AgencyAndId; import org.onebusaway.gtfs.model.StopTime; import org.onebusaway.gtfs.model.Trip; import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; @@ -91,6 +94,66 @@ public static Map> getTripsByBlockInSortedOrder( return tripsByBlockId; } + public static Map> getTripsByBlockAndServiceIdInSortedOrder( + GtfsMutableRelationalDao dao) { + + Map> tripsByBlockAndServiceId = new HashMap>(); + Map averageStopTimeByTrip = new HashMap(); + + int totalTrips = 0; + int tripsWithoutStopTimes = 0; + + for (Trip trip : dao.getAllTrips()) { + + totalTrips++; + + String blockId = trip.getBlockId(); + + // Generate a random block id if none is present so we get no collisions + if (blockId == null) + blockId = trip.getId() + "-" + Math.random(); + T2 key = new T2Impl(trip.getServiceId(), blockId); + + List trips = tripsByBlockAndServiceId.get(key); + if (trips == null) { + trips = new ArrayList(); + tripsByBlockAndServiceId.put(key, trips); + } + trips.add(trip); + + List stopTimes = dao.getStopTimesForTrip(trip); + if (stopTimes.isEmpty()) { + tripsWithoutStopTimes++; + } else { + + int arrivalTimes = 0; + int arrivalTimeCount = 0; + + for (StopTime stopTime : stopTimes) { + if (stopTime.isArrivalTimeSet()) { + arrivalTimes += stopTime.getArrivalTime(); + arrivalTimeCount++; + } + } + + if (arrivalTimeCount > 0) { + int averageArrivalTime = arrivalTimes / arrivalTimeCount; + averageStopTimeByTrip.put(trip, averageArrivalTime); + } + } + } + + _log.info("trips=" + totalTrips + " withoutStopTimes=" + + tripsWithoutStopTimes); + + TripComparator c = new TripComparator(averageStopTimeByTrip); + + for (List tripsInBlock : tripsByBlockAndServiceId.values()) { + Collections.sort(tripsInBlock, c); + } + return tripsByBlockAndServiceId; + } + private static class TripComparator implements Comparator { private Map _averageArrivalTimesByTrip; @@ -114,4 +177,25 @@ else if (st2 == null) } } + private static class T2Impl implements T2 { + private String first; + private String second; + + public T2Impl(AgencyAndId serviceId, String blockId) { + this.first = null; + if (serviceId != null) + first = serviceId.toString(); + this.second = blockId; + } + + @Override + public Object getFirst() { + return first; + } + + @Override + public Object getSecond() { + return second; + } + } } From cfe0b6191d2e122a6b9ce09667ae1a91e9a608f1 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 25 Jan 2023 07:39:23 -0500 Subject: [PATCH 025/123] added equals for TripsByBlockInSortedOrder fix --- .../updates/TripsByBlockInSortedOrder.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/TripsByBlockInSortedOrder.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/TripsByBlockInSortedOrder.java index 9c91a6d5b..84a9b5af2 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/TripsByBlockInSortedOrder.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/updates/TripsByBlockInSortedOrder.java @@ -197,5 +197,17 @@ public Object getFirst() { public Object getSecond() { return second; } + + @Override + public int hashCode() { + return first.hashCode() + second.hashCode(); + } + @Override + public boolean equals(Object o) { + if (o == this) return true; + T2 t2 = (T2)o; + return this.first.equals(t2.getFirst()) + && this.second.equals(t2.getSecond()); + } } } From 8fafd01bf2b6a9e03a846518279f66e78c919c80 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 25 Jan 2023 08:09:02 -0500 Subject: [PATCH 026/123] added unit test for repeated stops strategy --- .../RemoveRepeatedStopTimesStrategyTest.java | 123 ++++++++++++++++++ .../gtfs_transformer/updates/cut.zip | Bin 0 -> 15937 bytes 2 files changed, 123 insertions(+) create mode 100644 onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/RemoveRepeatedStopTimesStrategyTest.java create mode 100644 onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/updates/cut.zip diff --git a/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/RemoveRepeatedStopTimesStrategyTest.java b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/RemoveRepeatedStopTimesStrategyTest.java new file mode 100644 index 000000000..c7cf84b9f --- /dev/null +++ b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/RemoveRepeatedStopTimesStrategyTest.java @@ -0,0 +1,123 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_transformer.updates; + +import org.junit.Before; +import org.junit.Test; +import org.onebusaway.collections.tuple.T2; +import org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl; +import org.onebusaway.gtfs.model.AgencyAndId; +import org.onebusaway.gtfs.model.StopTime; +import org.onebusaway.gtfs.model.Trip; +import org.onebusaway.gtfs.serialization.GtfsReader; +import org.onebusaway.gtfs.services.GenericMutableDao; +import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; +import org.onebusaway.gtfs_transformer.services.TransformContext; + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.onebusaway.gtfs_transformer.updates.TripsByBlockInSortedOrder.getTripsByBlockAndServiceIdInSortedOrder; + +/** + * test removing repeated stops when blocks are not distinct across service ids. + */ +public class RemoveRepeatedStopTimesStrategyTest { + + private GtfsRelationalDaoImpl _dao; + private TransformContext _context = new TransformContext(); + @Before + public void before() throws IOException { + _dao = new GtfsRelationalDaoImpl(); + } + + @Test + public void testSort() throws Exception { + GtfsReader reader = new GtfsReader(); + File path0 = new File(getClass().getResource( + "/org/onebusaway/gtfs_transformer/updates/cut.zip").toURI()); + reader.setInputLocation(path0); + reader.setEntityStore(_dao); + reader.run(); + + Map> trips = getTripsByBlockAndServiceIdInSortedOrder(_dao); + boolean case1 = false; + for (List partitionedTrips : trips.values()) { + int tripIndex = -1; + for (Trip trip : partitionedTrips) { + tripIndex++; + if ("10514090".equals(trip.getId().getId())) { + // ensure sort worked! + assertEquals("SM-62", partitionedTrips.get(tripIndex).getBlockId()); + assertEquals("10514090", partitionedTrips.get(tripIndex).getId().getId()); + assertEquals("SM-62", partitionedTrips.get(tripIndex+1).getBlockId()); + assertEquals("7438090", partitionedTrips.get(tripIndex+1).getId().getId()); + assertEquals("SM-62", partitionedTrips.get(tripIndex+2).getBlockId()); + assertEquals("6986090", partitionedTrips.get(tripIndex+2).getId().getId()); + assertEquals("SM-62", partitionedTrips.get(tripIndex+3).getBlockId()); + assertEquals("32069090", partitionedTrips.get(tripIndex+3).getId().getId()); + assertEquals("SM-62", partitionedTrips.get(tripIndex+4).getBlockId()); + assertEquals("682090", partitionedTrips.get(tripIndex+4).getId().getId()); + case1 = true; + } + } + + } + + assertTrue(case1); + } + + @Test + public void test() throws Exception { + GtfsReader reader = new GtfsReader(); + File path0 = new File(getClass().getResource( + "/org/onebusaway/gtfs_transformer/updates/cut.zip").toURI()); + reader.setInputLocation(path0); + reader.setEntityStore(_dao); + reader.run(); + GenericMutableDao dao = reader.getEntityStore(); + RemoveRepeatedStopTimesStrategy strat = new RemoveRepeatedStopTimesStrategy(); + strat.run(_context, (GtfsMutableRelationalDao) dao); + + boolean case1 = false; + boolean case2 = false; + for (Trip trip : ((GtfsMutableRelationalDao) dao).getAllTrips()) { + if ("7438090".equals(trip.getId().getId())) { + // confirm the last stop on the trip was removed + // and the first stop on the next trip has arrival modified + // block SM-62 + List stopTimesForTrip = ((GtfsMutableRelationalDao) dao).getStopTimesForTrip(trip); + StopTime lastStopTrip1 = stopTimesForTrip.get(stopTimesForTrip.size()-1); + assertEquals("4128", lastStopTrip1.getStop().getId().getId()); // if this is 18938 we failed! + case1 = true; + } else if ("6986090".equals(trip.getId().getId())) { + // block SM-62 + List stopTimesForTrip = ((GtfsMutableRelationalDao) dao).getStopTimesForTrip(trip); + StopTime firstStopTrip2 = stopTimesForTrip.get(0); + assertEquals("18938", firstStopTrip2.getStop().getId().getId()); + assertEquals(23400, firstStopTrip2.getArrivalTime()); // arrival is now that of previous removed stops + assertEquals(24300, firstStopTrip2.getDepartureTime()); + case2 = true; + } + } + assertTrue(case1); + assertTrue(case2); + } +} diff --git a/onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/updates/cut.zip b/onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/updates/cut.zip new file mode 100644 index 0000000000000000000000000000000000000000..df90a2acc5c5a479d7dc27c7eb939133125ee74d GIT binary patch literal 15937 zcmZ{L1y~hZ+xG0u1~$?q-6b8;NT;+Q-6bL2(hUOA-3ZbxD%~k1jg*uE!j@2w5cmgu z&wJi;{_BHlues-mHM3@(wVr!stx;D(f)M}!00&GZgtXh_N0vgty(RE>2OtN`tgRd^ zo^iN)yK6m01CYY*OepNFYhR+%pswho4*owZlARZ z-J?iEhTi)+PgX=s+A8p!ha_icchE*Ph{|>7@j0nOzkNpD>Q#!YfEJb;-8gYM1zu78 z$`>-TaiQW|oL4D%--fz1YDIg4nMq%m7w}N}w*f-BEX+FSuV#E$U;PpwJQ$>xD9v6K z@c#)_|I-XO93TOkfzmA@5`BG_NQMHCf789XP-K+M>^vJSx?^SEB;!Y%b#QM-~V*&5hsqAZRdw9 zFcr+R2c4o3Ps7&ogS1KkVW1tS&I1c6NE@mO^zXx4Ddj2RPu8y+qMvm`< z2c&};oi5p}HeAS?V|r+7nHvS@aL*(Ij@S6*p&ZF>*n=!>>dSJB+utkzR<2oV{G8!(i@ikSaFKN$ZGZIEqXFPoC~Tf4AcG@;ktxLNq43?`tDQBo|11XbXp12k`i=1H=?L=v8a05#zQqR4yI&7Y|8^6VeBd zOOcEpDiUPE(2O5EkTOk(X~S$KwwZkz*RJVQQ?y$P98lK2r<@T@yWz?8tj`ltBQnC7 zY$393+QRvZN66e43FkghmzArseNKWRk;~7KEn*6~zKJ_c$^)GinbYaY4JM3{z36uo z-!2RXWRg3WXTH`hYyoB6ssqs~W#7_=9}&q#-T#A}%liF{Ze<Ar z&Sd|@;YVpWe0KmYbM6H^z1R`U{F$#EGa2zCmQ5zGQ4RwqLq^|i79Vm7s54MDdsRQ` zl8K>1JhJa%gSN&)f<^vi?UMT;m#qk-VirkRJ7;COG^+r@$Z9`>A+IEtVR}rSKxEo- z^2KV(OSNH#e%p#C0=WRe(U1WK7y06pg^Ms?g|GetKYjQxx6Va>UlU@;Xkp+SR+Hwb z3Xn4G`p}P!6yNX2sNQ{kUjRr2G^JZOlD`d0Kgu-(L!#JW zW_WhbF67jThumj~R*D?ikkO#Rkm85g1OH2YTiZ%agsA^z8jFs93&1h!;Jz?y_dr0@ z=%?Tvv>}Pn>HF9!3Zi}x^|J}4>XiwxME+ZrqFk;MEHJyOy z%Iegkl>uQ+nSfwB{{?M9@Yg&$rw%k53^SjK_H+8K45VF>DSdJ}z_M!I&Ex?f4ap6H zN)#qfyO|IdeZf_2K?7v?a@sb}I?;j_BR}o}KRD>9R~w@j#Qkzg=u9)ilXFPqPL_$* z-vKyx3h6L_A?YYhh*u^btp+e)k%S&JfGdalvfz}DoC`42fxN+%4VS~ztSCHPPm^Hk z#dm|4X8OA&g+Fi2voj&lj?cqYoG`8Pfo@mcE{4M5vh5#U& zAycJ8A{J}>_Ap47)7%#DQ+uS}=aVYw0#pP*WeC5qD0#EK3bz6u}Jz3y_?gHFK`#a2Hb&gqeJ%5GZgN=IAoKD*6aZ>c=S`y$TFE?QFL<_Op2vopfH`#yoGvc@9Q83J=}bb zKc@qZa;%6g7k6ZUk#%2MrbLCeB4il<%D77-^*)y#3&diW{M$3!fQNAjW;2$a+*myO zG3rgs%Bx6LIVt==D#^hxk`=j#7lbvmU>J$v3-VxV?X1k*pAsZ7!Oz5f*PwU3=CFaP zmvmvfmG^~pm-U#YdvO=1aO>{K*@@C(5&_zi)ZaRI!t|P7r*+dIn3~yxDzRgNb@QJ^ zHn>_>--&OW827IS5%ecD^aagG-?)A`Hq&GLE-Rj}Vch6Fc=~Yic1utqWaxb^;WbII z(33BnB=sy6lSv2_>ihT&+Qou_Ho9ssuV&~E&kqh#)Z3ql)GKT3AR#!IiLC2~ zJzzxhC&s936$iKQYKDTNnWb{X4}h+id{H!>rZT2mXliO)}(wYYc~5vw#d}BmnXPPSjD@k=F(+H zNQ#PfY_BDfd3&I|Mr5z$8`Js=t*~s){3aR)zwlva~uEIErPE$3YHd>hsBKfR3u6m_+K*8*r@Axj)=%(sLg2Mst z@*bXqR2V*QX8`Q@P72TXs6o>f7g{@8v;zN~@X9*okz)U$F){;5`5cs`g$FY$Zcw zpzc&z{!*1urRpk&ys!moitt(odq(DitHMW=Vl9C8#dP#{V zu+F@dRMykS>{5l zGQLKk0|@4pm#_6gUE;&0WQWroZ-(>`V><7Fu7*5_y)=x7+Y-6+^#vKu7dqTKeCi0e{I`3wzWBWI42 zm|7f>Rr3xy3*-F8*1W@9g&uA3h7ZE^IXq!bTK`TEo38nK+|s@2>;hENukeKaf}W8+%{Y`{dvx_%w;`?qaW$5p$Cvr4%*M3F>xz*S0v5qqa*jkkk@{}ATQqPf5TFg zp#~Oepu~oZ@^#vmSpnw$QA^J6&d?Kf2a5G%PKsk01{MuTaL<=eTl2fThb5HzvJ`xFE|(eai;d?@u(Y zmIXV$OL)1ce~$Jd3I1j-Uv8(MsgwB4JivVFz15s3mb>FB*Q^2HOr*E!Y!~2xrO>K1 zqvOjyGpsxksS`W2@-$cYVeyJ?&f08*YEqnlX#FC1NsvC^b8X>&uya|FE{p&Y>h#BP z{r2E+GalhG|L1iHD{&9```E$U0Ale$$X+O8a}?Fl!R`{aBtY zCY4$Rxv!y^`a;dLLd;G;$sQ9<#>B&yb2C=7TvSc-G0cv7Pf)%*tDB=u9_`9Wwoe^= zX_$ziCPDeoRhCCTFZ%^ngkfTs)TF3$o?uei4P}rJSO0n`uN;seZ3Ul3N!6Y@F4|&Y zH1c{l@^j4lH9{B`ltPsJ1d<{Au%vB@tZMl>DJ?$J0;ZM^TKZF;Y)ghI<4s{$XVH15 zt4U<#auUsur8N3&=lWtu5Xow6d_oeGx=0SiiYV?A(JbIbW~najQ`<;(bbAC?nu$Vw z^wBe{vL;2YXJR8u+_ie;r1mN`#hWv2QgYhLSWmE0kQT6|gCvA=KJFdJwC+K&bZNjM z*~|bql5vl|DX+&6 zAAKL-_u17h=E-`S5mXBALY(^B16r9UUm7gmn`m4NJl$DXXZ9c7H9%piv}!O&x=7o7 z@p&`2sevyI({n63qpwsEfg?$f(sqfnmOekOyBqcGkT!x1FQ$oeI*W^ZbIh!p(V z4C@jFECXBb=Dd5rdK0zw%)kUUv+N2j`1_o(-o)c-Zz3xA1=oqnAdj9%oZ1m4RBW`$ zNjPnHaosIY0L3q3<%09~XWJE{Oh(TFu(m-aa z^KetaYmH!6+}J_!7+nr%_n{KSsO&FwMK|2FAFoKaX}flnBqwCK+K=?`-ET!zJG231 z$}RA%QRC?B0GbS5-}3kt_>&khr78~S?#pzR>X@^_4|}u;Tt4N5t?(z~Wfr{=HEHFq zyLm?HI%E{IFHm8cLHQnT;7RPR$eOZq&iWDsziA@?jA8f{`FvqS-LYS-NjAW981}{; zQtc#=zLw$=z0y#7hC8J8{oKeTEudkGEKq_g{Dq8xN#0#Ko;asBuZV)_`88|(9}=(& z4Zb7&7z6BaTD>KL%$cxwa6+p(2`-Ic=+WYP;ej-|9)}vPez;90&&u^X;D&W=1Y#yI zM_psPQcl`hU9tDIoKP>eShkH~GrKywaDH@pxlBC?29i;g{J@m{)-4w1QHvZ7TB&$c z=u?ua;o3B0)ug@$6O>U3Bb*Q4S0zQcB{ZM2=)Iq|Mv78@D7)tBxLJkq^Alxdzo_+k zj6m=A&n9qVca68bi!S(F>y{&$0gh0>X3$JxyCuKzbD;mD! ztk-N}+Ro*LOSD4#_9WZ=b=3Eo(@SNDAYz^!)?Z7W1{<=7u#lJPk8E}MSfL=0y1jJ# zdU|v;iMk_o@;P5~KsjrrL^xljzaa<~u;V=F<$%V&UeNw5I2&Jkm`bX8;#`sWu5r{L zFNBd+F3=D8VCMM5D!*|t?b(PrT8GE(Q&y^lN2$oKb+yO@=zRkh0J1TY=gJ`u#7k{>=XSGEKrY}zPC<$ zmm)Mi^kWSpdDo!+nQ+roK-l0fVx$Av7oMVV`-8;ZT#GE$S?NpQ(Iq|z_w6F0&(^K> zWertdxJWn2j0)?05et+uWzV%nGC4Gc%}t%_`&h9DS$%U`TC>7g&Xl(1d)IfdVLvQ}U+)RMh8j{kxLasn zG~sk>KEoZKd);F7?K_O=m*PQu?b<7U*;TXswwZUM{wN_ic_%F9K(~ME{hs>U{nlgN zAPrdFCYf4K`!jw&nnTLY&&fB(AE@`62bMORArU+gqVqZI#)@e^{xn_8mnXTsdR8%_ z^F942<}-uD_ESMwDVn*b8K|wibq2D-P3!0oRqGm0aUFD3BEJ^Fn!HNn(y6))Y;coZ zE!tzeYxhXyqpl4O>O-B~qMRuu&zv2l?O-28PJ1G)`;3jFPjAAyh&@~=MSd!Mc_V$a zU>J%i#sT$L)Rm+vN#)~7dxn@sM~=;0LJC%85Th{|5m8I#4;$CLB8XO&t=mJt90;5K zd3Gl&l}n!LiRqq>srZ8vI{x%H$mM#nk)FP974qrkbKPiDe2TB~BTp?y+B~TjFp90V z&clJyR@}s+Wg=+KH*&hoW=@zs9--?ZPu`_e0n;N%D>HtK7C1ixt%dQsae~v$Wof`{ znlKneZQz=%v_k@S=WvE}JJIWf3B1wUZpI_9=I&{ch(p4*!wFG{N}izHMD{EvtmOeW z9oK{it89?w-MPV(DeQ(uD%|>zlZ+_~_BHo}dJZRUHiUe<;B)x=Y)^puYV`PbXC>UV z#}|%;Pv>NVre(92y&h3WmxgtGw6%ReB5lyt{dG>WWR5VH(sGm}C(Y(PY728;U|2v{ z=tTzeMKhlaa_O6;O;($oFFPMx76*6rKae?bt%|dMrGz)SD-DM??Ac9H91y&Ra8v3> zoq7)rLe0OSLXB4VCz^q>xOz$BVU%Yl^(G56wc4ITPqD8gV%mlykV=V48saFQnaR>z zrF!LoEhgK_4rIW@HX-sv3 zs+XM+y3aQIsj%KQawIrlI321o&7jhXd`g-=7gU)PbKIBO|Fp$W&md(zmVwtR-xfz(~Q-jHZR-f#ZSXq6w zo0Q}1dEoirZAp?eRlCu8Zx#IgiM<3}``Gcohqr?@GED7bzC9qylV)wty_kG2JwK`B z{Ux^+^gZQC)dOBFWOIj9v5Q?q_;SB+tt0_NRlp#> zRYnlCyJK_zG2)75>BYb%pRdnE` zYSKhktJkDe#R$YrAr~nyk!gp&ld(y8j86JSgni{%PbHkU-`ckm8`ip!e$dhL_KaO; zNf~!P=2LS0kwhK$b)AkXtH`D}juLJ*yo$j-Z^y^V$xrg}8>-Z?BV?DC1A+gVvUt|; zRKN|Kswe<|w^J6bP9E-mrYw|{)y9-+VkeX*ncs7=Ka}N)zJDB}xbYp&O|uXxbpC92 z=vUHvDDizEai&fotqb`IwE${Y_>)_G=*_>gD>F z2I1jcYE)G6UOE&O6i60IMV9CkNL(K#-!wLEL4kkHrqlwQR6|ezkc0yO8hC1M?oQ6X zCsRC9AE_;=V}yVD&U)N|Wn{86-w|I3BP=g|_3+~)T0)gJoC@BNlABYhKk#CqA2&i0I_?z$vXz8uY zTN$LAyhoHQEo&>?m<9V3k}B7ovFy^ax&ITsmqUWMQL7E~PG=l&Ost z<=sPmu!FlH8Si#+y?GH~Wbchbb`^K3w?EhCNwG0o^Baw+75gwc%PLIVnJ zSjd;)L<}C{V3Ip)3EpwRt(BX?DIwWrI>WnNI5S9eV_Yp4zO$6?=+Rya_AjsJ;lZWV zxI@(kTU7kST_6puUAXrsRZFRn70h#mMBmSZ4?T02L`G!_AA6|sj6*v=7sD>sjj0+U zeUr8u95^ zeQGnlVzvs+?jl_tlQ>LvMa=|y3JG1Fg7d>UVUu>I$Sguc~Sw)D!D^>%N zayBJ!?r}X=#unQQ$F@o;qF-~qGL`+IQZ+Yg<>A|Q_X&6AcbniYXQGCWGBjfS`-~R3 z7RO4K$Rx$wS-iQ~cF|*&31O@6q+oFzI>{r3u<_Bv1qc7QRkx@o#j^G&4OO0}k#8(` zW|b}Qc%NV=tMJ(sYm$9q)aaf>aqE6Xplo-!_SSC6u6gmD$NZaZ{^dd}CMz;&rtq@0 z;+ff~}WaI9;OVeh40jd+(FEqw#-r8rRXpcFXj9GXr zRZ%%+f12IA_*QdXPg}C`C5CiyN1*0;C(lvjW5)R5E=z8b%+V7Ki!tSIK0CP(E5p0H znY35>gy(LppB%Few7xf0cwRo~TwT??dYG-I-?y+^{q;lFsWy0r{@6XDxRKwA}iq7TU^I+RF zX0~E>WXpv-F?9ciRpl0Gn%f#?vscxXi}!Ayw#f#qmrse9L$AlVeC@y;qnf z3rikJL{eMGvVrnfy~d)_et|EjFI)7Hg%nd~(xzqK_1G*hb!Kx`yOwXp0&~G5jodYp zA=1!ln1(2GpkM)tAEuo_-Pi|9A1c)-_5@{x;g^qm9I|*Z!W(7oDlcFMEv{| zaDDz=yc4X)>E_pu5$v1G^P4v}$9rlw8=%+GL8t%KN$Z0_DwFH&3C_;zv(MA*Z`GD$JORuya}b++2_cKPXTAUd-;K}U@ccy-gP&>zHjGu z`dz-OZmdpg_gieD`c?ixo;hBeuIYL~43U4`{*&_NJ5~R+24hrFs*!=Crt{S!F$$6> z{rC#ZpL9^kGUl-AACu1S9QP+N6+JeK2NoL;xI@x8%hIvn`81bMrCk=fP4 zI2=}3O8Jt|uE^?g!43wkPh~@~oz|vRk7b|5CySY09U^hE^i@Oe8Ga}zgvQ9!y+xms z6PBE8>Ns6Q)84n2|yntypo3 z1FMhWpm5fvA!yuiExmU`pS34ceh$STkc`N1m~II4Kp5} ztP5vJY;gAIO_`$YG!Cvm9Szwx@|&&ofi(P=(WeC{>u;Gj-Ba0>hwm z;Ut5hh%P?I<`bQI6hSj(a&DtlHZ)wpfplTMtb#Fg67lL$-FD#aiqcK#S2;j zSG7yLADNU^G)F(|zceg=Vg4cPD2a6NQ7;m|io*j1?;r>UIx!-SSwR;>sNRix*efrn z*8vnR4AV=&_ulz;=`p$>99Q5yC6Sc6X-7~0CBEoDiU37NJBXdZ_?nMYk;|Zz7srVV6Hu%98oyVsZhxX^v*{mk* z&`|q{^h`i&fb+e+Os&hsOK$d&qf~XHPFr?`op$LV`J~C?NjGe~XeXTGR7+mJHWF;S zqyzZoeYE%oB{I}2-a;9xnCGfJn{<=7l2VNpT!X044!o$roKp#EjRWb9l-P(ja@26n z(lYTdKbCb?BwKkH$>)6Tt@HRj>oQc5-Jf|2y2SOTX;-4c)Nm%I^)33099VL)vn!se zYRK?IuxC0_gHp?!oY>@KGglsE)q&w*uoE*feUeb^2nMCE|MXks+kX2O1bgfy=GH!r z(9))kgP-|AZEeNzE1waLV8NcV0WMNX&4hvyx;nPp2T5P5Wo~h7Eym@^Badw`tUo*T zNG!DS+grmz4wIHA(e?Nj;*N5=LtyVL=pPOger(M!-c~Xv4GFL%X5XU(d)oa7-d9K8 z7eX+&tuc1r+Zr92NFQ|Yo!Ri}$t`;O+1E+Xxb{`Nj}YtN*Db&idh%idv&iZ*oPbuA z{c5!?p0k1h+CP-|)X#Z=vpnf2MZ)?*=_9&lZV?i8ISWCsm~6E1@vvEA6$3Qb`)b%M zi(x9!!p{w?RAVbC9;@h2kSlcx@6THs6-L3L6KT@}JQp}8Qwa^x2-mB3gu2RhmI*1SgCa3EW@%gC6uzeVrf*yVET)&Cm6fY z^{uZ|y5yyQSJa3m81}m&Tl|c?mv$rXaV?d*P^FdEh+EecVI=rbwmz9%MXxe~kV)|2 zo<@w$u@oKzk^``ijn#%UI1eM&7~XEwZ*2yni0ueJXm+SW%jj&lbnF>NZ2^ra1hMZ| z4*a^?9U4aGojhS|9>z5zTztVA1YvZdK(K{~`GjJ#XX}uw)fflAaEPN|dBdU&cnl0l zft<&Bj*YjT1!SuFlP8;LMot*8kIqw;-IF1)Xx^Nby$_QK<6pn>7Yh$wTBVa? zb_?V*N`t>2S({+HE5F6t?8*+3NViN?vF>WgQ(>++Pbu808;YcNB9cA7MkJ>hd*%FT zez9^FN-uv7?^}pU?Slc{R7|GoCGV1S%21<*Q(b#ReepbH=*FtXT`DD?BbO`&i}l)t zuNDt$#Z-R}XCWzQ3#|1ggXVkj4DHu8#2tX1J*1(Sh#Iq3n>waiBJIbWVz2%*>KJy( zw0*oSW708VSv4&0!&PLc)Z4zeG&1?aRTT1D7-3G&(ELaQXCQ51Z}X)GU9+Z03yp!f z{K#ARL*xF^?ncoZi4mY=*!LDRLdMIt-X+&UDQ0l%Tf(c`)1nfOr zAv?pBS5=&{et|n$zO+r`6o=H3s*yOZjy|4Up)es#siEfGbqF@zmV21wxQZIKcLH^( zmoz9mx)sKDH;!3JjkEhFbkT(6WK&Y#dI!R3wo91c4~7!l2B;kt!B}ziQ8RXE^i>%j z9C`3bs%@);uF7!^J#2QxC%CS~$Vp0fxmMuB+@*JwHz`KslpM0q@H4Ew$@&1z!e!bx zcHp?CJxF);t$=v{Mn^kw?8yt?X++@%F;~WspLwyn?N_&yt-qrjF4AYCTg`hM(NK z#sRnWmG+9l(wSfqL4f*k^){wjEO^`9qX2tRc!%px9SJs*>(4kN?*hSgo|sI&_oZkgyhVRNbRkZ5SUOuYkc+x97M68)y> zJjUB$xC!nwF1>$R8rVIkzu-rxZ_uR4!_dsd%oKDua-U0ZySBAVZ71IGo1weqKYNP# zwP{Q8ufUuzSjFn!q5o}Dz6SYD;>)z+37u)w>Qc~Q3v{S_1-=N*#|us0{oYrji4r<6 zTXJ_tvv`LORDEt@dXJ<+thrCR`+YWP@Etljm|$uW#Z1^Qxo|<;&;Br_8U;_6uVV(3_Xd3JaO|P5Y@nM_q7Lo9P#^?mQDWa9>Ljan9N`VZCNR@(K#t&xrJ9TL83ov1OCz!gmVkaW{||AHgV5`iqQj{iIF4}jUu zR`^!W9Sn~C=1T{0_K0xe7mNm9;%+OBMH7@El%uq)r8n?33y7{@XO&OjhEQQ}g9k&J zf{e`>XO!#;!2=d}MH}7_F?!}s1^;n_^|xEGgNf2K3na82DTaq&hMKlya`;#Rf@{S- z*oEN3zS~5~H3Pfwz)(nAdiwS>#3BmKz1n;WOl)neZ#N5)%q*XBl2uQt08fr zpH*I=aH38FqmThvT}pcLE?^Y!ykEE#t_z{Q=!}0__dsE%(@Qe_Y>*vPZ+$|2G-Kk_ zw67*$*pZWWXKkZXV9Dx3Lnpu(W%QGY93*iFkjzq*cwT0X-8j%cKBuyk5TzZu*GW@$ zc;Ih&bJsFVJg?A>l$tD$VQ8lVGi>CV-!%}O2PCnYS~s0i&^+nm{5N8c!0{>m`lgcG-kSe!e7(XF4c#@(H+p;m++hN@Ri6Kkt~i za-zD3-tyPp*?{|RK3&Hxc8YZW@MJ^N@|Bv+Q-8zs81V->zhN>&py~LA%;uTCVbc8v z)V`JeG0^tynY~^~?0RQ0T()?>;xx8Gw8(Da53Cg3w3}#JykB*SQ7PK{4_J3Ajs0x^ z!kW{A@r4eGk+=$f`Pq&lyHAha9F#43Jw}MsoKomq##Q=9&UW{_`YqnH`{eTGpl;Di8DYD9ecH7#((N8L8!Z=Hr$2cQN1K&Y1s+5AqQsa@n>S0& zwfYs=q4ma-Hd!T=gfAF9t3j809r}|t zc?@6`Uxqt$C+`^#`^eG_0xYCL13t1vJMX~)wfyU~duh+74i;hRwAyITsLz!zk<3mi zc6J7iwI-)cYm5mII3qf;gVI$dgjZqp-dgTIEYB-;^y4fRbL$YB8w+^dzOE=?Mstr4 z4RKj*RlPL(4RLnq9y4236u|}Q9*96Zv&O7YviVHaB`5U=7Q0K z`gxou!~0pBxuara*D!!Gh=4R(T2MC4UDmF11va7}x3JF_PSf|<(gME+>(*Z1#dmvi zW{_a_=G5TO=gp5L-uri1J5^r$)*ohf#-6k|p+Hjn??;_fIIYH?ymaz75K${vsDE6% zrHLC^=OaG*^=ig4Zy!hdpj5v-KWj7@NpkP%ajSPdPys?)E(D8e3iB2E~&uc>M#D`XR|f7p|?2Oi-lq8hHZ8h1R@HFsI;0gccN0BIjmk){Pub6gReX> z`pNc?sUi%m+bgVIBXE%<>-#Ro*vL5vd|u9iziVF-R_*1mL|lx|CV3)bM0?=u=*V9hs2%^@}?%wJ80T9{y6wxnx50vQNy=D zH&hm=ZaDs6r2h-0DwpFy-0&ZJW=SNixVf%zaqE_ck zRE*hkp^_j*sB;kP&QZMz-L*7sN8)+XyMdX&olA5O*f?Joa9KnPc!{(0T#UufJwNfK z+AT)d%3Ic_&>1|O#bw*Pm*$dUIba4)b0$y{RODHA2F3)UKa(+JI(bvEt=vmP`xMKD^?1`}xq8DQOScy!A&sw!Ng1;3yakLMEd1Cf+r$Y4 zMWX%h4D)C}ioL(uymNt}N!4^zFjv+7Xl-5 zfFqu2TqaN*;L#7=12lL%c#};cX#7|H=VI+)pRL1^~ ze3fLRo-5qLMWd$;mZ49H3d2j3pv6;`33-0zm^^4e%cCeG_k4&NmxP|SNX9ZH3Ii|E zjFv~a&kKFb>G{GVTF;ay3VL(YzhUI_1vA2N${URdFVO_Pdb zNOUx{Avxj{JYOPA(}cttWI{x5CVkO~NHSC8QGO`LJS@mSQo7Ze)qTMH(M-`ZBZ=abrTpJ; zkolvFVn?OvMN*QrsQ24zbEnriLUO`EX%ZB}-mn9-T|gi5rcPTTbxo9pLIS-Y&SMe| zTbq6P7*M#H-s?Ig2?pBC-Q6XPx3m;oV%9_pEpT34>^?c*_B~t#+Rk>H!k9u}6xLCa z;fN25rFir^g0~}Xn%Ih+>tJeppYB$%%lA#(VA|rd$KlBHwzkm{xEf)0JVgTM&#i-L zEs0<4cEZwuLfSOgciVVdmkyl7?}MtrQ^i!-%Cj!q@KH{1Y?Fx5hi)&gM#6stfM zIhqiJFQKcbmCWi@B@z$k2%=nOln!H33GNLifyRWOF$klf*Klq10$s`AB=&n;(nGxl zqQObkOlvFNT8ewG41aF2)u;4npTy@^T(_GSBgMij8%0WPW5$%8`awl_3VaoR3L*#X zDH^AeKNN$Y1+hX%z&FO-moWMkX9nsAs%PNCBa=G@?F(*o+jS<}XR`80A7GZe_6+|C z9}BW4W|ARs_rrczP@zR3KZo_no6}SKAzZ8EVc-sKMcrD(u{A z94h!jiJIL9csS^IXbQ@sZq7%7FYv5+AZQx7JU9>1M%WeTsk`^27VC0v9c`Z|^j_2O z&`8okGN1hPj@WB6ilI&nIvYuVg~^xqh=#~O&2a+EJ4x&JWcJh1q9hlB{Y8Zb&x_nv zu|;ZYt+xdOJsl-*Do(>HL<{ZI$`fqTP0Cb&L2_{|jNirN0e8xc(Q{ z{vX<1@gLe<^B>y%n_&N8;J;}%2>;^cv6cTO+<&5|(*M740WxbaT)-&$i*Wy!hl9Zd z@^FpI8>D|u>;+d*d%A!Vdi3CAE(W-@FtfLEv@~&N`X}SDG5^23%%oJX=5*I1&4`AzF2P@LRgcYc7{(Yp59wrtEtz<(r%Qr zjj@+>*fNDCHA%{^1xUrg(dv8ppM7n;o@vS>r98~0vsjq(HeL3_KAYG5*OH22^0CWW z@RU5jWfge;b804*X8&3Bq4Gf#tCt!Bd9B^rtcxGwnpLJq+|c-lObdZPhaD~*43W|d7 zuTO1W2tgAbF)QUt!C7i3h2JnG=r~iXtnF!h`niQIDHqqW82l6$`~z{`?Jso4>#B{kPx0m(~2`1pq!I|GUWM z-+upI^YXVJA?g3DfcdxEzt;}@?FOR&fd8%}__y1?r=b6K`$75VXn#*g|J(Q9QU15@ onD9Si{@ Date: Sat, 28 Jan 2023 13:24:21 -0800 Subject: [PATCH 027/123] another field for OTD-482 (hiding fields if the aren't used) --- .../src/main/java/org/onebusaway/gtfs/model/StopTime.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index 72c51fc70..116570490 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -145,7 +145,7 @@ public final class StopTime extends IdentityBean implements private String farePeriodId; /** Extension to support departure buffer https://groups.google.com/forum/#!msg/gtfs-changes/sHTyliLgMQk/gfpaGkI_AgAJ */ - @CsvField(optional = true, defaultValue = "-1") + @CsvField(optional = true, defaultValue = "-999") private int departureBuffer; /** Support track extension */ @@ -166,7 +166,7 @@ public final class StopTime extends IdentityBean implements @CsvField(optional = true, name = "safe_duration_factor", defaultValue = "-999.0")/*note defaultValue quirk for non-proxied comparison*/ private double safeDurationFactor = MISSING_VALUE; - @CsvField(optional = true, name = "safe_duration_offset", defaultValue = "-999") + @CsvField(optional = true, name = "safe_duration_offset", defaultValue = "-999.0")/*note defaultValue quirk for non-proxied comparison*/ private double safeDurationOffset = MISSING_VALUE; @CsvField(optional = true, name = "free_running_flag") From 84bc3d68b530d1e4d0bac7344ec95bf2248ad1a9 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sat, 28 Jan 2023 16:45:14 -0500 Subject: [PATCH 028/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.3.117 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 6153a9205..16b44cdee 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117-SNAPSHOT + 1.3.117 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 340deb9a1..4c6ed30af 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117-SNAPSHOT + 1.3.117 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 1c4e750c7..fc19d6b62 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.117-SNAPSHOT + 1.3.117 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 74de9123c..9c3dde149 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.117-SNAPSHOT + 1.3.117 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 5fc2b60cc..6d7003cb4 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117-SNAPSHOT + 1.3.117 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 18fa829e2..32dab47bf 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117-SNAPSHOT + 1.3.117 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index e84ace789..e1751ad80 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117-SNAPSHOT + 1.3.117 org.onebusaway onebusaway-gtfs - 1.3.117-SNAPSHOT + 1.3.117 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index e665fd927..ac041a546 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117-SNAPSHOT + 1.3.117 diff --git a/pom.xml b/pom.xml index 38249683f..03dd667c7 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.117-SNAPSHOT + 1.3.117 pom onebusaway-gtfs-modules @@ -23,7 +23,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.3.117 From 56f093a2db583f139ece79cb3e24229d7554f556 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sat, 28 Jan 2023 16:45:15 -0500 Subject: [PATCH 029/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 16b44cdee..d60aa655e 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117 + 1.3.118-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 4c6ed30af..d5daa7bc6 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117 + 1.3.118-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index fc19d6b62..a9d5e3460 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.117 + 1.3.118-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 9c3dde149..1b8e0633f 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.117 + 1.3.118-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 6d7003cb4..6db957000 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117 + 1.3.118-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 32dab47bf..dba87f82a 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117 + 1.3.118-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index e1751ad80..c96bae0a5 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117 + 1.3.118-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.3.117 + 1.3.118-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index ac041a546..f5d66f158 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.117 + 1.3.118-SNAPSHOT diff --git a/pom.xml b/pom.xml index 03dd667c7..c674530c0 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.117 + 1.3.118-SNAPSHOT pom onebusaway-gtfs-modules @@ -23,7 +23,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.3.117 + HEAD From 854c61460f62bd8b96c7954808193645d62723d0 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sat, 28 Jan 2023 15:31:07 -0800 Subject: [PATCH 030/123] second attempt at another field for OTD-482 (hiding fields if the aren't used) --- .../src/main/java/org/onebusaway/gtfs/model/StopTime.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index 116570490..c2682ac1b 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -166,7 +166,7 @@ public final class StopTime extends IdentityBean implements @CsvField(optional = true, name = "safe_duration_factor", defaultValue = "-999.0")/*note defaultValue quirk for non-proxied comparison*/ private double safeDurationFactor = MISSING_VALUE; - @CsvField(optional = true, name = "safe_duration_offset", defaultValue = "-999.0")/*note defaultValue quirk for non-proxied comparison*/ + @CsvField(optional = true, name = "safe_duration_offset", defaultValue = "-999") private double safeDurationOffset = MISSING_VALUE; @CsvField(optional = true, name = "free_running_flag") From 6d1078c5b217e7ec45f3916fc17f84607749abd6 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Mon, 30 Jan 2023 06:55:30 -0500 Subject: [PATCH 031/123] typo/fix for OTD-462 --- .../src/main/java/org/onebusaway/gtfs/model/StopTime.java | 2 +- .../test/java/org/onebusaway/gtfs/model/MissingValueTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index c2682ac1b..d90d531c0 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -166,7 +166,7 @@ public final class StopTime extends IdentityBean implements @CsvField(optional = true, name = "safe_duration_factor", defaultValue = "-999.0")/*note defaultValue quirk for non-proxied comparison*/ private double safeDurationFactor = MISSING_VALUE; - @CsvField(optional = true, name = "safe_duration_offset", defaultValue = "-999") + @CsvField(optional = true, name = "safe_duration_offset", defaultValue = "-999.0") private double safeDurationOffset = MISSING_VALUE; @CsvField(optional = true, name = "free_running_flag") diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/MissingValueTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/MissingValueTest.java index 2546374aa..bbe6f6613 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/MissingValueTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/model/MissingValueTest.java @@ -177,7 +177,7 @@ public void testStartingWithMissingDoubleValue() throws IOException { if (line.contains("safe_duration_factor")) { foundSafeDurationFactor = true; } - if (line.contains("safe_duraction_offset")) { + if (line.contains("safe_duration_offset")) { foundSafeDurationOffset = true; } From 43607f0248b722f4399e9a3c3087cdbb34e512fc Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Mon, 30 Jan 2023 07:00:18 -0500 Subject: [PATCH 032/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.3.118 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index d60aa655e..45069e1a1 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118-SNAPSHOT + 1.3.118 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index d5daa7bc6..25986b5cc 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118-SNAPSHOT + 1.3.118 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index a9d5e3460..865828c26 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.118-SNAPSHOT + 1.3.118 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 1b8e0633f..35c0f91d6 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.118-SNAPSHOT + 1.3.118 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 6db957000..fc9565ab1 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118-SNAPSHOT + 1.3.118 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index dba87f82a..73d3a389b 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118-SNAPSHOT + 1.3.118 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index c96bae0a5..33434e450 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118-SNAPSHOT + 1.3.118 org.onebusaway onebusaway-gtfs - 1.3.118-SNAPSHOT + 1.3.118 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index f5d66f158..6b2029234 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118-SNAPSHOT + 1.3.118 diff --git a/pom.xml b/pom.xml index c674530c0..f873ec355 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.118-SNAPSHOT + 1.3.118 pom onebusaway-gtfs-modules @@ -23,7 +23,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.3.118 From 5027f45480831fe651689af0b19b9cf1f2bee577 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Mon, 30 Jan 2023 07:00:20 -0500 Subject: [PATCH 033/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 45069e1a1..ae2d9c783 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118 + 1.3.119-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 25986b5cc..557d7e7d0 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118 + 1.3.119-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 865828c26..f14207d76 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.118 + 1.3.119-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 35c0f91d6..aea24a043 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.118 + 1.3.119-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index fc9565ab1..7d868e8c5 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118 + 1.3.119-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 73d3a389b..4ba60aace 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118 + 1.3.119-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 33434e450..5a6b50534 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118 + 1.3.119-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.3.118 + 1.3.119-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 6b2029234..3d9c3f00a 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.118 + 1.3.119-SNAPSHOT diff --git a/pom.xml b/pom.xml index f873ec355..7cc45b682 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.118 + 1.3.119-SNAPSHOT pom onebusaway-gtfs-modules @@ -23,7 +23,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.3.118 + HEAD From ff42901604a610d232ace139c64c4a8096b61d72 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sun, 26 Feb 2023 11:34:35 -0500 Subject: [PATCH 034/123] log4j2/slf4j cleanup --- onebusaway-gtfs-hibernate-cli/pom.xml | 4 +-- onebusaway-gtfs-hibernate/pom.xml | 4 +-- onebusaway-gtfs-merge-cli/pom.xml | 4 +-- onebusaway-gtfs-merge/pom.xml | 4 +-- onebusaway-gtfs-transformer-cli-aws/pom.xml | 4 +-- onebusaway-gtfs-transformer-cli/pom.xml | 4 +-- onebusaway-gtfs-transformer/pom.xml | 4 +-- onebusaway-gtfs/pom.xml | 15 +++++++++-- pom.xml | 28 +++++++++++++++------ 9 files changed, 47 insertions(+), 24 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index ae2d9c783..751dda868 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -27,8 +27,8 @@ 1.2 - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-slf4j-impl diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 557d7e7d0..d6ef33583 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -42,8 +42,8 @@ test - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-slf4j-impl test diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index f14207d76..10c765c97 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -28,8 +28,8 @@ 1.2 - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-slf4j-impl diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index aea24a043..8ed2bd828 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -23,8 +23,8 @@ - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-slf4j-impl test diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 7d868e8c5..61328bdbd 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -35,8 +35,8 @@ 1.2 - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-slf4j-impl diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 4ba60aace..4992bf751 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -30,8 +30,8 @@ 1.2 - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-slf4j-impl diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 5a6b50534..ffcd66dd1 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -33,8 +33,8 @@ test - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-slf4j-impl test diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 3d9c3f00a..880110dd1 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -16,6 +16,17 @@ org.onebusaway onebusaway-csv-entities + + + slf4j-api + org.slf4j + + + + + org.slf4j + slf4j-api + ${slf4j_version} com.fasterxml.jackson.core @@ -28,8 +39,8 @@ 1.14 - org.slf4j - slf4j-log4j12 + org.apache.logging.log4j + log4j-slf4j-impl test diff --git a/pom.xml b/pom.xml index 7cc45b682..229c8ba1f 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,7 @@ 1.1.6 1.2.8 + 2.0.6 @@ -81,21 +82,32 @@ org.onebusaway onebusaway-csv-entities ${onebusaway_csv_entities_version} + + + slf4j-api + org.slf4j + + org.onebusaway onebusaway-collections ${onebusaway_collections_version} + + org.slf4j + slf4j + ${slf4j_version} + + + org.slf4j + slf4j-api + ${slf4j_version} + - org.slf4j - slf4j-api - 1.7.5 - - - org.slf4j - slf4j-log4j12 - 1.7.5 + org.apache.logging.log4j + log4j-slf4j-impl + 2.20.0 junit From 74ba6e39b21f5a04a70b0ba4f5f46ad8d74bb56a Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sun, 26 Feb 2023 11:43:06 -0500 Subject: [PATCH 035/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.3.119 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 7 +++---- 9 files changed, 12 insertions(+), 13 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 751dda868..1c8ad48b2 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119-SNAPSHOT + 1.3.119 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index d6ef33583..9260d44b2 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119-SNAPSHOT + 1.3.119 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 10c765c97..d4b4f9de7 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.119-SNAPSHOT + 1.3.119 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 8ed2bd828..34bbd21cd 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.119-SNAPSHOT + 1.3.119 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 61328bdbd..bba19e278 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119-SNAPSHOT + 1.3.119 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 4992bf751..c5a14e514 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119-SNAPSHOT + 1.3.119 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index ffcd66dd1..34563d7a6 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119-SNAPSHOT + 1.3.119 org.onebusaway onebusaway-gtfs - 1.3.119-SNAPSHOT + 1.3.119 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 880110dd1..7d3a43c43 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119-SNAPSHOT + 1.3.119 diff --git a/pom.xml b/pom.xml index 9c2b343e1..2eb38f8aa 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,4 @@ - + 4.0.0 org.onebusaway @@ -8,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.119-SNAPSHOT + 1.3.119 pom onebusaway-gtfs-modules @@ -25,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.3.119 From 00e61ddde68971f1c0df7c1be8644b904a1f76b4 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sun, 26 Feb 2023 11:43:08 -0500 Subject: [PATCH 036/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 1c8ad48b2..035d35c63 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119 + 1.3.120-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 9260d44b2..cb6ad5e5a 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119 + 1.3.120-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index d4b4f9de7..19d69cd3f 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.119 + 1.3.120-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 34bbd21cd..1f7ca58fc 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.119 + 1.3.120-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index bba19e278..c196e8ffb 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119 + 1.3.120-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index c5a14e514..5b9591bb0 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119 + 1.3.120-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 34563d7a6..58117e8f1 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119 + 1.3.120-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.3.119 + 1.3.120-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 7d3a43c43..75ebbf0ac 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.119 + 1.3.120-SNAPSHOT diff --git a/pom.xml b/pom.xml index 2eb38f8aa..63338830c 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.119 + 1.3.120-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.3.119 + HEAD From 5d4fd378a2569129ee0af3429794526ec0a52f51 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Sun, 26 Feb 2023 21:40:09 +0100 Subject: [PATCH 037/123] Fix syntax error --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fe10b2253..1ac039a34 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: - name: Deploy documentation to Github Pages # only deploy after merging to master - if: github.repository_owner == 'OneBusAway' github.event_name == 'push' && github.ref == 'refs/heads/master' + if: github.repository_owner == 'OneBusAway' && github.event_name == 'push' && github.ref == 'refs/heads/master' uses: JamesIves/github-pages-deploy-action@v4 with: folder: target/site/ From f1ec70abe785588ea9d713987e61653d1a65c872 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Mon, 27 Feb 2023 08:36:45 +0100 Subject: [PATCH 038/123] Also run mvn install during CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1ac039a34..f31e82ec0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: ${{ runner.os }}-maven- - name: Test project with Maven - run: mvn --no-transfer-progress test verify + run: mvn --no-transfer-progress test install verify - name: Build documentation run: mvn --no-transfer-progress site From 2b592fb4c079e85c6c91f120827b94e8e6ef6f98 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Mon, 27 Feb 2023 08:40:21 +0100 Subject: [PATCH 039/123] Upgrade cache plugin --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f31e82ec0..5c9e28c9c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: java-version: 8 - name: Cache Maven dependencies - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} From cf4edd5038661ed4e0a582d1cddd24c250a19762 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Mon, 27 Feb 2023 08:48:49 +0100 Subject: [PATCH 040/123] Don't run verify --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c9e28c9c..9c12177e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: ${{ runner.os }}-maven- - name: Test project with Maven - run: mvn --no-transfer-progress test install verify + run: mvn --no-transfer-progress test install - name: Build documentation run: mvn --no-transfer-progress site From 016da810d5fe7191274ede4b785ec8c6446e8fe4 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 8 Mar 2023 11:59:26 -0500 Subject: [PATCH 041/123] experimental support for canonical routes and shapes --- .../impl/HibernateGtfsRelationalDaoImpl.java | 10 ++ .../org/onebusaway/gtfs/impl/GtfsDaoImpl.java | 8 ++ .../gtfs/impl/GtfsDataServiceImpl.java | 9 ++ .../org/onebusaway/gtfs/model/RouteShape.java | 83 ++++++++++++++++ .../org/onebusaway/gtfs/model/RouteStop.java | 98 +++++++++++++++++++ .../GtfsEntitySchemaFactory.java | 2 + .../gtfs/serialization/GtfsReader.java | 2 + .../org/onebusaway/gtfs/services/GtfsDao.java | 4 + 8 files changed, 216 insertions(+) create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RouteShape.java create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RouteStop.java diff --git a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java index b428e1de7..2de01e36c 100644 --- a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java +++ b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java @@ -113,6 +113,16 @@ public List getAllRoutes() { return _ops.find("FROM Route route"); } + @Override + public List getAllRouteStops() { + return _ops.find("FROM RouteStop routeStop"); + } + + @Override + public List getAllRouteShapes() { + return _ops.find("FROM RouteShape routeShape"); + } + @Override public List getAllStops() { return _ops.find("FROM Stop"); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java index ffacac03e..61c7a5ef6 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java @@ -98,6 +98,14 @@ public Collection getAllRoutes() { return getAllEntitiesForType(Route.class); } + public Collection getAllRouteStops() { + return getAllEntitiesForType(RouteStop.class); + } + + public Collection getAllRouteShapes() { + return getAllEntitiesForType(RouteShape.class); + } + public Collection getAllShapePoints() { if (packShapePoints) { return shapePoints; diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java index 2d5d3167a..53adbf168 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java @@ -224,6 +224,15 @@ public Collection getAllRoutes() { return _dao.getAllRoutes(); } + @Override + public Collection getAllRouteStops() { + return _dao.getAllRouteStops(); + } + + @Override + public Collection getAllRouteShapes() { + return _dao.getAllRouteShapes(); + } @Override public Route getRouteForId(AgencyAndId id) { return _dao.getRouteForId(id); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RouteShape.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RouteShape.java new file mode 100644 index 000000000..62c2c30dd --- /dev/null +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RouteShape.java @@ -0,0 +1,83 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.model; + +import org.onebusaway.csv_entities.schema.annotations.CsvField; +import org.onebusaway.csv_entities.schema.annotations.CsvFields; + +/** + * experimental support for canonical/idealized route shapes such + * as a map's representation of service + */ +@CsvFields(filename = "route_shape.txt", required = false) +public final class RouteShape extends IdentityBean { + private static final long serialVersionUID = 1L; + + @CsvField(ignore = true) + private int id; + + @CsvField + private String routeId; + @CsvField(optional = true) + private String directionId; + @CsvField + private String type; + @CsvField + private String encodedShape; + + public String getRouteId() { + return routeId; + } + + public void setRouteId(String routeId) { + this.routeId = routeId; + } + + public String getDirectionId() { + return directionId; + } + + public void setDirectionId(String directionId) { + this.directionId = directionId; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getEncodedShape() { + return encodedShape; + } + + public void setEncodedShape(String encodedShape) { + this.encodedShape = encodedShape; + } + + @Override + public Integer getId() { + return id; + } + + @Override + public void setId(Integer id) { + this.id = id; + } + +} diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RouteStop.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RouteStop.java new file mode 100644 index 000000000..44ac241ab --- /dev/null +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/RouteStop.java @@ -0,0 +1,98 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.model; + +import org.onebusaway.csv_entities.schema.annotations.CsvField; +import org.onebusaway.csv_entities.schema.annotations.CsvFields; + +/** + * experimental support for canonical/idealized route stops such + * as a strip map's representation of service + */ +@CsvFields(filename = "route_stop.txt", required = false) +public final class RouteStop extends IdentityBean { + + private static final long serialVersionUID = 1L; + + @CsvField(ignore = true) + private int id; + + @CsvField(name = "route_id") + private String routeId; + + @CsvField(name = "stop_id") + private String stopId; + + @CsvField(name = "stop_sequence") + private int stopSequence; + + @CsvField(optional = true, defaultValue = "") + private String directionId; + + @CsvField(optional = true, defaultValue = "") + private String name; + + public String getRouteId() { + return routeId; + } + + public void setRouteId(String routeId) { + this.routeId = routeId; + } + + public String getStopId() { + return stopId; + } + + public void setStopId(String stopId) { + this.stopId = stopId; + } + + public int getStopSequence() { + return stopSequence; + } + + public void setStopSequence(int stopSequence) { + this.stopSequence = stopSequence; + } + + public String getDirectionId() { + return directionId; + } + + public void setDirectionId(String directionId) { + this.directionId = directionId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public Integer getId() { + return id; + } + + @Override + public void setId(Integer id) { + this.id = id; + } + +} diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java index af6545c17..5271f5ef1 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java @@ -42,6 +42,8 @@ public static List> getEntityClasses() { entityClasses.add(BookingRule.class); entityClasses.add(ShapePoint.class); entityClasses.add(Route.class); + entityClasses.add(RouteStop.class); + entityClasses.add(RouteShape.class); entityClasses.add(Level.class); entityClasses.add(Stop.class); entityClasses.add(StopArea.class); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java index 351e4846e..81898b066 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java @@ -69,6 +69,8 @@ public GtfsReader() { _entityClasses.add(Area.class); _entityClasses.add(BookingRule.class); _entityClasses.add(Route.class); + _entityClasses.add(RouteStop.class); + _entityClasses.add(RouteShape.class); _entityClasses.add(Level.class); _entityClasses.add(Stop.class); _entityClasses.add(Location.class); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java index cd68744bd..4717dd229 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java @@ -132,6 +132,10 @@ public interface GtfsDao extends GenericDao { public Collection getAllRoutes(); + public Collection getAllRouteStops(); + + public Collection getAllRouteShapes(); + public Route getRouteForId(AgencyAndId id); /**** From 11adcc31dc2a73d73401e6c01e1c0388f1997247 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 8 Mar 2023 12:07:44 -0500 Subject: [PATCH 042/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.3.120 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 035d35c63..7fc9e2c53 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120-SNAPSHOT + 1.3.120 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index cb6ad5e5a..b05e2de3e 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120-SNAPSHOT + 1.3.120 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 19d69cd3f..4c25a006c 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.120-SNAPSHOT + 1.3.120 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 1f7ca58fc..a7b80677e 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.120-SNAPSHOT + 1.3.120 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index c196e8ffb..fcebfbcac 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120-SNAPSHOT + 1.3.120 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 5b9591bb0..589016afc 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120-SNAPSHOT + 1.3.120 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 58117e8f1..3d970c316 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120-SNAPSHOT + 1.3.120 org.onebusaway onebusaway-gtfs - 1.3.120-SNAPSHOT + 1.3.120 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 75ebbf0ac..fdff6b1cc 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120-SNAPSHOT + 1.3.120 diff --git a/pom.xml b/pom.xml index 63338830c..2e90a0710 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.120-SNAPSHOT + 1.3.120 pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.3.120 From 4daf2f134330312c7ddf9dec370b662320a34c6a Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 8 Mar 2023 12:07:46 -0500 Subject: [PATCH 043/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 7fc9e2c53..35507757e 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120 + 1.3.121-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index b05e2de3e..5dd9b0ac4 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120 + 1.3.121-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 4c25a006c..1d5a01b11 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.120 + 1.3.121-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index a7b80677e..ae2bf89cd 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.120 + 1.3.121-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index fcebfbcac..1fbd6b374 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120 + 1.3.121-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 589016afc..2cdaea6e9 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120 + 1.3.121-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 3d970c316..74321eebd 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120 + 1.3.121-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.3.120 + 1.3.121-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index fdff6b1cc..fac0c4137 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.120 + 1.3.121-SNAPSHOT diff --git a/pom.xml b/pom.xml index 2e90a0710..08b845e86 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.120 + 1.3.121-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.3.120 + HEAD From e864b17a9ebecbe3894affa06c5fb34b10e195ab Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 8 Mar 2023 12:30:22 -0500 Subject: [PATCH 044/123] bumping middle version number for java11/log4j2 support --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 35507757e..9441b36c3 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.121-SNAPSHOT + 1.4.0-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 5dd9b0ac4..18733daf2 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.121-SNAPSHOT + 1.4.0-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 1d5a01b11..faf604961 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.121-SNAPSHOT + 1.4.0-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index ae2bf89cd..305c23243 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.3.121-SNAPSHOT + 1.4.0-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 1fbd6b374..4a9017d55 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.121-SNAPSHOT + 1.4.0-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 2cdaea6e9..3a19f7892 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.121-SNAPSHOT + 1.4.0-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 74321eebd..af02f1cfd 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.121-SNAPSHOT + 1.4.0-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.3.121-SNAPSHOT + 1.4.0-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index fac0c4137..59beb2735 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.3.121-SNAPSHOT + 1.4.0-SNAPSHOT diff --git a/pom.xml b/pom.xml index 08b845e86..f50001bc8 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.3.121-SNAPSHOT + 1.4.0-SNAPSHOT pom onebusaway-gtfs-modules From 998c58f6b37b0be1a00885e42aadbe95cbbc7386 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 8 Mar 2023 12:56:28 -0500 Subject: [PATCH 045/123] bumping java version via parent pom --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f50001bc8..fa5da37c4 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway - 1.2.8 + 1.2.9 onebusaway-gtfs-modules From 45c98be4ee9c2b08fe089c19fcba700b8edd97c5 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Thu, 9 Mar 2023 15:32:27 -0500 Subject: [PATCH 046/123] support for adding files into gtfs as transformation --- onebusaway-gtfs-transformer/pom.xml | 4 +- .../impl/AddExtensionFile.java | 59 +++++++++++ .../impl/AddExtensionFileTest.java | 98 +++++++++++++++++++ .../org/onebusaway/gtfs/impl/GtfsDaoImpl.java | 16 ++- pom.xml | 4 +- 5 files changed, 175 insertions(+), 6 deletions(-) create mode 100644 onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFile.java create mode 100644 onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFileTest.java diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index af02f1cfd..9fec8a13f 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -83,8 +83,8 @@ org.apache.maven.plugins maven-compiler-plugin - 1.8 - 1.8 + 11 + 11 diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFile.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFile.java new file mode 100644 index 000000000..4dc32b2e2 --- /dev/null +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFile.java @@ -0,0 +1,59 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_transformer.impl; + +import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; +import org.onebusaway.gtfs_transformer.services.GtfsTransformStrategy; +import org.onebusaway.gtfs_transformer.services.TransformContext; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +/** + * Insert a GTFS extension into a GTFS file via a transformation. + * See the unit test for example usage. + */ + +public class AddExtensionFile implements GtfsTransformStrategy { + public static final String FILE_PARAM = "extension_file_path"; + public static final String FILE_NAME = "extension_name"; + @Override + public String getName() { + return this.getClass().getName(); + } + + @Override + public void run(TransformContext context, GtfsMutableRelationalDao dao) { + // lookup the file + String extensionFilename = context.getParameter(FILE_PARAM); + String extensionName = context.getParameter(FILE_NAME); + File extension = new File(extensionFilename); + if (!extension.exists()) { + throw new IllegalStateException("attempt to add non-exitsant extension file:" + extension.getName()); + } + String content = null; + try { + content = Files.readString(extension.toPath()); + } catch (IOException e) { + throw new IllegalStateException(e); + } + if (content == null) + throw new IllegalStateException("no content for specified file " + extensionFilename); + + dao.addMetadata(extensionName, content); + } +} diff --git a/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFileTest.java b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFileTest.java new file mode 100644 index 000000000..aaefa9325 --- /dev/null +++ b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFileTest.java @@ -0,0 +1,98 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_transformer.impl; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onebusaway.gtfs.impl.FileSupport; +import org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl; +import org.onebusaway.gtfs.serialization.GtfsWriter; +import org.onebusaway.gtfs.services.GtfsRelationalDao; +import org.onebusaway.gtfs_transformer.AbstractTestSupport; +import org.onebusaway.gtfs_transformer.services.TransformContext; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.Assert.*; + +/** + * test we can insert an extension into a GTFS file via a transformation. + */ +public class AddExtensionFileTest extends AbstractTestSupport { + + private static final String TXT_STRING = "route_id,stop_id,direction_id,name\n"; + private FileSupport _support = new FileSupport(); + private GtfsRelationalDaoImpl dao = new GtfsRelationalDaoImpl(); + private AddExtensionFile test = new AddExtensionFile(); + private TransformContext context = new TransformContext(); + private GtfsWriter writer = new GtfsWriter(); + + @Before + public void setup() { + _gtfs.putAgencies(1); + _gtfs.putStops(1); + _gtfs.putRoutes(1); + _gtfs.putTrips(1, "r0", "sid0"); + _gtfs.putStopTimes("t0", "s0"); + + } + @After + public void teardown() { + _support.cleanup(); + } + + @Test + public void run() throws IOException { + File extensionFile = File.createTempFile("subwayRouteStop-", ".csv"); + if (extensionFile.exists()) + extensionFile.deleteOnExit(); + + String extensionFilename = extensionFile.getAbsolutePath();; + BufferedWriter bwriter = new BufferedWriter(new FileWriter(extensionFilename)); + bwriter.write(TXT_STRING); + bwriter.close(); + + context.putParameter(AddExtensionFile.FILE_PARAM, extensionFilename); + + String extensionName = "route_stop.txt"; + context.putParameter(AddExtensionFile.FILE_NAME, extensionName); + test.run(context, dao); + + File tmpFileDirectory = File.createTempFile("CarryForwardExpectedFilesTest-", "-tmp"); + if (tmpFileDirectory.exists()) + _support.deleteFileRecursively(tmpFileDirectory); + tmpFileDirectory.mkdirs(); + _support.markForDeletion(tmpFileDirectory); + writer.setOutputLocation(tmpFileDirectory); + writer.run(dao); + writer.close(); + + String modLocation = tmpFileDirectory.getAbsolutePath() + File.separator + extensionName; + File expectedFile = new File(modLocation); + // verify file is there + assertTrue("expected extension to be present!", expectedFile.exists()); + assertTrue("expected extension to be a file!", expectedFile.isFile()); + String actualText = Files.readString(Path.of(modLocation)); + assertEquals(TXT_STRING, actualText); + + } +} \ No newline at end of file diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java index 61c7a5ef6..0114cf55c 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java @@ -25,6 +25,7 @@ public class GtfsDaoImpl extends GenericDaoImpl implements GtfsMutableDao { + public static final String[] OPTIONAL_FILE_NAMES = {"modifications.txt"}; private StopTimeArray stopTimes = new StopTimeArray(); private ShapePointArray shapePoints = new ShapePointArray(); @@ -33,10 +34,19 @@ public class GtfsDaoImpl extends GenericDaoImpl implements GtfsMutableDao { private boolean packShapePoints = false; - private String[] _optionalMetadataFilenames = {"modifications.txt"}; + private List _optionalMetadataFilenames = null; private Map metadataByFilename = new HashMap<>(); + public GtfsDaoImpl() { + _optionalMetadataFilenames = new ArrayList<>(); + if (OPTIONAL_FILE_NAMES != null) { + for (String optionalFileName : OPTIONAL_FILE_NAMES) { + _optionalMetadataFilenames.add(optionalFileName); + } + } + } + public boolean isPackStopTimes() { return packStopTimes; } @@ -377,7 +387,7 @@ public void close() { @Override public List getOptionalMetadataFilenames() { - return Arrays.asList(_optionalMetadataFilenames); + return _optionalMetadataFilenames; } @Override public boolean hasMetadata(String filename) { @@ -390,6 +400,8 @@ public String getMetadata(String filename) { @Override public void addMetadata(String filename, String content) { metadataByFilename.put(filename, content); + if (!_optionalMetadataFilenames.contains(filename)) + _optionalMetadataFilenames.add(filename); } diff --git a/pom.xml b/pom.xml index fa5da37c4..fc798cdad 100644 --- a/pom.xml +++ b/pom.xml @@ -179,8 +179,8 @@ maven-compiler-plugin 3.10.1 - 1.8 - 1.8 + 11 + 11 From 9aa4f80f027a8046b13b8e4cf13cf8f642779847 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Thu, 9 Mar 2023 15:52:51 -0500 Subject: [PATCH 047/123] MOTP-2086 handle bad data gracefully --- .../impl/UpdateStopIdFromControlStrategy.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/UpdateStopIdFromControlStrategy.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/UpdateStopIdFromControlStrategy.java index e64d5d161..004bd7160 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/UpdateStopIdFromControlStrategy.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/UpdateStopIdFromControlStrategy.java @@ -163,7 +163,11 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { for (AgencyAndId id : stopsToRemove) { Stop stop = dao.getStopForId(id); //removeEntityLibrary.removeStop(dao, stop); - dao.removeEntity(stop); + if (stop != null) { + dao.removeEntity(stop); + } else { + _log.info("expecting stop {} but it was not found", id); + } } } From 7472557d9abd7d307eb1c944fe5c2546d109c21e Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 10 Mar 2023 08:38:13 -0500 Subject: [PATCH 048/123] fixes for adding files into gtfs as transformation --- .../impl/AddExtensionFile.java | 29 +++++++++++++++---- .../impl/AddExtensionFileTest.java | 8 ++--- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFile.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFile.java index 4dc32b2e2..c4b387d00 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFile.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFile.java @@ -15,9 +15,12 @@ */ package org.onebusaway.gtfs_transformer.impl; +import org.onebusaway.csv_entities.schema.annotations.CsvField; import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; import org.onebusaway.gtfs_transformer.services.GtfsTransformStrategy; import org.onebusaway.gtfs_transformer.services.TransformContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; @@ -29,21 +32,36 @@ */ public class AddExtensionFile implements GtfsTransformStrategy { - public static final String FILE_PARAM = "extension_file_path"; - public static final String FILE_NAME = "extension_name"; + private static Logger _log = LoggerFactory.getLogger(AddExtensionFile.class); + + + @CsvField(optional = false) + private String extensionFilename; + @CsvField(optional = false) + private String extensionName; @Override public String getName() { return this.getClass().getName(); } + public void setExtensionFilename(String extensionFilename) { + this.extensionFilename = extensionFilename; + } + public void setExtensionName(String extensionName) { + this.extensionName = extensionName; + } + @Override public void run(TransformContext context, GtfsMutableRelationalDao dao) { // lookup the file - String extensionFilename = context.getParameter(FILE_PARAM); - String extensionName = context.getParameter(FILE_NAME); + if (extensionFilename == null) + throw new IllegalStateException("missing required param extensionFilename"); + if (extensionName == null) + throw new IllegalStateException("missing required param extensionName"); + _log.info("AddExtensionFile entered with {} to {}", extensionName, extensionFilename); File extension = new File(extensionFilename); if (!extension.exists()) { - throw new IllegalStateException("attempt to add non-exitsant extension file:" + extension.getName()); + throw new IllegalStateException("attempt to add non-existant extension file:" + extension.getName()); } String content = null; try { @@ -54,6 +72,7 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { if (content == null) throw new IllegalStateException("no content for specified file " + extensionFilename); + _log.info("AddExtensionFile copying {} to {}", extensionName, extensionFilename); dao.addMetadata(extensionName, content); } } diff --git a/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFileTest.java b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFileTest.java index aaefa9325..c4e816503 100644 --- a/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFileTest.java +++ b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/impl/AddExtensionFileTest.java @@ -71,13 +71,13 @@ public void run() throws IOException { bwriter.write(TXT_STRING); bwriter.close(); - context.putParameter(AddExtensionFile.FILE_PARAM, extensionFilename); - String extensionName = "route_stop.txt"; - context.putParameter(AddExtensionFile.FILE_NAME, extensionName); + test.setExtensionFilename(extensionFilename); + test.setExtensionName(extensionName); + test.run(context, dao); - File tmpFileDirectory = File.createTempFile("CarryForwardExpectedFilesTest-", "-tmp"); + File tmpFileDirectory = File.createTempFile("AddExtensionFileTest-", "-tmp"); if (tmpFileDirectory.exists()) _support.deleteFileRecursively(tmpFileDirectory); tmpFileDirectory.mkdirs(); From 72633bb2c6234a88fbf2ab95f25e83437611baf2 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 10 Mar 2023 11:02:48 -0500 Subject: [PATCH 049/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.0 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 9441b36c3..3a1346a65 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0-SNAPSHOT + 1.4.0 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 18733daf2..2b6ef948d 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0-SNAPSHOT + 1.4.0 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index faf604961..609ff13a7 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.0-SNAPSHOT + 1.4.0 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 305c23243..06c38a72f 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.0-SNAPSHOT + 1.4.0 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 4a9017d55..60bf9e2cc 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0-SNAPSHOT + 1.4.0 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 3a19f7892..3cb53c28e 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0-SNAPSHOT + 1.4.0 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 9fec8a13f..2c697121e 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0-SNAPSHOT + 1.4.0 org.onebusaway onebusaway-gtfs - 1.4.0-SNAPSHOT + 1.4.0 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 59beb2735..0bca6e789 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0-SNAPSHOT + 1.4.0 diff --git a/pom.xml b/pom.xml index fc798cdad..2424b98ec 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.0-SNAPSHOT + 1.4.0 pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.0 From 68d149c95ebe6c246274ef528910f5f2677c8cc8 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 10 Mar 2023 11:02:53 -0500 Subject: [PATCH 050/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 3a1346a65..b93b3d62f 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0 + 1.4.1-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 2b6ef948d..60fb0ffff 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0 + 1.4.1-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 609ff13a7..4a2b05a0f 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.0 + 1.4.1-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 06c38a72f..17741921e 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.0 + 1.4.1-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 60bf9e2cc..2a64d93c0 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0 + 1.4.1-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 3cb53c28e..15f5b3e2a 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0 + 1.4.1-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 2c697121e..dae87f32d 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0 + 1.4.1-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.0 + 1.4.1-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 0bca6e789..f13aef1d2 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.0 + 1.4.1-SNAPSHOT diff --git a/pom.xml b/pom.xml index 2424b98ec..f5bfe0f3b 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.0 + 1.4.1-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.0 + HEAD From 54eae8c6571e571d29dda0c936565538e9493751 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sat, 11 Mar 2023 18:46:20 -0500 Subject: [PATCH 051/123] bumping to java11 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c12177e3..f516e09e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v1 with: - java-version: 8 + java-version: 11 - name: Cache Maven dependencies uses: actions/cache@v3 From 8d626a130856936186ec26177f5aac0f858b024a Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sun, 2 Apr 2023 14:30:33 -0400 Subject: [PATCH 052/123] bumping slf4j --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f5bfe0f3b..329b01249 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ https://github.com/OneBusAway/onebusaway-gtfs-modules/wiki/ - 1.1.6 + 1.1.7 1.2.8 2.0.6 From ec183b57a217270305dae3a142c3eb504a34c2d2 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sun, 2 Apr 2023 14:33:05 -0400 Subject: [PATCH 053/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.1 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index b93b3d62f..bef099d72 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1-SNAPSHOT + 1.4.1 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 60fb0ffff..82a87458f 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1-SNAPSHOT + 1.4.1 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 4a2b05a0f..26d89f7a1 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.1-SNAPSHOT + 1.4.1 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 17741921e..a5c76786e 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.1-SNAPSHOT + 1.4.1 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 2a64d93c0..3a72f2904 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1-SNAPSHOT + 1.4.1 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 15f5b3e2a..fa0930fbc 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1-SNAPSHOT + 1.4.1 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index dae87f32d..771eb8eb2 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1-SNAPSHOT + 1.4.1 org.onebusaway onebusaway-gtfs - 1.4.1-SNAPSHOT + 1.4.1 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index f13aef1d2..64b65d416 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1-SNAPSHOT + 1.4.1 diff --git a/pom.xml b/pom.xml index 329b01249..8c232a73e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.1-SNAPSHOT + 1.4.1 pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.1 From 62970aa3c2eb9598e1985a6a617c4a96662ae213 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sun, 2 Apr 2023 14:33:07 -0400 Subject: [PATCH 054/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index bef099d72..0d464e874 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1 + 1.4.2-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 82a87458f..49c36e943 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1 + 1.4.2-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 26d89f7a1..d779c56e0 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.1 + 1.4.2-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index a5c76786e..f4170028b 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.1 + 1.4.2-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 3a72f2904..15b8aeb63 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1 + 1.4.2-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index fa0930fbc..ef13695a6 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1 + 1.4.2-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 771eb8eb2..dbd1251dc 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1 + 1.4.2-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.1 + 1.4.2-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 64b65d416..b0fc8fac0 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.1 + 1.4.2-SNAPSHOT diff --git a/pom.xml b/pom.xml index 8c232a73e..f4634f030 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.1 + 1.4.2-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.1 + HEAD From f7056f1f84d6b95d54b2de5aaf617cbd42bccf4d Mon Sep 17 00:00:00 2001 From: caylasavitzky Date: Mon, 10 Apr 2023 14:01:02 -0400 Subject: [PATCH 055/123] FeedInfoFromAgencyStrat compatable with SimpleModificationStrat --- .../impl/FeedInfoFromAgencyStrategy.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/FeedInfoFromAgencyStrategy.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/FeedInfoFromAgencyStrategy.java index 754c09dfb..c45516638 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/FeedInfoFromAgencyStrategy.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/FeedInfoFromAgencyStrategy.java @@ -31,6 +31,7 @@ import java.util.Calendar; import java.util.Date; import java.util.TimeZone; +import java.util.stream.Collectors; public class FeedInfoFromAgencyStrategy implements GtfsTransformStrategy { @@ -77,9 +78,13 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { } private FeedInfo getFeedInfoFromAgency(GtfsMutableRelationalDao dao, Agency agency) { - FeedInfo info = dao.getFeedInfoForId(agencyId); - if (info == null) { - info = new FeedInfo(); + // cannot just use dao.getFeedInfoFromAgencyForId if it needs to be compatable with "update" SimpleModificationStrategy + FeedInfo info = dao.getAllFeedInfos().stream(). + filter(feed->feed.getId().equals(agencyId)) + .collect(Collectors.toMap(feed->feed.getId(), feed -> feed)) + .get(agency.getId()); + if (info==null) { + info = new FeedInfo(); } info.setId(agencyId); info.setPublisherName(agency.getName()); From ce232d2d82a19b8317d4c71f841055124a0129e8 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Thu, 20 Apr 2023 09:38:52 -0400 Subject: [PATCH 056/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.2 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 0d464e874..5fb309cd3 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2-SNAPSHOT + 1.4.2 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 49c36e943..8fc0dcd33 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2-SNAPSHOT + 1.4.2 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index d779c56e0..41c4e395c 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.2-SNAPSHOT + 1.4.2 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index f4170028b..494916605 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.2-SNAPSHOT + 1.4.2 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 15b8aeb63..76424c5c8 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2-SNAPSHOT + 1.4.2 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index ef13695a6..0f56872fb 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2-SNAPSHOT + 1.4.2 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index dbd1251dc..647a42a3c 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2-SNAPSHOT + 1.4.2 org.onebusaway onebusaway-gtfs - 1.4.2-SNAPSHOT + 1.4.2 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index b0fc8fac0..068358dd5 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2-SNAPSHOT + 1.4.2 diff --git a/pom.xml b/pom.xml index f4634f030..8eb376d6c 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.2-SNAPSHOT + 1.4.2 pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.2 From 649988fd144b71a4ca760269a2726a0659f12ef0 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Thu, 20 Apr 2023 09:38:58 -0400 Subject: [PATCH 057/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 5fb309cd3..f801f22dc 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2 + 1.4.3-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 8fc0dcd33..8d1d0fcd0 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2 + 1.4.3-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 41c4e395c..6791928da 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.2 + 1.4.3-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 494916605..b503d72f5 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.2 + 1.4.3-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 76424c5c8..e0ddae3b9 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2 + 1.4.3-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 0f56872fb..dd000d888 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2 + 1.4.3-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 647a42a3c..94e26ed2f 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2 + 1.4.3-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.2 + 1.4.3-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 068358dd5..e2d73322e 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.2 + 1.4.3-SNAPSHOT diff --git a/pom.xml b/pom.xml index 8eb376d6c..dbfcf7b2f 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.2 + 1.4.3-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.2 + HEAD From 142b62dd8faf92e17ac5a9b8b83138203b48e029 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 25 Apr 2023 18:31:27 -0400 Subject: [PATCH 058/123] OTD-496 missed a flex field default value --- .../src/main/java/org/onebusaway/gtfs/model/Route.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Route.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Route.java index 0912b7fef..b2451d6c9 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Route.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Route.java @@ -56,7 +56,7 @@ public final class Route extends IdentityBean { @CsvField(name = "network_id", optional = true) private String networkId; - @CsvField(name = "eligibility_restricted", optional = true) + @CsvField(name = "eligibility_restricted", optional = true, defaultValue = "-999") private int eligibilityRestricted = MISSING_VALUE; @Deprecated From d13c199452b2758e684551e767dd6bc9927da660 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 25 Apr 2023 18:43:48 -0400 Subject: [PATCH 059/123] release 1.4.3 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index f801f22dc..9e327d7c5 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3-SNAPSHOT + 1.4.3 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 8d1d0fcd0..9eed78a0a 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3-SNAPSHOT + 1.4.3 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 6791928da..25e3dde44 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.3-SNAPSHOT + 1.4.3 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index b503d72f5..21092dd77 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.3-SNAPSHOT + 1.4.3 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index e0ddae3b9..db20dee22 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3-SNAPSHOT + 1.4.3 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index dd000d888..a46645d51 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3-SNAPSHOT + 1.4.3 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 94e26ed2f..c5bcfda01 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3-SNAPSHOT + 1.4.3 org.onebusaway onebusaway-gtfs - 1.4.3-SNAPSHOT + 1.4.3 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index e2d73322e..ee41f0083 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3-SNAPSHOT + 1.4.3 diff --git a/pom.xml b/pom.xml index dbfcf7b2f..43b7daf42 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.3-SNAPSHOT + 1.4.3 pom onebusaway-gtfs-modules From cd3682e4fc33934d7d56cdca8efcae178cc87ecd Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 25 Apr 2023 18:49:01 -0400 Subject: [PATCH 060/123] prepare for next sprint --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 9e327d7c5..58d8406bf 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3 + 1.4.4-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 9eed78a0a..5df0e03b9 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3 + 1.4.4-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 25e3dde44..41d7d1aee 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.3 + 1.4.4-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 21092dd77..45cd57876 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.3 + 1.4.4-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index db20dee22..29cf05766 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3 + 1.4.4-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index a46645d51..5a70188bf 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3 + 1.4.4-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index c5bcfda01..1041695d3 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3 + 1.4.4-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.3 + 1.4.4-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index ee41f0083..1a254bbd3 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.3 + 1.4.4-SNAPSHOT diff --git a/pom.xml b/pom.xml index 43b7daf42..a152ccab7 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.3 + 1.4.4-SNAPSHOT pom onebusaway-gtfs-modules From 42c5c17c349de82e6a02140a3362e957d72deb6a Mon Sep 17 00:00:00 2001 From: Emma Simon Date: Thu, 27 Apr 2023 12:02:51 -0400 Subject: [PATCH 061/123] Make stop_id optional in the Facility class Not all facilities are guaranteed to be associated with a specific stop, so they won't necessarily have an associated stop_id. --- .../src/main/java/org/onebusaway/gtfs/model/Facility.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Facility.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Facility.java index 3a6ff1a05..c9c5d5a78 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Facility.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Facility.java @@ -41,7 +41,7 @@ public class Facility extends IdentityBean{ @CsvField(optional = true) private String facilityType; - @CsvField(name = "stop_id", mapping = EntityFieldMappingFactory.class) + @CsvField(name = "stop_id", mapping = EntityFieldMappingFactory.class, optional = true) private Stop stop; @CsvField(optional = true) From 113c88d60bb4cb89ddee80e562659be1b2eccc7f Mon Sep 17 00:00:00 2001 From: Merhatsidk Ayele Date: Wed, 14 Jun 2023 14:45:10 -0400 Subject: [PATCH 062/123] Added support for feed_contact_email and feed_contact_url. --- .../gtfs/model/GtfsMapping.hibernate.xml | 2 ++ .../org/onebusaway/gtfs/model/FeedInfo.java | 24 +++++++++++++++++++ .../gtfs/serialization/GtfsReaderTest.java | 6 +++-- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/onebusaway-gtfs-hibernate/src/main/resources/org/onebusaway/gtfs/model/GtfsMapping.hibernate.xml b/onebusaway-gtfs-hibernate/src/main/resources/org/onebusaway/gtfs/model/GtfsMapping.hibernate.xml index e70ded90e..41dc7b983 100644 --- a/onebusaway-gtfs-hibernate/src/main/resources/org/onebusaway/gtfs/model/GtfsMapping.hibernate.xml +++ b/onebusaway-gtfs-hibernate/src/main/resources/org/onebusaway/gtfs/model/GtfsMapping.hibernate.xml @@ -83,6 +83,8 @@ + + diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FeedInfo.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FeedInfo.java index 9b1404d18..073389103 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FeedInfo.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FeedInfo.java @@ -46,6 +46,12 @@ public final class FeedInfo extends IdentityBean { @CsvField(optional = true, name = "default_lang") private String defaultLang; + @CsvField(optional = true) + private String contactEmail; + + @CsvField(optional = true) + private String contactUrl; + public FeedInfo() { } @@ -58,6 +64,8 @@ public FeedInfo(FeedInfo fi) { this.endDate = fi.endDate; this.version = fi.version; this.defaultLang = fi.defaultLang; + this.contactEmail = fi.contactEmail; + this.contactUrl = fi.contactUrl; } public String getPublisherName() { @@ -116,6 +124,22 @@ public void setDefaultLang(String defaultLang) { this.defaultLang = defaultLang; } + public String getContactEmail() { + return contactEmail; + } + + public void setContactEmail(String contactEmail) { + this.contactEmail = contactEmail; + } + + public String getContactUrl() { + return contactUrl; + } + + public void setContactUrl(String contactUrl) { + this.contactUrl = contactUrl; + } + /**** * {@link IdentityBean} Interface ****/ diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java index 09ab1ff46..7b356b151 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java @@ -111,8 +111,8 @@ public void testAllFields() throws IOException { "S1,R1,T1,S1,R1,T1,2,60"); gtfs.putLines( "feed_info.txt", - "feed_publisher_name,feed_publisher_url,feed_lang,feed_start_date,feed_end_date,feed_version", - "Test,http://agency.gov/,en,20120110,20120217,2.0"); + "feed_publisher_name,feed_publisher_url,feed_lang,feed_start_date,feed_end_date,feed_version,feed_contact_email,feed_contact_url", + "Test,http://agency.gov/,en,20120110,20120217,2.0,agency@email.com,http://agency.gov/"); gtfs.putLines( "pathways.txt", "pathway_id,pathway_mode,is_bidirectional,from_stop_id,to_stop_id,traversal_time", @@ -301,6 +301,8 @@ public void testAllFields() throws IOException { assertEquals(new ServiceDate(2012, 1, 10), feedInfo.getStartDate()); assertEquals(new ServiceDate(2012, 2, 17), feedInfo.getEndDate()); assertEquals("2.0", feedInfo.getVersion()); + assertEquals("agency@email.com",feedInfo.getContactEmail()); + assertEquals("http://agency.gov/",feedInfo.getContactUrl()); Pathway pathway = dao.getAllPathways().iterator().next(); assertEquals(new AgencyAndId("1", "P1"), pathway.getId()); From 2002377f7dbe896b36f223fd48f11e71f9d0cf15 Mon Sep 17 00:00:00 2001 From: Emma Simon Date: Fri, 30 Jun 2023 17:42:46 -0400 Subject: [PATCH 063/123] Make latest Fares v2 updates Some changes to the spec were made since the initial implementation. --- .../impl/HibernateGtfsRelationalDaoImpl.java | 4 +- .../org/onebusaway/gtfs/impl/GtfsDaoImpl.java | 4 +- .../gtfs/impl/GtfsDataServiceImpl.java | 4 +- .../onebusaway/gtfs/model/FareLegRule.java | 87 ++++++++----------- .../{FareContainer.java => FareMedium.java} | 65 ++++---------- .../onebusaway/gtfs/model/FareProduct.java | 30 +++---- .../GtfsEntitySchemaFactory.java | 2 +- .../gtfs/serialization/GtfsReader.java | 8 +- .../FareProductFieldMappingFactory.java | 16 ++-- .../org/onebusaway/gtfs/services/GtfsDao.java | 4 +- .../gtfs/serialization/GtfsReaderTest.java | 23 +++-- .../mdot-metro-fares-v2/fare_containers.txt | 4 - .../mdot-metro-fares-v2/fare_leg_rules.txt | 30 ++----- .../gtfs/mdot-metro-fares-v2/fare_media.txt | 4 + .../mdot-metro-fares-v2/fare_products.txt | 2 +- 15 files changed, 112 insertions(+), 175 deletions(-) rename onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/{FareContainer.java => FareMedium.java} (57%) delete mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_containers.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_media.txt diff --git a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java index 2de01e36c..7006c65c2 100644 --- a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java +++ b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java @@ -192,8 +192,8 @@ public FareProduct getFareProductForId(AgencyAndId id) { } @Override - public Collection getAllFareContainers() { - return _ops.find("FROM FareContainer"); + public Collection getAllFareMedia() { + return _ops.find("FROM FareMedium"); } @Override diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java index 0114cf55c..d908ed42d 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java @@ -184,8 +184,8 @@ public FareProduct getFareProductForId(AgencyAndId id) { } @Override - public Collection getAllFareContainers() { - return getAllEntitiesForType(FareContainer.class); + public Collection getAllFareMedia() { + return getAllEntitiesForType(FareMedium.class); } @Override diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java index 53adbf168..4983e2be5 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java @@ -105,8 +105,8 @@ public FareProduct getFareProductForId(AgencyAndId id) { } @Override - public Collection getAllFareContainers() { - return _dao.getAllFareContainers(); + public Collection getAllFareMedia() { + return _dao.getAllFareMedia(); } @Override diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java index 25f05001b..620fd6064 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareLegRule.java @@ -15,35 +15,26 @@ */ package org.onebusaway.gtfs.model; -import java.util.Optional; import org.onebusaway.csv_entities.schema.annotations.CsvField; import org.onebusaway.csv_entities.schema.annotations.CsvFields; +import org.onebusaway.gtfs.serialization.mappings.DefaultAgencyIdFieldMappingFactory; import org.onebusaway.gtfs.serialization.mappings.EntityFieldMappingFactory; -import org.onebusaway.gtfs.serialization.mappings.FareProductFieldMappingFactory; + +import java.util.Optional; @CsvFields(filename = "fare_leg_rules.txt", required = false) public final class FareLegRule extends IdentityBean { - - @CsvField(name = "fare_product_id", mapping = FareProductFieldMappingFactory.class) - private FareProduct fareProduct; - - @CsvField(optional = true, name = "leg_group_id") - private String legGroupId; + @CsvField(optional = true, name = "leg_group_id", mapping = DefaultAgencyIdFieldMappingFactory.class) + private AgencyAndId legGroupId; @CsvField(optional = true, name = "network_id") private String networkId; - @CsvField(optional = true, name = "from_area_id") - private String fromAreaId; - - @CsvField(optional = true, name = "to_area_id") - private String toAreaId; + @CsvField(optional = true, name = "from_area_id", mapping = EntityFieldMappingFactory.class) + private Area fromArea; - @CsvField(name = "fare_container_id", optional = true, mapping = EntityFieldMappingFactory.class) - private FareContainer fareContainer; - - @CsvField(name = "rider_category_id", optional = true, mapping = EntityFieldMappingFactory.class) - private RiderCategory riderCategory; + @CsvField(optional = true, name = "to_area_id", mapping = EntityFieldMappingFactory.class) + private Area toArea; @CsvField(name = "min_distance", optional = true) private Double minDistance; @@ -54,28 +45,34 @@ public final class FareLegRule extends IdentityBean { @CsvField(name = "distance_type", optional = true) private Integer distanceType; - public String getLegGroupId() { + @CsvField( + name = "fare_product_id", + mapping = DefaultAgencyIdFieldMappingFactory .class + ) + private AgencyAndId fareProductId; + + public AgencyAndId getLegGroupId() { return legGroupId; } - public void setLegGroupId(String legGroupId) { + public void setLegGroupId(AgencyAndId legGroupId) { this.legGroupId = legGroupId; } - public String getFromAreaId() { - return fromAreaId; + public Area getFromArea() { + return fromArea; } - public void setFromAreaId(String fromAreaId) { - this.fromAreaId = fromAreaId; + public void setFromArea(Area fromArea) { + this.fromArea = fromArea; } - public String getToAreaId() { - return toAreaId; + public Area getToArea() { + return toArea; } - public void setToAreaId(String toAreaId) { - this.toAreaId = toAreaId; + public void setToArea(Area toArea) { + this.toArea = toArea; } public String getNetworkId() { @@ -88,11 +85,13 @@ public void setNetworkId(String networkId) { @Override public String getId() { - String containerId = Optional.ofNullable(fareContainer).map(c -> c.getId().getId()).orElse(null); - String categoryId = Optional.ofNullable(riderCategory).map(c -> c.getId().getId()).orElse(null); + String fromAreaId = Optional.ofNullable(fromArea).map(Area::getAreaId).orElse(null); + String toAreaId = Optional.ofNullable(toArea).map(Area::getAreaId).orElse(null); + String baseLegGroupId = Optional.ofNullable(legGroupId).map(AgencyAndId::getId).orElse(null); + String baseProductId = Optional.ofNullable(fareProductId).map(AgencyAndId::getId).orElse(null); return String.format( - "id=%s|network=%s|fromArea=%s|toArea=%s|container=%s|category=%s", - fareProduct.getFareProductId().getId(), networkId, fromAreaId, toAreaId, containerId, categoryId + "groupId=%s|product=%s|network=%s|fromArea=%s|toArea=%s", + baseLegGroupId, baseProductId, networkId, fromAreaId, toAreaId ); } @@ -100,28 +99,12 @@ public String getId() { public void setId(String id) { } - public FareProduct getFareProduct() { - return fareProduct; - } - - public void setFareProduct(FareProduct fareProduct) { - this.fareProduct = fareProduct; - } - - public FareContainer getFareContainer() { - return fareContainer; - } - - public void setFareContainer(FareContainer fareContainer) { - this.fareContainer = fareContainer; - } - - public RiderCategory getRiderCategory() { - return riderCategory; + public AgencyAndId getFareProductId() { + return fareProductId; } - public void setRiderCategory(RiderCategory riderCategory) { - this.riderCategory = riderCategory; + public void setFareProductId(AgencyAndId fareProductId) { + this.fareProductId = fareProductId; } public void setMinDistance(Double minDistance) { diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareContainer.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareMedium.java similarity index 57% rename from onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareContainer.java rename to onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareMedium.java index 13df26085..70507d6c6 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareContainer.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareMedium.java @@ -20,53 +20,22 @@ import org.onebusaway.gtfs.serialization.mappings.DefaultAgencyIdFieldMappingFactory; import org.onebusaway.gtfs.serialization.mappings.EntityFieldMappingFactory; -/** - * As of July 2022 this file is not yet part of the main GTFS spec. - */ -@CsvFields(filename = "fare_containers.txt", required = false) -public final class FareContainer extends IdentityBean { +@CsvFields(filename = "fare_media.txt", required = false) +public final class FareMedium extends IdentityBean { public static final int MISSING_VALUE = -999; - @CsvField(name = "fare_container_id", mapping = DefaultAgencyIdFieldMappingFactory.class) + @CsvField(name = "fare_media_id", mapping = DefaultAgencyIdFieldMappingFactory.class) private AgencyAndId id; - @CsvField(name = "fare_container_name") - private String name; - @CsvField(name = "rider_category_id", optional = true, mapping = EntityFieldMappingFactory.class) - private RiderCategory riderCategory; - - @CsvField(optional = true) - private String currency; - - @CsvField(optional = true) - private float amount = MISSING_VALUE; - - @CsvField(optional = true) - private float minimumInitialPurchase = MISSING_VALUE; - - public String getCurrency() { - return currency; - } - - public void setCurrency(String currency) { - this.currency = currency; - } - - public float getAmount() { - return amount; - } - public void setAmount(float amount) { - this.amount = amount; - } + @CsvField(name = "fare_media_name", optional = true) + private String name; - public float getMinimumInitialPurchase() { - return minimumInitialPurchase; - } + @CsvField + private int fareMediaType; - public void setMinimumInitialPurchase(float minimumInitialPurchase) { - this.minimumInitialPurchase = minimumInitialPurchase; - } + @CsvField(name = "rider_category_id", optional = true, mapping = EntityFieldMappingFactory.class) + private RiderCategory riderCategory; public String getName() { return name; @@ -86,19 +55,19 @@ public void setId(AgencyAndId id) { this.id = id; } - public RiderCategory getRiderCategory() { - return riderCategory; + public int getFareMediaType() { + return fareMediaType; } - public void setRiderCategory(RiderCategory riderCategory) { - this.riderCategory = riderCategory; + public void setFareMediaType(int fareMediaType) { + this.fareMediaType = fareMediaType; } - public boolean isAmountSet() { - return amount != MISSING_VALUE; + public RiderCategory getRiderCategory() { + return riderCategory; } - public boolean isMinimumInitialPurchaseSet() { - return minimumInitialPurchase != MISSING_VALUE; + public void setRiderCategory(RiderCategory riderCategory) { + this.riderCategory = riderCategory; } } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareProduct.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareProduct.java index f083c0aab..c3545fc07 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareProduct.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/FareProduct.java @@ -32,30 +32,25 @@ public final class FareProduct extends IdentityBean { private AgencyAndId fareProductId; @CsvField(optional = true, name = "fare_product_name") private String name; - @CsvField(optional = true) + @CsvField private float amount = MISSING_VALUE; - @CsvField(optional = true) + @CsvField private String currency; - // not in the main GTFS spec yet (as of June 2022) @CsvField(optional = true) private int durationAmount = MISSING_VALUE; - // not in the main GTFS spec yet (as of June 2022) @CsvField(optional = true) private int durationUnit = MISSING_VALUE; - // not in the main GTFS spec yet (as of June 2022) @CsvField(optional = true) private int durationType = MISSING_VALUE; - // not in the main GTFS spec yet (as of June 2022) @CsvField(name = "rider_category_id", optional = true, mapping = EntityFieldMappingFactory.class) private RiderCategory riderCategory; - // not in the main GTFS spec yet (as of June 2022) - @CsvField(name = "fare_container_id", optional = true, mapping = EntityFieldMappingFactory.class) - private FareContainer fareContainer; + @CsvField(name = "fare_media_id", optional = true, mapping = EntityFieldMappingFactory.class) + private FareMedium fareMedium; public AgencyAndId getFareProductId() { return fareProductId; @@ -65,12 +60,12 @@ public void setFareProductId(AgencyAndId fareProductId) { this.fareProductId = fareProductId; } - public FareContainer egetFareContainer() { - return fareContainer; + public FareMedium getFareMedium() { + return fareMedium; } - public void setFareContainer(FareContainer fareContainer) { - this.fareContainer = fareContainer; + public void setFareMedium(FareMedium fareMedium) { + this.fareMedium = fareMedium; } public int getDurationAmount() { @@ -124,8 +119,13 @@ public void setCurrency(String currency) { @Override public AgencyAndId getId() { String riderCategoryId = Optional.ofNullable(riderCategory).map(c -> c.getId().getId()).orElse(null); - String fareContainerId = Optional.ofNullable(fareContainer).map(c -> c.getId().getId()).orElse(null); - return FareProductFieldMappingFactory.fareProductId(fareProductId.getAgencyId(), fareProductId.getId(), riderCategoryId, fareContainerId); + String fareMediumId = Optional.ofNullable(fareMedium).map(c -> c.getId().getId()).orElse(null); + return FareProductFieldMappingFactory.fareProductId( + fareProductId.getAgencyId(), + fareProductId.getId(), + riderCategoryId, + fareMediumId + ); } @Override diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java index 5271f5ef1..b9550b1b2 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java @@ -54,7 +54,7 @@ public static List> getEntityClasses() { entityClasses.add(ServiceCalendar.class); entityClasses.add(ServiceCalendarDate.class); entityClasses.add(RiderCategory.class); - entityClasses.add(FareContainer.class); + entityClasses.add(FareMedium.class); entityClasses.add(FareProduct.class); entityClasses.add(FareLegRule.class); entityClasses.add(FareAttribute.class); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java index 81898b066..97b6400d2 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java @@ -81,7 +81,7 @@ public GtfsReader() { _entityClasses.add(ServiceCalendar.class); _entityClasses.add(ServiceCalendarDate.class); _entityClasses.add(RiderCategory.class); - _entityClasses.add(FareContainer.class); + _entityClasses.add(FareMedium.class); _entityClasses.add(FareProduct.class); _entityClasses.add(FareLegRule.class); _entityClasses.add(FareAttribute.class); @@ -338,9 +338,9 @@ public void handleEntity(Object entity) { } else if (entity instanceof FareProduct) { FareProduct product = (FareProduct) entity; registerAgencyId(FareProduct.class, product.getId()); - } else if (entity instanceof FareContainer) { - FareContainer container = (FareContainer) entity; - registerAgencyId(FareContainer.class, container.getId()); + } else if (entity instanceof FareMedium) { + FareMedium medium = (FareMedium) entity; + registerAgencyId(FareMedium.class, medium.getId()); } else if (entity instanceof RiderCategory) { RiderCategory category = (RiderCategory) entity; registerAgencyId(RiderCategory.class, category.getId()); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/mappings/FareProductFieldMappingFactory.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/mappings/FareProductFieldMappingFactory.java index 8e8225347..5f3a9b44e 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/mappings/FareProductFieldMappingFactory.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/mappings/FareProductFieldMappingFactory.java @@ -31,7 +31,7 @@ * Fare products have a composite primary key of * * - fare product id - * - fare container id (nullable) + * - fare medium id (nullable) * - rider category id (nullable) * * So if you want this library to look up the fare product instance you need to supply all of these, @@ -47,13 +47,13 @@ public FieldMapping createFieldMapping(EntitySchemaFactory schemaFactory, return new FareProductFieldMapping(entityType, csvFieldName, objFieldName, required); } - public static AgencyAndId fareProductId(String agencyId, String fareProductId, String riderCategoryId, String fareContainerId) { - String primaryKey = fareProductIdPrimaryKey(fareProductId, riderCategoryId, fareContainerId); + public static AgencyAndId fareProductId(String agencyId, String fareProductId, String riderCategoryId, String fareMediumId) { + String primaryKey = fareProductPrimaryKey(fareProductId, riderCategoryId, fareMediumId); return new AgencyAndId(agencyId, primaryKey); } - static String fareProductIdPrimaryKey(String fareProductId, String riderCategoryId, String fareContainerId) { - return String.format("id=%s|category=%s|container=%s", fareProductId, riderCategoryId, fareContainerId); + static String fareProductPrimaryKey(String fareProductId, String riderCategoryId, String fareMediumId) { + return String.format("id=%s|category=%s|medium=%s", fareProductId, riderCategoryId, fareMediumId); } private static class FareProductFieldMapping extends AbstractFieldMapping { @@ -71,12 +71,12 @@ public void translateFromCSVToObject(CsvEntityContext context, String productId = (String) csvValues.get("fare_product_id"); String categoryId = blankToNull(csvValues, "rider_category_id"); - String containerId = blankToNull(csvValues, "fare_container_id"); + String mediumId = blankToNull(csvValues, "fare_medium_id"); - String primaryKey = fareProductIdPrimaryKey(productId, categoryId, containerId); + String primaryKey = fareProductPrimaryKey(productId, categoryId, mediumId); String agencyId = ctx.getAgencyForEntity(FareProduct.class, primaryKey); - AgencyAndId id = FareProductFieldMappingFactory.fareProductId(agencyId, productId, categoryId, containerId); + AgencyAndId id = FareProductFieldMappingFactory.fareProductId(agencyId, productId, categoryId, mediumId); FareProduct fareProduct = (FareProduct) ctx.getEntity(FareProduct.class, id); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java index 4717dd229..bfbe4bd3f 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java @@ -75,9 +75,9 @@ public interface GtfsDao extends GenericDao { FareProduct getFareProductForId(AgencyAndId id); /**** - * {@link FareContainer } Methods + * {@link FareMedium } Methods ***/ - Collection getAllFareContainers(); + Collection getAllFareMedia(); /**** * {@link RiderCategory} Methods diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java index 09ab1ff46..69b92cabc 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java @@ -791,7 +791,7 @@ public void turlockFaresV2() throws CsvEntityIOException, IOException { assertEquals(12, fareProducts.size()); FareProduct fp = fareProducts.stream().sorted(Comparator.comparing(FareProduct::getId)).findFirst().get(); - assertEquals("id=31-day_disabled|category=disabled|container=null", fp.getId().getId()); + assertEquals("id=31-day_disabled|category=disabled|medium=null", fp.getId().getId()); assertEquals("31-Day Pass Persons with Disabilities", fp.getName()); assertEquals("USD", fp.getCurrency()); assertEquals(15.0, fp.getAmount(), 0); @@ -807,9 +807,8 @@ public void turlockFaresV2() throws CsvEntityIOException, IOException { assertEquals(12, fareLegRules.size()); FareLegRule flr = fareLegRules.stream().sorted(Comparator.comparing(FareLegRule::getId)).findFirst().get(); - assertEquals("id=31-day_disabled|network=null|fromArea=null|toArea=null|container=null|category=disabled", flr.getId()); - assertEquals("Turlock", flr.getLegGroupId()); - assertEquals("Persons with Disabilities", flr.getRiderCategory().getName()); + assertEquals("groupId=Turlock|product=31-day_disabled|network=null|fromArea=null|toArea=null", flr.getId()); + assertEquals("Turlock", flr.getLegGroupId().getId()); List riderCats = new ArrayList<>(dao.getAllRiderCategories()); assertEquals(5, riderCats.size()); @@ -838,17 +837,17 @@ public void mdotMetroFaresV2() throws CsvEntityIOException, IOException { assertEquals(21, fareProducts.size()); FareProduct fp = fareProducts.stream().sorted(Comparator.comparing(FareProduct::getId)).findFirst().get(); - assertEquals("id=core_local_1_day_fare|category=null|container=charmcard", fp.getId().getId()); + assertEquals("id=core_local_1_day_fare|category=null|medium=charmcard", fp.getId().getId()); assertEquals("1-Day Pass - Core Service", fp.getName()); assertEquals("USD", fp.getCurrency()); assertEquals(4.6, fp.getAmount(), 0.01); List fareLegRules = new ArrayList<>(dao.getAllFareLegRules()); - assertEquals(21, fareLegRules.size()); + assertEquals(7, fareLegRules.size()); FareLegRule flr = fareLegRules.stream().sorted(Comparator.comparing(FareLegRule::getId)).findFirst().get(); - assertEquals("id=core_local_1_day_fare|network=core|fromArea=null|toArea=null|container=charmcard|category=null", flr.getId()); - assertEquals("core_local_one_way_trip", flr.getLegGroupId()); + assertEquals("groupId=core_local_one_way_trip|product=core_local_1_day_fare|network=core|fromArea=null|toArea=null", flr.getId()); + assertEquals("core_local_one_way_trip", flr.getLegGroupId().getId()); List fareTransferRules = new ArrayList<>(dao.getAllFareTransferRules()); assertEquals(3, fareTransferRules.size()); @@ -859,12 +858,12 @@ public void mdotMetroFaresV2() throws CsvEntityIOException, IOException { assertEquals(-999, ftr.getTransferCount()); assertEquals(5400, ftr.getDurationLimit()); - List containers = new ArrayList<>(dao.getAllFareContainers()); + List media = new ArrayList<>(dao.getAllFareMedia()); assertEquals(3, fareTransferRules.size()); - FareContainer container = containers.stream().filter(c -> c.getId().getId().equals("charmcard_senior")).findFirst().get(); - assertEquals("charmcard_senior", container.getId().getId()); - assertEquals("Senior CharmCard", container.getName()); + FareMedium medium = media.stream().filter(c -> c.getId().getId().equals("charmcard_senior")).findFirst().get(); + assertEquals("charmcard_senior", medium.getId().getId()); + assertEquals("Senior CharmCard", medium.getName()); List stopAreas = new ArrayList<>(dao.getAllStopAreas()); assertEquals(0, stopAreas.size()); diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_containers.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_containers.txt deleted file mode 100644 index 2c642d115..000000000 --- a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_containers.txt +++ /dev/null @@ -1,4 +0,0 @@ -fare_container_id,fare_container_name,minimum_initial_purchase,amount,currency,rider_category_id -charmcard,CharmCard,,,, -charmcard_senior,Senior CharmCard,,,,sen -charmpass,CharmPass Mobile App,,,, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_leg_rules.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_leg_rules.txt index f8b2c63e8..ef692d0c2 100644 --- a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_leg_rules.txt +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_leg_rules.txt @@ -1,22 +1,8 @@ -leg_group_id,fare_leg_name,network_id,from_area_id,contains_area_id,to_area_id,is_symmetrical,from_timeframe_id,to_timeframe_id,min_distance,max_distance,distance_type,service_id,min_amount,max_amount,fare_product_id,fare_container_id,rider_category_id,eligible_cap_id,amount,currency -core_local_one_way_trip,,core,,,,,,,,,,,,,core_local_1_day_fare,,,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_senior_local_1_day_fare,,sen,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_disability_local_1_day_fare,,dis,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,core_local_7_day_fare,,,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,core_local_31_day_fare,,,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_senior_local_31_day_fare,,sen,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_disability_local_31_day_fare,,dis -core_local_one_way_trip,,core,,,,,,,,,,,,,core_local_1_day_fare,charmcard,,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_senior_local_1_day_fare,charmcard_senior,sen,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_disability_local_1_day_fare,charmcard,dis,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,core_local_7_day_fare,charmcard,,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,core_local_31_day_fare,charmcard,,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_senior_local_31_day_fare,charmcard_senior,sen,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_disability_local_31_day_fare,charmcard,dis,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,core_local_1_day_fare,charmpass,,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_senior_local_1_day_fare,charmpass,sen,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_disability_local_1_day_fare,charmpass,dis,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,core_local_7_day_fare,charmpass,,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,core_local_31_day_fare,charmpass,,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_senior_local_31_day_fare,charmpass,sen,,, -core_local_one_way_trip,,core,,,,,,,,,,,,,reduced_disability_local_31_day_fare,charmpass,dis,,, +leg_group_id,fare_leg_name,network_id,from_area_id,contains_area_id,to_area_id,is_symmetrical,from_timeframe_id,to_timeframe_id,min_distance,max_distance,distance_type,fare_product_id,eligible_cap_id +core_local_one_way_trip,,core,,,,,,,,,,core_local_1_day_fare, +core_local_one_way_trip,,core,,,,,,,,,,reduced_senior_local_1_day_fare, +core_local_one_way_trip,,core,,,,,,,,,,reduced_disability_local_1_day_fare, +core_local_one_way_trip,,core,,,,,,,,,,core_local_7_day_fare, +core_local_one_way_trip,,core,,,,,,,,,,core_local_31_day_fare, +core_local_one_way_trip,,core,,,,,,,,,,reduced_senior_local_31_day_fare, +core_local_one_way_trip,,core,,,,,,,,,,reduced_disability_local_31_day_fare, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_media.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_media.txt new file mode 100644 index 000000000..90e502169 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_media.txt @@ -0,0 +1,4 @@ +fare_media_id,fare_media_name,fare_media_type,rider_category_id +charmcard,CharmCard,2, +charmcard_senior,Senior CharmCard,2,sen +charmpass,CharmPass Mobile App,4, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_products.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_products.txt index c1678d9f5..79f2e9bdf 100644 --- a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_products.txt +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/mdot-metro-fares-v2/fare_products.txt @@ -1,4 +1,4 @@ -fare_product_id,fare_product_name,rider_category_id,fare_container_id,bundle_amount,duration_start,duration_amount,duration_unit,duration_type,offset_amount,offset_unit,service_id,timeframe_id,timeframe_type,cap_required,eligible_cap_id,amount,min_amount,max_amount,currency +fare_product_id,fare_product_name,rider_category_id,fare_media_id,bundle_amount,duration_start,duration_amount,duration_unit,duration_type,offset_amount,offset_unit,service_id,timeframe_id,timeframe_type,cap_required,eligible_cap_id,amount,min_amount,max_amount,currency core_local_1_day_fare,1-Day Pass - Core Service,,,,0,1,3,1,3,2,,,,,,4.60,,,USD reduced_senior_local_1_day_fare,Reduced Senior 1-Day Pass - Core Service,sen,,,0,1,3,1,3,2,,,,,,2.30,,,USD reduced_disability_local_1_day_fare,Reduced Disability 1-Day Pass - Core Service,dis,,,0,1,3,1,3,2,,,,,,2.30,,,USD From bb64bf127eaed25b3c0107744275450ba6a1e8e4 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sun, 16 Jul 2023 13:41:53 -0400 Subject: [PATCH 064/123] NYS-186 support for stop pattern headsigns via DirectionEntry GTFS extension --- .../impl/HibernateGtfsRelationalDaoImpl.java | 11 ++ .../org/onebusaway/gtfs/impl/GtfsDaoImpl.java | 6 + .../gtfs/impl/GtfsDataServiceImpl.java | 6 + .../gtfs/impl/GtfsRelationalDaoImpl.java | 14 +- .../TranslationServiceDataFactoryImpl.java | 8 + .../onebusaway/gtfs/model/DirectionEntry.java | 146 ++++++++++++++++++ .../gtfs/model/WrongWayConcurrency.java | 79 ++++++++++ .../GtfsEntitySchemaFactory.java | 2 + .../gtfs/serialization/GtfsReader.java | 2 + .../org/onebusaway/gtfs/services/GtfsDao.java | 4 + .../gtfs/services/GtfsRelationalDao.java | 15 +- 11 files changed, 266 insertions(+), 27 deletions(-) create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/DirectionEntry.java create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/WrongWayConcurrency.java diff --git a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java index 7006c65c2..6814d67e9 100644 --- a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java +++ b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java @@ -161,6 +161,17 @@ public Collection getAllTransfers() { @Override public Collection getAllRiderships() { return _ops.find("FROM Ridership"); } + + @Override + public Collection getAllDirectionEntries() { + return _ops.find("FROM DirectionEntry"); + } + + @Override + public Collection getAllWrongWayConcurrencies() { + return _ops.find("FROM WrongWayConcurrency"); + } + @Override public Agency getAgencyForId(String id) { return (Agency) _ops.get(Agency.class, id); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java index d908ed42d..7b319161c 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java @@ -261,6 +261,9 @@ public Level getLevelForId(AgencyAndId id) { public RouteNameException getRouteNameExceptionForId(AgencyAndId id) { return getEntityForId(RouteNameException.class, id);} public DirectionNameException getDirectionNameExceptionForId(AgencyAndId id) { return getEntityForId(DirectionNameException.class, id);} + public Collection getAllDirectionEntries() { + return getAllEntitiesForType(DirectionEntry.class); + } public Collection getAllFacilities() { return getAllEntitiesForType(Facility.class); } @@ -277,6 +280,9 @@ public Collection getAllDirectionNameExceptions() { return getAllEntitiesForType(DirectionNameException.class); } + public Collection getAllWrongWayConcurrencies() { + return getAllEntitiesForType(WrongWayConcurrency.class); + } public Collection getAllAreas() { return getAllEntitiesForType(Area.class); } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java index 4983e2be5..2ceb25e6e 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java @@ -524,4 +524,10 @@ public Collection getAllRouteNameExceptions() { public Collection getAllDirectionNameExceptions() { return getAllEntitiesForType(DirectionNameException.class); } + public Collection getAllDirectionEntries() { + return _dao.getAllDirectionEntries(); + } + public Collection getAllWrongWayConcurrencies() { + return _dao.getAllWrongWayConcurrencies(); + } } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsRelationalDaoImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsRelationalDaoImpl.java index 3b5881f8a..78c1abd39 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsRelationalDaoImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsRelationalDaoImpl.java @@ -29,19 +29,7 @@ import org.onebusaway.csv_entities.exceptions.EntityInstantiationException; import org.onebusaway.csv_entities.schema.BeanWrapper; import org.onebusaway.csv_entities.schema.BeanWrapperFactory; -import org.onebusaway.gtfs.model.Agency; -import org.onebusaway.gtfs.model.AgencyAndId; -import org.onebusaway.gtfs.model.FareAttribute; -import org.onebusaway.gtfs.model.FareRule; -import org.onebusaway.gtfs.model.Frequency; -import org.onebusaway.gtfs.model.Ridership; -import org.onebusaway.gtfs.model.Route; -import org.onebusaway.gtfs.model.ServiceCalendar; -import org.onebusaway.gtfs.model.ServiceCalendarDate; -import org.onebusaway.gtfs.model.ShapePoint; -import org.onebusaway.gtfs.model.Stop; -import org.onebusaway.gtfs.model.StopTime; -import org.onebusaway.gtfs.model.Trip; +import org.onebusaway.gtfs.model.*; import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; /** diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/translation/TranslationServiceDataFactoryImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/translation/TranslationServiceDataFactoryImpl.java index 5728bcca9..205392636 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/translation/TranslationServiceDataFactoryImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/translation/TranslationServiceDataFactoryImpl.java @@ -55,6 +55,10 @@ public class TranslationServiceDataFactoryImpl implements TranslationServiceData private static final String FACILITY_PROPERTY_DEFINITION_TABLE_NAME = "facilities_properties_definitions"; + private static final String WRONG_WAY_TABLE_NAME = "wrong_way_concurrencies"; + + private static final String DIRECTION_ENTRY_TABLE_NAME = "direction_entry"; + private GtfsRelationalDao _dao; public static TranslationService getTranslationService(GtfsRelationalDao dao) { @@ -128,6 +132,10 @@ private Class getEntityTypeForTableName(String name) { return FacilityProperty.class; case FACILITY_PROPERTY_DEFINITION_TABLE_NAME: return FacilityPropertyDefinition.class; + case WRONG_WAY_TABLE_NAME: + return WrongWayConcurrency.class; + case DIRECTION_ENTRY_TABLE_NAME: + return DirectionEntry.class; } return null; } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/DirectionEntry.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/DirectionEntry.java new file mode 100644 index 000000000..0637fe52d --- /dev/null +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/DirectionEntry.java @@ -0,0 +1,146 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.model; + +import org.onebusaway.csv_entities.schema.annotations.CsvField; +import org.onebusaway.csv_entities.schema.annotations.CsvFields; + +@CsvFields(filename = "direction_names.txt", required = false) +public class DirectionEntry extends IdentityBean { + + @CsvField(ignore = true) + private int id; + + @CsvField(name="agency_id") + private String agencyId; + + @CsvField(name="station_id") + private String stationId; + + @CsvField(name="stop_id_0") + private String gtfsStopIdDirection0; + + @CsvField(name="stop_id_1") + private String gtfsStopIdDirection1; + + @CsvField(name="line") + private String line; + + @CsvField(name="stop_name") + private String stopName; + + @CsvField(name="daytime_routes") + private String daytimeRoutes; + + @CsvField(name="headsign_direction_0", optional = true) + private String headsignDirection0; + + @CsvField(name="headsign_direction_1", optional = true) + private String headsignDirection1; + + @CsvField(name="notes", ignore=true) + private String notes; + + @Override + public Integer getId() { + return id; + } + + @Override + public void setId(Integer id) { + this.id = id; + } + + public String getAgencyId() { + return agencyId; + } + + public void setAgencyId(String agencyId) { + this.agencyId = agencyId; + } + + public String getStationId() { + return stationId; + } + + public void setStationId(String stationId) { + this.stationId = stationId; + } + + public String getGtfsStopIdDirection0() { + return gtfsStopIdDirection0; + } + + public void setGtfsStopIdDirection0(String gtfsStopIdDirection0) { + this.gtfsStopIdDirection0 = gtfsStopIdDirection0; + } + + public String getGtfsStopIdDirection1() { + return gtfsStopIdDirection1; + } + + public void setGtfsStopIdDirection1(String gtfsStopIdDirection1) { + this.gtfsStopIdDirection1 = gtfsStopIdDirection1; + } + + public String getLine() { + return line; + } + + public void setLine(String line) { + this.line = line; + } + + public String getStopName() { + return stopName; + } + + public void setStopName(String stopName) { + this.stopName = stopName; + } + + public String getDaytimeRoutes() { + return daytimeRoutes; + } + + public void setDaytimeRoutes(String daytimeRoutes) { + this.daytimeRoutes = daytimeRoutes; + } + + public String getHeadsignDirection0() { + return headsignDirection0; + } + + public void setHeadsignDirection0(String headsignDirection0) { + this.headsignDirection0 = headsignDirection0; + } + + public String getHeadsignDirection1() { + return headsignDirection1; + } + + public void setHeadsignDirection1(String headsignDirection1) { + this.headsignDirection1 = headsignDirection1; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } +} diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/WrongWayConcurrency.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/WrongWayConcurrency.java new file mode 100644 index 000000000..02b5da4c2 --- /dev/null +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/WrongWayConcurrency.java @@ -0,0 +1,79 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.model; + +import org.onebusaway.csv_entities.schema.annotations.CsvField; +import org.onebusaway.csv_entities.schema.annotations.CsvFields; + +/** + * An GTFS extension that allows for re-mapping of route + direction + stop + * tuples to a replacement stop. The specific use case example is for + * Subway real-time service that reports an invalid stop and needs to be + * corrected to an appropriate stop. Not to be confused with stop consolidation! + */ +@CsvFields(filename = "wrong_way_concurrencies.txt", required = false) +public class WrongWayConcurrency extends IdentityBean { + + + @CsvField(ignore = true) + private int id; + private AgencyAndId routeId; + private String directionId; + private AgencyAndId fromStopId; + private AgencyAndId toStopId; + + @Override + public Integer getId() { + return id; + } + + @Override + public void setId(Integer id) { + this.id = id; + } + + public AgencyAndId getRouteId() { + return routeId; + } + + public void setRouteId(AgencyAndId routeId) { + this.routeId = routeId; + } + + public String getDirectionId() { + return directionId; + } + + public void setDirectionId(String directionId) { + this.directionId = directionId; + } + + public AgencyAndId getFromStopId() { + return fromStopId; + } + + public void setFromStopId(AgencyAndId fromStopId) { + this.fromStopId = fromStopId; + } + + public AgencyAndId getToStopId() { + return toStopId; + } + + public void setToStopId(AgencyAndId toStopId) { + this.toStopId = toStopId; + } +} diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java index b9550b1b2..4c2599f78 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java @@ -71,6 +71,8 @@ public static List> getEntityClasses() { entityClasses.add(FacilityProperty.class); entityClasses.add(RouteNameException.class); entityClasses.add(DirectionNameException.class); + entityClasses.add(WrongWayConcurrency.class); + entityClasses.add(DirectionEntry.class); return entityClasses; } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java index 97b6400d2..376891e28 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java @@ -99,6 +99,8 @@ public GtfsReader() { _entityClasses.add(FacilityProperty.class); _entityClasses.add(RouteNameException.class); _entityClasses.add(DirectionNameException.class); + _entityClasses.add(WrongWayConcurrency.class); + _entityClasses.add(DirectionEntry.class); CsvTokenizerStrategy tokenizerStrategy = new CsvTokenizerStrategy(); tokenizerStrategy.getCsvParser().setTrimInitialWhitespace(true); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java index bfbe4bd3f..bff6dc4b5 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java @@ -204,6 +204,10 @@ public interface GtfsDao extends GenericDao { public Collection getAllTranslations(); + public Collection getAllDirectionEntries(); + + public Collection getAllWrongWayConcurrencies(); + Collection getAllStopAreas(); default boolean hasFaresV1() { diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsRelationalDao.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsRelationalDao.java index 6db031427..aedac9a10 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsRelationalDao.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsRelationalDao.java @@ -17,20 +17,7 @@ */ package org.onebusaway.gtfs.services; -import org.onebusaway.gtfs.model.Agency; -import org.onebusaway.gtfs.model.AgencyAndId; -import org.onebusaway.gtfs.model.Block; -import org.onebusaway.gtfs.model.FareAttribute; -import org.onebusaway.gtfs.model.FareRule; -import org.onebusaway.gtfs.model.Frequency; -import org.onebusaway.gtfs.model.Ridership; -import org.onebusaway.gtfs.model.Route; -import org.onebusaway.gtfs.model.ServiceCalendar; -import org.onebusaway.gtfs.model.ServiceCalendarDate; -import org.onebusaway.gtfs.model.ShapePoint; -import org.onebusaway.gtfs.model.Stop; -import org.onebusaway.gtfs.model.StopTime; -import org.onebusaway.gtfs.model.Trip; +import org.onebusaway.gtfs.model.*; import java.util.List; From f62c6336f40a69ebdced2c33ace494868bdea65e Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 19 Jul 2023 11:47:31 -0400 Subject: [PATCH 065/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.4 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 58d8406bf..b75260f2c 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4-SNAPSHOT + 1.4.4 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 5df0e03b9..b405ab378 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4-SNAPSHOT + 1.4.4 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 41d7d1aee..97acfa4a5 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.4-SNAPSHOT + 1.4.4 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 45cd57876..fe34dd685 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.4-SNAPSHOT + 1.4.4 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 29cf05766..efc23a1fa 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4-SNAPSHOT + 1.4.4 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 5a70188bf..77232bd70 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4-SNAPSHOT + 1.4.4 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 1041695d3..ab8f2bc56 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4-SNAPSHOT + 1.4.4 org.onebusaway onebusaway-gtfs - 1.4.4-SNAPSHOT + 1.4.4 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 1a254bbd3..60dcac581 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4-SNAPSHOT + 1.4.4 diff --git a/pom.xml b/pom.xml index a152ccab7..31bee8250 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.4-SNAPSHOT + 1.4.4 pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.4 From 4657a7ab8316d04672671106dc12422564807dc3 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 19 Jul 2023 11:47:35 -0400 Subject: [PATCH 066/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index b75260f2c..63f0bc389 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4 + 1.4.5-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index b405ab378..88db58de4 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4 + 1.4.5-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 97acfa4a5..ef3caaa93 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.4 + 1.4.5-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index fe34dd685..1eb36851a 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.4 + 1.4.5-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index efc23a1fa..cd47f91df 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4 + 1.4.5-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 77232bd70..482427080 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4 + 1.4.5-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index ab8f2bc56..d05dcb0ff 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4 + 1.4.5-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.4 + 1.4.5-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 60dcac581..39493b697 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.4 + 1.4.5-SNAPSHOT diff --git a/pom.xml b/pom.xml index 31bee8250..190465bb6 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.4 + 1.4.5-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.4 + HEAD From 60aef1d00bf8a25b0b896e60031391bb36e9ba6f Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Thu, 20 Jul 2023 16:14:57 +0200 Subject: [PATCH 067/123] Model stop areas like location groups --- .../impl/HibernateGtfsRelationalDaoImpl.java | 14 ++++- .../org/onebusaway/gtfs/impl/GtfsDaoImpl.java | 9 ++- .../gtfs/impl/GtfsDataServiceImpl.java | 7 ++- .../onebusaway/gtfs/model/LocationGroup.java | 1 + .../gtfs/model/LocationGroupElement.java | 2 + .../org/onebusaway/gtfs/model/StopArea.java | 59 ++++++++++--------- .../gtfs/model/StopAreaElement.java | 59 +++++++++++++++++++ .../GtfsEntitySchemaFactory.java | 2 +- .../gtfs/serialization/GtfsReader.java | 12 +++- .../org/onebusaway/gtfs/services/GtfsDao.java | 5 +- .../gtfs/serialization/GtfsReaderTest.java | 4 +- 11 files changed, 137 insertions(+), 37 deletions(-) create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java diff --git a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java index 6814d67e9..599ef6d3a 100644 --- a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java +++ b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java @@ -287,6 +287,7 @@ public Collection getAllAreas() { return _ops.find("from Area"); } + @Deprecated @Override public Collection getAllLocationGroupElements() { Collection groups = _ops.find("FROM LocationGroup"); @@ -299,6 +300,17 @@ public Collection getAllLocationGroupElements() { })).collect(Collectors.toList()); } + @Override + public Collection getAllStopAreaElements() { + Collection groups = _ops.find("FROM StopArea"); + return groups.stream().flatMap(group -> group.getStops().stream().map(stopLocation -> { + var stopAreaElement = new StopAreaElement(); + stopAreaElement.setId(group.getId()); + stopAreaElement.setStop(stopLocation); + return stopAreaElement; + })).collect(Collectors.toList()); + } + @Override public Collection getAllLocationGroups() { return _ops.find("FROM LocationGroup"); @@ -320,7 +332,7 @@ public Collection getAllTranslations() { } @Override - public Collection getAllStopAreas() { + public Collection getAllStopAreas() { return _ops.find("from StopArea"); } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java index 7b319161c..c998e9177 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java @@ -291,6 +291,11 @@ public Collection getAllLocationGroupElements() { return getAllEntitiesForType(LocationGroupElement.class); } + @Override + public Collection getAllStopAreaElements() { + return getAllEntitiesForType(StopAreaElement.class); + } + public Collection getAllLocationGroups() { return getAllEntitiesForType(LocationGroup.class); } @@ -308,8 +313,8 @@ public Collection getAllTranslations() { } @Override - public Collection getAllStopAreas() { - return getAllEntitiesForType(StopArea.class); + public Collection getAllStopAreas() { + return getAllEntitiesForType(StopAreaElement.class); } /**** diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java index 2ceb25e6e..f4bbfbf7b 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java @@ -363,6 +363,11 @@ public Collection getAllLocationGroupElements() { return _dao.getAllLocationGroupElements(); } + @Override + public Collection getAllStopAreaElements() { + return _dao.getAllStopAreaElements(); + } + @Override public Collection getAllLocationGroups() { return _dao.getAllLocationGroups(); @@ -384,7 +389,7 @@ public Collection getAllTranslations() { } @Override - public Collection getAllStopAreas() { + public Collection getAllStopAreas() { return _dao.getAllStopAreas(); } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java index 46ef67e98..6b8f271fa 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java @@ -18,6 +18,7 @@ import java.util.HashSet; import java.util.Set; +@Deprecated public class LocationGroup extends IdentityBean implements StopLocation { private static final long serialVersionUID = 1L; diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java index 05cba1665..40ac830af 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java @@ -20,6 +20,8 @@ import org.onebusaway.gtfs.serialization.mappings.DefaultAgencyIdFieldMappingFactory; import org.onebusaway.gtfs.serialization.mappings.StopLocationFieldMappingFactory; + +@Deprecated @CsvFields(filename = "location_groups.txt", required = false, prefix = "location_group_") public class LocationGroupElement extends IdentityBean { diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java index a81576cfd..b069088fc 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2022 Leonard Ehrenfried + * Copyright (C) 2020 Kyyti Group Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,41 +15,44 @@ */ package org.onebusaway.gtfs.model; -import org.onebusaway.csv_entities.schema.annotations.CsvField; -import org.onebusaway.csv_entities.schema.annotations.CsvFields; +import java.util.HashSet; +import java.util.Set; -@CsvFields(filename = "stop_areas.txt", required = false) -public final class StopArea extends IdentityBean { +public class StopArea extends IdentityBean implements StopLocation { + private static final long serialVersionUID = 1L; - @CsvField(name = "area_id") - private String areaId; - @CsvField(name = "stop_id") - private String stopId; + private AgencyAndId id; - public String getAreaId() { - return areaId; - } + private Set stops = new HashSet<>(); - public void setAreaId(String areaId) { - this.areaId = areaId; - } + private String name; - public String getStopId() { - return stopId; - } + @Override + public AgencyAndId getId() { + return id; + } - public void setStopId(String stopId) { - this.stopId = stopId; - } + public void setId(AgencyAndId id) { + this.id = id; + } - @Override - public String getId() { - return String.format("%s_%s", areaId, stopId); - } + public Set getStops() { + return stops; + } - @Override - public void setId(String id) { + private void setStops(Set stops) { + this.stops = stops; + } - } + public void addLocation(StopLocation location) { + this.stops.add(location); + } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java new file mode 100644 index 000000000..b88988481 --- /dev/null +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java @@ -0,0 +1,59 @@ +/** + * Copyright (C) 2022 Leonard Ehrenfried + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.model; + +import org.onebusaway.csv_entities.schema.annotations.CsvField; +import org.onebusaway.csv_entities.schema.annotations.CsvFields; + +@CsvFields(filename = "stop_areas.txt", required = false) +public final class StopAreaElement extends IdentityBean { + + @CsvField(name = "area_id") + private AgencyAndId areaId; + @CsvField(name = "stop_id") + private String stopId; + private StopLocation stop; + + public AgencyAndId getAreaId() { + return areaId; + } + + public String getStopId() { + return stopId; + } + + public void setStopId(String stopId) { + this.stopId = stopId; + } + + @Override + public AgencyAndId getId() { + return new AgencyAndId(areaId.getAgencyId(), String.format("%s_%s", areaId.getId(), stopId)); + } + + @Override + public void setId(AgencyAndId id) { + this.areaId = id; + } + + public void setStop(StopLocation stopLocation) { + this.stop = stopLocation; + } + + public StopLocation getStop() { + return stop; + } +} diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java index 4c2599f78..f04f2dc22 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java @@ -46,7 +46,7 @@ public static List> getEntityClasses() { entityClasses.add(RouteShape.class); entityClasses.add(Level.class); entityClasses.add(Stop.class); - entityClasses.add(StopArea.class); + entityClasses.add(StopAreaElement.class); entityClasses.add(LocationGroupElement.class); entityClasses.add(Trip.class); entityClasses.add(Note.class); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java index 376891e28..07cb822a2 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java @@ -76,7 +76,7 @@ public GtfsReader() { _entityClasses.add(Location.class); _entityClasses.add(LocationGroupElement.class); _entityClasses.add(Trip.class); - _entityClasses.add(StopArea.class); + _entityClasses.add(StopAreaElement.class); _entityClasses.add(StopTime.class); _entityClasses.add(ServiceCalendar.class); _entityClasses.add(ServiceCalendarDate.class); @@ -368,6 +368,16 @@ public void handleEntity(Object entity) { _entityStore.saveEntity(locationGroup); } locationGroup.addLocation(locationGroupElement.getLocation()); + } else if (entity instanceof StopAreaElement) { + var stopAreaElement = (StopAreaElement) entity; + var stopArea = _entityStore.getEntityForId(StopArea.class, stopAreaElement.getAreaId()); + if (stopArea == null) { + stopArea = new StopArea(); + stopArea.setId(stopAreaElement.getAreaId()); + stopArea.setName("area"); + _entityStore.saveEntity(stopArea); + } + stopArea.addLocation(stopAreaElement.getStop()); } else if (entity instanceof Vehicle) { Vehicle vehicle = (Vehicle) entity; registerAgencyId(Vehicle.class, vehicle.getId()); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java index bff6dc4b5..8725650b8 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java @@ -190,8 +190,11 @@ public interface GtfsDao extends GenericDao { public Collection getAllAreas(); + @Deprecated public Collection getAllLocationGroupElements(); + public Collection getAllStopAreaElements(); + public Collection getAllLocationGroups(); public Collection getAllLocations(); @@ -208,7 +211,7 @@ public interface GtfsDao extends GenericDao { public Collection getAllWrongWayConcurrencies(); - Collection getAllStopAreas(); + Collection getAllStopAreas(); default boolean hasFaresV1() { return Stream.of(getAllFareAttributes(), getAllFareRules()).flatMap(Collection::stream).findAny().isPresent(); diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java index 49b4b225d..d9f2a3bf1 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java @@ -867,8 +867,8 @@ public void mdotMetroFaresV2() throws CsvEntityIOException, IOException { assertEquals("charmcard_senior", medium.getId().getId()); assertEquals("Senior CharmCard", medium.getName()); - List stopAreas = new ArrayList<>(dao.getAllStopAreas()); - assertEquals(0, stopAreas.size()); + List stopAreaElements = new ArrayList<>(dao.getAllStopAreas()); + assertEquals(0, stopAreaElements.size()); List routes = new ArrayList<>(dao.getAllRoutes()); assertEquals(1, routes.size()); From e2a43a0dd8734e95238542e20ebf9713f78872eb Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Thu, 20 Jul 2023 16:44:15 +0200 Subject: [PATCH 068/123] Organise tests and add pierce transit --- .../org/onebusaway/gtfs/GtfsTestData.java | 5 + .../gtfs/serialization/BaseGtfsTest.java | 32 + .../gtfs/serialization/FaresV2ReaderTest.java | 194 + .../gtfs/serialization/FlexReaderTest.java | 39 + .../gtfs/serialization/GtfsReaderTest.java | 152 +- .../agency.txt | 2 + .../areas.txt | 3 + .../booking_rules.txt | 5 + .../calendar.txt | 3 + .../calendar_attributes.txt | 3 + .../calendar_dates.txt | 11 + .../directions.txt | 5 + .../feed_info.txt | 2 + .../locations.geojson | 3469 +++++++++++++++++ .../routes.txt | 5 + .../stop_areas.txt | 16 + .../stop_times.txt | 15 + .../stops.txt | 19 + .../trips.txt | 8 + 19 files changed, 3842 insertions(+), 146 deletions(-) create mode 100644 onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/BaseGtfsTest.java create mode 100644 onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FaresV2ReaderTest.java create mode 100644 onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/agency.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/areas.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/booking_rules.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_attributes.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_dates.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/directions.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/feed_info.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/locations.geojson create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/routes.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_areas.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_times.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stops.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/trips.txt diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java index b49d78730..a4253143d 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java @@ -41,6 +41,8 @@ public class GtfsTestData { public static final String MDOT_FARES_V2 = "org/onebusaway/gtfs/mdot-metro-fares-v2"; + public static final String PIERCE_TRANSIT_FLEX = "org/onebusaway/gtfs/mdot-metro-fares-v2"; + public static final String LOCATIONS_GEOJSON = "org/onebusaway/gtfs/locations.geojson"; public static File getCaltrainGtfs() { @@ -71,6 +73,9 @@ public static File getTurlockFaresV2() { public static File getMdotMetroFaresV2() { return new File("src/test/resources", MDOT_FARES_V2); } + public static File getPierceTransitFlex() { + return new File("src/test/resources", PIERCE_TRANSIT_FLEX); + } public static void readGtfs(T entityStore, File resourcePath, String defaultAgencyId) throws IOException { diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/BaseGtfsTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/BaseGtfsTest.java new file mode 100644 index 000000000..23fbaee76 --- /dev/null +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/BaseGtfsTest.java @@ -0,0 +1,32 @@ +package org.onebusaway.gtfs.serialization; + +import java.io.File; +import java.io.IOException; +import org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl; +import org.onebusaway.gtfs.services.GtfsRelationalDao; + +public class BaseGtfsTest { + + /**** + * Private Methods + ****/ + + public static GtfsRelationalDao processFeed( + File resourcePath, String agencyId, + boolean internStrings + ) throws IOException { + + GtfsReader reader = new GtfsReader(); + reader.setDefaultAgencyId(agencyId); + reader.setInternStrings(internStrings); + + reader.setInputLocation(resourcePath); + + GtfsRelationalDaoImpl entityStore = new GtfsRelationalDaoImpl(); + entityStore.setGenerateIds(true); + reader.setEntityStore(entityStore); + + reader.run(); + return entityStore; + } +} diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FaresV2ReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FaresV2ReaderTest.java new file mode 100644 index 000000000..96a90a5e3 --- /dev/null +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FaresV2ReaderTest.java @@ -0,0 +1,194 @@ +/** + * Copyright (C) 2011 Brian Ferris + * Copyright (C) 2011 Google, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.serialization; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.File; +import java.io.IOException; +import java.io.StringReader; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import org.junit.Test; +import org.onebusaway.csv_entities.exceptions.CsvEntityIOException; +import org.onebusaway.csv_entities.exceptions.InvalidValueEntityException; +import org.onebusaway.csv_entities.exceptions.MissingRequiredFieldException; +import org.onebusaway.gtfs.GtfsTestData; +import org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl; +import org.onebusaway.gtfs.model.Agency; +import org.onebusaway.gtfs.model.AgencyAndId; +import org.onebusaway.gtfs.model.Block; +import org.onebusaway.gtfs.model.FareAttribute; +import org.onebusaway.gtfs.model.FareLegRule; +import org.onebusaway.gtfs.model.FareMedium; +import org.onebusaway.gtfs.model.FareProduct; +import org.onebusaway.gtfs.model.FareRule; +import org.onebusaway.gtfs.model.FareTransferRule; +import org.onebusaway.gtfs.model.FeedInfo; +import org.onebusaway.gtfs.model.Frequency; +import org.onebusaway.gtfs.model.Level; +import org.onebusaway.gtfs.model.Pathway; +import org.onebusaway.gtfs.model.RiderCategory; +import org.onebusaway.gtfs.model.Ridership; +import org.onebusaway.gtfs.model.Route; +import org.onebusaway.gtfs.model.ServiceCalendar; +import org.onebusaway.gtfs.model.ServiceCalendarDate; +import org.onebusaway.gtfs.model.ShapePoint; +import org.onebusaway.gtfs.model.Stop; +import org.onebusaway.gtfs.model.StopAreaElement; +import org.onebusaway.gtfs.model.StopTime; +import org.onebusaway.gtfs.model.Transfer; +import org.onebusaway.gtfs.model.Trip; +import org.onebusaway.gtfs.model.calendar.ServiceDate; +import org.onebusaway.gtfs.serialization.mappings.AgencyNotFoundForRouteException; +import org.onebusaway.gtfs.services.GtfsDao; +import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; +import org.onebusaway.gtfs.services.GtfsRelationalDao; +import org.onebusaway.gtfs.services.MockGtfs; + +public class FaresV2ReaderTest extends BaseGtfsTest { + + @Test + public void turlockFaresV2() throws CsvEntityIOException, IOException { + String agencyId = "1642"; + GtfsRelationalDao dao = processFeed(GtfsTestData.getTurlockFaresV2(), + agencyId, false); + + Agency agency = dao.getAgencyForId(agencyId); + assertEquals(agencyId, agency.getId()); + assertEquals("Turlock Transit", agency.getName()); + assertEquals("http://www.turlocktransit.com/", agency.getUrl()); + assertEquals("America/Los_Angeles", agency.getTimezone()); + + List fareProducts = new ArrayList<>(dao.getAllFareProducts()); + assertEquals(12, fareProducts.size()); + + FareProduct fp = fareProducts.stream().sorted(Comparator.comparing(FareProduct::getId)).findFirst().get(); + assertEquals("id=31-day_disabled|category=disabled|medium=null", fp.getId().getId()); + assertEquals("31-Day Pass Persons with Disabilities", fp.getName()); + assertEquals("USD", fp.getCurrency()); + assertEquals(15.0, fp.getAmount(), 0); + assertEquals(3, fp.getDurationUnit()); + assertEquals(31, fp.getDurationAmount()); + assertEquals(2, fp.getDurationType()); + RiderCategory cat = fp.getRiderCategory(); + assertEquals("Persons with Disabilities", cat.getName()); + assertEquals("disabled", cat.getId().getId()); + + + List fareLegRules = new ArrayList<>(dao.getAllFareLegRules()); + assertEquals(12, fareLegRules.size()); + + FareLegRule flr = fareLegRules.stream().sorted(Comparator.comparing(FareLegRule::getId)).findFirst().get(); + assertEquals("groupId=Turlock|product=31-day_disabled|network=null|fromArea=null|toArea=null", flr.getId()); + assertEquals("Turlock", flr.getLegGroupId().getId()); + + List riderCats = new ArrayList<>(dao.getAllRiderCategories()); + assertEquals(5, riderCats.size()); + + RiderCategory riderCat = riderCats.stream().sorted(Comparator.comparing(RiderCategory::getId)).filter(c -> c.getId().getId().equals("youth")).findAny().get(); + assertEquals("youth", riderCat.getId().getId()); + assertEquals("Youth Age 18 and Under", riderCat.getName()); + assertEquals(18, riderCat.getMaxAge()); + assertEquals(RiderCategory.MISSING_VALUE, riderCat.getMinAge()); + assertEquals("http://www.turlocktransit.com/fares.html", riderCat.getEligibilityUrl()); + + assertTrue(dao.hasFaresV1()); + assertTrue(dao.hasFaresV2()); + } + @Test + public void mdotMetroFaresV2() throws CsvEntityIOException, IOException { + String agencyId = "1"; + GtfsRelationalDao dao = processFeed(GtfsTestData.getMdotMetroFaresV2(), + agencyId, false); + + Agency agency = dao.getAgencyForId(agencyId); + assertEquals(agencyId, agency.getId()); + assertEquals("Maryland Transit Administration Metro Subway", agency.getName()); + + List fareProducts = new ArrayList<>(dao.getAllFareProducts()); + assertEquals(21, fareProducts.size()); + + FareProduct fp = fareProducts.stream().sorted(Comparator.comparing(FareProduct::getId)).findFirst().get(); + assertEquals("id=core_local_1_day_fare|category=null|medium=charmcard", fp.getId().getId()); + assertEquals("1-Day Pass - Core Service", fp.getName()); + assertEquals("USD", fp.getCurrency()); + assertEquals(4.6, fp.getAmount(), 0.01); + + List fareLegRules = new ArrayList<>(dao.getAllFareLegRules()); + assertEquals(7, fareLegRules.size()); + + FareLegRule flr = fareLegRules.stream().sorted(Comparator.comparing(FareLegRule::getId)).findFirst().get(); + assertEquals("groupId=core_local_one_way_trip|product=core_local_1_day_fare|network=core|fromArea=null|toArea=null", flr.getId()); + assertEquals("core_local_one_way_trip", flr.getLegGroupId().getId()); + + List fareTransferRules = new ArrayList<>(dao.getAllFareTransferRules()); + assertEquals(3, fareTransferRules.size()); + + FareTransferRule ftr = fareTransferRules.stream().sorted(Comparator.comparing(FareTransferRule::getId)).findFirst().get(); + assertEquals("1_core_express_one_way_trip_1_core_express_one_way_trip_null_-999_5400", ftr.getId()); + assertEquals(new AgencyAndId("1", "core_express_one_way_trip"), ftr.getFromLegGroupId()); + assertEquals(-999, ftr.getTransferCount()); + assertEquals(5400, ftr.getDurationLimit()); + + List media = new ArrayList<>(dao.getAllFareMedia()); + assertEquals(3, fareTransferRules.size()); + + FareMedium medium = media.stream().filter(c -> c.getId().getId().equals("charmcard_senior")).findFirst().get(); + assertEquals("charmcard_senior", medium.getId().getId()); + assertEquals("Senior CharmCard", medium.getName()); + + List stopAreaElements = new ArrayList<>(dao.getAllStopAreas()); + assertEquals(0, stopAreaElements.size()); + + List routes = new ArrayList<>(dao.getAllRoutes()); + assertEquals(1, routes.size()); + assertEquals("core", routes.get(0).getNetworkId()); + + assertFalse(dao.hasFaresV1()); + assertTrue(dao.hasFaresV2()); + } + + + @Test + public void testFaresV2Distance() throws IOException{ + MockGtfs gtfs = MockGtfs.create(); + gtfs.putMinimal(); + gtfs.putLines("fare_products.txt", "fare_product_id, amount, currency", "" + + "fare_1,5,EUR"); + gtfs.putLines("fare_leg_rules.txt", "network_id,min_distance,max_distance,distance_type,fare_product_id", + "bus,0,3,1,fare_1" + ); + GtfsRelationalDao dao = processFeed(gtfs.getPath(), "1", false); + assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getMaxDistance()).findFirst().get() == 3.0); + assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getMinDistance()).findFirst().get() == 0.0); + assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getDistanceType()).findFirst().get() == 1); + } + +} diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java new file mode 100644 index 000000000..00ff4d8ea --- /dev/null +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java @@ -0,0 +1,39 @@ +/** + * Copyright (C) 2011 Brian Ferris + * Copyright (C) 2011 Google, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.serialization; + +import static junit.framework.Assert.assertEquals; + +import java.io.IOException; +import java.util.List; +import org.junit.Test; +import org.onebusaway.csv_entities.exceptions.CsvEntityIOException; +import org.onebusaway.gtfs.GtfsTestData; +import org.onebusaway.gtfs.services.GtfsRelationalDao; + +public class FlexReaderTest extends BaseGtfsTest { + + @Test + public void pierceTransit() throws CsvEntityIOException, IOException { + String agencyId = "1"; + GtfsRelationalDao dao = processFeed(GtfsTestData.getPierceTransitFlex(), agencyId, false); + + var stopAreas = List.copyOf(dao.getAllStopAreas()); + + assertEquals(1, stopAreas.size()); + } +} diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java index d9f2a3bf1..7d3fbbb4b 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java @@ -50,7 +50,7 @@ import org.onebusaway.gtfs.services.GtfsRelationalDao; import org.onebusaway.gtfs.services.MockGtfs; -public class GtfsReaderTest { +public class GtfsReaderTest extends BaseGtfsTest { @Test public void testAllFields() throws IOException { @@ -394,7 +394,7 @@ public void testIslandTransit() throws IOException { } @Test - public void testCaltrain() throws IOException, ParseException { + public void testCaltrain() throws IOException { File resourcePath = GtfsTestData.getCaltrainGtfs(); String agencyId = "Caltrain"; @@ -555,7 +555,7 @@ public void testCaltrain() throws IOException, ParseException { } @Test - public void testBart() throws IOException, ParseException { + public void testBart() throws IOException { File resourcePath = GtfsTestData.getBartGtfs(); String agencyId = "BART"; @@ -577,7 +577,7 @@ public void testBart() throws IOException, ParseException { } @Test - public void testIntern() throws IOException, ParseException { + public void testIntern() throws IOException { File resourcePath; String agencyId; GtfsDao entityStore; @@ -697,8 +697,7 @@ public void testTestAgency() throws IOException { } @Test - public void testUtf8() throws IOException, ParseException, - InterruptedException { + public void testUtf8() throws IOException { MockGtfs mockGtfs = MockGtfs.create(); mockGtfs.putDefaultStopTimes(); @@ -716,8 +715,7 @@ public void testUtf8() throws IOException, ParseException, } @Test - public void testBom() throws IOException, ParseException, - InterruptedException { + public void testBom() throws IOException { MockGtfs mockGtfs = MockGtfs.create(); mockGtfs.putDefaultStopTimes(); @@ -777,123 +775,6 @@ public void testFrequency() throws CsvEntityIOException, IOException { assertSame(trip, frequency.getTrip()); } - @Test - public void turlockFaresV2() throws CsvEntityIOException, IOException { - String agencyId = "1642"; - GtfsRelationalDao dao = processFeed(GtfsTestData.getTurlockFaresV2(), - agencyId, false); - - Agency agency = dao.getAgencyForId(agencyId); - assertEquals(agencyId, agency.getId()); - assertEquals("Turlock Transit", agency.getName()); - assertEquals("http://www.turlocktransit.com/", agency.getUrl()); - assertEquals("America/Los_Angeles", agency.getTimezone()); - - List fareProducts = new ArrayList<>(dao.getAllFareProducts()); - assertEquals(12, fareProducts.size()); - - FareProduct fp = fareProducts.stream().sorted(Comparator.comparing(FareProduct::getId)).findFirst().get(); - assertEquals("id=31-day_disabled|category=disabled|medium=null", fp.getId().getId()); - assertEquals("31-Day Pass Persons with Disabilities", fp.getName()); - assertEquals("USD", fp.getCurrency()); - assertEquals(15.0, fp.getAmount(), 0); - assertEquals(3, fp.getDurationUnit()); - assertEquals(31, fp.getDurationAmount()); - assertEquals(2, fp.getDurationType()); - RiderCategory cat = fp.getRiderCategory(); - assertEquals("Persons with Disabilities", cat.getName()); - assertEquals("disabled", cat.getId().getId()); - - - List fareLegRules = new ArrayList<>(dao.getAllFareLegRules()); - assertEquals(12, fareLegRules.size()); - - FareLegRule flr = fareLegRules.stream().sorted(Comparator.comparing(FareLegRule::getId)).findFirst().get(); - assertEquals("groupId=Turlock|product=31-day_disabled|network=null|fromArea=null|toArea=null", flr.getId()); - assertEquals("Turlock", flr.getLegGroupId().getId()); - - List riderCats = new ArrayList<>(dao.getAllRiderCategories()); - assertEquals(5, riderCats.size()); - - RiderCategory riderCat = riderCats.stream().sorted(Comparator.comparing(RiderCategory::getId)).filter(c -> c.getId().getId().equals("youth")).findAny().get(); - assertEquals("youth", riderCat.getId().getId()); - assertEquals("Youth Age 18 and Under", riderCat.getName()); - assertEquals(18, riderCat.getMaxAge()); - assertEquals(RiderCategory.MISSING_VALUE, riderCat.getMinAge()); - assertEquals("http://www.turlocktransit.com/fares.html", riderCat.getEligibilityUrl()); - - assertTrue(dao.hasFaresV1()); - assertTrue(dao.hasFaresV2()); - } - @Test - public void mdotMetroFaresV2() throws CsvEntityIOException, IOException { - String agencyId = "1"; - GtfsRelationalDao dao = processFeed(GtfsTestData.getMdotMetroFaresV2(), - agencyId, false); - - Agency agency = dao.getAgencyForId(agencyId); - assertEquals(agencyId, agency.getId()); - assertEquals("Maryland Transit Administration Metro Subway", agency.getName()); - - List fareProducts = new ArrayList<>(dao.getAllFareProducts()); - assertEquals(21, fareProducts.size()); - - FareProduct fp = fareProducts.stream().sorted(Comparator.comparing(FareProduct::getId)).findFirst().get(); - assertEquals("id=core_local_1_day_fare|category=null|medium=charmcard", fp.getId().getId()); - assertEquals("1-Day Pass - Core Service", fp.getName()); - assertEquals("USD", fp.getCurrency()); - assertEquals(4.6, fp.getAmount(), 0.01); - - List fareLegRules = new ArrayList<>(dao.getAllFareLegRules()); - assertEquals(7, fareLegRules.size()); - - FareLegRule flr = fareLegRules.stream().sorted(Comparator.comparing(FareLegRule::getId)).findFirst().get(); - assertEquals("groupId=core_local_one_way_trip|product=core_local_1_day_fare|network=core|fromArea=null|toArea=null", flr.getId()); - assertEquals("core_local_one_way_trip", flr.getLegGroupId().getId()); - - List fareTransferRules = new ArrayList<>(dao.getAllFareTransferRules()); - assertEquals(3, fareTransferRules.size()); - - FareTransferRule ftr = fareTransferRules.stream().sorted(Comparator.comparing(FareTransferRule::getId)).findFirst().get(); - assertEquals("1_core_express_one_way_trip_1_core_express_one_way_trip_null_-999_5400", ftr.getId()); - assertEquals(new AgencyAndId("1", "core_express_one_way_trip"), ftr.getFromLegGroupId()); - assertEquals(-999, ftr.getTransferCount()); - assertEquals(5400, ftr.getDurationLimit()); - - List media = new ArrayList<>(dao.getAllFareMedia()); - assertEquals(3, fareTransferRules.size()); - - FareMedium medium = media.stream().filter(c -> c.getId().getId().equals("charmcard_senior")).findFirst().get(); - assertEquals("charmcard_senior", medium.getId().getId()); - assertEquals("Senior CharmCard", medium.getName()); - - List stopAreaElements = new ArrayList<>(dao.getAllStopAreas()); - assertEquals(0, stopAreaElements.size()); - - List routes = new ArrayList<>(dao.getAllRoutes()); - assertEquals(1, routes.size()); - assertEquals("core", routes.get(0).getNetworkId()); - - assertFalse(dao.hasFaresV1()); - assertTrue(dao.hasFaresV2()); - } - - - @Test - public void testFaresV2Distance() throws IOException{ - MockGtfs gtfs = MockGtfs.create(); - gtfs.putMinimal(); - gtfs.putLines("fare_products.txt", "fare_product_id, amount, currency", "" + - "fare_1,5,EUR"); - gtfs.putLines("fare_leg_rules.txt", "network_id,min_distance,max_distance,distance_type,fare_product_id", - "bus,0,3,1,fare_1" - ); - GtfsRelationalDao dao = processFeed(gtfs.getPath(), "1", false); - assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getMaxDistance()).findFirst().get() == 3.0); - assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getMinDistance()).findFirst().get() == 0.0); - assertTrue(dao.getAllFareLegRules().stream().map(fareLegRule -> fareLegRule.getDistanceType()).findFirst().get() == 1); - } - @Test public void testFeedInfo() throws CsvEntityIOException, IOException { @@ -1045,27 +926,6 @@ public void testCsvParser() throws CsvEntityIOException, IOException { assertEquals("Ten, Ten", route.getLongName()); } - /**** - * Private Methods - ****/ - - public static GtfsRelationalDao processFeed(File resourcePath, String agencyId, - boolean internStrings) throws IOException { - - GtfsReader reader = new GtfsReader(); - reader.setDefaultAgencyId(agencyId); - reader.setInternStrings(internStrings); - - reader.setInputLocation(resourcePath); - - GtfsRelationalDaoImpl entityStore = new GtfsRelationalDaoImpl(); - entityStore.setGenerateIds(true); - reader.setEntityStore(entityStore); - - reader.run(); - return entityStore; - } - private ShapePoint getShapePoint(Iterable shapePoints, AgencyAndId shapeId, int sequence) { for (ShapePoint shapePoint : shapePoints) { diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/agency.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/agency.txt new file mode 100644 index 000000000..49a72fad5 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/agency.txt @@ -0,0 +1,2 @@ +agency_id,agency_url,agency_lang,agency_name,agency_phone,agency_timezone,agency_fare_url,tts_agency_name +4971,https://www.piercetransit.org/,en,Pierce Transit,,America/Los_Angeles,, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/areas.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/areas.txt new file mode 100644 index 000000000..6ee648fda --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/areas.txt @@ -0,0 +1,3 @@ +area_id,area_name +4210800,Spanaway Core +4210813,JBLM Stops \ No newline at end of file diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/booking_rules.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/booking_rules.txt new file mode 100644 index 000000000..26570f9cd --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/booking_rules.txt @@ -0,0 +1,5 @@ +booking_rule_id,booking_type,prior_notice_duration_min,prior_notice_duration_max,prior_notice_start_day,prior_notice_start_time,prior_notice_last_day,prior_notice_last_time,prior_notice_service_id,message,pickup_message,drop_off_message,phone_number,info_url,booking_url +booking_route_76310,0,,,,,,,,"The Ruston Runner provides on-demand transit service in Northwest Tacoma along Ruston Way. To request a ride, call 253-270-1340 or book a trip through the GOIN’ Rides for all mobile app.",,,253-270-1340,https://www.piercetransit.org/rustonrunner/, +booking_route_76311,0,,,,,,,,"The Tideflats Runner provides on-demand transit service in the Port of Tacoma, Fife, and Edgewood. To request a ride, call 253-270-1340 or book a trip through the GOIN’ Rides for all mobile app.",,,253-270-1340,https://www.piercetransit.org/tideflatsrunner/, +booking_route_76312,0,,,,,,,,"The Spanaway Runner provides on-demand transit service throughout the Spanaway, Midland, and Parkland areas. To request a ride, call 253-270-1340 or book a trip through the GOIN’ Rides for all mobile app.",,,253-270-1340,https://www.piercetransit.org/spanaway-parkland-midland-runner/, +booking_route_76313,0,,,,,,,,"The JBLM Runner provides on-demand transit service to and from the Joint Base Lewis-McChord military base. To request a ride, call 253-377-4380. If traveling onto the base, riders must have an approved Department of Defense ID.",,,253-377-4380,https://www.piercetransit.org/jblmrunner/, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar.txt new file mode 100644 index 000000000..cf8c9b9c3 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar.txt @@ -0,0 +1,3 @@ +service_id,service_name,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date +c_69336_b_80376_d_31,JBLM Runner (Weekday),1,1,1,1,1,0,0,20230401,20231201 +c_69335_b_80375_d_127,Flex Year Round (All days of week),1,1,1,1,1,1,1,20230401,20231201 diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_attributes.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_attributes.txt new file mode 100644 index 000000000..d8d4b3fe5 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_attributes.txt @@ -0,0 +1,3 @@ +service_id,service_description +c_69336_b_80376_d_31,JBLM Runner (Weekday) +c_69335_b_80375_d_127,Flex Year Round (All days of week) diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_dates.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_dates.txt new file mode 100644 index 000000000..8ee08d3aa --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_dates.txt @@ -0,0 +1,11 @@ +service_id,date,holiday_name,exception_type +c_69336_b_80376_d_31,20231123,Thanksgiving Day,2 +c_69336_b_80376_d_31,20231110,Veteran's Day (Observed),2 +c_69336_b_80376_d_31,20230904,Labor Day,2 +c_69336_b_80376_d_31,20230704,Independence Day,2 +c_69336_b_80376_d_31,20230619,Juneteenth,2 +c_69336_b_80376_d_31,20230529,Memorial Day,2 +c_69335_b_80375_d_127,20231123,Thanksgiving Day,2 +c_69335_b_80375_d_127,20230904,Labor Day,2 +c_69335_b_80375_d_127,20230704,Independence Day,2 +c_69335_b_80375_d_127,20230529,Memorial Day,2 diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/directions.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/directions.txt new file mode 100644 index 000000000..d1c9baad5 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/directions.txt @@ -0,0 +1,5 @@ +route_id,direction_id,direction +76313,0,No direction +76312,0,No direction +76311,0,No direction +76310,0,No direction diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/feed_info.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/feed_info.txt new file mode 100644 index 000000000..c6306df82 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/feed_info.txt @@ -0,0 +1,2 @@ +feed_publisher_url,feed_publisher_name,feed_lang,feed_version,feed_license,feed_contact_email,feed_contact_url,feed_start_date,feed_end_date,feed_id +http://www.trilliumtransit.com,"Trillium Solutions, Inc.",en,UTC: 28-Apr-2023 22:41,,support+piercetransit-wa-us@trilliumtransit.com,http://support.trilliumtransit.com,20230428,20231201,piercetransit-wa-us diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/locations.geojson b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/locations.geojson new file mode 100644 index 000000000..950fbe5f4 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/locations.geojson @@ -0,0 +1,3469 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "id": "area_1072", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -122.509648, + 47.302401 + ], + [ + -122.511241, + 47.3037896 + ], + [ + -122.5130064, + 47.3050939 + ], + [ + -122.5127605, + 47.3054512 + ], + [ + -122.514157, + 47.3060945 + ], + [ + -122.5142272, + 47.3053321 + ], + [ + -122.5142448, + 47.3047127 + ], + [ + -122.5144191, + 47.3042949 + ], + [ + -122.5147829, + 47.3038301 + ], + [ + -122.5149098, + 47.3032908 + ], + [ + -122.5149388, + 47.3027432 + ], + [ + -122.5153739, + 47.3020508 + ], + [ + -122.5156947, + 47.3017192 + ], + [ + -122.5156947, + 47.3017192 + ], + [ + -122.5156561, + 47.3010741 + ], + [ + -122.5157294, + 47.2962746 + ], + [ + -122.5156982, + 47.2948707 + ], + [ + -122.5156982, + 47.2948707 + ], + [ + -122.5157281, + 47.2938001 + ], + [ + -122.5085606, + 47.2937319 + ], + [ + -122.4735423, + 47.2727602 + ], + [ + -122.4658318, + 47.2714988 + ], + [ + -122.4458944, + 47.2647135 + ], + [ + -122.4426232, + 47.2611956 + ], + [ + -122.4405756, + 47.2579658 + ], + [ + -122.4390261, + 47.2512101 + ], + [ + -122.4356871, + 47.2516103 + ], + [ + -122.4356655, + 47.2503981 + ], + [ + -122.4358214, + 47.2490826 + ], + [ + -122.435465, + 47.2470262 + ], + [ + -122.4350863, + 47.245257 + ], + [ + -122.43235, + 47.2455418 + ], + [ + -122.433299, + 47.2539226 + ], + [ + -122.427604, + 47.2541833 + ], + [ + -122.4266254, + 47.2550766 + ], + [ + -122.432561, + 47.2639148 + ], + [ + -122.4375817, + 47.2617502 + ], + [ + -122.4427331, + 47.2671937 + ], + [ + -122.4522692, + 47.2732208 + ], + [ + -122.4683304, + 47.2789107 + ], + [ + -122.4857673, + 47.2877613 + ], + [ + -122.5012681, + 47.2999976 + ], + [ + -122.5053378, + 47.302744 + ], + [ + -122.5066509, + 47.3029248 + ], + [ + -122.509648, + 47.302401 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "area_1073", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -122.4430122, + 47.267346 + ], + [ + -122.4476432, + 47.2688846 + ], + [ + -122.4485741, + 47.2674881 + ], + [ + -122.4461577, + 47.2660493 + ], + [ + -122.444831, + 47.2644577 + ], + [ + -122.4421736, + 47.2611831 + ], + [ + -122.4405237, + 47.25844 + ], + [ + -122.4405601, + 47.2580144 + ], + [ + -122.4399969, + 47.2553122 + ], + [ + -122.4389968, + 47.251226 + ], + [ + -122.4410629, + 47.2510149 + ], + [ + -122.4396757, + 47.2448239 + ], + [ + -122.4391834, + 47.2427751 + ], + [ + -122.4370702, + 47.2366673 + ], + [ + -122.4384538, + 47.2357451 + ], + [ + -122.4362172, + 47.2359279 + ], + [ + -122.4340473, + 47.2351683 + ], + [ + -122.4332828, + 47.2330961 + ], + [ + -122.429462, + 47.2337532 + ], + [ + -122.4217152, + 47.2369881 + ], + [ + -122.4181904, + 47.2381978 + ], + [ + -122.4147242, + 47.2386994 + ], + [ + -122.404219, + 47.2394476 + ], + [ + -122.3988195, + 47.2406945 + ], + [ + -122.3967334, + 47.2412368 + ], + [ + -122.3953554, + 47.240992 + ], + [ + -122.3937978, + 47.241166 + ], + [ + -122.3910376, + 47.2410723 + ], + [ + -122.3900518, + 47.2409652 + ], + [ + -122.3889477, + 47.2404164 + ], + [ + -122.3887899, + 47.2391313 + ], + [ + -122.3817251, + 47.2390091 + ], + [ + -122.3817062, + 47.2385338 + ], + [ + -122.367299, + 47.2344269 + ], + [ + -122.3674162, + 47.2327012 + ], + [ + -122.2939455, + 47.2124668 + ], + [ + -122.2939427, + 47.2146171 + ], + [ + -122.2943305, + 47.2152318 + ], + [ + -122.295379, + 47.2157586 + ], + [ + -122.2980362, + 47.2169976 + ], + [ + -122.298266, + 47.2173098 + ], + [ + -122.2981798, + 47.2177781 + ], + [ + -122.2975737, + 47.2187822 + ], + [ + -122.2975585, + 47.2190402 + ], + [ + -122.2974218, + 47.2199483 + ], + [ + -122.2967319, + 47.22078 + ], + [ + -122.2959561, + 47.2211975 + ], + [ + -122.2946242, + 47.2211378 + ], + [ + -122.2938924, + 47.2211478 + ], + [ + -122.2932044, + 47.221774 + ], + [ + -122.2933215, + 47.2223506 + ], + [ + -122.2939372, + 47.2241607 + ], + [ + -122.2939478, + 47.2248672 + ], + [ + -122.2938319, + 47.2500394 + ], + [ + -122.2937761, + 47.2509273 + ], + [ + -122.2934144, + 47.2510307 + ], + [ + -122.2916441, + 47.2527944 + ], + [ + -122.2921605, + 47.2530502 + ], + [ + -122.2924555, + 47.2530696 + ], + [ + -122.2958153, + 47.2530502 + ], + [ + -122.296158, + 47.2529146 + ], + [ + -122.296415, + 47.2526755 + ], + [ + -122.2964245, + 47.2523137 + ], + [ + -122.2964163, + 47.250042 + ], + [ + -122.3147016, + 47.2501777 + ], + [ + -122.3148237, + 47.2484178 + ], + [ + -122.3218806, + 47.2463195 + ], + [ + -122.3221419, + 47.246147 + ], + [ + -122.322281, + 47.2458963 + ], + [ + -122.3224469, + 47.2451079 + ], + [ + -122.3225379, + 47.2448645 + ], + [ + -122.3229179, + 47.2445302 + ], + [ + -122.3239772, + 47.2438444 + ], + [ + -122.3245416, + 47.2433251 + ], + [ + -122.3265885, + 47.2409657 + ], + [ + -122.3272811, + 47.2398087 + ], + [ + -122.3274328, + 47.2393527 + ], + [ + -122.3275736, + 47.2390437 + ], + [ + -122.33634, + 47.2390234 + ], + [ + -122.3363954, + 47.2404509 + ], + [ + -122.336626, + 47.2411815 + ], + [ + -122.3369488, + 47.241505 + ], + [ + -122.3389474, + 47.2423922 + ], + [ + -122.3399159, + 47.2425279 + ], + [ + -122.3407153, + 47.2429453 + ], + [ + -122.3383881, + 47.2438435 + ], + [ + -122.3365004, + 47.2450645 + ], + [ + -122.3354145, + 47.2464466 + ], + [ + -122.3417165, + 47.2464861 + ], + [ + -122.3451078, + 47.2481362 + ], + [ + -122.3467589, + 47.2518415 + ], + [ + -122.3506661, + 47.2563137 + ], + [ + -122.3516569, + 47.2596703 + ], + [ + -122.3503998, + 47.2615568 + ], + [ + -122.350684, + 47.2629028 + ], + [ + -122.3563694, + 47.2645066 + ], + [ + -122.3590378, + 47.2667388 + ], + [ + -122.3577624, + 47.2685153 + ], + [ + -122.3592392, + 47.2690619 + ], + [ + -122.3592392, + 47.2690619 + ], + [ + -122.3616111, + 47.2683127 + ], + [ + -122.3677256, + 47.2704631 + ], + [ + -122.366976, + 47.2719275 + ], + [ + -122.366766, + 47.2751527 + ], + [ + -122.3684431, + 47.2752022 + ], + [ + -122.3708373, + 47.2722254 + ], + [ + -122.3715028, + 47.2718706 + ], + [ + -122.3724521, + 47.2718954 + ], + [ + -122.3744056, + 47.2724032 + ], + [ + -122.376925, + 47.2736791 + ], + [ + -122.3785681, + 47.2749674 + ], + [ + -122.3821652, + 47.2779724 + ], + [ + -122.3847558, + 47.2806162 + ], + [ + -122.3860846, + 47.2826062 + ], + [ + -122.3945063, + 47.2823967 + ], + [ + -122.3990007, + 47.2824905 + ], + [ + -122.4023656, + 47.2838446 + ], + [ + -122.4044733, + 47.2860336 + ], + [ + -122.4068384, + 47.2888569 + ], + [ + -122.4096845, + 47.2926081 + ], + [ + -122.4129774, + 47.295555 + ], + [ + -122.4176842, + 47.2976369 + ], + [ + -122.4246947, + 47.2991319 + ], + [ + -122.4268998, + 47.299045 + ], + [ + -122.4292985, + 47.2985992 + ], + [ + -122.4316918, + 47.2977507 + ], + [ + -122.4316533, + 47.2968946 + ], + [ + -122.4138206, + 47.2864651 + ], + [ + -122.4161371, + 47.2845786 + ], + [ + -122.4169677, + 47.2796012 + ], + [ + -122.431683, + 47.2700429 + ], + [ + -122.4381934, + 47.2620403 + ], + [ + -122.4430122, + 47.267346 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "area_1074", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -122.44264, + 47.13243 + ], + [ + -122.44259, + 47.13337 + ], + [ + -122.44259, + 47.13439 + ], + [ + -122.4426, + 47.13543 + ], + [ + -122.4424827, + 47.1374397 + ], + [ + -122.44247, + 47.1387 + ], + [ + -122.44252, + 47.13906 + ], + [ + -122.44255, + 47.13949 + ], + [ + -122.44252, + 47.14048 + ], + [ + -122.44251, + 47.1412 + ], + [ + -122.44252, + 47.14194 + ], + [ + -122.4425, + 47.14254 + ], + [ + -122.44248, + 47.14356 + ], + [ + -122.4424386, + 47.1440708 + ], + [ + -122.44237, + 47.14524 + ], + [ + -122.44329, + 47.1455 + ], + [ + -122.44477, + 47.14586 + ], + [ + -122.44576, + 47.14601 + ], + [ + -122.44714, + 47.14603 + ], + [ + -122.44779, + 47.14607 + ], + [ + -122.44848, + 47.14608 + ], + [ + -122.44915, + 47.14609 + ], + [ + -122.44985, + 47.1461 + ], + [ + -122.45035, + 47.14623 + ], + [ + -122.45287, + 47.1463 + ], + [ + -122.45558, + 47.14634 + ], + [ + -122.46053, + 47.14638 + ], + [ + -122.46038, + 47.14551 + ], + [ + -122.46016, + 47.14493 + ], + [ + -122.45965, + 47.14398 + ], + [ + -122.45922, + 47.14239 + ], + [ + -122.4591, + 47.1389 + ], + [ + -122.45906, + 47.13814 + ], + [ + -122.45896, + 47.13541 + ], + [ + -122.45889, + 47.13334 + ], + [ + -122.45884, + 47.13159 + ], + [ + -122.45874, + 47.12934 + ], + [ + -122.45855, + 47.12413 + ], + [ + -122.45774, + 47.12387 + ], + [ + -122.45447, + 47.12304 + ], + [ + -122.452, + 47.12255 + ], + [ + -122.45067, + 47.1225 + ], + [ + -122.44923, + 47.12247 + ], + [ + -122.44816, + 47.12242 + ], + [ + -122.44596, + 47.12233 + ], + [ + -122.44403, + 47.12212 + ], + [ + -122.44276, + 47.12622 + ], + [ + -122.44278, + 47.12628 + ], + [ + -122.4427475, + 47.1271211 + ], + [ + -122.4427, + 47.12835 + ], + [ + -122.44269, + 47.12938 + ], + [ + -122.4441655, + 47.1293856 + ], + [ + -122.4442087, + 47.1304317 + ], + [ + -122.4453, + 47.13044 + ], + [ + -122.4453, + 47.13144 + ], + [ + -122.44265, + 47.13142 + ], + [ + -122.44264, + 47.13243 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "area_1075", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -122.4263292, + 47.184988 + ], + [ + -122.4257652, + 47.1809407 + ], + [ + -122.4234242, + 47.1810939 + ], + [ + -122.4307507, + 47.1750868 + ], + [ + -122.4236938, + 47.1698907 + ], + [ + -122.4253152, + 47.1636929 + ], + [ + -122.4196181, + 47.1589882 + ], + [ + -122.4091027, + 47.158996 + ], + [ + -122.3965814, + 47.1590042 + ], + [ + -122.3915931, + 47.1588341 + ], + [ + -122.380688, + 47.158893 + ], + [ + -122.3690105, + 47.1593204 + ], + [ + -122.3547003, + 47.1588259 + ], + [ + -122.3476657, + 47.1581112 + ], + [ + -122.3414736, + 47.1581866 + ], + [ + -122.3349715, + 47.1584607 + ], + [ + -122.3280845, + 47.1587227 + ], + [ + -122.3283358, + 47.1698719 + ], + [ + -122.3282359, + 47.1719801 + ], + [ + -122.3281325, + 47.172415 + ], + [ + -122.3275802, + 47.1729834 + ], + [ + -122.3264875, + 47.1737181 + ], + [ + -122.3257612, + 47.1743327 + ], + [ + -122.3255189, + 47.1750029 + ], + [ + -122.3255091, + 47.1755598 + ], + [ + -122.3258309, + 47.1769161 + ], + [ + -122.3264009, + 47.1778436 + ], + [ + -122.3271042, + 47.1788231 + ], + [ + -122.3274597, + 47.1797736 + ], + [ + -122.3270549, + 47.1813482 + ], + [ + -122.3269869, + 47.1824083 + ], + [ + -122.3269968, + 47.1843376 + ], + [ + -122.3572423, + 47.184528 + ], + [ + -122.3935499, + 47.1843941 + ], + [ + -122.4263292, + 47.184988 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "area_1076", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -122.4168, + 47.15039 + ], + [ + -122.42079, + 47.15146 + ], + [ + -122.425626, + 47.1503084 + ], + [ + -122.4266415, + 47.1484584 + ], + [ + -122.4266853, + 47.1474483 + ], + [ + -122.4269521, + 47.1383568 + ], + [ + -122.42718, + 47.13142 + ], + [ + -122.42735, + 47.12425 + ], + [ + -122.4276116, + 47.1205996 + ], + [ + -122.425453, + 47.1189598 + ], + [ + -122.4254549, + 47.115886 + ], + [ + -122.42914, + 47.11594 + ], + [ + -122.42957, + 47.11541 + ], + [ + -122.42627, + 47.11228 + ], + [ + -122.4262999, + 47.1118325 + ], + [ + -122.4263813, + 47.1037645 + ], + [ + -122.4264917, + 47.0951562 + ], + [ + -122.42868, + 47.09508 + ], + [ + -122.42853, + 47.09437 + ], + [ + -122.42841, + 47.0939 + ], + [ + -122.42821, + 47.09125 + ], + [ + -122.42797, + 47.08262 + ], + [ + -122.42155, + 47.08252 + ], + [ + -122.42158, + 47.07889 + ], + [ + -122.4215668, + 47.0740074 + ], + [ + -122.4216527, + 47.0738172 + ], + [ + -122.421705, + 47.0737412 + ], + [ + -122.4198017, + 47.0722827 + ], + [ + -122.4149622, + 47.0686564 + ], + [ + -122.413706, + 47.0678632 + ], + [ + -122.4134558, + 47.0680427 + ], + [ + -122.413034, + 47.0680371 + ], + [ + -122.4125686, + 47.0679074 + ], + [ + -122.40559, + 47.068 + ], + [ + -122.40038, + 47.068 + ], + [ + -122.40031, + 47.08228 + ], + [ + -122.40014, + 47.09688 + ], + [ + -122.40982, + 47.097 + ], + [ + -122.40966, + 47.10423 + ], + [ + -122.40004, + 47.10414 + ], + [ + -122.39996, + 47.10884 + ], + [ + -122.4004777, + 47.1089617 + ], + [ + -122.40478, + 47.11136 + ], + [ + -122.4058517, + 47.1114479 + ], + [ + -122.40723, + 47.11143 + ], + [ + -122.4072, + 47.11275 + ], + [ + -122.40722, + 47.11469 + ], + [ + -122.40791, + 47.1147 + ], + [ + -122.40787, + 47.11587 + ], + [ + -122.40745, + 47.11628 + ], + [ + -122.40721, + 47.11662 + ], + [ + -122.40716, + 47.11875 + ], + [ + -122.38926, + 47.11856 + ], + [ + -122.37872, + 47.11848 + ], + [ + -122.37886, + 47.12021 + ], + [ + -122.38085, + 47.12236 + ], + [ + -122.38171, + 47.12328 + ], + [ + -122.3856493, + 47.1258103 + ], + [ + -122.3892038, + 47.1258185 + ], + [ + -122.38932, + 47.12757 + ], + [ + -122.3933356, + 47.1285837 + ], + [ + -122.39626, + 47.12928 + ], + [ + -122.39735, + 47.12961 + ], + [ + -122.39803, + 47.12996 + ], + [ + -122.39943, + 47.13071 + ], + [ + -122.40146, + 47.13186 + ], + [ + -122.40214, + 47.13221 + ], + [ + -122.40597, + 47.13346 + ], + [ + -122.40931, + 47.13448 + ], + [ + -122.41038, + 47.13466 + ], + [ + -122.40994, + 47.14743 + ], + [ + -122.41556, + 47.14736 + ], + [ + -122.4165866, + 47.1473439 + ], + [ + -122.4168, + 47.15039 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "area_1077", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -122.4590509, + 47.1378921 + ], + [ + -122.4638115, + 47.1379219 + ], + [ + -122.4638009, + 47.1389431 + ], + [ + -122.467892, + 47.1389892 + ], + [ + -122.4680003, + 47.1413616 + ], + [ + -122.4691678, + 47.1413977 + ], + [ + -122.4691373, + 47.1426439 + ], + [ + -122.4694249, + 47.1426497 + ], + [ + -122.4693806, + 47.1443482 + ], + [ + -122.4679968, + 47.1443438 + ], + [ + -122.4679684, + 47.1462829 + ], + [ + -122.4676453, + 47.1462814 + ], + [ + -122.4674371, + 47.1492094 + ], + [ + -122.4681537, + 47.1491815 + ], + [ + -122.468178, + 47.1504206 + ], + [ + -122.4680782, + 47.1541716 + ], + [ + -122.4729449, + 47.1541437 + ], + [ + -122.4728702, + 47.1558394 + ], + [ + -122.472868, + 47.1559393 + ], + [ + -122.4728304, + 47.1559395 + ], + [ + -122.472697, + 47.1587698 + ], + [ + -122.4726937, + 47.15877 + ], + [ + -122.4716, + 47.158861 + ], + [ + -122.4715787, + 47.1589023 + ], + [ + -122.4715594, + 47.1589222 + ], + [ + -122.4714757, + 47.1589643 + ], + [ + -122.4714284, + 47.1589726 + ], + [ + -122.4724351, + 47.1588895 + ], + [ + -122.4724787, + 47.1588926 + ], + [ + -122.4725222, + 47.1589123 + ], + [ + -122.4725454, + 47.1589441 + ], + [ + -122.4725468, + 47.1589856 + ], + [ + -122.4725379, + 47.1593851 + ], + [ + -122.4713684, + 47.1596756 + ], + [ + -122.4713349, + 47.1597863 + ], + [ + -122.4726553, + 47.159785 + ], + [ + -122.4726395, + 47.1602873 + ], + [ + -122.4726713, + 47.160287 + ], + [ + -122.4740906, + 47.1602765 + ], + [ + -122.4741092, + 47.1594889 + ], + [ + -122.4746552, + 47.1594946 + ], + [ + -122.4746565, + 47.159416 + ], + [ + -122.4800016, + 47.1594551 + ], + [ + -122.4800058, + 47.1558976 + ], + [ + -122.4889213, + 47.1558323 + ], + [ + -122.4838052, + 47.1611244 + ], + [ + -122.4836227, + 47.1610769 + ], + [ + -122.472979, + 47.1702047 + ], + [ + -122.4433102, + 47.1701574 + ], + [ + -122.423999, + 47.1701155 + ], + [ + -122.4236938, + 47.1698907 + ], + [ + -122.4253152, + 47.1636929 + ], + [ + -122.4196181, + 47.1589882 + ], + [ + -122.4091027, + 47.158996 + ], + [ + -122.3965814, + 47.1590042 + ], + [ + -122.3915931, + 47.1588341 + ], + [ + -122.380688, + 47.158893 + ], + [ + -122.3690105, + 47.1593204 + ], + [ + -122.3547003, + 47.1588259 + ], + [ + -122.3476657, + 47.1581112 + ], + [ + -122.3414736, + 47.1581866 + ], + [ + -122.3349715, + 47.1584607 + ], + [ + -122.3280845, + 47.1587227 + ], + [ + -122.3283358, + 47.1698719 + ], + [ + -122.3282359, + 47.1719801 + ], + [ + -122.3281325, + 47.172415 + ], + [ + -122.3275802, + 47.1729834 + ], + [ + -122.3264875, + 47.1737181 + ], + [ + -122.3257612, + 47.1743327 + ], + [ + -122.3255189, + 47.1750029 + ], + [ + -122.3255091, + 47.1755598 + ], + [ + -122.3258309, + 47.1769161 + ], + [ + -122.3264009, + 47.1778436 + ], + [ + -122.3271042, + 47.1788231 + ], + [ + -122.3274597, + 47.1797736 + ], + [ + -122.3270549, + 47.1813482 + ], + [ + -122.3269869, + 47.1824083 + ], + [ + -122.3269968, + 47.1843376 + ], + [ + -122.3572423, + 47.184528 + ], + [ + -122.3935499, + 47.1843941 + ], + [ + -122.4263292, + 47.184988 + ], + [ + -122.4263292, + 47.2139397 + ], + [ + -122.3570309, + 47.2134796 + ], + [ + -122.3568584, + 47.2134784 + ], + [ + -122.3265964, + 47.213288 + ], + [ + -122.3248434, + 47.2132521 + ], + [ + -122.3230942, + 47.2131669 + ], + [ + -122.3213516, + 47.2130325 + ], + [ + -122.3196186, + 47.2128492 + ], + [ + -122.3178005, + 47.2126027 + ], + [ + -122.3159999, + 47.2123023 + ], + [ + -122.3142203, + 47.2119486 + ], + [ + -122.312465, + 47.2115424 + ], + [ + -122.3107375, + 47.2110843 + ], + [ + -122.3090409, + 47.2105753 + ], + [ + -122.3073786, + 47.2100164 + ], + [ + -122.3057536, + 47.2094085 + ], + [ + -122.3041692, + 47.208753 + ], + [ + -122.3026282, + 47.2080509 + ], + [ + -122.3011338, + 47.2073036 + ], + [ + -122.2996886, + 47.2065126 + ], + [ + -122.2982954, + 47.2056795 + ], + [ + -122.296957, + 47.2048056 + ], + [ + -122.2956758, + 47.2038928 + ], + [ + -122.2944543, + 47.2029428 + ], + [ + -122.2932948, + 47.2019573 + ], + [ + -122.2921996, + 47.2009384 + ], + [ + -122.2911706, + 47.1998878 + ], + [ + -122.2902099, + 47.1988076 + ], + [ + -122.2893192, + 47.1976998 + ], + [ + -122.2885004, + 47.1965667 + ], + [ + -122.2877548, + 47.1954102 + ], + [ + -122.2870841, + 47.1942327 + ], + [ + -122.2864893, + 47.1930364 + ], + [ + -122.2859717, + 47.1918235 + ], + [ + -122.2855322, + 47.1905964 + ], + [ + -122.2851717, + 47.1893574 + ], + [ + -122.2848956, + 47.188134 + ], + [ + -122.2846965, + 47.1869036 + ], + [ + -122.2845748, + 47.1856685 + ], + [ + -122.2845306, + 47.1844311 + ], + [ + -122.2845271, + 47.1836076 + ], + [ + -122.2843721, + 47.1831749 + ], + [ + -122.2840116, + 47.1819359 + ], + [ + -122.2839121, + 47.1815332 + ], + [ + -122.2835913, + 47.1801768 + ], + [ + -122.2833539, + 47.1790271 + ], + [ + -122.2831844, + 47.1778718 + ], + [ + -122.2830829, + 47.1767128 + ], + [ + -122.2830497, + 47.175552 + ], + [ + -122.2830531, + 47.175204 + ], + [ + -122.2830633, + 47.174647 + ], + [ + -122.28312, + 47.1734715 + ], + [ + -122.2832467, + 47.1722985 + ], + [ + -122.2834431, + 47.1711299 + ], + [ + -122.283709, + 47.1699678 + ], + [ + -122.2839809, + 47.169013 + ], + [ + -122.2842998, + 47.168065 + ], + [ + -122.2845426, + 47.167395 + ], + [ + -122.2848307, + 47.1666433 + ], + [ + -122.2851482, + 47.1658972 + ], + [ + -122.285495, + 47.1651571 + ], + [ + -122.2857623, + 47.1646354 + ], + [ + -122.2856433, + 47.1591597 + ], + [ + -122.2856386, + 47.1587148 + ], + [ + -122.28568, + 47.157452 + ], + [ + -122.2858021, + 47.1561916 + ], + [ + -122.2860047, + 47.154936 + ], + [ + -122.2862874, + 47.1536876 + ], + [ + -122.2866496, + 47.1524489 + ], + [ + -122.2870907, + 47.1512221 + ], + [ + -122.2876098, + 47.1500096 + ], + [ + -122.2882058, + 47.1488136 + ], + [ + -122.2888778, + 47.1476366 + ], + [ + -122.2896243, + 47.1464806 + ], + [ + -122.290444, + 47.145348 + ], + [ + -122.2913353, + 47.1442409 + ], + [ + -122.2922965, + 47.1431613 + ], + [ + -122.2933257, + 47.1421113 + ], + [ + -122.2944211, + 47.1410929 + ], + [ + -122.2955804, + 47.1401082 + ], + [ + -122.2968016, + 47.1391588 + ], + [ + -122.2980823, + 47.1382467 + ], + [ + -122.29942, + 47.1373735 + ], + [ + -122.3008122, + 47.136541 + ], + [ + -122.3022562, + 47.1357507 + ], + [ + -122.3037494, + 47.1350041 + ], + [ + -122.3052888, + 47.1343026 + ], + [ + -122.3068716, + 47.1336476 + ], + [ + -122.3084946, + 47.1330403 + ], + [ + -122.3101549, + 47.1324819 + ], + [ + -122.3118493, + 47.1319734 + ], + [ + -122.3135746, + 47.1315159 + ], + [ + -122.3153274, + 47.13111 + ], + [ + -122.3171045, + 47.1307567 + ], + [ + -122.3189024, + 47.1304567 + ], + [ + -122.3207178, + 47.1302104 + ], + [ + -122.3219625, + 47.1300736 + ], + [ + -122.3232125, + 47.1299622 + ], + [ + -122.3244668, + 47.1298762 + ], + [ + -122.3257243, + 47.1298156 + ], + [ + -122.3324816, + 47.1295585 + ], + [ + -122.3385958, + 47.1293007 + ], + [ + -122.3384012, + 47.1289089 + ], + [ + -122.3378842, + 47.127696 + ], + [ + -122.3374453, + 47.1264689 + ], + [ + -122.3370852, + 47.1252299 + ], + [ + -122.3368847, + 47.1243769 + ], + [ + -122.3367216, + 47.1235203 + ], + [ + -122.336596, + 47.1226608 + ], + [ + -122.336508, + 47.1217991 + ], + [ + -122.3363694, + 47.120069 + ], + [ + -122.3363216, + 47.1192709 + ], + [ + -122.3363061, + 47.1184721 + ], + [ + -122.3363475, + 47.1172093 + ], + [ + -122.3364695, + 47.1159489 + ], + [ + -122.3366719, + 47.1146933 + ], + [ + -122.3369544, + 47.1134449 + ], + [ + -122.3373163, + 47.1122061 + ], + [ + -122.3377571, + 47.1109793 + ], + [ + -122.3382757, + 47.1097668 + ], + [ + -122.3388714, + 47.1085709 + ], + [ + -122.3395428, + 47.1073938 + ], + [ + -122.3402888, + 47.1062379 + ], + [ + -122.3411078, + 47.1051052 + ], + [ + -122.3419984, + 47.1039981 + ], + [ + -122.3429589, + 47.1029185 + ], + [ + -122.3439874, + 47.1018685 + ], + [ + -122.3450819, + 47.1008501 + ], + [ + -122.3462404, + 47.0998653 + ], + [ + -122.3474606, + 47.098916 + ], + [ + -122.3487403, + 47.0980038 + ], + [ + -122.350077, + 47.0971307 + ], + [ + -122.3514682, + 47.0962981 + ], + [ + -122.3529112, + 47.0955078 + ], + [ + -122.3544032, + 47.0947612 + ], + [ + -122.3559414, + 47.0940597 + ], + [ + -122.357523, + 47.0934047 + ], + [ + -122.3577863, + 47.0933062 + ], + [ + -122.3579255, + 47.0821086 + ], + [ + -122.3580065, + 47.0678952 + ], + [ + -122.3580523, + 47.0666567 + ], + [ + -122.3581757, + 47.0654206 + ], + [ + -122.3583763, + 47.0641892 + ], + [ + -122.3586538, + 47.0629649 + ], + [ + -122.3590154, + 47.0617261 + ], + [ + -122.3594557, + 47.0604993 + ], + [ + -122.3599739, + 47.0592867 + ], + [ + -122.360569, + 47.0580908 + ], + [ + -122.3612398, + 47.0569137 + ], + [ + -122.361985, + 47.0557578 + ], + [ + -122.3628033, + 47.0546251 + ], + [ + -122.3636931, + 47.0535179 + ], + [ + -122.3646527, + 47.0524383 + ], + [ + -122.3656802, + 47.0513883 + ], + [ + -122.3667736, + 47.05037 + ], + [ + -122.367931, + 47.0493852 + ], + [ + -122.3691501, + 47.0484358 + ], + [ + -122.3704286, + 47.0475236 + ], + [ + -122.3717641, + 47.0466505 + ], + [ + -122.3731539, + 47.0458179 + ], + [ + -122.3745955, + 47.0450276 + ], + [ + -122.3760861, + 47.044281 + ], + [ + -122.3776229, + 47.0435795 + ], + [ + -122.379203, + 47.0429245 + ], + [ + -122.3808233, + 47.0423172 + ], + [ + -122.3824808, + 47.0417588 + ], + [ + -122.3841723, + 47.0412503 + ], + [ + -122.3858947, + 47.0407927 + ], + [ + -122.3862288, + 47.0407152 + ], + [ + -122.3884671, + 47.0434408 + ], + [ + -122.3889249, + 47.0439372 + ], + [ + -122.3898338, + 47.0449229 + ], + [ + -122.3981849, + 47.053292 + ], + [ + -122.3982176, + 47.0533248 + ], + [ + -122.4002901, + 47.0533347 + ], + [ + -122.4003635, + 47.0533351 + ], + [ + -122.40039, + 47.0551389 + ], + [ + -122.4003905, + 47.0551709 + ], + [ + -122.4056738, + 47.0551933 + ], + [ + -122.4056757, + 47.0605883 + ], + [ + -122.4057707, + 47.0606798 + ], + [ + -122.4110411, + 47.0606814 + ], + [ + -122.4110342, + 47.063265 + ], + [ + -122.411034, + 47.0633349 + ], + [ + -122.4111421, + 47.0633201 + ], + [ + -122.4111609, + 47.0635937 + ], + [ + -122.4111154, + 47.0635999 + ], + [ + -122.411081, + 47.0655334 + ], + [ + -122.4139229, + 47.0677978 + ], + [ + -122.4137743, + 47.0679063 + ], + [ + -122.413706, + 47.0678632 + ], + [ + -122.4134558, + 47.0680427 + ], + [ + -122.413034, + 47.0680371 + ], + [ + -122.4125686, + 47.0679074 + ], + [ + -122.40559, + 47.068 + ], + [ + -122.40038, + 47.068 + ], + [ + -122.40031, + 47.08228 + ], + [ + -122.40014, + 47.09688 + ], + [ + -122.40982, + 47.097 + ], + [ + -122.40966, + 47.10423 + ], + [ + -122.40004, + 47.10414 + ], + [ + -122.39996, + 47.10884 + ], + [ + -122.4004777, + 47.1089617 + ], + [ + -122.40478, + 47.11136 + ], + [ + -122.4058517, + 47.1114479 + ], + [ + -122.40723, + 47.11143 + ], + [ + -122.4072, + 47.11275 + ], + [ + -122.40722, + 47.11469 + ], + [ + -122.40791, + 47.1147 + ], + [ + -122.40787, + 47.11587 + ], + [ + -122.40745, + 47.11628 + ], + [ + -122.40721, + 47.11662 + ], + [ + -122.40716, + 47.11875 + ], + [ + -122.38926, + 47.11856 + ], + [ + -122.37872, + 47.11848 + ], + [ + -122.37886, + 47.12021 + ], + [ + -122.38085, + 47.12236 + ], + [ + -122.38171, + 47.12328 + ], + [ + -122.3856493, + 47.1258103 + ], + [ + -122.3892038, + 47.1258185 + ], + [ + -122.38932, + 47.12757 + ], + [ + -122.3933356, + 47.1285837 + ], + [ + -122.39626, + 47.12928 + ], + [ + -122.39735, + 47.12961 + ], + [ + -122.39803, + 47.12996 + ], + [ + -122.39943, + 47.13071 + ], + [ + -122.40146, + 47.13186 + ], + [ + -122.40214, + 47.13221 + ], + [ + -122.40597, + 47.13346 + ], + [ + -122.40931, + 47.13448 + ], + [ + -122.41038, + 47.13466 + ], + [ + -122.40994, + 47.14743 + ], + [ + -122.41556, + 47.14736 + ], + [ + -122.4165866, + 47.1473439 + ], + [ + -122.4168, + 47.15039 + ], + [ + -122.42079, + 47.15146 + ], + [ + -122.425626, + 47.1503084 + ], + [ + -122.4266415, + 47.1484584 + ], + [ + -122.4266853, + 47.1474483 + ], + [ + -122.4269521, + 47.1383568 + ], + [ + -122.42718, + 47.13142 + ], + [ + -122.42735, + 47.12425 + ], + [ + -122.4276116, + 47.1205996 + ], + [ + -122.425453, + 47.1189598 + ], + [ + -122.4254549, + 47.115886 + ], + [ + -122.42914, + 47.11594 + ], + [ + -122.42957, + 47.11541 + ], + [ + -122.42627, + 47.11228 + ], + [ + -122.4262999, + 47.1118325 + ], + [ + -122.4263813, + 47.1037645 + ], + [ + -122.4264917, + 47.0951562 + ], + [ + -122.42868, + 47.09508 + ], + [ + -122.42853, + 47.09437 + ], + [ + -122.42841, + 47.0939 + ], + [ + -122.42821, + 47.09125 + ], + [ + -122.42797, + 47.08262 + ], + [ + -122.42155, + 47.08252 + ], + [ + -122.42158, + 47.07889 + ], + [ + -122.4215668, + 47.0740074 + ], + [ + -122.4216527, + 47.0738172 + ], + [ + -122.421705, + 47.0737412 + ], + [ + -122.4198017, + 47.0722827 + ], + [ + -122.4149622, + 47.0686564 + ], + [ + -122.4138741, + 47.0679693 + ], + [ + -122.4140136, + 47.0678702 + ], + [ + -122.4141171, + 47.0679526 + ], + [ + -122.4215546, + 47.0679299 + ], + [ + -122.4215553, + 47.0678461 + ], + [ + -122.428273, + 47.067935 + ], + [ + -122.4327341, + 47.0680053 + ], + [ + -122.4323595, + 47.0790174 + ], + [ + -122.4324382, + 47.0790189 + ], + [ + -122.4336362, + 47.0790416 + ], + [ + -122.4336243, + 47.0794015 + ], + [ + -122.4335457, + 47.0817688 + ], + [ + -122.4335245, + 47.0824063 + ], + [ + -122.4336052, + 47.0823959 + ], + [ + -122.4336416, + 47.0823566 + ], + [ + -122.4336972, + 47.0823247 + ], + [ + -122.4337627, + 47.0822539 + ], + [ + -122.4340588, + 47.0821818 + ], + [ + -122.4341609, + 47.0821826 + ], + [ + -122.4344676, + 47.0821956 + ], + [ + -122.4349558, + 47.0822106 + ], + [ + -122.435606, + 47.0822512 + ], + [ + -122.4359857, + 47.0823401 + ], + [ + -122.4356221, + 47.0831069 + ], + [ + -122.4356047, + 47.083144 + ], + [ + -122.4355879, + 47.0831813 + ], + [ + -122.4355719, + 47.0832181 + ], + [ + -122.4355561, + 47.0832555 + ], + [ + -122.4355411, + 47.0832925 + ], + [ + -122.4355264, + 47.0833301 + ], + [ + -122.4355125, + 47.0833673 + ], + [ + -122.4354988, + 47.0834051 + ], + [ + -122.4354859, + 47.0834425 + ], + [ + -122.4354733, + 47.0834805 + ], + [ + -122.4354614, + 47.083518 + ], + [ + -122.4354498, + 47.0835562 + ], + [ + -122.435439, + 47.0835938 + ], + [ + -122.4354285, + 47.0836321 + ], + [ + -122.4354187, + 47.0836699 + ], + [ + -122.4354093, + 47.0837083 + ], + [ + -122.4354006, + 47.0837462 + ], + [ + -122.4353923, + 47.0837848 + ], + [ + -122.4353846, + 47.0838228 + ], + [ + -122.4353773, + 47.0838614 + ], + [ + -122.4353707, + 47.0838995 + ], + [ + -122.4353645, + 47.0839383 + ], + [ + -122.435359, + 47.0839764 + ], + [ + -122.4353539, + 47.0840153 + ], + [ + -122.4353494, + 47.0840535 + ], + [ + -122.4353454, + 47.0840924 + ], + [ + -122.435342, + 47.0841307 + ], + [ + -122.435339, + 47.0841696 + ], + [ + -122.4353367, + 47.0842079 + ], + [ + -122.4353348, + 47.0842469 + ], + [ + -122.4353335, + 47.0842852 + ], + [ + -122.4353328, + 47.0843242 + ], + [ + -122.4353304, + 47.0845124 + ], + [ + -122.4364943, + 47.0845288 + ], + [ + -122.4364838, + 47.085365 + ], + [ + -122.4358417, + 47.0853559 + ], + [ + -122.4353199, + 47.0853491 + ], + [ + -122.4351712, + 47.0972119 + ], + [ + -122.4427843, + 47.0972931 + ], + [ + -122.453359, + 47.0974034 + ], + [ + -122.4533585, + 47.0974682 + ], + [ + -122.4533584, + 47.0974836 + ], + [ + -122.4534102, + 47.0974845 + ], + [ + -122.4557409, + 47.097525 + ], + [ + -122.456925, + 47.0975455 + ], + [ + -122.4570231, + 47.097546 + ], + [ + -122.4571263, + 47.097549 + ], + [ + -122.4573084, + 47.0978121 + ], + [ + -122.4574322, + 47.0979662 + ], + [ + -122.4575477, + 47.0981042 + ], + [ + -122.4577908, + 47.0982832 + ], + [ + -122.4579482, + 47.0983829 + ], + [ + -122.4582564, + 47.0985096 + ], + [ + -122.4584835, + 47.098573 + ], + [ + -122.4586519, + 47.0986048 + ], + [ + -122.4590334, + 47.0987333 + ], + [ + -122.4593969, + 47.0988762 + ], + [ + -122.4595655, + 47.0989424 + ], + [ + -122.460369, + 47.0992438 + ], + [ + -122.4608405, + 47.0994135 + ], + [ + -122.4609053, + 47.099438 + ], + [ + -122.4610044, + 47.0994754 + ], + [ + -122.4611369, + 47.0995404 + ], + [ + -122.4612964, + 47.0995889 + ], + [ + -122.461631, + 47.0996801 + ], + [ + -122.4619738, + 47.099782 + ], + [ + -122.4625264, + 47.0999046 + ], + [ + -122.4639498, + 47.1003271 + ], + [ + -122.4639196, + 47.1259857 + ], + [ + -122.4673213, + 47.1268024 + ], + [ + -122.4689019, + 47.1268008 + ], + [ + -122.4690796, + 47.1269906 + ], + [ + -122.4690816, + 47.1273193 + ], + [ + -122.4690304, + 47.132187 + ], + [ + -122.4655989, + 47.1322521 + ], + [ + -122.4655786, + 47.1361709 + ], + [ + -122.4638298, + 47.1361537 + ], + [ + -122.4638119, + 47.1378866 + ], + [ + -122.4590505, + 47.1378819 + ], + [ + -122.45896, + 47.13541 + ], + [ + -122.45889, + 47.13334 + ], + [ + -122.45884, + 47.13159 + ], + [ + -122.45874, + 47.12934 + ], + [ + -122.45855, + 47.12413 + ], + [ + -122.45774, + 47.12387 + ], + [ + -122.45447, + 47.12304 + ], + [ + -122.452, + 47.12255 + ], + [ + -122.45067, + 47.1225 + ], + [ + -122.44923, + 47.12247 + ], + [ + -122.44816, + 47.12242 + ], + [ + -122.44596, + 47.12233 + ], + [ + -122.44403, + 47.12212 + ], + [ + -122.44276, + 47.12622 + ], + [ + -122.44278, + 47.12628 + ], + [ + -122.4427475, + 47.1271211 + ], + [ + -122.4427, + 47.12835 + ], + [ + -122.44269, + 47.12938 + ], + [ + -122.4441655, + 47.1293856 + ], + [ + -122.4442087, + 47.1304317 + ], + [ + -122.4453, + 47.13044 + ], + [ + -122.4453, + 47.13144 + ], + [ + -122.44265, + 47.13142 + ], + [ + -122.44264, + 47.13243 + ], + [ + -122.44259, + 47.13337 + ], + [ + -122.44259, + 47.13439 + ], + [ + -122.4426, + 47.13543 + ], + [ + -122.4424827, + 47.1374397 + ], + [ + -122.44247, + 47.1387 + ], + [ + -122.44252, + 47.13906 + ], + [ + -122.44255, + 47.13949 + ], + [ + -122.44252, + 47.14048 + ], + [ + -122.44251, + 47.1412 + ], + [ + -122.44252, + 47.14194 + ], + [ + -122.4425, + 47.14254 + ], + [ + -122.44248, + 47.14356 + ], + [ + -122.4424386, + 47.1440708 + ], + [ + -122.44237, + 47.14524 + ], + [ + -122.44329, + 47.1455 + ], + [ + -122.44477, + 47.14586 + ], + [ + -122.44576, + 47.14601 + ], + [ + -122.44714, + 47.14603 + ], + [ + -122.44779, + 47.14607 + ], + [ + -122.44848, + 47.14608 + ], + [ + -122.44915, + 47.14609 + ], + [ + -122.44985, + 47.1461 + ], + [ + -122.45035, + 47.14623 + ], + [ + -122.45287, + 47.1463 + ], + [ + -122.45558, + 47.14634 + ], + [ + -122.46053, + 47.14638 + ], + [ + -122.46038, + 47.14551 + ], + [ + -122.46016, + 47.14493 + ], + [ + -122.45965, + 47.14398 + ], + [ + -122.45922, + 47.14239 + ], + [ + -122.4591, + 47.1389 + ], + [ + -122.45906, + 47.13814 + ], + [ + -122.4590509, + 47.1378921 + ] + ] + ] + }, + "properties": {} + } + ] +} \ No newline at end of file diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/routes.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/routes.txt new file mode 100644 index 000000000..15f733558 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/routes.txt @@ -0,0 +1,5 @@ +agency_id,route_id,route_short_name,route_long_name,route_desc,route_type,route_url,route_color,route_text_color,route_sort_order,min_headway_minutes,eligibility_restricted,continuous_pickup,continuous_drop_off,tts_route_short_name,tts_route_long_name +4971,76310,,Ruston Runner,,3,,398bc5,,0,,0,1,1,, +4971,76311,,Tideflats Runner,,3,,3b6a9d,,1,,0,1,1,, +4971,76312,,Spanaway Runner,,3,,00befd,000000,2,,0,1,1,, +4971,76313,,JBLM Runner,,3,,00befd,000000,3,,0,1,1,, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_areas.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_areas.txt new file mode 100644 index 000000000..6ed570846 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_areas.txt @@ -0,0 +1,16 @@ +area_id,stop_id +4210800,area_1074 +4210800,area_1075 +4210800,area_1076 +4210813,4210804 +4210813,4210805 +4210813,4210806 +4210813,4210807 +4210813,4210801 +4210813,4210809 +4210813,4210810 +4210813,4210811 +4210813,4210812 +4210813,4210808 +4210813,4210802 +4210813,4210803 \ No newline at end of file diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_times.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_times.txt new file mode 100644 index 000000000..78e3074ba --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_times.txt @@ -0,0 +1,15 @@ +trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_type,drop_off_type,shape_dist_traveled,timepoint,start_service_area_id,end_service_area_id,start_service_area_radius,end_service_area_radius,continuous_pickup,continuous_drop_off,pickup_booking_rule_id,drop_off_booking_rule_id,start_pickup_drop_off_window,end_pickup_drop_off_window,mean_duration_factor,mean_duration_offset,safe_duration_factor,safe_duration_offset,tts_stop_headsign,min_arrival_time,max_departure_time +t_5582575_b_80375_tn_0,,,area_1072,1,,2,1,0,0,,,,,1,1,booking_route_76310,booking_route_76310,07:00:00,22:00:00,1,5.00,1,7.00,,, +t_5582575_b_80375_tn_0,,,area_1072,2,,1,2,0,0,,,,,1,1,booking_route_76310,booking_route_76310,07:00:00,22:00:00,1,5.00,1,7.00,,, +t_5586053_b_80375_tn_0,,,area_1073,1,,2,1,0,0,,,,,1,1,booking_route_76311,booking_route_76311,07:00:00,22:00:00,1,5.00,1,10.00,,, +t_5586053_b_80375_tn_0,,,area_1073,2,,1,2,0,0,,,,,1,1,booking_route_76311,booking_route_76311,07:00:00,22:00:00,1,5.00,1,10.00,,, +t_5586054_b_80375_tn_0,,,4210800,1,,2,1,0,0,,,,,1,1,booking_route_76312,booking_route_76312,07:00:00,22:00:00,1,5.00,1,10.00,,, +t_5586054_b_80375_tn_0,,,4210800,2,,1,2,0,0,,,,,1,1,booking_route_76312,booking_route_76312,07:00:00,22:00:00,1,5.00,1,10.00,,, +t_5586055_b_80375_tn_0,,,4210800,1,,2,1,0,0,,,,,1,1,booking_route_76312,booking_route_76312,07:00:00,22:00:00,1,5.00,1,10.00,,, +t_5586055_b_80375_tn_0,,,area_1077,2,,1,2,0,0,,,,,1,1,booking_route_76312,booking_route_76312,07:00:00,22:00:00,1,5.00,1,10.00,,, +t_5586056_b_80375_tn_0,,,area_1077,1,,2,1,0,0,,,,,1,1,booking_route_76312,booking_route_76312,07:00:00,22:00:00,1,5.00,1,10.00,,, +t_5586056_b_80375_tn_0,,,4210800,2,,1,2,0,0,,,,,1,1,booking_route_76312,booking_route_76312,07:00:00,22:00:00,1,5.00,1,10.00,,, +t_5586096_b_80376_tn_0,,,4210813,1,,2,1,0,0,,,,,1,1,booking_route_76313,booking_route_76313,07:00:00,09:30:00,1,5.00,1,7.00,,, +t_5586096_b_80376_tn_0,,,4210813,2,,1,2,0,0,,,,,1,1,booking_route_76313,booking_route_76313,07:00:00,09:30:00,1,5.00,1,7.00,,, +t_5586097_b_80376_tn_0,,,4210813,1,,2,1,0,0,,,,,1,1,booking_route_76313,booking_route_76313,15:00:00,18:30:00,1,5.00,1,7.00,,, +t_5586097_b_80376_tn_0,,,4210813,2,,1,2,0,0,,,,,1,1,booking_route_76313,booking_route_76313,15:00:00,18:30:00,1,5.00,1,7.00,,, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stops.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stops.txt new file mode 100644 index 000000000..7567024ab --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stops.txt @@ -0,0 +1,19 @@ +stop_id,stop_code,platform_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,stop_url,location_type,parent_station,stop_timezone,position,direction,wheelchair_boarding,tts_stop_name +4210574,,,Ruston Way,,47.2803611075431,-122.478135960265,,,0,,America/Los_Angeles,,,0, +4210575,,,Port of Tacoma,,47.2530211408576,-122.375902952852,,,0,,America/Los_Angeles,,,0, +4210576,,,"Spanaway, WA, USA",,47.1215482031301,-122.41115802604,,,0,,America/Los_Angeles,,,0, +4210577,,,"Midland, WA, USA",,47.172908040322,-122.366108336615,,,0,,America/Los_Angeles,,,0, +4210578,,,"Parkland, WA, USA",,47.1352304417448,-122.449156667491,,,0,,America/Los_Angeles,,,0, +4210579,,,"Spanaway Buffer, WA, USA",,47.1406240812435,-122.383051288107,,,0,,America/Los_Angeles,,,0, +4210801,,,Lakewood Transit Center,,47.1651533527433,-122.513206389954,,,0,,America/Los_Angeles,,,0, +4210802,,,Lakewood Station (Bay 6),,47.1525830474275,-122.49918573403,,,0,,America/Los_Angeles,,,0, +4210803,,,Bridgeport Way & Pacific Hwy SW (Northbound),,47.1508470880185,-122.50432023215,,,0,,America/Los_Angeles,,,0, +4210804,,,Bridgeport Way & Pacific Hwy SW (Southbound),,47.1505105434807,-122.504607230921,,,0,,America/Los_Angeles,,,0, +4210805,,,Bridgeport Way & San Francisco Ave SW (Southbound),,47.1416586202339,-122.503714676304,,,0,,America/Los_Angeles,,,0, +4210806,,,Bridgeport Way & San Francisco Ave SW (Northbound),,47.1427796398538,-122.504098108707,,,0,,America/Los_Angeles,,,0, +4210807,,,Visitor Main Gate - Fairway Rd,,47.1367431155588,-122.500633149635,,,0,,America/Los_Angeles,,,0, +4210808,,,Barnes Blvd & D St SW,,47.1297618324364,-122.494075148601,,,0,,America/Los_Angeles,,,0, +4210809,,,Olympic Dining Facility - Outer Dr,,47.1282959051506,-122.491026105129,,,0,,America/Los_Angeles,,,0, +4210810,,,McChord Base Exchange (Barnes Blvd & 14th St),,47.1266199477849,-122.494126392815,,,0,,America/Los_Angeles,,,0, +4210811,,,JBLM Commissary,,47.1254155072807,-122.49638058507,,,0,,America/Los_Angeles,,,0, +4210812,,,Lincoln Blvd SW & B St SW,,47.1227158430177,-122.495208934161,,,0,,America/Los_Angeles,,,0, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/trips.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/trips.txt new file mode 100644 index 000000000..d9b74e172 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/trips.txt @@ -0,0 +1,8 @@ +route_id,service_id,trip_id,trip_short_name,trip_headsign,direction_id,block_id,shape_id,bikes_allowed,wheelchair_accessible,trip_type,drt_max_travel_time,drt_avg_travel_time,drt_advance_book_min,drt_pickup_message,drt_drop_off_message,continuous_pickup_message,continuous_drop_off_message,tts_trip_headsign,tts_trip_short_name +76310,c_69335_b_80375_d_127,t_5582575_b_80375_tn_0,,,0,,,,,,,,,,,,,, +76311,c_69335_b_80375_d_127,t_5586053_b_80375_tn_0,,,0,,,,,,,,,,,,,, +76312,c_69335_b_80375_d_127,t_5586054_b_80375_tn_0,,,0,,,,,,,,,,,,,, +76312,c_69335_b_80375_d_127,t_5586055_b_80375_tn_0,,,0,,,,,,,,,,,,,, +76312,c_69335_b_80375_d_127,t_5586056_b_80375_tn_0,,,0,,,,,,,,,,,,,, +76313,c_69336_b_80376_d_31,t_5586097_b_80376_tn_0,,,0,,,,,,,,,,,,,, +76313,c_69336_b_80376_d_31,t_5586096_b_80376_tn_0,,,0,,,,,,,,,,,,,, From 23243b5ff2872198eca4a7dce1347f0aea319d44 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Fri, 21 Jul 2023 11:20:24 +0200 Subject: [PATCH 069/123] Add test for flex areas --- .../gtfs/model/StopAreaElement.java | 21 ++++++++----------- .../org/onebusaway/gtfs/GtfsTestData.java | 20 +++++++++++------- .../gtfs/serialization/BaseGtfsTest.java | 19 +++++++++++++---- .../gtfs/serialization/FlexReaderTest.java | 9 ++++---- .../agency.txt | 0 .../areas.txt | 0 .../booking_rules.txt | 0 .../calendar.txt | 0 .../calendar_attributes.txt | 0 .../calendar_dates.txt | 0 .../directions.txt | 0 .../feed_info.txt | 0 .../locations.geojson | 0 .../routes.txt | 0 .../stop_areas.txt | 0 .../stop_times.txt | 0 .../stops.txt | 0 .../trips.txt | 0 18 files changed, 40 insertions(+), 29 deletions(-) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/agency.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/areas.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/booking_rules.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/calendar.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/calendar_attributes.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/calendar_dates.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/directions.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/feed_info.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/locations.geojson (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/routes.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/stop_areas.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/stop_times.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/stops.txt (100%) rename onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/{piercetransit-wa-us-stop-areas-flex => piercetransit-stop-areas-flex}/trips.txt (100%) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java index b88988481..a8f4cb5d5 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java @@ -17,31 +17,28 @@ import org.onebusaway.csv_entities.schema.annotations.CsvField; import org.onebusaway.csv_entities.schema.annotations.CsvFields; +import org.onebusaway.gtfs.serialization.mappings.DefaultAgencyIdFieldMappingFactory; +import org.onebusaway.gtfs.serialization.mappings.StopLocationFieldMappingFactory; @CsvFields(filename = "stop_areas.txt", required = false) public final class StopAreaElement extends IdentityBean { - @CsvField(name = "area_id") + @CsvField(name = "area_id", mapping = DefaultAgencyIdFieldMappingFactory.class) private AgencyAndId areaId; - @CsvField(name = "stop_id") - private String stopId; + @CsvField(name = "stop_id", mapping = StopLocationFieldMappingFactory.class) private StopLocation stop; - public AgencyAndId getAreaId() { - return areaId; - } - - public String getStopId() { - return stopId; + public void setAreaId(AgencyAndId id) { + this.areaId = id; } - public void setStopId(String stopId) { - this.stopId = stopId; + public AgencyAndId getAreaId() { + return areaId; } @Override public AgencyAndId getId() { - return new AgencyAndId(areaId.getAgencyId(), String.format("%s_%s", areaId.getId(), stopId)); + return new AgencyAndId(areaId.getAgencyId(), String.format("%s_%s", areaId.getId(), stop.getId().getId())); } @Override diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java index a4253143d..ed6ad8736 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java @@ -29,21 +29,25 @@ public class GtfsTestData { - public static final String CALTRAIN_GTFS = "org/onebusaway/gtfs/caltrain_20090308_1937.zip"; + private static String gtfsPath(String name) { + return String.format("org/onebusaway/gtfs/%s",name); + } + + public static final String CALTRAIN_GTFS = gtfsPath("caltrain_20090308_1937.zip"); - public static final String ISLAND_GTFS = "org/onebusaway/gtfs/island-transit_20090312_0314.zip"; + public static final String ISLAND_GTFS = gtfsPath("island-transit_20090312_0314.zip"); - public static final String BART_GTFS = "org/onebusaway/gtfs/bart.zip"; + public static final String BART_GTFS = gtfsPath("bart.zip"); - public static final String TEST_AGENCY_GTFS = "org/onebusaway/gtfs/testagency"; + public static final String TEST_AGENCY_GTFS = gtfsPath("testagency"); - public static final String TURLOCK_FARES_V2 = "org/onebusaway/gtfs/turlock-fares-v2"; + public static final String TURLOCK_FARES_V2 = gtfsPath("turlock-fares-v2"); - public static final String MDOT_FARES_V2 = "org/onebusaway/gtfs/mdot-metro-fares-v2"; + public static final String MDOT_FARES_V2 = gtfsPath("mdot-metro-fares-v2"); - public static final String PIERCE_TRANSIT_FLEX = "org/onebusaway/gtfs/mdot-metro-fares-v2"; + public static final String PIERCE_TRANSIT_FLEX = gtfsPath("piercetransit-stop-areas-flex"); - public static final String LOCATIONS_GEOJSON = "org/onebusaway/gtfs/locations.geojson"; + public static final String LOCATIONS_GEOJSON = gtfsPath("locations.geojson"); public static File getCaltrainGtfs() { return getResourceAsTemporaryFile(CALTRAIN_GTFS); diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/BaseGtfsTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/BaseGtfsTest.java index 23fbaee76..aa869093f 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/BaseGtfsTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/BaseGtfsTest.java @@ -1,3 +1,18 @@ +/** + * Copyright (C) 2022 Leonard Ehrenfried + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.onebusaway.gtfs.serialization; import java.io.File; @@ -7,10 +22,6 @@ public class BaseGtfsTest { - /**** - * Private Methods - ****/ - public static GtfsRelationalDao processFeed( File resourcePath, String agencyId, boolean internStrings diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java index 00ff4d8ea..dd3983192 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java @@ -23,17 +23,16 @@ import org.junit.Test; import org.onebusaway.csv_entities.exceptions.CsvEntityIOException; import org.onebusaway.gtfs.GtfsTestData; -import org.onebusaway.gtfs.services.GtfsRelationalDao; public class FlexReaderTest extends BaseGtfsTest { @Test - public void pierceTransit() throws CsvEntityIOException, IOException { - String agencyId = "1"; - GtfsRelationalDao dao = processFeed(GtfsTestData.getPierceTransitFlex(), agencyId, false); + public void pierceTransitStopAreas() throws CsvEntityIOException, IOException { + var agencyId = "1"; + var dao = processFeed(GtfsTestData.getPierceTransitFlex(), agencyId, false); var stopAreas = List.copyOf(dao.getAllStopAreas()); - assertEquals(1, stopAreas.size()); + assertEquals(15, stopAreas.size()); } } diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/agency.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/agency.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/agency.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/agency.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/areas.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/areas.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/areas.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/areas.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/booking_rules.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/booking_rules.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/booking_rules.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/booking_rules.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/calendar.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/calendar.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_attributes.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/calendar_attributes.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_attributes.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/calendar_attributes.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_dates.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/calendar_dates.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/calendar_dates.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/calendar_dates.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/directions.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/directions.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/directions.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/directions.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/feed_info.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/feed_info.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/feed_info.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/feed_info.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/locations.geojson b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/locations.geojson similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/locations.geojson rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/locations.geojson diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/routes.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/routes.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/routes.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/routes.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_areas.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/stop_areas.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_areas.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/stop_areas.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_times.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/stop_times.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stop_times.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/stop_times.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stops.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/stops.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/stops.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/stops.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/trips.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/trips.txt similarity index 100% rename from onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-wa-us-stop-areas-flex/trips.txt rename to onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/piercetransit-stop-areas-flex/trips.txt From 3e2de7e79348156802e7b309e9e1fccd264d5982 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Fri, 21 Jul 2023 12:19:57 +0200 Subject: [PATCH 070/123] Flesh out test --- .../impl/HibernateGtfsRelationalDaoImpl.java | 12 ++--- .../org/onebusaway/gtfs/impl/GtfsDaoImpl.java | 14 +++--- .../gtfs/impl/GtfsDataServiceImpl.java | 10 ++-- .../gtfs/model/StopAreaElement.java | 12 ++--- .../gtfs/serialization/GtfsReader.java | 2 +- .../org/onebusaway/gtfs/services/GtfsDao.java | 6 +-- .../gtfs/serialization/FaresV2ReaderTest.java | 33 +------------ .../gtfs/serialization/FlexReaderTest.java | 48 +++++++++++++++++-- 8 files changed, 72 insertions(+), 65 deletions(-) diff --git a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java index 599ef6d3a..4ab9e3743 100644 --- a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java +++ b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java @@ -306,7 +306,7 @@ public Collection getAllStopAreaElements() { return groups.stream().flatMap(group -> group.getStops().stream().map(stopLocation -> { var stopAreaElement = new StopAreaElement(); stopAreaElement.setId(group.getId()); - stopAreaElement.setStop(stopLocation); + stopAreaElement.setStopLocation(stopLocation); return stopAreaElement; })).collect(Collectors.toList()); } @@ -315,7 +315,10 @@ public Collection getAllStopAreaElements() { public Collection getAllLocationGroups() { return _ops.find("FROM LocationGroup"); } - + @Override + public Collection getAllStopAreas() { + return _ops.find("from StopArea"); + } @Override public Collection getAllLocations() { return _ops.find("FROM Location"); @@ -331,11 +334,6 @@ public Collection getAllTranslations() { return _ops.find("from Translation"); } - @Override - public Collection getAllStopAreas() { - return _ops.find("from StopArea"); - } - @Override public List getOptionalMetadataFilenames() { return new ArrayList<>(); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java index c998e9177..ed95a9393 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java @@ -291,13 +291,18 @@ public Collection getAllLocationGroupElements() { return getAllEntitiesForType(LocationGroupElement.class); } + public Collection getAllLocationGroups() { + return getAllEntitiesForType(LocationGroup.class); + } + @Override public Collection getAllStopAreaElements() { return getAllEntitiesForType(StopAreaElement.class); } - public Collection getAllLocationGroups() { - return getAllEntitiesForType(LocationGroup.class); + @Override + public Collection getAllStopAreas() { + return getAllEntitiesForType(StopArea.class); } public Collection getAllLocations() { @@ -312,11 +317,6 @@ public Collection getAllTranslations() { return getAllEntitiesForType(Translation.class); } - @Override - public Collection getAllStopAreas() { - return getAllEntitiesForType(StopAreaElement.class); - } - /**** * {@link GenericMutableDao} Interface ****/ diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java index f4bbfbf7b..3d59e78b5 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java @@ -368,6 +368,11 @@ public Collection getAllStopAreaElements() { return _dao.getAllStopAreaElements(); } + @Override + public Collection getAllStopAreas() { + return _dao.getAllStopAreas(); + } + @Override public Collection getAllLocationGroups() { return _dao.getAllLocationGroups(); @@ -388,11 +393,6 @@ public Collection getAllTranslations() { return _dao.getAllTranslations(); } - @Override - public Collection getAllStopAreas() { - return _dao.getAllStopAreas(); - } - @Override public List getOptionalMetadataFilenames() { return _dao.getOptionalMetadataFilenames(); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java index a8f4cb5d5..934d0f2f9 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java @@ -26,7 +26,7 @@ public final class StopAreaElement extends IdentityBean { @CsvField(name = "area_id", mapping = DefaultAgencyIdFieldMappingFactory.class) private AgencyAndId areaId; @CsvField(name = "stop_id", mapping = StopLocationFieldMappingFactory.class) - private StopLocation stop; + private StopLocation stopLocation; public void setAreaId(AgencyAndId id) { this.areaId = id; @@ -38,7 +38,7 @@ public AgencyAndId getAreaId() { @Override public AgencyAndId getId() { - return new AgencyAndId(areaId.getAgencyId(), String.format("%s_%s", areaId.getId(), stop.getId().getId())); + return new AgencyAndId(areaId.getAgencyId(), String.format("%s_%s", areaId.getId(), stopLocation.getId().getId())); } @Override @@ -46,11 +46,11 @@ public void setId(AgencyAndId id) { this.areaId = id; } - public void setStop(StopLocation stopLocation) { - this.stop = stopLocation; + public void setStopLocation(StopLocation stopLocation) { + this.stopLocation = stopLocation; } - public StopLocation getStop() { - return stop; + public StopLocation getStopLocation() { + return stopLocation; } } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java index 07cb822a2..37f976277 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java @@ -377,7 +377,7 @@ public void handleEntity(Object entity) { stopArea.setName("area"); _entityStore.saveEntity(stopArea); } - stopArea.addLocation(stopAreaElement.getStop()); + stopArea.addLocation(stopAreaElement.getStopLocation()); } else if (entity instanceof Vehicle) { Vehicle vehicle = (Vehicle) entity; registerAgencyId(Vehicle.class, vehicle.getId()); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java index 8725650b8..f701b4ab5 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/GtfsDao.java @@ -193,9 +193,11 @@ public interface GtfsDao extends GenericDao { @Deprecated public Collection getAllLocationGroupElements(); + public Collection getAllLocationGroups(); + public Collection getAllStopAreaElements(); - public Collection getAllLocationGroups(); + public Collection getAllStopAreas(); public Collection getAllLocations(); @@ -211,8 +213,6 @@ public interface GtfsDao extends GenericDao { public Collection getAllWrongWayConcurrencies(); - Collection getAllStopAreas(); - default boolean hasFaresV1() { return Stream.of(getAllFareAttributes(), getAllFareRules()).flatMap(Collection::stream).findAny().isPresent(); } diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FaresV2ReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FaresV2ReaderTest.java index 96a90a5e3..dfaf49d7b 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FaresV2ReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FaresV2ReaderTest.java @@ -1,6 +1,5 @@ /** - * Copyright (C) 2011 Brian Ferris - * Copyright (C) 2011 Google, Inc. + * Copyright (C) 2023 Leonard Ehrenfried * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,50 +24,22 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import java.io.File; import java.io.IOException; -import java.io.StringReader; -import java.text.ParseException; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.Comparator; -import java.util.Iterator; import java.util.List; import org.junit.Test; import org.onebusaway.csv_entities.exceptions.CsvEntityIOException; -import org.onebusaway.csv_entities.exceptions.InvalidValueEntityException; -import org.onebusaway.csv_entities.exceptions.MissingRequiredFieldException; import org.onebusaway.gtfs.GtfsTestData; -import org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl; import org.onebusaway.gtfs.model.Agency; import org.onebusaway.gtfs.model.AgencyAndId; -import org.onebusaway.gtfs.model.Block; -import org.onebusaway.gtfs.model.FareAttribute; import org.onebusaway.gtfs.model.FareLegRule; import org.onebusaway.gtfs.model.FareMedium; import org.onebusaway.gtfs.model.FareProduct; -import org.onebusaway.gtfs.model.FareRule; import org.onebusaway.gtfs.model.FareTransferRule; -import org.onebusaway.gtfs.model.FeedInfo; -import org.onebusaway.gtfs.model.Frequency; -import org.onebusaway.gtfs.model.Level; -import org.onebusaway.gtfs.model.Pathway; import org.onebusaway.gtfs.model.RiderCategory; -import org.onebusaway.gtfs.model.Ridership; import org.onebusaway.gtfs.model.Route; -import org.onebusaway.gtfs.model.ServiceCalendar; -import org.onebusaway.gtfs.model.ServiceCalendarDate; -import org.onebusaway.gtfs.model.ShapePoint; -import org.onebusaway.gtfs.model.Stop; import org.onebusaway.gtfs.model.StopAreaElement; -import org.onebusaway.gtfs.model.StopTime; -import org.onebusaway.gtfs.model.Transfer; -import org.onebusaway.gtfs.model.Trip; -import org.onebusaway.gtfs.model.calendar.ServiceDate; -import org.onebusaway.gtfs.serialization.mappings.AgencyNotFoundForRouteException; -import org.onebusaway.gtfs.services.GtfsDao; -import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; import org.onebusaway.gtfs.services.GtfsRelationalDao; import org.onebusaway.gtfs.services.MockGtfs; @@ -164,7 +135,7 @@ public void mdotMetroFaresV2() throws CsvEntityIOException, IOException { assertEquals("charmcard_senior", medium.getId().getId()); assertEquals("Senior CharmCard", medium.getName()); - List stopAreaElements = new ArrayList<>(dao.getAllStopAreas()); + List stopAreaElements = new ArrayList<>(dao.getAllStopAreaElements()); assertEquals(0, stopAreaElements.size()); List routes = new ArrayList<>(dao.getAllRoutes()); diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java index dd3983192..6d3917771 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java @@ -1,6 +1,5 @@ /** - * Copyright (C) 2011 Brian Ferris - * Copyright (C) 2011 Google, Inc. + * Copyright (C) 2023 Leonard Ehrenfried * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,22 +16,61 @@ package org.onebusaway.gtfs.serialization; import static junit.framework.Assert.assertEquals; +import static org.junit.Assert.assertSame; import java.io.IOException; +import java.util.Comparator; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import org.junit.Test; import org.onebusaway.csv_entities.exceptions.CsvEntityIOException; import org.onebusaway.gtfs.GtfsTestData; +import org.onebusaway.gtfs.model.Location; +import org.onebusaway.gtfs.model.Stop; +import org.onebusaway.gtfs.model.StopArea; +import org.onebusaway.gtfs.model.StopLocation; public class FlexReaderTest extends BaseGtfsTest { + private static final String AGENCY_ID = "1"; + @Test public void pierceTransitStopAreas() throws CsvEntityIOException, IOException { - var agencyId = "1"; - var dao = processFeed(GtfsTestData.getPierceTransitFlex(), agencyId, false); + var dao = processFeed(GtfsTestData.getPierceTransitFlex(), AGENCY_ID, false); + + var areaElements = List.copyOf(dao.getAllStopAreaElements()); + assertEquals(15, areaElements.size()); + + var first = areaElements.get(0); + assertEquals("4210813", first.getAreaId().getId()); + var stop = first.getStopLocation(); + assertEquals("4210806", stop.getId().getId()); + assertEquals("Bridgeport Way & San Francisco Ave SW (Northbound)", stop.getName()); + assertSame(Stop.class, stop.getClass()); + + var areaWithLocation = areaElements.stream().filter(a -> a.getId().toString().equals("1_4210800_area_1076")).findFirst().get(); + + var location = areaWithLocation.getStopLocation(); + assertSame(Location.class, location.getClass()); var stopAreas = List.copyOf(dao.getAllStopAreas()); + assertEquals(2, stopAreas.size()); + + var area = getArea(stopAreas, "1_4210813"); + assertEquals(12, area.getStops().size()); + var stop2 = area.getStops().stream().min(Comparator.comparing(StopLocation::getName)).get(); + assertEquals("Barnes Blvd & D St SW", stop2.getName()); + + var area2 = getArea(stopAreas, "1_4210800"); + assertEquals(3, area2.getStops().size()); + + var names = area2.getStops().stream().map(s -> s.getId().toString()).collect(Collectors.toSet()); + + assertEquals(Set.of("1_area_1075", "1_area_1074", "1_area_1076"), names); + } - assertEquals(15, stopAreas.size()); + private static StopArea getArea(List stopAreas, String id) { + return stopAreas.stream().filter(a -> a.getId().toString().equals(id)).findAny().get(); } } From 96a1851b4bb93f8dd77adec010183a821879df43 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Fri, 21 Jul 2023 12:38:02 +0200 Subject: [PATCH 071/123] Add deprecation warnings --- .../main/java/org/onebusaway/gtfs/model/LocationGroup.java | 5 +++++ .../org/onebusaway/gtfs/model/LocationGroupElement.java | 6 +++++- .../src/main/java/org/onebusaway/gtfs/model/StopArea.java | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java index 6b8f271fa..e6bf49315 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java @@ -18,6 +18,11 @@ import java.util.HashSet; import java.util.Set; +/** + * Location groups have been merged with Fares V2's stop areas. + * + * Please update your code now as this class will be removed soon. + */ @Deprecated public class LocationGroup extends IdentityBean implements StopLocation { private static final long serialVersionUID = 1L; diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java index 40ac830af..f1a11b0c5 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java @@ -20,7 +20,11 @@ import org.onebusaway.gtfs.serialization.mappings.DefaultAgencyIdFieldMappingFactory; import org.onebusaway.gtfs.serialization.mappings.StopLocationFieldMappingFactory; - +/** + * Location groups have been merged with Fares V2's stop areas. + * + * Please update your code now as this class will be removed soon. + */ @Deprecated @CsvFields(filename = "location_groups.txt", required = false, prefix = "location_group_") public class LocationGroupElement extends IdentityBean { diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java index b069088fc..8da6ef19f 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2020 Kyyti Group Ltd + * Copyright (C) 2023 Leonard Ehrenfried * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From ea748e2ed6d264cfcf0966f605cc17a6bae80e74 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Sat, 22 Jul 2023 21:06:10 +0200 Subject: [PATCH 072/123] Properly set the stop area in a stop time --- .../mappings/StopLocationFieldMappingImpl.java | 6 ++++-- .../onebusaway/gtfs/serialization/FlexReaderTest.java | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/mappings/StopLocationFieldMappingImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/mappings/StopLocationFieldMappingImpl.java index bdb3e8833..d53199b13 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/mappings/StopLocationFieldMappingImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/mappings/StopLocationFieldMappingImpl.java @@ -35,7 +35,7 @@ public Converter create(CsvEntityContext context) { private class ConverterImpl implements Converter { - private GtfsReaderContext _context; + private final GtfsReaderContext _context; public ConverterImpl(GtfsReaderContext context) { _context = context; @@ -55,8 +55,10 @@ public Object convert(@SuppressWarnings("rawtypes") Class type, Object value) { if (stop != null) return stop; Object location = _context.getEntity(Location.class, id); if (location != null) return location; - Object locationGroup = _context.getEntity(LocationGroup.class, id); + Object locationGroup = _context.getEntity(LocationGroup.class, id); if (locationGroup != null) return locationGroup; + Object stopArea = _context.getEntity(StopArea.class, id); + if (stopArea != null) return stopArea; return null; } // we fell through -- unexpected situation diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java index 6d3917771..c90a46bc2 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java @@ -68,6 +68,16 @@ public void pierceTransitStopAreas() throws CsvEntityIOException, IOException { var names = area2.getStops().stream().map(s -> s.getId().toString()).collect(Collectors.toSet()); assertEquals(Set.of("1_area_1075", "1_area_1074", "1_area_1076"), names); + + var trips = dao.getAllTrips(); + assertEquals(7, trips.size()); + + var trip = trips.stream().filter(t -> t.getId().getId().equals("t_5586096_b_80376_tn_0")).findFirst().get(); + var stopTimes = dao.getStopTimesForTrip(trip); + + var classes = stopTimes.stream().map(st -> st.getStop().getClass()).collect(Collectors.toList()); + assertEquals(List.of(StopArea.class, StopArea.class), classes); + } private static StopArea getArea(List stopAreas, String id) { From 34b3f787b1e02f58c31a6f653ec59f11c332ef74 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Mon, 24 Jul 2023 14:15:47 +0200 Subject: [PATCH 073/123] Rename method --- .../gtfs/impl/HibernateGtfsRelationalDaoImpl.java | 2 +- .../src/main/java/org/onebusaway/gtfs/model/StopArea.java | 4 ++-- .../org/onebusaway/gtfs/serialization/FlexReaderTest.java | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java index 4ab9e3743..89f7a5881 100644 --- a/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java +++ b/onebusaway-gtfs-hibernate/src/main/java/org/onebusaway/gtfs/impl/HibernateGtfsRelationalDaoImpl.java @@ -303,7 +303,7 @@ public Collection getAllLocationGroupElements() { @Override public Collection getAllStopAreaElements() { Collection groups = _ops.find("FROM StopArea"); - return groups.stream().flatMap(group -> group.getStops().stream().map(stopLocation -> { + return groups.stream().flatMap(group -> group.getLocations().stream().map(stopLocation -> { var stopAreaElement = new StopAreaElement(); stopAreaElement.setId(group.getId()); stopAreaElement.setStopLocation(stopLocation); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java index 8da6ef19f..c7b1275d1 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java @@ -36,11 +36,11 @@ public void setId(AgencyAndId id) { this.id = id; } - public Set getStops() { + public Set getLocations() { return stops; } - private void setStops(Set stops) { + private void setLocations(Set stops) { this.stops = stops; } diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java index c90a46bc2..a81c590a4 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java @@ -58,14 +58,14 @@ public void pierceTransitStopAreas() throws CsvEntityIOException, IOException { assertEquals(2, stopAreas.size()); var area = getArea(stopAreas, "1_4210813"); - assertEquals(12, area.getStops().size()); - var stop2 = area.getStops().stream().min(Comparator.comparing(StopLocation::getName)).get(); + assertEquals(12, area.getLocations().size()); + var stop2 = area.getLocations().stream().min(Comparator.comparing(StopLocation::getName)).get(); assertEquals("Barnes Blvd & D St SW", stop2.getName()); var area2 = getArea(stopAreas, "1_4210800"); - assertEquals(3, area2.getStops().size()); + assertEquals(3, area2.getLocations().size()); - var names = area2.getStops().stream().map(s -> s.getId().toString()).collect(Collectors.toSet()); + var names = area2.getLocations().stream().map(s -> s.getId().toString()).collect(Collectors.toSet()); assertEquals(Set.of("1_area_1075", "1_area_1074", "1_area_1076"), names); From d9f5ed496c6d5245a347adbea31cad191791c44c Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Mon, 24 Jul 2023 15:00:57 +0200 Subject: [PATCH 074/123] Improve name handling --- .../org/onebusaway/gtfs/model/StopArea.java | 57 ++++++++++--------- .../gtfs/model/StopAreaElement.java | 18 +++--- .../gtfs/serialization/GtfsReader.java | 6 +- .../gtfs/serialization/FlexReaderTest.java | 4 +- 4 files changed, 46 insertions(+), 39 deletions(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java index c7b1275d1..2d2d74a64 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopArea.java @@ -19,40 +19,45 @@ import java.util.Set; public class StopArea extends IdentityBean implements StopLocation { - private static final long serialVersionUID = 1L; - private AgencyAndId id; + private static final long serialVersionUID = 1L; - private Set stops = new HashSet<>(); + private Area area; - private String name; + private Set stops = new HashSet<>(); - @Override - public AgencyAndId getId() { - return id; - } + @Override + public AgencyAndId getId() { + return area.getId(); + } - public void setId(AgencyAndId id) { - this.id = id; - } + @Override + public void setId(AgencyAndId id) { + } - public Set getLocations() { - return stops; - } + public void setArea(Area area) { + this.area = area; + } - private void setLocations(Set stops) { - this.stops = stops; - } + public Set getLocations() { + return stops; + } - public void addLocation(StopLocation location) { - this.stops.add(location); - } + private void setLocations(Set stops) { + this.stops = stops; + } - public String getName() { - return name; - } + public void addLocation(StopLocation location) { + this.stops.add(location); + } + + public String getName() { + return area.getName(); + } + + @Override + public void setName(String name) { + + } - public void setName(String name) { - this.name = name; - } } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java index 934d0f2f9..b0ee1cf61 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopAreaElement.java @@ -17,33 +17,33 @@ import org.onebusaway.csv_entities.schema.annotations.CsvField; import org.onebusaway.csv_entities.schema.annotations.CsvFields; -import org.onebusaway.gtfs.serialization.mappings.DefaultAgencyIdFieldMappingFactory; +import org.onebusaway.gtfs.serialization.mappings.EntityFieldMappingFactory; import org.onebusaway.gtfs.serialization.mappings.StopLocationFieldMappingFactory; @CsvFields(filename = "stop_areas.txt", required = false) public final class StopAreaElement extends IdentityBean { - @CsvField(name = "area_id", mapping = DefaultAgencyIdFieldMappingFactory.class) - private AgencyAndId areaId; + @CsvField(name = "area_id", mapping = EntityFieldMappingFactory.class) + private Area area; @CsvField(name = "stop_id", mapping = StopLocationFieldMappingFactory.class) private StopLocation stopLocation; - public void setAreaId(AgencyAndId id) { - this.areaId = id; + public void setArea(Area area) { + this.area = area; } - public AgencyAndId getAreaId() { - return areaId; + public Area getArea() { + return area; } @Override public AgencyAndId getId() { - return new AgencyAndId(areaId.getAgencyId(), String.format("%s_%s", areaId.getId(), stopLocation.getId().getId())); + return new AgencyAndId(getArea().getId().getAgencyId(), String.format("%s_%s", area.getId().getId(), stopLocation.getId().getId())); } @Override public void setId(AgencyAndId id) { - this.areaId = id; + } public void setStopLocation(StopLocation stopLocation) { diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java index 37f976277..e834e8bc6 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java @@ -355,6 +355,7 @@ public void handleEntity(Object entity) { } else if (entity instanceof Area) { Area area = (Area) entity; registerAgencyId(Area.class, area.getId()); + } else if (entity instanceof Location) { Location location = (Location) entity; registerAgencyId(Location.class, location.getId()); @@ -370,11 +371,10 @@ public void handleEntity(Object entity) { locationGroup.addLocation(locationGroupElement.getLocation()); } else if (entity instanceof StopAreaElement) { var stopAreaElement = (StopAreaElement) entity; - var stopArea = _entityStore.getEntityForId(StopArea.class, stopAreaElement.getAreaId()); + var stopArea = _entityStore.getEntityForId(StopArea.class, stopAreaElement.getArea().getId()); if (stopArea == null) { stopArea = new StopArea(); - stopArea.setId(stopAreaElement.getAreaId()); - stopArea.setName("area"); + stopArea.setArea(stopAreaElement.getArea()); _entityStore.saveEntity(stopArea); } stopArea.addLocation(stopAreaElement.getStopLocation()); diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java index a81c590a4..cc29bc4f8 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java @@ -43,7 +43,7 @@ public void pierceTransitStopAreas() throws CsvEntityIOException, IOException { assertEquals(15, areaElements.size()); var first = areaElements.get(0); - assertEquals("4210813", first.getAreaId().getId()); + assertEquals("1_4210813", first.getArea().getId().toString()); var stop = first.getStopLocation(); assertEquals("4210806", stop.getId().getId()); assertEquals("Bridgeport Way & San Francisco Ave SW (Northbound)", stop.getName()); @@ -78,6 +78,8 @@ public void pierceTransitStopAreas() throws CsvEntityIOException, IOException { var classes = stopTimes.stream().map(st -> st.getStop().getClass()).collect(Collectors.toList()); assertEquals(List.of(StopArea.class, StopArea.class), classes); + assertEquals("JBLM Stops", area.getName()); + } private static StopArea getArea(List stopAreas, String id) { From ea88b5e4c2cc2a37e070f3e4ef1c210f813f79d7 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 11 Aug 2023 17:31:16 -0400 Subject: [PATCH 075/123] Issue #223 fixing logging --- onebusaway-gtfs-hibernate-cli/pom.xml | 5 ++-- .../src/main/resources/log4j.properties | 25 ------------------- .../main/resources/simplelogger.properties | 25 +++++++++++++++++++ onebusaway-gtfs-hibernate/pom.xml | 6 ++--- .../src/test/resources/log4j.properties | 25 ------------------- .../test/resources/simplelogger.properties | 25 +++++++++++++++++++ onebusaway-gtfs-merge-cli/pom.xml | 5 ++-- .../src/main/resources/log4j.properties | 9 ------- .../main/resources/simplelogger.properties | 25 +++++++++++++++++++ onebusaway-gtfs-merge/pom.xml | 6 ++--- .../src/test/resources/log4j.properties | 9 ------- .../test/resources/simplelogger.properties | 25 +++++++++++++++++++ onebusaway-gtfs-transformer-cli-aws/pom.xml | 5 ++-- onebusaway-gtfs-transformer-cli/pom.xml | 5 ++-- .../src/main/resources/log4j.properties | 9 ------- .../main/resources/simplelogger.properties | 25 +++++++++++++++++++ onebusaway-gtfs-transformer/pom.xml | 10 ++++---- onebusaway-gtfs/pom.xml | 6 ++--- .../src/test/resources/log4j.properties | 25 ------------------- .../test/resources/simplelogger.properties | 25 +++++++++++++++++++ pom.xml | 6 ++--- 21 files changed, 179 insertions(+), 127 deletions(-) delete mode 100644 onebusaway-gtfs-hibernate-cli/src/main/resources/log4j.properties create mode 100644 onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties delete mode 100644 onebusaway-gtfs-hibernate/src/test/resources/log4j.properties create mode 100644 onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties delete mode 100644 onebusaway-gtfs-merge-cli/src/main/resources/log4j.properties create mode 100644 onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties delete mode 100644 onebusaway-gtfs-merge/src/test/resources/log4j.properties create mode 100644 onebusaway-gtfs-merge/src/test/resources/simplelogger.properties delete mode 100644 onebusaway-gtfs-transformer-cli/src/main/resources/log4j.properties create mode 100644 onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties delete mode 100644 onebusaway-gtfs/src/test/resources/log4j.properties create mode 100644 onebusaway-gtfs/src/test/resources/simplelogger.properties diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 63f0bc389..7a54a8532 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -27,8 +27,9 @@ 1.2 - org.apache.logging.log4j - log4j-slf4j-impl + org.slf4j + slf4j-simple + ${slf4j_version} diff --git a/onebusaway-gtfs-hibernate-cli/src/main/resources/log4j.properties b/onebusaway-gtfs-hibernate-cli/src/main/resources/log4j.properties deleted file mode 100644 index 6df8853de..000000000 --- a/onebusaway-gtfs-hibernate-cli/src/main/resources/log4j.properties +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2008 Brian Ferris -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. - - -log4j.rootLogger = INFO, stdout - -log4j.appender.stdout = org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Threshold = DEBUG -log4j.appender.stdout.Target = System.out -log4j.appender.stdout.layout = org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601} %-5p [%F:%L] : %m%n - - - diff --git a/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties b/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties new file mode 100644 index 000000000..712780a1e --- /dev/null +++ b/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties @@ -0,0 +1,25 @@ +# SLF4J's SimpleLogger configuration file +# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. +# Default logging detail level for all instances of SimpleLogger. +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, defaults to "info". +org.slf4j.simpleLogger.defaultLogLevel=info +# Logging detail level for a SimpleLogger instance named "xxxxx". +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, the default logging detail level is used. +#org.slf4j.simpleLogger.log.xxxxx= +# Set to true if you want the current date and time to be included in output messages. +# Default is false, and will output the number of milliseconds elapsed since startup. +org.slf4j.simpleLogger.showDateTime=true +# The date and time format to be used in the output messages. +# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat. +# If the format is not specified or is invalid, the default format is used. +# The default format is yyyy-MM-dd HH:mm:ss:SSS Z. +#org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z +org.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss +# Set to true if you want to output the current thread name. +# Defaults to true. +org.slf4j.simpleLogger.showThreadName=false +# Set to true if you want the last component of the name to be included in output messages. +# Defaults to false. +org.slf4j.simpleLogger.showShortLogName=true diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 88db58de4..b6757b86c 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -42,9 +42,9 @@ test - org.apache.logging.log4j - log4j-slf4j-impl - test + org.slf4j + slf4j-simple + ${slf4j_version} com.sun.xml.bind diff --git a/onebusaway-gtfs-hibernate/src/test/resources/log4j.properties b/onebusaway-gtfs-hibernate/src/test/resources/log4j.properties deleted file mode 100644 index 6df8853de..000000000 --- a/onebusaway-gtfs-hibernate/src/test/resources/log4j.properties +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2008 Brian Ferris -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. - - -log4j.rootLogger = INFO, stdout - -log4j.appender.stdout = org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Threshold = DEBUG -log4j.appender.stdout.Target = System.out -log4j.appender.stdout.layout = org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601} %-5p [%F:%L] : %m%n - - - diff --git a/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties b/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties new file mode 100644 index 000000000..712780a1e --- /dev/null +++ b/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties @@ -0,0 +1,25 @@ +# SLF4J's SimpleLogger configuration file +# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. +# Default logging detail level for all instances of SimpleLogger. +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, defaults to "info". +org.slf4j.simpleLogger.defaultLogLevel=info +# Logging detail level for a SimpleLogger instance named "xxxxx". +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, the default logging detail level is used. +#org.slf4j.simpleLogger.log.xxxxx= +# Set to true if you want the current date and time to be included in output messages. +# Default is false, and will output the number of milliseconds elapsed since startup. +org.slf4j.simpleLogger.showDateTime=true +# The date and time format to be used in the output messages. +# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat. +# If the format is not specified or is invalid, the default format is used. +# The default format is yyyy-MM-dd HH:mm:ss:SSS Z. +#org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z +org.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss +# Set to true if you want to output the current thread name. +# Defaults to true. +org.slf4j.simpleLogger.showThreadName=false +# Set to true if you want the last component of the name to be included in output messages. +# Defaults to false. +org.slf4j.simpleLogger.showShortLogName=true diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index ef3caaa93..150c91b00 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -28,8 +28,9 @@ 1.2 - org.apache.logging.log4j - log4j-slf4j-impl + org.slf4j + slf4j-simple + ${slf4j_version} diff --git a/onebusaway-gtfs-merge-cli/src/main/resources/log4j.properties b/onebusaway-gtfs-merge-cli/src/main/resources/log4j.properties deleted file mode 100644 index 2c9757ccc..000000000 --- a/onebusaway-gtfs-merge-cli/src/main/resources/log4j.properties +++ /dev/null @@ -1,9 +0,0 @@ -log4j.rootLogger = INFO, stdout - -log4j.appender.stdout = org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Threshold = DEBUG -log4j.appender.stdout.Target = System.out -log4j.appender.stdout.layout = org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601} %-5p [%F:%L] : %m%n - - diff --git a/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties b/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties new file mode 100644 index 000000000..712780a1e --- /dev/null +++ b/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties @@ -0,0 +1,25 @@ +# SLF4J's SimpleLogger configuration file +# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. +# Default logging detail level for all instances of SimpleLogger. +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, defaults to "info". +org.slf4j.simpleLogger.defaultLogLevel=info +# Logging detail level for a SimpleLogger instance named "xxxxx". +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, the default logging detail level is used. +#org.slf4j.simpleLogger.log.xxxxx= +# Set to true if you want the current date and time to be included in output messages. +# Default is false, and will output the number of milliseconds elapsed since startup. +org.slf4j.simpleLogger.showDateTime=true +# The date and time format to be used in the output messages. +# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat. +# If the format is not specified or is invalid, the default format is used. +# The default format is yyyy-MM-dd HH:mm:ss:SSS Z. +#org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z +org.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss +# Set to true if you want to output the current thread name. +# Defaults to true. +org.slf4j.simpleLogger.showThreadName=false +# Set to true if you want the last component of the name to be included in output messages. +# Defaults to false. +org.slf4j.simpleLogger.showShortLogName=true diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 1eb36851a..508ad6427 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -23,9 +23,9 @@ - org.apache.logging.log4j - log4j-slf4j-impl - test + org.slf4j + slf4j-simple + ${slf4j_version} junit diff --git a/onebusaway-gtfs-merge/src/test/resources/log4j.properties b/onebusaway-gtfs-merge/src/test/resources/log4j.properties deleted file mode 100644 index 2c9757ccc..000000000 --- a/onebusaway-gtfs-merge/src/test/resources/log4j.properties +++ /dev/null @@ -1,9 +0,0 @@ -log4j.rootLogger = INFO, stdout - -log4j.appender.stdout = org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Threshold = DEBUG -log4j.appender.stdout.Target = System.out -log4j.appender.stdout.layout = org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601} %-5p [%F:%L] : %m%n - - diff --git a/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties b/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties new file mode 100644 index 000000000..712780a1e --- /dev/null +++ b/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties @@ -0,0 +1,25 @@ +# SLF4J's SimpleLogger configuration file +# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. +# Default logging detail level for all instances of SimpleLogger. +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, defaults to "info". +org.slf4j.simpleLogger.defaultLogLevel=info +# Logging detail level for a SimpleLogger instance named "xxxxx". +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, the default logging detail level is used. +#org.slf4j.simpleLogger.log.xxxxx= +# Set to true if you want the current date and time to be included in output messages. +# Default is false, and will output the number of milliseconds elapsed since startup. +org.slf4j.simpleLogger.showDateTime=true +# The date and time format to be used in the output messages. +# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat. +# If the format is not specified or is invalid, the default format is used. +# The default format is yyyy-MM-dd HH:mm:ss:SSS Z. +#org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z +org.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss +# Set to true if you want to output the current thread name. +# Defaults to true. +org.slf4j.simpleLogger.showThreadName=false +# Set to true if you want the last component of the name to be included in output messages. +# Defaults to false. +org.slf4j.simpleLogger.showShortLogName=true diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index cd47f91df..4194855bf 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -35,8 +35,9 @@ 1.2 - org.apache.logging.log4j - log4j-slf4j-impl + org.slf4j + slf4j-simple + ${slf4j_version} diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 482427080..08ff3a9eb 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -30,8 +30,9 @@ 1.2 - org.apache.logging.log4j - log4j-slf4j-impl + org.slf4j + slf4j-simple + ${slf4j_version} diff --git a/onebusaway-gtfs-transformer-cli/src/main/resources/log4j.properties b/onebusaway-gtfs-transformer-cli/src/main/resources/log4j.properties deleted file mode 100644 index 2c9757ccc..000000000 --- a/onebusaway-gtfs-transformer-cli/src/main/resources/log4j.properties +++ /dev/null @@ -1,9 +0,0 @@ -log4j.rootLogger = INFO, stdout - -log4j.appender.stdout = org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Threshold = DEBUG -log4j.appender.stdout.Target = System.out -log4j.appender.stdout.layout = org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601} %-5p [%F:%L] : %m%n - - diff --git a/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties b/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties new file mode 100644 index 000000000..712780a1e --- /dev/null +++ b/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties @@ -0,0 +1,25 @@ +# SLF4J's SimpleLogger configuration file +# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. +# Default logging detail level for all instances of SimpleLogger. +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, defaults to "info". +org.slf4j.simpleLogger.defaultLogLevel=info +# Logging detail level for a SimpleLogger instance named "xxxxx". +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, the default logging detail level is used. +#org.slf4j.simpleLogger.log.xxxxx= +# Set to true if you want the current date and time to be included in output messages. +# Default is false, and will output the number of milliseconds elapsed since startup. +org.slf4j.simpleLogger.showDateTime=true +# The date and time format to be used in the output messages. +# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat. +# If the format is not specified or is invalid, the default format is used. +# The default format is yyyy-MM-dd HH:mm:ss:SSS Z. +#org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z +org.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss +# Set to true if you want to output the current thread name. +# Defaults to true. +org.slf4j.simpleLogger.showThreadName=false +# Set to true if you want the last component of the name to be included in output messages. +# Defaults to false. +org.slf4j.simpleLogger.showShortLogName=true diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index d05dcb0ff..59a81ebab 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -32,11 +32,11 @@ junit test - - org.apache.logging.log4j - log4j-slf4j-impl - test - + + org.slf4j + slf4j-simple + ${slf4j_version} + org.mockito mockito-core diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 39493b697..36eeb75c0 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -39,9 +39,9 @@ 1.14 - org.apache.logging.log4j - log4j-slf4j-impl - test + org.slf4j + slf4j-simple + ${slf4j_version} junit diff --git a/onebusaway-gtfs/src/test/resources/log4j.properties b/onebusaway-gtfs/src/test/resources/log4j.properties deleted file mode 100644 index 6df8853de..000000000 --- a/onebusaway-gtfs/src/test/resources/log4j.properties +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2008 Brian Ferris -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. - - -log4j.rootLogger = INFO, stdout - -log4j.appender.stdout = org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Threshold = DEBUG -log4j.appender.stdout.Target = System.out -log4j.appender.stdout.layout = org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601} %-5p [%F:%L] : %m%n - - - diff --git a/onebusaway-gtfs/src/test/resources/simplelogger.properties b/onebusaway-gtfs/src/test/resources/simplelogger.properties new file mode 100644 index 000000000..712780a1e --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/simplelogger.properties @@ -0,0 +1,25 @@ +# SLF4J's SimpleLogger configuration file +# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. +# Default logging detail level for all instances of SimpleLogger. +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, defaults to "info". +org.slf4j.simpleLogger.defaultLogLevel=info +# Logging detail level for a SimpleLogger instance named "xxxxx". +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, the default logging detail level is used. +#org.slf4j.simpleLogger.log.xxxxx= +# Set to true if you want the current date and time to be included in output messages. +# Default is false, and will output the number of milliseconds elapsed since startup. +org.slf4j.simpleLogger.showDateTime=true +# The date and time format to be used in the output messages. +# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat. +# If the format is not specified or is invalid, the default format is used. +# The default format is yyyy-MM-dd HH:mm:ss:SSS Z. +#org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z +org.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss +# Set to true if you want to output the current thread name. +# Defaults to true. +org.slf4j.simpleLogger.showThreadName=false +# Set to true if you want the last component of the name to be included in output messages. +# Defaults to false. +org.slf4j.simpleLogger.showShortLogName=true diff --git a/pom.xml b/pom.xml index 190465bb6..64e07b334 100644 --- a/pom.xml +++ b/pom.xml @@ -105,9 +105,9 @@ ${slf4j_version} - org.apache.logging.log4j - log4j-slf4j-impl - 2.20.0 + org.slf4j + slf4j-simple + ${slf4j_version} junit From 45ac957c758b8cb86e59702d7a99bf4d0b425be7 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 11 Aug 2023 17:36:36 -0400 Subject: [PATCH 076/123] license fixes --- .../src/main/resources/simplelogger.properties | 13 +++++++++++++ .../src/test/resources/simplelogger.properties | 13 +++++++++++++ .../src/main/resources/simplelogger.properties | 13 +++++++++++++ .../src/test/resources/simplelogger.properties | 13 +++++++++++++ .../src/main/resources/simplelogger.properties | 13 +++++++++++++ .../src/test/resources/simplelogger.properties | 13 +++++++++++++ 6 files changed, 78 insertions(+) diff --git a/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties b/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties index 712780a1e..f924a45c8 100644 --- a/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties +++ b/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties @@ -1,3 +1,16 @@ +# Copyright 2008 Brian Ferris +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties b/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties index 712780a1e..f924a45c8 100644 --- a/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties +++ b/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties @@ -1,3 +1,16 @@ +# Copyright 2008 Brian Ferris +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties b/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties index 712780a1e..f924a45c8 100644 --- a/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties +++ b/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties @@ -1,3 +1,16 @@ +# Copyright 2008 Brian Ferris +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties b/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties index 712780a1e..f924a45c8 100644 --- a/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties +++ b/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties @@ -1,3 +1,16 @@ +# Copyright 2008 Brian Ferris +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties b/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties index 712780a1e..f924a45c8 100644 --- a/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties +++ b/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties @@ -1,3 +1,16 @@ +# Copyright 2008 Brian Ferris +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/onebusaway-gtfs/src/test/resources/simplelogger.properties b/onebusaway-gtfs/src/test/resources/simplelogger.properties index 712780a1e..f924a45c8 100644 --- a/onebusaway-gtfs/src/test/resources/simplelogger.properties +++ b/onebusaway-gtfs/src/test/resources/simplelogger.properties @@ -1,3 +1,16 @@ +# Copyright 2008 Brian Ferris +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. From 804e19ddcede71df8463b368804f8d90f9deabb7 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 11 Aug 2023 18:05:12 -0400 Subject: [PATCH 077/123] more license fixes --- .../src/main/resources/simplelogger.properties | 13 ------------- .../src/test/resources/simplelogger.properties | 13 ------------- .../src/main/resources/simplelogger.properties | 13 ------------- .../src/test/resources/simplelogger.properties | 13 ------------- .../src/main/resources/simplelogger.properties | 13 ------------- .../src/test/resources/simplelogger.properties | 13 ------------- pom.xml | 1 + 7 files changed, 1 insertion(+), 78 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties b/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties index f924a45c8..712780a1e 100644 --- a/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties +++ b/onebusaway-gtfs-hibernate-cli/src/main/resources/simplelogger.properties @@ -1,16 +1,3 @@ -# Copyright 2008 Brian Ferris -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties b/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties index f924a45c8..712780a1e 100644 --- a/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties +++ b/onebusaway-gtfs-hibernate/src/test/resources/simplelogger.properties @@ -1,16 +1,3 @@ -# Copyright 2008 Brian Ferris -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties b/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties index f924a45c8..712780a1e 100644 --- a/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties +++ b/onebusaway-gtfs-merge-cli/src/main/resources/simplelogger.properties @@ -1,16 +1,3 @@ -# Copyright 2008 Brian Ferris -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties b/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties index f924a45c8..712780a1e 100644 --- a/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties +++ b/onebusaway-gtfs-merge/src/test/resources/simplelogger.properties @@ -1,16 +1,3 @@ -# Copyright 2008 Brian Ferris -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties b/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties index f924a45c8..712780a1e 100644 --- a/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties +++ b/onebusaway-gtfs-transformer-cli/src/main/resources/simplelogger.properties @@ -1,16 +1,3 @@ -# Copyright 2008 Brian Ferris -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/onebusaway-gtfs/src/test/resources/simplelogger.properties b/onebusaway-gtfs/src/test/resources/simplelogger.properties index f924a45c8..712780a1e 100644 --- a/onebusaway-gtfs/src/test/resources/simplelogger.properties +++ b/onebusaway-gtfs/src/test/resources/simplelogger.properties @@ -1,16 +1,3 @@ -# Copyright 2008 Brian Ferris -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. # SLF4J's SimpleLogger configuration file # Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. # Default logging detail level for all instances of SimpleLogger. diff --git a/pom.xml b/pom.xml index 64e07b334..92321d583 100644 --- a/pom.xml +++ b/pom.xml @@ -200,6 +200,7 @@
LICENSE.txt
**/ci.yml + **/simplelogger.properties
From 4e22a29999badb1aa62d5f032bc41c4ce29eb453 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 11 Aug 2023 18:11:46 -0400 Subject: [PATCH 078/123] wrong way fixes --- .../onebusaway/gtfs/model/WrongWayConcurrency.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/WrongWayConcurrency.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/WrongWayConcurrency.java index 02b5da4c2..5d99702c5 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/WrongWayConcurrency.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/WrongWayConcurrency.java @@ -17,6 +17,8 @@ import org.onebusaway.csv_entities.schema.annotations.CsvField; import org.onebusaway.csv_entities.schema.annotations.CsvFields; +import org.onebusaway.gtfs.serialization.mappings.DefaultAgencyIdFieldMappingFactory; +import org.onebusaway.gtfs.serialization.mappings.EntityFieldMappingFactory; /** * An GTFS extension that allows for re-mapping of route + direction + stop @@ -30,9 +32,13 @@ public class WrongWayConcurrency extends IdentityBean { @CsvField(ignore = true) private int id; - private AgencyAndId routeId; + @CsvField(name = "route_id") + private String routeId; + @CsvField(name = "direction_id") private String directionId; + @CsvField(name = "from_stop_id", mapping = DefaultAgencyIdFieldMappingFactory.class) private AgencyAndId fromStopId; + @CsvField(name = "to_stop_id", mapping = DefaultAgencyIdFieldMappingFactory.class) private AgencyAndId toStopId; @Override @@ -45,11 +51,11 @@ public void setId(Integer id) { this.id = id; } - public AgencyAndId getRouteId() { + public String getRouteId() { return routeId; } - public void setRouteId(AgencyAndId routeId) { + public void setRouteId(String routeId) { this.routeId = routeId; } From c39523ccf94c05bfeb6670ca10187228cad12065 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 11 Aug 2023 19:53:24 -0400 Subject: [PATCH 079/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.5 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 7a54a8532..a1c072d0b 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5-SNAPSHOT + 1.4.5 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index b6757b86c..583973d2f 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5-SNAPSHOT + 1.4.5 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 150c91b00..df4dc288f 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.5-SNAPSHOT + 1.4.5 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 508ad6427..bdfa303ef 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.5-SNAPSHOT + 1.4.5 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 4194855bf..519798a8a 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5-SNAPSHOT + 1.4.5 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 08ff3a9eb..6f474aaa3 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5-SNAPSHOT + 1.4.5 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 59a81ebab..efb3625d3 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5-SNAPSHOT + 1.4.5 org.onebusaway onebusaway-gtfs - 1.4.5-SNAPSHOT + 1.4.5 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 36eeb75c0..165bec96f 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5-SNAPSHOT + 1.4.5 diff --git a/pom.xml b/pom.xml index 92321d583..df3d98691 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.5-SNAPSHOT + 1.4.5 pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.5 From ca90a9500d44a4233c873e2836d2cf95e4e5029b Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 11 Aug 2023 19:53:26 -0400 Subject: [PATCH 080/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index a1c072d0b..f1e44efba 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5 + 1.4.6-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 583973d2f..28aeba99c 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5 + 1.4.6-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index df4dc288f..731b71668 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.5 + 1.4.6-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index bdfa303ef..9a68cbe00 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.5 + 1.4.6-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 519798a8a..2201fcd4c 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5 + 1.4.6-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 6f474aaa3..35c393d44 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5 + 1.4.6-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index efb3625d3..c88ed6116 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5 + 1.4.6-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.5 + 1.4.6-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 165bec96f..992482f9a 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.5 + 1.4.6-SNAPSHOT diff --git a/pom.xml b/pom.xml index df3d98691..057c091b1 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.5 + 1.4.6-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.5 + HEAD From b5c1eb842e25a2cc5f1161365ff532d3e0dbddf4 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Mon, 18 Sep 2023 18:25:26 -0400 Subject: [PATCH 081/123] NYS-226 mark stops as accessible --- .../impl/MTAEntrancesStrategy.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java index f7f2781b0..db73ecb1a 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java @@ -82,7 +82,10 @@ public class MTAEntrancesStrategy implements GtfsTransformStrategy { @CsvField(ignore = true) private Set stopIdsWithPathways = new HashSet(); - + + @CsvField(ignore = true) + private Map complexStopIds = new HashMap<>(); + @CsvField(ignore = true) private String agencyId; @@ -128,6 +131,9 @@ public class MTAEntrancesStrategy implements GtfsTransformStrategy { @CsvField(optional = true) private int elevatorTraversalTime = 120; + @CsvField(optional = true) + private boolean markStopsAsAccessible = false; + public String getName() { return this.getClass().getName(); } @@ -226,6 +232,13 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { if (elevatorsCsv != null) { readElevatorData(stopGroups, getComplexList(dao)); } + + for (AgencyAndId aid : complexStopIds.keySet()) { + Stop stop = complexStopIds.get(aid); + stop.setWheelchairBoarding(WHEELCHAIR_ACCESSIBLE); + _log.info("marking stop {} as accessible", stop.getId()); + dao.saveEntity(stop); + } for (Stop s : newStops) { dao.saveEntity(s); @@ -572,6 +585,7 @@ private Map> getComplexList(GtfsDao dao) { if (stop == null) _log.info("null stop: {}", id); complex.add(stop); + this.complexStopIds.put(AgencyAndId.convertFromString(id), stop); } complexes.put("complex-" + UUID.randomUUID(), complex); } From 3e7cb04abbae576189fa2274bf55049073b74b65 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 19 Sep 2023 10:28:29 -0400 Subject: [PATCH 082/123] debugging NYS-226 --- .../onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java index db73ecb1a..9e8a27891 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java @@ -233,6 +233,7 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { readElevatorData(stopGroups, getComplexList(dao)); } + _log.info("found {} complex stops to mark as accessible", complexStopIds.size()); for (AgencyAndId aid : complexStopIds.keySet()) { Stop stop = complexStopIds.get(aid); stop.setWheelchairBoarding(WHEELCHAIR_ACCESSIBLE); @@ -579,6 +580,7 @@ private Map> getComplexList(GtfsDao dao) { try (BufferedReader br = new BufferedReader(new FileReader(new File(this.accessibleComplexFile)))) { String line; while ((line = br.readLine()) != null) { + _log.info("accessibleComplexFile line: " + line); List complex = new ArrayList<>(); for (String id : line.split(STOP_SEPARATOR)) { Stop stop = stops.get(id); From a678e86c6a5f7381309083f1baea631ea44a40fc Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 19 Sep 2023 17:01:46 -0400 Subject: [PATCH 083/123] NYS-226 fixes --- .../impl/MTAEntrancesStrategy.java | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java index 9e8a27891..84203308a 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java @@ -84,7 +84,7 @@ public class MTAEntrancesStrategy implements GtfsTransformStrategy { private Set stopIdsWithPathways = new HashSet(); @CsvField(ignore = true) - private Map complexStopIds = new HashMap<>(); + private Map complexStopIds = new HashMap<>(); @CsvField(ignore = true) private String agencyId; @@ -113,6 +113,10 @@ public class MTAEntrancesStrategy implements GtfsTransformStrategy { private boolean contextualAccessibility; + @CsvField(optional = true) + private boolean markStopsAccessible = false; + + @CsvField(optional = true) private boolean skipStopsWithExistingPathways = true; @@ -131,9 +135,6 @@ public class MTAEntrancesStrategy implements GtfsTransformStrategy { @CsvField(optional = true) private int elevatorTraversalTime = 120; - @CsvField(optional = true) - private boolean markStopsAsAccessible = false; - public String getName() { return this.getClass().getName(); } @@ -166,6 +167,7 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { } } + _log.info("elevatorCsv={}, entrancesCsv={}, accessibleComplexFile={}", elevatorsCsv, entrancesCsv, accessibleComplexFile); agencyId = dao.getAllAgencies().iterator().next().getId(); newStops = new HashSet<>(); @@ -233,12 +235,15 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { readElevatorData(stopGroups, getComplexList(dao)); } - _log.info("found {} complex stops to mark as accessible", complexStopIds.size()); - for (AgencyAndId aid : complexStopIds.keySet()) { - Stop stop = complexStopIds.get(aid); - stop.setWheelchairBoarding(WHEELCHAIR_ACCESSIBLE); - _log.info("marking stop {} as accessible", stop.getId()); - dao.saveEntity(stop); + _log.info("found {} complex stops to mark as accessible and mark={}", + complexStopIds.size(), markStopsAccessible); + if (markStopsAccessible) { + for (String idOnly : complexStopIds.keySet()) { + Stop stop = complexStopIds.get(idOnly); + stop.setWheelchairBoarding(WHEELCHAIR_ACCESSIBLE); + _log.info("marking stop {} as accessible", stop.getId()); + dao.updateEntity(stop); + } } for (Stop s : newStops) { @@ -580,14 +585,13 @@ private Map> getComplexList(GtfsDao dao) { try (BufferedReader br = new BufferedReader(new FileReader(new File(this.accessibleComplexFile)))) { String line; while ((line = br.readLine()) != null) { - _log.info("accessibleComplexFile line: " + line); List complex = new ArrayList<>(); for (String id : line.split(STOP_SEPARATOR)) { Stop stop = stops.get(id); if (stop == null) _log.info("null stop: {}", id); complex.add(stop); - this.complexStopIds.put(AgencyAndId.convertFromString(id), stop); + this.complexStopIds.put(id, stop); } complexes.put("complex-" + UUID.randomUUID(), complex); } @@ -600,7 +604,7 @@ private Map> getComplexList(GtfsDao dao) { private Map getStopMap(GtfsDao dao) { Map map = new HashMap<>(); for (Stop stop : dao.getAllStops()) { - if (stop.getLocationType() == 0) { + if (stop.getLocationType() == LOCATION_TYPE_STOP) { map.put(stop.getId().getId(), stop); } } @@ -759,5 +763,9 @@ public void setContextualAccessibility(boolean contextualAccessibility) { private String getNamespace(){ return System.getProperty("cloudwatch.namespace"); } + + public void setMarkStopsAccessible(boolean flag) { + markStopsAccessible = flag; + } } From f4809ebb2ddd5f5903c5c2ce00353ec63ef5e51f Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 19 Sep 2023 17:08:40 -0400 Subject: [PATCH 084/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.6 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index f1e44efba..ce591fbf3 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6-SNAPSHOT + 1.4.6 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 28aeba99c..31806ca63 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6-SNAPSHOT + 1.4.6 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 731b71668..58aee4fd8 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.6-SNAPSHOT + 1.4.6 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 9a68cbe00..92982e292 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.6-SNAPSHOT + 1.4.6 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 2201fcd4c..ada406523 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6-SNAPSHOT + 1.4.6 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 35c393d44..302456562 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6-SNAPSHOT + 1.4.6 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index c88ed6116..e8d38ec5f 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6-SNAPSHOT + 1.4.6 org.onebusaway onebusaway-gtfs - 1.4.6-SNAPSHOT + 1.4.6 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 992482f9a..fee7ee6bc 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6-SNAPSHOT + 1.4.6 diff --git a/pom.xml b/pom.xml index 057c091b1..51a303285 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.6-SNAPSHOT + 1.4.6 pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.6 From c94e5c77fbf6512e5e099bcad1ad75bd65e05de3 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 19 Sep 2023 17:08:42 -0400 Subject: [PATCH 085/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index ce591fbf3..ef3177724 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6 + 1.4.7-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 31806ca63..20a90c555 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6 + 1.4.7-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 58aee4fd8..ed3e32e0a 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.6 + 1.4.7-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 92982e292..3854e2007 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.6 + 1.4.7-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index ada406523..f19db50fe 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6 + 1.4.7-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 302456562..777e27ada 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6 + 1.4.7-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index e8d38ec5f..6b952ccb9 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6 + 1.4.7-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.6 + 1.4.7-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index fee7ee6bc..3947cd875 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.6 + 1.4.7-SNAPSHOT diff --git a/pom.xml b/pom.xml index 51a303285..5be968a49 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.6 + 1.4.7-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.6 + HEAD From a4aba370c3f7c078607afe2f4cb41686093b4efe Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 20 Sep 2023 14:55:56 -0400 Subject: [PATCH 086/123] Another strategy for NYS-226 station accessibility --- .../gtfs_transformer/csv/MTAStation.java | 255 ++++++++++++++++++ .../impl/MTAEntrancesStrategy.java | 4 +- .../impl/MTAStationAccessibilityStrategy.java | 128 +++++++++ 3 files changed, 385 insertions(+), 2 deletions(-) create mode 100644 onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/csv/MTAStation.java create mode 100644 onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/csv/MTAStation.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/csv/MTAStation.java new file mode 100644 index 000000000..f04f69000 --- /dev/null +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/csv/MTAStation.java @@ -0,0 +1,255 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_transformer.csv; + +import org.onebusaway.csv_entities.schema.annotations.CsvField; + +/** + * Metadata about an MTA Station. + * + * See https://new.mta.info/developers/display-elevators-NYCT + */ +public class MTAStation { + + public static final int ADA_NOT_ACCESSIBLE = 0; + public static final int ADA_FULLY_ACCESSIBLE = 1; + public static final int ADA_PARTIALLY_ACCESSIBLE = 2; + + private static final int MISSING_VALUE = -999; + @CsvField(name = "Station ID") + private int id; + + @CsvField(name = "Complex ID") + private int complexId; + + @CsvField(name = "GTFS Stop ID") + private String stopId; + + @CsvField(name = "Division") + private String division; + + @CsvField(name = "Line") + private String line; + + @CsvField(name = "Stop Name") + private String stopName; + + @CsvField(name = "Borough") + private String borough; + + @CsvField(name = "Daytime Routes") + private String daytimeRoutes; + + @CsvField(name = "Structure") + private String structure; + + @CsvField(name = "GTFS Latitude") + private double lat; + + @CsvField(name = "GTFS Longitude") + private double lon; + + @CsvField(name = "North Direction Label", optional = true) + private String northDirection; + + @CsvField(name = "South Direction Label", optional = true) + private String southDirection; + + /** + * Look at the ADA column. + * + * 0 means it’s not accessible, + * 1 means it is fully accessible, and + * 2 means it is partially accessible. Partially accessible stations are usually accessible in one direction. + */ + @CsvField(name = "ADA") + private int ada; + + @CsvField(name = "ADA Direction Notes", optional = true) + private String adaDirectionNotes; + + /** + * If ADA_PARTIALLY_ACCESSIBLE and this is 1, this + * station is accessible + */ + @CsvField(name = "ADA NB", optional = true) + private int adaNorthBound = MISSING_VALUE; + + /** + * If ADA_PARTIALLY_ACCESSIBLE and this is 1, this + * station is accessible + */ + @CsvField(name = "ADA SB", optional = true) + private int adaSouthBound = MISSING_VALUE; + + @CsvField(name = "Capital Outage NB", optional = true) + private String capitalOutageNB; + + @CsvField(name = "Capital Outage SB", optional = true) + private String capitalOutageSB; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getComplexId() { + return complexId; + } + + public void setComplexId(int complexId) { + this.complexId = complexId; + } + + public String getStopId() { + return stopId; + } + + public void setStopId(String stopId) { + this.stopId = stopId; + } + + public String getDivision() { + return division; + } + + public void setDivision(String division) { + this.division = division; + } + + public String getLine() { + return line; + } + + public void setLine(String line) { + this.line = line; + } + + public String getStopName() { + return stopName; + } + + public void setStopName(String stopName) { + this.stopName = stopName; + } + + public String getBorough() { + return borough; + } + + public void setBorough(String borough) { + this.borough = borough; + } + + public String getDaytimeRoutes() { + return daytimeRoutes; + } + + public void setDaytimeRoutes(String daytimeRoutes) { + this.daytimeRoutes = daytimeRoutes; + } + + public String getStructure() { + return structure; + } + + public void setStructure(String structure) { + this.structure = structure; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public double getLon() { + return lon; + } + + public void setLon(double lon) { + this.lon = lon; + } + + public String getNorthDirection() { + return northDirection; + } + + public void setNorthDirection(String northDirection) { + this.northDirection = northDirection; + } + + public String getSouthDirection() { + return southDirection; + } + + public void setSouthDirection(String southDirection) { + this.southDirection = southDirection; + } + + public int getAda() { + return ada; + } + + public void setAda(int ada) { + this.ada = ada; + } + + public String getAdaDirectionNotes() { + return adaDirectionNotes; + } + + public void setAdaDirectionNotes(String adaDirectionNotes) { + this.adaDirectionNotes = adaDirectionNotes; + } + + public int getAdaNorthBound() { + return adaNorthBound; + } + + public void setAdaNorthBound(int adaNorthBound) { + this.adaNorthBound = adaNorthBound; + } + + public int getAdaSouthBound() { + return adaSouthBound; + } + + public void setAdaSouthBound(int adaSouthBound) { + this.adaSouthBound = adaSouthBound; + } + + public String getCapitalOutageNB() { + return capitalOutageNB; + } + + public void setCapitalOutageNB(String capitalOutageNB) { + this.capitalOutageNB = capitalOutageNB; + } + + public String getCapitalOutageSB() { + return capitalOutageSB; + } + + public void setCapitalOutageSB(String capitalOutageSB) { + this.capitalOutageSB = capitalOutageSB; + } +} diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java index 84203308a..e2eebf49d 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAEntrancesStrategy.java @@ -68,8 +68,8 @@ public class MTAEntrancesStrategy implements GtfsTransformStrategy { private static final int LOCATION_TYPE_PAYGATE = 3; private static final int LOCATION_TYPE_GENERIC = 4; - private static final int WHEELCHAIR_ACCESSIBLE = 1; - private static final int NOT_WHEELCHAIR_ACCESSIBLE = 2; + static final int WHEELCHAIR_ACCESSIBLE = 1; + static final int NOT_WHEELCHAIR_ACCESSIBLE = 2; private static final String DEFAULT_MEZZ = "default"; diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java new file mode 100644 index 000000000..16d701e7c --- /dev/null +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java @@ -0,0 +1,128 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_transformer.impl; + +import org.onebusaway.cloud.api.ExternalServices; +import org.onebusaway.cloud.api.ExternalServicesBridgeFactory; +import org.onebusaway.csv_entities.schema.annotations.CsvField; +import org.onebusaway.gtfs.model.FeedInfo; +import org.onebusaway.gtfs.model.Stop; +import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; +import org.onebusaway.gtfs_transformer.csv.MTAStation; +import org.onebusaway.gtfs_transformer.services.GtfsTransformStrategy; +import org.onebusaway.gtfs_transformer.services.TransformContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.util.*; + +import static org.onebusaway.gtfs_transformer.csv.CSVUtil.readCsv; +import static org.onebusaway.gtfs_transformer.impl.MTAEntrancesStrategy.WHEELCHAIR_ACCESSIBLE; + +/** + * Based on a CSV of MTAStations set the associated stops accessible as specified. + */ +public class MTAStationAccessibilityStrategy implements GtfsTransformStrategy { + + private static final Logger _log = LoggerFactory.getLogger(MTAStationAccessibilityStrategy.class); + private String stationsCsv; + + @CsvField(ignore = true) + private Set accessibleStops = new HashSet<>(); + + @CsvField(ignore = true) + private Map idToStopMap = new HashMap<>(); + + @Override + public String getName() { + return this.getClass().getName(); + } + + @Override + public void run(TransformContext context, GtfsMutableRelationalDao dao) { + + ExternalServices es = new ExternalServicesBridgeFactory().getExternalServices(); + Collection feedInfos = dao.getAllFeedInfos(); + + // name the feed for logging/reference + String feed = null; + if(feedInfos.size() > 0) + feed = feedInfos.iterator().next().getPublisherName(); + + // stops are unqualified, build up a map of them for lookups + for (Stop stop : dao.getAllStops()) { + idToStopMap.put(stop.getId().getId(), stop); + } + + File stationsFile = new File(stationsCsv); + if (!stationsFile.exists()) { + es.publishMultiDimensionalMetric(getNamespace(), "MissingControlFiles", + new String[]{"feed", "controlFileName"}, + new String[]{feed, stationsCsv}, 1); + throw new IllegalStateException( + "Entrances file does not exist: " + stationsFile.getName()); + } + + // we have a file, load the contents + List stations = getStations(); + for (MTAStation station : stations) { + if (station.getAda() == MTAStation.ADA_FULLY_ACCESSIBLE) { + markStopAccessible(dao, station.getStopId(), "N"); + markStopAccessible(dao, station.getStopId(), "S"); + } else if (station.getAda() == MTAStation.ADA_PARTIALLY_ACCESSIBLE) { + if (station.getAdaNorthBound() == WHEELCHAIR_ACCESSIBLE) { + markStopAccessible(dao, station.getStopId(), "N"); + } + if (station.getAdaSouthBound() == WHEELCHAIR_ACCESSIBLE) { + markStopAccessible(dao, station.getStopId(), "S"); + } + } + } + + _log.info("marking {} stops as accessible", accessibleStops.size()); + for (Stop accessibleStop : this.accessibleStops) { + // save the changes + dao.updateEntity(accessibleStop); + } + + } + + private void markStopAccessible(GtfsMutableRelationalDao dao, String stopId, String compassDirection) { + String unqualifedStopId = stopId + compassDirection; + Stop stopForId = idToStopMap.get(unqualifedStopId); + if (stopForId == null) { + _log.error("no such stop for stopId {}", unqualifedStopId); + return; + } + stopForId.setWheelchairBoarding(WHEELCHAIR_ACCESSIBLE); + this.accessibleStops.add(stopForId); + } + + + private List getStations() { + return readCsv(MTAStation.class, stationsCsv); + } + + public void setStationsCsv(String stationsCsv) { + this.stationsCsv = stationsCsv; + } + + private String getNamespace(){ + return System.getProperty("cloudwatch.namespace"); + } + +} From e474459a45c7cf3682d102e249c3ea1f1ccf2205 Mon Sep 17 00:00:00 2001 From: Merhatsidk Ayele Date: Mon, 25 Sep 2023 17:07:21 -0400 Subject: [PATCH 087/123] Added support for tts_stop_name in stops.txt. --- .../onebusaway/gtfs/model/GtfsMapping.hibernate.xml | 1 + .../src/main/java/org/onebusaway/gtfs/model/Stop.java | 11 +++++++++++ .../onebusaway/gtfs/serialization/GtfsReaderTest.java | 6 ++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/onebusaway-gtfs-hibernate/src/main/resources/org/onebusaway/gtfs/model/GtfsMapping.hibernate.xml b/onebusaway-gtfs-hibernate/src/main/resources/org/onebusaway/gtfs/model/GtfsMapping.hibernate.xml index 41dc7b983..d17e6902d 100644 --- a/onebusaway-gtfs-hibernate/src/main/resources/org/onebusaway/gtfs/model/GtfsMapping.hibernate.xml +++ b/onebusaway-gtfs-hibernate/src/main/resources/org/onebusaway/gtfs/model/GtfsMapping.hibernate.xml @@ -208,6 +208,7 @@ + diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Stop.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Stop.java index 499e33b70..099943b89 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Stop.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Stop.java @@ -96,6 +96,8 @@ public final class Stop extends IdentityBean implements StopLocatio @CsvField(optional = true, name = "regional_fare_card", defaultValue = "0") private int regionalFareCardAccepted; + @CsvField(optional = true, name = "tts_stop_name") + private String ttsStopName; public Stop() { @@ -120,6 +122,7 @@ public Stop(Stop obj) { this.level = obj.level; this.mtaStopId = obj.mtaStopId; this.regionalFareCardAccepted = obj.regionalFareCardAccepted; + this.ttsStopName = obj.ttsStopName; } public AgencyAndId getId() { @@ -290,4 +293,12 @@ public int getRegionalFareCardAccepted() { public void setRegionalFareCardAccepted(int regionalFareCardAccepted) { this.regionalFareCardAccepted = regionalFareCardAccepted; } + + public String getTtsStopName() { + return ttsStopName; + } + + public void setTtsStopName(String ttsStopName) { + this.ttsStopName = ttsStopName; + } } diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java index 7d3fbbb4b..dc6b7724f 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/GtfsReaderTest.java @@ -68,8 +68,8 @@ public void testAllFields() throws IOException { gtfs.putLines( "stops.txt", "stop_id,stop_name,stop_lat,stop_lon,stop_desc,stop_code,stop_direction,location_type,parent_station," - + "stop_url,wheelchair_boarding,zone_id,stop_timezone,vehicle_type,platform_code,level_id", - "S1,Stop,47.0,-122.0,description,123,N,1,1234,http://agency.gov/stop,1,Z,America/New_York,2,9 3/4,L1"); + + "stop_url,wheelchair_boarding,zone_id,stop_timezone,vehicle_type,platform_code,level_id,tts_stop_name", + "S1,Stop,47.0,-122.0,description,123,N,1,1234,http://agency.gov/stop,1,Z,America/New_York,2,9 3/4,L1,southwest one hundred twenty fifth & longhorn"); gtfs.putLines( "routes.txt", "agency_id,route_id,route_short_name,route_long_name,route_type,route_desc,route_color,route_text_color," @@ -184,6 +184,8 @@ public void testAllFields() throws IOException { assertEquals(2, stop.getVehicleType()); assertEquals("9 3/4", stop.getPlatformCode()); assertEquals(level, stop.getLevel()); + assertEquals("southwest one hundred twenty fifth & longhorn",stop.getTtsStopName()); + Route route = dao.getRouteForId(new AgencyAndId("1", "R1")); assertEquals(new AgencyAndId("1", "R1"), route.getId()); From ef78c67336bc7bc8f597627daa25de6c9d2808bf Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sat, 30 Sep 2023 07:21:07 -0400 Subject: [PATCH 088/123] NYS-233 implement partial ADA access for MTA Stations --- .../impl/MTAStationAccessibilityStrategy.java | 31 ++++--- .../MTAStationAccessibilityStrategyTest.java | 81 +++++++++++++++++++ .../gtfs_transformer/stations/stations.csv | 5 ++ .../onebusaway/gtfs/services/MockGtfs.java | 30 +++++++ 4 files changed, 135 insertions(+), 12 deletions(-) create mode 100644 onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/MTAStationAccessibilityStrategyTest.java create mode 100644 onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/stations/stations.csv diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java index 16d701e7c..b22fd7201 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java @@ -31,7 +31,7 @@ import java.util.*; import static org.onebusaway.gtfs_transformer.csv.CSVUtil.readCsv; -import static org.onebusaway.gtfs_transformer.impl.MTAEntrancesStrategy.WHEELCHAIR_ACCESSIBLE; +import static org.onebusaway.gtfs_transformer.csv.MTAStation.*; /** * Based on a CSV of MTAStations set the associated stops accessible as specified. @@ -77,18 +77,24 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { "Entrances file does not exist: " + stationsFile.getName()); } - // we have a file, load the contents + // see MTAStationAccessibilityStrategyTest for discussion of how this works List stations = getStations(); for (MTAStation station : stations) { - if (station.getAda() == MTAStation.ADA_FULLY_ACCESSIBLE) { - markStopAccessible(dao, station.getStopId(), "N"); - markStopAccessible(dao, station.getStopId(), "S"); - } else if (station.getAda() == MTAStation.ADA_PARTIALLY_ACCESSIBLE) { - if (station.getAdaNorthBound() == WHEELCHAIR_ACCESSIBLE) { - markStopAccessible(dao, station.getStopId(), "N"); + markStopAccessible(dao, station.getStopId(), "", station.getAda()); + if (ADA_NOT_ACCESSIBLE == station.getAda() + || ADA_FULLY_ACCESSIBLE == station.getAda()) { + markStopAccessible(dao, station.getStopId(), "N", station.getAda()); + markStopAccessible(dao, station.getStopId(), "S", station.getAda()); + } else if (ADA_PARTIALLY_ACCESSIBLE == station.getAda()) { + if (station.getAdaNorthBound() < 0) { + markStopAccessible(dao, station.getStopId(), "N", ADA_NOT_ACCESSIBLE); + } else { + markStopAccessible(dao, station.getStopId(), "N", station.getAdaNorthBound()); } - if (station.getAdaSouthBound() == WHEELCHAIR_ACCESSIBLE) { - markStopAccessible(dao, station.getStopId(), "S"); + if (station.getAdaSouthBound() < 0) { + markStopAccessible(dao, station.getStopId(), "S", ADA_NOT_ACCESSIBLE); + } else { + markStopAccessible(dao, station.getStopId(), "S", station.getAdaSouthBound()); } } } @@ -101,14 +107,15 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { } - private void markStopAccessible(GtfsMutableRelationalDao dao, String stopId, String compassDirection) { + private void markStopAccessible(GtfsMutableRelationalDao dao, String stopId, String compassDirection, + int accessibilityQualifier) { String unqualifedStopId = stopId + compassDirection; Stop stopForId = idToStopMap.get(unqualifedStopId); if (stopForId == null) { _log.error("no such stop for stopId {}", unqualifedStopId); return; } - stopForId.setWheelchairBoarding(WHEELCHAIR_ACCESSIBLE); + stopForId.setWheelchairBoarding(accessibilityQualifier); this.accessibleStops.add(stopForId); } diff --git a/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/MTAStationAccessibilityStrategyTest.java b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/MTAStationAccessibilityStrategyTest.java new file mode 100644 index 000000000..68eccf6c4 --- /dev/null +++ b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/MTAStationAccessibilityStrategyTest.java @@ -0,0 +1,81 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_transformer.updates; + +import org.junit.Before; +import org.junit.Test; +import org.onebusaway.gtfs.model.AgencyAndId; +import org.onebusaway.gtfs.model.Stop; +import org.onebusaway.gtfs.services.GtfsRelationalDao; +import org.onebusaway.gtfs_transformer.AbstractTestSupport; + +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * Document and test partial and fully accessible MTAStations. + */ +public class MTAStationAccessibilityStrategyTest extends AbstractTestSupport { + + @Before + public void setup() throws Exception { + File stations_csv = new File(getClass().getResource( + "/org/onebusaway/gtfs_transformer/stations/stations.csv").toURI()); + addModification("{\"op\": \"transform\", \"class\":\"org.onebusaway.gtfs_transformer.impl.MTAStationAccessibilityStrategy\", \"stations_csv\": \""+stations_csv+"\"}"); + } + + @Test + public void testStations() throws Exception { + _gtfs.putAgencies(1); + _gtfs.putNamedStops("R15,49 St", "A25,50 St", "233,Hoyt St", "626,86 St", + "R15N,49 St", "A25N,50 St", "233N,Hoyt St", "626N,86 St", + "R15S,49 St", "A25S,50 St", "233S,Hoyt St", "626S,86 St"); + _gtfs.putRoutes(1); + _gtfs.putTrips(12, "r0", "sid0"); + _gtfs.putStopTimes("t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11", "R15,A25,233,626,R15N,A25N,233N,626N,R15S,A25S,233S,626S"); + _gtfs.putCalendars(1, "start_date=20120903", "end_date=20120916"); + + GtfsRelationalDao dao = transform(); + assertStation(dao, "R15", 2, 1, 0); // 49 St (ADA=2, ADA NB=1, ADA SB=0) + assertStation(dao, "A25", 2, 0, 1); // 50 St (ADA=2, ADA NB=0, ADA SB=1 + assertStation(dao, "233", 2, null, null); // Hoyt St (ADA=2, ADA NB=blank, ADA SB=blank) + assertStation(dao, "626", 2, 2, 0); // 86 St (ADA=2, ADA NB=2, ADA SB=0) + } + + private void assertStation(GtfsRelationalDao dao, String stopId, int ada, Integer northBoundFlag, Integer southBoundFlag) { + Stop parentStop = dao.getStopForId(new AgencyAndId("a0", stopId)); + assertNotNull(parentStop); + Stop nStop = dao.getStopForId(new AgencyAndId("a0", stopId+"N")); + assertNotNull(nStop); + Stop sStop = dao.getStopForId(new AgencyAndId("a0", stopId+"S")); + assertNotNull(sStop); + + assertEquals("expecting ada flag to match wheelchairBoarding flag for stop " + parentStop.getId(), + ada, parentStop.getWheelchairBoarding()); + if (northBoundFlag == null) { + assertEquals("expecting N/A wheelchairBoarding for northbound stop " + nStop,0, nStop.getWheelchairBoarding()); // default is 0 + } else { + assertEquals("expecting northBoundFlag to match wheelchairBoarding flag for stop" + nStop, northBoundFlag.intValue(), nStop.getWheelchairBoarding()); + } + if (southBoundFlag == null) { + assertEquals("expecting N/A wheelchairBoarding for southbound stop " + sStop,0, sStop.getWheelchairBoarding()); + } else { + assertEquals("expecting southBoundFlag to match wheelchairBoarding flag for stop" + sStop, southBoundFlag.intValue(), sStop.getWheelchairBoarding()); + } + } +} diff --git a/onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/stations/stations.csv b/onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/stations/stations.csv new file mode 100644 index 000000000..fa95d282e --- /dev/null +++ b/onebusaway-gtfs-transformer/src/test/resources/org/onebusaway/gtfs_transformer/stations/stations.csv @@ -0,0 +1,5 @@ +Station ID,Complex ID,GTFS Stop ID,Division,Line,Stop Name,Borough,Daytime Routes,Structure,GTFS Latitude,GTFS Longitude,North Direction Label,South Direction Label,ADA,ADA Direction Notes,ADA NB,ADA SB,Capital Outage NB,Capital Outage SB +10,10,R15,BMT,Broadway - Brighton,49 St,M,N R W,Subway,40.759901,-73.984139,Uptown & Queens,Downtown & Brooklyn,2,Uptown & Queens,1,0,, +162,162,A25,IND,8th Av - Fulton St,50 St,M,C E,Subway,40.762456,-73.985984,Uptown - Queens,Downtown & Brooklyn,2,Downtown & Brooklyn only,0,1,, +336,336,233,IRT,Eastern Pky,Hoyt St,Bk,2 3,Subway,40.690545,-73.985065,Manhattan,Flatbush - New Lots,2,,,,, +397,397,626,IRT,Lexington Av,86 St,M,4 5 6,Subway,40.779492,-73.955589,Uptown & The Bronx,Downtown & Brooklyn,2,Uptown & The Bronx local only,2,0,, diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/MockGtfs.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/MockGtfs.java index 268274a53..844cb3dfc 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/MockGtfs.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/MockGtfs.java @@ -164,6 +164,36 @@ public void putStops(int numberOfRows, String... columns) { putFile("stops.txt", b.build()); } + /** + * specify stop_id and stop_name, have stop generated with fake lat/lon + * @param rows + */ + public void putNamedStops(String...rows) { + int numberOfRows = rows.length; + List stopIds = new ArrayList<>(); + List stopNames = new ArrayList<>(); + List stopLats = new ArrayList(); + List stopLons = new ArrayList(); + TableBuilder b = new TableBuilder(numberOfRows); + for (String column : rows) { + String[] parts = column.split(","); + stopIds.add(parts[0]); + stopNames.add(parts[1]); + } + for (int i = 0; i < numberOfRows; ++i) { + double lat = 47.65383950857904 + 0.004 * i; + double lon = -122.30782950811766; + stopLats.add(Double.toString(lat)); + stopLons.add(Double.toString(lon)); + } + + b.addColumnSpec("stop_id", stopIds); + b.addColumnSpec("stop_name", stopNames); + b.addColumnSpec("stop_lat", stopLats); + b.addColumnSpec("stop_lon", stopLons); + putFile("stops.txt", b.build()); + } + public void putDefaultStops() { putDefaultAgencies(); putLines("stops.txt", "stop_id,stop_name,stop_lat,stop_lon", From 5bbf4c03cfd5c70e7a473a0775afcaf8208f92a1 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sun, 1 Oct 2023 09:07:04 -0400 Subject: [PATCH 089/123] NYS-233 fix: MTA values translated to GTFS values --- .../gtfs_transformer/csv/MTAStation.java | 5 +++ .../impl/MTAStationAccessibilityStrategy.java | 29 ++++++++++++++--- .../MTAStationAccessibilityStrategyTest.java | 31 ++++++++++++++++--- 3 files changed, 56 insertions(+), 9 deletions(-) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/csv/MTAStation.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/csv/MTAStation.java index f04f69000..ad97e4254 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/csv/MTAStation.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/csv/MTAStation.java @@ -28,6 +28,11 @@ public class MTAStation { public static final int ADA_FULLY_ACCESSIBLE = 1; public static final int ADA_PARTIALLY_ACCESSIBLE = 2; + public static final int GTFS_WHEELCHAIR_UNKNOWN = 0; + public static final int GTFS_WHEELCHAIR_ACCESSIBLE = 1; + public static final int GTFS_WHEELCHAIR_NOT_ACCESSIBLE = 2; + public static final int GTFS_WHEELCHAIR_EXPERIMENTAL_PARTIALLY_ACCESSIBLE = 3; + private static final int MISSING_VALUE = -999; @CsvField(name = "Station ID") private int id; diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java index b22fd7201..5b813ec2a 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/MTAStationAccessibilityStrategy.java @@ -109,16 +109,37 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { private void markStopAccessible(GtfsMutableRelationalDao dao, String stopId, String compassDirection, int accessibilityQualifier) { - String unqualifedStopId = stopId + compassDirection; - Stop stopForId = idToStopMap.get(unqualifedStopId); + int gtfsValue = convertMTAccessibilityToGTFS(accessibilityQualifier); + String unqualifiedStopId = stopId + compassDirection; + Stop stopForId = idToStopMap.get(unqualifiedStopId); if (stopForId == null) { - _log.error("no such stop for stopId {}", unqualifedStopId); + _log.error("no such stop for stopId {}", unqualifiedStopId); return; } - stopForId.setWheelchairBoarding(accessibilityQualifier); + stopForId.setWheelchairBoarding(gtfsValue); this.accessibleStops.add(stopForId); } + /** + * MTA 0 -> GTFS 2 + * MTA 1 -> GTFS 1 + * MTA 2 -> GTFS 3 (experimental) + * @param accessibilityQualifier + * @return + */ + public int convertMTAccessibilityToGTFS(int accessibilityQualifier) { + switch (accessibilityQualifier) { + case ADA_NOT_ACCESSIBLE: + return GTFS_WHEELCHAIR_NOT_ACCESSIBLE; + case ADA_FULLY_ACCESSIBLE: + return GTFS_WHEELCHAIR_ACCESSIBLE; + case ADA_PARTIALLY_ACCESSIBLE: + return GTFS_WHEELCHAIR_EXPERIMENTAL_PARTIALLY_ACCESSIBLE; + default: + return GTFS_WHEELCHAIR_UNKNOWN; + } + } + private List getStations() { return readCsv(MTAStation.class, stationsCsv); diff --git a/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/MTAStationAccessibilityStrategyTest.java b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/MTAStationAccessibilityStrategyTest.java index 68eccf6c4..176e8eceb 100644 --- a/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/MTAStationAccessibilityStrategyTest.java +++ b/onebusaway-gtfs-transformer/src/test/java/org/onebusaway/gtfs_transformer/updates/MTAStationAccessibilityStrategyTest.java @@ -26,6 +26,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.onebusaway.gtfs_transformer.csv.MTAStation.*; /** * Document and test partial and fully accessible MTAStations. @@ -66,16 +67,36 @@ private void assertStation(GtfsRelationalDao dao, String stopId, int ada, Intege assertNotNull(sStop); assertEquals("expecting ada flag to match wheelchairBoarding flag for stop " + parentStop.getId(), - ada, parentStop.getWheelchairBoarding()); + ada, converGTFSccessibilityToMTA(parentStop.getWheelchairBoarding())); if (northBoundFlag == null) { - assertEquals("expecting N/A wheelchairBoarding for northbound stop " + nStop,0, nStop.getWheelchairBoarding()); // default is 0 + assertEquals("expecting N/A wheelchairBoarding for northbound stop " + nStop,0, converGTFSccessibilityToMTA(nStop.getWheelchairBoarding())); // default is 0 } else { - assertEquals("expecting northBoundFlag to match wheelchairBoarding flag for stop" + nStop, northBoundFlag.intValue(), nStop.getWheelchairBoarding()); + assertEquals("expecting northBoundFlag to match wheelchairBoarding flag for stop" + nStop, northBoundFlag.intValue(), converGTFSccessibilityToMTA(nStop.getWheelchairBoarding())); } if (southBoundFlag == null) { - assertEquals("expecting N/A wheelchairBoarding for southbound stop " + sStop,0, sStop.getWheelchairBoarding()); + assertEquals("expecting N/A wheelchairBoarding for southbound stop " + sStop,0, converGTFSccessibilityToMTA(sStop.getWheelchairBoarding())); } else { - assertEquals("expecting southBoundFlag to match wheelchairBoarding flag for stop" + sStop, southBoundFlag.intValue(), sStop.getWheelchairBoarding()); + assertEquals("expecting southBoundFlag to match wheelchairBoarding flag for stop" + sStop, southBoundFlag.intValue(), converGTFSccessibilityToMTA(sStop.getWheelchairBoarding())); + } + } + + /** + * GTFS 1 -> MTA 1 + * GTFS 2 -> MTA 0 + * GTFS 3 -> MTA 2 + * @param gtfsValue + * @return + */ + private int converGTFSccessibilityToMTA(int gtfsValue) { + switch (gtfsValue) { + case 1: + return ADA_FULLY_ACCESSIBLE; + case 2: + return ADA_NOT_ACCESSIBLE; + case 3: + return ADA_PARTIALLY_ACCESSIBLE; + default: + return 0;// unknown } } } From fd2b7d83acec808ed8c6a259f8663198d42d34b7 Mon Sep 17 00:00:00 2001 From: Merhatsidk Ayele Date: Thu, 5 Oct 2023 09:05:39 -0400 Subject: [PATCH 090/123] Created Alternate_stop_names_exceptions object. --- .../model/Alternate_stop_names_exceptions.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Alternate_stop_names_exceptions.java diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Alternate_stop_names_exceptions.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Alternate_stop_names_exceptions.java new file mode 100644 index 000000000..5acdd2b79 --- /dev/null +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Alternate_stop_names_exceptions.java @@ -0,0 +1,14 @@ +package org.onebusaway.gtfs.model; + +import org.onebusaway.csv_entities.schema.annotations.CsvField; +import org.onebusaway.csv_entities.schema.annotations.CsvFields; + +@CsvFields(filename = "alternate_stop_names_exceptions.txt", required = false) +public class Alternate_stop_names_exceptions { + + @CsvField(ignore = true) + private int id; + + @CsvField(optional = true) + int routeId; +} From d630005b8dcf36e681ae035a0f664dcaeb216f20 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Thu, 5 Oct 2023 16:33:14 -0400 Subject: [PATCH 091/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.7 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index ef3177724..edaa748da 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7-SNAPSHOT + 1.4.7 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 20a90c555..1d7d634ef 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7-SNAPSHOT + 1.4.7 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index ed3e32e0a..bfaef0d96 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.7-SNAPSHOT + 1.4.7 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 3854e2007..602c45ca4 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.7-SNAPSHOT + 1.4.7 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index f19db50fe..443295a3e 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7-SNAPSHOT + 1.4.7 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 777e27ada..7f674cb6f 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7-SNAPSHOT + 1.4.7 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 6b952ccb9..f1c355518 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7-SNAPSHOT + 1.4.7 org.onebusaway onebusaway-gtfs - 1.4.7-SNAPSHOT + 1.4.7 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 3947cd875..d70db0d78 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7-SNAPSHOT + 1.4.7 diff --git a/pom.xml b/pom.xml index 5be968a49..631425cf3 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.7-SNAPSHOT + 1.4.7 pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.7 From 19ab954f568d910e2504ed6590de1c97d61b4a10 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Thu, 5 Oct 2023 16:33:16 -0400 Subject: [PATCH 092/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index edaa748da..692e8a579 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7 + 1.4.8-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 1d7d634ef..e8b296d8b 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7 + 1.4.8-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index bfaef0d96..6133ab560 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.7 + 1.4.8-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 602c45ca4..b6bf7b837 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.7 + 1.4.8-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 443295a3e..073c8f1cc 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7 + 1.4.8-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 7f674cb6f..a9c17963b 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7 + 1.4.8-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index f1c355518..dc6ba4334 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7 + 1.4.8-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.7 + 1.4.8-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index d70db0d78..679464b66 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.7 + 1.4.8-SNAPSHOT diff --git a/pom.xml b/pom.xml index 631425cf3..b13739a0e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.7 + 1.4.8-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.7 + HEAD From d891ab6a570bcaaf6f3b5f01e4e5d929d6c95470 Mon Sep 17 00:00:00 2001 From: Merhatsidk Ayele Date: Tue, 10 Oct 2023 08:39:55 -0400 Subject: [PATCH 093/123] Added Alternate_stop_names_exceptions model. --- .../org/onebusaway/gtfs/impl/GtfsDaoImpl.java | 4 + .../gtfs/impl/GtfsDataServiceImpl.java | 5 +- .../TranslationServiceDataFactoryImpl.java | 4 + .../model/AlternateStopNameException.java | 92 +++++++++++++++++++ .../GtfsEntitySchemaFactory.java | 1 + .../gtfs/serialization/GtfsReader.java | 1 + 6 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/AlternateStopNameException.java diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java index ed95a9393..89d411605 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDaoImpl.java @@ -260,6 +260,7 @@ public Level getLevelForId(AgencyAndId id) { public FacilityPropertyDefinition getFacilityPropertiesDefinitionsForId(AgencyAndId id) { return getEntityForId(FacilityPropertyDefinition.class, id);} public RouteNameException getRouteNameExceptionForId(AgencyAndId id) { return getEntityForId(RouteNameException.class, id);} public DirectionNameException getDirectionNameExceptionForId(AgencyAndId id) { return getEntityForId(DirectionNameException.class, id);} + public AlternateStopNameException getAlternateStopNameExceptionForId(AgencyAndId id) { return getEntityForId(AlternateStopNameException.class, id);} public Collection getAllDirectionEntries() { return getAllEntitiesForType(DirectionEntry.class); @@ -279,6 +280,9 @@ public Collection getAllRouteNameExceptions() { public Collection getAllDirectionNameExceptions() { return getAllEntitiesForType(DirectionNameException.class); } + public Collection getAllAlternateStopNameExceptions(){ + return getAllEntitiesForType(AlternateStopNameException.class); + } public Collection getAllWrongWayConcurrencies() { return getAllEntitiesForType(WrongWayConcurrency.class); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java index 3d59e78b5..373d5c471 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java @@ -513,7 +513,7 @@ public void setData(CalendarServiceData data) { public FacilityPropertyDefinition getFacilityPropertiesDefinitionsForId(AgencyAndId id) { return getEntityForId(FacilityPropertyDefinition.class, id);} public RouteNameException getRouteNameExceptionForId(AgencyAndId id) { return getEntityForId(RouteNameException.class, id);} public DirectionNameException getDirectionNameExceptionForId(AgencyAndId id) { return getEntityForId(DirectionNameException.class, id);} - + public AlternateStopNameException getAlternateStopNameExceptionForId(AgencyAndId id) { return getEntityForId(AlternateStopNameException.class, id);} public Collection getAllFacilities() { return getAllEntitiesForType(Facility.class); } @@ -529,6 +529,9 @@ public Collection getAllRouteNameExceptions() { public Collection getAllDirectionNameExceptions() { return getAllEntitiesForType(DirectionNameException.class); } + public Collection getAllAlternateStopNameExceptions(){ + return getAllEntitiesForType(AlternateStopNameException.class); + } public Collection getAllDirectionEntries() { return _dao.getAllDirectionEntries(); } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/translation/TranslationServiceDataFactoryImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/translation/TranslationServiceDataFactoryImpl.java index 205392636..34afea4c3 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/translation/TranslationServiceDataFactoryImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/translation/TranslationServiceDataFactoryImpl.java @@ -59,6 +59,8 @@ public class TranslationServiceDataFactoryImpl implements TranslationServiceData private static final String DIRECTION_ENTRY_TABLE_NAME = "direction_entry"; + private static final String ALTERNATE_STOP_NAME_EXCEPTION_TABLE_NAME = "alternate_stop_name_exception"; + private GtfsRelationalDao _dao; public static TranslationService getTranslationService(GtfsRelationalDao dao) { @@ -136,6 +138,8 @@ private Class getEntityTypeForTableName(String name) { return WrongWayConcurrency.class; case DIRECTION_ENTRY_TABLE_NAME: return DirectionEntry.class; + case ALTERNATE_STOP_NAME_EXCEPTION_TABLE_NAME: + return AlternateStopNameException.class; } return null; } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/AlternateStopNameException.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/AlternateStopNameException.java new file mode 100644 index 000000000..4dd04882f --- /dev/null +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/AlternateStopNameException.java @@ -0,0 +1,92 @@ +/** + * Copyright (C) 2022 Cambridge Systematics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onebusaway.gtfs.model; + +import org.onebusaway.csv_entities.schema.annotations.CsvField; +import org.onebusaway.csv_entities.schema.annotations.CsvFields; + +@CsvFields(filename = "alternate_stop_names_exceptions.txt", required = false) +public class AlternateStopNameException extends IdentityBean { + + @CsvField(ignore = true) + private int id; + + @CsvField(optional = true) + int routeId; + + @CsvField(optional = true) + int directionId; + + @CsvField(optional = true) + int stopId; + + @CsvField(optional = true) + String alternateStopName; + + public AlternateStopNameException() { + } + + public AlternateStopNameException(AlternateStopNameException asne) { + this.routeId = asne.routeId; + this.directionId = asne.directionId; + this.stopId = asne.stopId; + this.alternateStopName = asne.alternateStopName; + } + + + @Override + public Integer getId() { + return id; + } + + @Override + public void setId(Integer id) { + this.id = id; + } + + public int getRouteId() { + return routeId; + } + + public void setRouteId(int routeId) { + this.routeId = routeId; + } + + public int getDirectionId() { + return directionId; + } + + public void setDirectionId(int directionId) { + this.directionId = directionId; + } + + public int getStopId() { + return stopId; + } + + public void setStopId(int stopId) { + this.stopId = stopId; + } + + public String getAlternateStopName() { + return alternateStopName; + } + + public void setAlternateStopName(String alternateStopName) { + this.alternateStopName = alternateStopName; + } +} diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java index f04f2dc22..8250536fe 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsEntitySchemaFactory.java @@ -73,6 +73,7 @@ public static List> getEntityClasses() { entityClasses.add(DirectionNameException.class); entityClasses.add(WrongWayConcurrency.class); entityClasses.add(DirectionEntry.class); + entityClasses.add(AlternateStopNameException.class); return entityClasses; } diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java index e834e8bc6..1168c09f7 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/serialization/GtfsReader.java @@ -101,6 +101,7 @@ public GtfsReader() { _entityClasses.add(DirectionNameException.class); _entityClasses.add(WrongWayConcurrency.class); _entityClasses.add(DirectionEntry.class); + _entityClasses.add(AlternateStopNameException.class); CsvTokenizerStrategy tokenizerStrategy = new CsvTokenizerStrategy(); tokenizerStrategy.getCsvParser().setTrimInitialWhitespace(true); From 46fc0aa18898f01828c673b4059bf89a3d593885 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 10 Oct 2023 15:13:47 -0400 Subject: [PATCH 094/123] Renaming class, adding license header --- .../model/AlternateStopNamesExceptions.java | 29 +++++++++++++++++++ .../Alternate_stop_names_exceptions.java | 14 --------- 2 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/AlternateStopNamesExceptions.java delete mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Alternate_stop_names_exceptions.java diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/AlternateStopNamesExceptions.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/AlternateStopNamesExceptions.java new file mode 100644 index 000000000..ab2093779 --- /dev/null +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/AlternateStopNamesExceptions.java @@ -0,0 +1,29 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.model; + +import org.onebusaway.csv_entities.schema.annotations.CsvField; +import org.onebusaway.csv_entities.schema.annotations.CsvFields; + +@CsvFields(filename = "alternate_stop_names_exceptions.txt", required = false) +public class AlternateStopNamesExceptions { + + @CsvField(ignore = true) + private int id; + + @CsvField(optional = true) + int routeId; +} diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Alternate_stop_names_exceptions.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Alternate_stop_names_exceptions.java deleted file mode 100644 index 5acdd2b79..000000000 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/Alternate_stop_names_exceptions.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.onebusaway.gtfs.model; - -import org.onebusaway.csv_entities.schema.annotations.CsvField; -import org.onebusaway.csv_entities.schema.annotations.CsvFields; - -@CsvFields(filename = "alternate_stop_names_exceptions.txt", required = false) -public class Alternate_stop_names_exceptions { - - @CsvField(ignore = true) - private int id; - - @CsvField(optional = true) - int routeId; -} From 5582c3ba7e6b278ef8edbb485115ac6feb08186f Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 11 Oct 2023 13:33:38 -0400 Subject: [PATCH 095/123] MTA-14 report on differences between input GTFS and reference GTFS --- .../impl/CheckForFutureService.java | 83 ++------- .../impl/CompareToReferenceService.java | 160 ++++++++++++++++++ .../util/CalendarFunctions.java | 92 ++++++++++ 3 files changed, 266 insertions(+), 69 deletions(-) create mode 100644 onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java create mode 100644 onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/util/CalendarFunctions.java diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CheckForFutureService.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CheckForFutureService.java index 5e734168f..41a15f6c9 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CheckForFutureService.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CheckForFutureService.java @@ -17,16 +17,17 @@ import org.onebusaway.cloud.api.ExternalServices; import org.onebusaway.cloud.api.ExternalServicesBridgeFactory; +import org.onebusaway.csv_entities.schema.annotations.CsvField; import org.onebusaway.gtfs.model.*; import org.onebusaway.gtfs.model.calendar.ServiceDate; import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; import org.onebusaway.gtfs_transformer.services.CloudContextService; import org.onebusaway.gtfs_transformer.services.GtfsTransformStrategy; import org.onebusaway.gtfs_transformer.services.TransformContext; +import org.onebusaway.gtfs_transformer.util.CalendarFunctions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Calendar; import java.util.Date; /* Checks the numbers of Trips with service today and next four days @@ -37,6 +38,9 @@ public class CheckForFutureService implements GtfsTransformStrategy { private final Logger _log = LoggerFactory.getLogger(CheckForFutureService.class); + @CsvField(ignore = true) + private CalendarFunctions helper = new CalendarFunctions(); + @Override public String getName() { return this.getClass().getSimpleName(); @@ -49,20 +53,20 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { int tripsTomorrow = 0; int tripsNextDay = 0; int tripsDayAfterNext = 0; - Date today = removeTime(new Date()); - Date tomorrow = removeTime(addDays(new Date(), 1)); - Date nextDay = removeTime(addDays(new Date(), 2)); - Date dayAfterNext = removeTime(addDays(new Date(), 3)); + Date today = helper.removeTime(new Date()); + Date tomorrow = helper.removeTime(helper.addDays(new Date(), 1)); + Date nextDay = helper.removeTime(helper.addDays(new Date(), 2)); + Date dayAfterNext = helper.removeTime(helper.addDays(new Date(), 3)); String feed = CloudContextService.getLikelyFeedName(dao); - ExternalServices es = new ExternalServicesBridgeFactory().getExternalServices(); + ExternalServices es = new ExternalServicesBridgeFactory().getExternalServices(); String agency = dao.getAllAgencies().iterator().next().getId(); String agencyName = dao.getAllAgencies().iterator().next().getName(); tripsToday = hasServiceForDate(dao, today); tripsTomorrow = hasServiceForDate(dao, tomorrow); tripsNextDay = hasServiceForDate(dao, nextDay); - tripsDayAfterNext = hasServiceForDate(dao,dayAfterNext); + tripsDayAfterNext = hasServiceForDate(dao, dayAfterNext); _log.info("Feed for metrics: {}, agency id: {}", feed, agencyName); es.publishMetric(CloudContextService.getNamespace(), "TripsToday", "feed", feed, tripsToday); @@ -91,72 +95,13 @@ public void run(TransformContext context, GtfsMutableRelationalDao dao) { } int hasServiceForDate(GtfsMutableRelationalDao dao, Date testDate) { + ServiceDate serviceDate = new ServiceDate(testDate); int numTripsOnDate = 0; for (Trip trip : dao.getAllTrips()) { - //check for service - boolean hasCalDateException = false; - //are there calendar dates? - if (!dao.getCalendarDatesForServiceId(trip.getServiceId()).isEmpty()) { - //calendar dates are not empty - for (ServiceCalendarDate calDate : dao.getCalendarDatesForServiceId(trip.getServiceId())) { - Date date = constructDate(calDate.getDate()); - if (date.equals(testDate)) { - hasCalDateException = true; - if (calDate.getExceptionType() == 1) { - //there is service for date - numTripsOnDate++; - break; - } - if (calDate.getExceptionType() == 2) { - //service has been excluded for date - break; - } - } - } - } - - //if there are no entries in calendarDates, check serviceCalendar - if (!hasCalDateException) { - ServiceCalendar servCal = dao.getCalendarForServiceId(trip.getServiceId()); - if (servCal != null) { - //check for service using calendar - Date start = removeTime(servCal.getStartDate().getAsDate()); - Date end = removeTime(servCal.getEndDate().getAsDate()); - if (testDate.equals(start) || testDate.equals(end) || - (testDate.after(start) && testDate.before(end))) { - numTripsOnDate++; - } - } - } + if (helper.isTripActive(dao, serviceDate, trip)) + numTripsOnDate++; } return numTripsOnDate; } - private Date addDays(Date date, int daysToAdd) { - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - cal.add(Calendar.DATE, daysToAdd); - return cal.getTime(); - } - - private Date constructDate(ServiceDate date) { - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.YEAR, date.getYear()); - calendar.set(Calendar.MONTH, date.getMonth()-1); - calendar.set(Calendar.DATE, date.getDay()); - Date date1 = calendar.getTime(); - date1 = removeTime(date1); - return date1; - } - - private Date removeTime(Date date) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - date = calendar.getTime(); - return date; - } } diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java new file mode 100644 index 000000000..059b5787a --- /dev/null +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java @@ -0,0 +1,160 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_transformer.impl; + +import org.onebusaway.cloud.api.ExternalServices; +import org.onebusaway.cloud.api.ExternalServicesBridgeFactory; +import org.onebusaway.csv_entities.schema.annotations.CsvField; +import org.onebusaway.gtfs.model.*; +import org.onebusaway.gtfs.model.calendar.ServiceDate; +import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; +import org.onebusaway.gtfs_transformer.services.CloudContextService; +import org.onebusaway.gtfs_transformer.services.GtfsTransformStrategy; +import org.onebusaway.gtfs_transformer.services.TransformContext; + +import org.onebusaway.gtfs_transformer.util.CalendarFunctions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; + +/** + * Compare GTFS trips and report on gaps at a depot level. + * The concept of a depot is inferred from the trip id and is + * currently specific to the MTA. + */ +public class CompareToReferenceService implements GtfsTransformStrategy { + + private static final int MAX_MESSAGE_SIZE = 250 * 1024; + private static final Logger _log = LoggerFactory.getLogger(CompareToReferenceService.class); + @Override + public String getName() { + return this.getClass().getSimpleName(); + } + + @CsvField(ignore = true) + private String defaultAgencyId = "1"; + @CsvField(ignore = true) + private CalendarFunctions helper = new CalendarFunctions(); + @Override + public void run(TransformContext context, GtfsMutableRelationalDao gtfsDao) { + try { + + defaultAgencyId = CloudContextService.getLikelyFeedName(gtfsDao); + String summaryTopic = CloudContextService.getTopic() + "-atis-summary"; + String detailTopic = CloudContextService.getTopic() + "-atis-detail"; + ExternalServices es = new ExternalServicesBridgeFactory().getExternalServices(); + + StringBuffer summaryReport = new StringBuffer(); + summaryReport.append("depot,unmatched_gtfs_trips,unmatched_reference_trips\n"); + StringBuffer detailReport = new StringBuffer(); + detailReport.append("depot,unmatched_gtfs_trip_ds,unmatched_reference_trip_ids\n"); + + GtfsMutableRelationalDao referenceDao = (GtfsMutableRelationalDao) context.getReferenceReader().getEntityStore(); + + // get active trip ids for service date from base GTFS + Map> activeTripsByDepot = getTripsByDepot(context, gtfsDao); + // get active trip ids for service date for reference GTFS + Map> referenceTripsByDepot = getTripsByDepot(context, referenceDao); + + Set allDepots = new HashSet<>(); + allDepots.addAll(activeTripsByDepot.keySet()); + allDepots.addAll(referenceTripsByDepot.keySet()); + + for (String depot : allDepots) { + HashSet gtfsTripIds = new HashSet<>(); + HashSet referenceTripIds = new HashSet<>(); + if (activeTripsByDepot.containsKey(depot)) { + gtfsTripIds.addAll(activeTripsByDepot.get(depot)); + } + if (referenceTripsByDepot.containsKey(depot)) { + referenceTripIds.addAll(referenceTripsByDepot.get(depot)); + } + + // now do some set operations to determine the differences + HashSet unmatchedReferenceTrips = new HashSet<>(referenceTripIds); + HashSet unmatchedGtfsTrips = new HashSet<>(gtfsTripIds); + + unmatchedGtfsTrips.removeAll(referenceTripIds); + + unmatchedReferenceTrips.removeAll(gtfsTripIds); + summaryReport.append(depot).append(",").append(unmatchedGtfsTrips.size()).append(",").append(unmatchedReferenceTrips.size()).append("\n"); + detailReport.append(depot).append(",\"").append(unmatchedGtfsTrips).append("\",\"").append(unmatchedReferenceTrips).append("\"\n"); + es.publishMessage(detailTopic, truncate(detailReport.toString())); + detailReport = new StringBuffer(); + } + es.publishMessage(summaryTopic, summaryReport.toString()); + + _log.error("{} Unmatched Summary", getName()); + _log.error(summaryReport.toString()); + } catch (Throwable t) { + _log.error("{} failed: {}", getName(), t, t); + } + + } + + private String truncate(String message) { + if (message.length() > MAX_MESSAGE_SIZE) + return message.substring(0, MAX_MESSAGE_SIZE); + return message; + } + + private String getDepot(Trip trip) { + String tripId = trip.getId().getId(); + String depot = null; + if (tripId.indexOf("-") < 0) { + depot = "MISSING"; + } else { + depot = tripId.split("-")[1]; + if ("Weekday".equals(depot) || "Saturday".equals(depot) || "Sunday".equals(depot)) + depot = tripId.split("-")[0]; // it moves around! + } + if (depot.length() <= 1) { + depot = "MISSING"; + } + return depot; + } + + + private Map> getTripsByDepot(TransformContext context, GtfsMutableRelationalDao dao) { + Map> tripsByDepot = new HashMap<>(); + for (Trip trip : dao.getAllTrips()) { + if (trip.getServiceId() != null) { + boolean isActive = helper.isTripActive(dao, new ServiceDate(), trip); + if (isActive) { + AgencyAndId tripId = trip.getId(); + if (trip.getMtaTripId() != null) { + tripId = new AgencyAndId(trip.getId().getAgencyId(), trip.getMtaTripId()); + } + String depot = getDepot(trip); + if (!tripsByDepot.containsKey(depot)) + tripsByDepot.put(depot, new ArrayList<>()); + tripsByDepot.get(depot).add(sanitize(tripId)); + } + } + } + return tripsByDepot; + } + + + + private AgencyAndId sanitize(AgencyAndId tripId) { + if (tripId.getId().contains("SDon-")) { + return new AgencyAndId(defaultAgencyId, tripId.getId().replaceAll("SDon-", "")); + } + return new AgencyAndId(defaultAgencyId, tripId.getId()); + } +} diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/util/CalendarFunctions.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/util/CalendarFunctions.java new file mode 100644 index 000000000..27f049777 --- /dev/null +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/util/CalendarFunctions.java @@ -0,0 +1,92 @@ +/** + * Copyright (C) 2023 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs_transformer.util; + +import org.onebusaway.gtfs.model.ServiceCalendar; +import org.onebusaway.gtfs.model.ServiceCalendarDate; +import org.onebusaway.gtfs.model.Trip; +import org.onebusaway.gtfs.model.calendar.ServiceDate; +import org.onebusaway.gtfs.services.GtfsMutableRelationalDao; + +import java.util.Calendar; +import java.util.Date; + +/** + * Common calendaring functions for Strategies/Transformations. + */ +public class CalendarFunctions { + public boolean isTripActive(GtfsMutableRelationalDao dao, ServiceDate serviceDate, Trip trip) { + Date testDate = serviceDate.getAsDate(); + //check for service + boolean hasCalDateException = false; + //are there calendar dates? + if (!dao.getCalendarDatesForServiceId(trip.getServiceId()).isEmpty()) { + //calendar dates are not empty + for (ServiceCalendarDate calDate : dao.getCalendarDatesForServiceId(trip.getServiceId())) { + Date date = constructDate(calDate.getDate()); + if (date.equals(testDate)) { + hasCalDateException = true; + if (calDate.getExceptionType() == 1) { + //there is service for date + return true; + } + } + } + } + //if there are no entries in calendarDates, check serviceCalendar + if (!hasCalDateException) { + ServiceCalendar servCal = dao.getCalendarForServiceId(trip.getServiceId()); + if (servCal != null) { + //check for service using calendar + Date start = removeTime(servCal.getStartDate().getAsDate()); + Date end = removeTime(servCal.getEndDate().getAsDate()); + if (testDate.equals(start) || testDate.equals(end) || + (testDate.after(start) && testDate.before(end))) { + return true; + } + } + } + return false; + } + public Date addDays(Date date, int daysToAdd) { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.add(Calendar.DATE, daysToAdd); + return cal.getTime(); + } + + public Date constructDate(ServiceDate date) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.YEAR, date.getYear()); + calendar.set(Calendar.MONTH, date.getMonth()-1); + calendar.set(Calendar.DATE, date.getDay()); + Date date1 = calendar.getTime(); + date1 = removeTime(date1); + return date1; + } + + public Date removeTime(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + date = calendar.getTime(); + return date; + } + +} From b91504af2c6b07da7be372f4b8388656852725fe Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 11 Oct 2023 13:53:43 -0400 Subject: [PATCH 096/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.8 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 692e8a579..9b70caeee 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8-SNAPSHOT + 1.4.8 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index e8b296d8b..757498511 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8-SNAPSHOT + 1.4.8 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 6133ab560..25cab417d 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.8-SNAPSHOT + 1.4.8 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index b6bf7b837..96c5c2d73 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.8-SNAPSHOT + 1.4.8 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 073c8f1cc..ca4b7f20b 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8-SNAPSHOT + 1.4.8 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index a9c17963b..7bba248c7 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8-SNAPSHOT + 1.4.8 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index dc6ba4334..5ccefd307 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8-SNAPSHOT + 1.4.8 org.onebusaway onebusaway-gtfs - 1.4.8-SNAPSHOT + 1.4.8 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 679464b66..b513b4996 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8-SNAPSHOT + 1.4.8 diff --git a/pom.xml b/pom.xml index b13739a0e..3b051e59f 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.8-SNAPSHOT + 1.4.8 pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.8 From 6927e6725a11f05059131e19f7c451d91cda766d Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 11 Oct 2023 13:53:48 -0400 Subject: [PATCH 097/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 9b70caeee..c1a6d6753 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8 + 1.4.9-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 757498511..9db6bc134 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8 + 1.4.9-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 25cab417d..1ec32c688 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.8 + 1.4.9-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 96c5c2d73..80823788e 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.8 + 1.4.9-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index ca4b7f20b..f7cf95802 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8 + 1.4.9-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 7bba248c7..b687092ae 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8 + 1.4.9-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 5ccefd307..a8703fdd2 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8 + 1.4.9-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.8 + 1.4.9-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index b513b4996..7d2fd604f 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.8 + 1.4.9-SNAPSHOT diff --git a/pom.xml b/pom.xml index 3b051e59f..91c64a235 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.8 + 1.4.9-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.8 + HEAD From 7794a51e35a8f584d12cb0b479d31ca07ed3caa7 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 11 Oct 2023 13:55:56 -0400 Subject: [PATCH 098/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.9 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index c1a6d6753..2faef17df 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9-SNAPSHOT + 1.4.9 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 9db6bc134..0af09b41e 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9-SNAPSHOT + 1.4.9 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 1ec32c688..85071a026 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.9-SNAPSHOT + 1.4.9 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 80823788e..988b98364 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.9-SNAPSHOT + 1.4.9 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index f7cf95802..0d65442f4 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9-SNAPSHOT + 1.4.9 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index b687092ae..6ce5ac1a5 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9-SNAPSHOT + 1.4.9 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index a8703fdd2..156394c57 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9-SNAPSHOT + 1.4.9 org.onebusaway onebusaway-gtfs - 1.4.9-SNAPSHOT + 1.4.9 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 7d2fd604f..50c4f9f48 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9-SNAPSHOT + 1.4.9 diff --git a/pom.xml b/pom.xml index 91c64a235..97fe0e244 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.9-SNAPSHOT + 1.4.9 pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.9 From a64a74d1776d9f5989fdfcc9d06bd245d4e1658c Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 11 Oct 2023 13:56:00 -0400 Subject: [PATCH 099/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 2faef17df..75524f589 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9 + 1.4.10-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 0af09b41e..dc6c37c56 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9 + 1.4.10-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 85071a026..58aafcbe7 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.9 + 1.4.10-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 988b98364..dc099161d 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.9 + 1.4.10-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 0d65442f4..ed56a3178 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9 + 1.4.10-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 6ce5ac1a5..280110155 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9 + 1.4.10-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 156394c57..c8524e58f 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9 + 1.4.10-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.9 + 1.4.10-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 50c4f9f48..a0c6a50f3 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.9 + 1.4.10-SNAPSHOT diff --git a/pom.xml b/pom.xml index 97fe0e244..7af685cd8 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.9 + 1.4.10-SNAPSHOT pom onebusaway-gtfs-modules @@ -24,7 +24,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.9 + HEAD From 5137adab8c0af83b5801fc0da51ef35f4d161f4e Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 31 Oct 2023 09:26:34 -0400 Subject: [PATCH 100/123] MTA-14 fixes and push to s3 bucket --- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 7 ++- .../impl/CheckForFutureService.java | 2 +- .../impl/CompareToReferenceService.java | 54 ++++++++++++++++--- .../util/CalendarFunctions.java | 34 +++++++++++- pom.xml | 3 +- 6 files changed, 88 insertions(+), 14 deletions(-) diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index ed56a3178..51e555766 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -27,7 +27,7 @@ org.onebusaway onebusaway-cloud-aws - 0.0.10 + ${onebusaway_cloud_version} commons-cli diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index c8524e58f..8e3b07800 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -47,10 +47,15 @@ wsf-api 1.0 + + org.onebusaway + onebusaway-cloud-api + ${onebusaway_cloud_version} + org.onebusaway onebusaway-cloud-noop - 0.0.10 + ${onebusaway_cloud_version} javax.xml.bind diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CheckForFutureService.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CheckForFutureService.java index 41a15f6c9..23c8883e9 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CheckForFutureService.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CheckForFutureService.java @@ -98,7 +98,7 @@ int hasServiceForDate(GtfsMutableRelationalDao dao, Date testDate) { ServiceDate serviceDate = new ServiceDate(testDate); int numTripsOnDate = 0; for (Trip trip : dao.getAllTrips()) { - if (helper.isTripActive(dao, serviceDate, trip)) + if (helper.isTripActive(dao, serviceDate, trip, false)) numTripsOnDate++; } return numTripsOnDate; diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java index 059b5787a..6dcf291ea 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java @@ -29,6 +29,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; +import java.io.FileWriter; import java.util.*; /** @@ -47,6 +49,12 @@ public String getName() { @CsvField(ignore = true) private String defaultAgencyId = "1"; + + private String s3BasePath = null; + public void setS3BasePath(String path) { + s3BasePath = path; + } + @CsvField(ignore = true) private CalendarFunctions helper = new CalendarFunctions(); @Override @@ -58,10 +66,11 @@ public void run(TransformContext context, GtfsMutableRelationalDao gtfsDao) { String detailTopic = CloudContextService.getTopic() + "-atis-detail"; ExternalServices es = new ExternalServicesBridgeFactory().getExternalServices(); + String summaryHeader = "depot,unmatched_gtfs_trips,unmatched_reference_trips\n"; + String detailHeader = "depot,unmatched_gtfs_trip_ds,unmatched_reference_trip_ids\n"; + StringBuffer summaryReport = new StringBuffer(); - summaryReport.append("depot,unmatched_gtfs_trips,unmatched_reference_trips\n"); StringBuffer detailReport = new StringBuffer(); - detailReport.append("depot,unmatched_gtfs_trip_ds,unmatched_reference_trip_ids\n"); GtfsMutableRelationalDao referenceDao = (GtfsMutableRelationalDao) context.getReferenceReader().getEntityStore(); @@ -69,6 +78,12 @@ public void run(TransformContext context, GtfsMutableRelationalDao gtfsDao) { Map> activeTripsByDepot = getTripsByDepot(context, gtfsDao); // get active trip ids for service date for reference GTFS Map> referenceTripsByDepot = getTripsByDepot(context, referenceDao); + String summaryFilename = System.getProperty("java.io.tmpdir") + File.separator + "summary.csv"; + FileWriter summaryFile = new FileWriter(summaryFilename); + summaryFile.write(summaryHeader); + String detailFilename = System.getProperty("java.io.tmpdir") + File.separator + "detail.csv"; + FileWriter detailFile = new FileWriter(detailFilename); + detailFile.write(detailHeader); Set allDepots = new HashSet<>(); allDepots.addAll(activeTripsByDepot.keySet()); @@ -94,9 +109,26 @@ public void run(TransformContext context, GtfsMutableRelationalDao gtfsDao) { summaryReport.append(depot).append(",").append(unmatchedGtfsTrips.size()).append(",").append(unmatchedReferenceTrips.size()).append("\n"); detailReport.append(depot).append(",\"").append(unmatchedGtfsTrips).append("\",\"").append(unmatchedReferenceTrips).append("\"\n"); es.publishMessage(detailTopic, truncate(detailReport.toString())); + detailFile.write(detailReport.toString()); detailReport = new StringBuffer(); } es.publishMessage(summaryTopic, summaryReport.toString()); + summaryFile.write(summaryReport.toString()); + + summaryFile.close(); + detailFile.close(); + + // now copy the reports to an S3 reports directory + Calendar cal = Calendar.getInstance(); + String year = "" + cal.get(Calendar.YEAR); + String month = lpad(cal.get(Calendar.MONTH)+1, 2); + String day = lpad(cal.get(Calendar.DAY_OF_MONTH), 2); + String time = lpad(cal.get(Calendar.HOUR_OF_DAY), 2) + ":" + lpad(cal.get(Calendar.MINUTE),2 ); + String baseurl = s3BasePath + + "/" + year + "/" + month + "/" + day + "/" + time + "-"; + es.putFile(baseurl + "summary.csv", summaryFilename); + es.putFile(baseurl + "detail.csv", detailFilename); + _log.error("{} Unmatched Summary", getName()); _log.error(summaryReport.toString()); @@ -106,14 +138,20 @@ public void run(TransformContext context, GtfsMutableRelationalDao gtfsDao) { } + private String lpad(int numberToFormat, int totalDigits) { + String text = String.valueOf(numberToFormat); + while (text.length() < totalDigits) + text = "0" + text; + return text; + } + private String truncate(String message) { if (message.length() > MAX_MESSAGE_SIZE) return message.substring(0, MAX_MESSAGE_SIZE); return message; } - private String getDepot(Trip trip) { - String tripId = trip.getId().getId(); + private String getDepot(String tripId) { String depot = null; if (tripId.indexOf("-") < 0) { depot = "MISSING"; @@ -133,13 +171,13 @@ private Map> getTripsByDepot(TransformContext context, Map> tripsByDepot = new HashMap<>(); for (Trip trip : dao.getAllTrips()) { if (trip.getServiceId() != null) { - boolean isActive = helper.isTripActive(dao, new ServiceDate(), trip); + boolean isActive = helper.isTripActive(dao, new ServiceDate(), trip, true); if (isActive) { AgencyAndId tripId = trip.getId(); if (trip.getMtaTripId() != null) { tripId = new AgencyAndId(trip.getId().getAgencyId(), trip.getMtaTripId()); } - String depot = getDepot(trip); + String depot = getDepot(tripId.getId()); if (!tripsByDepot.containsKey(depot)) tripsByDepot.put(depot, new ArrayList<>()); tripsByDepot.get(depot).add(sanitize(tripId)); @@ -152,8 +190,8 @@ private Map> getTripsByDepot(TransformContext context, private AgencyAndId sanitize(AgencyAndId tripId) { - if (tripId.getId().contains("SDon-")) { - return new AgencyAndId(defaultAgencyId, tripId.getId().replaceAll("SDon-", "")); + if (tripId.getId().contains("-SDon")) { + return new AgencyAndId(defaultAgencyId, tripId.getId().replaceAll("-SDon", "")); } return new AgencyAndId(defaultAgencyId, tripId.getId()); } diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/util/CalendarFunctions.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/util/CalendarFunctions.java index 27f049777..f917454e5 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/util/CalendarFunctions.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/util/CalendarFunctions.java @@ -28,7 +28,8 @@ * Common calendaring functions for Strategies/Transformations. */ public class CalendarFunctions { - public boolean isTripActive(GtfsMutableRelationalDao dao, ServiceDate serviceDate, Trip trip) { + + public boolean isTripActive(GtfsMutableRelationalDao dao, ServiceDate serviceDate, Trip trip, boolean matchDayInCalendar) { Date testDate = serviceDate.getAsDate(); //check for service boolean hasCalDateException = false; @@ -49,13 +50,42 @@ public boolean isTripActive(GtfsMutableRelationalDao dao, ServiceDate serviceDat //if there are no entries in calendarDates, check serviceCalendar if (!hasCalDateException) { ServiceCalendar servCal = dao.getCalendarForServiceId(trip.getServiceId()); + if (servCal == null) { + // do a brute force lookup as agencyIds are tricky + for (ServiceCalendar calendar : dao.getAllCalendars()) { + if (calendar.getServiceId().getId().equals(trip.getServiceId().getId())) { + servCal = calendar; + } + } + + } if (servCal != null) { //check for service using calendar Date start = removeTime(servCal.getStartDate().getAsDate()); Date end = removeTime(servCal.getEndDate().getAsDate()); if (testDate.equals(start) || testDate.equals(end) || (testDate.after(start) && testDate.before(end))) { - return true; + Calendar cal = Calendar.getInstance(); + cal.setTime(testDate); + if (!matchDayInCalendar) return true; + switch (cal.get(Calendar.DAY_OF_WEEK)) { + case Calendar.SUNDAY: + return servCal.getSunday() == 1; + case Calendar.MONDAY: + return servCal.getMonday() == 1; + case Calendar.TUESDAY: + return servCal.getTuesday() == 1; + case Calendar.WEDNESDAY: + return servCal.getWednesday() == 1; + case Calendar.THURSDAY: + return servCal.getThursday() == 1; + case Calendar.FRIDAY: + return servCal.getFriday() == 1; + case Calendar.SATURDAY: + return servCal.getSaturday() == 1; + default: + throw new IllegalStateException("unexected value " + cal.get(Calendar.DAY_OF_WEEK)); + } } } } diff --git a/pom.xml b/pom.xml index 7af685cd8..51420a3c3 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,8 @@ 1.1.7 1.2.8 - 2.0.6 + 2.0.6 + 0.0.13 From 61fdd07b7b9cd8e306cd555d902dd2d884d68d22 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Wed, 1 Nov 2023 07:21:14 -0400 Subject: [PATCH 101/123] disabling SNS for CompareToReference --- .../gtfs_transformer/impl/CompareToReferenceService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java index 6dcf291ea..3fa11c8d5 100644 --- a/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java +++ b/onebusaway-gtfs-transformer/src/main/java/org/onebusaway/gtfs_transformer/impl/CompareToReferenceService.java @@ -108,11 +108,11 @@ public void run(TransformContext context, GtfsMutableRelationalDao gtfsDao) { unmatchedReferenceTrips.removeAll(gtfsTripIds); summaryReport.append(depot).append(",").append(unmatchedGtfsTrips.size()).append(",").append(unmatchedReferenceTrips.size()).append("\n"); detailReport.append(depot).append(",\"").append(unmatchedGtfsTrips).append("\",\"").append(unmatchedReferenceTrips).append("\"\n"); - es.publishMessage(detailTopic, truncate(detailReport.toString())); +// es.publishMessage(detailTopic, truncate(detailReport.toString())); detailFile.write(detailReport.toString()); detailReport = new StringBuffer(); } - es.publishMessage(summaryTopic, summaryReport.toString()); +// es.publishMessage(summaryTopic, summaryReport.toString()); summaryFile.write(summaryReport.toString()); summaryFile.close(); From 9797567060840e67064d1b18a0b15ad249c110d8 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Thu, 23 Nov 2023 13:08:31 +0100 Subject: [PATCH 102/123] Support separate column for location_id --- .../onebusaway/gtfs/impl/StopTimeArray.java | 5 + .../org/onebusaway/gtfs/model/StopTime.java | 21 +- .../onebusaway/gtfs/model/StopTimeProxy.java | 2 + .../org/onebusaway/gtfs/GtfsTestData.java | 7 + .../gtfs/serialization/FlexReaderTest.java | 19 + .../gtfs/brown-county-flex/agency.txt | 2 + .../gtfs/brown-county-flex/booking_rules.txt | 3 + .../gtfs/brown-county-flex/calendar.txt | 4 + .../brown-county-flex/calendar_attributes.txt | 4 + .../gtfs/brown-county-flex/calendar_dates.txt | 16 + .../gtfs/brown-county-flex/directions.txt | 3 + .../gtfs/brown-county-flex/feed_info.txt | 2 + .../gtfs/brown-county-flex/locations.geojson | 19671 ++++++++++++++++ .../gtfs/brown-county-flex/routes.txt | 3 + .../gtfs/brown-county-flex/shapes.txt | 878 + .../gtfs/brown-county-flex/stop_times.txt | 477 + .../gtfs/brown-county-flex/stops.txt | 21 + .../gtfs/brown-county-flex/trips.txt | 18 + 18 files changed, 21154 insertions(+), 2 deletions(-) create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/agency.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/booking_rules.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_attributes.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_dates.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/directions.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/feed_info.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/locations.geojson create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/routes.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/shapes.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/stop_times.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/stops.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/trips.txt diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java index 3de5ab0d4..28b304459 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java @@ -263,6 +263,11 @@ public void setStop(StopLocation stop) { stops[index] = stop; } + @Override + public void setLocation(StopLocation location) { + stops[index] = location; + } + @Override public boolean isArrivalTimeSet() { return arrivalTimes[index] != StopTime.MISSING_VALUE; diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index d90d531c0..bb122bf16 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -16,6 +16,7 @@ */ package org.onebusaway.gtfs.model; +import java.util.Objects; import org.onebusaway.csv_entities.schema.annotations.CsvField; import org.onebusaway.csv_entities.schema.annotations.CsvFields; import org.onebusaway.gtfs.serialization.mappings.EntityFieldMappingFactory; @@ -42,9 +43,16 @@ public final class StopTime extends IdentityBean implements @CsvField(name = "trip_id", mapping = EntityFieldMappingFactory.class) private Trip trip; - @CsvField(name = "stop_id", mapping = StopLocationFieldMappingFactory.class) + /** + * This is optional because in flex you can also have location_id and location_group_id. + */ + @CsvField(name = "stop_id", optional = true, mapping = StopLocationFieldMappingFactory.class) private StopLocation stop; + @CsvField(name = "location_id", optional = true, mapping = StopLocationFieldMappingFactory.class) + private StopLocation location; + + @CsvField(optional = true, mapping = StopTimeFieldMappingFactory.class) private int arrivalTime = MISSING_VALUE; @@ -192,6 +200,7 @@ public StopTime(StopTime st) { this.shapeDistTraveled = st.shapeDistTraveled; this.farePeriodId = st.farePeriodId; this.stop = st.stop; + this.location = st.location; this.stopHeadsign = st.stopHeadsign; this.stopSequence = st.stopSequence; this.toStopSequence = st.toStopSequence; @@ -270,7 +279,7 @@ public StopLocation getStop() { if (proxy != null) { return proxy.getStop(); } - return stop; + return Objects.requireNonNullElse(stop, location); } public void setStop(StopLocation stop) { @@ -281,6 +290,14 @@ public void setStop(StopLocation stop) { this.stop = stop; } + public void setLocation(StopLocation location) { + if (proxy != null) { + proxy.setLocation(location); + return; + } + this.location = location; + } + public boolean isArrivalTimeSet() { if (proxy != null) { return proxy.isArrivalTimeSet(); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java index 8d8b29179..728dc0a01 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java @@ -47,6 +47,8 @@ public interface StopTimeProxy { public void setStop(StopLocation stop); + public void setLocation(StopLocation stop); + public boolean isArrivalTimeSet(); public int getArrivalTime(); diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java index ed6ad8736..37c7981a3 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java @@ -47,6 +47,8 @@ private static String gtfsPath(String name) { public static final String PIERCE_TRANSIT_FLEX = gtfsPath("piercetransit-stop-areas-flex"); + public static final String BROWN_COUNTY_FLEX = gtfsPath("brown-county-flex"); + public static final String LOCATIONS_GEOJSON = gtfsPath("locations.geojson"); public static File getCaltrainGtfs() { @@ -77,10 +79,15 @@ public static File getTurlockFaresV2() { public static File getMdotMetroFaresV2() { return new File("src/test/resources", MDOT_FARES_V2); } + public static File getPierceTransitFlex() { return new File("src/test/resources", PIERCE_TRANSIT_FLEX); } + public static File getBrownCountyFlex() { + return new File("src/test/resources", BROWN_COUNTY_FLEX); + } + public static void readGtfs(T entityStore, File resourcePath, String defaultAgencyId) throws IOException { diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java index cc29bc4f8..40f24a602 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java @@ -16,6 +16,7 @@ package org.onebusaway.gtfs.serialization; import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; import static org.junit.Assert.assertSame; import java.io.IOException; @@ -30,6 +31,7 @@ import org.onebusaway.gtfs.model.Stop; import org.onebusaway.gtfs.model.StopArea; import org.onebusaway.gtfs.model.StopLocation; +import org.onebusaway.gtfs.model.StopTime; public class FlexReaderTest extends BaseGtfsTest { @@ -82,6 +84,23 @@ public void pierceTransitStopAreas() throws CsvEntityIOException, IOException { } + @Test + public void locationIdAsASeparateColumn() throws CsvEntityIOException, IOException { + var dao = processFeed(GtfsTestData.getBrownCountyFlex(), AGENCY_ID, false); + var trip = dao.getAllTrips().stream().filter(t -> t.getId().getId().equals("t_5374696_b_77497_tn_0")).findAny().get(); + var stopTimes = dao.getStopTimesForTrip(trip); + stopTimes.forEach(st -> assertNotNull(st.getStop())); + + var stopLocations = stopTimes.stream().map(StopTime::getStop).collect(Collectors.toList()); + var first = stopLocations.get(0); + assertEquals("4149546", first.getId().getId()); + assertEquals(Stop.class, first.getClass()); + + var second = stopLocations.get(1); + assertEquals("radius_300_s_4149546_s_4149547", second.getId().getId()); + assertEquals(Location.class, second.getClass()); + } + private static StopArea getArea(List stopAreas, String id) { return stopAreas.stream().filter(a -> a.getId().toString().equals(id)).findAny().get(); } diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/agency.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/agency.txt new file mode 100644 index 000000000..466541b28 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/agency.txt @@ -0,0 +1,2 @@ +agency_id,agency_url,agency_lang,agency_name,agency_phone,agency_timezone,agency_fare_url,tts_agency_name +4870,https://www.co.brown.mn.us/heartland-express-transit?view=category&id=56,en,Brown County Heartland Express,,America/Chicago,, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/booking_rules.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/booking_rules.txt new file mode 100644 index 000000000..6dfd2b494 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/booking_rules.txt @@ -0,0 +1,3 @@ +booking_rule_id,booking_type,prior_notice_duration_min,prior_notice_duration_max,prior_notice_start_day,prior_notice_start_time,prior_notice_last_day,prior_notice_last_time,prior_notice_service_id,message,pickup_message,drop_off_message,phone_number,info_url,booking_url +booking_route_74362,2,,,14,08:00:00,1,15:00:00,,"Brown County Heartland Express provides door-to-door on-demand transportation. To request a ride, call 1-507-359-2717 or 1-800-707-2717 by 3pm at least one business day ahead of your trip. ",,,(507) 359-2717,https://www.co.brown.mn.us/heartland-express-transit, +booking_route_74513,0,,,,,,,,Hermann Express may deviate 1-2 blocks from the route to drop off passengers. Please coordinate with the driver to request a deviated drop-off; deviations are limited to keep the bus on schedule.,,,(507) 359-2717,https://www.co.brown.mn.us/heartland-express-transit, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar.txt new file mode 100644 index 000000000..7bfdc4ee1 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar.txt @@ -0,0 +1,4 @@ +service_id,service_name,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date +c_67295_b_77497_d_64,Year-Round Service (Sunday only),0,0,0,0,0,0,1,20221001,20241001 +c_67295_b_77497_d_32,Year-Round Service (Saturday only),0,0,0,0,0,1,0,20221001,20241001 +c_67295_b_77497_d_31,Year-Round Service (Weekday),1,1,1,1,1,0,0,20221001,20241001 diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_attributes.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_attributes.txt new file mode 100644 index 000000000..f5f2d6e6f --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_attributes.txt @@ -0,0 +1,4 @@ +service_id,service_description +c_67295_b_77497_d_64,Year-Round Service (Sunday only) +c_67295_b_77497_d_32,Year-Round Service (Saturday only) +c_67295_b_77497_d_31,Year-Round Service (Weekday) diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_dates.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_dates.txt new file mode 100644 index 000000000..1b12a9eff --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_dates.txt @@ -0,0 +1,16 @@ +service_id,date,holiday_name,exception_type +c_67295_b_77497_d_64,20240901,Sunday before Labor Day,2 +c_67295_b_77497_d_64,20240526,Sunday before Memorial Day,2 +c_67295_b_77497_d_64,20240331,Easter Sunday,2 +c_67295_b_77497_d_64,20231224,Christmas Eve,2 +c_67295_b_77497_d_64,20231126,Sunday after Thanksgiving,2 +c_67295_b_77497_d_32,20240831,Saturday before Labor Day,2 +c_67295_b_77497_d_32,20240525,Saturday before Memorial Day,2 +c_67295_b_77497_d_32,20231125,Saturday after Thanksgiving,2 +c_67295_b_77497_d_31,20240902,Labor Day,2 +c_67295_b_77497_d_31,20240704,Independence Day,2 +c_67295_b_77497_d_31,20240527,Memorial Day,2 +c_67295_b_77497_d_31,20240101,New Year's Day,2 +c_67295_b_77497_d_31,20231225,Christmas,2 +c_67295_b_77497_d_31,20231124,Day after Thanksgiving,2 +c_67295_b_77497_d_31,20231123,Thanksgiving Day,2 diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/directions.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/directions.txt new file mode 100644 index 000000000..5b0517e21 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/directions.txt @@ -0,0 +1,3 @@ +route_id,direction_id,direction +74513,0,Loop +74362,0,No direction diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/feed_info.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/feed_info.txt new file mode 100644 index 000000000..d993cd78d --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/feed_info.txt @@ -0,0 +1,2 @@ +feed_publisher_url,feed_publisher_name,feed_lang,feed_version,feed_license,feed_contact_email,feed_contact_url,feed_start_date,feed_end_date,feed_id +http://www.trilliumtransit.com,"Trillium Solutions, Inc.",en,UTC: 03-Oct-2023 15:38,,support+browncounty-mn-us@trilliumtransit.com,http://support.trilliumtransit.com,20231003,20241001,browncounty-mn-us diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/locations.geojson b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/locations.geojson new file mode 100644 index 000000000..598735a34 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/locations.geojson @@ -0,0 +1,19671 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "id": "area_708", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.7805702, + 44.4560958 + ], + [ + -94.7805608, + 44.4559928 + ], + [ + -94.7805218, + 44.4559649 + ], + [ + -94.7804656, + 44.4559248 + ], + [ + -94.7804138, + 44.4558089 + ], + [ + -94.7802098, + 44.4553527 + ], + [ + -94.7802107, + 44.4548268 + ], + [ + -94.7803706, + 44.4544388 + ], + [ + -94.7805938, + 44.4542099 + ], + [ + -94.7810727, + 44.4539818 + ], + [ + -94.7820938, + 44.4538218 + ], + [ + -94.7838178, + 44.4540968 + ], + [ + -94.7843598, + 44.4541198 + ], + [ + -94.784807, + 44.4540508 + ], + [ + -94.7851309, + 44.4539463 + ], + [ + -94.785131, + 44.4539463 + ], + [ + -94.7854457, + 44.4538447 + ], + [ + -94.7857969, + 44.4536168 + ], + [ + -94.7862437, + 44.4532507 + ], + [ + -94.7866588, + 44.4526797 + ], + [ + -94.7868817, + 44.4521998 + ], + [ + -94.7868187, + 44.4517418 + ], + [ + -94.786691, + 44.4515598 + ], + [ + -94.786468, + 44.4514217 + ], + [ + -94.7855428, + 44.4509878 + ], + [ + -94.785095, + 44.4508985 + ], + [ + -94.785095, + 44.4508985 + ], + [ + -94.7832445, + 44.4505298 + ], + [ + -94.7817445, + 44.4500498 + ], + [ + -94.7804687, + 44.4494777 + ], + [ + -94.7797347, + 44.4488827 + ], + [ + -94.7794797, + 44.4486998 + ], + [ + -94.7790005, + 44.4482198 + ], + [ + -94.7774695, + 44.4468707 + ], + [ + -94.7771506, + 44.4466878 + ], + [ + -94.7762896, + 44.4465038 + ], + [ + -94.7759064, + 44.4464808 + ], + [ + -94.7732254, + 44.4471207 + ], + [ + -94.7716933, + 44.4472118 + ], + [ + -94.7703535, + 44.4470739 + ], + [ + -94.7683102, + 44.4467529 + ], + [ + -94.7680551, + 44.4466159 + ], + [ + -94.7676411, + 44.4462729 + ], + [ + -94.7675773, + 44.4461128 + ], + [ + -94.7674492, + 44.4459529 + ], + [ + -94.7673861, + 44.4449699 + ], + [ + -94.7676103, + 44.4445129 + ], + [ + -94.7677063, + 44.4443748 + ], + [ + -94.7678662, + 44.4440778 + ], + [ + -94.7678984, + 44.4435298 + ], + [ + -94.76777, + 44.4433239 + ], + [ + -94.7671961, + 44.4430718 + ], + [ + -94.7661113, + 44.4428428 + ], + [ + -94.7654092, + 44.4429108 + ], + [ + -94.7649664, + 44.442926 + ], + [ + -94.7634312, + 44.4429788 + ], + [ + -94.7631119, + 44.4430698 + ], + [ + -94.7623449, + 44.4435498 + ], + [ + -94.761291, + 44.4446009 + ], + [ + -94.7593749, + 44.4459718 + ], + [ + -94.7581621, + 44.4466349 + ], + [ + -94.7570131, + 44.4471369 + ], + [ + -94.7548741, + 44.4477079 + ], + [ + -94.7529581, + 44.448553 + ], + [ + -94.7502648, + 44.449385 + ], + [ + -94.7492327, + 44.449533 + ], + [ + -94.7489777, + 44.4495559 + ], + [ + -94.7483709, + 44.449305 + ], + [ + -94.7458798, + 44.4477289 + ], + [ + -94.7449538, + 44.447295 + ], + [ + -94.7448308, + 44.4472617 + ], + [ + -94.7448247, + 44.44726 + ], + [ + -94.7435817, + 44.44693 + ], + [ + -94.7421124, + 44.446359 + ], + [ + -94.7400694, + 44.445674 + ], + [ + -94.7392075, + 44.44524 + ], + [ + -94.7385043, + 44.444692 + ], + [ + -94.7382175, + 44.4443029 + ], + [ + -94.7378014, + 44.443343 + ], + [ + -94.7371622, + 44.442314 + ], + [ + -94.7367473, + 44.442017 + ], + [ + -94.7364868, + 44.4419407 + ], + [ + -94.7364867, + 44.4419407 + ], + [ + -94.7362042, + 44.441858 + ], + [ + -94.7337988, + 44.4419865 + ], + [ + -94.7337962, + 44.4419866 + ], + [ + -94.73362, + 44.4419961 + ], + [ + -94.733576, + 44.4419903 + ], + [ + -94.7335755, + 44.4419903 + ], + [ + -94.7325663, + 44.441859 + ], + [ + -94.731673, + 44.441585 + ], + [ + -94.7312582, + 44.441288 + ], + [ + -94.731162, + 44.441128 + ], + [ + -94.7311301, + 44.440808 + ], + [ + -94.7310021, + 44.440488 + ], + [ + -94.730969, + 44.440008 + ], + [ + -94.7308739, + 44.439779 + ], + [ + -94.7308408, + 44.439391 + ], + [ + -94.7307132, + 44.439071 + ], + [ + -94.7306181, + 44.439002 + ], + [ + -94.7304899, + 44.438705 + ], + [ + -94.7300431, + 44.4381339 + ], + [ + -94.7294999, + 44.437745 + ], + [ + -94.7280957, + 44.4372659 + ], + [ + -94.727681, + 44.4369689 + ], + [ + -94.7276797, + 44.4364199 + ], + [ + -94.7277759, + 44.4361 + ], + [ + -94.7277748, + 44.435025 + ], + [ + -94.7276789, + 44.434957 + ], + [ + -94.7276788, + 44.43482 + ], + [ + -94.7275188, + 44.434545 + ], + [ + -94.7268488, + 44.4340879 + ], + [ + -94.7264979, + 44.433974 + ], + [ + -94.7253117, + 44.4338083 + ], + [ + -94.7253116, + 44.4338083 + ], + [ + -94.7250297, + 44.433769 + ], + [ + -94.7219348, + 44.433701 + ], + [ + -94.7212646, + 44.433702 + ], + [ + -94.7178825, + 44.43352 + ], + [ + -94.7172165, + 44.43356 + ], + [ + -94.7163825, + 44.4336111 + ], + [ + -94.7148515, + 44.433703 + ], + [ + -94.7135431, + 44.433727 + ], + [ + -94.7118203, + 44.4341611 + ], + [ + -94.7099384, + 44.4346881 + ], + [ + -94.7090763, + 44.4347331 + ], + [ + -94.7080551, + 44.434574 + ], + [ + -94.7067791, + 44.434162 + ], + [ + -94.7061411, + 44.433705 + ], + [ + -94.7055661, + 44.433202 + ], + [ + -94.7048383, + 44.4327006 + ], + [ + -94.7047039, + 44.432608 + ], + [ + -94.7041299, + 44.4323111 + ], + [ + -94.701035, + 44.4301171 + ], + [ + -94.7001409, + 44.429614 + ], + [ + -94.6993117, + 44.429317 + ], + [ + -94.6982588, + 44.4291571 + ], + [ + -94.6974605, + 44.4289511 + ], + [ + -94.6962485, + 44.428745 + ], + [ + -94.6958337, + 44.428631 + ], + [ + -94.6953225, + 44.428357 + ], + [ + -94.6950996, + 44.428037 + ], + [ + -94.6950354, + 44.427854 + ], + [ + -94.6948764, + 44.4275801 + ], + [ + -94.6948332, + 44.4274698 + ], + [ + -94.6946525, + 44.4270081 + ], + [ + -94.6946525, + 44.425636 + ], + [ + -94.6948754, + 44.42463 + ], + [ + -94.6961836, + 44.4224349 + ], + [ + -94.6966616, + 44.422024 + ], + [ + -94.6973637, + 44.421635 + ], + [ + -94.6994687, + 44.420812 + ], + [ + -94.7000748, + 44.420377 + ], + [ + -94.7002344, + 44.420103 + ], + [ + -94.7002975, + 44.419326 + ], + [ + -94.7002016, + 44.4192569 + ], + [ + -94.7002015, + 44.419143 + ], + [ + -94.7000424, + 44.4188679 + ], + [ + -94.7000423, + 44.418 + ], + [ + -94.7001056, + 44.41784 + ], + [ + -94.7005204, + 44.4176339 + ], + [ + -94.7017965, + 44.4174279 + ], + [ + -94.7023385, + 44.4172219 + ], + [ + -94.7026574, + 44.4169709 + ], + [ + -94.7028807, + 44.4166049 + ], + [ + -94.7029124, + 44.4163989 + ], + [ + -94.7027526, + 44.4160329 + ], + [ + -94.7012853, + 44.4150728 + ], + [ + -94.7000735, + 44.4145929 + ], + [ + -94.6996585, + 44.414387 + ], + [ + -94.6991803, + 44.4140449 + ], + [ + -94.6991484, + 44.4137698 + ], + [ + -94.6993394, + 44.4135639 + ], + [ + -94.7006476, + 44.4129928 + ], + [ + -94.7007304, + 44.4129244 + ], + [ + -94.7007305, + 44.4129243 + ], + [ + -94.7010616, + 44.4126499 + ], + [ + -94.7010614, + 44.4121699 + ], + [ + -94.7006785, + 44.4119869 + ], + [ + -94.7001684, + 44.4119639 + ], + [ + -94.6997534, + 44.4120559 + ], + [ + -94.6988922, + 44.4123529 + ], + [ + -94.6979994, + 44.4125589 + ], + [ + -94.6971704, + 44.412559 + ], + [ + -94.6966284, + 44.4123989 + ], + [ + -94.6957983, + 44.411667 + ], + [ + -94.695065, + 44.4113929 + ], + [ + -94.6943952, + 44.4113699 + ], + [ + -94.6939483, + 44.4115529 + ], + [ + -94.6935342, + 44.4120559 + ], + [ + -94.6935342, + 44.412696 + ], + [ + -94.6936707, + 44.41287 + ], + [ + -94.6936708, + 44.4128701 + ], + [ + -94.6938211, + 44.413062 + ], + [ + -94.6946824, + 44.4138389 + ], + [ + -94.6954164, + 44.4144109 + ], + [ + -94.6957032, + 44.4147309 + ], + [ + -94.6959581, + 44.4149139 + ], + [ + -94.6963094, + 44.415279 + ], + [ + -94.6963093, + 44.415371 + ], + [ + -94.6963735, + 44.4154169 + ], + [ + -94.6964373, + 44.41624 + ], + [ + -94.6960225, + 44.4169479 + ], + [ + -94.6957993, + 44.4171309 + ], + [ + -94.6953212, + 44.4174289 + ], + [ + -94.6946831, + 44.417612 + ], + [ + -94.6928012, + 44.417703 + ], + [ + -94.690026, + 44.417543 + ], + [ + -94.689196, + 44.41736 + ], + [ + -94.6887821, + 44.4171769 + ], + [ + -94.6884632, + 44.4169259 + ], + [ + -94.6881442, + 44.416629 + ], + [ + -94.687952, + 44.416034 + ], + [ + -94.687857, + 44.4159659 + ], + [ + -94.6877292, + 44.4155769 + ], + [ + -94.6873461, + 44.415006 + ], + [ + -94.6862941, + 44.4138169 + ], + [ + -94.686134, + 44.413451 + ], + [ + -94.6859427, + 44.413199 + ], + [ + -94.685879, + 44.4130159 + ], + [ + -94.6857341, + 44.4128084 + ], + [ + -94.685734, + 44.4128084 + ], + [ + -94.6855601, + 44.4125589 + ], + [ + -94.685369, + 44.4120559 + ], + [ + -94.6853368, + 44.411142 + ], + [ + -94.6855918, + 44.4103869 + ], + [ + -94.6858787, + 44.4099759 + ], + [ + -94.6868039, + 44.409176 + ], + [ + -94.687729, + 44.4086039 + ], + [ + -94.6885897, + 44.4083299 + ], + [ + -94.6899609, + 44.4080549 + ], + [ + -94.691301, + 44.4079638 + ], + [ + -94.6919071, + 44.4080099 + ], + [ + -94.6948091, + 44.4086489 + ], + [ + -94.6960852, + 44.4090609 + ], + [ + -94.6965312, + 44.4091749 + ], + [ + -94.6970421, + 44.4091979 + ], + [ + -94.6972013, + 44.4091519 + ], + [ + -94.6974563, + 44.4088779 + ], + [ + -94.6974883, + 44.4081919 + ], + [ + -94.6974243, + 44.4077579 + ], + [ + -94.6971051, + 44.4069798 + ], + [ + -94.696276, + 44.4057918 + ], + [ + -94.6957019, + 44.4050369 + ], + [ + -94.695702, + 44.4049459 + ], + [ + -94.6952551, + 44.4043509 + ], + [ + -94.6952552, + 44.4041908 + ], + [ + -94.6948399, + 44.4034829 + ], + [ + -94.6942021, + 44.4026368 + ], + [ + -94.6935009, + 44.4024078 + ], + [ + -94.6930537, + 44.4023618 + ], + [ + -94.6927668, + 44.4024539 + ], + [ + -94.6923528, + 44.4027278 + ], + [ + -94.6915879, + 44.4035968 + ], + [ + -94.691269, + 44.4039169 + ], + [ + -94.6909499, + 44.4040768 + ], + [ + -94.6909499, + 44.4042138 + ], + [ + -94.689834, + 44.4051059 + ], + [ + -94.6894509, + 44.4054718 + ], + [ + -94.6892599, + 44.4060209 + ], + [ + -94.6891638, + 44.4060659 + ], + [ + -94.689164, + 44.4061808 + ], + [ + -94.688909, + 44.4066609 + ], + [ + -94.6884618, + 44.4069809 + ], + [ + -94.6878249, + 44.4070269 + ], + [ + -94.6869629, + 44.4066379 + ], + [ + -94.6859107, + 44.4059289 + ], + [ + -94.6856235, + 44.4058379 + ], + [ + -94.6854007, + 44.4058148 + ], + [ + -94.6850817, + 44.4059519 + ], + [ + -94.6850819, + 44.4064779 + ], + [ + -94.6851459, + 44.4066149 + ], + [ + -94.6850498, + 44.4071639 + ], + [ + -94.6847949, + 44.407484 + ], + [ + -94.6844461, + 44.4077338 + ], + [ + -94.684446, + 44.4077338 + ], + [ + -94.6837415, + 44.4082379 + ], + [ + -94.6830728, + 44.4085809 + ], + [ + -94.6818608, + 44.408924 + ], + [ + -94.6809986, + 44.409061 + ], + [ + -94.6797238, + 44.4090609 + ], + [ + -94.6794435, + 44.4090189 + ], + [ + -94.6785117, + 44.408878 + ], + [ + -94.6768844, + 44.408466 + ], + [ + -94.6754175, + 44.407963 + ], + [ + -94.6749715, + 44.407643 + ], + [ + -94.6745884, + 44.4072549 + ], + [ + -94.6742383, + 44.406774 + ], + [ + -94.6740464, + 44.406637 + ], + [ + -94.6740783, + 44.4065459 + ], + [ + -94.6731222, + 44.4056079 + ], + [ + -94.6714642, + 44.404579 + ], + [ + -94.6708901, + 44.4040299 + ], + [ + -94.6705392, + 44.403367 + ], + [ + -94.670475, + 44.4028639 + ], + [ + -94.6706991, + 44.4025209 + ], + [ + -94.6714, + 44.4019959 + ], + [ + -94.6730271, + 44.4004869 + ], + [ + -94.6737294, + 44.399984 + ], + [ + -94.6743672, + 44.3996179 + ], + [ + -94.6758971, + 44.3989559 + ], + [ + -94.6768046, + 44.3983863 + ], + [ + -94.6768046, + 44.3983863 + ], + [ + -94.6769183, + 44.3983148 + ], + [ + -94.6772694, + 44.3979269 + ], + [ + -94.6773331, + 44.3974239 + ], + [ + -94.6771092, + 44.3970579 + ], + [ + -94.6765673, + 44.3966458 + ], + [ + -94.6757702, + 44.3963949 + ], + [ + -94.674112, + 44.3962579 + ], + [ + -94.6713379, + 44.3954109 + ], + [ + -94.6696808, + 44.3948169 + ], + [ + -94.668405, + 44.394451 + ], + [ + -94.667226, + 44.3942899 + ], + [ + -94.6665239, + 44.3942449 + ], + [ + -94.6657908, + 44.3943359 + ], + [ + -94.6656946, + 44.3944039 + ], + [ + -94.6648658, + 44.3946099 + ], + [ + -94.6641557, + 44.3946588 + ], + [ + -94.6638766, + 44.394678 + ], + [ + -94.6634947, + 44.3947699 + ], + [ + -94.6630798, + 44.3949748 + ], + [ + -94.6626016, + 44.3953639 + ], + [ + -94.6623459, + 44.3957979 + ], + [ + -94.6622818, + 44.3969869 + ], + [ + -94.6623777, + 44.3974219 + ], + [ + -94.6624728, + 44.3975359 + ], + [ + -94.6625049, + 44.3978789 + ], + [ + -94.6626319, + 44.3981079 + ], + [ + -94.6626319, + 44.3984133 + ], + [ + -94.6626318, + 44.398702 + ], + [ + -94.6624728, + 44.398908 + ], + [ + -94.6621215, + 44.3991819 + ], + [ + -94.6617389, + 44.3992499 + ], + [ + -94.6606229, + 44.39925 + ], + [ + -94.6596026, + 44.399044 + ], + [ + -94.6589007, + 44.3987699 + ], + [ + -94.6582652, + 44.3983898 + ], + [ + -94.6579447, + 44.3981979 + ], + [ + -94.6574027, + 44.398015 + ], + [ + -94.6569877, + 44.3979919 + ], + [ + -94.6567645, + 44.3980379 + ], + [ + -94.6565735, + 44.3982199 + ], + [ + -94.6564932, + 44.3983802 + ], + [ + -94.6564134, + 44.39854 + ], + [ + -94.6563185, + 44.398586 + ], + [ + -94.6562856, + 44.399615 + ], + [ + -94.6561895, + 44.400049 + ], + [ + -94.6560615, + 44.400392 + ], + [ + -94.6558067, + 44.4005979 + ], + [ + -94.6552646, + 44.400758 + ], + [ + -94.6548505, + 44.400712 + ], + [ + -94.6544996, + 44.4006429 + ], + [ + -94.6542125, + 44.400369 + ], + [ + -94.6540213, + 44.399546 + ], + [ + -94.6543554, + 44.3983685 + ], + [ + -94.6544044, + 44.3981969 + ], + [ + -94.6544373, + 44.397877 + ], + [ + -94.6545646, + 44.3976029 + ], + [ + -94.6545655, + 44.3968019 + ], + [ + -94.6547254, + 44.396002 + ], + [ + -94.6550765, + 44.3951339 + ], + [ + -94.6556822, + 44.394379 + ], + [ + -94.6556825, + 44.3942649 + ], + [ + -94.6557785, + 44.3942189 + ], + [ + -94.6558104, + 44.3935559 + ], + [ + -94.6554914, + 44.3933049 + ], + [ + -94.6552684, + 44.3932589 + ], + [ + -94.6543754, + 44.3932589 + ], + [ + -94.6536742, + 44.393441 + ], + [ + -94.6507073, + 44.395178 + ], + [ + -94.6485701, + 44.396526 + ], + [ + -94.6473261, + 44.3970519 + ], + [ + -94.6455722, + 44.3974619 + ], + [ + -94.6444882, + 44.3975539 + ], + [ + -94.6437844, + 44.3975534 + ], + [ + -94.6433082, + 44.3975531 + ], + [ + -94.6413631, + 44.397232 + ], + [ + -94.6398007, + 44.396774 + ], + [ + -94.6390038, + 44.3963851 + ], + [ + -94.6380479, + 44.3956531 + ], + [ + -94.6379846, + 44.395425 + ], + [ + -94.6381448, + 44.394922 + ], + [ + -94.6383998, + 44.394693 + ], + [ + -94.6395477, + 44.394419 + ], + [ + -94.6401857, + 44.394168 + ], + [ + -94.6407598, + 44.393665 + ], + [ + -94.6409838, + 44.3933679 + ], + [ + -94.6417498, + 44.391448 + ], + [ + -94.6418147, + 44.390808 + ], + [ + -94.6417189, + 44.390625 + ], + [ + -94.6415279, + 44.390488 + ], + [ + -94.6411446, + 44.3903499 + ], + [ + -94.6405077, + 44.3904419 + ], + [ + -94.6395826, + 44.3907839 + ], + [ + -94.6392957, + 44.390921 + ], + [ + -94.6377647, + 44.3914689 + ], + [ + -94.6359148, + 44.391949 + ], + [ + -94.6345757, + 44.3921771 + ], + [ + -94.6334596, + 44.3921991 + ], + [ + -94.6327894, + 44.392084 + ], + [ + -94.6321524, + 44.39181 + ], + [ + -94.6313553, + 44.3915349 + ], + [ + -94.6293144, + 44.391625 + ], + [ + -94.6284863, + 44.3914651 + ], + [ + -94.6274663, + 44.390664 + ], + [ + -94.62702, + 44.389978 + ], + [ + -94.626798, + 44.389315 + ], + [ + -94.6266083, + 44.3883321 + ], + [ + -94.6266093, + 44.387051 + ], + [ + -94.626673, + 44.3867999 + ], + [ + -94.6271852, + 44.385406 + ], + [ + -94.6271851, + 44.3846969 + ], + [ + -94.6269622, + 44.384468 + ], + [ + -94.6256084, + 44.3836207 + ], + [ + -94.625259, + 44.383402 + ], + [ + -94.624254, + 44.382924 + ], + [ + -94.6238017, + 44.3827411 + ], + [ + -94.6236629, + 44.382685 + ], + [ + -94.623476, + 44.38261 + ], + [ + -94.6224948, + 44.3823659 + ], + [ + -94.621431, + 44.382355 + ], + [ + -94.6206697, + 44.38283 + ], + [ + -94.6199336, + 44.3836354 + ], + [ + -94.6198308, + 44.383748 + ], + [ + -94.6191119, + 44.384312 + ], + [ + -94.6175598, + 44.385077 + ], + [ + -94.6161838, + 44.3854581 + ], + [ + -94.6144206, + 44.3856251 + ], + [ + -94.6126067, + 44.3855171 + ], + [ + -94.6107516, + 44.385256 + ], + [ + -94.6088315, + 44.384937 + ], + [ + -94.6075895, + 44.3848271 + ], + [ + -94.6064555, + 44.3849041 + ], + [ + -94.6048541, + 44.3853381 + ], + [ + -94.6031941, + 44.3858931 + ], + [ + -94.6020112, + 44.386138 + ], + [ + -94.6002753, + 44.3860871 + ], + [ + -94.5976421, + 44.3855432 + ], + [ + -94.5961928, + 44.385165 + ], + [ + -94.5952318, + 44.3845511 + ], + [ + -94.5946227, + 44.3837649 + ], + [ + -94.5946226, + 44.3837649 + ], + [ + -94.5944259, + 44.3835111 + ], + [ + -94.5938179, + 44.3816511 + ], + [ + -94.5935726, + 44.380102 + ], + [ + -94.5932939, + 44.3795591 + ], + [ + -94.5934348, + 44.3782631 + ], + [ + -94.5934568, + 44.3777561 + ], + [ + -94.5931767, + 44.3772781 + ], + [ + -94.5928298, + 44.3771436 + ], + [ + -94.5923437, + 44.376955 + ], + [ + -94.5911467, + 44.376861 + ], + [ + -94.5894463, + 44.3771971 + ], + [ + -94.5884374, + 44.377211 + ], + [ + -94.5879036, + 44.3770121 + ], + [ + -94.5872764, + 44.3765051 + ], + [ + -94.5871792, + 44.375828 + ], + [ + -94.5874794, + 44.3749621 + ], + [ + -94.5875873, + 44.3743971 + ], + [ + -94.5872195, + 44.3740661 + ], + [ + -94.5867371, + 44.374057 + ], + [ + -94.5862092, + 44.3742741 + ], + [ + -94.5857133, + 44.3747091 + ], + [ + -94.5855182, + 44.374962 + ], + [ + -94.5844573, + 44.3772651 + ], + [ + -94.5839854, + 44.3778321 + ], + [ + -94.5833624, + 44.3780911 + ], + [ + -94.5828784, + 44.3781821 + ], + [ + -94.5820564, + 44.3778671 + ], + [ + -94.5812731, + 44.3773191 + ], + [ + -94.5805242, + 44.376747 + ], + [ + -94.5801009, + 44.3761061 + ], + [ + -94.5797701, + 44.3753851 + ], + [ + -94.5796681, + 44.3749621 + ], + [ + -94.5790709, + 44.3730191 + ], + [ + -94.5787549, + 44.37206 + ], + [ + -94.5784178, + 44.371674 + ], + [ + -94.5783757, + 44.371555 + ], + [ + -94.5767219, + 44.372248 + ], + [ + -94.5757238, + 44.3735381 + ], + [ + -94.5738737, + 44.3749621 + ], + [ + -94.573157, + 44.3754581 + ], + [ + -94.5728599, + 44.3755422 + ], + [ + -94.5728598, + 44.3755423 + ], + [ + -94.5709118, + 44.3760942 + ], + [ + -94.5684226, + 44.3766392 + ], + [ + -94.5667248, + 44.3768871 + ], + [ + -94.5652897, + 44.3769112 + ], + [ + -94.5641146, + 44.3768101 + ], + [ + -94.5633333, + 44.3761972 + ], + [ + -94.5630026, + 44.3754601 + ], + [ + -94.5628466, + 44.3749622 + ], + [ + -94.5624573, + 44.3736892 + ], + [ + -94.5617483, + 44.3723842 + ], + [ + -94.5612873, + 44.3718042 + ], + [ + -94.5606464, + 44.3714502 + ], + [ + -94.5596571, + 44.3713871 + ], + [ + -94.558265, + 44.3716222 + ], + [ + -94.5574341, + 44.3720581 + ], + [ + -94.5570751, + 44.3730011 + ], + [ + -94.5570851, + 44.3749623 + ], + [ + -94.5569692, + 44.3756192 + ], + [ + -94.5565241, + 44.3759773 + ], + [ + -94.5560074, + 44.3760192 + ], + [ + -94.5553922, + 44.3759562 + ], + [ + -94.5550143, + 44.3758311 + ], + [ + -94.554463, + 44.3754542 + ], + [ + -94.5543123, + 44.3751712 + ], + [ + -94.554284, + 44.3749622 + ], + [ + -94.5535259, + 44.3732461 + ], + [ + -94.5529858, + 44.3724481 + ], + [ + -94.5528421, + 44.3723183 + ], + [ + -94.5524691, + 44.3719811 + ], + [ + -94.5500187, + 44.3706701 + ], + [ + -94.5493896, + 44.3702432 + ], + [ + -94.5492317, + 44.3696105 + ], + [ + -94.5492317, + 44.3696105 + ], + [ + -94.5488146, + 44.3679392 + ], + [ + -94.5487125, + 44.3668191 + ], + [ + -94.5480608, + 44.3655872 + ], + [ + -94.5472174, + 44.3649431 + ], + [ + -94.5449486, + 44.3645092 + ], + [ + -94.5412824, + 44.3650332 + ], + [ + -94.5394452, + 44.3652952 + ], + [ + -94.5321707, + 44.3651601 + ], + [ + -94.5306728, + 44.3651322 + ], + [ + -94.5266517, + 44.3652723 + ], + [ + -94.5233156, + 44.3653873 + ], + [ + -94.5219447, + 44.3658792 + ], + [ + -94.5209904, + 44.3669513 + ], + [ + -94.5200927, + 44.3696033 + ], + [ + -94.5200415, + 44.3696551 + ], + [ + -94.5200415, + 44.3696552 + ], + [ + -94.5193845, + 44.3703213 + ], + [ + -94.5184525, + 44.3706523 + ], + [ + -94.5179244, + 44.3702974 + ], + [ + -94.5176095, + 44.3697663 + ], + [ + -94.5176066, + 44.3696565 + ], + [ + -94.5176066, + 44.3696565 + ], + [ + -94.5175767, + 44.3684523 + ], + [ + -94.5177554, + 44.3674293 + ], + [ + -94.5184745, + 44.3663162 + ], + [ + -94.5192266, + 44.3649622 + ], + [ + -94.5200013, + 44.3635753 + ], + [ + -94.5204274, + 44.3620363 + ], + [ + -94.5206296, + 44.3608033 + ], + [ + -94.5203824, + 44.3598443 + ], + [ + -94.5177092, + 44.3579843 + ], + [ + -94.5149801, + 44.3572922 + ], + [ + -94.5122728, + 44.3561889 + ], + [ + -94.5122726, + 44.3561888 + ], + [ + -94.5115648, + 44.3559003 + ], + [ + -94.5093472, + 44.3551911 + ], + [ + -94.5093472, + 44.3551911 + ], + [ + -94.5091507, + 44.3551282 + ], + [ + -94.5065766, + 44.3551992 + ], + [ + -94.5064584, + 44.355206 + ], + [ + -94.5064565, + 44.3552061 + ], + [ + -94.5061949, + 44.3552213 + ], + [ + -94.5042175, + 44.3561122 + ], + [ + -94.5041216, + 44.3562723 + ], + [ + -94.5038666, + 44.3565463 + ], + [ + -94.5037715, + 44.3565692 + ], + [ + -94.5035795, + 44.3568663 + ], + [ + -94.5026868, + 44.3574832 + ], + [ + -94.5021134, + 44.3575743 + ], + [ + -94.5016035, + 44.3570943 + ], + [ + -94.5016046, + 44.3565683 + ], + [ + -94.5017327, + 44.3560882 + ], + [ + -94.502133, + 44.3552284 + ], + [ + -94.502133, + 44.3552284 + ], + [ + -94.5021475, + 44.3551972 + ], + [ + -94.5025625, + 44.3545112 + ], + [ + -94.5026904, + 44.3541453 + ], + [ + -94.5027544, + 44.3535053 + ], + [ + -94.5026276, + 44.3532083 + ], + [ + -94.5024364, + 44.3530022 + ], + [ + -94.5022133, + 44.3528193 + ], + [ + -94.5016405, + 44.3525902 + ], + [ + -94.5007194, + 44.3524062 + ], + [ + -94.5002533, + 44.3523942 + ], + [ + -94.4993472, + 44.3524732 + ], + [ + -94.4973415, + 44.3532983 + ], + [ + -94.4966084, + 44.3536413 + ], + [ + -94.4962581, + 44.3539613 + ], + [ + -94.4960995, + 44.3542133 + ], + [ + -94.4960992, + 44.3544643 + ], + [ + -94.4962591, + 44.3546013 + ], + [ + -94.4962912, + 44.3548764 + ], + [ + -94.4964872, + 44.3552574 + ], + [ + -94.4964872, + 44.3552574 + ], + [ + -94.4965144, + 44.3553104 + ], + [ + -94.4966105, + 44.3553564 + ], + [ + -94.4966105, + 44.3554474 + ], + [ + -94.4969615, + 44.3557444 + ], + [ + -94.4970254, + 44.3558364 + ], + [ + -94.4979185, + 44.3564753 + ], + [ + -94.4982373, + 44.3568413 + ], + [ + -94.4990025, + 44.3575723 + ], + [ + -94.4990033, + 44.3576643 + ], + [ + -94.4991303, + 44.3577554 + ], + [ + -94.4995136, + 44.3582354 + ], + [ + -94.4995455, + 44.3585323 + ], + [ + -94.4996417, + 44.3586013 + ], + [ + -94.4996415, + 44.3587153 + ], + [ + -94.4997374, + 44.3587843 + ], + [ + -94.4997775, + 44.3592643 + ], + [ + -94.4996744, + 44.3598814 + ], + [ + -94.4992926, + 44.3604073 + ], + [ + -94.4985287, + 44.3612083 + ], + [ + -94.4978917, + 44.3616653 + ], + [ + -94.4975098, + 44.3618034 + ], + [ + -94.4973095, + 44.3617953 + ], + [ + -94.4969366, + 44.3617804 + ], + [ + -94.4949277, + 44.3614614 + ], + [ + -94.4938754, + 44.3611194 + ], + [ + -94.4927605, + 44.3606394 + ], + [ + -94.492105, + 44.3601922 + ], + [ + -94.4919763, + 44.3601044 + ], + [ + -94.4913885, + 44.3597034 + ], + [ + -94.4910064, + 44.3593144 + ], + [ + -94.4909745, + 44.3591544 + ], + [ + -94.4908783, + 44.3590865 + ], + [ + -94.4907503, + 44.3587884 + ], + [ + -94.4907503, + 44.3582174 + ], + [ + -94.4910882, + 44.3574095 + ], + [ + -94.4914902, + 44.3562814 + ], + [ + -94.4915392, + 44.3552789 + ], + [ + -94.4916871, + 44.3522564 + ], + [ + -94.491267, + 44.3512304 + ], + [ + -94.490934, + 44.3509003 + ], + [ + -94.4907111, + 44.3506953 + ], + [ + -94.489977, + 44.3504434 + ], + [ + -94.4880341, + 44.3502845 + ], + [ + -94.487046, + 44.3501255 + ], + [ + -94.4854518, + 44.3494624 + ], + [ + -94.4850379, + 44.3492344 + ], + [ + -94.4845909, + 44.3488915 + ], + [ + -94.4838577, + 44.3480234 + ], + [ + -94.4837619, + 44.3475655 + ], + [ + -94.4836649, + 44.3462395 + ], + [ + -94.4834417, + 44.3456914 + ], + [ + -94.4833456, + 44.3455994 + ], + [ + -94.4832497, + 44.3454625 + ], + [ + -94.4825488, + 44.3448915 + ], + [ + -94.4816247, + 44.3444574 + ], + [ + -94.4807314, + 44.3441374 + ], + [ + -94.4801587, + 44.3440465 + ], + [ + -94.4794575, + 44.3440236 + ], + [ + -94.4785336, + 44.3440925 + ], + [ + -94.4777375, + 44.3442985 + ], + [ + -94.4765663, + 44.3442795 + ], + [ + -94.4750413, + 44.3437666 + ], + [ + -94.4742715, + 44.3429576 + ], + [ + -94.4737742, + 44.3417786 + ], + [ + -94.4728481, + 44.3407746 + ], + [ + -94.4727887, + 44.3407292 + ], + [ + -94.471831, + 44.3399978 + ], + [ + -94.4664211, + 44.3358656 + ], + [ + -94.4653307, + 44.3343937 + ], + [ + -94.4637757, + 44.3333077 + ], + [ + -94.4617027, + 44.3325427 + ], + [ + -94.4604214, + 44.3324817 + ], + [ + -94.4577325, + 44.3328608 + ], + [ + -94.4538906, + 44.3340099 + ], + [ + -94.4525424, + 44.3338919 + ], + [ + -94.4521229, + 44.3335631 + ], + [ + -94.4521227, + 44.333563 + ], + [ + -94.4515923, + 44.3331468 + ], + [ + -94.4512762, + 44.3319359 + ], + [ + -94.4514073, + 44.3295478 + ], + [ + -94.45198, + 44.3281219 + ], + [ + -94.4519972, + 44.3280925 + ], + [ + -94.4519973, + 44.3280923 + ], + [ + -94.4529532, + 44.3264408 + ], + [ + -94.4530622, + 44.3262538 + ], + [ + -94.4530864, + 44.3262121 + ], + [ + -94.4537911, + 44.3249978 + ], + [ + -94.4537563, + 44.3247448 + ], + [ + -94.45361, + 44.3236817 + ], + [ + -94.453099, + 44.3229538 + ], + [ + -94.4520099, + 44.3226029 + ], + [ + -94.4513051, + 44.3223758 + ], + [ + -94.4510589, + 44.3221968 + ], + [ + -94.450554, + 44.3223339 + ], + [ + -94.4502668, + 44.3224478 + ], + [ + -94.4476237, + 44.3230659 + ], + [ + -94.4466998, + 44.3234549 + ], + [ + -94.444695, + 44.3241039 + ], + [ + -94.4434698, + 44.324083 + ], + [ + -94.4425527, + 44.3235399 + ], + [ + -94.4420967, + 44.322861 + ], + [ + -94.4410455, + 44.319388 + ], + [ + -94.4409517, + 44.3185 + ], + [ + -94.4419433, + 44.316672 + ], + [ + -94.4430766, + 44.3154899 + ], + [ + -94.4448115, + 44.3149228 + ], + [ + -94.4461477, + 44.3150969 + ], + [ + -94.4471535, + 44.3158109 + ], + [ + -94.4477985, + 44.3166518 + ], + [ + -94.448464, + 44.3206638 + ], + [ + -94.4491097, + 44.3213919 + ], + [ + -94.4500288, + 44.3218229 + ], + [ + -94.4505739, + 44.3218698 + ], + [ + -94.4508928, + 44.3218979 + ], + [ + -94.4520296, + 44.3213237 + ], + [ + -94.4520296, + 44.3213236 + ], + [ + -94.4527321, + 44.3209688 + ], + [ + -94.4532308, + 44.3204698 + ], + [ + -94.4532051, + 44.3193968 + ], + [ + -94.4523019, + 44.3175288 + ], + [ + -94.452095, + 44.317101 + ], + [ + -94.452095, + 44.3171009 + ], + [ + -94.4518336, + 44.3165609 + ], + [ + -94.4514549, + 44.3162068 + ], + [ + -94.4492237, + 44.3141228 + ], + [ + -94.4468105, + 44.311837 + ], + [ + -94.4468104, + 44.3118369 + ], + [ + -94.4442153, + 44.3093789 + ], + [ + -94.4429293, + 44.308624 + ], + [ + -94.4418252, + 44.308433 + ], + [ + -94.4410611, + 44.308639 + ], + [ + -94.4401383, + 44.3093709 + ], + [ + -94.4395963, + 44.309942 + ], + [ + -94.4393733, + 44.310262 + ], + [ + -94.437982, + 44.311786 + ], + [ + -94.437946, + 44.3118141 + ], + [ + -94.4379459, + 44.3118142 + ], + [ + -94.4366592, + 44.312814 + ], + [ + -94.4356112, + 44.3131731 + ], + [ + -94.4342761, + 44.3129751 + ], + [ + -94.4326419, + 44.3121461 + ], + [ + -94.432329, + 44.3117993 + ], + [ + -94.432329, + 44.3117993 + ], + [ + -94.4320604, + 44.3115017 + ], + [ + -94.4320603, + 44.3115016 + ], + [ + -94.4317068, + 44.3111101 + ], + [ + -94.431772, + 44.3099241 + ], + [ + -94.4320415, + 44.3093469 + ], + [ + -94.4320416, + 44.3093468 + ], + [ + -94.4322758, + 44.308845 + ], + [ + -94.4330781, + 44.3082751 + ], + [ + -94.4341361, + 44.308005 + ], + [ + -94.4393593, + 44.308216 + ], + [ + -94.4404502, + 44.3080749 + ], + [ + -94.4414543, + 44.3075459 + ], + [ + -94.4416302, + 44.3066029 + ], + [ + -94.440475, + 44.3050249 + ], + [ + -94.4397088, + 44.304311 + ], + [ + -94.4391359, + 44.303778 + ], + [ + -94.4376598, + 44.3029499 + ], + [ + -94.436628, + 44.3013329 + ], + [ + -94.4364218, + 44.300429 + ], + [ + -94.4350238, + 44.2982381 + ], + [ + -94.4339251, + 44.29736 + ], + [ + -94.4335835, + 44.297087 + ], + [ + -94.4335267, + 44.297053 + ], + [ + -94.4325445, + 44.29647 + ], + [ + -94.4319325, + 44.2962947 + ], + [ + -94.4315465, + 44.296184 + ], + [ + -94.4308055, + 44.2962381 + ], + [ + -94.4292843, + 44.2967171 + ], + [ + -94.4284716, + 44.2973527 + ], + [ + -94.4281656, + 44.2975921 + ], + [ + -94.4267266, + 44.2991202 + ], + [ + -94.4259034, + 44.2994722 + ], + [ + -94.4250963, + 44.2992431 + ], + [ + -94.4249212, + 44.2986292 + ], + [ + -94.4249311, + 44.2974682 + ], + [ + -94.424954, + 44.2973461 + ], + [ + -94.424954, + 44.2973461 + ], + [ + -94.4251541, + 44.2962742 + ], + [ + -94.4257911, + 44.2953412 + ], + [ + -94.4265472, + 44.2949401 + ], + [ + -94.4284134, + 44.2946971 + ], + [ + -94.4312804, + 44.2944571 + ], + [ + -94.4319235, + 44.2941553 + ], + [ + -94.4320135, + 44.2941131 + ], + [ + -94.4321884, + 44.293314 + ], + [ + -94.4319187, + 44.2930057 + ], + [ + -94.4315872, + 44.292627 + ], + [ + -94.4300224, + 44.291629 + ], + [ + -94.427739, + 44.290572 + ], + [ + -94.426766, + 44.290393 + ], + [ + -94.4257482, + 44.2905301 + ], + [ + -94.425429, + 44.2908042 + ], + [ + -94.4252653, + 44.2909181 + ], + [ + -94.425152, + 44.2910631 + ], + [ + -94.4248232, + 44.2914572 + ], + [ + -94.4245172, + 44.2917951 + ], + [ + -94.4241841, + 44.2922591 + ], + [ + -94.424108, + 44.2923661 + ], + [ + -94.4238241, + 44.2927762 + ], + [ + -94.4232941, + 44.2929201 + ], + [ + -94.4226432, + 44.2928772 + ], + [ + -94.4222182, + 44.2926822 + ], + [ + -94.4218741, + 44.2922052 + ], + [ + -94.4216159, + 44.2907762 + ], + [ + -94.42115, + 44.2901202 + ], + [ + -94.4209049, + 44.2898453 + ], + [ + -94.4197539, + 44.2891882 + ], + [ + -94.4184206, + 44.2886993 + ], + [ + -94.4172987, + 44.2885653 + ], + [ + -94.4161538, + 44.2884323 + ], + [ + -94.4156726, + 44.2881963 + ], + [ + -94.4150478, + 44.2877833 + ], + [ + -94.4144116, + 44.2872243 + ], + [ + -94.4140897, + 44.2869003 + ], + [ + -94.4139697, + 44.2864723 + ], + [ + -94.4140277, + 44.2861653 + ], + [ + -94.4144324, + 44.2857443 + ], + [ + -94.4145715, + 44.2856014 + ], + [ + -94.4146877, + 44.2854643 + ], + [ + -94.4147535, + 44.2853853 + ], + [ + -94.4148927, + 44.2848373 + ], + [ + -94.4141414, + 44.2833343 + ], + [ + -94.4136754, + 44.2829346 + ], + [ + -94.4130826, + 44.2824262 + ], + [ + -94.4118819, + 44.2817749 + ], + [ + -94.4118817, + 44.2817748 + ], + [ + -94.4117961, + 44.2817284 + ], + [ + -94.4114275, + 44.2813133 + ], + [ + -94.4113632, + 44.2811304 + ], + [ + -94.4114594, + 44.2808334 + ], + [ + -94.4118413, + 44.2803764 + ], + [ + -94.411894, + 44.2802907 + ], + [ + -94.411894, + 44.2802906 + ], + [ + -94.4119683, + 44.2801703 + ], + [ + -94.4119691, + 44.2794843 + ], + [ + -94.4119011, + 44.2794363 + ], + [ + -94.411901, + 44.2794362 + ], + [ + -94.4118731, + 44.2794163 + ], + [ + -94.4115153, + 44.2790973 + ], + [ + -94.4112844, + 44.2786284 + ], + [ + -94.4111651, + 44.2780473 + ], + [ + -94.411327, + 44.2774663 + ], + [ + -94.4115333, + 44.2770233 + ], + [ + -94.4119232, + 44.2767378 + ], + [ + -94.4119234, + 44.2767377 + ], + [ + -94.4122341, + 44.2765103 + ], + [ + -94.4132831, + 44.2759173 + ], + [ + -94.4137363, + 44.2754993 + ], + [ + -94.4137953, + 44.2751523 + ], + [ + -94.4137533, + 44.2749352 + ], + [ + -94.4135941, + 44.2746833 + ], + [ + -94.4133073, + 44.2743633 + ], + [ + -94.4126081, + 44.2737683 + ], + [ + -94.4121301, + 44.2735622 + ], + [ + -94.4119503, + 44.2734742 + ], + [ + -94.4119502, + 44.2734742 + ], + [ + -94.411487, + 44.2732474 + ], + [ + -94.4097168, + 44.2726113 + ], + [ + -94.408945, + 44.2723343 + ], + [ + -94.407857, + 44.2720294 + ], + [ + -94.4063129, + 44.2715984 + ], + [ + -94.4038337, + 44.2712265 + ], + [ + -94.4020275, + 44.2710174 + ], + [ + -94.4010176, + 44.2709815 + ], + [ + -94.4005467, + 44.2709075 + ], + [ + -94.4002626, + 44.2706336 + ], + [ + -94.4001356, + 44.2690786 + ], + [ + -94.4000404, + 44.2690095 + ], + [ + -94.4000405, + 44.2689185 + ], + [ + -94.3996273, + 44.2685975 + ], + [ + -94.3993724, + 44.2684654 + ], + [ + -94.3990544, + 44.2683005 + ], + [ + -94.3982272, + 44.2680255 + ], + [ + -94.3960002, + 44.2675676 + ], + [ + -94.3933273, + 44.2673387 + ], + [ + -94.3917708, + 44.2670879 + ], + [ + -94.3900502, + 44.2668107 + ], + [ + -94.3865499, + 44.2666958 + ], + [ + -94.3850869, + 44.2664208 + ], + [ + -94.3844829, + 44.2661918 + ], + [ + -94.384197, + 44.2658708 + ], + [ + -94.3841339, + 44.2648878 + ], + [ + -94.3841349, + 44.2636307 + ], + [ + -94.3840077, + 44.2630818 + ], + [ + -94.3839127, + 44.2630358 + ], + [ + -94.3839129, + 44.2629448 + ], + [ + -94.3836585, + 44.2626018 + ], + [ + -94.3808277, + 44.2616399 + ], + [ + -94.3801595, + 44.2615249 + ], + [ + -94.3792045, + 44.2616389 + ], + [ + -94.3786636, + 44.2618449 + ], + [ + -94.3783136, + 44.2620958 + ], + [ + -94.3779626, + 44.2626899 + ], + [ + -94.3780264, + 44.2630559 + ], + [ + -94.3781847, + 44.2634449 + ], + [ + -94.3785667, + 44.2638108 + ], + [ + -94.3786617, + 44.2640398 + ], + [ + -94.3786927, + 44.2646109 + ], + [ + -94.3783748, + 44.2649769 + ], + [ + -94.3781196, + 44.2651819 + ], + [ + -94.3764646, + 44.2659359 + ], + [ + -94.3760507, + 44.2660499 + ], + [ + -94.3752467, + 44.265992 + ], + [ + -94.3745685, + 44.265888 + ], + [ + -94.3742816, + 44.265774 + ], + [ + -94.3741547, + 44.265637 + ], + [ + -94.3733904, + 44.26518 + ], + [ + -94.3727537, + 44.264723 + ], + [ + -94.3720534, + 44.264426 + ], + [ + -94.3717943, + 44.2643664 + ], + [ + -94.3717943, + 44.2643664 + ], + [ + -94.371767, + 44.2538304 + ], + [ + -94.3717325, + 44.2394257 + ], + [ + -94.3717844, + 44.2249657 + ], + [ + -94.3716982, + 44.2104805 + ], + [ + -94.3716736, + 44.1959511 + ], + [ + -94.3691084, + 44.1959584 + ], + [ + -94.3688795, + 44.1812174 + ], + [ + -94.3688082, + 44.1667949 + ], + [ + -94.3689225, + 44.15228 + ], + [ + -94.3688877, + 44.1378029 + ], + [ + -94.3688645, + 44.1232806 + ], + [ + -94.3688018, + 44.1086688 + ], + [ + -94.3890452, + 44.1086942 + ], + [ + -94.4091882, + 44.1086993 + ], + [ + -94.4292047, + 44.1086394 + ], + [ + -94.4492734, + 44.1086744 + ], + [ + -94.4694683, + 44.1087583 + ], + [ + -94.4888762, + 44.1088488 + ], + [ + -94.5089699, + 44.108873 + ], + [ + -94.5292637, + 44.1088912 + ], + [ + -94.5493058, + 44.1088371 + ], + [ + -94.5696117, + 44.1088389 + ], + [ + -94.5896453, + 44.10894 + ], + [ + -94.6193989, + 44.1089721 + ], + [ + -94.6394534, + 44.10892 + ], + [ + -94.6595083, + 44.1088825 + ], + [ + -94.6795633, + 44.1088504 + ], + [ + -94.6997329, + 44.1088941 + ], + [ + -94.7198134, + 44.1088815 + ], + [ + -94.7383577, + 44.1088978 + ], + [ + -94.758559, + 44.1087506 + ], + [ + -94.7786658, + 44.1083852 + ], + [ + -94.7987047, + 44.1082605 + ], + [ + -94.8191092, + 44.1082434 + ], + [ + -94.8391861, + 44.1081379 + ], + [ + -94.859724, + 44.1079944 + ], + [ + -94.879665, + 44.107947 + ], + [ + -94.899703, + 44.1078046 + ], + [ + -94.9198087, + 44.1078285 + ], + [ + -94.939952, + 44.1078572 + ], + [ + -94.9600055, + 44.1078119 + ], + [ + -94.9801971, + 44.1077877 + ], + [ + -95.0000437, + 44.10791 + ], + [ + -95.0201865, + 44.1079246 + ], + [ + -95.0403185, + 44.1079898 + ], + [ + -95.0603989, + 44.1080073 + ], + [ + -95.0808564, + 44.1080865 + ], + [ + -95.100236, + 44.1080738 + ], + [ + -95.1004227, + 44.1225116 + ], + [ + -95.1005235, + 44.1369869 + ], + [ + -95.1007273, + 44.1515414 + ], + [ + -95.100767, + 44.1660448 + ], + [ + -95.1008289, + 44.1804667 + ], + [ + -95.1009218, + 44.1950501 + ], + [ + -95.1086159, + 44.1951447 + ], + [ + -95.1084073, + 44.2094972 + ], + [ + -95.1081841, + 44.2239333 + ], + [ + -95.1079163, + 44.2385232 + ], + [ + -95.1078896, + 44.2528476 + ], + [ + -95.1076942, + 44.2673552 + ], + [ + -95.1075092, + 44.2817995 + ], + [ + -95.0876726, + 44.281849 + ], + [ + -95.067428, + 44.2820554 + ], + [ + -95.0471421, + 44.2825201 + ], + [ + -95.0269614, + 44.2824121 + ], + [ + -95.006976, + 44.2825132 + ], + [ + -94.9867979, + 44.2825601 + ], + [ + -94.9669104, + 44.2823283 + ], + [ + -94.9467064, + 44.2822064 + ], + [ + -94.9266927, + 44.2820598 + ], + [ + -94.906573, + 44.2821545 + ], + [ + -94.8864967, + 44.2822719 + ], + [ + -94.8662628, + 44.2822804 + ], + [ + -94.866291, + 44.2967388 + ], + [ + -94.8663722, + 44.3112144 + ], + [ + -94.8663117, + 44.3257373 + ], + [ + -94.8662921, + 44.3403225 + ], + [ + -94.8661563, + 44.3547025 + ], + [ + -94.8660504, + 44.369181 + ], + [ + -94.8660154, + 44.3833972 + ], + [ + -94.8659449, + 44.3978751 + ], + [ + -94.8657646, + 44.4124177 + ], + [ + -94.8657096, + 44.4269943 + ], + [ + -94.865629, + 44.4415082 + ], + [ + -94.8655019, + 44.4560589 + ], + [ + -94.8655457, + 44.4705257 + ], + [ + -94.8655607, + 44.48502 + ], + [ + -94.8655936, + 44.4980438 + ], + [ + -94.8653127, + 44.4979564 + ], + [ + -94.8650898, + 44.4978195 + ], + [ + -94.8648017, + 44.4974994 + ], + [ + -94.8645455, + 44.4969734 + ], + [ + -94.8644167, + 44.4962875 + ], + [ + -94.8642884, + 44.4961965 + ], + [ + -94.8641604, + 44.4958305 + ], + [ + -94.8640006, + 44.4956255 + ], + [ + -94.8633936, + 44.4953505 + ], + [ + -94.8625953, + 44.4951915 + ], + [ + -94.8585385, + 44.4948045 + ], + [ + -94.8574203, + 44.4948056 + ], + [ + -94.8562982, + 44.4949565 + ], + [ + -94.8562391, + 44.4949656 + ], + [ + -94.8546102, + 44.4954466 + ], + [ + -94.8538432, + 44.4956015 + ], + [ + -94.8533652, + 44.4956986 + ], + [ + -94.8524391, + 44.4955845 + ], + [ + -94.8518953, + 44.4951955 + ], + [ + -94.8518953, + 44.4946475 + ], + [ + -94.8521823, + 44.4941675 + ], + [ + -94.8525012, + 44.4938236 + ], + [ + -94.8533631, + 44.4933896 + ], + [ + -94.8548643, + 44.4928626 + ], + [ + -94.8552153, + 44.4925885 + ], + [ + -94.8553422, + 44.4921535 + ], + [ + -94.8552144, + 44.4915825 + ], + [ + -94.8545113, + 44.4903945 + ], + [ + -94.8538722, + 44.4899825 + ], + [ + -94.8530412, + 44.4897545 + ], + [ + -94.8513481, + 44.4897555 + ], + [ + -94.8511339, + 44.4898055 + ], + [ + -94.850678, + 44.4899156 + ], + [ + -94.850135, + 44.4901215 + ], + [ + -94.849848, + 44.4904415 + ], + [ + -94.8499439, + 44.4908756 + ], + [ + -94.8500401, + 44.4909216 + ], + [ + -94.8500402, + 44.4911726 + ], + [ + -94.8496572, + 44.4916535 + ], + [ + -94.8491142, + 44.4918826 + ], + [ + -94.8463359, + 44.4924316 + ], + [ + -94.8461319, + 44.4924429 + ], + [ + -94.8461318, + 44.4924429 + ], + [ + -94.8434298, + 44.4925926 + ], + [ + -94.8414819, + 44.4921817 + ], + [ + -94.8402679, + 44.4917476 + ], + [ + -94.8394369, + 44.4911307 + ], + [ + -94.8390538, + 44.4905597 + ], + [ + -94.8389579, + 44.4901477 + ], + [ + -94.8390527, + 44.4891876 + ], + [ + -94.8388929, + 44.4888676 + ], + [ + -94.8387008, + 44.4887306 + ], + [ + -94.8384457, + 44.4886166 + ], + [ + -94.8380306, + 44.4886166 + ], + [ + -94.8378678, + 44.4887246 + ], + [ + -94.8370406, + 44.4892797 + ], + [ + -94.8366576, + 44.4894857 + ], + [ + -94.8361147, + 44.4896686 + ], + [ + -94.8349967, + 44.4897607 + ], + [ + -94.8334316, + 44.4895317 + ], + [ + -94.8329848, + 44.4893947 + ], + [ + -94.8323456, + 44.4890517 + ], + [ + -94.8323138, + 44.4889146 + ], + [ + -94.8318985, + 44.4887546 + ], + [ + -94.8310367, + 44.4879547 + ], + [ + -94.8302057, + 44.4872697 + ], + [ + -94.8295024, + 44.4865837 + ], + [ + -94.8292476, + 44.4861036 + ], + [ + -94.8291516, + 44.4857837 + ], + [ + -94.8290887, + 44.4850814 + ], + [ + -94.8290555, + 44.4847087 + ], + [ + -94.8289915, + 44.4844347 + ], + [ + -94.8288953, + 44.4843887 + ], + [ + -94.8287996, + 44.4839546 + ], + [ + -94.8285434, + 44.4835657 + ], + [ + -94.8281286, + 44.4831547 + ], + [ + -94.8276812, + 44.4829486 + ], + [ + -94.8271704, + 44.4829257 + ], + [ + -94.8269745, + 44.4830557 + ], + [ + -94.8267554, + 44.4832007 + ], + [ + -94.8266274, + 44.4835207 + ], + [ + -94.8265325, + 44.4835897 + ], + [ + -94.8265003, + 44.4837267 + ], + [ + -94.8260214, + 44.4842977 + ], + [ + -94.8259253, + 44.4843437 + ], + [ + -94.8257975, + 44.4845037 + ], + [ + -94.8257417, + 44.4845492 + ], + [ + -94.8250954, + 44.4850757 + ], + [ + -94.8250718, + 44.4850869 + ], + [ + -94.8247125, + 44.4852588 + ], + [ + -94.8240732, + 44.4853266 + ], + [ + -94.8236585, + 44.4852356 + ], + [ + -94.823305, + 44.4850849 + ], + [ + -94.8233049, + 44.4850849 + ], + [ + -94.8206563, + 44.4839557 + ], + [ + -94.8194742, + 44.4833847 + ], + [ + -94.8186442, + 44.4831557 + ], + [ + -94.8182293, + 44.4831328 + ], + [ + -94.8177502, + 44.4832708 + ], + [ + -94.8173351, + 44.4835448 + ], + [ + -94.8167603, + 44.4840937 + ], + [ + -94.8163132, + 44.4844138 + ], + [ + -94.8156431, + 44.4845508 + ], + [ + -94.8153231, + 44.4844588 + ], + [ + -94.8148441, + 44.4840938 + ], + [ + -94.8147481, + 44.4838877 + ], + [ + -94.8147171, + 44.4834307 + ], + [ + -94.8148759, + 44.4830418 + ], + [ + -94.815132, + 44.4827447 + ], + [ + -94.8156111, + 44.4824698 + ], + [ + -94.816664, + 44.4821958 + ], + [ + -94.8175902, + 44.4818527 + ], + [ + -94.8180369, + 44.4815097 + ], + [ + -94.8181651, + 44.4812587 + ], + [ + -94.818165, + 44.4802067 + ], + [ + -94.8179409, + 44.4797727 + ], + [ + -94.8176541, + 44.4794067 + ], + [ + -94.817302, + 44.4791548 + ], + [ + -94.8170152, + 44.4790408 + ], + [ + -94.8164401, + 44.4791097 + ], + [ + -94.8156101, + 44.4794988 + ], + [ + -94.814173, + 44.4805727 + ], + [ + -94.8138861, + 44.4809157 + ], + [ + -94.8133429, + 44.4813047 + ], + [ + -94.8127372, + 44.4816017 + ], + [ + -94.812066, + 44.4816928 + ], + [ + -94.8115869, + 44.4813958 + ], + [ + -94.811332, + 44.4810078 + ], + [ + -94.8113319, + 44.4809158 + ], + [ + -94.8111718, + 44.4806188 + ], + [ + -94.8109479, + 44.4796817 + ], + [ + -94.8109159, + 44.4791557 + ], + [ + -94.8108209, + 44.4788808 + ], + [ + -94.810725, + 44.4777377 + ], + [ + -94.8106608, + 44.4773267 + ], + [ + -94.8106608, + 44.4764118 + ], + [ + -94.8106931, + 44.4761838 + ], + [ + -94.810597, + 44.4761147 + ], + [ + -94.8104689, + 44.4756577 + ], + [ + -94.810405, + 44.4756118 + ], + [ + -94.8104369, + 44.4750407 + ], + [ + -94.8107567, + 44.4746978 + ], + [ + -94.8112988, + 44.4740348 + ], + [ + -94.8112987, + 44.4737147 + ], + [ + -94.8111399, + 44.4733947 + ], + [ + -94.811044, + 44.4730747 + ], + [ + -94.8109797, + 44.4730287 + ], + [ + -94.810852, + 44.4726857 + ], + [ + -94.8106287, + 44.4723887 + ], + [ + -94.8105329, + 44.4721137 + ], + [ + -94.8104687, + 44.4720687 + ], + [ + -94.8101497, + 44.4714737 + ], + [ + -94.8098629, + 44.4711308 + ], + [ + -94.8094476, + 44.4709027 + ], + [ + -94.8090427, + 44.470553 + ], + [ + -94.8082027, + 44.4698278 + ], + [ + -94.8058077, + 44.4687077 + ], + [ + -94.8056006, + 44.4686395 + ], + [ + -94.8042117, + 44.4681818 + ], + [ + -94.8022324, + 44.4677708 + ], + [ + -94.8013705, + 44.4677477 + ], + [ + -94.8003804, + 44.4678618 + ], + [ + -94.7997425, + 44.4682498 + ], + [ + -94.7994866, + 44.4686158 + ], + [ + -94.7994546, + 44.4691188 + ], + [ + -94.7993267, + 44.4693928 + ], + [ + -94.7990714, + 44.4695758 + ], + [ + -94.7987203, + 44.4696448 + ], + [ + -94.7984333, + 44.4694848 + ], + [ + -94.7982734, + 44.4691648 + ], + [ + -94.7982094, + 44.4685017 + ], + [ + -94.7983053, + 44.4682727 + ], + [ + -94.7984013, + 44.4682268 + ], + [ + -94.7984336, + 44.4681127 + ], + [ + -94.7990085, + 44.4676327 + ], + [ + -94.7999015, + 44.4670838 + ], + [ + -94.8001765, + 44.4669678 + ], + [ + -94.8012106, + 44.4665358 + ], + [ + -94.8019773, + 44.4663528 + ], + [ + -94.8030305, + 44.4662847 + ], + [ + -94.8037323, + 44.4664448 + ], + [ + -94.8044996, + 44.4667648 + ], + [ + -94.8051696, + 44.4669477 + ], + [ + -94.8055791, + 44.4669618 + ], + [ + -94.8058398, + 44.4669708 + ], + [ + -94.8061905, + 44.4668787 + ], + [ + -94.8065107, + 44.4666507 + ], + [ + -94.8065428, + 44.4663527 + ], + [ + -94.8063824, + 44.4660328 + ], + [ + -94.8061275, + 44.4658047 + ], + [ + -94.8058385, + 44.4656308 + ], + [ + -94.8055598, + 44.4654624 + ], + [ + -94.8055206, + 44.4654387 + ], + [ + -94.8048504, + 44.4652327 + ], + [ + -94.8033184, + 44.4653018 + ], + [ + -94.8022645, + 44.4651408 + ], + [ + -94.8014984, + 44.4649358 + ], + [ + -94.8003493, + 44.4644097 + ], + [ + -94.7999663, + 44.4641577 + ], + [ + -94.7985615, + 44.4630838 + ], + [ + -94.7967423, + 44.4620087 + ], + [ + -94.7955932, + 44.4615968 + ], + [ + -94.7938061, + 44.4610027 + ], + [ + -94.793455, + 44.4607508 + ], + [ + -94.7933592, + 44.4606368 + ], + [ + -94.7934553, + 44.4603617 + ], + [ + -94.7939022, + 44.4598598 + ], + [ + -94.7941251, + 44.4594938 + ], + [ + -94.794196, + 44.4592038 + ], + [ + -94.7942532, + 44.4589678 + ], + [ + -94.7937751, + 44.4584418 + ], + [ + -94.7927212, + 44.4576188 + ], + [ + -94.791445, + 44.4567727 + ], + [ + -94.7909661, + 44.4565667 + ], + [ + -94.7901361, + 44.4562697 + ], + [ + -94.7895618, + 44.4561777 + ], + [ + -94.7889868, + 44.4561548 + ], + [ + -94.7868809, + 44.4566117 + ], + [ + -94.7852869, + 44.4568838 + ], + [ + -94.7851701, + 44.456904 + ], + [ + -94.78517, + 44.456904 + ], + [ + -94.7846137, + 44.4569999 + ], + [ + -94.7835288, + 44.4572968 + ], + [ + -94.7820288, + 44.4575709 + ], + [ + -94.7815179, + 44.4574338 + ], + [ + -94.7812628, + 44.4571818 + ], + [ + -94.7812309, + 44.4569988 + ], + [ + -94.7809439, + 44.4566559 + ], + [ + -94.7809437, + 44.4565188 + ], + [ + -94.7806566, + 44.4561988 + ], + [ + -94.7805702, + 44.4560958 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "area_715", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4962085, + 44.3076417 + ], + [ + -94.4962407, + 44.3076416 + ], + [ + -94.4968175, + 44.3087321 + ], + [ + -94.503745, + 44.3172523 + ], + [ + -94.5073574, + 44.317302 + ], + [ + -94.5072537, + 44.3217514 + ], + [ + -94.5079354, + 44.3226374 + ], + [ + -94.5123111, + 44.3226556 + ], + [ + -94.5134525, + 44.3226603 + ], + [ + -94.5134309, + 44.3253398 + ], + [ + -94.513622, + 44.3253406 + ], + [ + -94.5136186, + 44.3257613 + ], + [ + -94.5140248, + 44.3260821 + ], + [ + -94.5167679, + 44.3260492 + ], + [ + -94.5167681, + 44.3262513 + ], + [ + -94.5167697, + 44.3298889 + ], + [ + -94.5122669, + 44.3299378 + ], + [ + -94.5071974, + 44.3299271 + ], + [ + -94.5071788, + 44.3335482 + ], + [ + -94.5021089, + 44.3335267 + ], + [ + -94.4958674, + 44.3335056 + ], + [ + -94.4958591, + 44.3362229 + ], + [ + -94.495523, + 44.3360903 + ], + [ + -94.4952257, + 44.3359499 + ], + [ + -94.4949786, + 44.3358142 + ], + [ + -94.4947756, + 44.3356875 + ], + [ + -94.4945594, + 44.335542 + ], + [ + -94.4941451, + 44.3351847 + ], + [ + -94.493095, + 44.3340829 + ], + [ + -94.4923693, + 44.3344764 + ], + [ + -94.4923047, + 44.3345118 + ], + [ + -94.4922312, + 44.3345592 + ], + [ + -94.4921559, + 44.334617 + ], + [ + -94.4921055, + 44.3346628 + ], + [ + -94.4920571, + 44.3347148 + ], + [ + -94.4920034, + 44.334784 + ], + [ + -94.4919637, + 44.3348488 + ], + [ + -94.4919314, + 44.3349158 + ], + [ + -94.4919103, + 44.3349765 + ], + [ + -94.4918936, + 44.3350463 + ], + [ + -94.4918864, + 44.3351086 + ], + [ + -94.491883, + 44.3355602 + ], + [ + -94.4918787, + 44.3367002 + ], + [ + -94.4931843, + 44.3370479 + ], + [ + -94.4969199, + 44.3379491 + ], + [ + -94.4988417, + 44.3384119 + ], + [ + -94.499269, + 44.33907 + ], + [ + -94.4995537, + 44.3392995 + ], + [ + -94.5001277, + 44.3395952 + ], + [ + -94.5003849, + 44.3398063 + ], + [ + -94.5005154, + 44.3399494 + ], + [ + -94.5005489, + 44.3400843 + ], + [ + -94.5005367, + 44.3401407 + ], + [ + -94.5006382, + 44.3402747 + ], + [ + -94.5008065, + 44.3404024 + ], + [ + -94.5011734, + 44.3407298 + ], + [ + -94.5012484, + 44.3408219 + ], + [ + -94.4929145, + 44.3408212 + ], + [ + -94.4929255, + 44.3384549 + ], + [ + -94.4918721, + 44.3384548 + ], + [ + -94.4918631, + 44.3408211 + ], + [ + -94.4918795, + 44.3425734 + ], + [ + -94.4939044, + 44.3425469 + ], + [ + -94.4931472, + 44.3433659 + ], + [ + -94.4936467, + 44.3436037 + ], + [ + -94.4928, + 44.3445196 + ], + [ + -94.4935518, + 44.3448776 + ], + [ + -94.4931122, + 44.3453531 + ], + [ + -94.4919001, + 44.344776 + ], + [ + -94.4919719, + 44.3524584 + ], + [ + -94.491488, + 44.3516015 + ], + [ + -94.4913893, + 44.3514619 + ], + [ + -94.4913626, + 44.3513781 + ], + [ + -94.4912881, + 44.3512634 + ], + [ + -94.4912129, + 44.3511712 + ], + [ + -94.4911339, + 44.3510839 + ], + [ + -94.4910472, + 44.3509895 + ], + [ + -94.4909538, + 44.3509 + ], + [ + -94.4908609, + 44.3508159 + ], + [ + -94.4907588, + 44.3507317 + ], + [ + -94.4906517, + 44.3506525 + ], + [ + -94.4905429, + 44.3505826 + ], + [ + -94.49043, + 44.3505275 + ], + [ + -94.4902934, + 44.3504738 + ], + [ + -94.4901562, + 44.3504279 + ], + [ + -94.4900133, + 44.3503881 + ], + [ + -94.4898667, + 44.3503535 + ], + [ + -94.4897151, + 44.3503214 + ], + [ + -94.4895684, + 44.3502963 + ], + [ + -94.4894251, + 44.3502773 + ], + [ + -94.4892771, + 44.3502625 + ], + [ + -94.4891278, + 44.3502514 + ], + [ + -94.4889777, + 44.3502429 + ], + [ + -94.4888312, + 44.3502366 + ], + [ + -94.4886757, + 44.3502306 + ], + [ + -94.4885245, + 44.3502247 + ], + [ + -94.4883735, + 44.3502179 + ], + [ + -94.488223, + 44.350209 + ], + [ + -94.4880733, + 44.3501973 + ], + [ + -94.4879188, + 44.3501813 + ], + [ + -94.4877755, + 44.3501652 + ], + [ + -94.4876253, + 44.3501483 + ], + [ + -94.4874744, + 44.3501318 + ], + [ + -94.487324, + 44.3501133 + ], + [ + -94.487174, + 44.3500934 + ], + [ + -94.4870252, + 44.3500715 + ], + [ + -94.4868779, + 44.3500471 + ], + [ + -94.4867328, + 44.350019 + ], + [ + -94.4865952, + 44.3499882 + ], + [ + -94.4864524, + 44.3499485 + ], + [ + -94.4863169, + 44.3499055 + ], + [ + -94.4861815, + 44.3498596 + ], + [ + -94.4860422, + 44.3498101 + ], + [ + -94.4859108, + 44.3497605 + ], + [ + -94.4857709, + 44.3497054 + ], + [ + -94.485645, + 44.3496491 + ], + [ + -94.4855208, + 44.3495897 + ], + [ + -94.485393, + 44.3495238 + ], + [ + -94.4852715, + 44.3494574 + ], + [ + -94.4851531, + 44.3493892 + ], + [ + -94.4850396, + 44.349318 + ], + [ + -94.4849316, + 44.349244 + ], + [ + -94.4848281, + 44.3491684 + ], + [ + -94.4847324, + 44.3490928 + ], + [ + -94.4846327, + 44.3490096 + ], + [ + -94.4845385, + 44.3489262 + ], + [ + -94.4844519, + 44.348836 + ], + [ + -94.4843665, + 44.3487458 + ], + [ + -94.4842824, + 44.3486543 + ], + [ + -94.4842023, + 44.3485607 + ], + [ + -94.4841248, + 44.3484657 + ], + [ + -94.4840505, + 44.3483694 + ], + [ + -94.4839782, + 44.3482726 + ], + [ + -94.4839149, + 44.3481721 + ], + [ + -94.4838502, + 44.3480732 + ], + [ + -94.4837852, + 44.3479745 + ], + [ + -94.4837297, + 44.3478746 + ], + [ + -94.4837026, + 44.3478231 + ], + [ + -94.4836771, + 44.3477747 + ], + [ + -94.4836292, + 44.3476747 + ], + [ + -94.4835909, + 44.3475724 + ], + [ + -94.4835611, + 44.3474681 + ], + [ + -94.4835354, + 44.3473423 + ], + [ + -94.4835226, + 44.3472541 + ], + [ + -94.4835118, + 44.3471452 + ], + [ + -94.4835031, + 44.3470356 + ], + [ + -94.4834958, + 44.3469257 + ], + [ + -94.4834863, + 44.3468161 + ], + [ + -94.4834741, + 44.346707 + ], + [ + -94.4834578, + 44.346599 + ], + [ + -94.4834371, + 44.3464918 + ], + [ + -94.4834165, + 44.3463835 + ], + [ + -94.4833989, + 44.346274 + ], + [ + -94.4833841, + 44.3461684 + ], + [ + -94.4833625, + 44.3460544 + ], + [ + -94.4833388, + 44.3459457 + ], + [ + -94.4833065, + 44.3458393 + ], + [ + -94.4833016, + 44.3457274 + ], + [ + -94.4832701, + 44.3456221 + ], + [ + -94.483232, + 44.3455194 + ], + [ + -94.4831859, + 44.3454198 + ], + [ + -94.4831306, + 44.3453239 + ], + [ + -94.4830621, + 44.3452324 + ], + [ + -94.4829778, + 44.3451458 + ], + [ + -94.4828803, + 44.3450637 + ], + [ + -94.4827724, + 44.3449856 + ], + [ + -94.4826568, + 44.344911 + ], + [ + -94.4825362, + 44.3448396 + ], + [ + -94.4824134, + 44.344771 + ], + [ + -94.4822911, + 44.3447047 + ], + [ + -94.4821711, + 44.34464 + ], + [ + -94.4820493, + 44.3445761 + ], + [ + -94.481925, + 44.3445132 + ], + [ + -94.4817983, + 44.3444521 + ], + [ + -94.4816693, + 44.3443934 + ], + [ + -94.481538, + 44.3443377 + ], + [ + -94.4814046, + 44.3442856 + ], + [ + -94.4812693, + 44.3442378 + ], + [ + -94.481132, + 44.344195 + ], + [ + -94.4809929, + 44.3441577 + ], + [ + -94.4808515, + 44.3441259 + ], + [ + -94.4807071, + 44.3440983 + ], + [ + -94.4805602, + 44.3440748 + ], + [ + -94.4804113, + 44.344055 + ], + [ + -94.4802608, + 44.3440387 + ], + [ + -94.4801094, + 44.3440255 + ], + [ + -94.4799574, + 44.3440153 + ], + [ + -94.4798054, + 44.3440077 + ], + [ + -94.4796528, + 44.3440048 + ], + [ + -94.4795111, + 44.3439995 + ], + [ + -94.479354, + 44.3439995 + ], + [ + -94.4792052, + 44.3440056 + ], + [ + -94.4790575, + 44.3440176 + ], + [ + -94.4789078, + 44.3440341 + ], + [ + -94.4787592, + 44.3440531 + ], + [ + -94.4786108, + 44.3440795 + ], + [ + -94.4784621, + 44.3441015 + ], + [ + -94.4783132, + 44.3441212 + ], + [ + -94.4781641, + 44.3441367 + ], + [ + -94.4780147, + 44.3441514 + ], + [ + -94.4778652, + 44.3441663 + ], + [ + -94.4777154, + 44.3441808 + ], + [ + -94.4775656, + 44.3441939 + ], + [ + -94.4774158, + 44.3442051 + ], + [ + -94.4772623, + 44.3441993 + ], + [ + -94.4771144, + 44.3442109 + ], + [ + -94.4769654, + 44.3442161 + ], + [ + -94.476818, + 44.344216 + ], + [ + -94.4766643, + 44.3442093 + ], + [ + -94.4765132, + 44.3442005 + ], + [ + -94.476363, + 44.3441877 + ], + [ + -94.476214, + 44.3441715 + ], + [ + -94.4760668, + 44.3441517 + ], + [ + -94.4759205, + 44.3441272 + ], + [ + -94.4757729, + 44.3440994 + ], + [ + -94.4756353, + 44.3440669 + ], + [ + -94.4754874, + 44.3440214 + ], + [ + -94.4753538, + 44.3439716 + ], + [ + -94.4752296, + 44.3439141 + ], + [ + -94.4751163, + 44.3438536 + ], + [ + -94.4749948, + 44.3437797 + ], + [ + -94.4748822, + 44.3437051 + ], + [ + -94.4747744, + 44.3436265 + ], + [ + -94.4746726, + 44.3435442 + ], + [ + -94.4745781, + 44.3434588 + ], + [ + -94.4744923, + 44.3433704 + ], + [ + -94.4744118, + 44.3432805 + ], + [ + -94.4743482, + 44.3431851 + ], + [ + -94.4742926, + 44.3430859 + ], + [ + -94.4742435, + 44.342984 + ], + [ + -94.4741941, + 44.3428818 + ], + [ + -94.4741617, + 44.3427732 + ], + [ + -94.4741199, + 44.3426677 + ], + [ + -94.4740758, + 44.3425631 + ], + [ + -94.474027, + 44.3424601 + ], + [ + -94.4739524, + 44.3423627 + ], + [ + -94.4739078, + 44.3422603 + ], + [ + -94.4738562, + 44.3421585 + ], + [ + -94.4738016, + 44.3420571 + ], + [ + -94.4737446, + 44.341956 + ], + [ + -94.4736905, + 44.3418545 + ], + [ + -94.4736375, + 44.3417527 + ], + [ + -94.4735815, + 44.3416521 + ], + [ + -94.4735223, + 44.3415526 + ], + [ + -94.4734608, + 44.3414554 + ], + [ + -94.4733904, + 44.3413607 + ], + [ + -94.4733151, + 44.3412683 + ], + [ + -94.4732388, + 44.3411764 + ], + [ + -94.4731578, + 44.3410867 + ], + [ + -94.4730755, + 44.3409973 + ], + [ + -94.4729873, + 44.3409104 + ], + [ + -94.4729018, + 44.3408219 + ], + [ + -94.4728117, + 44.3407356 + ], + [ + -94.4727178, + 44.3406509 + ], + [ + -94.4726222, + 44.340567 + ], + [ + -94.4725182, + 44.3404805 + ], + [ + -94.4724212, + 44.3404048 + ], + [ + -94.4723167, + 44.340326 + ], + [ + -94.4722121, + 44.3402473 + ], + [ + -94.4721064, + 44.3401698 + ], + [ + -94.4720006, + 44.3400928 + ], + [ + -94.4718946, + 44.3400166 + ], + [ + -94.4717879, + 44.3399407 + ], + [ + -94.4716778, + 44.3398673 + ], + [ + -94.4715673, + 44.3397941 + ], + [ + -94.4714559, + 44.3397216 + ], + [ + -94.4713425, + 44.3396505 + ], + [ + -94.4712293, + 44.3395792 + ], + [ + -94.4711156, + 44.3395082 + ], + [ + -94.470996, + 44.3394337 + ], + [ + -94.4708875, + 44.3393668 + ], + [ + -94.4707733, + 44.3392961 + ], + [ + -94.4706596, + 44.3392252 + ], + [ + -94.4705465, + 44.3391537 + ], + [ + -94.4704343, + 44.3390817 + ], + [ + -94.4703228, + 44.3390091 + ], + [ + -94.4702108, + 44.3389367 + ], + [ + -94.4700983, + 44.3388645 + ], + [ + -94.4699854, + 44.3387926 + ], + [ + -94.4698723, + 44.3387207 + ], + [ + -94.4697591, + 44.3386488 + ], + [ + -94.469646, + 44.3385769 + ], + [ + -94.4695331, + 44.3385048 + ], + [ + -94.4694205, + 44.3384326 + ], + [ + -94.4693084, + 44.3383601 + ], + [ + -94.4691969, + 44.3382872 + ], + [ + -94.4690861, + 44.3382139 + ], + [ + -94.4689763, + 44.3381401 + ], + [ + -94.4688676, + 44.3380658 + ], + [ + -94.4687644, + 44.3379935 + ], + [ + -94.468655, + 44.3379138 + ], + [ + -94.4685513, + 44.3378365 + ], + [ + -94.4684492, + 44.3377582 + ], + [ + -94.4683574, + 44.3376768 + ], + [ + -94.4682804, + 44.3375804 + ], + [ + -94.4682095, + 44.3374838 + ], + [ + -94.4681535, + 44.3373798 + ], + [ + -94.4680849, + 44.3372826 + ], + [ + -94.4680048, + 44.3371923 + ], + [ + -94.4679069, + 44.3371129 + ], + [ + -94.4677923, + 44.3370441 + ], + [ + -94.4676678, + 44.3369815 + ], + [ + -94.467537, + 44.3369231 + ], + [ + -94.467415, + 44.3368569 + ], + [ + -94.4673049, + 44.3367854 + ], + [ + -94.4672032, + 44.3367066 + ], + [ + -94.4671056, + 44.3366247 + ], + [ + -94.467013, + 44.3365389 + ], + [ + -94.4669224, + 44.3364547 + ], + [ + -94.4668376, + 44.3363615 + ], + [ + -94.4667547, + 44.336271 + ], + [ + -94.4666737, + 44.33618 + ], + [ + -94.4665947, + 44.3360881 + ], + [ + -94.4665182, + 44.3359951 + ], + [ + -94.4664425, + 44.3359017 + ], + [ + -94.4663655, + 44.3358092 + ], + [ + -94.4663004, + 44.3357102 + ], + [ + -94.4662272, + 44.3356154 + ], + [ + -94.4661536, + 44.3355209 + ], + [ + -94.4660793, + 44.3354268 + ], + [ + -94.4660037, + 44.3353334 + ], + [ + -94.4659263, + 44.3352408 + ], + [ + -94.4658467, + 44.3351493 + ], + [ + -94.4657644, + 44.3350591 + ], + [ + -94.465663, + 44.3349767 + ], + [ + -94.4655842, + 44.3348856 + ], + [ + -94.4655, + 44.3347961 + ], + [ + -94.4654136, + 44.3347071 + ], + [ + -94.4653272, + 44.334618 + ], + [ + -94.4652835, + 44.3345732 + ], + [ + -94.46524, + 44.334529 + ], + [ + -94.465151, + 44.3344395 + ], + [ + -94.4650591, + 44.3343538 + ], + [ + -94.4649709, + 44.3342728 + ], + [ + -94.4648709, + 44.3341834 + ], + [ + -94.464775, + 44.3340995 + ], + [ + -94.4646786, + 44.3340161 + ], + [ + -94.4645798, + 44.3339345 + ], + [ + -94.4644805, + 44.3338535 + ], + [ + -94.4643786, + 44.3337745 + ], + [ + -94.4642751, + 44.3336971 + ], + [ + -94.4641689, + 44.333622 + ], + [ + -94.4640617, + 44.333548 + ], + [ + -94.4639574, + 44.3334817 + ], + [ + -94.4638356, + 44.3334087 + ], + [ + -94.4637176, + 44.3333417 + ], + [ + -94.4635965, + 44.3332767 + ], + [ + -94.4634733, + 44.3332133 + ], + [ + -94.4633481, + 44.3331515 + ], + [ + -94.4632205, + 44.3330918 + ], + [ + -94.4630913, + 44.3330339 + ], + [ + -94.4629606, + 44.3329778 + ], + [ + -94.4628941, + 44.3329501 + ], + [ + -94.4628289, + 44.3329241 + ], + [ + -94.4626951, + 44.3328728 + ], + [ + -94.4625605, + 44.3328233 + ], + [ + -94.4624256, + 44.3327756 + ], + [ + -94.4622904, + 44.3327297 + ], + [ + -94.4621469, + 44.332683 + ], + [ + -94.4620157, + 44.332644 + ], + [ + -94.4618738, + 44.332605 + ], + [ + -94.4617303, + 44.3325672 + ], + [ + -94.4615851, + 44.3325316 + ], + [ + -94.4614385, + 44.3324988 + ], + [ + -94.461291, + 44.3324684 + ], + [ + -94.4611428, + 44.3324414 + ], + [ + -94.4609948, + 44.3324163 + ], + [ + -94.4608467, + 44.3323949 + ], + [ + -94.4606965, + 44.3323759 + ], + [ + -94.4605568, + 44.3323634 + ], + [ + -94.4604059, + 44.3323564 + ], + [ + -94.4602598, + 44.332356 + ], + [ + -94.4601125, + 44.3323645 + ], + [ + -94.4599626, + 44.3323808 + ], + [ + -94.4598162, + 44.3324032 + ], + [ + -94.4596687, + 44.3324362 + ], + [ + -94.4595219, + 44.3324713 + ], + [ + -94.4593765, + 44.3325092 + ], + [ + -94.4592329, + 44.3325486 + ], + [ + -94.4590917, + 44.3325879 + ], + [ + -94.4589523, + 44.3326275 + ], + [ + -94.4588138, + 44.3326689 + ], + [ + -94.4586761, + 44.3327118 + ], + [ + -94.4585391, + 44.3327561 + ], + [ + -94.4584026, + 44.3328014 + ], + [ + -94.4582567, + 44.3328364 + ], + [ + -94.4581243, + 44.3328866 + ], + [ + -94.4579919, + 44.3329375 + ], + [ + -94.4578574, + 44.3329864 + ], + [ + -94.4577211, + 44.3330327 + ], + [ + -94.4575862, + 44.3330812 + ], + [ + -94.4574513, + 44.3331295 + ], + [ + -94.4573137, + 44.3331739 + ], + [ + -94.4571781, + 44.3332212 + ], + [ + -94.4570423, + 44.3332679 + ], + [ + -94.4569051, + 44.3333121 + ], + [ + -94.4567681, + 44.3333566 + ], + [ + -94.4566291, + 44.3333981 + ], + [ + -94.4564889, + 44.333438 + ], + [ + -94.45635, + 44.3334797 + ], + [ + -94.4562118, + 44.3335225 + ], + [ + -94.4560724, + 44.3335633 + ], + [ + -94.4559324, + 44.3336031 + ], + [ + -94.455792, + 44.333642 + ], + [ + -94.4556433, + 44.3336827 + ], + [ + -94.4555109, + 44.3337165 + ], + [ + -94.4553665, + 44.333741 + ], + [ + -94.4552274, + 44.3337902 + ], + [ + -94.4550842, + 44.3338254 + ], + [ + -94.45494, + 44.3338621 + ], + [ + -94.454795, + 44.3338991 + ], + [ + -94.4546493, + 44.333935 + ], + [ + -94.4545032, + 44.3339686 + ], + [ + -94.4543569, + 44.3339987 + ], + [ + -94.4542106, + 44.3340238 + ], + [ + -94.4540644, + 44.3340429 + ], + [ + -94.4539186, + 44.3340544 + ], + [ + -94.4537731, + 44.3340571 + ], + [ + -94.4536269, + 44.3340484 + ], + [ + -94.45348, + 44.3340297 + ], + [ + -94.4533331, + 44.3340027 + ], + [ + -94.4531866, + 44.3339695 + ], + [ + -94.453041, + 44.3339319 + ], + [ + -94.4529005, + 44.3338757 + ], + [ + -94.4527551, + 44.33385 + ], + [ + -94.4526851, + 44.3338316 + ], + [ + -94.4526133, + 44.3338107 + ], + [ + -94.4524742, + 44.3337683 + ], + [ + -94.4523334, + 44.333722 + ], + [ + -94.4521958, + 44.3336715 + ], + [ + -94.4520665, + 44.3336144 + ], + [ + -94.4519477, + 44.3335512 + ], + [ + -94.4518492, + 44.3334851 + ], + [ + -94.4517513, + 44.3333959 + ], + [ + -94.4516659, + 44.333306 + ], + [ + -94.4515885, + 44.3332106 + ], + [ + -94.4515194, + 44.3331113 + ], + [ + -94.451459, + 44.3330094 + ], + [ + -94.4514077, + 44.3329066 + ], + [ + -94.4513656, + 44.332804 + ], + [ + -94.4513284, + 44.3327003 + ], + [ + -94.4512952, + 44.3325951 + ], + [ + -94.4512658, + 44.3324887 + ], + [ + -94.4512406, + 44.3323813 + ], + [ + -94.4512195, + 44.3322732 + ], + [ + -94.4512026, + 44.3321647 + ], + [ + -94.45119, + 44.332056 + ], + [ + -94.4511818, + 44.3319474 + ], + [ + -94.4511781, + 44.3318391 + ], + [ + -94.4511788, + 44.3317313 + ], + [ + -94.4511817, + 44.3316237 + ], + [ + -94.4511852, + 44.3315159 + ], + [ + -94.4511892, + 44.3314079 + ], + [ + -94.4511938, + 44.3312998 + ], + [ + -94.4511992, + 44.3311915 + ], + [ + -94.4512053, + 44.3310832 + ], + [ + -94.4512123, + 44.3309747 + ], + [ + -94.4512202, + 44.3308663 + ], + [ + -94.451229, + 44.3307579 + ], + [ + -94.451239, + 44.3306495 + ], + [ + -94.4512501, + 44.3305412 + ], + [ + -94.4512624, + 44.3304329 + ], + [ + -94.451276, + 44.3303249 + ], + [ + -94.4512909, + 44.330217 + ], + [ + -94.4513073, + 44.3301093 + ], + [ + -94.4513251, + 44.3300018 + ], + [ + -94.4513445, + 44.3298946 + ], + [ + -94.4513563, + 44.3297858 + ], + [ + -94.451383, + 44.3296803 + ], + [ + -94.4514088, + 44.3295743 + ], + [ + -94.4514349, + 44.3294686 + ], + [ + -94.4514634, + 44.3293633 + ], + [ + -94.4514947, + 44.3292585 + ], + [ + -94.4515302, + 44.3291544 + ], + [ + -94.451568, + 44.3290506 + ], + [ + -94.451595, + 44.3289467 + ], + [ + -94.4516611, + 44.3288454 + ], + [ + -94.4517092, + 44.3287431 + ], + [ + -94.4517595, + 44.3286411 + ], + [ + -94.4518022, + 44.3285361 + ], + [ + -94.4518574, + 44.3284354 + ], + [ + -94.4519146, + 44.328335 + ], + [ + -94.4519724, + 44.3282346 + ], + [ + -94.4520293, + 44.3281339 + ], + [ + -94.4520864, + 44.3280332 + ], + [ + -94.4521412, + 44.3279319 + ], + [ + -94.4521974, + 44.3278311 + ], + [ + -94.4522497, + 44.3277293 + ], + [ + -94.452303, + 44.327628 + ], + [ + -94.4523561, + 44.327527 + ], + [ + -94.4524084, + 44.3274257 + ], + [ + -94.4524624, + 44.3273248 + ], + [ + -94.4525169, + 44.3272241 + ], + [ + -94.4525707, + 44.327123 + ], + [ + -94.4526259, + 44.3270224 + ], + [ + -94.4526807, + 44.3269185 + ], + [ + -94.4527383, + 44.3268217 + ], + [ + -94.4527939, + 44.3267212 + ], + [ + -94.4528495, + 44.3266207 + ], + [ + -94.4529051, + 44.3265201 + ], + [ + -94.4529603, + 44.3264196 + ], + [ + -94.4530153, + 44.3263189 + ], + [ + -94.4530577, + 44.3262384 + ], + [ + -94.4531238, + 44.3261174 + ], + [ + -94.4531772, + 44.3260165 + ], + [ + -94.4532267, + 44.3259143 + ], + [ + -94.4532788, + 44.3258132 + ], + [ + -94.4533295, + 44.3257118 + ], + [ + -94.4533805, + 44.325606 + ], + [ + -94.4534199, + 44.3255082 + ], + [ + -94.4534501, + 44.3254036 + ], + [ + -94.4534772, + 44.3252978 + ], + [ + -94.4535025, + 44.325191 + ], + [ + -94.4535423, + 44.3249758 + ], + [ + -94.4535898, + 44.3246767 + ], + [ + -94.4536264, + 44.3244095 + ], + [ + -94.4536356, + 44.324301 + ], + [ + -94.4536431, + 44.3241893 + ], + [ + -94.4536401, + 44.3240853 + ], + [ + -94.4536379, + 44.3239773 + ], + [ + -94.4536228, + 44.3238709 + ], + [ + -94.4536012, + 44.3237629 + ], + [ + -94.4535745, + 44.3236532 + ], + [ + -94.4535396, + 44.3235446 + ], + [ + -94.4534935, + 44.3234397 + ], + [ + -94.4534333, + 44.3233413 + ], + [ + -94.453356, + 44.3232522 + ], + [ + -94.4532623, + 44.3231645 + ], + [ + -94.4531696, + 44.323085 + ], + [ + -94.4530669, + 44.3230034 + ], + [ + -94.4530143, + 44.3229644 + ], + [ + -94.4529593, + 44.3229238 + ], + [ + -94.4528474, + 44.322847 + ], + [ + -94.4527288, + 44.3227715 + ], + [ + -94.452608, + 44.3227073 + ], + [ + -94.4524882, + 44.3226503 + ], + [ + -94.4523547, + 44.3225938 + ], + [ + -94.4522249, + 44.3225462 + ], + [ + -94.4520885, + 44.3225057 + ], + [ + -94.4519478, + 44.3224723 + ], + [ + -94.451802, + 44.3224446 + ], + [ + -94.4516467, + 44.3224252 + ], + [ + -94.4514934, + 44.3224104 + ], + [ + -94.4513399, + 44.3223989 + ], + [ + -94.4511877, + 44.32239 + ], + [ + -94.4510385, + 44.3223829 + ], + [ + -94.4508898, + 44.3223874 + ], + [ + -94.4507409, + 44.3224012 + ], + [ + -94.4505919, + 44.322423 + ], + [ + -94.4504435, + 44.3224493 + ], + [ + -94.4502962, + 44.3224768 + ], + [ + -94.4501502, + 44.322503 + ], + [ + -94.4500048, + 44.3225305 + ], + [ + -94.4498598, + 44.3225592 + ], + [ + -94.4497151, + 44.322589 + ], + [ + -94.4495708, + 44.3226197 + ], + [ + -94.4494267, + 44.3226512 + ], + [ + -94.4492829, + 44.3226833 + ], + [ + -94.4491392, + 44.3227156 + ], + [ + -94.4485654, + 44.3228464 + ], + [ + -94.4484221, + 44.3228796 + ], + [ + -94.448279, + 44.3229132 + ], + [ + -94.4481362, + 44.3229474 + ], + [ + -94.4479937, + 44.3229823 + ], + [ + -94.4478518, + 44.3230181 + ], + [ + -94.4477103, + 44.3230549 + ], + [ + -94.4475696, + 44.3230927 + ], + [ + -94.4474294, + 44.3231318 + ], + [ + -94.4472896, + 44.3231719 + ], + [ + -94.4471503, + 44.3232131 + ], + [ + -94.4470117, + 44.3232556 + ], + [ + -94.4468739, + 44.3232994 + ], + [ + -94.446737, + 44.3233445 + ], + [ + -94.4466012, + 44.323391 + ], + [ + -94.4464665, + 44.3234391 + ], + [ + -94.4463332, + 44.3234889 + ], + [ + -94.4462024, + 44.3235425 + ], + [ + -94.446074, + 44.3235995 + ], + [ + -94.445947, + 44.3236588 + ], + [ + -94.4456942, + 44.3237787 + ], + [ + -94.4455668, + 44.3238369 + ], + [ + -94.4454378, + 44.323892 + ], + [ + -94.4453063, + 44.323943 + ], + [ + -94.4451715, + 44.3239886 + ], + [ + -94.4450326, + 44.3240282 + ], + [ + -94.44489, + 44.3240629 + ], + [ + -94.4447444, + 44.3240929 + ], + [ + -94.4445969, + 44.3241189 + ], + [ + -94.4444481, + 44.3241412 + ], + [ + -94.444299, + 44.3241604 + ], + [ + -94.4441505, + 44.3241769 + ], + [ + -94.4440015, + 44.3241899 + ], + [ + -94.4438483, + 44.3241949 + ], + [ + -94.443695, + 44.3241896 + ], + [ + -94.443546, + 44.3241722 + ], + [ + -94.4434049, + 44.3241412 + ], + [ + -94.4432595, + 44.3240962 + ], + [ + -94.4431226, + 44.3240532 + ], + [ + -94.4429968, + 44.3239963 + ], + [ + -94.4428696, + 44.3239367 + ], + [ + -94.4427563, + 44.3238646 + ], + [ + -94.4426421, + 44.3237936 + ], + [ + -94.4425299, + 44.323718 + ], + [ + -94.4424197, + 44.3236341 + ], + [ + -94.44233, + 44.3235515 + ], + [ + -94.4422494, + 44.3234606 + ], + [ + -94.4421824, + 44.3233628 + ], + [ + -94.4421262, + 44.3232673 + ], + [ + -94.4420758, + 44.3231669 + ], + [ + -94.4420533, + 44.3231182 + ], + [ + -94.4420285, + 44.3230651 + ], + [ + -94.4419836, + 44.3229621 + ], + [ + -94.441941, + 44.3228582 + ], + [ + -94.4419003, + 44.3227535 + ], + [ + -94.4418615, + 44.3226483 + ], + [ + -94.4418241, + 44.3225426 + ], + [ + -94.4417879, + 44.3224366 + ], + [ + -94.4417527, + 44.3223306 + ], + [ + -94.4417182, + 44.3222249 + ], + [ + -94.4416705, + 44.3220776 + ], + [ + -94.4416505, + 44.3220136 + ], + [ + -94.4416204, + 44.321908 + ], + [ + -94.4415944, + 44.3218017 + ], + [ + -94.4415714, + 44.3216949 + ], + [ + -94.4415509, + 44.3215878 + ], + [ + -94.4415189, + 44.3213721 + ], + [ + -94.4414998, + 44.3212647 + ], + [ + -94.4414786, + 44.3211577 + ], + [ + -94.441454, + 44.3210512 + ], + [ + -94.4414249, + 44.3209454 + ], + [ + -94.441389, + 44.3208404 + ], + [ + -94.441343, + 44.3207361 + ], + [ + -94.4412891, + 44.3206322 + ], + [ + -94.4412301, + 44.3205287 + ], + [ + -94.4411049, + 44.320323 + ], + [ + -94.4410471, + 44.3202153 + ], + [ + -94.440998, + 44.3201163 + ], + [ + -94.4409545, + 44.3200131 + ], + [ + -94.4409233, + 44.3199155 + ], + [ + -94.4409033, + 44.3198063 + ], + [ + -94.4408989, + 44.3196966 + ], + [ + -94.4409078, + 44.319598 + ], + [ + -94.4409028, + 44.3194947 + ], + [ + -94.4409421, + 44.3193873 + ], + [ + -94.4409609, + 44.3192815 + ], + [ + -94.4409815, + 44.3191755 + ], + [ + -94.4410039, + 44.3190691 + ], + [ + -94.441028, + 44.3189625 + ], + [ + -94.4410538, + 44.3188558 + ], + [ + -94.4410813, + 44.3187489 + ], + [ + -94.4411104, + 44.318642 + ], + [ + -94.4411411, + 44.318535 + ], + [ + -94.4411733, + 44.3184281 + ], + [ + -94.441207, + 44.3183212 + ], + [ + -94.4412423, + 44.3182145 + ], + [ + -94.4412789, + 44.3181079 + ], + [ + -94.441317, + 44.3180015 + ], + [ + -94.4413565, + 44.3178953 + ], + [ + -94.4413973, + 44.3177895 + ], + [ + -94.4414394, + 44.317684 + ], + [ + -94.4414827, + 44.3175789 + ], + [ + -94.4415273, + 44.3174743 + ], + [ + -94.4415731, + 44.3173701 + ], + [ + -94.44162, + 44.3172665 + ], + [ + -94.4416681, + 44.3171634 + ], + [ + -94.4417172, + 44.317061 + ], + [ + -94.4417484, + 44.3169517 + ], + [ + -94.4418095, + 44.3168547 + ], + [ + -94.4418652, + 44.3167559 + ], + [ + -94.4419197, + 44.316657 + ], + [ + -94.4419757, + 44.3165587 + ], + [ + -94.4420385, + 44.3164629 + ], + [ + -94.4421151, + 44.3163661 + ], + [ + -94.4421913, + 44.3162764 + ], + [ + -94.4422753, + 44.3161858 + ], + [ + -94.4423641, + 44.3160968 + ], + [ + -94.4424559, + 44.3160087 + ], + [ + -94.4425533, + 44.3159232 + ], + [ + -94.4426527, + 44.3158388 + ], + [ + -94.4427595, + 44.3157517 + ], + [ + -94.4428588, + 44.3156756 + ], + [ + -94.4429652, + 44.3155971 + ], + [ + -94.4430723, + 44.3155204 + ], + [ + -94.4431793, + 44.3154453 + ], + [ + -94.4432871, + 44.3153721 + ], + [ + -94.4433991, + 44.3153022 + ], + [ + -94.4435186, + 44.3152334 + ], + [ + -94.4436453, + 44.3151713 + ], + [ + -94.4437744, + 44.3151115 + ], + [ + -94.4439069, + 44.3150553 + ], + [ + -94.4440406, + 44.3150002 + ], + [ + -94.4441782, + 44.3149534 + ], + [ + -94.4443231, + 44.3149085 + ], + [ + -94.4444545, + 44.314871 + ], + [ + -94.4445965, + 44.3148358 + ], + [ + -94.4447379, + 44.314813 + ], + [ + -94.4448875, + 44.3147997 + ], + [ + -94.4450399, + 44.3148034 + ], + [ + -94.4451993, + 44.3148141 + ], + [ + -94.4453511, + 44.3148294 + ], + [ + -94.4454978, + 44.3148488 + ], + [ + -94.445645, + 44.314873 + ], + [ + -94.4457931, + 44.3149026 + ], + [ + -94.4459427, + 44.3149379 + ], + [ + -94.4460838, + 44.3149753 + ], + [ + -94.4462202, + 44.3150236 + ], + [ + -94.4463477, + 44.3150793 + ], + [ + -94.4464645, + 44.3151426 + ], + [ + -94.4465759, + 44.3152128 + ], + [ + -94.4466829, + 44.3152888 + ], + [ + -94.4467852, + 44.3153698 + ], + [ + -94.4468826, + 44.315455 + ], + [ + -94.4469745, + 44.3155436 + ], + [ + -94.4470608, + 44.3156347 + ], + [ + -94.447141, + 44.3157275 + ], + [ + -94.4472148, + 44.3158212 + ], + [ + -94.4472838, + 44.315916 + ], + [ + -94.4473496, + 44.3160127 + ], + [ + -94.4474123, + 44.316111 + ], + [ + -94.4474719, + 44.3162107 + ], + [ + -94.4475283, + 44.3163117 + ], + [ + -94.4475814, + 44.3164138 + ], + [ + -94.4476312, + 44.3165168 + ], + [ + -94.4476583, + 44.3166276 + ], + [ + -94.4477135, + 44.3167235 + ], + [ + -94.4477507, + 44.3168304 + ], + [ + -94.447785, + 44.3169353 + ], + [ + -94.4478216, + 44.3170397 + ], + [ + -94.4478539, + 44.3171447 + ], + [ + -94.4478798, + 44.3172507 + ], + [ + -94.4479038, + 44.317357 + ], + [ + -94.4479262, + 44.3174636 + ], + [ + -94.4479472, + 44.3175705 + ], + [ + -94.4479633, + 44.3176781 + ], + [ + -94.4479766, + 44.3177861 + ], + [ + -94.4479931, + 44.3178938 + ], + [ + -94.4480475, + 44.3182164 + ], + [ + -94.4480642, + 44.3183241 + ], + [ + -94.4480828, + 44.3184316 + ], + [ + -94.4481006, + 44.318539 + ], + [ + -94.4481234, + 44.318646 + ], + [ + -94.4482351, + 44.3191807 + ], + [ + -94.4482812, + 44.3193946 + ], + [ + -94.4483051, + 44.3195015 + ], + [ + -94.4483296, + 44.3196082 + ], + [ + -94.448355, + 44.3197148 + ], + [ + -94.4483814, + 44.3198211 + ], + [ + -94.44841, + 44.3199271 + ], + [ + -94.4484385, + 44.320033 + ], + [ + -94.4484693, + 44.3201384 + ], + [ + -94.4484986, + 44.3202436 + ], + [ + -94.4485435, + 44.3203477 + ], + [ + -94.44858, + 44.3204535 + ], + [ + -94.4486182, + 44.3205602 + ], + [ + -94.4486589, + 44.3206669 + ], + [ + -94.4487028, + 44.3207729 + ], + [ + -94.4487482, + 44.3208785 + ], + [ + -94.4488055, + 44.3209827 + ], + [ + -94.4488638, + 44.3210782 + ], + [ + -94.4489297, + 44.3211732 + ], + [ + -94.449002, + 44.3212639 + ], + [ + -94.4490792, + 44.3213417 + ], + [ + -94.4491936, + 44.3214238 + ], + [ + -94.4493152, + 44.3214923 + ], + [ + -94.4494459, + 44.3215543 + ], + [ + -94.4495742, + 44.3216062 + ], + [ + -94.4497197, + 44.3216546 + ], + [ + -94.4498575, + 44.3216926 + ], + [ + -94.4500023, + 44.3217237 + ], + [ + -94.4501486, + 44.3217425 + ], + [ + -94.4503049, + 44.3217551 + ], + [ + -94.4504576, + 44.321762 + ], + [ + -94.4506081, + 44.321764 + ], + [ + -94.4507571, + 44.3217603 + ], + [ + -94.4508998, + 44.321749 + ], + [ + -94.451058, + 44.3217263 + ], + [ + -94.4512048, + 44.3216964 + ], + [ + -94.4513457, + 44.3216587 + ], + [ + -94.4514802, + 44.3216136 + ], + [ + -94.4516111, + 44.321561 + ], + [ + -94.4517386, + 44.3215025 + ], + [ + -94.4518528, + 44.3214245 + ], + [ + -94.4519817, + 44.3213702 + ], + [ + -94.4521014, + 44.3213041 + ], + [ + -94.4522028, + 44.3212438 + ], + [ + -94.4523212, + 44.3211657 + ], + [ + -94.4524349, + 44.3210862 + ], + [ + -94.4525403, + 44.3210083 + ], + [ + -94.4526424, + 44.3209284 + ], + [ + -94.4527407, + 44.3208466 + ], + [ + -94.4528343, + 44.320764 + ], + [ + -94.4529345, + 44.3206771 + ], + [ + -94.4530322, + 44.3205878 + ], + [ + -94.4531209, + 44.3204955 + ], + [ + -94.4531917, + 44.3204 + ], + [ + -94.4532362, + 44.3203008 + ], + [ + -94.4532524, + 44.3201981 + ], + [ + -94.4532587, + 44.3200934 + ], + [ + -94.4532576, + 44.319987 + ], + [ + -94.45325, + 44.3198794 + ], + [ + -94.4532367, + 44.3197709 + ], + [ + -94.4532185, + 44.3196618 + ], + [ + -94.4531963, + 44.3195525 + ], + [ + -94.4531711, + 44.3194433 + ], + [ + -94.4531436, + 44.3193345 + ], + [ + -94.4531147, + 44.3192267 + ], + [ + -94.4530852, + 44.31912 + ], + [ + -94.4530545, + 44.3190148 + ], + [ + -94.4530153, + 44.3189111 + ], + [ + -94.4529683, + 44.3188087 + ], + [ + -94.4529159, + 44.3187072 + ], + [ + -94.45286, + 44.3186062 + ], + [ + -94.4528029, + 44.3185055 + ], + [ + -94.4527264, + 44.3184079 + ], + [ + -94.4526844, + 44.318305 + ], + [ + -94.4526378, + 44.3182026 + ], + [ + -94.4525895, + 44.318101 + ], + [ + -94.4525398, + 44.3179982 + ], + [ + -94.4524919, + 44.3178953 + ], + [ + -94.4523453, + 44.3175872 + ], + [ + -94.4522967, + 44.3174846 + ], + [ + -94.4522464, + 44.3173824 + ], + [ + -94.4521952, + 44.3172806 + ], + [ + -94.4521441, + 44.3171789 + ], + [ + -94.4520907, + 44.317078 + ], + [ + -94.4520348, + 44.3169779 + ], + [ + -94.4519783, + 44.3168782 + ], + [ + -94.4519189, + 44.3167795 + ], + [ + -94.4518573, + 44.3166818 + ], + [ + -94.451793, + 44.316585 + ], + [ + -94.4517261, + 44.3164897 + ], + [ + -94.451652, + 44.316396 + ], + [ + -94.4515748, + 44.3163036 + ], + [ + -94.4514945, + 44.3162123 + ], + [ + -94.4514156, + 44.3161265 + ], + [ + -94.4513266, + 44.3160325 + ], + [ + -94.4512398, + 44.3159438 + ], + [ + -94.4511514, + 44.3158558 + ], + [ + -94.4510555, + 44.3157708 + ], + [ + -94.4509636, + 44.3156845 + ], + [ + -94.450694, + 44.3154224 + ], + [ + -94.4505985, + 44.3153398 + ], + [ + -94.4505065, + 44.3152544 + ], + [ + -94.4504123, + 44.3151703 + ], + [ + -94.4503179, + 44.3150863 + ], + [ + -94.4502223, + 44.315003 + ], + [ + -94.4501262, + 44.3149199 + ], + [ + -94.4500246, + 44.3148321 + ], + [ + -94.4498361, + 44.3146715 + ], + [ + -94.4495327, + 44.3144168 + ], + [ + -94.449347, + 44.3142609 + ], + [ + -94.4491519, + 44.3140965 + ], + [ + -94.4489476, + 44.3139391 + ], + [ + -94.4487704, + 44.3137619 + ], + [ + -94.4486741, + 44.3136789 + ], + [ + -94.4483841, + 44.3134303 + ], + [ + -94.4482877, + 44.3133473 + ], + [ + -94.4481917, + 44.313264 + ], + [ + -94.4480964, + 44.3131804 + ], + [ + -94.4480019, + 44.3130964 + ], + [ + -94.4479084, + 44.3130119 + ], + [ + -94.447816, + 44.3129267 + ], + [ + -94.447725, + 44.3128408 + ], + [ + -94.4476357, + 44.312754 + ], + [ + -94.4475483, + 44.3126662 + ], + [ + -94.4474625, + 44.3125776 + ], + [ + -94.4473781, + 44.3124882 + ], + [ + -94.4472946, + 44.3123983 + ], + [ + -94.4472119, + 44.312308 + ], + [ + -94.4469647, + 44.3120366 + ], + [ + -94.4468817, + 44.3119464 + ], + [ + -94.4467977, + 44.3118567 + ], + [ + -94.4466274, + 44.3116786 + ], + [ + -94.4463712, + 44.3114118 + ], + [ + -94.4461998, + 44.3112342 + ], + [ + -94.4460275, + 44.3110571 + ], + [ + -94.445854, + 44.3108806 + ], + [ + -94.4457667, + 44.3107926 + ], + [ + -94.445679, + 44.3107049 + ], + [ + -94.4455027, + 44.3105298 + ], + [ + -94.4452386, + 44.3102667 + ], + [ + -94.4450619, + 44.3100915 + ], + [ + -94.444973, + 44.3100042 + ], + [ + -94.4448836, + 44.3099172 + ], + [ + -94.4447937, + 44.3098305 + ], + [ + -94.444703, + 44.3097443 + ], + [ + -94.4446115, + 44.3096586 + ], + [ + -94.444519, + 44.3095735 + ], + [ + -94.4444256, + 44.309489 + ], + [ + -94.4443309, + 44.3094053 + ], + [ + -94.4442351, + 44.3093222 + ], + [ + -94.4441378, + 44.3092389 + ], + [ + -94.4440387, + 44.309156 + ], + [ + -94.4439372, + 44.3090742 + ], + [ + -94.443833, + 44.3089946 + ], + [ + -94.4437256, + 44.3089179 + ], + [ + -94.4436146, + 44.3088452 + ], + [ + -94.4434995, + 44.3087771 + ], + [ + -94.4433797, + 44.3087147 + ], + [ + -94.4432535, + 44.308658 + ], + [ + -94.4431204, + 44.3086067 + ], + [ + -94.4429821, + 44.3085607 + ], + [ + -94.44284, + 44.3085197 + ], + [ + -94.4426955, + 44.3084836 + ], + [ + -94.4425501, + 44.3084523 + ], + [ + -94.4424044, + 44.3084284 + ], + [ + -94.4422588, + 44.3084135 + ], + [ + -94.4421076, + 44.3084043 + ], + [ + -94.4419542, + 44.3084029 + ], + [ + -94.4418014, + 44.3084088 + ], + [ + -94.4416521, + 44.3084193 + ], + [ + -94.4415103, + 44.3084394 + ], + [ + -94.4414327, + 44.3084532 + ], + [ + -94.4413621, + 44.3084703 + ], + [ + -94.4412284, + 44.3085089 + ], + [ + -94.4410833, + 44.308559 + ], + [ + -94.4409503, + 44.3086115 + ], + [ + -94.440824, + 44.3086686 + ], + [ + -94.4407031, + 44.3087314 + ], + [ + -94.4405844, + 44.3088009 + ], + [ + -94.4404778, + 44.3088751 + ], + [ + -94.4403677, + 44.3089586 + ], + [ + -94.4402711, + 44.3090349 + ], + [ + -94.4401716, + 44.3091163 + ], + [ + -94.4400736, + 44.309198 + ], + [ + -94.4399769, + 44.3092808 + ], + [ + -94.4398816, + 44.3093646 + ], + [ + -94.439788, + 44.3094495 + ], + [ + -94.4396962, + 44.3095354 + ], + [ + -94.4396063, + 44.3096223 + ], + [ + -94.4395158, + 44.3097128 + ], + [ + -94.4394334, + 44.3097989 + ], + [ + -94.4393477, + 44.3098915 + ], + [ + -94.4392711, + 44.3099805 + ], + [ + -94.4391944, + 44.3100733 + ], + [ + -94.4391192, + 44.3101668 + ], + [ + -94.4390461, + 44.3102613 + ], + [ + -94.4389726, + 44.3103556 + ], + [ + -94.438751, + 44.3106382 + ], + [ + -94.4386782, + 44.3107328 + ], + [ + -94.4386073, + 44.3108282 + ], + [ + -94.438554, + 44.3108932 + ], + [ + -94.4385069, + 44.3109569 + ], + [ + -94.4384564, + 44.3110191 + ], + [ + -94.438268, + 44.3112744 + ], + [ + -94.4382191, + 44.3113374 + ], + [ + -94.4381697, + 44.3114002 + ], + [ + -94.43812, + 44.3114627 + ], + [ + -94.4380696, + 44.311525 + ], + [ + -94.4380184, + 44.3115869 + ], + [ + -94.4379665, + 44.3116483 + ], + [ + -94.4379136, + 44.3117094 + ], + [ + -94.4378596, + 44.3117699 + ], + [ + -94.4377493, + 44.311891 + ], + [ + -94.4376931, + 44.3119522 + ], + [ + -94.4376355, + 44.312013 + ], + [ + -94.437576, + 44.3120726 + ], + [ + -94.437514, + 44.3121304 + ], + [ + -94.437449, + 44.3121856 + ], + [ + -94.4373804, + 44.3122377 + ], + [ + -94.4373077, + 44.3122859 + ], + [ + -94.4372304, + 44.3123295 + ], + [ + -94.4370682, + 44.3124153 + ], + [ + -94.4369846, + 44.3124587 + ], + [ + -94.4368994, + 44.3125016 + ], + [ + -94.4368128, + 44.3125438 + ], + [ + -94.4367248, + 44.3125846 + ], + [ + -94.4366357, + 44.3126237 + ], + [ + -94.4365453, + 44.3126606 + ], + [ + -94.436454, + 44.3126947 + ], + [ + -94.4363617, + 44.3127257 + ], + [ + -94.4362686, + 44.3127529 + ], + [ + -94.4361748, + 44.3127761 + ], + [ + -94.4360804, + 44.3127946 + ], + [ + -94.4359855, + 44.312808 + ], + [ + -94.4358807, + 44.3128009 + ], + [ + -94.4357929, + 44.3128194 + ], + [ + -94.4357015, + 44.3128248 + ], + [ + -94.4355961, + 44.3128311 + ], + [ + -94.4355, + 44.3128276 + ], + [ + -94.4354009, + 44.3128245 + ], + [ + -94.4353008, + 44.3128208 + ], + [ + -94.4352007, + 44.3128145 + ], + [ + -94.4351002, + 44.3128069 + ], + [ + -94.4349994, + 44.3127981 + ], + [ + -94.4348983, + 44.3127883 + ], + [ + -94.4348024, + 44.312778 + ], + [ + -94.4346957, + 44.3127655 + ], + [ + -94.4345888, + 44.312752 + ], + [ + -94.4344932, + 44.3127391 + ], + [ + -94.4343922, + 44.3127249 + ], + [ + -94.4342914, + 44.3127099 + ], + [ + -94.434191, + 44.3126944 + ], + [ + -94.434091, + 44.3126784 + ], + [ + -94.4339915, + 44.312662 + ], + [ + -94.4338927, + 44.3126452 + ], + [ + -94.4337899, + 44.3126277 + ], + [ + -94.4336017, + 44.3125885 + ], + [ + -94.4335083, + 44.3125679 + ], + [ + -94.4334158, + 44.3125431 + ], + [ + -94.4333246, + 44.3125139 + ], + [ + -94.4332348, + 44.3124809 + ], + [ + -94.4331469, + 44.3124441 + ], + [ + -94.4330611, + 44.312404 + ], + [ + -94.4329769, + 44.3123618 + ], + [ + -94.4328945, + 44.3123181 + ], + [ + -94.4328137, + 44.3122739 + ], + [ + -94.4327397, + 44.3122314 + ], + [ + -94.4326585, + 44.3121839 + ], + [ + -94.4325775, + 44.3121476 + ], + [ + -94.4325137, + 44.3120835 + ], + [ + -94.4324428, + 44.3120316 + ], + [ + -94.4323646, + 44.3119818 + ], + [ + -94.4323025, + 44.3119254 + ], + [ + -94.4322393, + 44.3118685 + ], + [ + -94.4321775, + 44.311811 + ], + [ + -94.4321187, + 44.3117523 + ], + [ + -94.4320626, + 44.3116926 + ], + [ + -94.4320096, + 44.3116323 + ], + [ + -94.4319599, + 44.3115708 + ], + [ + -94.4319094, + 44.3115103 + ], + [ + -94.4318734, + 44.3114404 + ], + [ + -94.4318321, + 44.3113743 + ], + [ + -94.4317728, + 44.3113082 + ], + [ + -94.4317531, + 44.3112397 + ], + [ + -94.4317212, + 44.3111708 + ], + [ + -94.4316906, + 44.3110994 + ], + [ + -94.4316631, + 44.311032 + ], + [ + -94.4316368, + 44.3109625 + ], + [ + -94.4316124, + 44.3108932 + ], + [ + -94.4315907, + 44.3108234 + ], + [ + -94.4315725, + 44.3107526 + ], + [ + -94.4315577, + 44.310681 + ], + [ + -94.431546, + 44.310609 + ], + [ + -94.4315372, + 44.3105366 + ], + [ + -94.4315315, + 44.3104674 + ], + [ + -94.4315272, + 44.3103921 + ], + [ + -94.4315247, + 44.3103168 + ], + [ + -94.4315308, + 44.3102474 + ], + [ + -94.4315394, + 44.3101775 + ], + [ + -94.4315521, + 44.3101049 + ], + [ + -94.43157, + 44.3100341 + ], + [ + -94.4315857, + 44.3099622 + ], + [ + -94.4316048, + 44.3098908 + ], + [ + -94.4316294, + 44.3098208 + ], + [ + -94.4316594, + 44.3097522 + ], + [ + -94.4317244, + 44.3096163 + ], + [ + -94.4317575, + 44.309548 + ], + [ + -94.4317936, + 44.3094801 + ], + [ + -94.431828, + 44.3094116 + ], + [ + -94.431863, + 44.3093432 + ], + [ + -94.4318987, + 44.309275 + ], + [ + -94.431939, + 44.3092079 + ], + [ + -94.4319821, + 44.3091418 + ], + [ + -94.4320225, + 44.3090752 + ], + [ + -94.4320614, + 44.3090086 + ], + [ + -94.4321034, + 44.3089432 + ], + [ + -94.4321479, + 44.308879 + ], + [ + -94.4321942, + 44.3088158 + ], + [ + -94.4322416, + 44.3087535 + ], + [ + -94.4322886, + 44.3086961 + ], + [ + -94.4323414, + 44.308636 + ], + [ + -94.4324043, + 44.3085752 + ], + [ + -94.4324642, + 44.3085215 + ], + [ + -94.4325348, + 44.3084628 + ], + [ + -94.4326083, + 44.308406 + ], + [ + -94.4326779, + 44.308356 + ], + [ + -94.4327533, + 44.3083056 + ], + [ + -94.4328324, + 44.308255 + ], + [ + -94.4329137, + 44.3082136 + ], + [ + -94.4329953, + 44.3081753 + ], + [ + -94.4330827, + 44.308139 + ], + [ + -94.4331687, + 44.3081067 + ], + [ + -94.4332572, + 44.3080775 + ], + [ + -94.4333496, + 44.3080527 + ], + [ + -94.4334452, + 44.3080317 + ], + [ + -94.4335428, + 44.3080132 + ], + [ + -94.4336411, + 44.3079976 + ], + [ + -94.4337429, + 44.3079838 + ], + [ + -94.4338419, + 44.3079732 + ], + [ + -94.433949, + 44.3079675 + ], + [ + -94.4340511, + 44.3079633 + ], + [ + -94.4341573, + 44.3079603 + ], + [ + -94.4342519, + 44.3079583 + ], + [ + -94.4343515, + 44.3079574 + ], + [ + -94.4344512, + 44.3079575 + ], + [ + -94.4345511, + 44.3079586 + ], + [ + -94.4346511, + 44.3079606 + ], + [ + -94.4347511, + 44.3079634 + ], + [ + -94.4348513, + 44.3079668 + ], + [ + -94.4349515, + 44.3079709 + ], + [ + -94.4350519, + 44.3079755 + ], + [ + -94.4351522, + 44.3079806 + ], + [ + -94.4353574, + 44.3079918 + ], + [ + -94.4355725, + 44.3080045 + ], + [ + -94.435654, + 44.3080096 + ], + [ + -94.4358545, + 44.3080218 + ], + [ + -94.4359546, + 44.3080276 + ], + [ + -94.4362546, + 44.3080441 + ], + [ + -94.4365544, + 44.3080615 + ], + [ + -94.4368542, + 44.3080796 + ], + [ + -94.437154, + 44.3080984 + ], + [ + -94.438053, + 44.308156 + ], + [ + -94.4382817, + 44.3081705 + ], + [ + -94.4384525, + 44.3081796 + ], + [ + -94.4385526, + 44.3081863 + ], + [ + -94.4386529, + 44.3081938 + ], + [ + -94.4387531, + 44.3082005 + ], + [ + -94.4390556, + 44.3082385 + ], + [ + -94.4391561, + 44.308248 + ], + [ + -94.4392564, + 44.3082564 + ], + [ + -94.4393565, + 44.3082636 + ], + [ + -94.4394562, + 44.3082692 + ], + [ + -94.4395555, + 44.3082727 + ], + [ + -94.4396543, + 44.3082738 + ], + [ + -94.4397526, + 44.3082722 + ], + [ + -94.4398502, + 44.3082672 + ], + [ + -94.4399472, + 44.3082551 + ], + [ + -94.4400434, + 44.3082358 + ], + [ + -94.4401385, + 44.3082107 + ], + [ + -94.4402324, + 44.3081813 + ], + [ + -94.4403248, + 44.3081486 + ], + [ + -94.4404156, + 44.3081143 + ], + [ + -94.4405046, + 44.3080796 + ], + [ + -94.4405911, + 44.3080443 + ], + [ + -94.440673, + 44.3080032 + ], + [ + -94.4407509, + 44.3079571 + ], + [ + -94.4408256, + 44.3079079 + ], + [ + -94.4409697, + 44.3078067 + ], + [ + -94.4411149, + 44.307706 + ], + [ + -94.4411849, + 44.307652 + ], + [ + -94.4412492, + 44.3075968 + ], + [ + -94.4413142, + 44.3075418 + ], + [ + -94.4413727, + 44.3074845 + ], + [ + -94.4414176, + 44.3074215 + ], + [ + -94.4414583, + 44.3073561 + ], + [ + -94.4415009, + 44.3072906 + ], + [ + -94.4415414, + 44.307224 + ], + [ + -94.4415745, + 44.3071604 + ], + [ + -94.4416086, + 44.3070861 + ], + [ + -94.4416344, + 44.3070153 + ], + [ + -94.4416561, + 44.3069444 + ], + [ + -94.4416735, + 44.3068738 + ], + [ + -94.4416862, + 44.3068038 + ], + [ + -94.4416912, + 44.3067327 + ], + [ + -94.4416874, + 44.3066603 + ], + [ + -94.4416755, + 44.3065874 + ], + [ + -94.4416564, + 44.3065149 + ], + [ + -94.4416308, + 44.3064437 + ], + [ + -94.4415997, + 44.3063745 + ], + [ + -94.441564, + 44.3063079 + ], + [ + -94.441526, + 44.3062419 + ], + [ + -94.4414859, + 44.3061762 + ], + [ + -94.4414441, + 44.3061108 + ], + [ + -94.4414004, + 44.3060458 + ], + [ + -94.441355, + 44.3059812 + ], + [ + -94.4413081, + 44.3059171 + ], + [ + -94.4412597, + 44.3058534 + ], + [ + -94.4412099, + 44.3057903 + ], + [ + -94.4411588, + 44.3057278 + ], + [ + -94.4411065, + 44.305666 + ], + [ + -94.4410531, + 44.3056048 + ], + [ + -94.4409987, + 44.3055442 + ], + [ + -94.4408886, + 44.3054241 + ], + [ + -94.4407219, + 44.305244 + ], + [ + -94.4406098, + 44.3051242 + ], + [ + -94.4404966, + 44.3050047 + ], + [ + -94.4403823, + 44.3048857 + ], + [ + -94.4403247, + 44.3048264 + ], + [ + -94.4402087, + 44.3047084 + ], + [ + -94.4401501, + 44.3046496 + ], + [ + -94.4400319, + 44.3045328 + ], + [ + -94.4399723, + 44.3044748 + ], + [ + -94.4399122, + 44.304417 + ], + [ + -94.4398518, + 44.3043596 + ], + [ + -94.4397909, + 44.3043023 + ], + [ + -94.4397296, + 44.3042455 + ], + [ + -94.4396678, + 44.3041889 + ], + [ + -94.4396056, + 44.3041327 + ], + [ + -94.4395429, + 44.3040768 + ], + [ + -94.4394797, + 44.3040214 + ], + [ + -94.439416, + 44.3039663 + ], + [ + -94.4393513, + 44.303912 + ], + [ + -94.4392822, + 44.3038607 + ], + [ + -94.439209, + 44.3038122 + ], + [ + -94.4391323, + 44.3037661 + ], + [ + -94.4390531, + 44.3037217 + ], + [ + -94.4389721, + 44.3036785 + ], + [ + -94.438808, + 44.3035934 + ], + [ + -94.4387265, + 44.3035504 + ], + [ + -94.4386464, + 44.3035063 + ], + [ + -94.4385684, + 44.3034606 + ], + [ + -94.4384935, + 44.3034128 + ], + [ + -94.4382708, + 44.3032669 + ], + [ + -94.4381968, + 44.3032178 + ], + [ + -94.4381231, + 44.3031685 + ], + [ + -94.43805, + 44.3031188 + ], + [ + -94.4379775, + 44.3030686 + ], + [ + -94.4379059, + 44.3030179 + ], + [ + -94.4378352, + 44.3029667 + ], + [ + -94.4377658, + 44.3029147 + ], + [ + -94.4376977, + 44.302862 + ], + [ + -94.437631, + 44.3028086 + ], + [ + -94.4375661, + 44.3027542 + ], + [ + -94.4375028, + 44.3026989 + ], + [ + -94.4374321, + 44.3026452 + ], + [ + -94.437376, + 44.302586 + ], + [ + -94.4373182, + 44.3025266 + ], + [ + -94.4372629, + 44.3024657 + ], + [ + -94.4372096, + 44.3024039 + ], + [ + -94.4371584, + 44.3023412 + ], + [ + -94.4371098, + 44.3022777 + ], + [ + -94.4370638, + 44.3022136 + ], + [ + -94.4370196, + 44.3021517 + ], + [ + -94.4369837, + 44.3020819 + ], + [ + -94.4369485, + 44.302015 + ], + [ + -94.4369182, + 44.301947 + ], + [ + -94.4368905, + 44.3018782 + ], + [ + -94.4368648, + 44.3018088 + ], + [ + -94.4368408, + 44.3017387 + ], + [ + -94.436818, + 44.3016684 + ], + [ + -94.4367535, + 44.3014559 + ], + [ + -94.4367311, + 44.3013852 + ], + [ + -94.4367079, + 44.3013148 + ], + [ + -94.4366832, + 44.3012447 + ], + [ + -94.4366568, + 44.3011752 + ], + [ + -94.4366299, + 44.3011058 + ], + [ + -94.4366035, + 44.3010361 + ], + [ + -94.4365777, + 44.3009662 + ], + [ + -94.4365241, + 44.3008222 + ], + [ + -94.4364312, + 44.3005441 + ], + [ + -94.4363802, + 44.3004038 + ], + [ + -94.436354, + 44.3003339 + ], + [ + -94.436327, + 44.3002642 + ], + [ + -94.4362992, + 44.3001947 + ], + [ + -94.4362705, + 44.3001256 + ], + [ + -94.4362406, + 44.3000569 + ], + [ + -94.4362095, + 44.2999885 + ], + [ + -94.4361771, + 44.2999206 + ], + [ + -94.4361432, + 44.2998532 + ], + [ + -94.4361077, + 44.2997863 + ], + [ + -94.4360704, + 44.29972 + ], + [ + -94.4360313, + 44.2996544 + ], + [ + -94.4359901, + 44.2995894 + ], + [ + -94.435947, + 44.299525 + ], + [ + -94.4359027, + 44.299461 + ], + [ + -94.4358574, + 44.2993973 + ], + [ + -94.4358109, + 44.299334 + ], + [ + -94.4357635, + 44.2992709 + ], + [ + -94.4357151, + 44.2992082 + ], + [ + -94.4356659, + 44.2991457 + ], + [ + -94.4356157, + 44.2990835 + ], + [ + -94.4355648, + 44.2990216 + ], + [ + -94.435513, + 44.2989599 + ], + [ + -94.4354606, + 44.2988984 + ], + [ + -94.4354076, + 44.2988371 + ], + [ + -94.4353539, + 44.2987761 + ], + [ + -94.4352996, + 44.2987153 + ], + [ + -94.4352449, + 44.2986546 + ], + [ + -94.435134, + 44.2985337 + ], + [ + -94.4350779, + 44.2984735 + ], + [ + -94.434965, + 44.2983535 + ], + [ + -94.4347941, + 44.2981743 + ], + [ + -94.4345083, + 44.2978769 + ], + [ + -94.4343382, + 44.2976988 + ], + [ + -94.4342796, + 44.2976405 + ], + [ + -94.4342192, + 44.2975832 + ], + [ + -94.4341571, + 44.2975268 + ], + [ + -94.4340936, + 44.297471 + ], + [ + -94.4340291, + 44.2974158 + ], + [ + -94.4339639, + 44.297361 + ], + [ + -94.4337621, + 44.2971996 + ], + [ + -94.4336975, + 44.2971447 + ], + [ + -94.4336386, + 44.2970946 + ], + [ + -94.4335672, + 44.2970358 + ], + [ + -94.4333513, + 44.2968709 + ], + [ + -94.4332395, + 44.2967858 + ], + [ + -94.433173, + 44.2967382 + ], + [ + -94.4331077, + 44.2966832 + ], + [ + -94.4330329, + 44.296642 + ], + [ + -94.4329777, + 44.2966055 + ], + [ + -94.4329224, + 44.2965691 + ], + [ + -94.432867, + 44.2965328 + ], + [ + -94.4327528, + 44.2964627 + ], + [ + -94.4326275, + 44.296388 + ], + [ + -94.4324231, + 44.2962666 + ], + [ + -94.4321551, + 44.2961142 + ], + [ + -94.4320854, + 44.2935981 + ], + [ + -94.4320838, + 44.2934417 + ], + [ + -94.432021, + 44.28981 + ], + [ + -94.4296362, + 44.287411 + ], + [ + -94.4291414, + 44.2875146 + ], + [ + -94.4317964, + 44.2901858 + ], + [ + -94.4308689, + 44.2901742 + ], + [ + -94.4300504, + 44.289751 + ], + [ + -94.4293007, + 44.2894259 + ], + [ + -94.4284526, + 44.289093 + ], + [ + -94.4275988, + 44.2887768 + ], + [ + -94.4268351, + 44.2885241 + ], + [ + -94.4263216, + 44.2883747 + ], + [ + -94.4244014, + 44.288407 + ], + [ + -94.4244325, + 44.2917461 + ], + [ + -94.4244009, + 44.2918005 + ], + [ + -94.4243604, + 44.2918664 + ], + [ + -94.4243302, + 44.2919158 + ], + [ + -94.4242998, + 44.2919653 + ], + [ + -94.4242592, + 44.2920311 + ], + [ + -94.4242189, + 44.2920946 + ], + [ + -94.4241737, + 44.2921607 + ], + [ + -94.4241293, + 44.2922261 + ], + [ + -94.4240846, + 44.2922922 + ], + [ + -94.4240565, + 44.2923679 + ], + [ + -94.4240163, + 44.2924367 + ], + [ + -94.4239685, + 44.2924995 + ], + [ + -94.4239089, + 44.292553 + ], + [ + -94.4238354, + 44.2925959 + ], + [ + -94.4237534, + 44.2926336 + ], + [ + -94.4236648, + 44.2926675 + ], + [ + -94.4235759, + 44.2927013 + ], + [ + -94.423476, + 44.2927264 + ], + [ + -94.4233745, + 44.2927489 + ], + [ + -94.4232777, + 44.2927685 + ], + [ + -94.4231792, + 44.2927863 + ], + [ + -94.4230825, + 44.292802 + ], + [ + -94.4229831, + 44.2928104 + ], + [ + -94.4228757, + 44.292809 + ], + [ + -94.4227755, + 44.2927996 + ], + [ + -94.4226819, + 44.2927792 + ], + [ + -94.4225916, + 44.2927503 + ], + [ + -94.4225036, + 44.2927134 + ], + [ + -94.4224406, + 44.2926816 + ], + [ + -94.4223821, + 44.2926465 + ], + [ + -94.4223145, + 44.2925926 + ], + [ + -94.4222475, + 44.2925387 + ], + [ + -94.4221798, + 44.2924839 + ], + [ + -94.4221245, + 44.2924434 + ], + [ + -94.422078, + 44.2923999 + ], + [ + -94.4220193, + 44.2923432 + ], + [ + -94.4219616, + 44.2922804 + ], + [ + -94.4219099, + 44.2922185 + ], + [ + -94.4218654, + 44.2921548 + ], + [ + -94.4218285, + 44.2920895 + ], + [ + -94.4217991, + 44.2920223 + ], + [ + -94.4217724, + 44.2919545 + ], + [ + -94.4217507, + 44.2918891 + ], + [ + -94.4217319, + 44.2918157 + ], + [ + -94.421716, + 44.291745 + ], + [ + -94.4217018, + 44.2916736 + ], + [ + -94.421689, + 44.2916019 + ], + [ + -94.4216773, + 44.2915298 + ], + [ + -94.4216663, + 44.2914574 + ], + [ + -94.4216556, + 44.2913849 + ], + [ + -94.4216448, + 44.2913124 + ], + [ + -94.4216338, + 44.2912399 + ], + [ + -94.4216219, + 44.2911675 + ], + [ + -94.421609, + 44.2910954 + ], + [ + -94.4215946, + 44.2910237 + ], + [ + -94.4215783, + 44.290951 + ], + [ + -94.4215575, + 44.2908827 + ], + [ + -94.4215333, + 44.2908124 + ], + [ + -94.4215089, + 44.2907419 + ], + [ + -94.4214808, + 44.2906718 + ], + [ + -94.4214468, + 44.290603 + ], + [ + -94.4214117, + 44.2905343 + ], + [ + -94.4214, + 44.2904583 + ], + [ + -94.4213595, + 44.2903924 + ], + [ + -94.4213121, + 44.2903298 + ], + [ + -94.4212372, + 44.2902778 + ], + [ + -94.4211869, + 44.2902184 + ], + [ + -94.4211311, + 44.2901609 + ], + [ + -94.4210703, + 44.2901038 + ], + [ + -94.4210096, + 44.2900525 + ], + [ + -94.420941, + 44.2899966 + ], + [ + -94.4208744, + 44.2899431 + ], + [ + -94.4208069, + 44.28989 + ], + [ + -94.4207388, + 44.2898371 + ], + [ + -94.4206699, + 44.2897846 + ], + [ + -94.4206004, + 44.2897323 + ], + [ + -94.4205302, + 44.2896803 + ], + [ + -94.4204596, + 44.2896286 + ], + [ + -94.4203885, + 44.2895771 + ], + [ + -94.4203169, + 44.2895258 + ], + [ + -94.420245, + 44.2894748 + ], + [ + -94.4201728, + 44.2894239 + ], + [ + -94.4201004, + 44.2893733 + ], + [ + -94.4200278, + 44.2893229 + ], + [ + -94.4199526, + 44.289271 + ], + [ + -94.4198815, + 44.2892234 + ], + [ + -94.4198075, + 44.2891745 + ], + [ + -94.4197341, + 44.2891252 + ], + [ + -94.41966, + 44.2890767 + ], + [ + -94.4195868, + 44.2890278 + ], + [ + -94.4195127, + 44.2889791 + ], + [ + -94.4194372, + 44.288931 + ], + [ + -94.4193598, + 44.288884 + ], + [ + -94.4193033, + 44.2888471 + ], + [ + -94.4192439, + 44.2888129 + ], + [ + -94.4191636, + 44.2887684 + ], + [ + -94.4190801, + 44.2887272 + ], + [ + -94.4189973, + 44.288686 + ], + [ + -94.4189136, + 44.2886466 + ], + [ + -94.418829, + 44.2886093 + ], + [ + -94.4187435, + 44.2885743 + ], + [ + -94.4186593, + 44.2885445 + ], + [ + -94.418562, + 44.2885203 + ], + [ + -94.418464, + 44.2885024 + ], + [ + -94.4183587, + 44.2884882 + ], + [ + -94.4182608, + 44.2884814 + ], + [ + -94.4181596, + 44.2884779 + ], + [ + -94.4180638, + 44.2884763 + ], + [ + -94.4179606, + 44.2884786 + ], + [ + -94.4178608, + 44.2884836 + ], + [ + -94.4177607, + 44.2884907 + ], + [ + -94.4176856, + 44.2884967 + ], + [ + -94.4176104, + 44.2885026 + ], + [ + -94.4175225, + 44.2885089 + ], + [ + -94.4174101, + 44.2885143 + ], + [ + -94.4173094, + 44.2885185 + ], + [ + -94.4172333, + 44.2885224 + ], + [ + -94.4171577, + 44.2885226 + ], + [ + -94.4170594, + 44.2885142 + ], + [ + -94.4169631, + 44.2884984 + ], + [ + -94.4168734, + 44.2884805 + ], + [ + -94.4167721, + 44.2884548 + ], + [ + -94.416678, + 44.2884285 + ], + [ + -94.4165789, + 44.2884059 + ], + [ + -94.416491, + 44.2883732 + ], + [ + -94.4164007, + 44.2883423 + ], + [ + -94.4163097, + 44.2883112 + ], + [ + -94.4162184, + 44.2882799 + ], + [ + -94.4161501, + 44.2882561 + ], + [ + -94.4160821, + 44.2882318 + ], + [ + -94.4159912, + 44.2881977 + ], + [ + -94.4159044, + 44.2881632 + ], + [ + -94.4158225, + 44.2881278 + ], + [ + -94.4157353, + 44.2880868 + ], + [ + -94.4156547, + 44.2880444 + ], + [ + -94.4155791, + 44.2879981 + ], + [ + -94.4155037, + 44.2879511 + ], + [ + -94.41543, + 44.2879045 + ], + [ + -94.4153537, + 44.2878554 + ], + [ + -94.4152791, + 44.2878067 + ], + [ + -94.4152049, + 44.2877576 + ], + [ + -94.4151312, + 44.287708 + ], + [ + -94.4150579, + 44.2876578 + ], + [ + -94.4149852, + 44.2876073 + ], + [ + -94.4149131, + 44.2875563 + ], + [ + -94.4148417, + 44.2875048 + ], + [ + -94.414771, + 44.287453 + ], + [ + -94.414701, + 44.2874007 + ], + [ + -94.4146319, + 44.2873481 + ], + [ + -94.4145637, + 44.2872951 + ], + [ + -94.4144967, + 44.287242 + ], + [ + -94.4144302, + 44.2871881 + ], + [ + -94.4143644, + 44.2871337 + ], + [ + -94.4143079, + 44.2870811 + ], + [ + -94.4142527, + 44.2870198 + ], + [ + -94.4141843, + 44.2869648 + ], + [ + -94.414135, + 44.2869019 + ], + [ + -94.4140931, + 44.2868351 + ], + [ + -94.4140661, + 44.2867833 + ], + [ + -94.4140431, + 44.2867302 + ], + [ + -94.4140174, + 44.2866588 + ], + [ + -94.4140162, + 44.2865823 + ], + [ + -94.413992, + 44.2865143 + ], + [ + -94.4139754, + 44.2864449 + ], + [ + -94.4139694, + 44.2863756 + ], + [ + -94.4139758, + 44.2863004 + ], + [ + -94.4139889, + 44.2862279 + ], + [ + -94.414006, + 44.2861559 + ], + [ + -94.4140228, + 44.2860845 + ], + [ + -94.4140565, + 44.2860179 + ], + [ + -94.4140922, + 44.2859525 + ], + [ + -94.4141347, + 44.2858858 + ], + [ + -94.4141847, + 44.285828 + ], + [ + -94.4142423, + 44.2857678 + ], + [ + -94.414303, + 44.2857097 + ], + [ + -94.4143524, + 44.2856439 + ], + [ + -94.4144076, + 44.2855835 + ], + [ + -94.4144798, + 44.2856018 + ], + [ + -94.4220047, + 44.2875083 + ], + [ + -94.4219809, + 44.2840859 + ], + [ + -94.4249158, + 44.2842305 + ], + [ + -94.426389, + 44.2855966 + ], + [ + -94.4267877, + 44.2854384 + ], + [ + -94.4280963, + 44.286598 + ], + [ + -94.4288321, + 44.2866021 + ], + [ + -94.4269094, + 44.2846678 + ], + [ + -94.4269033, + 44.2830124 + ], + [ + -94.4319159, + 44.2830469 + ], + [ + -94.4363473, + 44.2830312 + ], + [ + -94.4359739, + 44.2810499 + ], + [ + -94.436149, + 44.2808958 + ], + [ + -94.4362248, + 44.2807309 + ], + [ + -94.4362165, + 44.2805551 + ], + [ + -94.436147, + 44.2803192 + ], + [ + -94.4358915, + 44.2793095 + ], + [ + -94.4357072, + 44.278986 + ], + [ + -94.4353622, + 44.2785531 + ], + [ + -94.4348033, + 44.2780438 + ], + [ + -94.434053, + 44.2774087 + ], + [ + -94.433532, + 44.2768388 + ], + [ + -94.4330647, + 44.2763458 + ], + [ + -94.4328422, + 44.2760114 + ], + [ + -94.4328415, + 44.2758027 + ], + [ + -94.4419549, + 44.27583 + ], + [ + -94.4421716, + 44.2830334 + ], + [ + -94.4501352, + 44.2830045 + ], + [ + -94.4501352, + 44.2827343 + ], + [ + -94.4485409, + 44.2827391 + ], + [ + -94.4488339, + 44.2821581 + ], + [ + -94.4527525, + 44.2821381 + ], + [ + -94.4519169, + 44.2830047 + ], + [ + -94.4519518, + 44.2863678 + ], + [ + -94.4523487, + 44.2863243 + ], + [ + -94.4531129, + 44.2861031 + ], + [ + -94.4539511, + 44.2856495 + ], + [ + -94.4540798, + 44.2855385 + ], + [ + -94.4542595, + 44.2853172 + ], + [ + -94.4544887, + 44.2845789 + ], + [ + -94.4549709, + 44.2841377 + ], + [ + -94.4553046, + 44.2839794 + ], + [ + -94.455773, + 44.2838575 + ], + [ + -94.456414, + 44.2837585 + ], + [ + -94.4568804, + 44.2837601 + ], + [ + -94.4575961, + 44.2841726 + ], + [ + -94.4579861, + 44.2845306 + ], + [ + -94.4584441, + 44.2846493 + ], + [ + -94.4588846, + 44.284616 + ], + [ + -94.4593252, + 44.2845057 + ], + [ + -94.4603452, + 44.2837818 + ], + [ + -94.4605643, + 44.2836995 + ], + [ + -94.4614415, + 44.2836628 + ], + [ + -94.4618204, + 44.28359 + ], + [ + -94.4628228, + 44.2834995 + ], + [ + -94.4644374, + 44.2838716 + ], + [ + -94.4645799, + 44.2847494 + ], + [ + -94.4650368, + 44.287559 + ], + [ + -94.465292, + 44.2884902 + ], + [ + -94.4718003, + 44.2884433 + ], + [ + -94.4718431, + 44.2901622 + ], + [ + -94.4819865, + 44.2901813 + ], + [ + -94.4820194, + 44.2974494 + ], + [ + -94.4861656, + 44.2974613 + ], + [ + -94.486224, + 44.3008983 + ], + [ + -94.4875586, + 44.3008736 + ], + [ + -94.4875788, + 44.3020671 + ], + [ + -94.4862442, + 44.3020918 + ], + [ + -94.48627, + 44.3033392 + ], + [ + -94.4868573, + 44.3033283 + ], + [ + -94.4869219, + 44.3071318 + ], + [ + -94.4884304, + 44.3071362 + ], + [ + -94.4883442, + 44.3117898 + ], + [ + -94.4921238, + 44.311786 + ], + [ + -94.4920516, + 44.3190171 + ], + [ + -94.4932129, + 44.3190259 + ], + [ + -94.4932163, + 44.3194343 + ], + [ + -94.4938822, + 44.319606 + ], + [ + -94.4940456, + 44.3196557 + ], + [ + -94.4943085, + 44.3197656 + ], + [ + -94.4945512, + 44.3199056 + ], + [ + -94.4947131, + 44.3200326 + ], + [ + -94.4948447, + 44.320162 + ], + [ + -94.4956637, + 44.3210721 + ], + [ + -94.4959995, + 44.3209092 + ], + [ + -94.4960648, + 44.3208746 + ], + [ + -94.496153, + 44.3208144 + ], + [ + -94.4962244, + 44.3207486 + ], + [ + -94.4970882, + 44.3203194 + ], + [ + -94.497197, + 44.3171671 + ], + [ + -94.4983613, + 44.3171777 + ], + [ + -94.4922769, + 44.3096376 + ], + [ + -94.4923172, + 44.3096212 + ], + [ + -94.4904022, + 44.3078516 + ], + [ + -94.4889322, + 44.3065331 + ], + [ + -94.4889734, + 44.3065311 + ], + [ + -94.4882087, + 44.3058244 + ], + [ + -94.4920057, + 44.3042933 + ], + [ + -94.4920198, + 44.3052172 + ], + [ + -94.4937131, + 44.304774 + ], + [ + -94.4942619, + 44.3038899 + ], + [ + -94.4960716, + 44.3073128 + ], + [ + -94.4960363, + 44.3073129 + ], + [ + -94.4962085, + 44.3076417 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149546_s_4149547", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4861953, + 44.3261276 + ], + [ + -94.4859927, + 44.3263078 + ], + [ + -94.4854265, + 44.326647 + ], + [ + -94.484779, + 44.3269003 + ], + [ + -94.4840751, + 44.3270581 + ], + [ + -94.4833418, + 44.3271143 + ], + [ + -94.4826073, + 44.3270668 + ], + [ + -94.4818999, + 44.3269172 + ], + [ + -94.4812467, + 44.3266715 + ], + [ + -94.4806728, + 44.326339 + ], + [ + -94.4802003, + 44.3259326 + ], + [ + -94.4801463, + 44.3258756 + ], + [ + -94.4797931, + 44.3254102 + ], + [ + -94.4795733, + 44.3249043 + ], + [ + -94.4795604, + 44.3248169 + ], + [ + -94.4795543, + 44.3248106 + ], + [ + -94.4795212, + 44.3247784 + ], + [ + -94.4795167, + 44.3247741 + ], + [ + -94.4790257, + 44.3242948 + ], + [ + -94.4786177, + 44.3239025 + ], + [ + -94.4785278, + 44.3238122 + ], + [ + -94.4776068, + 44.3228462 + ], + [ + -94.4775532, + 44.3227884 + ], + [ + -94.4773602, + 44.3225744 + ], + [ + -94.4772747, + 44.3224831 + ], + [ + -94.4772221, + 44.3224254 + ], + [ + -94.4771521, + 44.3223464 + ], + [ + -94.4771257, + 44.3223162 + ], + [ + -94.4770147, + 44.3221872 + ], + [ + -94.4770018, + 44.322172 + ], + [ + -94.476643, + 44.3217488 + ], + [ + -94.4764254, + 44.3215037 + ], + [ + -94.476083, + 44.3211363 + ], + [ + -94.4758945, + 44.3209414 + ], + [ + -94.4758292, + 44.3208743 + ], + [ + -94.4758245, + 44.3208694 + ], + [ + -94.4756515, + 44.3206904 + ], + [ + -94.4756346, + 44.3206727 + ], + [ + -94.4749486, + 44.3199507 + ], + [ + -94.4749457, + 44.3199477 + ], + [ + -94.4748737, + 44.3198717 + ], + [ + -94.4739493, + 44.3188943 + ], + [ + -94.4730903, + 44.3179935 + ], + [ + -94.4730633, + 44.3179648 + ], + [ + -94.4729993, + 44.3178958 + ], + [ + -94.4726539, + 44.3174305 + ], + [ + -94.472441, + 44.3169259 + ], + [ + -94.4723687, + 44.3164013 + ], + [ + -94.4724398, + 44.3158766 + ], + [ + -94.4726515, + 44.3153717 + ], + [ + -94.4729958, + 44.3149061 + ], + [ + -94.4734596, + 44.3144973 + ], + [ + -94.4740251, + 44.314161 + ], + [ + -94.4741154, + 44.3141173 + ], + [ + -94.4753437, + 44.3135145 + ], + [ + -94.4760418, + 44.3132446 + ], + [ + -94.4768032, + 44.3130858 + ], + [ + -94.477594, + 44.3130451 + ], + [ + -94.4783791, + 44.3131243 + ], + [ + -94.4791237, + 44.31332 + ], + [ + -94.4797946, + 44.3136233 + ], + [ + -94.4798476, + 44.3136533 + ], + [ + -94.480379, + 44.3140202 + ], + [ + -94.4808006, + 44.3144545 + ], + [ + -94.4810961, + 44.3149395 + ], + [ + -94.4812541, + 44.3154566 + ], + [ + -94.4812686, + 44.3159859 + ], + [ + -94.481139, + 44.316507 + ], + [ + -94.4810094, + 44.3167448 + ], + [ + -94.4810948, + 44.316835 + ], + [ + -94.4811647, + 44.3169087 + ], + [ + -94.4818408, + 44.3176203 + ], + [ + -94.482003, + 44.3177881 + ], + [ + -94.4820676, + 44.3178546 + ], + [ + -94.4820712, + 44.3178583 + ], + [ + -94.4822802, + 44.3180743 + ], + [ + -94.4823171, + 44.3181132 + ], + [ + -94.4827011, + 44.3185252 + ], + [ + -94.482747, + 44.3185756 + ], + [ + -94.483008, + 44.3188696 + ], + [ + -94.483049, + 44.3189169 + ], + [ + -94.4834216, + 44.3193563 + ], + [ + -94.4835131, + 44.3194626 + ], + [ + -94.4835439, + 44.3194974 + ], + [ + -94.4836211, + 44.3195798 + ], + [ + -94.4836576, + 44.3196195 + ], + [ + -94.4838423, + 44.3198244 + ], + [ + -94.4846924, + 44.3207159 + ], + [ + -94.4850621, + 44.3210714 + ], + [ + -94.4850781, + 44.3210869 + ], + [ + -94.4855749, + 44.3215717 + ], + [ + -94.4856436, + 44.3216385 + ], + [ + -94.4857177, + 44.321713 + ], + [ + -94.4857829, + 44.3217811 + ], + [ + -94.4861452, + 44.3221573 + ], + [ + -94.4861479, + 44.3221601 + ], + [ + -94.4865804, + 44.3226104 + ], + [ + -94.4866388, + 44.3226706 + ], + [ + -94.4869997, + 44.3231346 + ], + [ + -94.4872272, + 44.3236402 + ], + [ + -94.4873122, + 44.3241681 + ], + [ + -94.4872517, + 44.3246977 + ], + [ + -94.4870478, + 44.3252085 + ], + [ + -94.4867086, + 44.3256808 + ], + [ + -94.486247, + 44.3260963 + ], + [ + -94.4861953, + 44.3261276 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149547_s_4149548", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4801071, + 44.3177189 + ], + [ + -94.4799617, + 44.3178275 + ], + [ + -94.4793568, + 44.3181301 + ], + [ + -94.4786812, + 44.3183423 + ], + [ + -94.477961, + 44.3184557 + ], + [ + -94.4772238, + 44.3184661 + ], + [ + -94.4764979, + 44.318373 + ], + [ + -94.4758113, + 44.3181801 + ], + [ + -94.4751903, + 44.3178946 + ], + [ + -94.4751373, + 44.3178646 + ], + [ + -94.4746277, + 44.3175159 + ], + [ + -94.4742175, + 44.3171052 + ], + [ + -94.4739211, + 44.3166467 + ], + [ + -94.4737489, + 44.3161566 + ], + [ + -94.4737071, + 44.3156534 + ], + [ + -94.4735181, + 44.3154537 + ], + [ + -94.4733282, + 44.3152529 + ], + [ + -94.4730946, + 44.3150575 + ], + [ + -94.4727328, + 44.3145962 + ], + [ + -94.4725033, + 44.3140931 + ], + [ + -94.4724148, + 44.3135676 + ], + [ + -94.4724709, + 44.3130397 + ], + [ + -94.4726693, + 44.3125299 + ], + [ + -94.4730025, + 44.3120576 + ], + [ + -94.4734575, + 44.3116411 + ], + [ + -94.474017, + 44.3112963 + ], + [ + -94.4746594, + 44.3110365 + ], + [ + -94.47536, + 44.3108717 + ], + [ + -94.4760919, + 44.3108082 + ], + [ + -94.4768271, + 44.3108485 + ], + [ + -94.4775372, + 44.3109909 + ], + [ + -94.4781949, + 44.3112301 + ], + [ + -94.4782299, + 44.3112461 + ], + [ + -94.4785749, + 44.3114242 + ], + [ + -94.4786059, + 44.3114422 + ], + [ + -94.4789861, + 44.3116961 + ], + [ + -94.4790161, + 44.3117191 + ], + [ + -94.4791441, + 44.3118224 + ], + [ + -94.4791641, + 44.3118394 + ], + [ + -94.4792597, + 44.311924 + ], + [ + -94.4792857, + 44.311948 + ], + [ + -94.4794288, + 44.3120893 + ], + [ + -94.4797403, + 44.3124187 + ], + [ + -94.4800532, + 44.3127494 + ], + [ + -94.4801127, + 44.3128116 + ], + [ + -94.4801261, + 44.3128258 + ], + [ + -94.4805318, + 44.3132563 + ], + [ + -94.4808144, + 44.3135548 + ], + [ + -94.4808189, + 44.3135595 + ], + [ + -94.4811139, + 44.3138725 + ], + [ + -94.4811172, + 44.313876 + ], + [ + -94.4811792, + 44.313942 + ], + [ + -94.4815284, + 44.3144058 + ], + [ + -94.4817455, + 44.3149095 + ], + [ + -94.4818221, + 44.315434 + ], + [ + -94.4817553, + 44.3159591 + ], + [ + -94.4815477, + 44.3164648 + ], + [ + -94.4812071, + 44.316932 + ], + [ + -94.4807465, + 44.3173427 + ], + [ + -94.4801835, + 44.3176814 + ], + [ + -94.4801071, + 44.3177189 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149548_s_4149549", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4775251, + 44.3109801 + ], + [ + -94.4775921, + 44.3110012 + ], + [ + -94.4776751, + 44.3110282 + ], + [ + -94.4777471, + 44.3110523 + ], + [ + -94.4777791, + 44.3110633 + ], + [ + -94.4781523, + 44.3112108 + ], + [ + -94.4781723, + 44.3112198 + ], + [ + -94.4787556, + 44.3115435 + ], + [ + -94.4792398, + 44.3119428 + ], + [ + -94.4796062, + 44.3124021 + ], + [ + -94.4798408, + 44.312904 + ], + [ + -94.4799345, + 44.3134291 + ], + [ + -94.4798837, + 44.3139572 + ], + [ + -94.4796904, + 44.3144681 + ], + [ + -94.479362, + 44.3149421 + ], + [ + -94.4789111, + 44.3153609 + ], + [ + -94.478355, + 44.3157086 + ], + [ + -94.4777152, + 44.3159716 + ], + [ + -94.4770162, + 44.31614 + ], + [ + -94.4762848, + 44.3162073 + ], + [ + -94.4755492, + 44.3161708 + ], + [ + -94.4748377, + 44.316032 + ], + [ + -94.4748072, + 44.3160211 + ], + [ + -94.4747372, + 44.3160556 + ], + [ + -94.4747326, + 44.3160578 + ], + [ + -94.474059, + 44.3163887 + ], + [ + -94.4733814, + 44.3167235 + ], + [ + -94.473355, + 44.3167364 + ], + [ + -94.4726956, + 44.3170564 + ], + [ + -94.4720249, + 44.3173893 + ], + [ + -94.4720206, + 44.3173914 + ], + [ + -94.4713396, + 44.3177285 + ], + [ + -94.4713224, + 44.3177369 + ], + [ + -94.4706394, + 44.3180709 + ], + [ + -94.4706312, + 44.3180749 + ], + [ + -94.4700492, + 44.3183579 + ], + [ + -94.4700421, + 44.3183613 + ], + [ + -94.4699573, + 44.3184024 + ], + [ + -94.4698715, + 44.3184444 + ], + [ + -94.4698605, + 44.3184497 + ], + [ + -94.4692675, + 44.3187377 + ], + [ + -94.4686819, + 44.319022 + ], + [ + -94.4686739, + 44.3190259 + ], + [ + -94.4685913, + 44.3190658 + ], + [ + -94.4685042, + 44.3191081 + ], + [ + -94.4684206, + 44.3191495 + ], + [ + -94.4677754, + 44.3194057 + ], + [ + -94.467073, + 44.3195667 + ], + [ + -94.4663402, + 44.3196262 + ], + [ + -94.4656054, + 44.3195819 + ], + [ + -94.4648968, + 44.3194355 + ], + [ + -94.4642416, + 44.3191927 + ], + [ + -94.4636649, + 44.3188628 + ], + [ + -94.463189, + 44.3184585 + ], + [ + -94.4628321, + 44.3179952 + ], + [ + -94.4626079, + 44.3174909 + ], + [ + -94.4625251, + 44.3169649 + ], + [ + -94.4625868, + 44.3164374 + ], + [ + -94.4627907, + 44.3159286 + ], + [ + -94.4631289, + 44.3154582 + ], + [ + -94.4635884, + 44.3150442 + ], + [ + -94.4641515, + 44.3147025 + ], + [ + -94.4642485, + 44.3146545 + ], + [ + -94.4642755, + 44.3146413 + ], + [ + -94.4643805, + 44.3145903 + ], + [ + -94.4643893, + 44.314586 + ], + [ + -94.4644723, + 44.314546 + ], + [ + -94.4650529, + 44.3142641 + ], + [ + -94.4656402, + 44.3139789 + ], + [ + -94.4657287, + 44.3139356 + ], + [ + -94.465745, + 44.3139276 + ], + [ + -94.4658345, + 44.3138843 + ], + [ + -94.4664088, + 44.3136051 + ], + [ + -94.4670791, + 44.3132773 + ], + [ + -94.4677494, + 44.3129456 + ], + [ + -94.4684342, + 44.3126057 + ], + [ + -94.4684671, + 44.3125895 + ], + [ + -94.4691299, + 44.312268 + ], + [ + -94.4697988, + 44.3119375 + ], + [ + -94.4698076, + 44.3119331 + ], + [ + -94.4704833, + 44.3116012 + ], + [ + -94.471003, + 44.3113452 + ], + [ + -94.4710219, + 44.3113346 + ], + [ + -94.4710692, + 44.3113079 + ], + [ + -94.471289, + 44.3111646 + ], + [ + -94.4714054, + 44.3110918 + ], + [ + -94.4715254, + 44.3110198 + ], + [ + -94.4715868, + 44.3109837 + ], + [ + -94.4716738, + 44.3109337 + ], + [ + -94.4717472, + 44.3108926 + ], + [ + -94.4718882, + 44.3108156 + ], + [ + -94.4719656, + 44.3107745 + ], + [ + -94.4721356, + 44.3106865 + ], + [ + -94.4721791, + 44.3106643 + ], + [ + -94.4723941, + 44.3105563 + ], + [ + -94.4730503, + 44.3102925 + ], + [ + -94.4737664, + 44.3101278 + ], + [ + -94.4745139, + 44.3100687 + ], + [ + -94.4752628, + 44.3101175 + ], + [ + -94.4759832, + 44.3102723 + ], + [ + -94.4766463, + 44.3105269 + ], + [ + -94.477162, + 44.3108334 + ], + [ + -94.477308, + 44.3108825 + ], + [ + -94.477343, + 44.3108955 + ], + [ + -94.4775251, + 44.3109801 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149549_s_4149550", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4679152, + 44.3193955 + ], + [ + -94.4673942, + 44.319649 + ], + [ + -94.4673616, + 44.3196648 + ], + [ + -94.4672571, + 44.3197161 + ], + [ + -94.4666088, + 44.3199712 + ], + [ + -94.4659035, + 44.3201303 + ], + [ + -94.4651684, + 44.3201873 + ], + [ + -94.4644321, + 44.32014 + ], + [ + -94.4637228, + 44.3199902 + ], + [ + -94.4630681, + 44.3197437 + ], + [ + -94.4624932, + 44.31941 + ], + [ + -94.4620203, + 44.319002 + ], + [ + -94.4614653, + 44.318414 + ], + [ + -94.4611028, + 44.3180308 + ], + [ + -94.4610448, + 44.3179699 + ], + [ + -94.4609272, + 44.3179257 + ], + [ + -94.4603534, + 44.3175932 + ], + [ + -94.459881, + 44.3171868 + ], + [ + -94.459528, + 44.316722 + ], + [ + -94.4593082, + 44.3162167 + ], + [ + -94.4592299, + 44.3156903 + ], + [ + -94.4592961, + 44.315163 + ], + [ + -94.4595043, + 44.3146552 + ], + [ + -94.4598466, + 44.3141863 + ], + [ + -94.4603096, + 44.3137743 + ], + [ + -94.4608757, + 44.3134351 + ], + [ + -94.4609094, + 44.3134186 + ], + [ + -94.4609933, + 44.3133772 + ], + [ + -94.4610964, + 44.3133279 + ], + [ + -94.4612484, + 44.3132579 + ], + [ + -94.4618928, + 44.3130207 + ], + [ + -94.4625886, + 44.3128764 + ], + [ + -94.46331, + 44.3128306 + ], + [ + -94.4640302, + 44.312885 + ], + [ + -94.4647226, + 44.3130374 + ], + [ + -94.4653615, + 44.3132823 + ], + [ + -94.4659232, + 44.3136105 + ], + [ + -94.4663868, + 44.31401 + ], + [ + -94.4664608, + 44.3140879 + ], + [ + -94.4666139, + 44.3142489 + ], + [ + -94.4669958, + 44.3142741 + ], + [ + -94.4677028, + 44.3144244 + ], + [ + -94.4683553, + 44.314671 + ], + [ + -94.4689282, + 44.3150041 + ], + [ + -94.4693997, + 44.3154111 + ], + [ + -94.4697515, + 44.3158764 + ], + [ + -94.4699702, + 44.3163819 + ], + [ + -94.4700472, + 44.3169084 + ], + [ + -94.4699797, + 44.3174356 + ], + [ + -94.4697703, + 44.3179432 + ], + [ + -94.469427, + 44.3184116 + ], + [ + -94.4689629, + 44.318823 + ], + [ + -94.468396, + 44.3191615 + ], + [ + -94.4679152, + 44.3193955 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149550_s_4149551", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4648831, + 44.318009 + ], + [ + -94.464585, + 44.3181546 + ], + [ + -94.4645807, + 44.3181567 + ], + [ + -94.4639997, + 44.3184397 + ], + [ + -94.4638857, + 44.3184952 + ], + [ + -94.4632376, + 44.3187479 + ], + [ + -94.4625333, + 44.318905 + ], + [ + -94.4617998, + 44.3189604 + ], + [ + -94.4610654, + 44.318912 + ], + [ + -94.4603583, + 44.3187616 + ], + [ + -94.4597056, + 44.318515 + ], + [ + -94.4591325, + 44.3181818 + ], + [ + -94.458661, + 44.3177746 + ], + [ + -94.4586, + 44.3177099 + ], + [ + -94.458457, + 44.3175602 + ], + [ + -94.4584522, + 44.3175552 + ], + [ + -94.4578192, + 44.3168892 + ], + [ + -94.4577402, + 44.3168062 + ], + [ + -94.4577239, + 44.316789 + ], + [ + -94.4576555, + 44.316716 + ], + [ + -94.4569193, + 44.315939 + ], + [ + -94.4565663, + 44.3154743 + ], + [ + -94.4563464, + 44.314969 + ], + [ + -94.456268, + 44.3144426 + ], + [ + -94.4563341, + 44.3139153 + ], + [ + -94.4565423, + 44.3134075 + ], + [ + -94.4568844, + 44.3129385 + ], + [ + -94.4573473, + 44.3125265 + ], + [ + -94.4579133, + 44.3121873 + ], + [ + -94.4585606, + 44.3119339 + ], + [ + -94.4592644, + 44.3117759 + ], + [ + -94.4599975, + 44.3117196 + ], + [ + -94.4607318, + 44.3117671 + ], + [ + -94.4614391, + 44.3119165 + ], + [ + -94.4620922, + 44.3121621 + ], + [ + -94.4626661, + 44.3124945 + ], + [ + -94.4631386, + 44.3129009 + ], + [ + -94.4632173, + 44.3129839 + ], + [ + -94.4637101, + 44.3130174 + ], + [ + -94.4644165, + 44.313169 + ], + [ + -94.4650681, + 44.3134167 + ], + [ + -94.4656399, + 44.3137509 + ], + [ + -94.4661099, + 44.3141588 + ], + [ + -94.4664601, + 44.3146246 + ], + [ + -94.466677, + 44.3151306 + ], + [ + -94.4667522, + 44.3156572 + ], + [ + -94.4666829, + 44.3161842 + ], + [ + -94.4664717, + 44.3166914 + ], + [ + -94.4661267, + 44.3171593 + ], + [ + -94.4656612, + 44.3175699 + ], + [ + -94.4650931, + 44.3179073 + ], + [ + -94.4648831, + 44.318009 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149551_s_4149552", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4568912, + 44.315909 + ], + [ + -94.4568307, + 44.3158462 + ], + [ + -94.4568079, + 44.3158222 + ], + [ + -94.4567311, + 44.3157406 + ], + [ + -94.4563433, + 44.3153301 + ], + [ + -94.4559709, + 44.3149391 + ], + [ + -94.4559036, + 44.3148689 + ], + [ + -94.4558963, + 44.3148613 + ], + [ + -94.4557963, + 44.3147563 + ], + [ + -94.4557881, + 44.3147476 + ], + [ + -94.4557221, + 44.3146777 + ], + [ + -94.4553395, + 44.3142743 + ], + [ + -94.4549533, + 44.3138682 + ], + [ + -94.4548748, + 44.3137856 + ], + [ + -94.4548671, + 44.3137776 + ], + [ + -94.4548659, + 44.3137763 + ], + [ + -94.4548567, + 44.3137678 + ], + [ + -94.4547303, + 44.3136435 + ], + [ + -94.4546633, + 44.3135735 + ], + [ + -94.4543073, + 44.3131099 + ], + [ + -94.4540841, + 44.3126053 + ], + [ + -94.4540023, + 44.3120792 + ], + [ + -94.454065, + 44.3115518 + ], + [ + -94.4542698, + 44.3110432 + ], + [ + -94.4546089, + 44.3105731 + ], + [ + -94.4550691, + 44.3101596 + ], + [ + -94.4556329, + 44.3098184 + ], + [ + -94.4562785, + 44.3095628 + ], + [ + -94.4569812, + 44.3094025 + ], + [ + -94.4577139, + 44.3093438 + ], + [ + -94.4584485, + 44.3093888 + ], + [ + -94.4591567, + 44.3095358 + ], + [ + -94.4598114, + 44.3097792 + ], + [ + -94.4603874, + 44.3101097 + ], + [ + -94.4608625, + 44.3105145 + ], + [ + -94.4608688, + 44.310521 + ], + [ + -94.4608851, + 44.3105361 + ], + [ + -94.4610247, + 44.3106743 + ], + [ + -94.4610889, + 44.3107423 + ], + [ + -94.4611641, + 44.3108213 + ], + [ + -94.461553, + 44.3112302 + ], + [ + -94.4615556, + 44.311233 + ], + [ + -94.4619417, + 44.31164 + ], + [ + -94.4619458, + 44.3116444 + ], + [ + -94.4620097, + 44.311712 + ], + [ + -94.4621019, + 44.3118088 + ], + [ + -94.4621692, + 44.311879 + ], + [ + -94.4621766, + 44.3118867 + ], + [ + -94.4625566, + 44.3122857 + ], + [ + -94.4625644, + 44.3122939 + ], + [ + -94.4629584, + 44.3127109 + ], + [ + -94.462963, + 44.3127157 + ], + [ + -94.4630306, + 44.3127877 + ], + [ + -94.4630961, + 44.3128557 + ], + [ + -94.4631288, + 44.3128902 + ], + [ + -94.4631558, + 44.3129192 + ], + [ + -94.4635035, + 44.313386 + ], + [ + -94.4637177, + 44.3138926 + ], + [ + -94.4637901, + 44.3144194 + ], + [ + -94.4637181, + 44.3149462 + ], + [ + -94.4635042, + 44.3154529 + ], + [ + -94.4631568, + 44.3159198 + ], + [ + -94.4626892, + 44.3163291 + ], + [ + -94.4621193, + 44.316665 + ], + [ + -94.4614691, + 44.3169147 + ], + [ + -94.4607635, + 44.3170685 + ], + [ + -94.4600298, + 44.3171205 + ], + [ + -94.4592959, + 44.3170687 + ], + [ + -94.4585903, + 44.3169151 + ], + [ + -94.45794, + 44.3166656 + ], + [ + -94.4573699, + 44.3163299 + ], + [ + -94.4569021, + 44.3159207 + ], + [ + -94.4568912, + 44.315909 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149552_s_4149553", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4614989, + 44.312219 + ], + [ + -94.4614591, + 44.3125437 + ], + [ + -94.4612523, + 44.3130518 + ], + [ + -94.4609114, + 44.3135212 + ], + [ + -94.4604496, + 44.3139339 + ], + [ + -94.4598844, + 44.3142739 + ], + [ + -94.4592378, + 44.3145282 + ], + [ + -94.4585344, + 44.314687 + ], + [ + -94.4578015, + 44.3147443 + ], + [ + -94.457067, + 44.3146978 + ], + [ + -94.4563593, + 44.3145493 + ], + [ + -94.4557055, + 44.3143046 + ], + [ + -94.4551308, + 44.3139729 + ], + [ + -94.4546573, + 44.3135671 + ], + [ + -94.4544423, + 44.3133411 + ], + [ + -94.4544031, + 44.3132991 + ], + [ + -94.4540095, + 44.3128682 + ], + [ + -94.4539533, + 44.312809 + ], + [ + -94.4536008, + 44.3123462 + ], + [ + -94.4533804, + 44.3118431 + ], + [ + -94.4533003, + 44.3113188 + ], + [ + -94.4533637, + 44.3107934 + ], + [ + -94.4535681, + 44.3102868 + ], + [ + -94.4536511, + 44.3101716 + ], + [ + -94.4536001, + 44.3101173 + ], + [ + -94.4531463, + 44.3096388 + ], + [ + -94.4531418, + 44.309634 + ], + [ + -94.4530627, + 44.3095502 + ], + [ + -94.4526833, + 44.3091522 + ], + [ + -94.45213, + 44.308576 + ], + [ + -94.4521251, + 44.3085709 + ], + [ + -94.4519349, + 44.3083719 + ], + [ + -94.4517567, + 44.3081868 + ], + [ + -94.4517438, + 44.3081733 + ], + [ + -94.4511868, + 44.3075873 + ], + [ + -94.4508124, + 44.3071928 + ], + [ + -94.4508085, + 44.3071887 + ], + [ + -94.4502555, + 44.3066036 + ], + [ + -94.4498926, + 44.3062189 + ], + [ + -94.4493476, + 44.3056482 + ], + [ + -94.4493449, + 44.3056454 + ], + [ + -94.4489649, + 44.3052464 + ], + [ + -94.4489597, + 44.3052409 + ], + [ + -94.4484212, + 44.3046724 + ], + [ + -94.4481098, + 44.304344 + ], + [ + -94.4480923, + 44.3043254 + ], + [ + -94.4480342, + 44.304263 + ], + [ + -94.4479672, + 44.3041925 + ], + [ + -94.4474807, + 44.3036799 + ], + [ + -94.447112, + 44.3032912 + ], + [ + -94.4471076, + 44.3032865 + ], + [ + -94.4465673, + 44.3027142 + ], + [ + -94.446186, + 44.302311 + ], + [ + -94.4461719, + 44.3022959 + ], + [ + -94.4457937, + 44.3018901 + ], + [ + -94.4456066, + 44.3016912 + ], + [ + -94.4455988, + 44.3016829 + ], + [ + -94.4452692, + 44.3013299 + ], + [ + -94.4447277, + 44.3007598 + ], + [ + -94.4443559, + 44.3003684 + ], + [ + -94.4440702, + 44.3000719 + ], + [ + -94.4440671, + 44.3000687 + ], + [ + -94.4437971, + 44.2997877 + ], + [ + -94.4434318, + 44.2994074 + ], + [ + -94.4434103, + 44.2993847 + ], + [ + -94.4428489, + 44.2987873 + ], + [ + -94.4424883, + 44.298404 + ], + [ + -94.4419212, + 44.2978071 + ], + [ + -94.4415639, + 44.2974308 + ], + [ + -94.4411633, + 44.2970092 + ], + [ + -94.4409583, + 44.2967932 + ], + [ + -94.4406378, + 44.2964557 + ], + [ + -94.440091, + 44.2958795 + ], + [ + -94.4400273, + 44.2958139 + ], + [ + -94.4399164, + 44.2957062 + ], + [ + -94.4399106, + 44.2957006 + ], + [ + -94.4398519, + 44.2956432 + ], + [ + -94.4396378, + 44.2954599 + ], + [ + -94.4396306, + 44.295454 + ], + [ + -94.4395968, + 44.2954308 + ], + [ + -94.4395099, + 44.2953735 + ], + [ + -94.4392022, + 44.2951804 + ], + [ + -94.439201, + 44.2951798 + ], + [ + -94.4385987, + 44.2948581 + ], + [ + -94.4380919, + 44.2945872 + ], + [ + -94.4380728, + 44.2945769 + ], + [ + -94.4374689, + 44.2942497 + ], + [ + -94.4374666, + 44.2942485 + ], + [ + -94.4368234, + 44.2942974 + ], + [ + -94.4360787, + 44.2942472 + ], + [ + -94.4353625, + 44.294092 + ], + [ + -94.4347033, + 44.2938381 + ], + [ + -94.4341271, + 44.2934955 + ], + [ + -94.4336568, + 44.2930777 + ], + [ + -94.4326909, + 44.2920195 + ], + [ + -94.4319113, + 44.2912158 + ], + [ + -94.4303965, + 44.2896541 + ], + [ + -94.4297517, + 44.2889974 + ], + [ + -94.4293881, + 44.288537 + ], + [ + -94.4291564, + 44.2880344 + ], + [ + -94.4290657, + 44.2875091 + ], + [ + -94.4291195, + 44.2869811 + ], + [ + -94.4293156, + 44.2864708 + ], + [ + -94.4296465, + 44.2859978 + ], + [ + -94.4300995, + 44.2855802 + ], + [ + -94.4306572, + 44.2852342 + ], + [ + -94.4312982, + 44.2849729 + ], + [ + -94.4319978, + 44.2848065 + ], + [ + -94.4327292, + 44.2847414 + ], + [ + -94.4334642, + 44.28478 + ], + [ + -94.4341745, + 44.2849208 + ], + [ + -94.434833, + 44.2851585 + ], + [ + -94.4354143, + 44.2854839 + ], + [ + -94.4358961, + 44.2858845 + ], + [ + -94.4365471, + 44.2865475 + ], + [ + -94.4365595, + 44.2865602 + ], + [ + -94.4380806, + 44.2881281 + ], + [ + -94.4382383, + 44.2882908 + ], + [ + -94.4384894, + 44.2882952 + ], + [ + -94.4391733, + 44.2884003 + ], + [ + -94.4398182, + 44.2885946 + ], + [ + -94.440402, + 44.2888714 + ], + [ + -94.4409042, + 44.289221 + ], + [ + -94.4410909, + 44.2893777 + ], + [ + -94.4413048, + 44.2895536 + ], + [ + -94.4413808, + 44.2896101 + ], + [ + -94.4413857, + 44.2896135 + ], + [ + -94.4414369, + 44.2896414 + ], + [ + -94.4419426, + 44.2899086 + ], + [ + -94.4419791, + 44.2899281 + ], + [ + -94.4425915, + 44.2902599 + ], + [ + -94.443086, + 44.2905243 + ], + [ + -94.4436882, + 44.2908458 + ], + [ + -94.4438055, + 44.2909085 + ], + [ + -94.4440262, + 44.2910361 + ], + [ + -94.4441272, + 44.2910991 + ], + [ + -94.4441355, + 44.2911042 + ], + [ + -94.4444925, + 44.2913282 + ], + [ + -94.4445626, + 44.2913733 + ], + [ + -94.4447096, + 44.2914703 + ], + [ + -94.44476, + 44.2915042 + ], + [ + -94.44489, + 44.2915932 + ], + [ + -94.4450114, + 44.2916802 + ], + [ + -94.4451074, + 44.2917522 + ], + [ + -94.4451935, + 44.291819 + ], + [ + -94.4452745, + 44.291884 + ], + [ + -94.4453703, + 44.2919646 + ], + [ + -94.4453705, + 44.2919645 + ], + [ + -94.4456905, + 44.2922385 + ], + [ + -94.4458392, + 44.2923744 + ], + [ + -94.4459663, + 44.2924985 + ], + [ + -94.4461044, + 44.2926327 + ], + [ + -94.4461636, + 44.2926919 + ], + [ + -94.4462686, + 44.2927999 + ], + [ + -94.4462928, + 44.292825 + ], + [ + -94.4468504, + 44.2934126 + ], + [ + -94.4471711, + 44.2937502 + ], + [ + -94.4473753, + 44.2939654 + ], + [ + -94.4477756, + 44.2943867 + ], + [ + -94.448133, + 44.2947632 + ], + [ + -94.4487047, + 44.2953648 + ], + [ + -94.4487144, + 44.295375 + ], + [ + -94.4490804, + 44.295764 + ], + [ + -94.4496329, + 44.2963518 + ], + [ + -94.4499869, + 44.2967204 + ], + [ + -94.4502552, + 44.2969996 + ], + [ + -94.4505467, + 44.297302 + ], + [ + -94.4505612, + 44.2973171 + ], + [ + -94.4509402, + 44.2977161 + ], + [ + -94.4514902, + 44.2982951 + ], + [ + -94.451507, + 44.298313 + ], + [ + -94.4518412, + 44.2986708 + ], + [ + -94.4520293, + 44.2988707 + ], + [ + -94.452039, + 44.298881 + ], + [ + -94.4524149, + 44.2992845 + ], + [ + -94.4527898, + 44.2996809 + ], + [ + -94.4533301, + 44.3002531 + ], + [ + -94.4536955, + 44.3006384 + ], + [ + -94.4541794, + 44.3011482 + ], + [ + -94.4542556, + 44.3012284 + ], + [ + -94.4542755, + 44.3012495 + ], + [ + -94.4543348, + 44.3013132 + ], + [ + -94.454638, + 44.3016329 + ], + [ + -94.4551755, + 44.3022003 + ], + [ + -94.4555516, + 44.3025951 + ], + [ + -94.4561013, + 44.3031707 + ], + [ + -94.4561132, + 44.3031833 + ], + [ + -94.4564793, + 44.3035713 + ], + [ + -94.4570294, + 44.3041532 + ], + [ + -94.4573997, + 44.3045433 + ], + [ + -94.4579496, + 44.3051218 + ], + [ + -94.4581251, + 44.3053041 + ], + [ + -94.4581327, + 44.305312 + ], + [ + -94.4583243, + 44.3055124 + ], + [ + -94.4588789, + 44.3060899 + ], + [ + -94.4588862, + 44.3060976 + ], + [ + -94.4592742, + 44.3065045 + ], + [ + -94.4592841, + 44.3065149 + ], + [ + -94.4593658, + 44.3066015 + ], + [ + -94.4598215, + 44.3070821 + ], + [ + -94.45983, + 44.3070911 + ], + [ + -94.460222, + 44.3075081 + ], + [ + -94.4607453, + 44.3080651 + ], + [ + -94.4611419, + 44.3084834 + ], + [ + -94.4611478, + 44.3084896 + ], + [ + -94.4616708, + 44.3090446 + ], + [ + -94.4620221, + 44.3095099 + ], + [ + -94.4622402, + 44.3100155 + ], + [ + -94.4623168, + 44.3105419 + ], + [ + -94.462249, + 44.311069 + ], + [ + -94.4620392, + 44.3115764 + ], + [ + -94.4616957, + 44.3120447 + ], + [ + -94.4614989, + 44.312219 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149553_s_4149554", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4431305, + 44.2930991 + ], + [ + -94.4431314, + 44.2931177 + ], + [ + -94.4430132, + 44.2936402 + ], + [ + -94.4427553, + 44.2941362 + ], + [ + -94.4423677, + 44.2945864 + ], + [ + -94.4418653, + 44.2949738 + ], + [ + -94.4412673, + 44.2952832 + ], + [ + -94.4405967, + 44.2955029 + ], + [ + -94.4398793, + 44.2956245 + ], + [ + -94.4391426, + 44.2956431 + ], + [ + -94.4384151, + 44.2955582 + ], + [ + -94.4377246, + 44.295373 + ], + [ + -94.4370977, + 44.2950946 + ], + [ + -94.4365585, + 44.2947337 + ], + [ + -94.4365315, + 44.2947117 + ], + [ + -94.4362693, + 44.2944721 + ], + [ + -94.4361993, + 44.2944001 + ], + [ + -94.436181, + 44.294381 + ], + [ + -94.4359716, + 44.2941616 + ], + [ + -94.4358642, + 44.2940493 + ], + [ + -94.4355109, + 44.2935894 + ], + [ + -94.4352883, + 44.293089 + ], + [ + -94.43527, + 44.2929746 + ], + [ + -94.4351763, + 44.2928943 + ], + [ + -94.4350725, + 44.2928013 + ], + [ + -94.4349445, + 44.2926813 + ], + [ + -94.4348495, + 44.2925883 + ], + [ + -94.4347315, + 44.2924673 + ], + [ + -94.434594, + 44.2923156 + ], + [ + -94.43437, + 44.2920496 + ], + [ + -94.4342493, + 44.2918951 + ], + [ + -94.4341143, + 44.2917081 + ], + [ + -94.4339671, + 44.2914783 + ], + [ + -94.433792, + 44.2911678 + ], + [ + -94.4337074, + 44.2910241 + ], + [ + -94.4336452, + 44.2909114 + ], + [ + -94.4335362, + 44.2907004 + ], + [ + -94.4334776, + 44.2905781 + ], + [ + -94.4333976, + 44.2903971 + ], + [ + -94.4333753, + 44.2903448 + ], + [ + -94.4332943, + 44.2901478 + ], + [ + -94.4332801, + 44.2901086 + ], + [ + -94.4328739, + 44.2901412 + ], + [ + -94.4321395, + 44.2900963 + ], + [ + -94.4314315, + 44.2899494 + ], + [ + -94.4307769, + 44.2897061 + ], + [ + -94.4302011, + 44.2893757 + ], + [ + -94.429726, + 44.2889709 + ], + [ + -94.429324, + 44.2885509 + ], + [ + -94.4292777, + 44.2885014 + ], + [ + -94.4289858, + 44.2881814 + ], + [ + -94.4286656, + 44.2877497 + ], + [ + -94.4286216, + 44.2876747 + ], + [ + -94.4284086, + 44.287187 + ], + [ + -94.4283273, + 44.2866792 + ], + [ + -94.4282934, + 44.2854412 + ], + [ + -94.4283178, + 44.2850765 + ], + [ + -94.4283338, + 44.2849775 + ], + [ + -94.428543, + 44.2843506 + ], + [ + -94.428953, + 44.2837772 + ], + [ + -94.429032, + 44.2836932 + ], + [ + -94.4294621, + 44.2833148 + ], + [ + -94.4299801, + 44.2829983 + ], + [ + -94.4309431, + 44.2825103 + ], + [ + -94.4309472, + 44.2825082 + ], + [ + -94.4317942, + 44.2820802 + ], + [ + -94.4321455, + 44.2819227 + ], + [ + -94.4323885, + 44.2818267 + ], + [ + -94.4331838, + 44.2815931 + ], + [ + -94.4334167, + 44.2815461 + ], + [ + -94.4337702, + 44.2814878 + ], + [ + -94.4340422, + 44.2814528 + ], + [ + -94.4347269, + 44.2814106 + ], + [ + -94.4349659, + 44.2814116 + ], + [ + -94.4357124, + 44.2814685 + ], + [ + -94.4358098, + 44.2814831 + ], + [ + -94.4359363, + 44.2814826 + ], + [ + -94.4367124, + 44.2815372 + ], + [ + -94.4374563, + 44.2817057 + ], + [ + -94.4381357, + 44.2819808 + ], + [ + -94.4387214, + 44.2823507 + ], + [ + -94.4391883, + 44.2827994 + ], + [ + -94.4395163, + 44.2833078 + ], + [ + -94.4396912, + 44.2838538 + ], + [ + -94.4399503, + 44.2853688 + ], + [ + -94.4404641, + 44.2883737 + ], + [ + -94.440489, + 44.288492 + ], + [ + -94.4405218, + 44.288633 + ], + [ + -94.4405329, + 44.2886762 + ], + [ + -94.4405417, + 44.2887059 + ], + [ + -94.4405758, + 44.2887888 + ], + [ + -94.440617, + 44.2888821 + ], + [ + -94.4406654, + 44.2889757 + ], + [ + -94.4407285, + 44.2890828 + ], + [ + -94.4407508, + 44.2891216 + ], + [ + -94.4408697, + 44.2893325 + ], + [ + -94.4409625, + 44.2894426 + ], + [ + -94.4409909, + 44.2894693 + ], + [ + -94.4411676, + 44.2896206 + ], + [ + -94.4412652, + 44.2896862 + ], + [ + -94.4417641, + 44.2899504 + ], + [ + -94.4418125, + 44.2899765 + ], + [ + -94.4418965, + 44.2900225 + ], + [ + -94.4424238, + 44.2903733 + ], + [ + -94.4428485, + 44.2907897 + ], + [ + -94.4431552, + 44.2912567 + ], + [ + -94.4433325, + 44.291757 + ], + [ + -94.443374, + 44.2922724 + ], + [ + -94.4432783, + 44.292784 + ], + [ + -94.4431305, + 44.2930991 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149554_s_4149555", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4629201, + 44.3146899 + ], + [ + -94.4627241, + 44.3147852 + ], + [ + -94.4626504, + 44.314822 + ], + [ + -94.4625835, + 44.3148547 + ], + [ + -94.4624285, + 44.3149287 + ], + [ + -94.4617816, + 44.315176 + ], + [ + -94.4610801, + 44.3153285 + ], + [ + -94.4603507, + 44.3153805 + ], + [ + -94.4596211, + 44.3153298 + ], + [ + -94.4589191, + 44.3151786 + ], + [ + -94.4582713, + 44.3149324 + ], + [ + -94.4577023, + 44.3146008 + ], + [ + -94.4572336, + 44.3141961 + ], + [ + -94.4571306, + 44.3140871 + ], + [ + -94.4571249, + 44.314081 + ], + [ + -94.4570638, + 44.314016 + ], + [ + -94.4570362, + 44.3139867 + ], + [ + -94.4567848, + 44.3137214 + ], + [ + -94.4567703, + 44.313706 + ], + [ + -94.4566761, + 44.3136052 + ], + [ + -94.456215, + 44.3131163 + ], + [ + -94.4558541, + 44.3127334 + ], + [ + -94.4553012, + 44.3121457 + ], + [ + -94.4549329, + 44.3117587 + ], + [ + -94.4548309, + 44.3116517 + ], + [ + -94.4548103, + 44.31163 + ], + [ + -94.4546995, + 44.3115113 + ], + [ + -94.4543747, + 44.311165 + ], + [ + -94.4540227, + 44.3107944 + ], + [ + -94.4534556, + 44.3101983 + ], + [ + -94.4534453, + 44.3101874 + ], + [ + -94.4530753, + 44.3097944 + ], + [ + -94.4525222, + 44.3092062 + ], + [ + -94.4521494, + 44.3088094 + ], + [ + -94.4516057, + 44.3082319 + ], + [ + -94.4512462, + 44.3078526 + ], + [ + -94.4506794, + 44.3072548 + ], + [ + -94.4506736, + 44.3072486 + ], + [ + -94.450428, + 44.306988 + ], + [ + -94.4502976, + 44.3068498 + ], + [ + -94.4497579, + 44.3062801 + ], + [ + -94.4497535, + 44.3062755 + ], + [ + -94.4493889, + 44.3058889 + ], + [ + -94.4488344, + 44.3053027 + ], + [ + -94.4484665, + 44.304917 + ], + [ + -94.4484632, + 44.3049136 + ], + [ + -94.4479843, + 44.3044098 + ], + [ + -94.4479213, + 44.3043439 + ], + [ + -94.4479132, + 44.3043354 + ], + [ + -94.4478426, + 44.304261 + ], + [ + -94.447526, + 44.3039295 + ], + [ + -94.4475192, + 44.3039225 + ], + [ + -94.4472639, + 44.3036533 + ], + [ + -94.4469866, + 44.3033632 + ], + [ + -94.4469744, + 44.3033503 + ], + [ + -94.4466211, + 44.302976 + ], + [ + -94.4460532, + 44.3023752 + ], + [ + -94.4456716, + 44.3019727 + ], + [ + -94.4456603, + 44.3019607 + ], + [ + -94.4455274, + 44.3018188 + ], + [ + -94.4451374, + 44.3014035 + ], + [ + -94.444757, + 44.3010066 + ], + [ + -94.4442136, + 44.3004402 + ], + [ + -94.4442098, + 44.3004362 + ], + [ + -94.4438428, + 44.3000522 + ], + [ + -94.4432871, + 44.2994704 + ], + [ + -94.4429128, + 44.2990792 + ], + [ + -94.4429086, + 44.2990747 + ], + [ + -94.4423466, + 44.2984847 + ], + [ + -94.4423303, + 44.2984674 + ], + [ + -94.442008, + 44.2981234 + ], + [ + -94.4414432, + 44.2975432 + ], + [ + -94.4413891, + 44.297486 + ], + [ + -94.4409943, + 44.2970574 + ], + [ + -94.4404907, + 44.2965266 + ], + [ + -94.4404683, + 44.2965026 + ], + [ + -94.4404138, + 44.2964439 + ], + [ + -94.4401556, + 44.2964625 + ], + [ + -94.4394173, + 44.2964106 + ], + [ + -94.4387075, + 44.2962555 + ], + [ + -94.438054, + 44.2960034 + ], + [ + -94.4374821, + 44.2956641 + ], + [ + -94.437014, + 44.2952507 + ], + [ + -94.4369294, + 44.2951587 + ], + [ + -94.4368658, + 44.2950906 + ], + [ + -94.4366714, + 44.2948581 + ], + [ + -94.4366425, + 44.2948191 + ], + [ + -94.436626, + 44.294794 + ], + [ + -94.4365955, + 44.2947617 + ], + [ + -94.436578, + 44.2947495 + ], + [ + -94.436562, + 44.2947365 + ], + [ + -94.4361303, + 44.2943074 + ], + [ + -94.4358235, + 44.2938261 + ], + [ + -94.4356533, + 44.293311 + ], + [ + -94.4356263, + 44.292782 + ], + [ + -94.4357435, + 44.2922593 + ], + [ + -94.4360005, + 44.2917632 + ], + [ + -94.4363872, + 44.2913125 + ], + [ + -94.4368889, + 44.2909247 + ], + [ + -94.4374863, + 44.2906147 + ], + [ + -94.4381564, + 44.2903943 + ], + [ + -94.4388735, + 44.290272 + ], + [ + -94.43961, + 44.2902526 + ], + [ + -94.4403377, + 44.2903368 + ], + [ + -94.4408911, + 44.2904846 + ], + [ + -94.441302, + 44.2904486 + ], + [ + -94.4419955, + 44.2904805 + ], + [ + -94.442669, + 44.2906034 + ], + [ + -94.4432995, + 44.2908133 + ], + [ + -94.4438655, + 44.291103 + ], + [ + -94.4439785, + 44.291173 + ], + [ + -94.4440391, + 44.2912113 + ], + [ + -94.444335, + 44.2914028 + ], + [ + -94.444442, + 44.2914713 + ], + [ + -94.4446767, + 44.2916353 + ], + [ + -94.4454007, + 44.2921873 + ], + [ + -94.445639, + 44.2923877 + ], + [ + -94.445809, + 44.2925457 + ], + [ + -94.4459019, + 44.2926359 + ], + [ + -94.4460469, + 44.2927828 + ], + [ + -94.4460535, + 44.2927896 + ], + [ + -94.4461515, + 44.2928896 + ], + [ + -94.4462066, + 44.2929473 + ], + [ + -94.4467164, + 44.2934973 + ], + [ + -94.4472231, + 44.2940313 + ], + [ + -94.4472517, + 44.2940619 + ], + [ + -94.4476342, + 44.2944771 + ], + [ + -94.4481906, + 44.2950487 + ], + [ + -94.4482286, + 44.2950885 + ], + [ + -94.4485615, + 44.2954438 + ], + [ + -94.4491132, + 44.296023 + ], + [ + -94.4494861, + 44.2964127 + ], + [ + -94.4500433, + 44.296996 + ], + [ + -94.4504082, + 44.2973777 + ], + [ + -94.4509503, + 44.2979427 + ], + [ + -94.4513424, + 44.2983519 + ], + [ + -94.4513624, + 44.298373 + ], + [ + -94.4517634, + 44.2988 + ], + [ + -94.4517656, + 44.2988023 + ], + [ + -94.4518939, + 44.2989392 + ], + [ + -94.4522712, + 44.2993372 + ], + [ + -94.4522741, + 44.2993402 + ], + [ + -94.4528441, + 44.2999432 + ], + [ + -94.4531934, + 44.3003132 + ], + [ + -94.4534682, + 44.3006008 + ], + [ + -94.4534756, + 44.3006085 + ], + [ + -94.4537312, + 44.3008779 + ], + [ + -94.4540479, + 44.3012094 + ], + [ + -94.4540546, + 44.3012165 + ], + [ + -94.4541246, + 44.3012902 + ], + [ + -94.4541865, + 44.301355 + ], + [ + -94.4541926, + 44.3013613 + ], + [ + -94.454673, + 44.3018666 + ], + [ + -94.4550434, + 44.3022549 + ], + [ + -94.4550516, + 44.3022635 + ], + [ + -94.4556116, + 44.3028555 + ], + [ + -94.4556144, + 44.3028585 + ], + [ + -94.4559782, + 44.3032441 + ], + [ + -94.456518, + 44.3038138 + ], + [ + -94.4565225, + 44.3038185 + ], + [ + -94.4566555, + 44.3039595 + ], + [ + -94.4568993, + 44.3042182 + ], + [ + -94.4574634, + 44.3048131 + ], + [ + -94.4578269, + 44.3051966 + ], + [ + -94.4578333, + 44.3052034 + ], + [ + -94.4583813, + 44.3057854 + ], + [ + -94.4583835, + 44.3057877 + ], + [ + -94.4587561, + 44.3061842 + ], + [ + -94.4593071, + 44.3067701 + ], + [ + -94.4596714, + 44.3071571 + ], + [ + -94.4602342, + 44.3077486 + ], + [ + -94.460595, + 44.3081285 + ], + [ + -94.4606072, + 44.3081414 + ], + [ + -94.4609402, + 44.3084964 + ], + [ + -94.4609445, + 44.308501 + ], + [ + -94.4610473, + 44.308611 + ], + [ + -94.46114, + 44.3087082 + ], + [ + -94.4613708, + 44.3089507 + ], + [ + -94.4617473, + 44.3088029 + ], + [ + -94.4624509, + 44.3086445 + ], + [ + -94.463184, + 44.3085877 + ], + [ + -94.4639184, + 44.3086347 + ], + [ + -94.464626, + 44.3087836 + ], + [ + -94.4652795, + 44.3090289 + ], + [ + -94.4658538, + 44.309361 + ], + [ + -94.4663268, + 44.3097672 + ], + [ + -94.466381, + 44.3098243 + ], + [ + -94.4667603, + 44.3102225 + ], + [ + -94.4667698, + 44.3102325 + ], + [ + -94.4671198, + 44.3106035 + ], + [ + -94.4674715, + 44.3110688 + ], + [ + -94.46769, + 44.3115743 + ], + [ + -94.4677669, + 44.3121008 + ], + [ + -94.4676993, + 44.312628 + ], + [ + -94.4674898, + 44.3131355 + ], + [ + -94.4671464, + 44.313604 + ], + [ + -94.4666823, + 44.3140153 + ], + [ + -94.4661153, + 44.3143538 + ], + [ + -94.4654673, + 44.3146063 + ], + [ + -94.4647631, + 44.3147632 + ], + [ + -94.4640298, + 44.3148184 + ], + [ + -94.4632956, + 44.3147698 + ], + [ + -94.4629201, + 44.3146899 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149555_s_4149556", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4708913, + 44.310774 + ], + [ + -94.4707792, + 44.310846 + ], + [ + -94.4706622, + 44.310914 + ], + [ + -94.4703774, + 44.3110642 + ], + [ + -94.4700714, + 44.3112102 + ], + [ + -94.4700671, + 44.3112122 + ], + [ + -94.4694976, + 44.3114831 + ], + [ + -94.4694041, + 44.311528 + ], + [ + -94.4693476, + 44.3115546 + ], + [ + -94.4692628, + 44.3115938 + ], + [ + -94.4692019, + 44.3120911 + ], + [ + -94.4689939, + 44.3126012 + ], + [ + -94.4686507, + 44.3130723 + ], + [ + -94.4681856, + 44.3134859 + ], + [ + -94.4676167, + 44.3138261 + ], + [ + -94.4675421, + 44.3138624 + ], + [ + -94.4669309, + 44.3141605 + ], + [ + -94.4663453, + 44.3144463 + ], + [ + -94.4663175, + 44.3144598 + ], + [ + -94.4662235, + 44.3145048 + ], + [ + -94.4655752, + 44.3147532 + ], + [ + -94.464872, + 44.3149064 + ], + [ + -94.4641408, + 44.3149584 + ], + [ + -94.4634094, + 44.3149074 + ], + [ + -94.4627058, + 44.3147553 + ], + [ + -94.4620569, + 44.3145078 + ], + [ + -94.4614873, + 44.3141745 + ], + [ + -94.4610189, + 44.313768 + ], + [ + -94.4609879, + 44.313735 + ], + [ + -94.4609816, + 44.3137283 + ], + [ + -94.4609407, + 44.3136845 + ], + [ + -94.4608838, + 44.3136237 + ], + [ + -94.4605347, + 44.3131574 + ], + [ + -94.460319, + 44.3126512 + ], + [ + -94.460245, + 44.3121245 + ], + [ + -94.4603155, + 44.3115975 + ], + [ + -94.4605279, + 44.3110906 + ], + [ + -94.4608203, + 44.3106955 + ], + [ + -94.4608134, + 44.3106512 + ], + [ + -94.4608763, + 44.3101239 + ], + [ + -94.4610813, + 44.3096155 + ], + [ + -94.4614204, + 44.3091457 + ], + [ + -94.4618806, + 44.3087323 + ], + [ + -94.4624442, + 44.3083913 + ], + [ + -94.4637967, + 44.307724 + ], + [ + -94.4644672, + 44.3073897 + ], + [ + -94.4645734, + 44.3073387 + ], + [ + -94.4651714, + 44.3070617 + ], + [ + -94.4651766, + 44.3070593 + ], + [ + -94.4652521, + 44.3070245 + ], + [ + -94.465324, + 44.3069899 + ], + [ + -94.4653371, + 44.3069837 + ], + [ + -94.4659109, + 44.3067108 + ], + [ + -94.4660333, + 44.3066523 + ], + [ + -94.4665755, + 44.3063436 + ], + [ + -94.4668025, + 44.3062408 + ], + [ + -94.4668972, + 44.306197 + ], + [ + -94.4669882, + 44.3061543 + ], + [ + -94.4671402, + 44.3060815 + ], + [ + -94.4672885, + 44.3060062 + ], + [ + -94.4674794, + 44.3059093 + ], + [ + -94.467942, + 44.3056723 + ], + [ + -94.4685416, + 44.3053589 + ], + [ + -94.468613, + 44.3053224 + ], + [ + -94.469248, + 44.3050064 + ], + [ + -94.4692843, + 44.3049886 + ], + [ + -94.4693475, + 44.3049579 + ], + [ + -94.4699418, + 44.3046676 + ], + [ + -94.4710271, + 44.3041279 + ], + [ + -94.4716714, + 44.3038706 + ], + [ + -94.4723731, + 44.3037086 + ], + [ + -94.4731055, + 44.3036479 + ], + [ + -94.4738402, + 44.303691 + ], + [ + -94.4745491, + 44.3038363 + ], + [ + -94.4752049, + 44.304078 + ], + [ + -94.4757825, + 44.304407 + ], + [ + -94.4762596, + 44.3048105 + ], + [ + -94.4766179, + 44.3052732 + ], + [ + -94.4768436, + 44.3057771 + ], + [ + -94.4769281, + 44.306303 + ], + [ + -94.4768681, + 44.3068307 + ], + [ + -94.4766659, + 44.3073397 + ], + [ + -94.4763292, + 44.3078107 + ], + [ + -94.4758711, + 44.3082255 + ], + [ + -94.4753091, + 44.3085681 + ], + [ + -94.4742111, + 44.3091141 + ], + [ + -94.4741855, + 44.3091267 + ], + [ + -94.4735735, + 44.3094257 + ], + [ + -94.4735639, + 44.3094304 + ], + [ + -94.4735141, + 44.3094545 + ], + [ + -94.4729332, + 44.3097436 + ], + [ + -94.4723546, + 44.3100461 + ], + [ + -94.4723255, + 44.3100612 + ], + [ + -94.4718415, + 44.3103092 + ], + [ + -94.471828, + 44.3103161 + ], + [ + -94.4716313, + 44.3104159 + ], + [ + -94.4714407, + 44.3105127 + ], + [ + -94.4713545, + 44.3105552 + ], + [ + -94.4711455, + 44.3106552 + ], + [ + -94.4711184, + 44.3106681 + ], + [ + -94.4710034, + 44.3107221 + ], + [ + -94.4709825, + 44.3107318 + ], + [ + -94.4708913, + 44.310774 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149556_s_4149557", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4806531, + 44.3058345 + ], + [ + -94.4811094, + 44.3059301 + ], + [ + -94.4817633, + 44.3061745 + ], + [ + -94.4823382, + 44.3065059 + ], + [ + -94.4828121, + 44.3069114 + ], + [ + -94.4831666, + 44.3073756 + ], + [ + -94.4833883, + 44.3078805 + ], + [ + -94.4834685, + 44.3084067 + ], + [ + -94.4834043, + 44.308934 + ], + [ + -94.4831979, + 44.3094423 + ], + [ + -94.4828575, + 44.3099118 + ], + [ + -94.482396, + 44.3103247 + ], + [ + -94.4818312, + 44.3106649 + ], + [ + -94.4816622, + 44.3107479 + ], + [ + -94.4816491, + 44.3107543 + ], + [ + -94.4811605, + 44.3109921 + ], + [ + -94.4810459, + 44.311048 + ], + [ + -94.4803941, + 44.3113019 + ], + [ + -94.4796856, + 44.3114591 + ], + [ + -94.4789478, + 44.3115134 + ], + [ + -94.4782096, + 44.3114627 + ], + [ + -94.4774996, + 44.311309 + ], + [ + -94.4768454, + 44.3110583 + ], + [ + -94.4762725, + 44.3107202 + ], + [ + -94.4758031, + 44.310308 + ], + [ + -94.47546, + 44.3099374 + ], + [ + -94.4750248, + 44.3094853 + ], + [ + -94.4747773, + 44.309233 + ], + [ + -94.4747451, + 44.3091996 + ], + [ + -94.4744389, + 44.3088773 + ], + [ + -94.4739723, + 44.308986 + ], + [ + -94.4732402, + 44.309048 + ], + [ + -94.4725052, + 44.3090062 + ], + [ + -94.4717957, + 44.3088622 + ], + [ + -94.471139, + 44.3086217 + ], + [ + -94.4705603, + 44.3082938 + ], + [ + -94.4700817, + 44.3078911 + ], + [ + -94.4697218, + 44.307429 + ], + [ + -94.4694944, + 44.3069255 + ], + [ + -94.4694081, + 44.3063997 + ], + [ + -94.4694663, + 44.305872 + ], + [ + -94.4696667, + 44.3053626 + ], + [ + -94.4700017, + 44.304891 + ], + [ + -94.4704584, + 44.3044754 + ], + [ + -94.4710192, + 44.3041318 + ], + [ + -94.4710652, + 44.3041088 + ], + [ + -94.4710738, + 44.3041045 + ], + [ + -94.4717444, + 44.3037713 + ], + [ + -94.4719979, + 44.303645 + ], + [ + -94.4720053, + 44.3036413 + ], + [ + -94.4721129, + 44.303588 + ], + [ + -94.4732725, + 44.3030107 + ], + [ + -94.4732819, + 44.303006 + ], + [ + -94.4733749, + 44.30296 + ], + [ + -94.4740268, + 44.3027019 + ], + [ + -94.4747367, + 44.302541 + ], + [ + -94.4754769, + 44.3024836 + ], + [ + -94.4762183, + 44.3025322 + ], + [ + -94.4769318, + 44.3026846 + ], + [ + -94.4775896, + 44.302935 + ], + [ + -94.4781657, + 44.3032735 + ], + [ + -94.4786378, + 44.303687 + ], + [ + -94.4787012, + 44.3037554 + ], + [ + -94.4787378, + 44.3037948 + ], + [ + -94.479221, + 44.3043131 + ], + [ + -94.479505, + 44.3046115 + ], + [ + -94.4795223, + 44.3046299 + ], + [ + -94.4803606, + 44.3055266 + ], + [ + -94.4806531, + 44.3058345 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149557_s_4149558", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4834933, + 44.3058357 + ], + [ + -94.4835193, + 44.3058456 + ], + [ + -94.4840891, + 44.3061815 + ], + [ + -94.4845569, + 44.3065907 + ], + [ + -94.4849044, + 44.3070575 + ], + [ + -94.4851184, + 44.3075641 + ], + [ + -94.4851907, + 44.3080909 + ], + [ + -94.4851185, + 44.3086178 + ], + [ + -94.4849045, + 44.3091244 + ], + [ + -94.484557, + 44.3095912 + ], + [ + -94.4840893, + 44.3100005 + ], + [ + -94.4835194, + 44.3103363 + ], + [ + -94.4828692, + 44.3105859 + ], + [ + -94.4821637, + 44.3107396 + ], + [ + -94.4815275, + 44.3107845 + ], + [ + -94.4815271, + 44.3107847 + ], + [ + -94.4821498, + 44.3107415 + ], + [ + -94.4815919, + 44.3107905 + ], + [ + -94.4815163, + 44.310789 + ], + [ + -94.4811866, + 44.310919 + ], + [ + -94.4804836, + 44.3110784 + ], + [ + -94.4797507, + 44.3111363 + ], + [ + -94.4790162, + 44.3110904 + ], + [ + -94.4783083, + 44.3109425 + ], + [ + -94.4776542, + 44.3106982 + ], + [ + -94.477079, + 44.310367 + ], + [ + -94.4766049, + 44.3099616 + ], + [ + -94.47625, + 44.3094976 + ], + [ + -94.476028, + 44.3089928 + ], + [ + -94.4759475, + 44.3084666 + ], + [ + -94.4760114, + 44.3079392 + ], + [ + -94.4762175, + 44.3074309 + ], + [ + -94.4765576, + 44.3069613 + ], + [ + -94.4770188, + 44.3065483 + ], + [ + -94.4775833, + 44.3062078 + ], + [ + -94.4781234, + 44.3059423 + ], + [ + -94.4783825, + 44.3058147 + ], + [ + -94.478386, + 44.305813 + ], + [ + -94.4785498, + 44.3057326 + ], + [ + -94.4788256, + 44.3055961 + ], + [ + -94.4794746, + 44.3053388 + ], + [ + -94.4801813, + 44.3051779 + ], + [ + -94.4809183, + 44.3051197 + ], + [ + -94.4816568, + 44.3051664 + ], + [ + -94.4823681, + 44.3053163 + ], + [ + -94.4830248, + 44.3055635 + ], + [ + -94.4834933, + 44.3058357 + ] + ], + [ + [ + -94.4814771, + 44.3107882 + ], + [ + -94.4814764, + 44.3107882 + ], + [ + -94.48143, + 44.3107914 + ], + [ + -94.4814771, + 44.3107882 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149558_s_4149560", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.5009099, + 44.3235544 + ], + [ + -94.5009251, + 44.3236257 + ], + [ + -94.5009461, + 44.3237377 + ], + [ + -94.5009615, + 44.3238325 + ], + [ + -94.5009758, + 44.3239365 + ], + [ + -94.5009901, + 44.3240364 + ], + [ + -94.5010015, + 44.3241338 + ], + [ + -94.5010085, + 44.3242098 + ], + [ + -94.5010094, + 44.3242197 + ], + [ + -94.5010154, + 44.3242887 + ], + [ + -94.5010204, + 44.3243624 + ], + [ + -94.5010245, + 44.3244444 + ], + [ + -94.5010268, + 44.3245389 + ], + [ + -94.5010268, + 44.3246339 + ], + [ + -94.5010263, + 44.3246777 + ], + [ + -94.5010234, + 44.3248041 + ], + [ + -94.501009, + 44.3257266 + ], + [ + -94.5010108, + 44.3259277 + ], + [ + -94.5010109, + 44.3259449 + ], + [ + -94.5010109, + 44.3262289 + ], + [ + -94.5009381, + 44.3267576 + ], + [ + -94.5007226, + 44.3272658 + ], + [ + -94.5003726, + 44.3277339 + ], + [ + -94.4999017, + 44.3281438 + ], + [ + -94.4993281, + 44.3284795 + ], + [ + -94.4986741, + 44.3287282 + ], + [ + -94.4979649, + 44.3288801 + ], + [ + -94.497228, + 44.3289294 + ], + [ + -94.4949859, + 44.3289204 + ], + [ + -94.4929577, + 44.3289116 + ], + [ + -94.4929382, + 44.3289119 + ], + [ + -94.4928942, + 44.3289136 + ], + [ + -94.4928891, + 44.3289139 + ], + [ + -94.4928765, + 44.3289307 + ], + [ + -94.4924088, + 44.32934 + ], + [ + -94.4923456, + 44.3293773 + ], + [ + -94.4921708, + 44.3296784 + ], + [ + -94.4921578, + 44.3296974 + ], + [ + -94.4921016, + 44.3297763 + ], + [ + -94.4920786, + 44.3298073 + ], + [ + -94.4918885, + 44.3300357 + ], + [ + -94.4918755, + 44.3300497 + ], + [ + -94.4917613, + 44.3301659 + ], + [ + -94.4917343, + 44.3301919 + ], + [ + -94.4914309, + 44.3304489 + ], + [ + -94.4913439, + 44.3305139 + ], + [ + -94.4911672, + 44.3306375 + ], + [ + -94.4911382, + 44.3306565 + ], + [ + -94.4909931, + 44.3307468 + ], + [ + -94.4909913, + 44.3307479 + ], + [ + -94.4909602, + 44.3307668 + ], + [ + -94.4907792, + 44.3308701 + ], + [ + -94.4907512, + 44.3308851 + ], + [ + -94.4905859, + 44.3309688 + ], + [ + -94.4903613, + 44.3310762 + ], + [ + -94.4901976, + 44.3311545 + ], + [ + -94.4895714, + 44.3313964 + ], + [ + -94.4888929, + 44.3315493 + ], + [ + -94.4881865, + 44.3316079 + ], + [ + -94.4874773, + 44.33157 + ], + [ + -94.4867907, + 44.3314369 + ], + [ + -94.4861513, + 44.3312136 + ], + [ + -94.4855818, + 44.3309078 + ], + [ + -94.4851027, + 44.3305306 + ], + [ + -94.4848603, + 44.3302991 + ], + [ + -94.484528, + 44.3299826 + ], + [ + -94.4844965, + 44.3299523 + ], + [ + -94.4843444, + 44.3298031 + ], + [ + -94.4842983, + 44.329758 + ], + [ + -94.4842441, + 44.3297049 + ], + [ + -94.4838574, + 44.329231 + ], + [ + -94.4836123, + 44.3287109 + ], + [ + -94.4835188, + 44.3281659 + ], + [ + -94.4835808, + 44.3276186 + ], + [ + -94.4837958, + 44.3270916 + ], + [ + -94.4841549, + 44.3266067 + ], + [ + -94.4846432, + 44.326184 + ], + [ + -94.4852404, + 44.3258409 + ], + [ + -94.4854285, + 44.3257538 + ], + [ + -94.4862769, + 44.3253598 + ], + [ + -94.4863022, + 44.3253479 + ], + [ + -94.4863125, + 44.3253431 + ], + [ + -94.4866305, + 44.3251951 + ], + [ + -94.4866348, + 44.3251931 + ], + [ + -94.4870337, + 44.325008 + ], + [ + -94.4871444, + 44.3249564 + ], + [ + -94.4873731, + 44.3248489 + ], + [ + -94.4874006, + 44.3248361 + ], + [ + -94.4878776, + 44.3246161 + ], + [ + -94.4879612, + 44.3245786 + ], + [ + -94.4881152, + 44.3245116 + ], + [ + -94.4881561, + 44.3244941 + ], + [ + -94.4883761, + 44.3244011 + ], + [ + -94.488479, + 44.3243591 + ], + [ + -94.488675, + 44.3242821 + ], + [ + -94.4888017, + 44.3242346 + ], + [ + -94.4889497, + 44.3241816 + ], + [ + -94.4890447, + 44.3241487 + ], + [ + -94.4890837, + 44.3241357 + ], + [ + -94.4891122, + 44.3241263 + ], + [ + -94.4892502, + 44.3240813 + ], + [ + -94.4893327, + 44.3240553 + ], + [ + -94.4895127, + 44.3240003 + ], + [ + -94.4896598, + 44.323958 + ], + [ + -94.4898188, + 44.323915 + ], + [ + -94.489944, + 44.3238829 + ], + [ + -94.490097, + 44.3238459 + ], + [ + -94.4901692, + 44.323829 + ], + [ + -94.4902622, + 44.323808 + ], + [ + -94.4903635, + 44.3237863 + ], + [ + -94.4905205, + 44.3237543 + ], + [ + -94.4906753, + 44.3237252 + ], + [ + -94.4909323, + 44.3236812 + ], + [ + -94.4910872, + 44.3236572 + ], + [ + -94.4912162, + 44.3236392 + ], + [ + -94.4912494, + 44.3236347 + ], + [ + -94.4913924, + 44.3236157 + ], + [ + -94.4915698, + 44.3235922 + ], + [ + -94.4917656, + 44.3235701 + ], + [ + -94.4919476, + 44.3235531 + ], + [ + -94.4921092, + 44.3235406 + ], + [ + -94.4922382, + 44.3235326 + ], + [ + -94.4922869, + 44.3235298 + ], + [ + -94.4923629, + 44.3235258 + ], + [ + -94.4924691, + 44.3235213 + ], + [ + -94.4924816, + 44.3235209 + ], + [ + -94.49259, + 44.3235166 + ], + [ + -94.4927178, + 44.3235132 + ], + [ + -94.4928518, + 44.3235112 + ], + [ + -94.4929528, + 44.3235106 + ], + [ + -94.4930756, + 44.3235112 + ], + [ + -94.4930746, + 44.3235098 + ], + [ + -94.4930116, + 44.3234294 + ], + [ + -94.4929279, + 44.3233286 + ], + [ + -94.492898, + 44.3232918 + ], + [ + -94.492882, + 44.3232718 + ], + [ + -94.4928814, + 44.3232711 + ], + [ + -94.49259, + 44.3229499 + ], + [ + -94.4923409, + 44.3226758 + ], + [ + -94.4923143, + 44.3226462 + ], + [ + -94.4922083, + 44.3225261 + ], + [ + -94.4922057, + 44.3225232 + ], + [ + -94.4920892, + 44.322391 + ], + [ + -94.4918955, + 44.3221788 + ], + [ + -94.4915939, + 44.322099 + ], + [ + -94.4901328, + 44.321713 + ], + [ + -94.4899416, + 44.3216628 + ], + [ + -94.4899238, + 44.3216581 + ], + [ + -94.4897277, + 44.3216057 + ], + [ + -94.4894562, + 44.3215344 + ], + [ + -94.4887587, + 44.3213516 + ], + [ + -94.4887544, + 44.3213505 + ], + [ + -94.4885074, + 44.3212855 + ], + [ + -94.4878014, + 44.3210994 + ], + [ + -94.4876086, + 44.3210488 + ], + [ + -94.4876007, + 44.3210467 + ], + [ + -94.4874034, + 44.3209944 + ], + [ + -94.487131, + 44.3209232 + ], + [ + -94.4870952, + 44.3209137 + ], + [ + -94.4869322, + 44.3208697 + ], + [ + -94.4867604, + 44.3208198 + ], + [ + -94.4867416, + 44.3208139 + ], + [ + -94.4867109, + 44.3208048 + ], + [ + -94.48657, + 44.3207603 + ], + [ + -94.486513, + 44.3207413 + ], + [ + -94.4864726, + 44.3207276 + ], + [ + -94.4864406, + 44.3207166 + ], + [ + -94.4863078, + 44.3206687 + ], + [ + -94.4862498, + 44.3206467 + ], + [ + -94.4860853, + 44.3205804 + ], + [ + -94.4860103, + 44.3205484 + ], + [ + -94.4858496, + 44.3204758 + ], + [ + -94.4857616, + 44.3204338 + ], + [ + -94.4855579, + 44.3203295 + ], + [ + -94.4854669, + 44.3202795 + ], + [ + -94.4852832, + 44.3201717 + ], + [ + -94.4852112, + 44.3201267 + ], + [ + -94.4851483, + 44.3200865 + ], + [ + -94.4850963, + 44.3200525 + ], + [ + -94.4849042, + 44.3199176 + ], + [ + -94.4848472, + 44.3198746 + ], + [ + -94.4847179, + 44.3197719 + ], + [ + -94.4846629, + 44.3197259 + ], + [ + -94.4845213, + 44.3196001 + ], + [ + -94.4844663, + 44.3195481 + ], + [ + -94.4844281, + 44.3195113 + ], + [ + -94.4843791, + 44.3194633 + ], + [ + -94.4842998, + 44.3193825 + ], + [ + -94.4842417, + 44.319321 + ], + [ + -94.4841457, + 44.3192214 + ], + [ + -94.4841198, + 44.3191942 + ], + [ + -94.483541, + 44.3185776 + ], + [ + -94.4834486, + 44.3184798 + ], + [ + -94.4829398, + 44.3179671 + ], + [ + -94.4829199, + 44.3179468 + ], + [ + -94.4828469, + 44.3178718 + ], + [ + -94.4828097, + 44.3178328 + ], + [ + -94.4827497, + 44.3177688 + ], + [ + -94.482739, + 44.3177574 + ], + [ + -94.4825102, + 44.3175106 + ], + [ + -94.4820996, + 44.3170797 + ], + [ + -94.4820873, + 44.3170667 + ], + [ + -94.4809783, + 44.3158881 + ], + [ + -94.4802944, + 44.3151714 + ], + [ + -94.4802915, + 44.3151684 + ], + [ + -94.4796035, + 44.3144454 + ], + [ + -94.4795511, + 44.3143888 + ], + [ + -94.4790442, + 44.3138262 + ], + [ + -94.4789095, + 44.3136805 + ], + [ + -94.4788369, + 44.3135988 + ], + [ + -94.4787139, + 44.3134548 + ], + [ + -94.4785968, + 44.3133075 + ], + [ + -94.4785658, + 44.3132655 + ], + [ + -94.4784966, + 44.3131669 + ], + [ + -94.4784826, + 44.3131459 + ], + [ + -94.4784799, + 44.3131412 + ], + [ + -94.4779614, + 44.3125951 + ], + [ + -94.4779585, + 44.312592 + ], + [ + -94.4774975, + 44.312105 + ], + [ + -94.4774872, + 44.312094 + ], + [ + -94.4768737, + 44.311439 + ], + [ + -94.4768033, + 44.311365 + ], + [ + -94.4766119, + 44.3111636 + ], + [ + -94.4762016, + 44.3107322 + ], + [ + -94.4761874, + 44.3107173 + ], + [ + -94.4759636, + 44.3104786 + ], + [ + -94.4758198, + 44.3103259 + ], + [ + -94.4754688, + 44.3098608 + ], + [ + -94.4752509, + 44.3093555 + ], + [ + -94.4751743, + 44.3088294 + ], + [ + -94.475242, + 44.3083027 + ], + [ + -94.4754514, + 44.3077955 + ], + [ + -94.4757945, + 44.3073274 + ], + [ + -94.476258, + 44.3069163 + ], + [ + -94.4768243, + 44.306578 + ], + [ + -94.4769393, + 44.306522 + ], + [ + -94.4774219, + 44.3062871 + ], + [ + -94.4781236, + 44.3059422 + ], + [ + -94.4783825, + 44.3058147 + ], + [ + -94.478386, + 44.305813 + ], + [ + -94.4785498, + 44.3057326 + ], + [ + -94.4788256, + 44.3055962 + ], + [ + -94.4794865, + 44.3052692 + ], + [ + -94.4801329, + 44.3050127 + ], + [ + -94.4808367, + 44.3048518 + ], + [ + -94.4815706, + 44.3047928 + ], + [ + -94.4823065, + 44.3048379 + ], + [ + -94.4830159, + 44.3049855 + ], + [ + -94.4836714, + 44.3052297 + ], + [ + -94.4842479, + 44.3055613 + ], + [ + -94.484723, + 44.3059674 + ], + [ + -94.484805, + 44.3060534 + ], + [ + -94.4848244, + 44.3060739 + ], + [ + -94.4848674, + 44.3061199 + ], + [ + -94.4851171, + 44.3064295 + ], + [ + -94.4851391, + 44.3064615 + ], + [ + -94.4853064, + 44.3067444 + ], + [ + -94.4853164, + 44.3067644 + ], + [ + -94.4854157, + 44.3069947 + ], + [ + -94.4854237, + 44.3070167 + ], + [ + -94.4854689, + 44.3071562 + ], + [ + -94.4854769, + 44.3071842 + ], + [ + -94.4855341, + 44.3074514 + ], + [ + -94.4855401, + 44.3074934 + ], + [ + -94.4855472, + 44.3075493 + ], + [ + -94.4855572, + 44.3076373 + ], + [ + -94.4855547, + 44.3080984 + ], + [ + -94.4855507, + 44.3081304 + ], + [ + -94.4854931, + 44.3084172 + ], + [ + -94.4854881, + 44.3084352 + ], + [ + -94.4853004, + 44.3088943 + ], + [ + -94.4850028, + 44.3093224 + ], + [ + -94.4849908, + 44.3093364 + ], + [ + -94.4844855, + 44.3098027 + ], + [ + -94.4844625, + 44.3098197 + ], + [ + -94.4844417, + 44.3098323 + ], + [ + -94.4849284, + 44.3103448 + ], + [ + -94.4851346, + 44.3106412 + ], + [ + -94.4852137, + 44.3107338 + ], + [ + -94.4853234, + 44.3108525 + ], + [ + -94.4853477, + 44.3108791 + ], + [ + -94.485841, + 44.3114266 + ], + [ + -94.4865009, + 44.31212 + ], + [ + -94.4871905, + 44.3128425 + ], + [ + -94.4872045, + 44.3128572 + ], + [ + -94.4883144, + 44.3140367 + ], + [ + -94.4887323, + 44.3144752 + ], + [ + -94.4887589, + 44.3145035 + ], + [ + -94.4889955, + 44.3147588 + ], + [ + -94.4890318, + 44.3147975 + ], + [ + -94.489076, + 44.3148429 + ], + [ + -94.4896, + 44.3153708 + ], + [ + -94.4896496, + 44.315422 + ], + [ + -94.4897696, + 44.3155489 + ], + [ + -94.489776, + 44.3155558 + ], + [ + -94.4901638, + 44.3159689 + ], + [ + -94.4901992, + 44.3159782 + ], + [ + -94.4903893, + 44.3160282 + ], + [ + -94.4910971, + 44.3162147 + ], + [ + -94.4913413, + 44.316279 + ], + [ + -94.4920372, + 44.3164614 + ], + [ + -94.4923202, + 44.3165357 + ], + [ + -94.4923401, + 44.3165409 + ], + [ + -94.4925372, + 44.3165936 + ], + [ + -94.4927223, + 44.3166422 + ], + [ + -94.4927279, + 44.3166437 + ], + [ + -94.4941928, + 44.3170307 + ], + [ + -94.4948412, + 44.3172023 + ], + [ + -94.4948514, + 44.317205 + ], + [ + -94.4951884, + 44.317295 + ], + [ + -94.4953219, + 44.3173328 + ], + [ + -94.4953989, + 44.3173558 + ], + [ + -94.4954357, + 44.3173669 + ], + [ + -94.4955007, + 44.3173869 + ], + [ + -94.4958284, + 44.3175016 + ], + [ + -94.4958614, + 44.3175146 + ], + [ + -94.4958827, + 44.317523 + ], + [ + -94.4959427, + 44.317547 + ], + [ + -94.4960873, + 44.3176079 + ], + [ + -94.4961663, + 44.3176429 + ], + [ + -94.4962564, + 44.3176841 + ], + [ + -94.4963094, + 44.3177091 + ], + [ + -94.496461, + 44.3177845 + ], + [ + -94.496482, + 44.3177955 + ], + [ + -94.496508, + 44.3178093 + ], + [ + -94.496553, + 44.3178333 + ], + [ + -94.4967548, + 44.3179488 + ], + [ + -94.4968118, + 44.3179838 + ], + [ + -94.4969383, + 44.318065 + ], + [ + -94.4969963, + 44.318104 + ], + [ + -94.4970819, + 44.3181635 + ], + [ + -94.4971489, + 44.3182115 + ], + [ + -94.4973999, + 44.3184101 + ], + [ + -94.4974559, + 44.3184591 + ], + [ + -94.4975387, + 44.3185342 + ], + [ + -94.4976067, + 44.3185982 + ], + [ + -94.4977154, + 44.318706 + ], + [ + -94.4977834, + 44.318777 + ], + [ + -94.4978297, + 44.3188264 + ], + [ + -94.4983977, + 44.3194484 + ], + [ + -94.4984312, + 44.3194857 + ], + [ + -94.4985629, + 44.3196352 + ], + [ + -94.4986544, + 44.3197389 + ], + [ + -94.498891, + 44.3199991 + ], + [ + -94.4992258, + 44.320368 + ], + [ + -94.4992553, + 44.3204011 + ], + [ + -94.4992843, + 44.3204341 + ], + [ + -94.4993765, + 44.3205447 + ], + [ + -94.499399, + 44.3205733 + ], + [ + -94.499503, + 44.3206992 + ], + [ + -94.4995447, + 44.3207511 + ], + [ + -94.4996647, + 44.3209041 + ], + [ + -94.4997315, + 44.3209931 + ], + [ + -94.499767, + 44.3210425 + ], + [ + -94.4998034, + 44.321093 + ], + [ + -94.4998271, + 44.3211264 + ], + [ + -94.4999241, + 44.3212654 + ], + [ + -94.499954, + 44.3213092 + ], + [ + -94.499992, + 44.3213662 + ], + [ + -94.5000537, + 44.3214637 + ], + [ + -94.5001347, + 44.3215987 + ], + [ + -94.5001581, + 44.3216385 + ], + [ + -94.5002281, + 44.3217605 + ], + [ + -94.5002473, + 44.3217945 + ], + [ + -94.5002953, + 44.3218815 + ], + [ + -94.5003384, + 44.3219636 + ], + [ + -94.5003884, + 44.3220636 + ], + [ + -94.5004068, + 44.3221012 + ], + [ + -94.500433, + 44.3221561 + ], + [ + -94.500451, + 44.3221929 + ], + [ + -94.5005059, + 44.3223141 + ], + [ + -94.5005272, + 44.3223653 + ], + [ + -94.5005615, + 44.3224456 + ], + [ + -94.5005883, + 44.3225114 + ], + [ + -94.5006493, + 44.3226684 + ], + [ + -94.5006717, + 44.3227285 + ], + [ + -94.5007057, + 44.3228245 + ], + [ + -94.5007165, + 44.3228558 + ], + [ + -94.5007515, + 44.3229598 + ], + [ + -94.5007681, + 44.3230115 + ], + [ + -94.5008001, + 44.3231155 + ], + [ + -94.5008216, + 44.3231902 + ], + [ + -94.5008576, + 44.3233252 + ], + [ + -94.5008771, + 44.3234048 + ], + [ + -94.5008941, + 44.3234808 + ], + [ + -94.500898, + 44.3234984 + ], + [ + -94.50091, + 44.3235544 + ], + [ + -94.5009099, + 44.3235544 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149560_s_4149561", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.5003575, + 44.3289607 + ], + [ + -94.5002352, + 44.3290238 + ], + [ + -94.5001582, + 44.3290598 + ], + [ + -94.4998661, + 44.3291832 + ], + [ + -94.4997951, + 44.3292102 + ], + [ + -94.4994426, + 44.329328 + ], + [ + -94.4993736, + 44.329348 + ], + [ + -94.498926, + 44.3294548 + ], + [ + -94.498868, + 44.3294658 + ], + [ + -94.4985273, + 44.3295185 + ], + [ + -94.4984273, + 44.3295305 + ], + [ + -94.4981795, + 44.3295542 + ], + [ + -94.4981235, + 44.3295582 + ], + [ + -94.4979236, + 44.3295686 + ], + [ + -94.4978326, + 44.3295716 + ], + [ + -94.4976873, + 44.3295744 + ], + [ + -94.4974953, + 44.3295754 + ], + [ + -94.497468, + 44.3295754 + ], + [ + -94.497327, + 44.3295754 + ], + [ + -94.4972822, + 44.3295752 + ], + [ + -94.4969312, + 44.3295722 + ], + [ + -94.496765, + 44.3295682 + ], + [ + -94.496641, + 44.3295632 + ], + [ + -94.4962404, + 44.3295315 + ], + [ + -94.4961474, + 44.3295205 + ], + [ + -94.4956405, + 44.3294343 + ], + [ + -94.4955555, + 44.3294153 + ], + [ + -94.4951686, + 44.3293118 + ], + [ + -94.4951016, + 44.3292908 + ], + [ + -94.4948766, + 44.3292126 + ], + [ + -94.4943919, + 44.3292083 + ], + [ + -94.4942027, + 44.3292074 + ], + [ + -94.4941989, + 44.3292073 + ], + [ + -94.4940274, + 44.3292064 + ], + [ + -94.4936119, + 44.3292044 + ], + [ + -94.4930841, + 44.3292016 + ], + [ + -94.4930092, + 44.3292028 + ], + [ + -94.4929678, + 44.3292031 + ], + [ + -94.4928548, + 44.3292054 + ], + [ + -94.4928401, + 44.3292056 + ], + [ + -94.4928104, + 44.3292079 + ], + [ + -94.4926575, + 44.3292818 + ], + [ + -94.4926513, + 44.3292848 + ], + [ + -94.4924204, + 44.3293957 + ], + [ + -94.4923106, + 44.3294487 + ], + [ + -94.4918444, + 44.3296733 + ], + [ + -94.4911947, + 44.3299238 + ], + [ + -94.4904893, + 44.3300785 + ], + [ + -94.4897555, + 44.3301314 + ], + [ + -94.4890214, + 44.3300806 + ], + [ + -94.4883153, + 44.3299279 + ], + [ + -94.4876642, + 44.3296793 + ], + [ + -94.4870931, + 44.3293443 + ], + [ + -94.4866242, + 44.3289357 + ], + [ + -94.4862752, + 44.3284693 + ], + [ + -94.4860598, + 44.3279631 + ], + [ + -94.485986, + 44.3274363 + ], + [ + -94.4860569, + 44.3269094 + ], + [ + -94.4862696, + 44.3264025 + ], + [ + -94.4866159, + 44.3259352 + ], + [ + -94.4870827, + 44.3255253 + ], + [ + -94.4876518, + 44.3251887 + ], + [ + -94.4881162, + 44.324965 + ], + [ + -94.4882275, + 44.3249113 + ], + [ + -94.4882319, + 44.3249092 + ], + [ + -94.4884618, + 44.3247987 + ], + [ + -94.4886617, + 44.3247022 + ], + [ + -94.4887542, + 44.3246589 + ], + [ + -94.4889552, + 44.3245679 + ], + [ + -94.4891854, + 44.3244717 + ], + [ + -94.4893414, + 44.3244117 + ], + [ + -94.4894138, + 44.3243846 + ], + [ + -94.4895728, + 44.3243266 + ], + [ + -94.4895745, + 44.3243289 + ], + [ + -94.4898038, + 44.3242479 + ], + [ + -94.4899558, + 44.3242009 + ], + [ + -94.4901592, + 44.324143 + ], + [ + -94.4902512, + 44.324119 + ], + [ + -94.4903938, + 44.3240841 + ], + [ + -94.4905468, + 44.3240491 + ], + [ + -94.490737, + 44.3240095 + ], + [ + -94.490966, + 44.3239665 + ], + [ + -94.4912279, + 44.3239244 + ], + [ + -94.4914369, + 44.3238964 + ], + [ + -94.4915575, + 44.3238817 + ], + [ + -94.4917485, + 44.3238607 + ], + [ + -94.4919136, + 44.3238452 + ], + [ + -94.4921326, + 44.3238282 + ], + [ + -94.4923291, + 44.3238167 + ], + [ + -94.4924801, + 44.3238107 + ], + [ + -94.4926035, + 44.3238073 + ], + [ + -94.4926554, + 44.3238064 + ], + [ + -94.4927952, + 44.3238036 + ], + [ + -94.4928333, + 44.323803 + ], + [ + -94.4929903, + 44.323801 + ], + [ + -94.4930841, + 44.3238006 + ], + [ + -94.4936631, + 44.3238036 + ], + [ + -94.4940801, + 44.3238056 + ], + [ + -94.4940851, + 44.3238057 + ], + [ + -94.4942572, + 44.3238066 + ], + [ + -94.4944543, + 44.3238076 + ], + [ + -94.4944739, + 44.3238078 + ], + [ + -94.4958458, + 44.3238198 + ], + [ + -94.4959455, + 44.3238216 + ], + [ + -94.4960175, + 44.3238236 + ], + [ + -94.4963554, + 44.323844 + ], + [ + -94.4964414, + 44.323852 + ], + [ + -94.496645, + 44.323875 + ], + [ + -94.49669, + 44.323881 + ], + [ + -94.497072, + 44.3239469 + ], + [ + -94.497119, + 44.3239569 + ], + [ + -94.4973555, + 44.3240134 + ], + [ + -94.4973651, + 44.324016 + ], + [ + -94.4974943, + 44.3239835 + ], + [ + -94.4975653, + 44.3239675 + ], + [ + -94.4979578, + 44.3238955 + ], + [ + -94.4979928, + 44.3238905 + ], + [ + -94.4987266, + 44.3238386 + ], + [ + -94.4994605, + 44.3238904 + ], + [ + -94.5001662, + 44.324044 + ], + [ + -94.5008166, + 44.3242935 + ], + [ + -94.5013867, + 44.3246293 + ], + [ + -94.5018546, + 44.3250385 + ], + [ + -94.5022023, + 44.3255053 + ], + [ + -94.5024165, + 44.3260119 + ], + [ + -94.5024889, + 44.3265387 + ], + [ + -94.5024167, + 44.3270655 + ], + [ + -94.5022027, + 44.3275721 + ], + [ + -94.5018552, + 44.328039 + ], + [ + -94.5013874, + 44.3284483 + ], + [ + -94.5008174, + 44.3287842 + ], + [ + -94.5003575, + 44.3289607 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149561_s_4149562", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.506062, + 44.3253623 + ], + [ + -94.5061182, + 44.3253626 + ], + [ + -94.506325, + 44.3253626 + ], + [ + -94.5063477, + 44.3253626 + ], + [ + -94.5065787, + 44.3253636 + ], + [ + -94.5073093, + 44.3254183 + ], + [ + -94.5080113, + 44.3255738 + ], + [ + -94.5086577, + 44.3258243 + ], + [ + -94.509224, + 44.3261603 + ], + [ + -94.5096886, + 44.3265688 + ], + [ + -94.5100337, + 44.3270343 + ], + [ + -94.5102462, + 44.3275391 + ], + [ + -94.510318, + 44.3280639 + ], + [ + -94.510318, + 44.3283229 + ], + [ + -94.5102457, + 44.3288498 + ], + [ + -94.5100317, + 44.3293564 + ], + [ + -94.5096841, + 44.3298232 + ], + [ + -94.5092162, + 44.3302325 + ], + [ + -94.5086461, + 44.3305683 + ], + [ + -94.5079957, + 44.3308179 + ], + [ + -94.50729, + 44.3309715 + ], + [ + -94.506556, + 44.3310234 + ], + [ + -94.505822, + 44.3309715 + ], + [ + -94.5051163, + 44.3308179 + ], + [ + -94.5049637, + 44.3307593 + ], + [ + -94.5047669, + 44.3307584 + ], + [ + -94.504569, + 44.3307584 + ], + [ + -94.5045468, + 44.3307584 + ], + [ + -94.5043108, + 44.3307574 + ], + [ + -94.504103, + 44.3307564 + ], + [ + -94.503901, + 44.3307564 + ], + [ + -94.503887, + 44.3307564 + ], + [ + -94.503512, + 44.3307554 + ], + [ + -94.5034959, + 44.3307553 + ], + [ + -94.5033219, + 44.3307543 + ], + [ + -94.5025745, + 44.3306961 + ], + [ + -94.5018582, + 44.3305324 + ], + [ + -94.5012015, + 44.3302697 + ], + [ + -94.5006307, + 44.3299186 + ], + [ + -94.5001686, + 44.329493 + ], + [ + -94.4999859, + 44.3292295 + ], + [ + -94.49955, + 44.3292274 + ], + [ + -94.4990575, + 44.3292246 + ], + [ + -94.4989853, + 44.3292257 + ], + [ + -94.4989628, + 44.3292261 + ], + [ + -94.4988241, + 44.3292385 + ], + [ + -94.4980886, + 44.3292003 + ], + [ + -94.4973776, + 44.3290597 + ], + [ + -94.4967184, + 44.3288223 + ], + [ + -94.4961364, + 44.3284971 + ], + [ + -94.495654, + 44.3280967 + ], + [ + -94.4952897, + 44.3276364 + ], + [ + -94.4950575, + 44.327134 + ], + [ + -94.4949664, + 44.3266087 + ], + [ + -94.4950197, + 44.3260807 + ], + [ + -94.4952155, + 44.3255703 + ], + [ + -94.4955463, + 44.3250972 + ], + [ + -94.4959992, + 44.3246794 + ], + [ + -94.496557, + 44.3243331 + ], + [ + -94.4971982, + 44.3240716 + ], + [ + -94.4978981, + 44.3239049 + ], + [ + -94.4979351, + 44.3238989 + ], + [ + -94.4983779, + 44.3238468 + ], + [ + -94.4984589, + 44.3238408 + ], + [ + -94.4987423, + 44.3238276 + ], + [ + -94.4987933, + 44.3238266 + ], + [ + -94.4988201, + 44.3238261 + ], + [ + -94.4989581, + 44.3238241 + ], + [ + -94.499063, + 44.3238237 + ], + [ + -94.4996035, + 44.3238266 + ], + [ + -94.500409, + 44.3238306 + ], + [ + -94.500413, + 44.3238307 + ], + [ + -94.5007601, + 44.3238327 + ], + [ + -94.5015611, + 44.3238366 + ], + [ + -94.5017685, + 44.3238418 + ], + [ + -94.5018805, + 44.3238468 + ], + [ + -94.5019995, + 44.3238535 + ], + [ + -94.5020735, + 44.3238585 + ], + [ + -94.5023786, + 44.3238882 + ], + [ + -94.5024806, + 44.3239012 + ], + [ + -94.5025924, + 44.3239167 + ], + [ + -94.5026124, + 44.3239197 + ], + [ + -94.5027827, + 44.3239482 + ], + [ + -94.5028287, + 44.3239567 + ], + [ + -94.5028316, + 44.3239572 + ], + [ + -94.5032991, + 44.324066 + ], + [ + -94.5034041, + 44.324096 + ], + [ + -94.5037896, + 44.3242247 + ], + [ + -94.5038546, + 44.3242497 + ], + [ + -94.5041745, + 44.3243878 + ], + [ + -94.5042845, + 44.3244408 + ], + [ + -94.5045429, + 44.3245772 + ], + [ + -94.5046019, + 44.3246112 + ], + [ + -94.5046951, + 44.3246685 + ], + [ + -94.5050849, + 44.3247862 + ], + [ + -94.5057305, + 44.3251087 + ], + [ + -94.506062, + 44.3253623 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149562_s_4149563", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.510318, + 44.3289312 + ], + [ + -94.5103206, + 44.3290504 + ], + [ + -94.5103128, + 44.329271 + ], + [ + -94.5103028, + 44.329379 + ], + [ + -94.5101722, + 44.3299268 + ], + [ + -94.5101282, + 44.3300398 + ], + [ + -94.5098693, + 44.3305216 + ], + [ + -94.5094872, + 44.3309592 + ], + [ + -94.5089962, + 44.3313366 + ], + [ + -94.508414, + 44.33164 + ], + [ + -94.5077619, + 44.3318582 + ], + [ + -94.507064, + 44.3319834 + ], + [ + -94.506962, + 44.3319944 + ], + [ + -94.5065498, + 44.3320224 + ], + [ + -94.5063358, + 44.3320284 + ], + [ + -94.5061467, + 44.3320302 + ], + [ + -94.5049096, + 44.3320202 + ], + [ + -94.5048397, + 44.3320192 + ], + [ + -94.5047831, + 44.332018 + ], + [ + -94.5045774, + 44.3320201 + ], + [ + -94.5044656, + 44.3320201 + ], + [ + -94.5039407, + 44.3320144 + ], + [ + -94.5034977, + 44.3320134 + ], + [ + -94.5034784, + 44.3320133 + ], + [ + -94.5033092, + 44.3320123 + ], + [ + -94.5007968, + 44.3319993 + ], + [ + -94.5006119, + 44.3319983 + ], + [ + -94.498817, + 44.3319888 + ], + [ + -94.4981567, + 44.3320971 + ], + [ + -94.4974137, + 44.3321114 + ], + [ + -94.4971559, + 44.3320794 + ], + [ + -94.497019, + 44.3322044 + ], + [ + -94.4964587, + 44.3325487 + ], + [ + -94.4958156, + 44.3328079 + ], + [ + -94.4951144, + 44.332972 + ], + [ + -94.4943821, + 44.3330348 + ], + [ + -94.4936467, + 44.3329939 + ], + [ + -94.4929367, + 44.3328508 + ], + [ + -94.4922792, + 44.332611 + ], + [ + -94.4916995, + 44.3322837 + ], + [ + -94.4912199, + 44.3318815 + ], + [ + -94.4908588, + 44.3314199 + ], + [ + -94.4906301, + 44.3309166 + ], + [ + -94.4905427, + 44.330391 + ], + [ + -94.4905997, + 44.3298632 + ], + [ + -94.4907992, + 44.3293535 + ], + [ + -94.4908242, + 44.3293075 + ], + [ + -94.4909355, + 44.3291233 + ], + [ + -94.4909875, + 44.3290453 + ], + [ + -94.4911417, + 44.3288377 + ], + [ + -94.4912067, + 44.3287587 + ], + [ + -94.4913238, + 44.3286254 + ], + [ + -94.4913828, + 44.3285624 + ], + [ + -94.4915044, + 44.3284401 + ], + [ + -94.4915634, + 44.3283841 + ], + [ + -94.4916345, + 44.3283187 + ], + [ + -94.4916895, + 44.3282697 + ], + [ + -94.4917405, + 44.3282253 + ], + [ + -94.4920535, + 44.3279583 + ], + [ + -94.4921111, + 44.3279103 + ], + [ + -94.4927289, + 44.3274078 + ], + [ + -94.4931726, + 44.3270443 + ], + [ + -94.4936974, + 44.3266147 + ], + [ + -94.4937172, + 44.3265986 + ], + [ + -94.4939282, + 44.3264286 + ], + [ + -94.4944737, + 44.326068 + ], + [ + -94.4951073, + 44.3257911 + ], + [ + -94.4958041, + 44.3256089 + ], + [ + -94.4965372, + 44.3255284 + ], + [ + -94.4972781, + 44.3255527 + ], + [ + -94.4979979, + 44.3256808 + ], + [ + -94.4986688, + 44.3259078 + ], + [ + -94.4992645, + 44.3262249 + ], + [ + -94.4993505, + 44.3262809 + ], + [ + -94.4993943, + 44.3263094 + ], + [ + -94.4996939, + 44.3265035 + ], + [ + -94.4998236, + 44.3265932 + ], + [ + -94.5006678, + 44.3265977 + ], + [ + -94.5008518, + 44.3265987 + ], + [ + -94.503365, + 44.3266116 + ], + [ + -94.50353, + 44.3266126 + ], + [ + -94.5036679, + 44.3266129 + ], + [ + -94.503896, + 44.3264135 + ], + [ + -94.504466, + 44.3260777 + ], + [ + -94.5051164, + 44.3258281 + ], + [ + -94.5058221, + 44.3256745 + ], + [ + -94.506556, + 44.3256226 + ], + [ + -94.5072899, + 44.3256745 + ], + [ + -94.5079956, + 44.3258281 + ], + [ + -94.508646, + 44.3260777 + ], + [ + -94.509216, + 44.3264135 + ], + [ + -94.5096839, + 44.3268227 + ], + [ + -94.5100316, + 44.3272895 + ], + [ + -94.5102457, + 44.3277961 + ], + [ + -94.510318, + 44.3283229 + ], + [ + -94.510318, + 44.3289312 + ] + ] + ] + }, + "properties": {} + }, + { + "id": "radius_300_s_4149563_s_4210601", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -94.4979219, + 44.3310278 + ], + [ + -94.4979201, + 44.3310351 + ], + [ + -94.4978692, + 44.331418 + ], + [ + -94.4976677, + 44.3319107 + ], + [ + -94.4973399, + 44.332367 + ], + [ + -94.4968977, + 44.3327706 + ], + [ + -94.4963571, + 44.3331068 + ], + [ + -94.4957376, + 44.3333635 + ], + [ + -94.4956808, + 44.3333776 + ], + [ + -94.4956566, + 44.3335305 + ], + [ + -94.4955755, + 44.3337078 + ], + [ + -94.4955753, + 44.3337505 + ], + [ + -94.4955753, + 44.333757 + ], + [ + -94.4955615, + 44.3354417 + ], + [ + -94.4955595, + 44.3365265 + ], + [ + -94.4955586, + 44.3365843 + ], + [ + -94.4955527, + 44.3367715 + ], + [ + -94.4955566, + 44.3379666 + ], + [ + -94.4955566, + 44.3379764 + ], + [ + -94.4955557, + 44.3385334 + ], + [ + -94.4955361, + 44.3388054 + ], + [ + -94.4955354, + 44.3388098 + ], + [ + -94.4955357, + 44.3388149 + ], + [ + -94.4955357, + 44.3390739 + ], + [ + -94.4955355, + 44.3390996 + ], + [ + -94.4955196, + 44.3403076 + ], + [ + -94.4955191, + 44.3403341 + ], + [ + -94.4955064, + 44.340806 + ], + [ + -94.4955183, + 44.3413288 + ], + [ + -94.4955184, + 44.3413326 + ], + [ + -94.4955244, + 44.3416194 + ], + [ + -94.4955434, + 44.3424823 + ], + [ + -94.4955144, + 44.3428627 + ], + [ + -94.4955014, + 44.3429367 + ], + [ + -94.4953925, + 44.3433248 + ], + [ + -94.4953785, + 44.3433608 + ], + [ + -94.4951027, + 44.3438668 + ], + [ + -94.4950827, + 44.3438948 + ], + [ + -94.4946617, + 44.3443595 + ], + [ + -94.4941173, + 44.3447528 + ], + [ + -94.4940543, + 44.3447898 + ], + [ + -94.4935098, + 44.3450561 + ], + [ + -94.492909, + 44.3452501 + ], + [ + -94.492841, + 44.3452671 + ], + [ + -94.492076, + 44.345396 + ], + [ + -94.4912904, + 44.3454081 + ], + [ + -94.4911734, + 44.3454011 + ], + [ + -94.4908303, + 44.3453691 + ], + [ + -94.4907673, + 44.3453611 + ], + [ + -94.4905143, + 44.3453225 + ], + [ + -94.4904303, + 44.3453075 + ], + [ + -94.4900391, + 44.3452212 + ], + [ + -94.4899861, + 44.3452072 + ], + [ + -94.4895851, + 44.3450818 + ], + [ + -94.4895301, + 44.3450618 + ], + [ + -94.4892811, + 44.3449626 + ], + [ + -94.4892121, + 44.3449326 + ], + [ + -94.4889554, + 44.3448104 + ], + [ + -94.4877504, + 44.3441844 + ], + [ + -94.4875906, + 44.3440966 + ], + [ + -94.4874476, + 44.3440136 + ], + [ + -94.4873493, + 44.3439545 + ], + [ + -94.4872223, + 44.3438755 + ], + [ + -94.4870697, + 44.3437752 + ], + [ + -94.4869747, + 44.3437092 + ], + [ + -94.4867434, + 44.3435334 + ], + [ + -94.4866673, + 44.3434702 + ], + [ + -94.4866374, + 44.3434459 + ], + [ + -94.4865354, + 44.3433592 + ], + [ + -94.4864914, + 44.3433202 + ], + [ + -94.486453, + 44.3432856 + ], + [ + -94.486429, + 44.3432636 + ], + [ + -94.4863876, + 44.3432249 + ], + [ + -94.4863256, + 44.3431659 + ], + [ + -94.486203, + 44.3430422 + ], + [ + -94.4858516, + 44.3426655 + ], + [ + -94.4851764, + 44.3419557 + ], + [ + -94.484822, + 44.341491 + ], + [ + -94.4846008, + 44.3409855 + ], + [ + -94.4845214, + 44.3404589 + ], + [ + -94.4845868, + 44.3399312 + ], + [ + -94.4847944, + 44.3394229 + ], + [ + -94.4851364, + 44.3389534 + ], + [ + -94.4855994, + 44.3385408 + ], + [ + -94.4861658, + 44.3382011 + ], + [ + -94.4880292, + 44.3372902 + ], + [ + -94.4880275, + 44.3367502 + ], + [ + -94.4880284, + 44.3366826 + ], + [ + -94.4880345, + 44.3364905 + ], + [ + -94.4880365, + 44.3354284 + ], + [ + -94.4880366, + 44.3354159 + ], + [ + -94.4880507, + 44.3337281 + ], + [ + -94.4880513, + 44.3336129 + ], + [ + -94.4877994, + 44.3333484 + ], + [ + -94.4877128, + 44.3332579 + ], + [ + -94.4873564, + 44.3327936 + ], + [ + -94.4871333, + 44.3322882 + ], + [ + -94.487052, + 44.3317613 + ], + [ + -94.4871157, + 44.3312332 + ], + [ + -94.487322, + 44.3307241 + ], + [ + -94.4876628, + 44.3302538 + ], + [ + -94.488125, + 44.3298404 + ], + [ + -94.4886909, + 44.3294997 + ], + [ + -94.4888475, + 44.3294228 + ], + [ + -94.4890801, + 44.329308 + ], + [ + -94.4891063, + 44.3292952 + ], + [ + -94.4899623, + 44.3288802 + ], + [ + -94.4900697, + 44.32883 + ], + [ + -94.4901897, + 44.328776 + ], + [ + -94.4902594, + 44.3287454 + ], + [ + -94.4903084, + 44.3287244 + ], + [ + -94.4907124, + 44.3285742 + ], + [ + -94.4907784, + 44.3285532 + ], + [ + -94.4910956, + 44.3284644 + ], + [ + -94.4911326, + 44.3284554 + ], + [ + -94.4911592, + 44.328449 + ], + [ + -94.4912182, + 44.328435 + ], + [ + -94.4912673, + 44.3284237 + ], + [ + -94.4913203, + 44.3284117 + ], + [ + -94.4915122, + 44.3283722 + ], + [ + -94.4915932, + 44.3283572 + ], + [ + -94.4918231, + 44.3283201 + ], + [ + -94.4918266, + 44.3283196 + ], + [ + -94.4921533, + 44.3281194 + ], + [ + -94.4927968, + 44.3278608 + ], + [ + -94.4934982, + 44.3276972 + ], + [ + -94.4942306, + 44.3276351 + ], + [ + -94.4949658, + 44.3276767 + ], + [ + -94.4956755, + 44.3278204 + ], + [ + -94.4963326, + 44.3280608 + ], + [ + -94.4969117, + 44.3283886 + ], + [ + -94.4973906, + 44.3287911 + ], + [ + -94.4977509, + 44.329253 + ], + [ + -94.4979788, + 44.3297565 + ], + [ + -94.4980654, + 44.3302822 + ], + [ + -94.4980075, + 44.33081 + ], + [ + -94.4979219, + 44.3310278 + ] + ] + ] + }, + "properties": {} + } + ] +} \ No newline at end of file diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/routes.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/routes.txt new file mode 100644 index 000000000..2f075f539 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/routes.txt @@ -0,0 +1,3 @@ +agency_id,route_id,route_short_name,route_long_name,route_desc,route_type,route_url,route_color,route_text_color,route_sort_order,min_headway_minutes,eligibility_restricted,continuous_pickup,continuous_drop_off,tts_route_short_name,tts_route_long_name +4870,74362,,Heartland Express,,3,,,,0,,0,1,1,, +4870,74513,,Hermann Express,,3,https://www.newulmmn.gov/553/Hermann-Express-City-Bus-Service,009d4f,000000,0,60,0,1,1,, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/shapes.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/shapes.txt new file mode 100644 index 000000000..3d5f78f3a --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/shapes.txt @@ -0,0 +1,878 @@ +shape_id,shape_pt_lat,shape_pt_lon,shape_pt_sequence,shape_dist_traveled +p_1426044,44.324414,-94.483311,1,0 +p_1426044,44.324357,-94.483257,2,7.65968508 +p_1426044,44.324285,-94.483405,3,21.92090165 +p_1426044,44.324213,-94.483551,4,36.0503469 +p_1426044,44.324148,-94.483488,5,44.84933003 +p_1426044,44.323693,-94.483051,6,106.26062273 +p_1426044,44.323314,-94.482686,7,157.45934174 +p_1426044,44.323243,-94.482618,8,167.03358608 +p_1426044,44.323174,-94.482547,9,176.56576387 +p_1426044,44.322687,-94.482048,10,243.74355807 +p_1426044,44.322287,-94.481632,11,299.21233526 +p_1426044,44.321321,-94.480711,12,429.28825529 +p_1426044,44.321087,-94.4805,13,460.26250686 +p_1426044,44.320976,-94.480396,14,475.1272489 +p_1426044,44.320897,-94.480326,15,485.53117143 +p_1426044,44.320768,-94.480215,16,502.37987449 +p_1426044,44.320321,-94.479836,17,560.52797316 +p_1426044,44.320027,-94.479575,18,599.267661 +p_1426044,44.319615,-94.479191,19,654.35195454 +p_1426044,44.319399,-94.478982,20,683.57627975 +p_1426044,44.31933,-94.478915,21,692.92259412 +p_1426044,44.319151,-94.478742,22,717.13187867 +p_1426044,44.318429,-94.478056,23,814.24722748 +p_1426044,44.318353,-94.477984,24,824.46046245 +p_1426044,44.317373,-94.477057,25,956.09408084 +p_1426044,44.316468,-94.476194,26,1077.96638837 +p_1426044,44.316399,-94.47613,27,1087.17806971 +p_1426044,44.316351,-94.476229,28,1096.70844933 +p_1426044,44.315744,-94.477466,29,1216.24276123 +p_1426044,44.315774,-94.477519,30,1221.62711361 +p_1426044,44.315744,-94.477466,31,1227.01146599 +p_1426044,44.315452,-94.478061,32,1284.5100345 +p_1426044,44.315386,-94.477999,33,1293.35601381 +p_1426044,44.315073,-94.477704,34,1335.35074942 +p_1426044,44.314772,-94.477419,35,1375.79418869 +p_1426044,44.314339,-94.477011,36,1433.88491856 +p_1426044,44.314272,-94.476947,37,1442.91256772 +p_1426044,44.313936,-94.476629,38,1488.0526686 +p_1426044,44.313606,-94.476317,39,1532.37236552 +p_1426044,44.313582,-94.476291,40,1535.75096739 +p_1426044,44.313565,-94.476271,41,1538.22371282 +p_1426044,44.313542,-94.476241,42,1541.72520568 +p_1426044,44.313524,-94.47621,43,1544.90601419 +p_1426044,44.313508,-94.476175,44,1548.21635581 +p_1426044,44.313499,-94.476155,45,1550.09950196 +p_1426044,44.313488,-94.476123,46,1552.93006077 +p_1426044,44.313461,-94.47604,47,1560.19996988 +p_1426044,44.313405,-94.475856,48,1576.14438192 +p_1426044,44.313388,-94.475807,49,1580.48620654 +p_1426044,44.313365,-94.475751,50,1585.63337045 +p_1426044,44.313326,-94.475671,51,1593.3481737 +p_1426044,44.313294,-94.475615,52,1599.05827439 +p_1426044,44.313281,-94.47558,53,1602.20219037 +p_1426044,44.313265,-94.475527,54,1606.78924779 +p_1426044,44.313257,-94.475487,55,1610.1020632 +p_1426044,44.313244,-94.475398,56,1617.3481964 +p_1426044,44.313222,-94.475253,57,1629.17220443 +p_1426044,44.313205,-94.475135,58,1638.77425056 +p_1426044,44.313189,-94.475067,59,1644.48338633 +p_1426044,44.313172,-94.475008,60,1649.55547883 +p_1426044,44.313161,-94.474978,61,1652.24301164 +p_1426044,44.313139,-94.47493,62,1656.78634206 +p_1426044,44.313115,-94.474885,63,1661.25868816 +p_1426044,44.313093,-94.474857,64,1664.57026318 +p_1426044,44.313051,-94.474808,65,1670.65827274 +p_1426044,44.31297,-94.474734,66,1681.42244367 +p_1426044,44.312863,-94.474636,67,1695.6526017 +p_1426044,44.312836,-94.474611,68,1699.25531686 +p_1426044,44.312769,-94.47455,69,1708.14984984 +p_1426044,44.312877,-94.474335,70,1729.08451666 +p_1426044,44.312965,-94.474165,71,1745.80508505 +p_1426044,44.313042,-94.474024,72,1759.93863382 +p_1426044,44.313092,-94.473937,73,1768.82951016 +p_1426044,44.313164,-94.473817,74,1781.306266 +p_1426044,44.31334,-94.473547,75,1810.40097268 +p_1426044,44.313395,-94.473457,76,1819.8301559 +p_1426044,44.31346,-94.473342,77,1831.50698102 +p_1426044,44.313525,-94.473226,78,1843.24659084 +p_1426044,44.313829,-94.472609,79,1902.94803253 +p_1426044,44.314162,-94.471931,80,1968.48537971 +p_1426044,44.314499,-94.471249,81,2034.53708373 +p_1426044,44.314827,-94.470573,82,2099.62958385 +p_1426044,44.315168,-94.469886,83,2166.26151923 +p_1426044,44.315505,-94.469205,84,2232.24675711 +p_1426044,44.315839,-94.468522,85,2298.17494695 +p_1426044,44.316122,-94.46794,86,2354.2532148 +p_1426044,44.316167,-94.467847,87,2363.20037014 +p_1426044,44.316213,-94.467753,88,2372.2759035 +p_1426044,44.316501,-94.46716,89,2429.39209566 +p_1426044,44.316785,-94.466575,90,2485.7304237 +p_1426044,44.316827,-94.466488,91,2494.09427377 +p_1426044,44.316878,-94.466383,92,2504.20785303 +p_1426044,44.316926,-94.466286,93,2513.60637024 +p_1426044,44.31716,-94.465805,94,2559.95923221 +p_1426044,44.317414,-94.465283,95,2610.26639711 +p_1426044,44.317433,-94.465244,96,2614.02640618 +p_1426044,44.317487,-94.465134,97,2624.65721963 +p_1426044,44.316898,-94.464578,98,2703.72066452 +p_1426044,44.31651,-94.464211,99,2755.83641657 +p_1426044,44.315898,-94.463628,100,2838.22510326 +p_1426044,44.31561,-94.463354,101,2876.98045331 +p_1426044,44.315531,-94.463279,102,2887.60408928 +p_1426044,44.315601,-94.463127,103,2902.0108487 +p_1426044,44.315647,-94.463034,104,2911.02063014 +p_1426044,44.315668,-94.462991,105,2915.16956817 +p_1426044,44.315773,-94.462774,106,2936.04636684 +p_1426044,44.315922,-94.462469,107,2965.47772325 +p_1426044,44.316205,-94.461888,108,3021.48989968 +p_1426044,44.31626,-94.461775,109,3032.38123653 +p_1426044,44.316189,-94.461708,110,3041.91086503 +p_1426044,44.316033,-94.461559,111,3062.92959098 +p_1426044,44.315366,-94.460925,112,3152.66000209 +p_1426044,44.315282,-94.460845,113,3163.96742283 +p_1426044,44.315203,-94.460771,114,3174.54634818 +p_1426044,44.31442,-94.460029,115,3279.78097063 +p_1426044,44.314391,-94.460002,116,3283.65707902 +p_1426044,44.314311,-94.459925,117,3294.46269321 +p_1426044,44.314227,-94.459846,118,3305.72533673 +p_1426044,44.31381,-94.459452,119,3361.71784133 +p_1426044,44.313411,-94.459072,120,3415.42857676 +p_1426044,44.313337,-94.459001,121,3425.4136276 +p_1426044,44.313232,-94.458901,122,3439.54805604 +p_1426044,44.31316,-94.458833,123,3449.21457947 +p_1426044,44.312753,-94.458447,124,3503.92960223 +p_1426044,44.312345,-94.458059,125,3558.82644501 +p_1426044,44.312262,-94.45798,126,3569.99728804 +p_1426044,44.31219,-94.457912,127,3579.6638605 +p_1426044,44.312114,-94.45783,128,3590.34655554 +p_1426044,44.312044,-94.457763,129,3599.78460537 +p_1426044,44.311818,-94.457548,130,3630.19677898 +p_1426044,44.311367,-94.457136,131,3690.12996279 +p_1426044,44.311288,-94.457061,132,3700.75383618 +p_1426044,44.311232,-94.457174,133,3711.70853506 +p_1426044,44.310954,-94.457743,134,3766.61976189 +p_1426044,44.310695,-94.458274,135,3817.83684553 +p_1426044,44.310675,-94.458315,136,3821.79158425 +p_1426044,44.310628,-94.458412,137,3831.12816744 +p_1426044,44.310558,-94.458556,138,3845.00278438 +p_1426044,44.310003,-94.458033,139,3919.46450002 +p_1426044,44.30958,-94.457632,140,3976.32359521 +p_1426044,44.309019,-94.457105,141,4051.51680695 +p_1426044,44.308602,-94.456713,142,4107.4214008 +p_1426044,44.308119,-94.456255,143,4172.35151801 +p_1426044,44.30803,-94.456171,144,4184.29824754 +p_1426044,44.307623,-94.455783,145,4239.10473079 +p_1426044,44.307043,-94.455226,146,4317.39172105 +p_1426044,44.30684,-94.455032,147,4344.74926319 +p_1426044,44.306651,-94.45485,148,4370.28253952 +p_1426044,44.306065,-94.454293,149,4449.11970235 +p_1426044,44.305672,-94.45392,150,4501.96707892 +p_1426044,44.305087,-94.453367,151,4580.53319229 +p_1426044,44.304698,-94.453,152,4632.74412628 +p_1426044,44.304121,-94.452449,153,4710.48637956 +p_1426044,44.303722,-94.452069,154,4764.1998682 +p_1426044,44.303153,-94.45153,155,4840.66838819 +p_1426044,44.302824,-94.451218,156,4884.8987003 +p_1426044,44.302751,-94.45115,157,4894.65791113 +p_1426044,44.30267,-94.451073,158,4905.5557917 +p_1426044,44.302159,-94.450588,159,4974.27230663 +p_1426044,44.301771,-94.45022,160,5026.43696371 +p_1426044,44.301198,-94.449679,161,5103.3636252 +p_1426044,44.300794,-94.449297,162,5157.62693799 +p_1426044,44.300383,-94.448914,163,5212.57993813 +p_1426044,44.300179,-94.448722,164,5239.94044321 +p_1426044,44.299817,-94.448384,165,5288.37140867 +p_1426044,44.299238,-94.447834,166,5366.25405508 +p_1426044,44.298839,-94.447455,167,5419.92391908 +p_1426044,44.298535,-94.447162,168,5461.00686596 +p_1426044,44.298254,-94.446892,169,5498.9438626 +p_1426044,44.297874,-94.446527,170,5550.24100859 +p_1426044,44.297276,-94.445965,171,5630.40918504 +p_1426044,44.296887,-94.445599,172,5682.57752394 +p_1426044,44.296285,-94.445027,173,5763.56204598 +p_1426044,44.295909,-94.44467,174,5814.13206751 +p_1426044,44.295487,-94.444269,175,5870.90355931 +p_1426044,44.295272,-94.444065,176,5899.81393993 +p_1426044,44.294934,-94.443744,177,5945.27698723 +p_1426044,44.294346,-94.443186,178,6024.34758713 +p_1426044,44.294238,-94.443081,179,6038.98455208 +p_1426044,44.294101,-94.44294,180,6057.91536822 +p_1426044,44.293974,-94.44281,181,6075.43085595 +p_1426044,44.2937,-94.44249,182,6115.17023228 +p_1426044,44.293685,-94.442473,183,6117.31940014 +p_1426044,44.29362,-94.442392,184,6127.01257541 +p_1426044,44.293548,-94.442296,185,6138.09002739 +p_1426044,44.293459,-94.442166,186,6152.42349776 +p_1426044,44.293362,-94.442019,187,6168.35509749 +p_1426044,44.293138,-94.441662,188,6206.18813673 +p_1426044,44.293075,-94.441561,189,6216.86442675 +p_1426044,44.293013,-94.441445,190,6228.40449879 +p_1426044,44.292691,-94.440842,191,6288.37366411 +p_1426044,44.292421,-94.440337,192,6338.61875627 +p_1426044,44.292084,-94.439715,193,6400.80121632 +p_1426044,44.291804,-94.439185,194,6453.31154324 +p_1426044,44.29168,-94.438958,195,6476.0731121 +p_1426044,44.291535,-94.438742,196,6499.66969613 +p_1426044,44.29138,-94.438534,197,6523.59112363 +p_1426044,44.291144,-94.438247,198,6558.41046434 +p_1426044,44.290977,-94.438048,199,6582.83615076 +p_1426044,44.291039,-94.437929,200,6594.56944086 +p_1426044,44.291435,-94.437128,201,6672.17930504 +p_1426044,44.291597,-94.436801,202,6703.88388279 +p_1426044,44.290507,-94.435806,203,6848.7158002 +p_1426044,44.289672,-94.434996,204,6961.80136547 +p_1426044,44.288104,-94.433475,205,7174.1573765 +p_1426044,44.287441,-94.432824,206,7264.30948876 +p_1426044,44.287021,-94.432422,207,7320.94528389 +p_1426044,44.286701,-94.43213,208,7363.46081515 +p_1426044,44.286626,-94.432086,209,7372.50444585 +p_1426044,44.285388,-94.432052,210,7510.09508332 +p_1426044,44.285289,-94.432068,211,7521.1696338 +p_1426044,44.285205,-94.432147,212,7532.43397603 +p_1426044,44.284717,-94.43311,213,7626.5035354 +p_1426044,44.284289,-94.433957,214,7709.16431388 +p_1426044,44.284193,-94.4342,215,7731.30088907 +p_1426044,44.284146,-94.434433,216,7750.61884484 +p_1426044,44.284111,-94.434705,217,7772.67612009 +p_1426044,44.284112,-94.434944,218,7791.75401316 +p_1426044,44.284154,-94.435224,219,7814.58634816 +p_1426044,44.284185,-94.435519,220,7838.38456864 +p_1426044,44.284183,-94.43596,221,7873.58693453 +p_1426044,44.285698,-94.436219,222,8043.19509833 +p_1426044,44.28874,-94.436739,223,8383.75429485 +p_1426044,44.288916,-94.436776,224,8403.53276106 +p_1426044,44.289101,-94.436819,225,8424.37410391 +p_1426044,44.289202,-94.436845,226,8435.78725943 +p_1426044,44.289307,-94.436876,227,8447.7141109 +p_1426044,44.289383,-94.4369,228,8456.37360001 +p_1426044,44.28958,-94.436981,229,8479.1985554 +p_1426044,44.289761,-94.437061,230,8500.30014123 +p_1426044,44.289972,-94.43717,231,8525.30805357 +p_1426044,44.290135,-94.437266,232,8544.9743073 +p_1426044,44.290465,-94.437452,233,8584.5343314 +p_1426044,44.290652,-94.437587,234,8607.9408779 +p_1426044,44.290918,-94.437811,235,8642.48459317 +p_1426044,44.291039,-94.437929,236,8658.90022922 +p_1426044,44.291159,-94.438057,237,8675.69807321 +p_1426044,44.291481,-94.438433,238,8722.3969087 +p_1426044,44.291766,-94.438857,239,8768.74423343 +p_1426044,44.292124,-94.439533,240,8835.77685664 +p_1426044,44.29217,-94.439617,241,8844.20731384 +p_1426044,44.292206,-94.439565,242,8849.97152455 +p_1426044,44.292239,-94.439511,243,8855.63020356 +p_1426044,44.292275,-94.439444,244,8862.30824929 +p_1426044,44.292425,-94.439152,245,8890.96013331 +p_1426044,44.292479,-94.439047,246,8901.26701129 +p_1426044,44.292521,-94.438964,247,8909.37022672 +p_1426044,44.292634,-94.439072,248,8924.60041707 +p_1426044,44.292854,-94.439282,249,8954.2401022 +p_1426044,44.292926,-94.439352,250,8963.99815331 +p_1426044,44.292948,-94.439379,251,8967.25692151 +p_1426044,44.292961,-94.439395,252,8969.18495782 +p_1426044,44.293008,-94.439474,253,8977.37204012 +p_1426044,44.293045,-94.439519,254,8982.83115725 +p_1426044,44.293157,-94.439624,255,8997.83479212 +p_1426044,44.293213,-94.439676,256,9005.3143911 +p_1426044,44.293308,-94.439766,257,9018.0826196 +p_1426044,44.293446,-94.439896,258,9036.59712137 +p_1426044,44.293485,-94.439924,259,9041.4729666 +p_1426044,44.293547,-94.439959,260,9048.90703711 +p_1426044,44.293586,-94.439988,261,9053.8199707 +p_1426044,44.293662,-94.440059,262,9063.98985049 +p_1426044,44.293762,-94.440151,263,9077.30840624 +p_1426044,44.293664,-94.440353,264,9096.76311509 +p_1426044,44.293579,-94.440524,265,9113.36013767 +p_1426044,44.293479,-94.440725,266,9132.87448777 +p_1426044,44.293418,-94.440847,267,9144.738264 +p_1426044,44.293195,-94.441311,268,9189.29577446 +p_1426044,44.293148,-94.44141,269,9198.76699838 +p_1426044,44.293218,-94.441523,270,9210.67647137 +p_1426044,44.293414,-94.441826,271,9243.22059686 +p_1426044,44.293487,-94.44194,272,9255.4098407 +p_1426044,44.294039,-94.442664,273,9339.67728795 +p_1426044,44.294197,-94.442834,274,9361.86541877 +p_1426044,44.294344,-94.442979,275,9381.88361227 +p_1426044,44.294444,-94.443077,276,9395.47198336 +p_1426044,44.295006,-94.443598,277,9470.49657788 +p_1426044,44.295552,-94.444116,278,9543.91261039 +p_1426044,44.295996,-94.444525,279,9603.06927205 +p_1426044,44.296596,-94.445109,280,9684.41532799 +p_1426044,44.29696,-94.44545,281,9733.16507357 +p_1426044,44.29755,-94.446012,282,9812.59812642 +p_1426044,44.297942,-94.446387,283,9865.44620148 +p_1426044,44.298524,-94.446943,284,9943.87487364 +p_1426044,44.298908,-94.44731,285,9995.62847623 +p_1426044,44.299475,-94.447854,286,10072.14074354 +p_1426044,44.299883,-94.448245,287,10127.1766911 +p_1426044,44.30031,-94.448646,288,10184.40663767 +p_1426044,44.300453,-94.44878,289,10203.55955784 +p_1426044,44.300857,-94.449163,290,10257.86783703 +p_1426044,44.30146,-94.449733,291,10338.85246911 +p_1426044,44.301835,-94.450087,292,10389.194521 +p_1426044,44.302129,-94.450368,293,10428.81839062 +p_1426044,44.302402,-94.450627,294,10465.52505763 +p_1426044,44.302737,-94.450947,295,10510.66611782 +p_1426044,44.302815,-94.451021,296,10521.1537088 +p_1426044,44.302884,-94.451087,297,10530.45545005 +p_1426044,44.303391,-94.451569,298,10598.66962261 +p_1426044,44.303781,-94.451941,299,10651.19737642 +p_1426044,44.304373,-94.452501,300,10730.72130394 +p_1426044,44.304761,-94.452867,301,10782.79557702 +p_1426044,44.305333,-94.453409,302,10859.6737201 +p_1426044,44.305474,-94.453542,303,10878.59730502 +p_1426044,44.305735,-94.453788,304,10913.6174652 +p_1426044,44.306333,-94.454355,305,10994.00597899 +p_1426044,44.306716,-94.454718,306,11045.48560282 +p_1426044,44.307298,-94.455266,307,11123.55129741 +p_1426044,44.307695,-94.455639,308,11176.7660951 +p_1426044,44.308282,-94.456191,309,11255.4704318 +p_1426044,44.308675,-94.456561,310,11308.18264904 +p_1426044,44.309272,-94.457129,311,11388.5230755 +p_1426044,44.30965,-94.457488,312,11439.36305077 +p_1426044,44.310005,-94.457821,313,11486.9234557 +p_1426044,44.310126,-94.457934,314,11503.11185027 +p_1426044,44.310234,-94.458037,315,11517.65679537 +p_1426044,44.310628,-94.458412,316,11570.68463514 +p_1426044,44.31122,-94.458969,317,11650.07146895 +p_1426044,44.311602,-94.459329,318,11701.32342166 +p_1426044,44.312096,-94.459795,319,11767.62211285 +p_1426044,44.312202,-94.459894,320,11781.80389685 +p_1426044,44.312471,-94.460149,321,11817.96160946 +p_1426044,44.312505,-94.460181,322,11822.52140405 +p_1426044,44.312571,-94.460243,323,11831.36751561 +p_1426044,44.31268,-94.460346,324,11846.00408982 +p_1426044,44.312606,-94.460501,325,11860.85480962 +p_1426044,44.312559,-94.460595,326,11869.99376259 +p_1426044,44.312349,-94.461027,327,11911.61671576 +p_1426044,44.312274,-94.46118,328,11926.3972493 +p_1426044,44.312159,-94.461415,329,11949.08712306 +p_1426044,44.312144,-94.461446,330,11952.06964659 +p_1426044,44.311991,-94.461761,331,11982.4120678 +p_1426044,44.311946,-94.461852,332,11991.22778205 +p_1426044,44.311904,-94.46194,333,11999.65843562 +p_1426044,44.311335,-94.463123,334,12113.26418828 +p_1426044,44.311288,-94.463219,335,12122.53467157 +p_1426044,44.311347,-94.463275,336,12130.46838837 +p_1426044,44.311747,-94.463656,337,12184.3164697 +p_1426044,44.312118,-94.464006,338,12234.10883838 +p_1426044,44.31218,-94.464064,339,12242.4080386 +p_1426044,44.312225,-94.464106,340,12248.42734828 +p_1426044,44.312258,-94.464137,341,12252.85041086 +p_1426044,44.312213,-94.464231,342,12261.8642458 +p_1426044,44.311927,-94.464817,343,12318.39630689 +p_1426044,44.311628,-94.46543,344,12377.52220366 +p_1426044,44.311591,-94.465506,345,12384.84829452 +p_1426044,44.311094,-94.46503,346,12451.87227104 +p_1426044,44.310617,-94.464574,347,12516.16109132 +p_1426044,44.309946,-94.465934,348,12647.81877664 +p_1426044,44.309608,-94.466612,349,12713.67457492 +p_1426044,44.309331,-94.46721,350,12770.4544358 +p_1426044,44.309283,-94.467314,351,12780.31875092 +p_1426044,44.309235,-94.467414,352,12789.91614712 +p_1426044,44.308961,-94.46799,353,12845.04458179 +p_1426044,44.308815,-94.468296,354,12874.35851164 +p_1426044,44.308747,-94.468413,355,12886.36858928 +p_1426044,44.308628,-94.468581,356,12905.1976232 +p_1426044,44.308518,-94.468824,357,12928.11765503 +p_1426044,44.308462,-94.468945,358,12939.60377077 +p_1426044,44.308408,-94.46906,359,12950.56734008 +p_1426044,44.308308,-94.469269,360,12970.60637025 +p_1426044,44.308211,-94.46946,361,12989.27260443 +p_1426044,44.308111,-94.469657,362,13008.52221089 +p_1426044,44.307863,-94.470141,363,13055.96469059 +p_1426044,44.307542,-94.470755,364,13116.56526442 +p_1426044,44.307226,-94.47139,365,13178.21036764 +p_1426044,44.307193,-94.471458,366,13184.7590683 +p_1426044,44.306894,-94.47207,367,13243.82221438 +p_1426044,44.306348,-94.473168,368,13350.39006829 +p_1426044,44.306325,-94.473214,369,13354.86263969 +p_1426044,44.305991,-94.473886,370,13420.07447152 +p_1426044,44.305864,-94.474141,371,13444.8364837 +p_1426044,44.305809,-94.474252,372,13455.59740349 +p_1426044,44.30523,-94.475415,373,13568.51822054 +p_1426044,44.305184,-94.475508,374,13577.5290775 +p_1426044,44.305253,-94.475572,375,13586.74128527 +p_1426044,44.305295,-94.475611,376,13592.35063845 +p_1426044,44.305826,-94.476106,377,13663.3542745 +p_1426044,44.306135,-94.4764,378,13704.9386202 +p_1426044,44.30704,-94.477246,379,13826.0563835 +p_1426044,44.307678,-94.477852,380,13911.86969679 +p_1426044,44.30794,-94.478109,381,13947.47962397 +p_1426044,44.308422,-94.478573,382,14012.58900898 +p_1426044,44.308813,-94.478935,383,14064.76114797 +p_1426044,44.308757,-94.47905,384,14075.84786323 +p_1426044,44.308519,-94.479539,385,14122.98299367 +p_1426044,44.308436,-94.479708,386,14139.31975922 +p_1426044,44.30817,-94.480249,387,14191.63578546 +p_1426044,44.308042,-94.480509,388,14216.78869603 +p_1426044,44.307959,-94.480678,389,14233.12555128 +p_1426044,44.30782,-94.480959,390,14260.35174503 +p_1426044,44.307973,-94.481103,391,14280.87131087 +p_1426044,44.307993,-94.481126,392,14283.75345714 +p_1426044,44.308007,-94.481152,393,14286.34648483 +p_1426044,44.308016,-94.481168,394,14287.9681945 +p_1426044,44.308034,-94.481208,395,14291.73473735 +p_1426044,44.308084,-94.481352,396,14304.49729427 +p_1426044,44.308091,-94.481389,397,14307.55027259 +p_1426044,44.308093,-94.481416,398,14309.71603466 +p_1426044,44.308091,-94.48143,399,14310.85498669 +p_1426044,44.308088,-94.481448,400,14312.32938583 +p_1426044,44.308078,-94.481483,401,14315.33498405 +p_1426044,44.307938,-94.481765,402,14342.68992543 +p_1426044,44.307929,-94.481777,403,14344.07444744 +p_1426044,44.307921,-94.481788,404,14345.32367477 +p_1426044,44.307907,-94.4818,405,14347.15037602 +p_1426044,44.307889,-94.481805,406,14349.18990451 +p_1426044,44.307857,-94.481809,407,14352.7599836 +p_1426044,44.307769,-94.481799,408,14362.57088976 +p_1426044,44.307727,-94.481793,409,14367.26234707 +p_1426044,44.307699,-94.481785,410,14370.43846324 +p_1426044,44.307677,-94.481777,411,14372.96502899 +p_1426044,44.307657,-94.481767,412,14375.32629129 +p_1426044,44.307625,-94.481745,413,14379.29176793 +p_1426044,44.307579,-94.481702,414,14385.44794862 +p_1426044,44.307493,-94.48162,415,14397.02936203 +p_1426044,44.30782,-94.480959,416,14461.07586177 +p_1426044,44.307959,-94.480678,417,14488.30205552 +p_1426044,44.308042,-94.480509,418,14504.63891077 +p_1426044,44.30817,-94.480249,419,14529.79182134 +p_1426044,44.308519,-94.479539,420,14598.44461142 +p_1426044,44.308757,-94.47905,421,14645.57974186 +p_1426044,44.308813,-94.478935,422,14656.66645712 +p_1426044,44.308968,-94.479081,423,14677.45940262 +p_1426044,44.309209,-94.479307,424,14709.74412474 +p_1426044,44.309641,-94.479718,425,14767.87909355 +p_1426044,44.309842,-94.479909,426,14794.9176476 +p_1426044,44.309924,-94.479987,427,14805.95187419 +p_1426044,44.310587,-94.480608,428,14894.73509806 +p_1426044,44.311074,-94.481069,429,14960.16650265 +p_1426044,44.311866,-94.481821,430,15066.67866647 +p_1426044,44.31198,-94.481875,431,15080.05877983 +p_1426044,44.312001,-94.481889,432,15082.64582638 +p_1426044,44.312043,-94.48192,433,15087.92767683 +p_1426044,44.312187,-94.482043,434,15106.6983466 +p_1426044,44.312346,-94.48219,435,15127.90458793 +p_1426044,44.312922,-94.482709,436,15204.13542326 +p_1426044,44.313645,-94.483397,437,15301.43533307 +p_1426044,44.314369,-94.484088,438,15398.96173601 +p_1426044,44.315555,-94.485204,439,15558.00554342 +p_1426044,44.316,-94.485628,440,15617.91638581 +p_1426044,44.316261,-94.48587,441,15652.7567808 +p_1426044,44.316325,-94.48593,442,15661.32925781 +p_1426044,44.3164,-94.486003,443,15671.4964021 +p_1426044,44.316938,-94.486537,444,15744.90453291 +p_1426044,44.317065,-94.486657,445,15761.95735468 +p_1426044,44.317685,-94.487239,446,15845.03618503 +p_1426044,44.317795,-94.487345,447,15859.89930551 +p_1426044,44.317867,-94.487413,448,15869.56559468 +p_1426044,44.317915,-94.487462,449,15876.17838103 +p_1426044,44.317967,-94.487517,450,15883.43366691 +p_1426044,44.317984,-94.487538,451,15885.95854936 +p_1426044,44.318013,-94.487572,452,15890.17058205 +p_1426044,44.318056,-94.487629,453,15896.76662361 +p_1426044,44.31809,-94.487681,454,15902.37755189 +p_1426044,44.318135,-94.487753,455,15909.99304337 +p_1426044,44.318185,-94.487844,456,15919.13474785 +p_1426044,44.318227,-94.487932,457,15927.56478063 +p_1426044,44.318259,-94.488007,458,15934.52484814 +p_1426044,44.318281,-94.488065,459,15939.75795507 +p_1426044,44.318292,-94.488097,460,15942.58832689 +p_1426044,44.318311,-94.488154,461,15947.60178667 +p_1426044,44.318328,-94.488211,462,15952.52578503 +p_1426044,44.318342,-94.488256,463,15956.43828222 +p_1426044,44.318386,-94.488419,464,15970.3305605 +p_1426044,44.318459,-94.488698,465,15994.02011948 +p_1426044,44.318513,-94.488902,466,16011.36535242 +p_1426044,44.318564,-94.489096,467,16027.84678984 +p_1426044,44.31875,-94.489802,468,16087.84089923 +p_1426044,44.318815,-94.490049,469,16108.82748227 +p_1426044,44.318998,-94.490747,470,16168.10746388 +p_1426044,44.319072,-94.491029,471,16192.0597228 +p_1426044,44.319127,-94.491235,472,16209.59300494 +p_1426044,44.319178,-94.491429,473,16226.07429101 +p_1426044,44.319565,-94.492894,474,16350.60472486 +p_1426044,44.319736,-94.49354,475,16405.53034082 +p_1426044,44.319826,-94.493877,476,16434.21407756 +p_1426044,44.319849,-94.493954,477,16440.86714541 +p_1426044,44.319869,-94.494019,478,16446.50863436 +p_1426044,44.319882,-94.494052,479,16449.51146272 +p_1426044,44.319906,-94.494112,480,16454.9907019 +p_1426044,44.319941,-94.494191,481,16462.39627193 +p_1426044,44.319966,-94.494244,482,16467.45524486 +p_1426044,44.319977,-94.494265,483,16469.52900811 +p_1426044,44.320001,-94.49431,484,16474.00102028 +p_1426044,44.320036,-94.494367,485,16479.98446907 +p_1426044,44.320075,-94.494425,486,16486.32389204 +p_1426044,44.320123,-94.494492,487,16493.87475494 +p_1426044,44.320172,-94.494548,488,16500.91768786 +p_1426044,44.320236,-94.494616,489,16509.8620125 +p_1426044,44.320307,-94.494684,490,16519.43641038 +p_1426044,44.320929,-94.495252,491,16602.08067586 +p_1426044,44.32108,-94.495385,492,16621.93257597 +p_1426044,44.3212,-94.495491,493,16637.72191147 +p_1426044,44.321475,-94.495741,494,16674.21150055 +p_1426044,44.321842,-94.496074,495,16722.88071267 +p_1426044,44.321875,-94.496103,496,16727.21636882 +p_1426044,44.321927,-94.496144,497,16733.85595797 +p_1426044,44.321947,-94.49616,498,16736.41876385 +p_1426044,44.322076,-94.496267,499,16753.10189383 +p_1426044,44.322229,-94.496387,500,16772.61270127 +p_1426044,44.322282,-94.496425,501,16779.23632323 +p_1426044,44.322336,-94.496464,502,16785.99527991 +p_1426044,44.322475,-94.496561,503,16803.27056553 +p_1426044,44.322532,-94.496599,504,16810.2923259 +p_1426044,44.322667,-94.49668,505,16826.62571948 +p_1426044,44.322789,-94.49675,506,16841.28715652 +p_1426044,44.322876,-94.496798,507,16851.6851319 +p_1426044,44.322976,-94.496848,508,16863.49112216 +p_1426044,44.323041,-94.496879,509,16871.12542176 +p_1426044,44.323088,-94.496902,510,16876.66088858 +p_1426044,44.323148,-94.496927,511,16883.61986793 +p_1426044,44.323237,-94.496965,512,16893.96354488 +p_1426044,44.323394,-94.497026,513,16912.0750525 +p_1426044,44.32349,-94.49706,514,16923.08181413 +p_1426044,44.323594,-94.497095,515,16934.97061431 +p_1426044,44.323698,-94.497127,516,16946.80550206 +p_1426044,44.323833,-94.497163,517,16962.07890071 +p_1426044,44.323909,-94.49718,518,16970.63209474 +p_1426044,44.323965,-94.497192,519,16976.92792834 +p_1426044,44.323986,-94.497197,520,16979.29525818 +p_1426044,44.324098,-94.497218,521,16991.85276873 +p_1426044,44.324207,-94.497233,522,17004.02365123 +p_1426044,44.324312,-94.497248,523,17015.75229395 +p_1426044,44.324388,-94.497255,524,17024.21574524 +p_1426044,44.324457,-94.497261,525,17031.89785058 +p_1426044,44.324539,-94.497265,526,17041.01515892 +p_1426044,44.324634,-94.497265,527,17051.5714241 +p_1426044,44.324767,-94.497262,528,17066.35213296 +p_1426044,44.32572,-94.497247,529,17172.25491209 +p_1426044,44.325945,-94.497249,530,17197.25710723 +p_1426044,44.326229,-94.497249,531,17228.81479252 +p_1426044,44.32622,-94.495007,532,17407.65165909 +p_1426044,44.326211,-94.49293,533,17573.32747892 +p_1426044,44.326213,-94.492796,534,17584.01835753 +p_1426044,44.326218,-94.492669,535,17594.1637917 +p_1426044,44.326219,-94.492638,536,17596.6390154 +p_1426044,44.326223,-94.492562,537,17602.71746008 +p_1426044,44.326231,-94.492433,538,17613.04552631 +p_1426044,44.326248,-94.492251,539,17627.68521411 +p_1426044,44.326271,-94.492077,540,17641.7977347 +p_1426044,44.32629,-94.491934,541,17653.39792261 +p_1426044,44.326308,-94.491805,542,17663.8802412 +p_1426044,44.326352,-94.491548,543,17684.95489852 +p_1426044,44.326384,-94.491391,544,17697.97306761 +p_1426044,44.326405,-94.491298,545,17705.749591 +p_1426044,44.326442,-94.491145,546,17718.62758741 +p_1426044,44.326485,-94.490986,547,17732.18044175 +p_1426044,44.32654,-94.490806,548,17747.78474967 +p_1426044,44.326585,-94.490668,549,17759.87482241 +p_1426044,44.326598,-94.490629,550,17763.3046879 +p_1426044,44.326651,-94.490481,551,17776.49735597 +p_1426044,44.326728,-94.490285,552,17794.319427 +p_1426044,44.326821,-94.490065,553,17814.68441003 +p_1426044,44.326888,-94.489911,554,17829.04816977 +p_1426044,44.327108,-94.489434,555,17874.27241069 +p_1426044,44.327218,-94.4892,556,17896.58335173 +p_1426044,44.327274,-94.48908,557,17907.99993748 +p_1426044,44.327461,-94.488677,558,17946.27610822 +p_1426044,44.327609,-94.488359,559,17976.50575316 +p_1426044,44.327624,-94.488327,560,17979.55420666 +p_1426044,44.328022,-94.48747,561,18060.9702022 +p_1426044,44.32811,-94.48728,562,18079.00601623 +p_1426044,44.328161,-94.487332,563,18086.02873732 +p_1426044,44.328207,-94.487379,564,18092.36757617 +p_1426044,44.328357,-94.487532,565,18113.02539205 +p_1426044,44.328675,-94.487866,566,18157.27848563 +p_1426044,44.328908,-94.48811,567,18189.6681716 +p_1426044,44.328829,-94.488275,568,18205.48790492 +p_1426044,44.328721,-94.488501,569,18227.14347216 +p_1426044,44.328706,-94.488529,570,18229.93021772 +p_1426044,44.328675,-94.48858,571,18235.26063453 +p_1426044,44.328662,-94.488602,572,18237.53349798 +p_1426044,44.328643,-94.488631,573,18240.66524437 +p_1426044,44.328578,-94.488718,574,18250.68131181 +p_1426044,44.328552,-94.488745,575,18254.28474387 +p_1426044,44.328538,-94.488758,576,18256.15430619 +p_1426044,44.328507,-94.488781,577,18260.05703865 +p_1426044,44.328488,-94.488794,578,18262.40918208 +p_1426044,44.328432,-94.488821,579,18268.99395498 +p_1426044,44.328405,-94.488829,580,18272.06126542 +p_1426044,44.328345,-94.488841,581,18278.79673986 +p_1426044,44.328318,-94.488844,582,18281.80647084 +p_1426044,44.328157,-94.488855,583,18299.71807596 +p_1426044,44.328155,-94.488855,584,18299.94031326 +p_1426044,44.328101,-94.488862,585,18305.96664123 +p_1426044,44.328056,-94.488869,586,18310.99805615 +p_1426044,44.328015,-94.488879,587,18315.62321724 +p_1426044,44.328,-94.488884,588,18317.33704571 +p_1426044,44.327949,-94.488905,589,18323.2464596 +p_1426044,44.327895,-94.488935,590,18329.70639942 +p_1426044,44.327865,-94.488959,591,18333.550515 +p_1426044,44.327821,-94.489003,592,18339.56895675 +p_1426044,44.327785,-94.489052,593,18345.16160959 +p_1426044,44.327744,-94.489118,594,18352.12362053 +p_1426044,44.327706,-94.489185,595,18358.93460305 +p_1426044,44.32766,-94.48927,596,18367.42541821 +p_1426044,44.327574,-94.48945,597,18384.67235939 +p_1426044,44.327431,-94.489748,598,18413.26403431 +p_1426044,44.327207,-94.490213,599,18457.93198551 +p_1426044,44.327153,-94.490325,600,18468.69366567 +p_1426044,44.327041,-94.490558,601,18491.06082645 +p_1426044,44.326943,-94.490761,602,18510.57416244 +p_1426044,44.326852,-94.490962,603,18529.52923501 +p_1426044,44.326792,-94.491118,604,18543.64609198 +p_1426044,44.326734,-94.491277,605,18557.87228118 +p_1426044,44.326728,-94.491292,606,18559.24196997 +p_1426044,44.326681,-94.491444,607,18572.44320499 +p_1426044,44.326657,-94.491536,608,18580.25112702 +p_1426044,44.326622,-94.491689,609,18593.0598616 +p_1426044,44.326579,-94.491918,610,18611.94061918 +p_1426044,44.326551,-94.492127,611,18628.89934656 +p_1426044,44.32653,-94.492318,612,18644.31212885 +p_1426044,44.326513,-94.492537,613,18661.88250813 +p_1426044,44.326507,-94.492688,614,18673.94546649 +p_1426044,44.326506,-94.49275,615,18678.892147 +p_1426044,44.326503,-94.4929,616,18690.86154599 +p_1426044,44.326503,-94.492928,617,18693.09496717 +p_1426044,44.326501,-94.493057,618,18703.38705743 +p_1426044,44.326504,-94.493637,619,18749.65198318 +p_1426044,44.326506,-94.494055,620,18782.99451025 +p_1426044,44.326507,-94.494229,621,18796.87407155 +p_1426044,44.326508,-94.494428,622,18812.74770263 +p_1426044,44.32652,-94.4958,623,18922.19344295 +p_1426044,44.326522,-94.495872,624,18927.94082251 +p_1426044,44.32653,-94.495958,625,18934.85797235 +p_1426044,44.326536,-94.496003,626,18938.50879099 +p_1426044,44.326546,-94.49605,627,18942.41895659 +p_1426044,44.326563,-94.496114,628,18947.86220763 +p_1426044,44.326584,-94.496173,629,18953.115098 +p_1426044,44.326599,-94.496206,630,18956.23068036 +p_1426044,44.32663,-94.496263,631,18961.93483338 +p_1426044,44.326753,-94.496467,632,18983.18528161 +p_1426044,44.326777,-94.496512,633,18987.656964 +p_1426044,44.326793,-94.496547,634,18990.96677705 +p_1426044,44.326816,-94.496607,635,18996.39230704 +p_1426044,44.326837,-94.496674,636,19002.22376984 +p_1426044,44.326856,-94.496759,637,19009.32487143 +p_1426044,44.326867,-94.496852,638,19016.84300232 +p_1426044,44.326872,-94.496976,639,19026.74939824 +p_1426044,44.326875,-94.497327,640,19054.74873627 +p_1426044,44.326875,-94.497468,641,19065.99553611 +p_1426044,44.326874,-94.49766,642,19081.31073063 +p_1426044,44.326871,-94.497751,643,19088.57695467 +p_1426044,44.326867,-94.497807,644,19093.0658287 +p_1426044,44.326855,-94.497907,645,19101.15297057 +p_1426044,44.326844,-94.497965,646,19105.93806191 +p_1426044,44.326824,-94.498034,647,19111.873572 +p_1426044,44.326797,-94.498105,648,19118.28247617 +p_1426044,44.326761,-94.498182,649,19125.61219968 +p_1426044,44.32669,-94.498307,650,19138.32658912 +p_1426044,44.326632,-94.498418,651,19149.27775122 +p_1426044,44.326596,-94.498501,652,19157.01293045 +p_1426044,44.326578,-94.498556,653,19161.83443779 +p_1426044,44.32656,-94.498621,654,19167.39158472 +p_1426044,44.326544,-94.498692,655,19173.32741138 +p_1426044,44.326539,-94.498727,656,19176.17393371 +p_1426044,44.326533,-94.498764,657,19179.19960803 +p_1426044,44.326527,-94.498845,658,19185.69488161 +p_1426044,44.326526,-94.498896,659,19189.76441446 +p_1426044,44.326524,-94.499034,660,19200.77422934 +p_1426044,44.326527,-94.499576,661,19244.00815078 +p_1426044,44.326531,-94.500383,662,19308.38004577 +p_1426044,44.326533,-94.500732,663,19336.21891879 +p_1426044,44.326537,-94.501535,664,19400.27175487 +p_1426044,44.326542,-94.501647,665,19409.22269377 +p_1426044,44.326547,-94.501721,666,19415.15139313 +p_1426044,44.32656,-94.501823,667,19423.41466379 +p_1426044,44.326563,-94.501843,668,19425.04442016 +p_1426044,44.326573,-94.501897,669,19429.49274937 +p_1426044,44.326575,-94.501908,670,19430.39787114 +p_1426044,44.326605,-94.502013,671,19439.41222349 +p_1426044,44.32663,-94.502078,672,19445.29426306 +p_1426044,44.326683,-94.502188,673,19455.86162263 +p_1426044,44.326717,-94.502247,674,19461.89661362 +p_1426044,44.326778,-94.50234,675,19471.94514383 +p_1426044,44.326957,-94.502586,676,19499.88521155 +p_1426044,44.326972,-94.502606,677,19502.19239565 +p_1426044,44.326989,-94.502635,678,19505.17888651 +p_1426044,44.327017,-94.50268,679,19509.92905372 +p_1426044,44.327041,-94.502726,680,19514.46499929 +p_1426044,44.327077,-94.502811,681,19522.33710728 +p_1426044,44.327098,-94.502873,682,19527.80537933 +p_1426044,44.327123,-94.502976,683,19536.47804092 +p_1426044,44.327135,-94.503054,684,19542.8409344 +p_1426044,44.327144,-94.503139,685,19549.69424955 +p_1426044,44.327152,-94.503271,686,19560.26057992 +p_1426044,44.327258,-94.503274,687,19572.04158538 +p_1426044,44.327473,-94.503279,688,19595.93542058 +p_1426044,44.32754,-94.503285,689,19603.39573576 +p_1426044,44.32765,-94.503293,690,19615.63543112 +p_1426044,44.327736,-94.503302,691,19625.21855993 +p_1426044,44.327922,-94.503322,692,19645.9481016 +p_1426044,44.328054,-94.503352,693,19660.80967013 +p_1426044,44.328055,-94.503526,694,19674.68886642 +p_1426044,44.328056,-94.503901,695,19704.60017462 +p_1426044,44.328056,-94.504115,696,19721.66944323 +p_1426044,44.328057,-94.504333,697,19739.05811849 +p_1426044,44.328058,-94.504569,698,19757.88249921 +p_1426044,44.328058,-94.504779,699,19774.63271551 +p_1426044,44.328059,-94.504996,700,19791.94162888 +p_1426044,44.32806,-94.505227,701,19810.3672014 +p_1426044,44.328061,-94.50545,702,19828.15468217 +p_1426044,44.328061,-94.505657,703,19844.66560882 +p_1426044,44.328062,-94.505874,704,19861.97452131 +p_1426044,44.328063,-94.506107,705,19880.55961587 +p_1426044,44.328063,-94.506325,706,19897.94793417 +p_1426044,44.328064,-94.506556,707,19916.37350544 +p_1426044,44.328323,-94.506556,708,19945.15323614 +p_1426044,44.328952,-94.506556,709,20015.04687329 +p_1426044,44.329092,-94.506559,710,20030.60532692 +p_1426044,44.3292,-94.506549,711,20042.63262014 +p_1426044,44.329313,-94.506505,712,20055.67025814 +p_1426044,44.329324,-94.506403,713,20063.8972109 +p_1426044,44.32933,-94.506189,714,20080.97912685 +p_1426044,44.32932,-94.504952,715,20179.6500102 +p_1426044,44.329317,-94.504812,716,20190.82155665 +p_1426044,44.32932,-94.504523,717,20213.87496143 +p_1426044,44.329314,-94.503975,718,20257.58919919 +p_1426044,44.329313,-94.503509,719,20294.7581 +p_1426044,44.329312,-94.503338,720,20308.39772376 +p_1426044,44.329299,-94.500824,721,20508.92269469 +p_1426044,44.329298,-94.50064,722,20523.59918601 +p_1426044,44.329287,-94.49857,723,20688.70952225 +p_1426044,44.329287,-94.498461,724,20697.40350059 +p_1426044,44.329288,-94.4984,725,20702.27020669 +p_1426044,44.329293,-94.498334,726,20707.56368789 +p_1426044,44.329303,-94.498239,727,20715.22204944 +p_1426044,44.329313,-94.498176,728,20720.3684016 +p_1426044,44.329324,-94.498107,729,20726.00602644 +p_1426044,44.329379,-94.49785,730,20747.3963125 +p_1426044,44.329405,-94.497739,731,20756.7092612 +p_1426044,44.329418,-94.497685,732,20761.25214677 +p_1426044,44.329389,-94.497672,733,20764.63730257 +p_1426044,44.328836,-94.497426,734,20829.14257377 +p_1426044,44.328762,-94.497393,735,20837.77636257 +p_1426044,44.328698,-94.497357,736,20845.44577591 +p_1426044,44.32867,-94.497341,737,20848.80866117 +p_1426044,44.328652,-94.497327,738,20851.09940225 +p_1426044,44.328622,-94.497305,739,20854.86660668 +p_1426044,44.328598,-94.497285,740,20857.97415876 +p_1426044,44.32855,-94.49723,741,20864.88019974 +p_1426044,44.328508,-94.497173,742,20871.39563925 +p_1426044,44.328311,-94.496869,743,20904.06280496 +p_1426044,44.328281,-94.496823,744,20909.02009947 +p_1426044,44.328225,-94.496737,745,20918.2815937 +p_1426044,44.328395,-94.496526,746,20943.58148184 +p_1426044,44.328824,-94.496002,747,21006.97922738 +p_1426044,44.329191,-94.495554,748,21061.20022165 +p_1426044,44.329697,-94.494932,749,21136.18460289 +p_1426044,44.329964,-94.494619,750,21174.95939666 +p_1426044,44.330013,-94.494564,751,21181.95154835 +p_1426044,44.330069,-94.494505,752,21189.75324027 +p_1426044,44.330132,-94.494446,753,21198.18838735 +p_1426044,44.330211,-94.494381,754,21208.38338342 +p_1426044,44.330289,-94.494329,755,21217.99188314 +p_1426044,44.330335,-94.494304,756,21223.47850742 +p_1426044,44.330368,-94.494286,757,21227.41645708 +p_1426044,44.330417,-94.494265,758,21233.11307857 +p_1426044,44.330476,-94.494241,759,21239.94282693 +p_1426044,44.330529,-94.494224,760,21245.98619098 +p_1426044,44.33065,-94.494195,761,21259.62905943 +p_1426044,44.330731,-94.494181,762,21268.6986752 +p_1426044,44.330767,-94.494178,763,21272.7060983 +p_1426044,44.330836,-94.494175,764,21280.37702154 +p_1426044,44.330907,-94.494175,765,21288.2664495 +p_1426044,44.330913,-94.493999,766,21302.31986951 +p_1426044,44.330937,-94.493275,767,21360.12696966 +p_1426044,44.330956,-94.492715,768,21404.8418912 +p_1426044,44.330964,-94.492591,769,21414.77187764 +p_1426044,44.330972,-94.492533,770,21419.48253643 +p_1426044,44.330987,-94.492452,771,21426.15456167 +p_1426044,44.330999,-94.492399,772,21430.58710606 +p_1426044,44.331013,-94.49234,773,21435.54335718 +p_1426044,44.331022,-94.492303,774,21438.65928577 +p_1426044,44.331043,-94.492237,775,21444.41739375 +p_1426044,44.331064,-94.492188,776,21448.96921734 +p_1426044,44.331118,-94.492068,777,21460.26568103 +p_1426044,44.331533,-94.491212,778,21542.65358357 +p_1426044,44.33165,-94.490975,779,21565.59556419 +p_1426044,44.331729,-94.490814,780,21581.15037846 +p_1426044,44.331822,-94.490903,781,21593.68754071 +p_1426044,44.332954,-94.491981,782,21746.05045184 +p_1426044,44.333025,-94.49191,783,21755.76174534 +p_1426044,44.333083,-94.491862,784,21763.25790578 +p_1426044,44.333119,-94.491838,785,21767.69255974 +p_1426044,44.333174,-94.491825,786,21773.89141659 +p_1426044,44.333221,-94.491819,787,21779.13587567 +p_1426044,44.333277,-94.491816,788,21785.36312403 +p_1426044,44.333335,-94.491815,789,21791.80850507 +p_1426044,44.333741,-94.491813,790,21836.92300189 +p_1426044,44.335432,-94.491799,791,22024.82816986 +p_1426044,44.336523,-94.491797,792,22146.05888928 +p_1426044,44.336744,-94.49179,793,22170.62249228 +p_1426044,44.337973,-94.491794,794,22307.18790736 +p_1426044,44.33853,-94.491793,795,22369.08115696 +p_1426044,44.338586,-94.491785,796,22375.33643282 +p_1426044,44.33864,-94.49177,797,22381.45492798 +p_1426044,44.338696,-94.491745,798,22387.98917177 +p_1426044,44.338766,-94.491768,799,22395.9808303 +p_1426044,44.338815,-94.491773,800,22401.44023541 +p_1426044,44.339074,-94.491773,801,22430.2200205 +p_1426044,44.340282,-94.491757,802,22564.45768654 +p_1426044,44.340802,-94.491743,803,22622.25029547 +p_1426044,44.341373,-94.491756,804,22685.70765783 +p_1426044,44.341661,-94.491762,805,22717.71348098 +p_1426044,44.342525,-94.491781,806,22813.73218514 +p_1426044,44.342599,-94.491768,807,22822.02007541 +p_1426044,44.342635,-94.491754,808,22826.17322031 +p_1426044,44.342663,-94.491734,809,22829.66949888 +p_1426044,44.3427,-94.491671,810,22836.16121238 +p_1426044,44.342717,-94.491603,811,22841.90335726 +p_1426044,44.34271,-94.491486,812,22851.26566422 +p_1426044,44.342702,-94.491423,813,22856.36752106 +p_1426044,44.342687,-94.491339,814,22863.27020181 +p_1426044,44.342673,-94.491286,815,22867.77380321 +p_1426044,44.342653,-94.491231,816,22872.69059548 +p_1426044,44.342623,-94.491162,817,22879.12392663 +p_1426044,44.341997,-94.489957,818,22997.75001057 +p_1426044,44.341914,-94.489814,819,23012.41626467 +p_1426044,44.341835,-94.489687,820,23025.81875552 +p_1426044,44.341769,-94.489592,821,23036.36279192 +p_1426044,44.341695,-94.489503,822,23047.22490122 +p_1426044,44.34166,-94.48946,823,23052.40985132 +p_1426044,44.341621,-94.489416,824,23057.985854 +p_1426044,44.341599,-94.489392,825,23061.0905351 +p_1426044,44.34154,-94.48933,826,23069.30187645 +p_1426044,44.341153,-94.488969,827,23121.05130851 +p_1426044,44.340433,-94.488284,828,23217.92686596 +p_1426044,44.33949,-94.490213,829,23404.05605054 +p_1426044,44.33936,-94.490471,830,23429.19558281 +p_1426044,44.339338,-94.490516,831,23433.53776024 +p_1426044,44.339296,-94.490599,832,23441.63669443 +p_1426044,44.338823,-94.491564,833,23534.82911697 +p_1426044,44.338791,-94.49162,834,23540.53771376 +p_1426044,44.338767,-94.491659,835,23544.63470909 +p_1426044,44.338732,-94.491704,836,23549.92660759 +p_1426044,44.338696,-94.491745,837,23555.09314335 +p_1426044,44.33864,-94.49177,838,23561.62738714 +p_1426044,44.338586,-94.491785,839,23567.7458823 +p_1426044,44.33853,-94.491793,840,23574.00115816 +p_1426044,44.337973,-94.491794,841,23635.89440776 +p_1426044,44.337813,-94.491793,842,23653.67360115 +p_1426044,44.336744,-94.49179,843,23772.45987007 +p_1426044,44.336523,-94.491797,844,23797.02347307 +p_1426044,44.335432,-94.491799,845,23918.25419249 +p_1426044,44.333741,-94.491813,846,24106.15936046 +p_1426044,44.333335,-94.491815,847,24151.27385728 +p_1426044,44.333277,-94.491816,848,24157.71923832 +p_1426044,44.333221,-94.491819,849,24163.94648668 +p_1426044,44.333174,-94.491825,850,24169.19094576 +p_1426044,44.333119,-94.491838,851,24175.38980261 +p_1426044,44.333083,-94.491862,852,24179.82445657 +p_1426044,44.333025,-94.49191,853,24187.32061701 +p_1426044,44.332954,-94.491981,854,24197.03191051 +p_1426044,44.331822,-94.490903,855,24349.39482164 +p_1426044,44.331729,-94.490814,856,24361.93198389 +p_1426044,44.331064,-94.490183,857,24451.33655903 +p_1426044,44.330969,-94.490092,858,24464.14727538 +p_1426044,44.330399,-94.48955,859,24540.83140533 +p_1426044,44.330014,-94.489179,860,24592.84883859 +p_1426044,44.329668,-94.488854,861,24639.21839312 +p_1426044,44.329385,-94.488579,862,24677.55896567 +p_1426044,44.329049,-94.488248,863,24723.28620989 +p_1426044,44.328908,-94.48811,864,24742.43390842 +p_1426044,44.328675,-94.487866,865,24774.82359439 +p_1426044,44.328357,-94.487532,866,24819.07668797 +p_1426044,44.328207,-94.487379,867,24839.73450385 +p_1426044,44.32811,-94.48728,868,24853.09606215 +p_1426044,44.328199,-94.487092,869,24871.05895809 +p_1426044,44.328292,-94.486898,870,24889.66636823 +p_1426044,44.328899,-94.485666,871,25008.85437904 +p_1426044,44.329487,-94.484471,872,25124.41366917 +p_1426044,44.330052,-94.483311,873,25236.22585556 +p_1426044,44.33015,-94.483106,874,25255.87105466 +p_1426044,44.330067,-94.483029,875,25266.95164124 +p_1426044,44.330035,-94.482999,876,25271.23757461 +p_1426044,44.329664,-94.482653,877,25320.84710107 diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/stop_times.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/stop_times.txt new file mode 100644 index 000000000..7137dea51 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/stop_times.txt @@ -0,0 +1,477 @@ +trip_id,arrival_time,departure_time,stop_id,location_id,stop_sequence,stop_headsign,pickup_type,drop_off_type,shape_dist_traveled,timepoint,continuous_pickup,continuous_drop_off,pickup_booking_rule_id,drop_off_booking_rule_id,start_pickup_drop_off_window,end_pickup_drop_off_window,mean_duration_factor,mean_duration_offset,safe_duration_factor,safe_duration_offset,tts_stop_headsign +t_5374696_b_77497_tn_0,08:00:00,08:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,08:00:00,08:02:22,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:02:22,08:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,08:02:22,08:03:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:03:00,08:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,08:03:00,08:05:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:05:00,08:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,08:05:00,08:08:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:08:00,08:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,08:08:00,08:10:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:10:00,08:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,08:10:00,08:11:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:11:00,08:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,08:11:00,08:19:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:19:00,08:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,08:19:00,08:22:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:22:00,08:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,08:22:00,08:27:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:27:00,08:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,08:27:00,08:29:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:29:00,08:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,08:29:00,08:30:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:30:00,08:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,08:30:00,08:32:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:32:00,08:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,08:32:00,08:39:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:39:00,08:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,08:39:00,08:40:59,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:40:59,08:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,08:40:59,08:43:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:43:00,08:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,08:43:00,08:45:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:45:00,08:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,08:45:00,08:50:00,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:50:00,08:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374696_b_77497_tn_0,08:56:00,08:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:00:00,09:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,09:00:00,09:02:22,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:02:22,09:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,09:02:22,09:03:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:03:00,09:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,09:03:00,09:05:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:05:00,09:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,09:05:00,09:08:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:08:00,09:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,09:08:00,09:10:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:10:00,09:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,09:10:00,09:11:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:11:00,09:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,09:11:00,09:19:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:19:00,09:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,09:19:00,09:22:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:22:00,09:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,09:22:00,09:27:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:27:00,09:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,09:27:00,09:29:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:29:00,09:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,09:29:00,09:30:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:30:00,09:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,09:30:00,09:32:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:32:00,09:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,09:32:00,09:39:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:39:00,09:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,09:39:00,09:40:59,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:40:59,09:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,09:40:59,09:43:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:43:00,09:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,09:43:00,09:45:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:45:00,09:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,09:45:00,09:50:00,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:50:00,09:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374697_b_77497_tn_0,09:56:00,09:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:00:00,10:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,10:00:00,10:02:22,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:02:22,10:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,10:02:22,10:03:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:03:00,10:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,10:03:00,10:05:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:05:00,10:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,10:05:00,10:08:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:08:00,10:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,10:08:00,10:10:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:10:00,10:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,10:10:00,10:11:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:11:00,10:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,10:11:00,10:19:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:19:00,10:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,10:19:00,10:22:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:22:00,10:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,10:22:00,10:27:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:27:00,10:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,10:27:00,10:29:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:29:00,10:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,10:29:00,10:30:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:30:00,10:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,10:30:00,10:32:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:32:00,10:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,10:32:00,10:39:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:39:00,10:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,10:39:00,10:40:59,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:40:59,10:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,10:40:59,10:43:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:43:00,10:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,10:43:00,10:45:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:45:00,10:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,10:45:00,10:50:00,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:50:00,10:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374698_b_77497_tn_0,10:56:00,10:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:00:00,11:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,11:00:00,11:02:22,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:02:22,11:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,11:02:22,11:03:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:03:00,11:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,11:03:00,11:05:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:05:00,11:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,11:05:00,11:08:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:08:00,11:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,11:08:00,11:10:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:10:00,11:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,11:10:00,11:11:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:11:00,11:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,11:11:00,11:19:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:19:00,11:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,11:19:00,11:22:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:22:00,11:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,11:22:00,11:27:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:27:00,11:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,11:27:00,11:29:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:29:00,11:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,11:29:00,11:30:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:30:00,11:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,11:30:00,11:32:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:32:00,11:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,11:32:00,11:39:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:39:00,11:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,11:39:00,11:40:59,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:40:59,11:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,11:40:59,11:43:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:43:00,11:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,11:43:00,11:45:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:45:00,11:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,11:45:00,11:50:00,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:50:00,11:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374699_b_77497_tn_0,11:56:00,11:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:00:00,13:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,13:00:00,13:02:22,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:02:22,13:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,13:02:22,13:03:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:03:00,13:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,13:03:00,13:05:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:05:00,13:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,13:05:00,13:08:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:08:00,13:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,13:08:00,13:10:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:10:00,13:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,13:10:00,13:11:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:11:00,13:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,13:11:00,13:19:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:19:00,13:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,13:19:00,13:22:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:22:00,13:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,13:22:00,13:27:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:27:00,13:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,13:27:00,13:29:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:29:00,13:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,13:29:00,13:30:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:30:00,13:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,13:30:00,13:32:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:32:00,13:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,13:32:00,13:39:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:39:00,13:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,13:39:00,13:40:59,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:40:59,13:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,13:40:59,13:43:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:43:00,13:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,13:43:00,13:45:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:45:00,13:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,13:45:00,13:50:00,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:50:00,13:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374703_b_77497_tn_0,13:56:00,13:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:00:00,14:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,14:00:00,14:02:22,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:02:22,14:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,14:02:22,14:03:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:03:00,14:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,14:03:00,14:05:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:05:00,14:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,14:05:00,14:08:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:08:00,14:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,14:08:00,14:10:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:10:00,14:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,14:10:00,14:11:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:11:00,14:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,14:11:00,14:19:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:19:00,14:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,14:19:00,14:22:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:22:00,14:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,14:22:00,14:27:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:27:00,14:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,14:27:00,14:29:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:29:00,14:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,14:29:00,14:30:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:30:00,14:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,14:30:00,14:32:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:32:00,14:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,14:32:00,14:39:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:39:00,14:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,14:39:00,14:40:59,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:40:59,14:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,14:40:59,14:43:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:43:00,14:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,14:43:00,14:45:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:45:00,14:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,14:45:00,14:50:00,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:50:00,14:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374704_b_77497_tn_0,14:56:00,14:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:00:00,15:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,15:00:00,15:02:22,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:02:22,15:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,15:02:22,15:03:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:03:00,15:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,15:03:00,15:05:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:05:00,15:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,15:05:00,15:08:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:08:00,15:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,15:08:00,15:10:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:10:00,15:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,15:10:00,15:11:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:11:00,15:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,15:11:00,15:19:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:19:00,15:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,15:19:00,15:22:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:22:00,15:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,15:22:00,15:27:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:27:00,15:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,15:27:00,15:29:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:29:00,15:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,15:29:00,15:30:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:30:00,15:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,15:30:00,15:32:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:32:00,15:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,15:32:00,15:39:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:39:00,15:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,15:39:00,15:40:59,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:40:59,15:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,15:40:59,15:43:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:43:00,15:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,15:43:00,15:45:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:45:00,15:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,15:45:00,15:50:00,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:50:00,15:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374705_b_77497_tn_0,15:56:00,15:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5374944_b_77497_tn_0,,,,area_715,1,,2,1,,0,1,1,booking_route_74362,booking_route_74362,06:15:00,08:00:00,1,30.0,1,60.0, +t_5374944_b_77497_tn_0,,,,area_715,2,,1,2,,0,1,1,booking_route_74362,booking_route_74362,06:15:00,08:00:00,1,30.0,1,60.0, +t_5374945_b_77497_tn_0,,,,area_708,1,,2,1,,0,1,1,booking_route_74362,booking_route_74362,08:00:00,17:00:00,1,30.0,1,60.0, +t_5374945_b_77497_tn_0,,,,area_708,2,,1,2,,0,1,1,booking_route_74362,booking_route_74362,08:00:00,17:00:00,1,30.0,1,60.0, +t_5374946_b_77497_tn_0,,,,area_715,1,,2,1,,0,1,1,booking_route_74362,booking_route_74362,17:00:00,17:45:00,1,30.0,1,60.0, +t_5374946_b_77497_tn_0,,,,area_715,2,,1,2,,0,1,1,booking_route_74362,booking_route_74362,17:00:00,17:45:00,1,30.0,1,60.0, +t_5374947_b_77497_tn_0,,,,area_715,1,,2,1,,0,1,1,booking_route_74362,booking_route_74362,08:00:00,12:00:00,1,30.0,1,60.0, +t_5374947_b_77497_tn_0,,,,area_715,2,,1,2,,0,1,1,booking_route_74362,booking_route_74362,08:00:00,12:00:00,1,30.0,1,60.0, +t_5582676_b_77497_tn_0,07:00:00,07:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,07:00:00,07:02:22,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:02:22,07:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,07:02:22,07:03:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:03:00,07:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,07:03:00,07:05:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:05:00,07:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,07:05:00,07:08:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:08:00,07:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,07:08:00,07:10:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:10:00,07:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,07:10:00,07:11:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:11:00,07:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,07:11:00,07:19:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:19:00,07:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,07:19:00,07:22:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:22:00,07:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,07:22:00,07:27:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:27:00,07:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,07:27:00,07:29:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:29:00,07:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,07:29:00,07:30:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:30:00,07:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,07:30:00,07:32:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:32:00,07:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,07:32:00,07:39:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:39:00,07:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,07:39:00,07:40:59,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:40:59,07:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,07:40:59,07:43:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:43:00,07:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,07:43:00,07:45:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:45:00,07:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,07:45:00,07:50:00,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:50:00,07:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582676_b_77497_tn_0,07:56:00,07:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:00:00,16:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,16:00:00,16:02:22,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:02:22,16:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,16:02:22,16:03:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:03:00,16:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,16:03:00,16:05:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:05:00,16:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,16:05:00,16:08:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:08:00,16:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,16:08:00,16:10:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:10:00,16:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,16:10:00,16:11:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:11:00,16:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,16:11:00,16:19:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:19:00,16:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,16:19:00,16:22:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:22:00,16:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,16:22:00,16:27:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:27:00,16:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,16:27:00,16:29:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:29:00,16:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,16:29:00,16:30:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:30:00,16:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,16:30:00,16:32:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:32:00,16:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,16:32:00,16:39:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:39:00,16:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,16:39:00,16:40:59,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:40:59,16:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,16:40:59,16:43:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:43:00,16:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,16:43:00,16:45:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:45:00,16:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,16:45:00,16:50:00,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:50:00,16:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582677_b_77497_tn_0,16:56:00,16:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:00:00,10:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,10:00:00,10:02:22,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:02:22,10:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,10:02:22,10:03:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:03:00,10:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,10:03:00,10:05:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:05:00,10:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,10:05:00,10:08:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:08:00,10:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,10:08:00,10:10:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:10:00,10:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,10:10:00,10:11:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:11:00,10:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,10:11:00,10:19:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:19:00,10:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,10:19:00,10:22:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:22:00,10:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,10:22:00,10:27:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:27:00,10:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,10:27:00,10:29:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:29:00,10:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,10:29:00,10:30:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:30:00,10:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,10:30:00,10:32:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:32:00,10:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,10:32:00,10:39:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:39:00,10:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,10:39:00,10:40:59,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:40:59,10:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,10:40:59,10:43:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:43:00,10:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,10:43:00,10:45:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:45:00,10:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,10:45:00,10:50:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:50:00,10:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_1,10:56:00,10:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:00:00,11:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,11:00:00,11:02:22,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:02:22,11:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,11:02:22,11:03:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:03:00,11:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,11:03:00,11:05:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:05:00,11:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,11:05:00,11:08:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:08:00,11:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,11:08:00,11:10:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:10:00,11:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,11:10:00,11:11:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:11:00,11:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,11:11:00,11:19:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:19:00,11:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,11:19:00,11:22:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:22:00,11:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,11:22:00,11:27:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:27:00,11:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,11:27:00,11:29:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:29:00,11:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,11:29:00,11:30:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:30:00,11:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,11:30:00,11:32:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:32:00,11:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,11:32:00,11:39:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:39:00,11:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,11:39:00,11:40:59,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:40:59,11:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,11:40:59,11:43:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:43:00,11:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,11:43:00,11:45:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:45:00,11:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,11:45:00,11:50:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:50:00,11:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_2,11:56:00,11:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:00:00,12:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,12:00:00,12:02:22,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:02:22,12:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,12:02:22,12:03:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:03:00,12:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,12:03:00,12:05:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:05:00,12:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,12:05:00,12:08:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:08:00,12:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,12:08:00,12:10:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:10:00,12:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,12:10:00,12:11:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:11:00,12:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,12:11:00,12:19:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:19:00,12:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,12:19:00,12:22:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:22:00,12:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,12:22:00,12:27:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:27:00,12:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,12:27:00,12:29:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:29:00,12:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,12:29:00,12:30:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:30:00,12:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,12:30:00,12:32:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:32:00,12:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,12:32:00,12:39:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:39:00,12:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,12:39:00,12:40:59,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:40:59,12:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,12:40:59,12:43:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:43:00,12:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,12:43:00,12:45:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:45:00,12:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,12:45:00,12:50:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:50:00,12:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_3,12:56:00,12:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:00:00,13:00:00,4149546,,1,Oakwood Estates,0,0,0.0,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149546_s_4149547,2,,1,3,,0,,,booking_route_74513,booking_route_74513,13:00:00,13:02:22,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:02:22,13:02:22,4149547,,3,Oakwood Estates,0,0,1221.62711360848,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149547_s_4149548,4,,1,3,,0,,,booking_route_74513,booking_route_74513,13:02:22,13:03:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:03:00,13:03:00,4149548,,5,Oakwood Estates,0,0,1548.21635580622,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149548_s_4149549,6,,1,3,,0,,,booking_route_74513,booking_route_74513,13:03:00,13:05:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:05:00,13:05:00,4149549,,7,Oakwood Estates,0,0,2513.60637023167,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149549_s_4149550,8,,1,3,,0,,,booking_route_74513,booking_route_74513,13:05:00,13:08:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:08:00,13:08:00,4149550,,9,Oakwood Estates,0,0,2915.16956816462,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149550_s_4149551,10,,1,3,,0,,,booking_route_74513,booking_route_74513,13:08:00,13:10:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:10:00,13:10:00,4149551,,11,Oakwood Estates,0,0,3279.78097062954,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149551_s_4149552,12,,1,3,,0,,,booking_route_74513,booking_route_74513,13:10:00,13:11:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:11:00,13:11:00,4149552,,13,Oakwood Estates,0,0,3599.78460535105,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149552_s_4149553,14,,1,3,,0,,,booking_route_74513,booking_route_74513,13:11:00,13:19:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:19:00,13:19:00,4149553,,15,Oakwood Estates,0,0,7264.30948874952,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149553_s_4149554,16,,1,3,,0,,,booking_route_74513,booking_route_74513,13:19:00,13:22:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:22:00,13:22:00,4149554,,17,Aldi / Walmart,0,0,8967.25692149356,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149554_s_4149555,18,,1,3,,0,,,booking_route_74513,booking_route_74513,13:22:00,13:27:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:27:00,13:27:00,4149555,,19,Aldi / Walmart,0,0,12234.1088383589,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149555_s_4149556,20,,1,3,,0,,,booking_route_74513,booking_route_74513,13:27:00,13:29:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:29:00,13:29:00,4149556,,21,Aldi / Walmart,0,0,13350.3900682553,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149556_s_4149557,22,,1,3,,0,,,booking_route_74513,booking_route_74513,13:29:00,13:30:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:30:00,13:30:00,4149557,,23,Aldi / Walmart,0,0,14139.3197591783,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149557_s_4149558,24,,1,3,,0,,,booking_route_74513,booking_route_74513,13:30:00,13:32:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:32:00,13:32:00,4149558,,25,Aldi / Walmart,0,0,14310.8549866517,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149558_s_4149560,26,,1,3,,0,,,booking_route_74513,booking_route_74513,13:32:00,13:39:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:39:00,13:39:00,4149560,,27,Aldi / Walmart,0,0,18413.2640342851,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149560_s_4149561,28,,1,3,,0,,,booking_route_74513,booking_route_74513,13:39:00,13:40:59,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:40:59,13:40:59,4149561,,29,Aldi / Walmart,0,0,19176.1739337079,0,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149561_s_4149562,30,,1,3,,0,,,booking_route_74513,booking_route_74513,13:40:59,13:43:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:43:00,13:43:00,4149562,,31,Aldi / Walmart,0,0,19945.1532361354,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149562_s_4149563,32,,1,3,,0,,,booking_route_74513,booking_route_74513,13:43:00,13:45:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:45:00,13:45:00,4149563,,33,Heartland Express / DMV ,0,0,21223.4785074085,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,,,,radius_300_s_4149563_s_4210601,34,,1,3,,0,,,booking_route_74513,booking_route_74513,13:45:00,13:50:00,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:50:00,13:50:00,4210601,,35,Heartland Express / DMV ,0,0,23429.1955827843,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, +t_5582678_b_77497_tn_4,13:56:00,13:56:00,4149564,,36,Heartland Express / DMV ,0,0,25320.84710107,1,1,1,booking_route_74513,booking_route_74513,,,1,5.0,1,10.0, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/stops.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/stops.txt new file mode 100644 index 000000000..192c0c5dc --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/stops.txt @@ -0,0 +1,21 @@ +stop_id,stop_code,platform_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,stop_url,location_type,parent_station,stop_timezone,position,direction,wheelchair_boarding,tts_stop_name +4147510,,,Brown County Offices,,44.311175804922,-94.4615214245476,,,0,,America/Chicago,,,0, +4149546,,,Linderhof/Hillside Apartments,,44.3244403726866,-94.4832557975509,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149547,,,Oak Hills Living Center,,44.315809075239,-94.4774795762031,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149548,,,New Ulm Medical Center,,44.3134844379331,-94.4761953323972,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149549,,,St. Michael's,,44.3168886001971,-94.4662504029752,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149550,,,Broadway Haus,,44.3156026577971,-94.4629292109348,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149551,,,Downtown I,,44.3144054205273,-94.4600591933422,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149552,,,Downtown II,,44.3120173123428,-94.4578170057494,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149553,,,Oakwood Estates,,44.2874149536113,-94.4329113488943,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149554,,,HyVee,,44.2929254877207,-94.4394140088622,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149555,,,Emerson Union / Courthouse,,44.3121524043615,-94.4639345582956,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149556,,,Hermann Heights / Martin Luther College,,44.3063995950563,-94.4732186548907,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149557,,,Highland Regency,,44.3084939606084,-94.4797643063817,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149558,,,Sunset Apartments,,44.3080735626766,-94.4814244456242,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149560,,,Cash Wise Foods,,44.3274772503953,-94.4897919754112,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149561,,,Aldi,,44.3266453726204,-94.4987593411561,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149562,,,Walmart,,44.3283230814749,-94.5065654828155,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149563,,,Skyline Terrace / Orchard Hill,,44.3303167356009,-94.4942366508573,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4149564,,,Heartland Express / DMV,,44.3298515852333,-94.4821553131434,,https://newulmmn.gov/553/Hermann-Express-City-Bus-Service,0,,America/Chicago,,,0, +4210601,,,Ridgeway on 23rd / Traulich Estates,,44.3393958836996,-94.4905727129149,,,0,,America/Chicago,,,0, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/trips.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/trips.txt new file mode 100644 index 000000000..f79e291a0 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/trips.txt @@ -0,0 +1,18 @@ +route_id,service_id,trip_id,trip_short_name,trip_headsign,direction_id,block_id,shape_id,bikes_allowed,wheelchair_accessible,trip_type,continuous_pickup_message,continuous_drop_off_message,tts_trip_headsign,tts_trip_short_name +74362,c_67295_b_77497_d_31,t_5374945_b_77497_tn_0,,,0,,,,,,,,, +74362,c_67295_b_77497_d_31,t_5374946_b_77497_tn_0,,,0,,,,,,,,, +74362,c_67295_b_77497_d_31,t_5374944_b_77497_tn_0,,,0,,,,,,,,, +74362,c_67295_b_77497_d_64,t_5374947_b_77497_tn_0,,,0,,,,,,,,, +74513,c_67295_b_77497_d_31,t_5374704_b_77497_tn_0,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_31,t_5374699_b_77497_tn_0,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_31,t_5374698_b_77497_tn_0,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_31,t_5374697_b_77497_tn_0,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_31,t_5374696_b_77497_tn_0,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_31,t_5374703_b_77497_tn_0,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_31,t_5582677_b_77497_tn_0,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_31,t_5582676_b_77497_tn_0,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_31,t_5374705_b_77497_tn_0,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_32,t_5582678_b_77497_tn_4,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_32,t_5582678_b_77497_tn_1,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_32,t_5582678_b_77497_tn_2,,,0,1296530.0,p_1426044,,,,,,, +74513,c_67295_b_77497_d_32,t_5582678_b_77497_tn_3,,,0,1296530.0,p_1426044,,,,,,, From 9e81f735abe03ff9efd61851a62a195a04c3cc0b Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Thu, 23 Nov 2023 13:20:18 +0100 Subject: [PATCH 103/123] Add getLocation --- .../main/java/org/onebusaway/gtfs/impl/StopTimeArray.java | 5 +++++ .../src/main/java/org/onebusaway/gtfs/model/StopTime.java | 7 +++++++ .../main/java/org/onebusaway/gtfs/model/StopTimeProxy.java | 3 +++ 3 files changed, 15 insertions(+) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java index 28b304459..c03a8e1c7 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java @@ -258,6 +258,11 @@ public StopLocation getStop() { return stops[index]; } + @Override + public StopLocation getLocation() { + return stops[index]; + } + @Override public void setStop(StopLocation stop) { stops[index] = stop; diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index bb122bf16..4db4c7851 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -282,6 +282,13 @@ public StopLocation getStop() { return Objects.requireNonNullElse(stop, location); } + public StopLocation getLocation() { + if (proxy != null) { + return proxy.getLocation(); + } + return location; + } + public void setStop(StopLocation stop) { if (proxy != null) { proxy.setStop(stop); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java index 728dc0a01..1cbc75afa 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java @@ -45,6 +45,8 @@ public interface StopTimeProxy { public StopLocation getStop(); + public StopLocation getLocation(); + public void setStop(StopLocation stop); public void setLocation(StopLocation stop); @@ -124,4 +126,5 @@ public interface StopTimeProxy { public String getFreeRunningFlag(); public void setFreeRunningFlag(String freeRunningFlag); + } From 4a6ba898bd7f8578999785a670ed4363fce22fea Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Thu, 23 Nov 2023 13:25:52 +0100 Subject: [PATCH 104/123] Use two separate methods for stop and location --- .../org/onebusaway/gtfs/model/StopTime.java | 13 +- .../gtfs/serialization/FlexReaderTest.java | 4 +- .../gtfs/brown-county-flex/shapes.txt | 878 ------------------ 3 files changed, 13 insertions(+), 882 deletions(-) delete mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/shapes.txt diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index 4db4c7851..20430db1a 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -279,7 +279,7 @@ public StopLocation getStop() { if (proxy != null) { return proxy.getStop(); } - return Objects.requireNonNullElse(stop, location); + return stop; } public StopLocation getLocation() { @@ -289,6 +289,15 @@ public StopLocation getLocation() { return location; } + /** + * Returns possible entity for the stop location in this order: + * - stop + * - location + */ + public StopLocation getStopLocation(){ + return Objects.requireNonNullElseGet(getStop(), this::getLocation); + } + public void setStop(StopLocation stop) { if (proxy != null) { proxy.setStop(stop); @@ -698,7 +707,7 @@ public String displayArrival() { @Override public String toString() { - return "StopTime(seq=" + getStopSequence() + " stop=" + (getStop()==null?"NuLl":getStop().getId()) + return "StopTime(seq=" + getStopSequence() + " stop=" + (getStopLocation()==null?"NuLl":getStop().getId()) + " trip=" + (getTrip()==null?"NuLl":getTrip().getId()) + " times=" + StopTimeFieldMappingFactory.getSecondsAsString(getArrivalTime()) + "-" diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java index 40f24a602..12d7fcd37 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java @@ -89,9 +89,9 @@ public void locationIdAsASeparateColumn() throws CsvEntityIOException, IOExcepti var dao = processFeed(GtfsTestData.getBrownCountyFlex(), AGENCY_ID, false); var trip = dao.getAllTrips().stream().filter(t -> t.getId().getId().equals("t_5374696_b_77497_tn_0")).findAny().get(); var stopTimes = dao.getStopTimesForTrip(trip); - stopTimes.forEach(st -> assertNotNull(st.getStop())); + stopTimes.forEach(st -> assertNotNull(st.getStopLocation())); - var stopLocations = stopTimes.stream().map(StopTime::getStop).collect(Collectors.toList()); + var stopLocations = stopTimes.stream().map(StopTime::getStopLocation).collect(Collectors.toList()); var first = stopLocations.get(0); assertEquals("4149546", first.getId().getId()); assertEquals(Stop.class, first.getClass()); diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/shapes.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/shapes.txt deleted file mode 100644 index 3d5f78f3a..000000000 --- a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/shapes.txt +++ /dev/null @@ -1,878 +0,0 @@ -shape_id,shape_pt_lat,shape_pt_lon,shape_pt_sequence,shape_dist_traveled -p_1426044,44.324414,-94.483311,1,0 -p_1426044,44.324357,-94.483257,2,7.65968508 -p_1426044,44.324285,-94.483405,3,21.92090165 -p_1426044,44.324213,-94.483551,4,36.0503469 -p_1426044,44.324148,-94.483488,5,44.84933003 -p_1426044,44.323693,-94.483051,6,106.26062273 -p_1426044,44.323314,-94.482686,7,157.45934174 -p_1426044,44.323243,-94.482618,8,167.03358608 -p_1426044,44.323174,-94.482547,9,176.56576387 -p_1426044,44.322687,-94.482048,10,243.74355807 -p_1426044,44.322287,-94.481632,11,299.21233526 -p_1426044,44.321321,-94.480711,12,429.28825529 -p_1426044,44.321087,-94.4805,13,460.26250686 -p_1426044,44.320976,-94.480396,14,475.1272489 -p_1426044,44.320897,-94.480326,15,485.53117143 -p_1426044,44.320768,-94.480215,16,502.37987449 -p_1426044,44.320321,-94.479836,17,560.52797316 -p_1426044,44.320027,-94.479575,18,599.267661 -p_1426044,44.319615,-94.479191,19,654.35195454 -p_1426044,44.319399,-94.478982,20,683.57627975 -p_1426044,44.31933,-94.478915,21,692.92259412 -p_1426044,44.319151,-94.478742,22,717.13187867 -p_1426044,44.318429,-94.478056,23,814.24722748 -p_1426044,44.318353,-94.477984,24,824.46046245 -p_1426044,44.317373,-94.477057,25,956.09408084 -p_1426044,44.316468,-94.476194,26,1077.96638837 -p_1426044,44.316399,-94.47613,27,1087.17806971 -p_1426044,44.316351,-94.476229,28,1096.70844933 -p_1426044,44.315744,-94.477466,29,1216.24276123 -p_1426044,44.315774,-94.477519,30,1221.62711361 -p_1426044,44.315744,-94.477466,31,1227.01146599 -p_1426044,44.315452,-94.478061,32,1284.5100345 -p_1426044,44.315386,-94.477999,33,1293.35601381 -p_1426044,44.315073,-94.477704,34,1335.35074942 -p_1426044,44.314772,-94.477419,35,1375.79418869 -p_1426044,44.314339,-94.477011,36,1433.88491856 -p_1426044,44.314272,-94.476947,37,1442.91256772 -p_1426044,44.313936,-94.476629,38,1488.0526686 -p_1426044,44.313606,-94.476317,39,1532.37236552 -p_1426044,44.313582,-94.476291,40,1535.75096739 -p_1426044,44.313565,-94.476271,41,1538.22371282 -p_1426044,44.313542,-94.476241,42,1541.72520568 -p_1426044,44.313524,-94.47621,43,1544.90601419 -p_1426044,44.313508,-94.476175,44,1548.21635581 -p_1426044,44.313499,-94.476155,45,1550.09950196 -p_1426044,44.313488,-94.476123,46,1552.93006077 -p_1426044,44.313461,-94.47604,47,1560.19996988 -p_1426044,44.313405,-94.475856,48,1576.14438192 -p_1426044,44.313388,-94.475807,49,1580.48620654 -p_1426044,44.313365,-94.475751,50,1585.63337045 -p_1426044,44.313326,-94.475671,51,1593.3481737 -p_1426044,44.313294,-94.475615,52,1599.05827439 -p_1426044,44.313281,-94.47558,53,1602.20219037 -p_1426044,44.313265,-94.475527,54,1606.78924779 -p_1426044,44.313257,-94.475487,55,1610.1020632 -p_1426044,44.313244,-94.475398,56,1617.3481964 -p_1426044,44.313222,-94.475253,57,1629.17220443 -p_1426044,44.313205,-94.475135,58,1638.77425056 -p_1426044,44.313189,-94.475067,59,1644.48338633 -p_1426044,44.313172,-94.475008,60,1649.55547883 -p_1426044,44.313161,-94.474978,61,1652.24301164 -p_1426044,44.313139,-94.47493,62,1656.78634206 -p_1426044,44.313115,-94.474885,63,1661.25868816 -p_1426044,44.313093,-94.474857,64,1664.57026318 -p_1426044,44.313051,-94.474808,65,1670.65827274 -p_1426044,44.31297,-94.474734,66,1681.42244367 -p_1426044,44.312863,-94.474636,67,1695.6526017 -p_1426044,44.312836,-94.474611,68,1699.25531686 -p_1426044,44.312769,-94.47455,69,1708.14984984 -p_1426044,44.312877,-94.474335,70,1729.08451666 -p_1426044,44.312965,-94.474165,71,1745.80508505 -p_1426044,44.313042,-94.474024,72,1759.93863382 -p_1426044,44.313092,-94.473937,73,1768.82951016 -p_1426044,44.313164,-94.473817,74,1781.306266 -p_1426044,44.31334,-94.473547,75,1810.40097268 -p_1426044,44.313395,-94.473457,76,1819.8301559 -p_1426044,44.31346,-94.473342,77,1831.50698102 -p_1426044,44.313525,-94.473226,78,1843.24659084 -p_1426044,44.313829,-94.472609,79,1902.94803253 -p_1426044,44.314162,-94.471931,80,1968.48537971 -p_1426044,44.314499,-94.471249,81,2034.53708373 -p_1426044,44.314827,-94.470573,82,2099.62958385 -p_1426044,44.315168,-94.469886,83,2166.26151923 -p_1426044,44.315505,-94.469205,84,2232.24675711 -p_1426044,44.315839,-94.468522,85,2298.17494695 -p_1426044,44.316122,-94.46794,86,2354.2532148 -p_1426044,44.316167,-94.467847,87,2363.20037014 -p_1426044,44.316213,-94.467753,88,2372.2759035 -p_1426044,44.316501,-94.46716,89,2429.39209566 -p_1426044,44.316785,-94.466575,90,2485.7304237 -p_1426044,44.316827,-94.466488,91,2494.09427377 -p_1426044,44.316878,-94.466383,92,2504.20785303 -p_1426044,44.316926,-94.466286,93,2513.60637024 -p_1426044,44.31716,-94.465805,94,2559.95923221 -p_1426044,44.317414,-94.465283,95,2610.26639711 -p_1426044,44.317433,-94.465244,96,2614.02640618 -p_1426044,44.317487,-94.465134,97,2624.65721963 -p_1426044,44.316898,-94.464578,98,2703.72066452 -p_1426044,44.31651,-94.464211,99,2755.83641657 -p_1426044,44.315898,-94.463628,100,2838.22510326 -p_1426044,44.31561,-94.463354,101,2876.98045331 -p_1426044,44.315531,-94.463279,102,2887.60408928 -p_1426044,44.315601,-94.463127,103,2902.0108487 -p_1426044,44.315647,-94.463034,104,2911.02063014 -p_1426044,44.315668,-94.462991,105,2915.16956817 -p_1426044,44.315773,-94.462774,106,2936.04636684 -p_1426044,44.315922,-94.462469,107,2965.47772325 -p_1426044,44.316205,-94.461888,108,3021.48989968 -p_1426044,44.31626,-94.461775,109,3032.38123653 -p_1426044,44.316189,-94.461708,110,3041.91086503 -p_1426044,44.316033,-94.461559,111,3062.92959098 -p_1426044,44.315366,-94.460925,112,3152.66000209 -p_1426044,44.315282,-94.460845,113,3163.96742283 -p_1426044,44.315203,-94.460771,114,3174.54634818 -p_1426044,44.31442,-94.460029,115,3279.78097063 -p_1426044,44.314391,-94.460002,116,3283.65707902 -p_1426044,44.314311,-94.459925,117,3294.46269321 -p_1426044,44.314227,-94.459846,118,3305.72533673 -p_1426044,44.31381,-94.459452,119,3361.71784133 -p_1426044,44.313411,-94.459072,120,3415.42857676 -p_1426044,44.313337,-94.459001,121,3425.4136276 -p_1426044,44.313232,-94.458901,122,3439.54805604 -p_1426044,44.31316,-94.458833,123,3449.21457947 -p_1426044,44.312753,-94.458447,124,3503.92960223 -p_1426044,44.312345,-94.458059,125,3558.82644501 -p_1426044,44.312262,-94.45798,126,3569.99728804 -p_1426044,44.31219,-94.457912,127,3579.6638605 -p_1426044,44.312114,-94.45783,128,3590.34655554 -p_1426044,44.312044,-94.457763,129,3599.78460537 -p_1426044,44.311818,-94.457548,130,3630.19677898 -p_1426044,44.311367,-94.457136,131,3690.12996279 -p_1426044,44.311288,-94.457061,132,3700.75383618 -p_1426044,44.311232,-94.457174,133,3711.70853506 -p_1426044,44.310954,-94.457743,134,3766.61976189 -p_1426044,44.310695,-94.458274,135,3817.83684553 -p_1426044,44.310675,-94.458315,136,3821.79158425 -p_1426044,44.310628,-94.458412,137,3831.12816744 -p_1426044,44.310558,-94.458556,138,3845.00278438 -p_1426044,44.310003,-94.458033,139,3919.46450002 -p_1426044,44.30958,-94.457632,140,3976.32359521 -p_1426044,44.309019,-94.457105,141,4051.51680695 -p_1426044,44.308602,-94.456713,142,4107.4214008 -p_1426044,44.308119,-94.456255,143,4172.35151801 -p_1426044,44.30803,-94.456171,144,4184.29824754 -p_1426044,44.307623,-94.455783,145,4239.10473079 -p_1426044,44.307043,-94.455226,146,4317.39172105 -p_1426044,44.30684,-94.455032,147,4344.74926319 -p_1426044,44.306651,-94.45485,148,4370.28253952 -p_1426044,44.306065,-94.454293,149,4449.11970235 -p_1426044,44.305672,-94.45392,150,4501.96707892 -p_1426044,44.305087,-94.453367,151,4580.53319229 -p_1426044,44.304698,-94.453,152,4632.74412628 -p_1426044,44.304121,-94.452449,153,4710.48637956 -p_1426044,44.303722,-94.452069,154,4764.1998682 -p_1426044,44.303153,-94.45153,155,4840.66838819 -p_1426044,44.302824,-94.451218,156,4884.8987003 -p_1426044,44.302751,-94.45115,157,4894.65791113 -p_1426044,44.30267,-94.451073,158,4905.5557917 -p_1426044,44.302159,-94.450588,159,4974.27230663 -p_1426044,44.301771,-94.45022,160,5026.43696371 -p_1426044,44.301198,-94.449679,161,5103.3636252 -p_1426044,44.300794,-94.449297,162,5157.62693799 -p_1426044,44.300383,-94.448914,163,5212.57993813 -p_1426044,44.300179,-94.448722,164,5239.94044321 -p_1426044,44.299817,-94.448384,165,5288.37140867 -p_1426044,44.299238,-94.447834,166,5366.25405508 -p_1426044,44.298839,-94.447455,167,5419.92391908 -p_1426044,44.298535,-94.447162,168,5461.00686596 -p_1426044,44.298254,-94.446892,169,5498.9438626 -p_1426044,44.297874,-94.446527,170,5550.24100859 -p_1426044,44.297276,-94.445965,171,5630.40918504 -p_1426044,44.296887,-94.445599,172,5682.57752394 -p_1426044,44.296285,-94.445027,173,5763.56204598 -p_1426044,44.295909,-94.44467,174,5814.13206751 -p_1426044,44.295487,-94.444269,175,5870.90355931 -p_1426044,44.295272,-94.444065,176,5899.81393993 -p_1426044,44.294934,-94.443744,177,5945.27698723 -p_1426044,44.294346,-94.443186,178,6024.34758713 -p_1426044,44.294238,-94.443081,179,6038.98455208 -p_1426044,44.294101,-94.44294,180,6057.91536822 -p_1426044,44.293974,-94.44281,181,6075.43085595 -p_1426044,44.2937,-94.44249,182,6115.17023228 -p_1426044,44.293685,-94.442473,183,6117.31940014 -p_1426044,44.29362,-94.442392,184,6127.01257541 -p_1426044,44.293548,-94.442296,185,6138.09002739 -p_1426044,44.293459,-94.442166,186,6152.42349776 -p_1426044,44.293362,-94.442019,187,6168.35509749 -p_1426044,44.293138,-94.441662,188,6206.18813673 -p_1426044,44.293075,-94.441561,189,6216.86442675 -p_1426044,44.293013,-94.441445,190,6228.40449879 -p_1426044,44.292691,-94.440842,191,6288.37366411 -p_1426044,44.292421,-94.440337,192,6338.61875627 -p_1426044,44.292084,-94.439715,193,6400.80121632 -p_1426044,44.291804,-94.439185,194,6453.31154324 -p_1426044,44.29168,-94.438958,195,6476.0731121 -p_1426044,44.291535,-94.438742,196,6499.66969613 -p_1426044,44.29138,-94.438534,197,6523.59112363 -p_1426044,44.291144,-94.438247,198,6558.41046434 -p_1426044,44.290977,-94.438048,199,6582.83615076 -p_1426044,44.291039,-94.437929,200,6594.56944086 -p_1426044,44.291435,-94.437128,201,6672.17930504 -p_1426044,44.291597,-94.436801,202,6703.88388279 -p_1426044,44.290507,-94.435806,203,6848.7158002 -p_1426044,44.289672,-94.434996,204,6961.80136547 -p_1426044,44.288104,-94.433475,205,7174.1573765 -p_1426044,44.287441,-94.432824,206,7264.30948876 -p_1426044,44.287021,-94.432422,207,7320.94528389 -p_1426044,44.286701,-94.43213,208,7363.46081515 -p_1426044,44.286626,-94.432086,209,7372.50444585 -p_1426044,44.285388,-94.432052,210,7510.09508332 -p_1426044,44.285289,-94.432068,211,7521.1696338 -p_1426044,44.285205,-94.432147,212,7532.43397603 -p_1426044,44.284717,-94.43311,213,7626.5035354 -p_1426044,44.284289,-94.433957,214,7709.16431388 -p_1426044,44.284193,-94.4342,215,7731.30088907 -p_1426044,44.284146,-94.434433,216,7750.61884484 -p_1426044,44.284111,-94.434705,217,7772.67612009 -p_1426044,44.284112,-94.434944,218,7791.75401316 -p_1426044,44.284154,-94.435224,219,7814.58634816 -p_1426044,44.284185,-94.435519,220,7838.38456864 -p_1426044,44.284183,-94.43596,221,7873.58693453 -p_1426044,44.285698,-94.436219,222,8043.19509833 -p_1426044,44.28874,-94.436739,223,8383.75429485 -p_1426044,44.288916,-94.436776,224,8403.53276106 -p_1426044,44.289101,-94.436819,225,8424.37410391 -p_1426044,44.289202,-94.436845,226,8435.78725943 -p_1426044,44.289307,-94.436876,227,8447.7141109 -p_1426044,44.289383,-94.4369,228,8456.37360001 -p_1426044,44.28958,-94.436981,229,8479.1985554 -p_1426044,44.289761,-94.437061,230,8500.30014123 -p_1426044,44.289972,-94.43717,231,8525.30805357 -p_1426044,44.290135,-94.437266,232,8544.9743073 -p_1426044,44.290465,-94.437452,233,8584.5343314 -p_1426044,44.290652,-94.437587,234,8607.9408779 -p_1426044,44.290918,-94.437811,235,8642.48459317 -p_1426044,44.291039,-94.437929,236,8658.90022922 -p_1426044,44.291159,-94.438057,237,8675.69807321 -p_1426044,44.291481,-94.438433,238,8722.3969087 -p_1426044,44.291766,-94.438857,239,8768.74423343 -p_1426044,44.292124,-94.439533,240,8835.77685664 -p_1426044,44.29217,-94.439617,241,8844.20731384 -p_1426044,44.292206,-94.439565,242,8849.97152455 -p_1426044,44.292239,-94.439511,243,8855.63020356 -p_1426044,44.292275,-94.439444,244,8862.30824929 -p_1426044,44.292425,-94.439152,245,8890.96013331 -p_1426044,44.292479,-94.439047,246,8901.26701129 -p_1426044,44.292521,-94.438964,247,8909.37022672 -p_1426044,44.292634,-94.439072,248,8924.60041707 -p_1426044,44.292854,-94.439282,249,8954.2401022 -p_1426044,44.292926,-94.439352,250,8963.99815331 -p_1426044,44.292948,-94.439379,251,8967.25692151 -p_1426044,44.292961,-94.439395,252,8969.18495782 -p_1426044,44.293008,-94.439474,253,8977.37204012 -p_1426044,44.293045,-94.439519,254,8982.83115725 -p_1426044,44.293157,-94.439624,255,8997.83479212 -p_1426044,44.293213,-94.439676,256,9005.3143911 -p_1426044,44.293308,-94.439766,257,9018.0826196 -p_1426044,44.293446,-94.439896,258,9036.59712137 -p_1426044,44.293485,-94.439924,259,9041.4729666 -p_1426044,44.293547,-94.439959,260,9048.90703711 -p_1426044,44.293586,-94.439988,261,9053.8199707 -p_1426044,44.293662,-94.440059,262,9063.98985049 -p_1426044,44.293762,-94.440151,263,9077.30840624 -p_1426044,44.293664,-94.440353,264,9096.76311509 -p_1426044,44.293579,-94.440524,265,9113.36013767 -p_1426044,44.293479,-94.440725,266,9132.87448777 -p_1426044,44.293418,-94.440847,267,9144.738264 -p_1426044,44.293195,-94.441311,268,9189.29577446 -p_1426044,44.293148,-94.44141,269,9198.76699838 -p_1426044,44.293218,-94.441523,270,9210.67647137 -p_1426044,44.293414,-94.441826,271,9243.22059686 -p_1426044,44.293487,-94.44194,272,9255.4098407 -p_1426044,44.294039,-94.442664,273,9339.67728795 -p_1426044,44.294197,-94.442834,274,9361.86541877 -p_1426044,44.294344,-94.442979,275,9381.88361227 -p_1426044,44.294444,-94.443077,276,9395.47198336 -p_1426044,44.295006,-94.443598,277,9470.49657788 -p_1426044,44.295552,-94.444116,278,9543.91261039 -p_1426044,44.295996,-94.444525,279,9603.06927205 -p_1426044,44.296596,-94.445109,280,9684.41532799 -p_1426044,44.29696,-94.44545,281,9733.16507357 -p_1426044,44.29755,-94.446012,282,9812.59812642 -p_1426044,44.297942,-94.446387,283,9865.44620148 -p_1426044,44.298524,-94.446943,284,9943.87487364 -p_1426044,44.298908,-94.44731,285,9995.62847623 -p_1426044,44.299475,-94.447854,286,10072.14074354 -p_1426044,44.299883,-94.448245,287,10127.1766911 -p_1426044,44.30031,-94.448646,288,10184.40663767 -p_1426044,44.300453,-94.44878,289,10203.55955784 -p_1426044,44.300857,-94.449163,290,10257.86783703 -p_1426044,44.30146,-94.449733,291,10338.85246911 -p_1426044,44.301835,-94.450087,292,10389.194521 -p_1426044,44.302129,-94.450368,293,10428.81839062 -p_1426044,44.302402,-94.450627,294,10465.52505763 -p_1426044,44.302737,-94.450947,295,10510.66611782 -p_1426044,44.302815,-94.451021,296,10521.1537088 -p_1426044,44.302884,-94.451087,297,10530.45545005 -p_1426044,44.303391,-94.451569,298,10598.66962261 -p_1426044,44.303781,-94.451941,299,10651.19737642 -p_1426044,44.304373,-94.452501,300,10730.72130394 -p_1426044,44.304761,-94.452867,301,10782.79557702 -p_1426044,44.305333,-94.453409,302,10859.6737201 -p_1426044,44.305474,-94.453542,303,10878.59730502 -p_1426044,44.305735,-94.453788,304,10913.6174652 -p_1426044,44.306333,-94.454355,305,10994.00597899 -p_1426044,44.306716,-94.454718,306,11045.48560282 -p_1426044,44.307298,-94.455266,307,11123.55129741 -p_1426044,44.307695,-94.455639,308,11176.7660951 -p_1426044,44.308282,-94.456191,309,11255.4704318 -p_1426044,44.308675,-94.456561,310,11308.18264904 -p_1426044,44.309272,-94.457129,311,11388.5230755 -p_1426044,44.30965,-94.457488,312,11439.36305077 -p_1426044,44.310005,-94.457821,313,11486.9234557 -p_1426044,44.310126,-94.457934,314,11503.11185027 -p_1426044,44.310234,-94.458037,315,11517.65679537 -p_1426044,44.310628,-94.458412,316,11570.68463514 -p_1426044,44.31122,-94.458969,317,11650.07146895 -p_1426044,44.311602,-94.459329,318,11701.32342166 -p_1426044,44.312096,-94.459795,319,11767.62211285 -p_1426044,44.312202,-94.459894,320,11781.80389685 -p_1426044,44.312471,-94.460149,321,11817.96160946 -p_1426044,44.312505,-94.460181,322,11822.52140405 -p_1426044,44.312571,-94.460243,323,11831.36751561 -p_1426044,44.31268,-94.460346,324,11846.00408982 -p_1426044,44.312606,-94.460501,325,11860.85480962 -p_1426044,44.312559,-94.460595,326,11869.99376259 -p_1426044,44.312349,-94.461027,327,11911.61671576 -p_1426044,44.312274,-94.46118,328,11926.3972493 -p_1426044,44.312159,-94.461415,329,11949.08712306 -p_1426044,44.312144,-94.461446,330,11952.06964659 -p_1426044,44.311991,-94.461761,331,11982.4120678 -p_1426044,44.311946,-94.461852,332,11991.22778205 -p_1426044,44.311904,-94.46194,333,11999.65843562 -p_1426044,44.311335,-94.463123,334,12113.26418828 -p_1426044,44.311288,-94.463219,335,12122.53467157 -p_1426044,44.311347,-94.463275,336,12130.46838837 -p_1426044,44.311747,-94.463656,337,12184.3164697 -p_1426044,44.312118,-94.464006,338,12234.10883838 -p_1426044,44.31218,-94.464064,339,12242.4080386 -p_1426044,44.312225,-94.464106,340,12248.42734828 -p_1426044,44.312258,-94.464137,341,12252.85041086 -p_1426044,44.312213,-94.464231,342,12261.8642458 -p_1426044,44.311927,-94.464817,343,12318.39630689 -p_1426044,44.311628,-94.46543,344,12377.52220366 -p_1426044,44.311591,-94.465506,345,12384.84829452 -p_1426044,44.311094,-94.46503,346,12451.87227104 -p_1426044,44.310617,-94.464574,347,12516.16109132 -p_1426044,44.309946,-94.465934,348,12647.81877664 -p_1426044,44.309608,-94.466612,349,12713.67457492 -p_1426044,44.309331,-94.46721,350,12770.4544358 -p_1426044,44.309283,-94.467314,351,12780.31875092 -p_1426044,44.309235,-94.467414,352,12789.91614712 -p_1426044,44.308961,-94.46799,353,12845.04458179 -p_1426044,44.308815,-94.468296,354,12874.35851164 -p_1426044,44.308747,-94.468413,355,12886.36858928 -p_1426044,44.308628,-94.468581,356,12905.1976232 -p_1426044,44.308518,-94.468824,357,12928.11765503 -p_1426044,44.308462,-94.468945,358,12939.60377077 -p_1426044,44.308408,-94.46906,359,12950.56734008 -p_1426044,44.308308,-94.469269,360,12970.60637025 -p_1426044,44.308211,-94.46946,361,12989.27260443 -p_1426044,44.308111,-94.469657,362,13008.52221089 -p_1426044,44.307863,-94.470141,363,13055.96469059 -p_1426044,44.307542,-94.470755,364,13116.56526442 -p_1426044,44.307226,-94.47139,365,13178.21036764 -p_1426044,44.307193,-94.471458,366,13184.7590683 -p_1426044,44.306894,-94.47207,367,13243.82221438 -p_1426044,44.306348,-94.473168,368,13350.39006829 -p_1426044,44.306325,-94.473214,369,13354.86263969 -p_1426044,44.305991,-94.473886,370,13420.07447152 -p_1426044,44.305864,-94.474141,371,13444.8364837 -p_1426044,44.305809,-94.474252,372,13455.59740349 -p_1426044,44.30523,-94.475415,373,13568.51822054 -p_1426044,44.305184,-94.475508,374,13577.5290775 -p_1426044,44.305253,-94.475572,375,13586.74128527 -p_1426044,44.305295,-94.475611,376,13592.35063845 -p_1426044,44.305826,-94.476106,377,13663.3542745 -p_1426044,44.306135,-94.4764,378,13704.9386202 -p_1426044,44.30704,-94.477246,379,13826.0563835 -p_1426044,44.307678,-94.477852,380,13911.86969679 -p_1426044,44.30794,-94.478109,381,13947.47962397 -p_1426044,44.308422,-94.478573,382,14012.58900898 -p_1426044,44.308813,-94.478935,383,14064.76114797 -p_1426044,44.308757,-94.47905,384,14075.84786323 -p_1426044,44.308519,-94.479539,385,14122.98299367 -p_1426044,44.308436,-94.479708,386,14139.31975922 -p_1426044,44.30817,-94.480249,387,14191.63578546 -p_1426044,44.308042,-94.480509,388,14216.78869603 -p_1426044,44.307959,-94.480678,389,14233.12555128 -p_1426044,44.30782,-94.480959,390,14260.35174503 -p_1426044,44.307973,-94.481103,391,14280.87131087 -p_1426044,44.307993,-94.481126,392,14283.75345714 -p_1426044,44.308007,-94.481152,393,14286.34648483 -p_1426044,44.308016,-94.481168,394,14287.9681945 -p_1426044,44.308034,-94.481208,395,14291.73473735 -p_1426044,44.308084,-94.481352,396,14304.49729427 -p_1426044,44.308091,-94.481389,397,14307.55027259 -p_1426044,44.308093,-94.481416,398,14309.71603466 -p_1426044,44.308091,-94.48143,399,14310.85498669 -p_1426044,44.308088,-94.481448,400,14312.32938583 -p_1426044,44.308078,-94.481483,401,14315.33498405 -p_1426044,44.307938,-94.481765,402,14342.68992543 -p_1426044,44.307929,-94.481777,403,14344.07444744 -p_1426044,44.307921,-94.481788,404,14345.32367477 -p_1426044,44.307907,-94.4818,405,14347.15037602 -p_1426044,44.307889,-94.481805,406,14349.18990451 -p_1426044,44.307857,-94.481809,407,14352.7599836 -p_1426044,44.307769,-94.481799,408,14362.57088976 -p_1426044,44.307727,-94.481793,409,14367.26234707 -p_1426044,44.307699,-94.481785,410,14370.43846324 -p_1426044,44.307677,-94.481777,411,14372.96502899 -p_1426044,44.307657,-94.481767,412,14375.32629129 -p_1426044,44.307625,-94.481745,413,14379.29176793 -p_1426044,44.307579,-94.481702,414,14385.44794862 -p_1426044,44.307493,-94.48162,415,14397.02936203 -p_1426044,44.30782,-94.480959,416,14461.07586177 -p_1426044,44.307959,-94.480678,417,14488.30205552 -p_1426044,44.308042,-94.480509,418,14504.63891077 -p_1426044,44.30817,-94.480249,419,14529.79182134 -p_1426044,44.308519,-94.479539,420,14598.44461142 -p_1426044,44.308757,-94.47905,421,14645.57974186 -p_1426044,44.308813,-94.478935,422,14656.66645712 -p_1426044,44.308968,-94.479081,423,14677.45940262 -p_1426044,44.309209,-94.479307,424,14709.74412474 -p_1426044,44.309641,-94.479718,425,14767.87909355 -p_1426044,44.309842,-94.479909,426,14794.9176476 -p_1426044,44.309924,-94.479987,427,14805.95187419 -p_1426044,44.310587,-94.480608,428,14894.73509806 -p_1426044,44.311074,-94.481069,429,14960.16650265 -p_1426044,44.311866,-94.481821,430,15066.67866647 -p_1426044,44.31198,-94.481875,431,15080.05877983 -p_1426044,44.312001,-94.481889,432,15082.64582638 -p_1426044,44.312043,-94.48192,433,15087.92767683 -p_1426044,44.312187,-94.482043,434,15106.6983466 -p_1426044,44.312346,-94.48219,435,15127.90458793 -p_1426044,44.312922,-94.482709,436,15204.13542326 -p_1426044,44.313645,-94.483397,437,15301.43533307 -p_1426044,44.314369,-94.484088,438,15398.96173601 -p_1426044,44.315555,-94.485204,439,15558.00554342 -p_1426044,44.316,-94.485628,440,15617.91638581 -p_1426044,44.316261,-94.48587,441,15652.7567808 -p_1426044,44.316325,-94.48593,442,15661.32925781 -p_1426044,44.3164,-94.486003,443,15671.4964021 -p_1426044,44.316938,-94.486537,444,15744.90453291 -p_1426044,44.317065,-94.486657,445,15761.95735468 -p_1426044,44.317685,-94.487239,446,15845.03618503 -p_1426044,44.317795,-94.487345,447,15859.89930551 -p_1426044,44.317867,-94.487413,448,15869.56559468 -p_1426044,44.317915,-94.487462,449,15876.17838103 -p_1426044,44.317967,-94.487517,450,15883.43366691 -p_1426044,44.317984,-94.487538,451,15885.95854936 -p_1426044,44.318013,-94.487572,452,15890.17058205 -p_1426044,44.318056,-94.487629,453,15896.76662361 -p_1426044,44.31809,-94.487681,454,15902.37755189 -p_1426044,44.318135,-94.487753,455,15909.99304337 -p_1426044,44.318185,-94.487844,456,15919.13474785 -p_1426044,44.318227,-94.487932,457,15927.56478063 -p_1426044,44.318259,-94.488007,458,15934.52484814 -p_1426044,44.318281,-94.488065,459,15939.75795507 -p_1426044,44.318292,-94.488097,460,15942.58832689 -p_1426044,44.318311,-94.488154,461,15947.60178667 -p_1426044,44.318328,-94.488211,462,15952.52578503 -p_1426044,44.318342,-94.488256,463,15956.43828222 -p_1426044,44.318386,-94.488419,464,15970.3305605 -p_1426044,44.318459,-94.488698,465,15994.02011948 -p_1426044,44.318513,-94.488902,466,16011.36535242 -p_1426044,44.318564,-94.489096,467,16027.84678984 -p_1426044,44.31875,-94.489802,468,16087.84089923 -p_1426044,44.318815,-94.490049,469,16108.82748227 -p_1426044,44.318998,-94.490747,470,16168.10746388 -p_1426044,44.319072,-94.491029,471,16192.0597228 -p_1426044,44.319127,-94.491235,472,16209.59300494 -p_1426044,44.319178,-94.491429,473,16226.07429101 -p_1426044,44.319565,-94.492894,474,16350.60472486 -p_1426044,44.319736,-94.49354,475,16405.53034082 -p_1426044,44.319826,-94.493877,476,16434.21407756 -p_1426044,44.319849,-94.493954,477,16440.86714541 -p_1426044,44.319869,-94.494019,478,16446.50863436 -p_1426044,44.319882,-94.494052,479,16449.51146272 -p_1426044,44.319906,-94.494112,480,16454.9907019 -p_1426044,44.319941,-94.494191,481,16462.39627193 -p_1426044,44.319966,-94.494244,482,16467.45524486 -p_1426044,44.319977,-94.494265,483,16469.52900811 -p_1426044,44.320001,-94.49431,484,16474.00102028 -p_1426044,44.320036,-94.494367,485,16479.98446907 -p_1426044,44.320075,-94.494425,486,16486.32389204 -p_1426044,44.320123,-94.494492,487,16493.87475494 -p_1426044,44.320172,-94.494548,488,16500.91768786 -p_1426044,44.320236,-94.494616,489,16509.8620125 -p_1426044,44.320307,-94.494684,490,16519.43641038 -p_1426044,44.320929,-94.495252,491,16602.08067586 -p_1426044,44.32108,-94.495385,492,16621.93257597 -p_1426044,44.3212,-94.495491,493,16637.72191147 -p_1426044,44.321475,-94.495741,494,16674.21150055 -p_1426044,44.321842,-94.496074,495,16722.88071267 -p_1426044,44.321875,-94.496103,496,16727.21636882 -p_1426044,44.321927,-94.496144,497,16733.85595797 -p_1426044,44.321947,-94.49616,498,16736.41876385 -p_1426044,44.322076,-94.496267,499,16753.10189383 -p_1426044,44.322229,-94.496387,500,16772.61270127 -p_1426044,44.322282,-94.496425,501,16779.23632323 -p_1426044,44.322336,-94.496464,502,16785.99527991 -p_1426044,44.322475,-94.496561,503,16803.27056553 -p_1426044,44.322532,-94.496599,504,16810.2923259 -p_1426044,44.322667,-94.49668,505,16826.62571948 -p_1426044,44.322789,-94.49675,506,16841.28715652 -p_1426044,44.322876,-94.496798,507,16851.6851319 -p_1426044,44.322976,-94.496848,508,16863.49112216 -p_1426044,44.323041,-94.496879,509,16871.12542176 -p_1426044,44.323088,-94.496902,510,16876.66088858 -p_1426044,44.323148,-94.496927,511,16883.61986793 -p_1426044,44.323237,-94.496965,512,16893.96354488 -p_1426044,44.323394,-94.497026,513,16912.0750525 -p_1426044,44.32349,-94.49706,514,16923.08181413 -p_1426044,44.323594,-94.497095,515,16934.97061431 -p_1426044,44.323698,-94.497127,516,16946.80550206 -p_1426044,44.323833,-94.497163,517,16962.07890071 -p_1426044,44.323909,-94.49718,518,16970.63209474 -p_1426044,44.323965,-94.497192,519,16976.92792834 -p_1426044,44.323986,-94.497197,520,16979.29525818 -p_1426044,44.324098,-94.497218,521,16991.85276873 -p_1426044,44.324207,-94.497233,522,17004.02365123 -p_1426044,44.324312,-94.497248,523,17015.75229395 -p_1426044,44.324388,-94.497255,524,17024.21574524 -p_1426044,44.324457,-94.497261,525,17031.89785058 -p_1426044,44.324539,-94.497265,526,17041.01515892 -p_1426044,44.324634,-94.497265,527,17051.5714241 -p_1426044,44.324767,-94.497262,528,17066.35213296 -p_1426044,44.32572,-94.497247,529,17172.25491209 -p_1426044,44.325945,-94.497249,530,17197.25710723 -p_1426044,44.326229,-94.497249,531,17228.81479252 -p_1426044,44.32622,-94.495007,532,17407.65165909 -p_1426044,44.326211,-94.49293,533,17573.32747892 -p_1426044,44.326213,-94.492796,534,17584.01835753 -p_1426044,44.326218,-94.492669,535,17594.1637917 -p_1426044,44.326219,-94.492638,536,17596.6390154 -p_1426044,44.326223,-94.492562,537,17602.71746008 -p_1426044,44.326231,-94.492433,538,17613.04552631 -p_1426044,44.326248,-94.492251,539,17627.68521411 -p_1426044,44.326271,-94.492077,540,17641.7977347 -p_1426044,44.32629,-94.491934,541,17653.39792261 -p_1426044,44.326308,-94.491805,542,17663.8802412 -p_1426044,44.326352,-94.491548,543,17684.95489852 -p_1426044,44.326384,-94.491391,544,17697.97306761 -p_1426044,44.326405,-94.491298,545,17705.749591 -p_1426044,44.326442,-94.491145,546,17718.62758741 -p_1426044,44.326485,-94.490986,547,17732.18044175 -p_1426044,44.32654,-94.490806,548,17747.78474967 -p_1426044,44.326585,-94.490668,549,17759.87482241 -p_1426044,44.326598,-94.490629,550,17763.3046879 -p_1426044,44.326651,-94.490481,551,17776.49735597 -p_1426044,44.326728,-94.490285,552,17794.319427 -p_1426044,44.326821,-94.490065,553,17814.68441003 -p_1426044,44.326888,-94.489911,554,17829.04816977 -p_1426044,44.327108,-94.489434,555,17874.27241069 -p_1426044,44.327218,-94.4892,556,17896.58335173 -p_1426044,44.327274,-94.48908,557,17907.99993748 -p_1426044,44.327461,-94.488677,558,17946.27610822 -p_1426044,44.327609,-94.488359,559,17976.50575316 -p_1426044,44.327624,-94.488327,560,17979.55420666 -p_1426044,44.328022,-94.48747,561,18060.9702022 -p_1426044,44.32811,-94.48728,562,18079.00601623 -p_1426044,44.328161,-94.487332,563,18086.02873732 -p_1426044,44.328207,-94.487379,564,18092.36757617 -p_1426044,44.328357,-94.487532,565,18113.02539205 -p_1426044,44.328675,-94.487866,566,18157.27848563 -p_1426044,44.328908,-94.48811,567,18189.6681716 -p_1426044,44.328829,-94.488275,568,18205.48790492 -p_1426044,44.328721,-94.488501,569,18227.14347216 -p_1426044,44.328706,-94.488529,570,18229.93021772 -p_1426044,44.328675,-94.48858,571,18235.26063453 -p_1426044,44.328662,-94.488602,572,18237.53349798 -p_1426044,44.328643,-94.488631,573,18240.66524437 -p_1426044,44.328578,-94.488718,574,18250.68131181 -p_1426044,44.328552,-94.488745,575,18254.28474387 -p_1426044,44.328538,-94.488758,576,18256.15430619 -p_1426044,44.328507,-94.488781,577,18260.05703865 -p_1426044,44.328488,-94.488794,578,18262.40918208 -p_1426044,44.328432,-94.488821,579,18268.99395498 -p_1426044,44.328405,-94.488829,580,18272.06126542 -p_1426044,44.328345,-94.488841,581,18278.79673986 -p_1426044,44.328318,-94.488844,582,18281.80647084 -p_1426044,44.328157,-94.488855,583,18299.71807596 -p_1426044,44.328155,-94.488855,584,18299.94031326 -p_1426044,44.328101,-94.488862,585,18305.96664123 -p_1426044,44.328056,-94.488869,586,18310.99805615 -p_1426044,44.328015,-94.488879,587,18315.62321724 -p_1426044,44.328,-94.488884,588,18317.33704571 -p_1426044,44.327949,-94.488905,589,18323.2464596 -p_1426044,44.327895,-94.488935,590,18329.70639942 -p_1426044,44.327865,-94.488959,591,18333.550515 -p_1426044,44.327821,-94.489003,592,18339.56895675 -p_1426044,44.327785,-94.489052,593,18345.16160959 -p_1426044,44.327744,-94.489118,594,18352.12362053 -p_1426044,44.327706,-94.489185,595,18358.93460305 -p_1426044,44.32766,-94.48927,596,18367.42541821 -p_1426044,44.327574,-94.48945,597,18384.67235939 -p_1426044,44.327431,-94.489748,598,18413.26403431 -p_1426044,44.327207,-94.490213,599,18457.93198551 -p_1426044,44.327153,-94.490325,600,18468.69366567 -p_1426044,44.327041,-94.490558,601,18491.06082645 -p_1426044,44.326943,-94.490761,602,18510.57416244 -p_1426044,44.326852,-94.490962,603,18529.52923501 -p_1426044,44.326792,-94.491118,604,18543.64609198 -p_1426044,44.326734,-94.491277,605,18557.87228118 -p_1426044,44.326728,-94.491292,606,18559.24196997 -p_1426044,44.326681,-94.491444,607,18572.44320499 -p_1426044,44.326657,-94.491536,608,18580.25112702 -p_1426044,44.326622,-94.491689,609,18593.0598616 -p_1426044,44.326579,-94.491918,610,18611.94061918 -p_1426044,44.326551,-94.492127,611,18628.89934656 -p_1426044,44.32653,-94.492318,612,18644.31212885 -p_1426044,44.326513,-94.492537,613,18661.88250813 -p_1426044,44.326507,-94.492688,614,18673.94546649 -p_1426044,44.326506,-94.49275,615,18678.892147 -p_1426044,44.326503,-94.4929,616,18690.86154599 -p_1426044,44.326503,-94.492928,617,18693.09496717 -p_1426044,44.326501,-94.493057,618,18703.38705743 -p_1426044,44.326504,-94.493637,619,18749.65198318 -p_1426044,44.326506,-94.494055,620,18782.99451025 -p_1426044,44.326507,-94.494229,621,18796.87407155 -p_1426044,44.326508,-94.494428,622,18812.74770263 -p_1426044,44.32652,-94.4958,623,18922.19344295 -p_1426044,44.326522,-94.495872,624,18927.94082251 -p_1426044,44.32653,-94.495958,625,18934.85797235 -p_1426044,44.326536,-94.496003,626,18938.50879099 -p_1426044,44.326546,-94.49605,627,18942.41895659 -p_1426044,44.326563,-94.496114,628,18947.86220763 -p_1426044,44.326584,-94.496173,629,18953.115098 -p_1426044,44.326599,-94.496206,630,18956.23068036 -p_1426044,44.32663,-94.496263,631,18961.93483338 -p_1426044,44.326753,-94.496467,632,18983.18528161 -p_1426044,44.326777,-94.496512,633,18987.656964 -p_1426044,44.326793,-94.496547,634,18990.96677705 -p_1426044,44.326816,-94.496607,635,18996.39230704 -p_1426044,44.326837,-94.496674,636,19002.22376984 -p_1426044,44.326856,-94.496759,637,19009.32487143 -p_1426044,44.326867,-94.496852,638,19016.84300232 -p_1426044,44.326872,-94.496976,639,19026.74939824 -p_1426044,44.326875,-94.497327,640,19054.74873627 -p_1426044,44.326875,-94.497468,641,19065.99553611 -p_1426044,44.326874,-94.49766,642,19081.31073063 -p_1426044,44.326871,-94.497751,643,19088.57695467 -p_1426044,44.326867,-94.497807,644,19093.0658287 -p_1426044,44.326855,-94.497907,645,19101.15297057 -p_1426044,44.326844,-94.497965,646,19105.93806191 -p_1426044,44.326824,-94.498034,647,19111.873572 -p_1426044,44.326797,-94.498105,648,19118.28247617 -p_1426044,44.326761,-94.498182,649,19125.61219968 -p_1426044,44.32669,-94.498307,650,19138.32658912 -p_1426044,44.326632,-94.498418,651,19149.27775122 -p_1426044,44.326596,-94.498501,652,19157.01293045 -p_1426044,44.326578,-94.498556,653,19161.83443779 -p_1426044,44.32656,-94.498621,654,19167.39158472 -p_1426044,44.326544,-94.498692,655,19173.32741138 -p_1426044,44.326539,-94.498727,656,19176.17393371 -p_1426044,44.326533,-94.498764,657,19179.19960803 -p_1426044,44.326527,-94.498845,658,19185.69488161 -p_1426044,44.326526,-94.498896,659,19189.76441446 -p_1426044,44.326524,-94.499034,660,19200.77422934 -p_1426044,44.326527,-94.499576,661,19244.00815078 -p_1426044,44.326531,-94.500383,662,19308.38004577 -p_1426044,44.326533,-94.500732,663,19336.21891879 -p_1426044,44.326537,-94.501535,664,19400.27175487 -p_1426044,44.326542,-94.501647,665,19409.22269377 -p_1426044,44.326547,-94.501721,666,19415.15139313 -p_1426044,44.32656,-94.501823,667,19423.41466379 -p_1426044,44.326563,-94.501843,668,19425.04442016 -p_1426044,44.326573,-94.501897,669,19429.49274937 -p_1426044,44.326575,-94.501908,670,19430.39787114 -p_1426044,44.326605,-94.502013,671,19439.41222349 -p_1426044,44.32663,-94.502078,672,19445.29426306 -p_1426044,44.326683,-94.502188,673,19455.86162263 -p_1426044,44.326717,-94.502247,674,19461.89661362 -p_1426044,44.326778,-94.50234,675,19471.94514383 -p_1426044,44.326957,-94.502586,676,19499.88521155 -p_1426044,44.326972,-94.502606,677,19502.19239565 -p_1426044,44.326989,-94.502635,678,19505.17888651 -p_1426044,44.327017,-94.50268,679,19509.92905372 -p_1426044,44.327041,-94.502726,680,19514.46499929 -p_1426044,44.327077,-94.502811,681,19522.33710728 -p_1426044,44.327098,-94.502873,682,19527.80537933 -p_1426044,44.327123,-94.502976,683,19536.47804092 -p_1426044,44.327135,-94.503054,684,19542.8409344 -p_1426044,44.327144,-94.503139,685,19549.69424955 -p_1426044,44.327152,-94.503271,686,19560.26057992 -p_1426044,44.327258,-94.503274,687,19572.04158538 -p_1426044,44.327473,-94.503279,688,19595.93542058 -p_1426044,44.32754,-94.503285,689,19603.39573576 -p_1426044,44.32765,-94.503293,690,19615.63543112 -p_1426044,44.327736,-94.503302,691,19625.21855993 -p_1426044,44.327922,-94.503322,692,19645.9481016 -p_1426044,44.328054,-94.503352,693,19660.80967013 -p_1426044,44.328055,-94.503526,694,19674.68886642 -p_1426044,44.328056,-94.503901,695,19704.60017462 -p_1426044,44.328056,-94.504115,696,19721.66944323 -p_1426044,44.328057,-94.504333,697,19739.05811849 -p_1426044,44.328058,-94.504569,698,19757.88249921 -p_1426044,44.328058,-94.504779,699,19774.63271551 -p_1426044,44.328059,-94.504996,700,19791.94162888 -p_1426044,44.32806,-94.505227,701,19810.3672014 -p_1426044,44.328061,-94.50545,702,19828.15468217 -p_1426044,44.328061,-94.505657,703,19844.66560882 -p_1426044,44.328062,-94.505874,704,19861.97452131 -p_1426044,44.328063,-94.506107,705,19880.55961587 -p_1426044,44.328063,-94.506325,706,19897.94793417 -p_1426044,44.328064,-94.506556,707,19916.37350544 -p_1426044,44.328323,-94.506556,708,19945.15323614 -p_1426044,44.328952,-94.506556,709,20015.04687329 -p_1426044,44.329092,-94.506559,710,20030.60532692 -p_1426044,44.3292,-94.506549,711,20042.63262014 -p_1426044,44.329313,-94.506505,712,20055.67025814 -p_1426044,44.329324,-94.506403,713,20063.8972109 -p_1426044,44.32933,-94.506189,714,20080.97912685 -p_1426044,44.32932,-94.504952,715,20179.6500102 -p_1426044,44.329317,-94.504812,716,20190.82155665 -p_1426044,44.32932,-94.504523,717,20213.87496143 -p_1426044,44.329314,-94.503975,718,20257.58919919 -p_1426044,44.329313,-94.503509,719,20294.7581 -p_1426044,44.329312,-94.503338,720,20308.39772376 -p_1426044,44.329299,-94.500824,721,20508.92269469 -p_1426044,44.329298,-94.50064,722,20523.59918601 -p_1426044,44.329287,-94.49857,723,20688.70952225 -p_1426044,44.329287,-94.498461,724,20697.40350059 -p_1426044,44.329288,-94.4984,725,20702.27020669 -p_1426044,44.329293,-94.498334,726,20707.56368789 -p_1426044,44.329303,-94.498239,727,20715.22204944 -p_1426044,44.329313,-94.498176,728,20720.3684016 -p_1426044,44.329324,-94.498107,729,20726.00602644 -p_1426044,44.329379,-94.49785,730,20747.3963125 -p_1426044,44.329405,-94.497739,731,20756.7092612 -p_1426044,44.329418,-94.497685,732,20761.25214677 -p_1426044,44.329389,-94.497672,733,20764.63730257 -p_1426044,44.328836,-94.497426,734,20829.14257377 -p_1426044,44.328762,-94.497393,735,20837.77636257 -p_1426044,44.328698,-94.497357,736,20845.44577591 -p_1426044,44.32867,-94.497341,737,20848.80866117 -p_1426044,44.328652,-94.497327,738,20851.09940225 -p_1426044,44.328622,-94.497305,739,20854.86660668 -p_1426044,44.328598,-94.497285,740,20857.97415876 -p_1426044,44.32855,-94.49723,741,20864.88019974 -p_1426044,44.328508,-94.497173,742,20871.39563925 -p_1426044,44.328311,-94.496869,743,20904.06280496 -p_1426044,44.328281,-94.496823,744,20909.02009947 -p_1426044,44.328225,-94.496737,745,20918.2815937 -p_1426044,44.328395,-94.496526,746,20943.58148184 -p_1426044,44.328824,-94.496002,747,21006.97922738 -p_1426044,44.329191,-94.495554,748,21061.20022165 -p_1426044,44.329697,-94.494932,749,21136.18460289 -p_1426044,44.329964,-94.494619,750,21174.95939666 -p_1426044,44.330013,-94.494564,751,21181.95154835 -p_1426044,44.330069,-94.494505,752,21189.75324027 -p_1426044,44.330132,-94.494446,753,21198.18838735 -p_1426044,44.330211,-94.494381,754,21208.38338342 -p_1426044,44.330289,-94.494329,755,21217.99188314 -p_1426044,44.330335,-94.494304,756,21223.47850742 -p_1426044,44.330368,-94.494286,757,21227.41645708 -p_1426044,44.330417,-94.494265,758,21233.11307857 -p_1426044,44.330476,-94.494241,759,21239.94282693 -p_1426044,44.330529,-94.494224,760,21245.98619098 -p_1426044,44.33065,-94.494195,761,21259.62905943 -p_1426044,44.330731,-94.494181,762,21268.6986752 -p_1426044,44.330767,-94.494178,763,21272.7060983 -p_1426044,44.330836,-94.494175,764,21280.37702154 -p_1426044,44.330907,-94.494175,765,21288.2664495 -p_1426044,44.330913,-94.493999,766,21302.31986951 -p_1426044,44.330937,-94.493275,767,21360.12696966 -p_1426044,44.330956,-94.492715,768,21404.8418912 -p_1426044,44.330964,-94.492591,769,21414.77187764 -p_1426044,44.330972,-94.492533,770,21419.48253643 -p_1426044,44.330987,-94.492452,771,21426.15456167 -p_1426044,44.330999,-94.492399,772,21430.58710606 -p_1426044,44.331013,-94.49234,773,21435.54335718 -p_1426044,44.331022,-94.492303,774,21438.65928577 -p_1426044,44.331043,-94.492237,775,21444.41739375 -p_1426044,44.331064,-94.492188,776,21448.96921734 -p_1426044,44.331118,-94.492068,777,21460.26568103 -p_1426044,44.331533,-94.491212,778,21542.65358357 -p_1426044,44.33165,-94.490975,779,21565.59556419 -p_1426044,44.331729,-94.490814,780,21581.15037846 -p_1426044,44.331822,-94.490903,781,21593.68754071 -p_1426044,44.332954,-94.491981,782,21746.05045184 -p_1426044,44.333025,-94.49191,783,21755.76174534 -p_1426044,44.333083,-94.491862,784,21763.25790578 -p_1426044,44.333119,-94.491838,785,21767.69255974 -p_1426044,44.333174,-94.491825,786,21773.89141659 -p_1426044,44.333221,-94.491819,787,21779.13587567 -p_1426044,44.333277,-94.491816,788,21785.36312403 -p_1426044,44.333335,-94.491815,789,21791.80850507 -p_1426044,44.333741,-94.491813,790,21836.92300189 -p_1426044,44.335432,-94.491799,791,22024.82816986 -p_1426044,44.336523,-94.491797,792,22146.05888928 -p_1426044,44.336744,-94.49179,793,22170.62249228 -p_1426044,44.337973,-94.491794,794,22307.18790736 -p_1426044,44.33853,-94.491793,795,22369.08115696 -p_1426044,44.338586,-94.491785,796,22375.33643282 -p_1426044,44.33864,-94.49177,797,22381.45492798 -p_1426044,44.338696,-94.491745,798,22387.98917177 -p_1426044,44.338766,-94.491768,799,22395.9808303 -p_1426044,44.338815,-94.491773,800,22401.44023541 -p_1426044,44.339074,-94.491773,801,22430.2200205 -p_1426044,44.340282,-94.491757,802,22564.45768654 -p_1426044,44.340802,-94.491743,803,22622.25029547 -p_1426044,44.341373,-94.491756,804,22685.70765783 -p_1426044,44.341661,-94.491762,805,22717.71348098 -p_1426044,44.342525,-94.491781,806,22813.73218514 -p_1426044,44.342599,-94.491768,807,22822.02007541 -p_1426044,44.342635,-94.491754,808,22826.17322031 -p_1426044,44.342663,-94.491734,809,22829.66949888 -p_1426044,44.3427,-94.491671,810,22836.16121238 -p_1426044,44.342717,-94.491603,811,22841.90335726 -p_1426044,44.34271,-94.491486,812,22851.26566422 -p_1426044,44.342702,-94.491423,813,22856.36752106 -p_1426044,44.342687,-94.491339,814,22863.27020181 -p_1426044,44.342673,-94.491286,815,22867.77380321 -p_1426044,44.342653,-94.491231,816,22872.69059548 -p_1426044,44.342623,-94.491162,817,22879.12392663 -p_1426044,44.341997,-94.489957,818,22997.75001057 -p_1426044,44.341914,-94.489814,819,23012.41626467 -p_1426044,44.341835,-94.489687,820,23025.81875552 -p_1426044,44.341769,-94.489592,821,23036.36279192 -p_1426044,44.341695,-94.489503,822,23047.22490122 -p_1426044,44.34166,-94.48946,823,23052.40985132 -p_1426044,44.341621,-94.489416,824,23057.985854 -p_1426044,44.341599,-94.489392,825,23061.0905351 -p_1426044,44.34154,-94.48933,826,23069.30187645 -p_1426044,44.341153,-94.488969,827,23121.05130851 -p_1426044,44.340433,-94.488284,828,23217.92686596 -p_1426044,44.33949,-94.490213,829,23404.05605054 -p_1426044,44.33936,-94.490471,830,23429.19558281 -p_1426044,44.339338,-94.490516,831,23433.53776024 -p_1426044,44.339296,-94.490599,832,23441.63669443 -p_1426044,44.338823,-94.491564,833,23534.82911697 -p_1426044,44.338791,-94.49162,834,23540.53771376 -p_1426044,44.338767,-94.491659,835,23544.63470909 -p_1426044,44.338732,-94.491704,836,23549.92660759 -p_1426044,44.338696,-94.491745,837,23555.09314335 -p_1426044,44.33864,-94.49177,838,23561.62738714 -p_1426044,44.338586,-94.491785,839,23567.7458823 -p_1426044,44.33853,-94.491793,840,23574.00115816 -p_1426044,44.337973,-94.491794,841,23635.89440776 -p_1426044,44.337813,-94.491793,842,23653.67360115 -p_1426044,44.336744,-94.49179,843,23772.45987007 -p_1426044,44.336523,-94.491797,844,23797.02347307 -p_1426044,44.335432,-94.491799,845,23918.25419249 -p_1426044,44.333741,-94.491813,846,24106.15936046 -p_1426044,44.333335,-94.491815,847,24151.27385728 -p_1426044,44.333277,-94.491816,848,24157.71923832 -p_1426044,44.333221,-94.491819,849,24163.94648668 -p_1426044,44.333174,-94.491825,850,24169.19094576 -p_1426044,44.333119,-94.491838,851,24175.38980261 -p_1426044,44.333083,-94.491862,852,24179.82445657 -p_1426044,44.333025,-94.49191,853,24187.32061701 -p_1426044,44.332954,-94.491981,854,24197.03191051 -p_1426044,44.331822,-94.490903,855,24349.39482164 -p_1426044,44.331729,-94.490814,856,24361.93198389 -p_1426044,44.331064,-94.490183,857,24451.33655903 -p_1426044,44.330969,-94.490092,858,24464.14727538 -p_1426044,44.330399,-94.48955,859,24540.83140533 -p_1426044,44.330014,-94.489179,860,24592.84883859 -p_1426044,44.329668,-94.488854,861,24639.21839312 -p_1426044,44.329385,-94.488579,862,24677.55896567 -p_1426044,44.329049,-94.488248,863,24723.28620989 -p_1426044,44.328908,-94.48811,864,24742.43390842 -p_1426044,44.328675,-94.487866,865,24774.82359439 -p_1426044,44.328357,-94.487532,866,24819.07668797 -p_1426044,44.328207,-94.487379,867,24839.73450385 -p_1426044,44.32811,-94.48728,868,24853.09606215 -p_1426044,44.328199,-94.487092,869,24871.05895809 -p_1426044,44.328292,-94.486898,870,24889.66636823 -p_1426044,44.328899,-94.485666,871,25008.85437904 -p_1426044,44.329487,-94.484471,872,25124.41366917 -p_1426044,44.330052,-94.483311,873,25236.22585556 -p_1426044,44.33015,-94.483106,874,25255.87105466 -p_1426044,44.330067,-94.483029,875,25266.95164124 -p_1426044,44.330035,-94.482999,876,25271.23757461 -p_1426044,44.329664,-94.482653,877,25320.84710107 From e095e88c2d3cac3b25d7e09dc8bd5679bd3ac2c5 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Thu, 23 Nov 2023 13:53:48 +0100 Subject: [PATCH 105/123] Remove deprecation of LocationGroup --- .../main/java/org/onebusaway/gtfs/model/LocationGroup.java | 6 ------ .../org/onebusaway/gtfs/model/LocationGroupElement.java | 6 ------ 2 files changed, 12 deletions(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java index e6bf49315..46ef67e98 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroup.java @@ -18,12 +18,6 @@ import java.util.HashSet; import java.util.Set; -/** - * Location groups have been merged with Fares V2's stop areas. - * - * Please update your code now as this class will be removed soon. - */ -@Deprecated public class LocationGroup extends IdentityBean implements StopLocation { private static final long serialVersionUID = 1L; diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java index f1a11b0c5..05cba1665 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java @@ -20,12 +20,6 @@ import org.onebusaway.gtfs.serialization.mappings.DefaultAgencyIdFieldMappingFactory; import org.onebusaway.gtfs.serialization.mappings.StopLocationFieldMappingFactory; -/** - * Location groups have been merged with Fares V2's stop areas. - * - * Please update your code now as this class will be removed soon. - */ -@Deprecated @CsvFields(filename = "location_groups.txt", required = false, prefix = "location_group_") public class LocationGroupElement extends IdentityBean { From ec92c6b83aac1ede885e79ccb97c4a590d30ec50 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Thu, 23 Nov 2023 14:33:10 +0100 Subject: [PATCH 106/123] Remove unneeded files --- .../gtfs/brown-county-flex/calendar.txt | 4 ---- .../brown-county-flex/calendar_attributes.txt | 4 ---- .../gtfs/brown-county-flex/calendar_dates.txt | 16 ---------------- .../gtfs/brown-county-flex/directions.txt | 3 --- 4 files changed, 27 deletions(-) delete mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar.txt delete mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_attributes.txt delete mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_dates.txt delete mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/directions.txt diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar.txt deleted file mode 100644 index 7bfdc4ee1..000000000 --- a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar.txt +++ /dev/null @@ -1,4 +0,0 @@ -service_id,service_name,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date -c_67295_b_77497_d_64,Year-Round Service (Sunday only),0,0,0,0,0,0,1,20221001,20241001 -c_67295_b_77497_d_32,Year-Round Service (Saturday only),0,0,0,0,0,1,0,20221001,20241001 -c_67295_b_77497_d_31,Year-Round Service (Weekday),1,1,1,1,1,0,0,20221001,20241001 diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_attributes.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_attributes.txt deleted file mode 100644 index f5f2d6e6f..000000000 --- a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_attributes.txt +++ /dev/null @@ -1,4 +0,0 @@ -service_id,service_description -c_67295_b_77497_d_64,Year-Round Service (Sunday only) -c_67295_b_77497_d_32,Year-Round Service (Saturday only) -c_67295_b_77497_d_31,Year-Round Service (Weekday) diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_dates.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_dates.txt deleted file mode 100644 index 1b12a9eff..000000000 --- a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/calendar_dates.txt +++ /dev/null @@ -1,16 +0,0 @@ -service_id,date,holiday_name,exception_type -c_67295_b_77497_d_64,20240901,Sunday before Labor Day,2 -c_67295_b_77497_d_64,20240526,Sunday before Memorial Day,2 -c_67295_b_77497_d_64,20240331,Easter Sunday,2 -c_67295_b_77497_d_64,20231224,Christmas Eve,2 -c_67295_b_77497_d_64,20231126,Sunday after Thanksgiving,2 -c_67295_b_77497_d_32,20240831,Saturday before Labor Day,2 -c_67295_b_77497_d_32,20240525,Saturday before Memorial Day,2 -c_67295_b_77497_d_32,20231125,Saturday after Thanksgiving,2 -c_67295_b_77497_d_31,20240902,Labor Day,2 -c_67295_b_77497_d_31,20240704,Independence Day,2 -c_67295_b_77497_d_31,20240527,Memorial Day,2 -c_67295_b_77497_d_31,20240101,New Year's Day,2 -c_67295_b_77497_d_31,20231225,Christmas,2 -c_67295_b_77497_d_31,20231124,Day after Thanksgiving,2 -c_67295_b_77497_d_31,20231123,Thanksgiving Day,2 diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/directions.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/directions.txt deleted file mode 100644 index 5b0517e21..000000000 --- a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/brown-county-flex/directions.txt +++ /dev/null @@ -1,3 +0,0 @@ -route_id,direction_id,direction -74513,0,Loop -74362,0,No direction From 69102244b3774acb2a2a2f2600a97c662320b366 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Mon, 4 Dec 2023 23:12:10 +0100 Subject: [PATCH 107/123] Add support for separate location_group column --- .../onebusaway/gtfs/impl/StopTimeArray.java | 5 +++ .../gtfs/model/LocationGroupElement.java | 2 +- .../org/onebusaway/gtfs/model/StopTime.java | 25 +++++++++++++-- .../onebusaway/gtfs/model/StopTimeProxy.java | 2 ++ .../org/onebusaway/gtfs/GtfsTestData.java | 6 ++++ .../gtfs/serialization/FlexReaderTest.java | 18 +++++++++++ .../gtfs/auburn-transit-flex/agency.txt | 2 ++ .../auburn-transit-flex/booking_rules.txt | 2 ++ .../gtfs/auburn-transit-flex/calendar.txt | 2 ++ .../gtfs/auburn-transit-flex/feed_info.txt | 2 ++ .../auburn-transit-flex/location_groups.txt | 31 +++++++++++++++++++ .../gtfs/auburn-transit-flex/routes.txt | 2 ++ .../gtfs/auburn-transit-flex/stop_times.txt | 3 ++ .../gtfs/auburn-transit-flex/stops.txt | 31 +++++++++++++++++++ .../gtfs/auburn-transit-flex/trips.txt | 2 ++ 15 files changed, 132 insertions(+), 3 deletions(-) create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/agency.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/booking_rules.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/calendar.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/feed_info.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/location_groups.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/routes.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/stop_times.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/stops.txt create mode 100644 onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/trips.txt diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java index c03a8e1c7..4a68d8be7 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java @@ -273,6 +273,11 @@ public void setLocation(StopLocation location) { stops[index] = location; } + @Override + public void setLocationGroup(StopLocation group) { + stops[index] = group; + } + @Override public boolean isArrivalTimeSet() { return arrivalTimes[index] != StopTime.MISSING_VALUE; diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java index 05cba1665..f12f17c08 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/LocationGroupElement.java @@ -31,7 +31,7 @@ public class LocationGroupElement extends IdentityBean { @CsvField(name = "location_group_id", mapping = DefaultAgencyIdFieldMappingFactory.class) private AgencyAndId locationGroupId; - @CsvField(name = "location_id", mapping = StopLocationFieldMappingFactory.class) + @CsvField(name = "stop_id", mapping = StopLocationFieldMappingFactory.class) private StopLocation location; @CsvField(optional = true) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index 20430db1a..650a349d3 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -16,7 +16,6 @@ */ package org.onebusaway.gtfs.model; -import java.util.Objects; import org.onebusaway.csv_entities.schema.annotations.CsvField; import org.onebusaway.csv_entities.schema.annotations.CsvFields; import org.onebusaway.gtfs.serialization.mappings.EntityFieldMappingFactory; @@ -52,6 +51,9 @@ public final class StopTime extends IdentityBean implements @CsvField(name = "location_id", optional = true, mapping = StopLocationFieldMappingFactory.class) private StopLocation location; + @CsvField(name = "location_group_id", optional = true, mapping = StopLocationFieldMappingFactory.class) + private StopLocation locationGroup; + @CsvField(optional = true, mapping = StopTimeFieldMappingFactory.class) private int arrivalTime = MISSING_VALUE; @@ -201,6 +203,7 @@ public StopTime(StopTime st) { this.farePeriodId = st.farePeriodId; this.stop = st.stop; this.location = st.location; + this.locationGroup = st.locationGroup; this.stopHeadsign = st.stopHeadsign; this.stopSequence = st.stopSequence; this.toStopSequence = st.toStopSequence; @@ -293,9 +296,19 @@ public StopLocation getLocation() { * Returns possible entity for the stop location in this order: * - stop * - location + * - location group */ public StopLocation getStopLocation(){ - return Objects.requireNonNullElseGet(getStop(), this::getLocation); + if(stop != null){ + return stop; + } + else if(location != null) { + return location; + } + else if(locationGroup != null){ + return locationGroup; + } + return null; } public void setStop(StopLocation stop) { @@ -314,6 +327,14 @@ public void setLocation(StopLocation location) { this.location = location; } + public void setLocationGroup(StopLocation group) { + if (proxy != null) { + proxy.setLocationGroup(group); + return; + } + this.locationGroup = group; + } + public boolean isArrivalTimeSet() { if (proxy != null) { return proxy.isArrivalTimeSet(); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java index 1cbc75afa..8c15531ac 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java @@ -51,6 +51,8 @@ public interface StopTimeProxy { public void setLocation(StopLocation stop); + public void setLocationGroup(StopLocation stop); + public boolean isArrivalTimeSet(); public int getArrivalTime(); diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java index 37c7981a3..4e21dea45 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/GtfsTestData.java @@ -49,6 +49,8 @@ private static String gtfsPath(String name) { public static final String BROWN_COUNTY_FLEX = gtfsPath("brown-county-flex"); + public static final String AUBURN_TRANSIT_FLEX = gtfsPath("auburn-transit-flex"); + public static final String LOCATIONS_GEOJSON = gtfsPath("locations.geojson"); public static File getCaltrainGtfs() { @@ -88,6 +90,10 @@ public static File getBrownCountyFlex() { return new File("src/test/resources", BROWN_COUNTY_FLEX); } + public static File getAuburnTransitFlex() { + return new File("src/test/resources", AUBURN_TRANSIT_FLEX); + } + public static void readGtfs(T entityStore, File resourcePath, String defaultAgencyId) throws IOException { diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java index 12d7fcd37..79557807a 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/serialization/FlexReaderTest.java @@ -28,6 +28,7 @@ import org.onebusaway.csv_entities.exceptions.CsvEntityIOException; import org.onebusaway.gtfs.GtfsTestData; import org.onebusaway.gtfs.model.Location; +import org.onebusaway.gtfs.model.LocationGroup; import org.onebusaway.gtfs.model.Stop; import org.onebusaway.gtfs.model.StopArea; import org.onebusaway.gtfs.model.StopLocation; @@ -101,6 +102,23 @@ public void locationIdAsASeparateColumn() throws CsvEntityIOException, IOExcepti assertEquals(Location.class, second.getClass()); } + @Test + public void locationGroupIdAsSeparateColumn() throws CsvEntityIOException, IOException { + var dao = processFeed(GtfsTestData.getAuburnTransitFlex(), AGENCY_ID, false); + var trip = dao.getAllTrips().stream().filter(t -> t.getId().getId().equals("t_5756013_b_33000_tn_0")).findAny().get(); + var stopTimes = dao.getStopTimesForTrip(trip); + stopTimes.forEach(st -> assertNotNull(st.getStopLocation())); + + var stopLocations = stopTimes.stream().map(StopTime::getStopLocation).collect(Collectors.toList()); + var first = stopLocations.get(0); + assertEquals("4230479", first.getId().getId()); + assertEquals(LocationGroup.class, first.getClass()); + + var second = stopLocations.get(1); + assertEquals("4230479", second.getId().getId()); + assertEquals(LocationGroup.class, second.getClass()); + } + private static StopArea getArea(List stopAreas, String id) { return stopAreas.stream().filter(a -> a.getId().toString().equals(id)).findAny().get(); } diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/agency.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/agency.txt new file mode 100644 index 000000000..98b463871 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/agency.txt @@ -0,0 +1,2 @@ +agency_id,agency_url,agency_lang,agency_name,agency_phone,agency_timezone,agency_fare_url,tts_agency_name +1593,https://www.auburn.ca.gov/192/Transit-Services,en,Auburn Transit,(530) 906-3700,America/Los_Angeles,, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/booking_rules.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/booking_rules.txt new file mode 100644 index 000000000..e9ef19c28 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/booking_rules.txt @@ -0,0 +1,2 @@ +booking_rule_id,booking_type,prior_notice_duration_min,prior_notice_duration_max,prior_notice_start_day,prior_notice_start_time,prior_notice_last_day,prior_notice_last_time,prior_notice_service_id,message,pickup_message,drop_off_message,phone_number,info_url,booking_url +booking_route_32372,0,,,,,,,,"Auburn Transit provides transportation to and from any Auburn Loop bus stop as well as deviations up to ½ mile throughout the City and parts of surrounding Placer County. To request a ride, call 530-906-3171. Booking through the TransLoc app is available as well.",,,530-906-3171,https://www.auburn.ca.gov/584/Auburn-Loop, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/calendar.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/calendar.txt new file mode 100644 index 000000000..3cd13126d --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/calendar.txt @@ -0,0 +1,2 @@ +service_id,service_name,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date +c_23810_b_33000_d_63,Loop year round (No Sunday),1,1,1,1,1,1,0,20231001,20241001 diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/feed_info.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/feed_info.txt new file mode 100644 index 000000000..ae3fc4403 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/feed_info.txt @@ -0,0 +1,2 @@ +feed_publisher_url,feed_publisher_name,feed_lang,feed_version,feed_license,feed_contact_email,feed_contact_url,feed_start_date,feed_end_date,feed_id +http://www.trilliumtransit.com,"Trillium Solutions, Inc.",en,UTC: 27-Nov-2023 16:52,,support+test+auburntransit-ca-us@trilliumtransit.com,http://support.trilliumtransit.com,20231127,20241001,auburntransit-ca-us diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/location_groups.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/location_groups.txt new file mode 100644 index 000000000..7fcf9b6d2 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/location_groups.txt @@ -0,0 +1,31 @@ +location_group_id,stop_id,location_group_name +4230479,2583236,Aurburn Loop Stops +4230479,2583237,Aurburn Loop Stops +4230479,2583238,Aurburn Loop Stops +4230479,2583242,Aurburn Loop Stops +4230479,2583244,Aurburn Loop Stops +4230479,2583246,Aurburn Loop Stops +4230479,2583249,Aurburn Loop Stops +4230479,2583250,Aurburn Loop Stops +4230479,2583251,Aurburn Loop Stops +4230479,2583252,Aurburn Loop Stops +4230479,2583253,Aurburn Loop Stops +4230479,2583254,Aurburn Loop Stops +4230479,2583255,Aurburn Loop Stops +4230479,2583256,Aurburn Loop Stops +4230479,2583259,Aurburn Loop Stops +4230479,2583260,Aurburn Loop Stops +4230479,2583262,Aurburn Loop Stops +4230479,2583263,Aurburn Loop Stops +4230479,2583266,Aurburn Loop Stops +4230479,2583268,Aurburn Loop Stops +4230479,2583271,Aurburn Loop Stops +4230479,2583276,Aurburn Loop Stops +4230479,2583280,Aurburn Loop Stops +4230479,2583281,Aurburn Loop Stops +4230479,2583282,Aurburn Loop Stops +4230479,2583284,Aurburn Loop Stops +4230479,2583285,Aurburn Loop Stops +4230479,2751414,Aurburn Loop Stops +4230479,3446932,Aurburn Loop Stops +4230479,3446933,Aurburn Loop Stops diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/routes.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/routes.txt new file mode 100644 index 000000000..6db29bf1c --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/routes.txt @@ -0,0 +1,2 @@ +agency_id,route_id,route_short_name,route_long_name,route_desc,route_type,route_url,route_color,route_text_color,route_sort_order,min_headway_minutes,eligibility_restricted,continuous_pickup,continuous_drop_off,tts_route_short_name,tts_route_long_name +1593,32372,,Auburn Loop,,3,https://www.auburn.ca.gov/584/Auburn-Loop,bf3c39,ffffff,0,60,0,1,1,, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/stop_times.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/stop_times.txt new file mode 100644 index 000000000..c8394e636 --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/stop_times.txt @@ -0,0 +1,3 @@ +trip_id,arrival_time,departure_time,stop_id,location_id,location_group_id,stop_sequence,stop_headsign,pickup_type,drop_off_type,shape_dist_traveled,timepoint,continuous_pickup,continuous_drop_off,pickup_booking_rule_id,drop_off_booking_rule_id,start_pickup_drop_off_window,end_pickup_drop_off_window,mean_duration_factor,mean_duration_offset,safe_duration_factor,safe_duration_offset,tts_stop_headsign +t_5756013_b_33000_tn_0,,,,,4230479,1,,2,1,,0,1,1,booking_route_32372,booking_route_32372,09:00:00,17:00:00,1,5.0,1,10.0, +t_5756013_b_33000_tn_0,,,,,4230479,2,,1,2,,0,1,1,booking_route_32372,booking_route_32372,09:00:00,17:00:00,1,5.0,1,10.0, \ No newline at end of file diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/stops.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/stops.txt new file mode 100644 index 000000000..00a4bfcec --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/stops.txt @@ -0,0 +1,31 @@ +stop_id,stop_code,platform_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,stop_url,location_type,parent_station,stop_timezone,position,direction,wheelchair_boarding,tts_stop_name +2583236,,,East Street,,38.89778,-121.07521,,,0,,America/Los_Angeles,,,0, +2583237,,,Auburn Palms,,38.9115,-121.07476,,,0,,America/Los_Angeles,,,0, +2583238,,,Luther Road/Teal Court,,38.92783,-121.07329,,,0,,America/Los_Angeles,,,0, +2583242,,,Auburn Townhomes,,38.91388,-121.06111,,,0,,America/Los_Angeles,,,0, +2583244,,,Boardman Street,,38.89948,-121.06572,,,0,,America/Los_Angeles,,,0, +2583246,,,Grocery Outlet,,38.90537,-121.07483,,,0,,America/Los_Angeles,,,0, +2583249,,,Nevada Station,,38.90333,-121.08272,,,0,,America/Los_Angeles,,,0, +2583250,,,Monkey Cat Restaurant,,38.90056,-121.0677,,,0,,America/Los_Angeles,,,0, +2583251,,,Savemart Shopping Center,,38.90575,-121.07379,,,0,,America/Los_Angeles,,,0, +2583252,,,Dairy Road/Incline Drive,,38.92185,-121.07193,,,0,,America/Los_Angeles,,,0, +2583253,,,Auburn Ravine Road/Dairy Road,,38.91524,-121.07249,,,0,,America/Los_Angeles,,,0, +2583254,,,Alta Vista School,,38.90957,-121.06419,,,0,,America/Los_Angeles,,,0, +2583255,,,Vista Care/Bowman Road,,38.93206,-121.05636,,,0,,America/Los_Angeles,,,0, +2583256,,,Valley Oaks,,38.91028,-121.07434,,,0,,America/Los_Angeles,,,0, +2583259,,,Dairy Road/Dairy Lane,,38.92483,-121.07223,,,0,,America/Los_Angeles,,,0, +2583260,,,Auburn Crossing,,38.92175,-121.05712,,,0,,America/Los_Angeles,,,0, +2583262,,,Macauley Meadows,,38.87837,-121.0796,,,0,,America/Los_Angeles,,,0, +2583263,,,Luther Road/Garth Lane,,38.92821,-121.05809,,,0,,America/Los_Angeles,,,0, +2583266,,,Sacramento/Pacific,,38.88622,-121.0759,,,0,,America/Los_Angeles,,,0, +2583268,,,Borland Avenue,,38.89978,-121.0646,,,0,,America/Los_Angeles,,,0, +2583271,,,Raley's Shopping Center,,38.92357,-121.05455,,,0,,America/Los_Angeles,,,0, +2583276,,,Courthouse,,38.89712,-121.07753,,,0,,America/Los_Angeles,,,0, +2583280,,,Sacramento Street 7-11,,38.8897,-121.07612,,,0,,America/Los_Angeles,,,0, +2583281,,,Reamer Street/High Street,,38.90169,-121.06872,,,0,,America/Los_Angeles,,,0, +2583282,,,Old Town,,38.8957,-121.07827,,,0,,America/Los_Angeles,,,0, +2583284,,,Elders,,38.89871,-121.07141,,,0,,America/Los_Angeles,,,0, +2583285,,,Foothill Market,,38.91602,-121.06076,,,0,,America/Los_Angeles,,,0, +2751414,,,Gold Country Fairgrounds,,38.8936,-121.07532,,,0,,America/Los_Angeles,,,0, +3446932,,,Roadway Inn,,38.92748,-121.05575,,,0,,America/Los_Angeles,,,0, +3446933,,,Depot Bay,,38.90066,-121.0691,,,0,,America/Los_Angeles,,,0, diff --git a/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/trips.txt b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/trips.txt new file mode 100644 index 000000000..d97b19cfa --- /dev/null +++ b/onebusaway-gtfs/src/test/resources/org/onebusaway/gtfs/auburn-transit-flex/trips.txt @@ -0,0 +1,2 @@ +route_id,service_id,trip_id,trip_short_name,trip_headsign,direction_id,block_id,shape_id,bikes_allowed,wheelchair_accessible,trip_type,continuous_pickup_message,continuous_drop_off_message,tts_trip_headsign,tts_trip_short_name +32372,c_23810_b_33000_d_63,t_5756013_b_33000_tn_0,,,0,,,,,,,,, From fe9f32e6181c7fa5db933366ad313518ddf2e498 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Mon, 4 Dec 2023 23:22:49 +0100 Subject: [PATCH 108/123] Add getter --- .../main/java/org/onebusaway/gtfs/impl/StopTimeArray.java | 5 +++++ .../src/main/java/org/onebusaway/gtfs/model/StopTime.java | 7 +++++++ .../main/java/org/onebusaway/gtfs/model/StopTimeProxy.java | 1 + 3 files changed, 13 insertions(+) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java index 4a68d8be7..a2a73f1be 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/StopTimeArray.java @@ -263,6 +263,11 @@ public StopLocation getLocation() { return stops[index]; } + @Override + public StopLocation getLocationGroup() { + return stops[index]; + } + @Override public void setStop(StopLocation stop) { stops[index] = stop; diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index 650a349d3..e65882cf0 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -292,6 +292,13 @@ public StopLocation getLocation() { return location; } + public StopLocation getLocationGroup() { + if (proxy != null) { + return proxy.getLocationGroup(); + } + return locationGroup; + } + /** * Returns possible entity for the stop location in this order: * - stop diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java index 8c15531ac..21f8f5251 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTimeProxy.java @@ -46,6 +46,7 @@ public interface StopTimeProxy { public StopLocation getStop(); public StopLocation getLocation(); + public StopLocation getLocationGroup(); public void setStop(StopLocation stop); From 11265355205b16f64709ec96b5c3323fb9690491 Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Mon, 4 Dec 2023 23:44:57 +0100 Subject: [PATCH 109/123] Add annotations --- .../src/main/java/org/onebusaway/gtfs/model/StopTime.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java index e65882cf0..7e9bb9a72 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/StopTime.java @@ -278,6 +278,7 @@ public void setToStopSequence(Integer toStopSequence) { this.toStopSequence = toStopSequence; } + @Override public StopLocation getStop() { if (proxy != null) { return proxy.getStop(); @@ -285,6 +286,7 @@ public StopLocation getStop() { return stop; } + @Override public StopLocation getLocation() { if (proxy != null) { return proxy.getLocation(); @@ -292,6 +294,7 @@ public StopLocation getLocation() { return location; } + @Override public StopLocation getLocationGroup() { if (proxy != null) { return proxy.getLocationGroup(); From 06cd51f3ef03ad06734605c5c837f61ae4905068 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Mon, 11 Dec 2023 10:23:23 -0500 Subject: [PATCH 110/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.10 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 75524f589..a6d972c8c 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10-SNAPSHOT + 1.4.10 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index dc6c37c56..fffca5f3d 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10-SNAPSHOT + 1.4.10 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 58aafcbe7..d7b04a48c 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.10-SNAPSHOT + 1.4.10 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index dc099161d..649bfa758 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.10-SNAPSHOT + 1.4.10 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 51e555766..6bcd6ba6c 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10-SNAPSHOT + 1.4.10 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 280110155..d721fc5a1 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10-SNAPSHOT + 1.4.10 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 8e3b07800..afd3ed8b7 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10-SNAPSHOT + 1.4.10 org.onebusaway onebusaway-gtfs - 1.4.10-SNAPSHOT + 1.4.10 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index a0c6a50f3..45fe92bae 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10-SNAPSHOT + 1.4.10 diff --git a/pom.xml b/pom.xml index 51420a3c3..2a4fd9402 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.10-SNAPSHOT + 1.4.10 pom onebusaway-gtfs-modules @@ -25,7 +25,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.10 From f849874928f74da4e09c9f84188788dbb67c2a06 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Mon, 11 Dec 2023 10:23:35 -0500 Subject: [PATCH 111/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index a6d972c8c..08c721ccd 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10 + 1.4.11-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index fffca5f3d..0774b1cd7 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10 + 1.4.11-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index d7b04a48c..0c09537ab 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.10 + 1.4.11-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 649bfa758..ac692d7a8 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.10 + 1.4.11-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 6bcd6ba6c..f5a0c5013 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10 + 1.4.11-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index d721fc5a1..679749a76 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10 + 1.4.11-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index afd3ed8b7..1b8f151bd 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10 + 1.4.11-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.10 + 1.4.11-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 45fe92bae..62dc859b4 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.10 + 1.4.11-SNAPSHOT diff --git a/pom.xml b/pom.xml index 2a4fd9402..ef10c26e4 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.10 + 1.4.11-SNAPSHOT pom onebusaway-gtfs-modules @@ -25,7 +25,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.10 + HEAD From 166e24c8a89efbdc46fc22e104e1f74426fdb758 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Mon, 8 Jan 2024 15:09:42 -0500 Subject: [PATCH 112/123] MTA-50 add service interval support to calendar --- .../gtfs/impl/GtfsDataServiceImpl.java | 6 + .../impl/calendar/CalendarServiceImpl.java | 34 +++++- .../model/calendar/AgencyServiceInterval.java | 112 ++++++++++++++++++ .../services/calendar/CalendarService.java | 9 +- .../CalendarServiceImplSyntheticTest.java | 75 ++++++++++-- 5 files changed, 215 insertions(+), 21 deletions(-) create mode 100644 onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/calendar/AgencyServiceInterval.java diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java index 373d5c471..033eb3976 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/GtfsDataServiceImpl.java @@ -478,6 +478,12 @@ public List getServiceDateArrivalsWithinRange(LocalizedServiceId serviceId return _calendarService.getServiceDateArrivalsWithinRange(serviceId, interval, from, to); } + @Override + public boolean isLocalizedServiceIdActiveInRange(LocalizedServiceId serviceId, + ServiceInterval scheduledService, + AgencyServiceInterval serviceInterval) { + return _calendarService.isLocalizedServiceIdActiveInRange(serviceId, scheduledService, serviceInterval); + } @Override public Map> getServiceDateArrivalsWithinRange(ServiceIdIntervals serviceIdIntervals, Date from, Date to) { return _calendarService.getServiceDateArrivalsWithinRange(serviceIdIntervals, from, to); diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImpl.java index e6d8db2be..fb5d7714d 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImpl.java @@ -27,11 +27,7 @@ import java.util.TimeZone; import org.onebusaway.gtfs.model.AgencyAndId; -import org.onebusaway.gtfs.model.calendar.CalendarServiceData; -import org.onebusaway.gtfs.model.calendar.LocalizedServiceId; -import org.onebusaway.gtfs.model.calendar.ServiceDate; -import org.onebusaway.gtfs.model.calendar.ServiceIdIntervals; -import org.onebusaway.gtfs.model.calendar.ServiceInterval; +import org.onebusaway.gtfs.model.calendar.*; import org.onebusaway.gtfs.services.calendar.CalendarService; import org.onebusaway.gtfs.services.calendar.CalendarServiceDataFactory; @@ -126,6 +122,34 @@ public boolean isLocalizedServiceIdActiveOnDate( return Collections.binarySearch(dates, serviceDate) >= 0; } + /** + * test if the given calendar servieId is active in the union of the activeService + * window and the agencyServiceInterval. + * @param localizedServiceId + * @param activeService + * @param agencyServiceInterval + * @return + */ + public boolean isLocalizedServiceIdActiveInRange(LocalizedServiceId localizedServiceId, + ServiceInterval activeService, + AgencyServiceInterval agencyServiceInterval) { + if (agencyServiceInterval == null || agencyServiceInterval.getServiceDate() == null) { + throw new IllegalStateException("agencyServiceInterval cannot be null"); + } + ServiceInterval serviceInterval = agencyServiceInterval.getServiceInterval(localizedServiceId.getId().getAgencyId()); + + boolean active = isLocalizedServiceIdActiveOnDate(localizedServiceId, agencyServiceInterval.getServiceDate().getAsDate()); + if (active) { + // even if a match is found enforce overlap in service intervals + if ( Math.max(activeService.getMinArrival(), serviceInterval.getMinArrival()) + < Math.min(activeService.getMaxDeparture(), serviceInterval.getMaxDeparture())) { + return true; + } + } + + return false; + } + @Override public List getServiceDateArrivalsWithinRange( LocalizedServiceId serviceId, ServiceInterval interval, Date from, Date to) { diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/calendar/AgencyServiceInterval.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/calendar/AgencyServiceInterval.java new file mode 100644 index 000000000..26b1210d8 --- /dev/null +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/calendar/AgencyServiceInterval.java @@ -0,0 +1,112 @@ +/** + * Copyright (C) 2024 Cambridge Systematics, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onebusaway.gtfs.model.calendar; + +import java.io.Serializable; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * Represent a service interval (a period of defined transit both scheduled and dynamic) + * that exists on a given service date and window relative to that date. The times may differ + * based on the specified agency. The net effect is that the period of consideration can + * be smaller for more frequent service (such as a subway/BRT provider) vs a traditional + * fixed bus service. + */ +public class AgencyServiceInterval implements Serializable { + + public static final int SECONDS_IN_DAY = 24 * 60 * 60; + + private final long _referenceTime; + private final ServiceDate _serviceDate; + + /** + * Map of overrides that have a different window of applicability of service relative + * to the reference time. The default is the entire service date. Values should be + * AGENCY_ID, MINUTES_AFTER_REFERENCE_TIME. + * + */ + private final Map _overridesByAgencyId = new HashMap<>(); + + + public AgencyServiceInterval(long referenceTime) { + _referenceTime = referenceTime; + _serviceDate = new ServiceDate(new Date(referenceTime)); + } + + public AgencyServiceInterval(ServiceDate serviceDate) { + _referenceTime = serviceDate.getAsDate().getTime(); + _serviceDate = serviceDate; + } + + public AgencyServiceInterval(long referenceTime, Map agencyIdOverrides) { + _referenceTime = referenceTime; + _serviceDate = new ServiceDate(new Date(referenceTime)); + if (agencyIdOverrides != null) + _overridesByAgencyId.putAll(agencyIdOverrides); + } + + public ServiceDate getServiceDate() { + return _serviceDate; + } + + public ServiceInterval getServiceInterval(String agencyId) { + + if (_overridesByAgencyId.containsKey(agencyId)) { + // override will be referenceTime, referenceTime+window (in minutes) + ServiceDate serviceDate = new ServiceDate(new Date(_referenceTime)); + int startSecondsIntoDay = Math.toIntExact(_referenceTime - serviceDate.getAsDate().getTime()) / 1000; + int endSecondsIntoDay = startSecondsIntoDay + (_overridesByAgencyId.get(agencyId) * 60); + return new ServiceInterval(startSecondsIntoDay, endSecondsIntoDay); + } + // default will be 0, endOfDay (aka entire service day) + return new ServiceInterval(0, SECONDS_IN_DAY); + } + public Date getFrom(String agencyId) { + if (_overridesByAgencyId.containsKey(agencyId)) + return new Date(_referenceTime); + return new Date(_referenceTime); + } + + public Date getTo(String agencyId) { + if (_overridesByAgencyId.containsKey(agencyId)) + return new Date(_referenceTime + _overridesByAgencyId.get(agencyId) * 60 * 1000); + return endOfDay(_serviceDate); + + } + + private Date endOfDay(ServiceDate serviceDate) { + final Calendar cal = Calendar.getInstance(); + cal.setTime(serviceDate.getAsDate()); + cal.set(Calendar.HOUR_OF_DAY, 23); + cal.set(Calendar.MINUTE, 59); + cal.set(Calendar.SECOND, 59); + cal.set(Calendar.MILLISECOND, 999); + return cal.getTime(); + } + private Date startOfDay(ServiceDate serviceDate) { + final Calendar cal = Calendar.getInstance(); + cal.setTime(serviceDate.getAsDate()); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 000); + return cal.getTime(); + + } +} diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/calendar/CalendarService.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/calendar/CalendarService.java index 4982ec744..43d467036 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/calendar/CalendarService.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/services/calendar/CalendarService.java @@ -27,11 +27,7 @@ import org.onebusaway.gtfs.model.ServiceCalendarDate; import org.onebusaway.gtfs.model.StopTime; import org.onebusaway.gtfs.model.Trip; -import org.onebusaway.gtfs.model.calendar.CalendarServiceData; -import org.onebusaway.gtfs.model.calendar.LocalizedServiceId; -import org.onebusaway.gtfs.model.calendar.ServiceDate; -import org.onebusaway.gtfs.model.calendar.ServiceIdIntervals; -import org.onebusaway.gtfs.model.calendar.ServiceInterval; +import org.onebusaway.gtfs.model.calendar.*; /** * While the set of {@link ServiceCalendar} and {@link ServiceCalendarDate} @@ -129,6 +125,9 @@ public LocalizedServiceId getLocalizedServiceIdForAgencyAndServiceId( public boolean isLocalizedServiceIdActiveOnDate( LocalizedServiceId localizedServiceId, Date serviceDate); + public boolean isLocalizedServiceIdActiveInRange( + LocalizedServiceId localizedServiceId, ServiceInterval activeService, AgencyServiceInterval serviceInterval); + /** * Given the specified localized service id, which has a corresponding set of * localized service dates, determine the sublist of service dates that, when diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImplSyntheticTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImplSyntheticTest.java index 79f4c8eb9..0a4ad1be1 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImplSyntheticTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImplSyntheticTest.java @@ -22,24 +22,19 @@ import static org.onebusaway.gtfs.DateSupport.date; import static org.onebusaway.gtfs.DateSupport.hourToSec; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TimeZone; +import java.util.*; import org.junit.Before; import org.junit.Test; import org.onebusaway.gtfs.model.AgencyAndId; -import org.onebusaway.gtfs.model.calendar.CalendarServiceData; -import org.onebusaway.gtfs.model.calendar.LocalizedServiceId; -import org.onebusaway.gtfs.model.calendar.ServiceDate; -import org.onebusaway.gtfs.model.calendar.ServiceIdIntervals; +import org.onebusaway.gtfs.model.calendar.*; public class CalendarServiceImplSyntheticTest { + static { + // avoid timezone conversions + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); + } private TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); private ServiceDate d1 = new ServiceDate(2010, 02, 01); @@ -447,6 +442,64 @@ public void testGetPreviousArrivalServiceDates05() { assertTrue(dates.contains(d1.getAsDate(tz))); } + @Test + public void testAgencyOverrideOverlap() { + long baseTime = d1.getAsDate().getTime(); + + Map oneHourOverride = new HashMap<>(); + oneHourOverride.put("A", 60); // 60 minute window instead of entire service day + + Map twoHourOverride = new HashMap<>(); + twoHourOverride.put("A", 120); // 2 hour window instead of entire service day + + // active service 6:00 -> 7:00 + // 6:00 + 1 service interval + ServiceInterval sixOclockScheudledService = new ServiceInterval(hourToSec(6), hourToSec(7)); + AgencyServiceInterval sixOclock1HourQuery = new AgencyServiceInterval(baseTime + hourToSec(6)*1000, oneHourOverride); + boolean active = service.isLocalizedServiceIdActiveInRange(lsid1, sixOclockScheudledService, sixOclock1HourQuery); + assertTrue(active); // this should be an exact match + + // active service 6:00 -> 7:00 + // 5 + 1 service interval + AgencyServiceInterval fiveOclock1HourQuery = new AgencyServiceInterval(baseTime + hourToSec(5)*1000, oneHourOverride); + active = service.isLocalizedServiceIdActiveInRange(lsid1, sixOclockScheudledService, fiveOclock1HourQuery); + assertFalse(active); + + // active service 6:00 -> 7:00 + // 7 + 1 service interval + AgencyServiceInterval sevenOclock1HourQuery = new AgencyServiceInterval(baseTime + hourToSec(7)*1000, oneHourOverride); + active = service.isLocalizedServiceIdActiveInRange(lsid1, sixOclockScheudledService, sevenOclock1HourQuery); + assertFalse(active); + + // active service 6:00 -> 7:00 + // 5 + 2 service interval + AgencyServiceInterval fiveOclock2HourQuery = new AgencyServiceInterval(baseTime + hourToSec(5)*1000, twoHourOverride); + active = service.isLocalizedServiceIdActiveInRange(lsid1, sixOclockScheudledService, fiveOclock2HourQuery); + assertTrue(active); + + // active service 6:00 -> 25:00 + // 12 + 1 + AgencyServiceInterval lunchInterval1HourOverride = new AgencyServiceInterval(baseTime + hourToSec(12)*1000, oneHourOverride); + ServiceInterval exactMatchInterval = new ServiceInterval(hourToSec(6), hourToSec(25)); + active = service.isLocalizedServiceIdActiveInRange(lsid1, exactMatchInterval, lunchInterval1HourOverride); + assertTrue(active); + } + + @Test + public void testOverlapNoOverride() { + long baseTime = d1.getAsDate().getTime(); + AgencyServiceInterval defaultInterval = new AgencyServiceInterval(baseTime); + // active service 6:00 -> 7:00 + ServiceInterval sixOclockScheudledService = new ServiceInterval(hourToSec(6), hourToSec(7)); + boolean active = service.isLocalizedServiceIdActiveInRange(lsid1, sixOclockScheudledService, defaultInterval); + assertTrue(active); + + long yesterday = d1.getAsDate().getTime() - hourToSec(24) * 1000; + AgencyServiceInterval tomorrowInterval = new AgencyServiceInterval(yesterday); + active = service.isLocalizedServiceIdActiveInRange(lsid1, sixOclockScheudledService, tomorrowInterval); + assertFalse(active); + } + /**** * Private Methods ****/ From 5d2d6b08f1b3ae9f3f748738e7d3dc190dff663c Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Mon, 8 Jan 2024 15:22:05 -0500 Subject: [PATCH 113/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.11 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 08c721ccd..a6f517fe9 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11-SNAPSHOT + 1.4.11 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 0774b1cd7..9a3b11e03 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11-SNAPSHOT + 1.4.11 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 0c09537ab..4911562cb 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.11-SNAPSHOT + 1.4.11 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index ac692d7a8..0ed622ffd 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.11-SNAPSHOT + 1.4.11 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index f5a0c5013..f5893a2ca 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11-SNAPSHOT + 1.4.11 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 679749a76..f2a7c6617 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11-SNAPSHOT + 1.4.11 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 1b8f151bd..88803fe72 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11-SNAPSHOT + 1.4.11 org.onebusaway onebusaway-gtfs - 1.4.11-SNAPSHOT + 1.4.11 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 62dc859b4..16a2ff44f 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11-SNAPSHOT + 1.4.11 diff --git a/pom.xml b/pom.xml index ef10c26e4..d13ecc7de 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.11-SNAPSHOT + 1.4.11 pom onebusaway-gtfs-modules @@ -25,7 +25,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.11 From ce10b74ab076bb72e79c2cd7715e203985419c7f Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Mon, 8 Jan 2024 15:22:17 -0500 Subject: [PATCH 114/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index a6f517fe9..922e2c49d 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11 + 1.4.12-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 9a3b11e03..5867e7918 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11 + 1.4.12-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 4911562cb..5f1d58048 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.11 + 1.4.12-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 0ed622ffd..c8db9856b 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.11 + 1.4.12-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index f5893a2ca..f5a934ab2 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11 + 1.4.12-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index f2a7c6617..6d71452cf 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11 + 1.4.12-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 88803fe72..2d9da8b32 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11 + 1.4.12-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.11 + 1.4.12-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 16a2ff44f..cd917520e 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.11 + 1.4.12-SNAPSHOT diff --git a/pom.xml b/pom.xml index d13ecc7de..afd8a906b 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.11 + 1.4.12-SNAPSHOT pom onebusaway-gtfs-modules @@ -25,7 +25,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.11 + HEAD From 9855acbd8bd2012608660ad69ed02b60a25de343 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 9 Jan 2024 15:42:59 -0500 Subject: [PATCH 115/123] mysql 8 support --- onebusaway-gtfs-hibernate/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 5867e7918..0251f6b28 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -32,9 +32,9 @@ test - mysql - mysql-connector-java - 5.1.48 + com.mysql + mysql-connector-j + 8.2.0 junit From 446a061c3a52ecc4871fdbffc08bc8845f6961b9 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 9 Jan 2024 15:51:30 -0500 Subject: [PATCH 116/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.12 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 922e2c49d..1ce580ee3 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12-SNAPSHOT + 1.4.12 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 0251f6b28..59aa1072b 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12-SNAPSHOT + 1.4.12 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 5f1d58048..6684d5a8d 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.12-SNAPSHOT + 1.4.12 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index c8db9856b..a788c427e 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.12-SNAPSHOT + 1.4.12 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index f5a934ab2..de687147e 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12-SNAPSHOT + 1.4.12 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 6d71452cf..56b91ddde 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12-SNAPSHOT + 1.4.12 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 2d9da8b32..66882c53a 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12-SNAPSHOT + 1.4.12 org.onebusaway onebusaway-gtfs - 1.4.12-SNAPSHOT + 1.4.12 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index cd917520e..ec4330095 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12-SNAPSHOT + 1.4.12 diff --git a/pom.xml b/pom.xml index afd8a906b..7af21af8f 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.12-SNAPSHOT + 1.4.12 pom onebusaway-gtfs-modules @@ -25,7 +25,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.12 From dcfaaa82622556f83a7e8d92509470dbaf0ae955 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Tue, 9 Jan 2024 15:51:42 -0500 Subject: [PATCH 117/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 1ce580ee3..db2a8ab4e 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12 + 1.4.13-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 59aa1072b..b460e50ab 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12 + 1.4.13-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 6684d5a8d..399186d34 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.12 + 1.4.13-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index a788c427e..179f74261 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.12 + 1.4.13-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index de687147e..b751e49eb 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12 + 1.4.13-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 56b91ddde..fa5126aa9 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12 + 1.4.13-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 66882c53a..2f7627442 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12 + 1.4.13-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.12 + 1.4.13-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index ec4330095..5dfa7f214 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.12 + 1.4.13-SNAPSHOT diff --git a/pom.xml b/pom.xml index 7af21af8f..d8c82f0ad 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.12 + 1.4.13-SNAPSHOT pom onebusaway-gtfs-modules @@ -25,7 +25,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.12 + HEAD From 526b8798f07c4ecd24e71efff4c8254bf17b77da Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 12 Jan 2024 10:00:56 -0500 Subject: [PATCH 118/123] bug fix on point in time service date checks --- .../gtfs/impl/calendar/CalendarServiceImpl.java | 4 ++-- .../calendar/CalendarServiceImplSyntheticTest.java | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImpl.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImpl.java index fb5d7714d..4336f4381 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImpl.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImpl.java @@ -141,8 +141,8 @@ public boolean isLocalizedServiceIdActiveInRange(LocalizedServiceId localizedSer boolean active = isLocalizedServiceIdActiveOnDate(localizedServiceId, agencyServiceInterval.getServiceDate().getAsDate()); if (active) { // even if a match is found enforce overlap in service intervals - if ( Math.max(activeService.getMinArrival(), serviceInterval.getMinArrival()) - < Math.min(activeService.getMaxDeparture(), serviceInterval.getMaxDeparture())) { + if (Math.max(activeService.getMinArrival(), serviceInterval.getMinArrival()) + <= Math.min(activeService.getMaxDeparture(), serviceInterval.getMaxDeparture())) { return true; } } diff --git a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImplSyntheticTest.java b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImplSyntheticTest.java index 0a4ad1be1..cb8294a16 100644 --- a/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImplSyntheticTest.java +++ b/onebusaway-gtfs/src/test/java/org/onebusaway/gtfs/impl/calendar/CalendarServiceImplSyntheticTest.java @@ -463,13 +463,13 @@ public void testAgencyOverrideOverlap() { // 5 + 1 service interval AgencyServiceInterval fiveOclock1HourQuery = new AgencyServiceInterval(baseTime + hourToSec(5)*1000, oneHourOverride); active = service.isLocalizedServiceIdActiveInRange(lsid1, sixOclockScheudledService, fiveOclock1HourQuery); - assertFalse(active); + assertTrue(active); // active service 6:00 -> 7:00 // 7 + 1 service interval AgencyServiceInterval sevenOclock1HourQuery = new AgencyServiceInterval(baseTime + hourToSec(7)*1000, oneHourOverride); active = service.isLocalizedServiceIdActiveInRange(lsid1, sixOclockScheudledService, sevenOclock1HourQuery); - assertFalse(active); + assertTrue(active); // active service 6:00 -> 7:00 // 5 + 2 service interval @@ -483,6 +483,13 @@ public void testAgencyOverrideOverlap() { ServiceInterval exactMatchInterval = new ServiceInterval(hourToSec(6), hourToSec(25)); active = service.isLocalizedServiceIdActiveInRange(lsid1, exactMatchInterval, lunchInterval1HourOverride); assertTrue(active); + + // point in time + AgencyServiceInterval stopCheck = new AgencyServiceInterval(baseTime + 43200, oneHourOverride); + ServiceInterval stopInterval = new ServiceInterval(43230,43230); + active = service.isLocalizedServiceIdActiveInRange(lsid1, stopInterval, lunchInterval1HourOverride); + assertTrue(active); + } @Test From 1e13433962c2ae4d5a3c31420ab70705b8c68f98 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 12 Jan 2024 10:10:58 -0500 Subject: [PATCH 119/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.13 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index db2a8ab4e..d41b2f26c 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13-SNAPSHOT + 1.4.13 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index b460e50ab..4cf60e5f3 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13-SNAPSHOT + 1.4.13 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 399186d34..ddc02656a 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.13-SNAPSHOT + 1.4.13 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 179f74261..203c95e6b 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.13-SNAPSHOT + 1.4.13 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index b751e49eb..fc6ab332c 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13-SNAPSHOT + 1.4.13 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index fa5126aa9..d1775cf1d 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13-SNAPSHOT + 1.4.13 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 2f7627442..f57ef1f48 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13-SNAPSHOT + 1.4.13 org.onebusaway onebusaway-gtfs - 1.4.13-SNAPSHOT + 1.4.13 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 5dfa7f214..9c0125518 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13-SNAPSHOT + 1.4.13 diff --git a/pom.xml b/pom.xml index d8c82f0ad..0d934657d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.13-SNAPSHOT + 1.4.13 pom onebusaway-gtfs-modules @@ -25,7 +25,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.13 From 1467be979c150d93c2e007d699beeb138ad5df1e Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Fri, 12 Jan 2024 10:11:10 -0500 Subject: [PATCH 120/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index d41b2f26c..61c9ea4d6 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13 + 1.4.14-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 4cf60e5f3..52c72884e 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13 + 1.4.14-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index ddc02656a..75f2e93fd 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.13 + 1.4.14-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 203c95e6b..6c7052898 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.13 + 1.4.14-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index fc6ab332c..b7373ea80 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13 + 1.4.14-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index d1775cf1d..e0796c70f 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13 + 1.4.14-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index f57ef1f48..98295401f 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13 + 1.4.14-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.13 + 1.4.14-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 9c0125518..744ff4c5e 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.13 + 1.4.14-SNAPSHOT diff --git a/pom.xml b/pom.xml index 0d934657d..e0de1d27f 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.13 + 1.4.14-SNAPSHOT pom onebusaway-gtfs-modules @@ -25,7 +25,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.13 + HEAD From c77f0f1e920310e778f632cf614b473ba31efe47 Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sat, 13 Jan 2024 11:02:23 -0500 Subject: [PATCH 121/123] adding equals to enable caching in OBA --- .../gtfs/model/calendar/AgencyServiceInterval.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/calendar/AgencyServiceInterval.java b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/calendar/AgencyServiceInterval.java index 26b1210d8..4d10844d3 100644 --- a/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/calendar/AgencyServiceInterval.java +++ b/onebusaway-gtfs/src/main/java/org/onebusaway/gtfs/model/calendar/AgencyServiceInterval.java @@ -107,6 +107,19 @@ private Date startOfDay(ServiceDate serviceDate) { cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 000); return cal.getTime(); + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof AgencyServiceInterval)) { + return false; + } + AgencyServiceInterval that = (AgencyServiceInterval) other; + return that._referenceTime == _referenceTime; + } + @Override + public int hashCode() { + return new Long(_referenceTime).hashCode(); } } From a91eb5f73c1fb69d9aacfcf3592b18cdbfe45fac Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sat, 13 Jan 2024 11:10:09 -0500 Subject: [PATCH 122/123] [maven-release-plugin] prepare release onebusaway-gtfs-modules-1.4.14 --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index 61c9ea4d6..a553c9149 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14-SNAPSHOT + 1.4.14 onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index 52c72884e..d2f463104 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14-SNAPSHOT + 1.4.14 diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index 75f2e93fd..c5776b3d9 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.14-SNAPSHOT + 1.4.14 .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 6c7052898..1251c72ef 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.14-SNAPSHOT + 1.4.14 .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index b7373ea80..04d7fb127 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14-SNAPSHOT + 1.4.14 diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index e0796c70f..516191ab8 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14-SNAPSHOT + 1.4.14 diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index 98295401f..b06c90652 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14-SNAPSHOT + 1.4.14 org.onebusaway onebusaway-gtfs - 1.4.14-SNAPSHOT + 1.4.14 org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 744ff4c5e..41cc83119 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14-SNAPSHOT + 1.4.14 diff --git a/pom.xml b/pom.xml index e0de1d27f..f7e46e774 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.14-SNAPSHOT + 1.4.14 pom onebusaway-gtfs-modules @@ -25,7 +25,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - HEAD + onebusaway-gtfs-modules-1.4.14 From ec7e84f97ce926d5dabd75f197422967008bcd7f Mon Sep 17 00:00:00 2001 From: sheldonabrown Date: Sat, 13 Jan 2024 11:10:21 -0500 Subject: [PATCH 123/123] [maven-release-plugin] prepare for next development iteration --- onebusaway-gtfs-hibernate-cli/pom.xml | 2 +- onebusaway-gtfs-hibernate/pom.xml | 2 +- onebusaway-gtfs-merge-cli/pom.xml | 2 +- onebusaway-gtfs-merge/pom.xml | 2 +- onebusaway-gtfs-transformer-cli-aws/pom.xml | 2 +- onebusaway-gtfs-transformer-cli/pom.xml | 2 +- onebusaway-gtfs-transformer/pom.xml | 4 ++-- onebusaway-gtfs/pom.xml | 2 +- pom.xml | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/onebusaway-gtfs-hibernate-cli/pom.xml b/onebusaway-gtfs-hibernate-cli/pom.xml index a553c9149..a638ba00d 100644 --- a/onebusaway-gtfs-hibernate-cli/pom.xml +++ b/onebusaway-gtfs-hibernate-cli/pom.xml @@ -3,7 +3,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14 + 1.4.15-SNAPSHOT onebusaway-gtfs-hibernate-cli onebusaway-gtfs-hibernate-cli diff --git a/onebusaway-gtfs-hibernate/pom.xml b/onebusaway-gtfs-hibernate/pom.xml index d2f463104..a4739711e 100644 --- a/onebusaway-gtfs-hibernate/pom.xml +++ b/onebusaway-gtfs-hibernate/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14 + 1.4.15-SNAPSHOT diff --git a/onebusaway-gtfs-merge-cli/pom.xml b/onebusaway-gtfs-merge-cli/pom.xml index c5776b3d9..cfdc003e1 100644 --- a/onebusaway-gtfs-merge-cli/pom.xml +++ b/onebusaway-gtfs-merge-cli/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.14 + 1.4.15-SNAPSHOT .. onebusaway-gtfs-merge-cli diff --git a/onebusaway-gtfs-merge/pom.xml b/onebusaway-gtfs-merge/pom.xml index 1251c72ef..44616a060 100644 --- a/onebusaway-gtfs-merge/pom.xml +++ b/onebusaway-gtfs-merge/pom.xml @@ -3,7 +3,7 @@ onebusaway-gtfs-modules org.onebusaway - 1.4.14 + 1.4.15-SNAPSHOT .. onebusaway-gtfs-merge diff --git a/onebusaway-gtfs-transformer-cli-aws/pom.xml b/onebusaway-gtfs-transformer-cli-aws/pom.xml index 04d7fb127..670b96cff 100644 --- a/onebusaway-gtfs-transformer-cli-aws/pom.xml +++ b/onebusaway-gtfs-transformer-cli-aws/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14 + 1.4.15-SNAPSHOT diff --git a/onebusaway-gtfs-transformer-cli/pom.xml b/onebusaway-gtfs-transformer-cli/pom.xml index 516191ab8..531b3f39b 100644 --- a/onebusaway-gtfs-transformer-cli/pom.xml +++ b/onebusaway-gtfs-transformer-cli/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14 + 1.4.15-SNAPSHOT diff --git a/onebusaway-gtfs-transformer/pom.xml b/onebusaway-gtfs-transformer/pom.xml index b06c90652..4d44bba37 100644 --- a/onebusaway-gtfs-transformer/pom.xml +++ b/onebusaway-gtfs-transformer/pom.xml @@ -9,14 +9,14 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14 + 1.4.15-SNAPSHOT org.onebusaway onebusaway-gtfs - 1.4.14 + 1.4.15-SNAPSHOT org.onebusaway diff --git a/onebusaway-gtfs/pom.xml b/onebusaway-gtfs/pom.xml index 41cc83119..1d5cd7220 100644 --- a/onebusaway-gtfs/pom.xml +++ b/onebusaway-gtfs/pom.xml @@ -9,7 +9,7 @@ org.onebusaway onebusaway-gtfs-modules - 1.4.14 + 1.4.15-SNAPSHOT diff --git a/pom.xml b/pom.xml index f7e46e774..fc0d06565 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ onebusaway-gtfs-modules - 1.4.14 + 1.4.15-SNAPSHOT pom onebusaway-gtfs-modules @@ -25,7 +25,7 @@ scm:git:https://github.com/OneBusAway/onebusaway-gtfs-modules.git scm:git:ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git https://github.com/OneBusAway/onebusaway-gtfs-modules - onebusaway-gtfs-modules-1.4.14 + HEAD