diff --git a/Creating_a_WZDx_Feed.md b/Creating_a_WZDx_Feed.md
new file mode 100644
index 00000000..60cfdda3
--- /dev/null
+++ b/Creating_a_WZDx_Feed.md
@@ -0,0 +1,57 @@
+# Creating a WZDx Feed
+This documents contains information to assist in creating a WZDx data feed, such as the feed format, business rules, and validation tools.
+
+## Feed Format and File Type
+WZDx feeds are formatted according to the [GeoJSON](https://geojson.org/) specification. The output of a WZDx feed is a GeoJSON document (a `.geojson` file) that contains a single [GeoJSON FeatureCollection](https://datatracker.ietf.org/doc/html/rfc7946#section-3.3) which includes information about the feed (see the [FeedInfo Object](/spec-content/objects/FeedInfo.md)) and a list of [GeoJSON Feature](https://datatracker.ietf.org/doc/html/rfc7946#section-3.2)s describing entities specific to the type of feed, such as work zones.
+
+### Why GeoJSON?
+GeoJSON is the file format of choice because:
+
+- It is a lightweight data exchange format.
+- It is easy for humans to read and write.
+- It is easy for machines to parse and generate.
+- The format is designed to exchange spatial data, which is a primary goal of the Work Zone Data Working Group.
+- It is an open specification and does not carry licensing burdens.
+- GeoJSON formatted-data is published as text files, so there is a low technological burden of entry.
+- GeoJSON validation, mapping, and visualization tools already exist and will ease adoption by producers and consumers.
+
+## Feed Content
+WZDx defines the content and structure of several data feeds. Each feed is described by a single root object with many child objects. The output of a WZDx data feed is a GeoJSON file containing the feed object. WZDx defines the following feed objects:
+
+- [WZDxFeed Object](/spec-content/objects/WZDxFeed.md): describes high-level information about work zone events ocurring on roadways (called "road events") that impact the characteristics of the roadway and involve a change from the default state (such as a lane closure). This is the original work zone data exchange feed and the only feed that WZDx defined until [version 4.0](https://github.com/usdot-jpo-ode/wzdx/releases/tag/v4.0).
+- [RoadRestrictionFeed Object](/spec-content/objects/RoadRestrictionFeed.md): describes the location and details of restrictions on roadways.
+- [SwzDeviceFeed Object](/spec-content/objects/SwzDeviceFeed.md): describes information (location, status, live data) about field devices deployed on the roadway in work zones.
+
+*See the [/spec-content/README.md](/spec-content/README.md) for detailed information on all objects defined by WZDx.*
+
+## Business Rules
+The following business rules help assure a standardized and interpretable use of the WZDx specification. The specification describes the required structure and data fields to describe a work zone, whereas business rules are additional requirements for using the WZDx specification in a standard manner. Note that business rules are distinct from best practices in that the latter are suggestions and business rules are requirements.
+
+### WZDxFeed (Work Zones) Business Rules
+1. Each direction of travel must be represented by a separate road event. For example, if there is a work zone on a roadway with two lanes, each in an opposite travel direction (↑↓), each direction must be a separate road event.
+2. Construction which requires alternating traffic flows within a lane must be represented with at least one road event in each direction. Similarly, roadways that during normal operation have an alternating flow of traffic direction based on time of day must be represented by at least one road event in each direction.
+3. The preferred [GeoJSON Geometry](https://tools.ietf.org/html/rfc7946#page-7) for a [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) is `LineString`, which allows indicating the full path of the road event. In cases where only the beginning and ending coordinates are available, the `MultiPoint` can be used.
+4. A cascading multi-lane closure should consider the speed of vehicles traveling through the work zone. If the distance between lane closures is short enough that time in a to-be-closed lane is not significant, which is common, the to-be-closed lane should be represented as closed to avoid traffic delays and potential crashes.
+5. A detour must be represented with a [RoadEvent](/spec-content/objects/RoadEvent.md) of type (i.e. with `event_type` of) `detour` and its containing [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) should have a `geometry` of `type` `LineString` to represent the full detour route. The detour road event should be connected to the work zone road event using the `relationship` property on the detour road event.
+6. If the `lanes` property on the [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md), [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md), or [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md) is provided, it must include one entry for every lane in the road event. Providing lane information for only some of the lanes in a road event is not allowed.
+
+## Data Validation
+
+### JSON Schemas
+The WZDx Specification defines a JSON schema for each feed (WZDx v2.0 and later) within the [schemas](/schemas) directory. The repository contains schemas for the following feeds:
+
+#### Current Version (4.0)
+- [WZDx v4.0 WZDxFeed](/schemas/4.0/WZDxFeed.json)
+- [WZDx v4.0 SwzDeviceFeed](/schemas/4.0/SwzDeviceFeed.json)
+- [WZDx v4.0 RoadRestrictionFeed](/schemas/4.0/RoadRestrictionFeed.json)
+
+#### Previous Versions
+- [WZDx v2.0 WZDxFeed](/schemas/2.0/WZDxFeed.json)
+- [WZDx v3.0 WZDxFeed](/schemas/3.0/WZDxFeed.json)
+- [WZDx v3.1 WZDxFeed](/schemas/3.1/WZDxFeed.json)
+
+### Self-Validation Checklist
+For a list of steps to take to make sure your data feed conforms to the specification and is ready to publish, follow the [Self-Validation Checklist](/documents/WZDx_Data_Feed_Self-Validation_Checklist.docx).
+
+### WZDx v1.1
+To validate data feeds and measure compliance with the v1.1 specification, the GSA/18F team developed a [prototype data validation tool](https://github.com/18F/usdot-jpo-ode-workzone-data-exchange/wiki).
\ No newline at end of file
diff --git a/README.md b/README.md
index 823de63a..8fd8c123 100644
--- a/README.md
+++ b/README.md
@@ -3,83 +3,49 @@
# Work Zone Data Exchange (WZDx) Specification
The Work Zone Data Exchange (WZDx) Specification aims to make harmonized work zone data provided by infrastructure owners and operators (IOOs) available for third party use, making travel on public roads safer and more efficient through ubiquitous access to data on work zone activity.
-The goal of WZDx is to enable widespread access to up-to-date information about dynamic conditions occurring on roads such as construction events. Currently, many IOOs maintain data on work zone activity. However, a lack of common data standards and convening mechanisms makes it difficult and costly for third parties such as original equipment manufacturers (OEMs) and navigation applications to access and use these data across various jurisdictions. WZDx seeks to be a common language for describing road events, simplying the design process for producers and the processing logic for consumers, and making work zone data more accessible.
+The goal of WZDx is to enable widespread access to up-to-date information about dynamic conditions occurring on roads such as construction events. Currently, many IOOs maintain data on work zone activity. However, a lack of common data standards and convening mechanisms makes it difficult and costly for third parties such as original equipment manufacturers (OEMs) and navigation applications to access and use these data across various jurisdictions. WZDx defines a common language for describing work zone information. This simplifies the design process for producers and the processing logic for consumers and makes work zone data more accessible.
-## Repostitory Organization
-The WZDx Specification repository contains two main subdirectories, each containing their own README file with additional information about the purpose and files within:
-
-
-1. [`create-feed`](/create-feed), which contains information regarding the creation of a WZDx feed, including feed format, example feeds, JSON schemas, and validation tools.
-2. [`spec-content`](/spec-content), which details the data content of the WZDx specification, including objects, property names and types, and enumerated types.
-
-
-Two additional directories, [`images`](/images) and [`documents`](/documents), contain the images that are referenced throughout the repository and PDF and Word documents such as the WZDx Early Adopter's Guide and WZDx Data Feed Self Validation Checklist.
-
-### Contents
-- [**Creating a WZDx Feed**](/create-feed)
- - [**Example Feed GeoJSON Files**](/create-feed/examples)
- - [LineString Examples](/create-feed/examples/linestring_examples)
- - [Comprehensive](/create-feed/examples/linestring-examples/comprehensive_linestring_example.geojson)
- - [Local Access Only (bidirectional)](/create-feed/examples/linestring-examples/local_access_only_bidirectional_linestring_example.geojson)
- - [Simple Work Zone](/create-feed/examples/linestring-examples/scenario1_simple_linestring_example.geojson)
- - [Lane Shift](/create-feed/examples/linestring-examples/scenario2_laneshift_linestring_example.geojson)
- - [Shoulder Closure (bidirectional)](/create-feed/examples/linestring-examples/scenario3_shoulder_bidrectional_linestring_example.geojson)
- - [Detour](/create-feed/examples/linestring-examples/scenario4_detour_linestring_example.geojson)
- - [Recurring Work](/create-feed/examples/linestring-examples/scenario5_recurring_linestring_example.geojson)
- - [MultiPoint Examples](/create-feed/examples/multipoint_examples)
- - [Comprehensive](/create-feed/examples/multipoint-examples/comprehensive_multipoint_example.geojson)
- - [Local Access Only (bidirectional)](/create-feed/examples/multipoint-examples/local_access_only_bidirectional_multipoint_example.geojson)
- - [Simple Work Zone](/create-feed/examples/multipoint-examples/scenario1_simple_multipoint_example.geojson)
- - [Lane Shift](/create-feed/examples/multipoint-examples/scenario2_laneshift_multipoint_example.geojson)
- - [Shoulder Closure (bidirectional)](/create-feed/examples/multipoint-examples/scenario3_shoulder_bidrectional_multipoint_example.geojson)
- - [Detour](/create-feed/examples/multipoint-examples/scenario4_detour_multipoint_example.geojson)
- - [Recurring Work](/create-feed/examples/multipoint-examples/scenario5_recurring_multipoint_example.geojson)
- - [**JSON Schemas**](/create-feed/schemas)
- - [WZDx v2.0 Feed](/create-feed/schemas/wzdx_v2.0_feed.json)
- - [WZDx v3.0 Feed](/create-feed/schemas/wzdx_v3.0_feed.json)
- - [WZDx v3.1 Feed](/create-feed/schemas/wzdx_v3.1_feed.json)
-- [**Specification Content**](/spec-content)
- - [**Objects**](/spec-content/objects)
- - [WZDXFeed](/spec-content/objects/WZDxFeed.md)
- - [RoadEventFeedInfo](/spec-content/objects/RoadEventFeedInfo.md)
- - [RoadEventDataSource](/spec-content/objects/RoadEventDataSource.md)
- - [RoadEventFeature](/spec-content/objects/RoadEventFeature.md)
- - [RoadEvent](/spec-content/objects/RoadEvent.md)
- - [TypeOfWork](/spec-content/objects/TypeOfWork.md)
- - [Lane](/spec-content/objects/Lane.md)
- - [LaneRestriction](/spec-content/objects/LaneRestriction.md)
- - [Relationship](/spec-content/objects/Relationship.md)
- - [**Enumerated Types**](/spec-content/enumerated-types)
- - [Direction](/spec-content/enumerated-types/Direction.md)
- - [EventStatus](/spec-content/enumerated-types/EventStatus.md)
- - [EventType](/spec-content/enumerated-types/EventType.md)
- - [LaneRestrictionUnit](/spec-content/enumerated-types/LaneRestrictionUnit.md)
- - [LaneStatus](/spec-content/enumerated-types/LaneStatus.md)
- - [LaneType](/spec-content/enumerated-types/LaneType.md)
- - [LocationMethod](/spec-content/enumerated-types/LocationMethod.md)
- - [RoadRestriction](/spec-content/enumerated-types/RoadRestriction.md)
- - [SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md)
- - [TimeVerification](/spec-content/enumerated-types/TimeVerification.md)
- - [VehicleImpact](/spec-content/enumerated-types/VehicleImpact.md)
- - [WorkTypeName](/spec-content/enumerated-types/WorkTypeName.md)
-- [**Images Used throughout the Specification**](/images)
- - [Object Diagram](/images/wzdx_object_diagram.jpg)
- - [Object Diagram editable draw.io file](/images/wzdx_object_diagram.drawio)
+Specifically, WZDx defines the structure and content of several [GeoJSON](https://datatracker.ietf.org/doc/html/rfc7946) documents that are each intended to be distributed as a data feed. The feeds describe a variety of high-level road work-related information such as the location and status of work zones, detours, and field devices.
## README Outline
-- [Work Zone Data Exchange (WZDx) Specification](#work-zone-data-exchange-wzdx-specification)
- - [Repository Organization](#repostitory-organization)
- - [Contents](#contents)
-- [README Outline](#readme-outline)
+- [Data Feeds](#data-feeds)
+- [Repository Organization](#repostitory-organization)
- [Project Description](#project-description)
- [Contact Information](#contact-information)
- [Release Notes](#release-notes)
- - [Release v3.1 (Apr 2021)]
+ - [Release v4.0 (Dec 2021)](#wzdx-v40-december-2021)
- [Getting Started](#getting-started)
+- [JSON Schemas](#json-schemas)
- [Contributions](#contributions)
- [Versioning](#versioning)
- [License](#license)
+## Data Feeds
+WZDx defines the structure and content of multiple distinct data feeds. Each feed is distributed as a single GeoJSON file and is represented by both human-friendly documentation in the [spec-content](/spec-content/) directory and a JSON Schema in [/schemas](/schemas/). Each feed is designed for a specific use case is are flexible and its use in practice can vary by application.
+
+### List of Data Feeds
+Feed Name | Description | Producer | Consumer | Uses | Content
+--- | --- | --- | --- | --- | ---
+`WZDxFeed` | Provides high-level information about events occurring on roadways (called "road events"), primarily work zones, that impact the characteristics of the roadway and involve a change from the default state (such as a lane closure). The `WZDxFeed` is the original work zone data exchange feed. | Agencies responsible for managing roadways and road work, typically state and local DOTs. | Traveling public via third parties such as mapping companies and CAVs. | Route planning; increased awareness; "put work zones on the map". | Work zone and detour road events (see [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) and [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md)).
+`RoadRestrictionFeed` | Provides information about sections of roadways that have restrictions. Restriction types described by this specification are listed in the [RestrictionType](/spec-content/enumerated-types/RestrictionType.md) enumerated type. | Transportation Authorities like Tribal, Local, State, or Federal Agencies. | Traveling public via third parties such as mapping companies and CAVs. | Increased awareness; Route planning; Driver, Passenger, and Road-User Safety; Increased Efficiency; Reduced Damage to Infrastructure. | Restriction road events (see [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md)).
+`SwzDeviceFeed` | Provides information (location, status, live data) about field devices deployed on the roadway in work zones. | Smart work zone equipment manufacturers or vendors. | Agencies responsible for managing roadways and permitting work, typically state and local DOTs. Third-parties such as mapping companies and CAVs may also be interested in field device information. | Simplifies design process for agencies wanting to interface with equipment manufacturers; aids in dynamically generating a `WZDxFeed` with accurate information; reduces effort for manufacturers to conform to different agencies requirements. | Field devices (see [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md)).
+
+## Repostitory Organization
+The WZDx Specification repository contains several files and subdirectories.
+
+### Directories
+1. [documents](/documents): supplementary PDF and Word documents such as the WZDx Early Adopter's Guide and WZDx Data Feed Self Validation Checklist.
+2. [examples](/examples): example GeoJSON documents from WZDx data feeds. [examples/README.md](/examples/README.md) describes the content of this directory in detail.
+3. [images](/images): the images that are referenced by other Markdown files in the repository.
+4. [schemas](/schemas): contains [JSON Schema](https://json-schema.org/)s for each of the feeds defined by WZDx for feed validation.
+5. [spec-content](/spec-content): details the data content of the WZDx specification, including objects, property names and types, and enumerated types. [spec-content/README.md](/spec-content/README.md) describes the content of this directory in detail.
+
+### Files
+1. [Creating_a_WZDx_Feed.md](/Creating_a_WZDx_Feed.md): information to assist in creating a WZDx data feed, such as the feed format, business rules, and validation tools.
+2. [LICENSE](/LICENSE): the Creative Commons Zero v1.0 Universal license that the repository is licensed under.
+3. [README.md](/README.md) (this document): information about the WZDx effort and navigating the repository.
+4. [RELEASES.md](/RELEASES.md): detailed information about every release of the WZDx specification.
+
## Project Description
**What is the WZDx Specification?**
@@ -100,7 +66,9 @@ Several data producers and data users voluntarily developed v1.1 of the specific
Going forward, the [Work Zone Data Working Group (WZDWG)](https://github.com/usdot-jpo-ode/wzdx/wiki), established under the Federal Geographic Data Committee (FGDC) Transportation Subcommittee (TSC) will maintain the WZDx Specification with the goal of publishing incremental updates to refine the features, attributes, and vocabulary needed to model work zone activity data.
**How can I get help with implementation?**
-This project repository will be continually updated with resources to help with implementation - in the meantime, please make a GitHub issue or discussion entry if you need help implementing the WZDx Specification or have questions.
+Review [Creating_a_WZDx_Feed.md](/Creating_a_WZDx_Feed.md) which contains information to assist in creating a WZDx data feed, such as the feed format, business rules, and validation tools.
+
+This project repository will be continually updated with resources to help with implementation - in the meantime, please make a [new GitHub discussion](https://github.com/usdot-jpo-ode/wzdx/discussions/new) if you need help implementing the WZDx Specification or have questions.
The Federal Highway Administration is leading efforts, via the [Work Zone Data Initiative (WZDI)](https://ops.fhwa.dot.gov/wz/wzdx/index.htm#wzdi), to develop a standard approach for collecting, organizing, and sharing data on the “when”, “where,” and “how” of work zone deployment. As part of this effort, key documents have been developed and made publicly available:
@@ -115,43 +83,64 @@ Contact Information: [avdx@dot.gov](mailto:avdx@dot.gov?subject=Submission%20of%
## Release Notes
-### Release v3.1 (April 2021)
-Following the major v3.0 release, the changes for the v3.1 release were developed with the goal enhancing and cleaning up the spec without making major changes or breaking backwards compatibility. Thus, in v3.1 many enumerated type values or object properties were deprecated rather than removed. Most if not all of these deprecated values will be removed in the next major release.
-
-This repository was also renamed from `jpo-wzdx` to `wzdx` on 2021-04-05. All links pointing to `jpo-wzdx` will automatically redirect to the new URL.
-
-#### Features
-* Add `local-access-only` restriction
-* Add `license` property to the `RoadEventFeedInfo` object
-
-#### Refactoring
-* Refactor `LaneType` enumerated type to deprecate values that can be determined from other properties of the Lane object, such as `order`, `status`, and `lane_restrictions`
-* Add value `alternating-flow` to `LaneStatus` enumerated type and deprecate `alternating-one-way`
-* Add `road_names` property to the `RoadEvent` object and deprecate `road_name` and `road_number`
-* Deprecate the `total_num_lanes` property on the `RoadEvent` object as the `RoadEvent`'s `lanes` array can be used to determine the number of lanes
-
-#### Fixes
-* Add optional `bbox` property to allow providing a [GeoJSON Bounding Box](https://tools.ietf.org/html/rfc7946#section-5) for the `WZDxFeed` and `RoadEventFeature` objects
-* Add an `id` property to the `RoadEventFeature` object for providing the a road event's identifier to better follow [GeoJSON ID recommendations](https://tools.ietf.org/html/rfc7946#section-3.2)
+### WZDx v4.0 (December 2021)
+WZDx version 4.0 implements clean up and small additions in functionality to the WZDx feed and adds definitions for two new feeds, the [SwzDeviceFeed](/spec-content/objects/SwzDeviceFeed.md) and [RoadRestrictionFeed](/spec-content/objects/RoadRestrictionFeed.md). Until version 4.0, the WZDx specification defined only one feed, the [WZDxFeed](/spec-content/objects/WZDxFeed.md).
+
+*For detailed release information, see [RELEASES.md](/RELEASES.md)*
+
+## Features
+- Add values to the [VehicleImpact](/spec-content/enumerated-types/VehicleImpact.md) enumerated type.
+- Allow restrictions with a value and unit to be provided at the road event level.
+- Add values to the [LaneType](/spec-content/enumerated-types/LaneType.md) enumerated type.
+- Define a new data feed, the [RoadRestrictionFeed](/spec-content/objects/RoadRestrictionFeed.md), to enable providing a feed of restrictions on roadways, such as bridge clearances.
+- Define a new data feed, the [SwzDeviceFeed](/spec-content/objects/SwzDeviceFeed.md), to enable equipment vendors and manufacturers to provide high-level information about deployed field devices in work zones.
+- Rename the `workers_present` property on the [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) object to `worker_presence`; change the type from "boolean" to a new [WorkerPresence](/spec-content/objects/WorkerPresence.md) object which enables providing more nuanced information about worker presence in work zones.
+
+## Refactoring
+- Separate the v3.1 RoadEvent object into [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) (details that are shared by all specific types of road events) and specific types of road events ([WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md), [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md), and [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md)) which each contain the `RoadEventCoreDetails` via a `core_details` property; update the [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) `properties` property to be one of the specific road events types.
+- Move the `location_method` property from the [FeedDataSource](/spec-content/objects/FeedDataSource.md) object to the [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) object.
+- Change the `reduced_speed_limit` property on the [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) to `reduced_speed_limit_kph`; change its type from "integer" to "number" and clarify that the value should be in kilometers per hour.
+- Deprecate the `lane_number` property on the [Lane](/spec-content/objects/Lane.md) object.
+- Deprecate the `lrs_type` and `lrs_url` properties on the [FeedDataSource](/spec-content/objects/FeedDataSource.md) object.
+- Remove the deprecated value `alternating-one-way` from the [LaneStatus](/spec-content/enumerated-types/LaneStatus.md) enumerated type.
+- Remove all deprecated properties from the road event (RoadEvent in previous versions; [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) and [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) in 4.0).
+- Require the `road_names` property on the [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md).
+- Require the `id` property on the [RoadEventFeature](/spec-content/objects/RoadEventFeature.md).
+- Refine the [LaneType](/spec-content/enumerated-types/LaneType.md) enumerated type.
+- Deprecate the `location_verify_method` property on the [FeedDataSource](/spec-content/objects/FeedDataSource.md).
+- Update the [SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md) enumerated type value descriptions to clarify that verified work zone locations should use a GPS enabled device.
## Getting Started
-The WZDWG welcomes feedback and comments on the WZDx 3.1 Specification. Comments can be made by posting a GitHub [Issues](https://github.com/usdot-jpo-ode/wzdx/issues) or [Discussions](https://github.com/usdot-jpo-ode/wzdx/discussions), while suggested changes can be made using a [Pull Request](https://github.com/usdot-jpo-ode/wzdx/pulls).
+The WZDWG welcomes feedback and comments on the WZDx v4.0 Specification. Comments can be made by posting a GitHub [Issue](https://github.com/usdot-jpo-ode/wzdx/issues) or [Discussion](https://github.com/usdot-jpo-ode/wzdx/discussions), while suggested changes can be made using a [Pull Request](https://github.com/usdot-jpo-ode/wzdx/pulls).
-1. Read about WZDWG activities [Wiki](https://github.com/usdot-jpo-ode/wzdx/wiki) and the [WZDx Early Adopter's Guide](/documents/WZDx_Early_Adopters_Guide.pdf)
+1. Read about WZDWG activities [Wiki](https://github.com/usdot-jpo-ode/wzdx/wiki) and the [WZDx Early Adopter's Guide](/documents/WZDx_Early_Adopters_Guide.pdf).
2. Learn about using GitHub as a [tool for collaboration and support](/create-feed/README.md#collaborate-via-github).
-3. Use [Specification Content](/spec-content) page to understand the data components of the specification.
-4. [Create your own feed](/create-feed) using example feeds and follow the business rules.
-5. Validate your feed output using the [WZDx v3.1 Feed JSON Schema](/create-feed/schemas/wzdx_v3.1_feed.json)
+3. Read [Creating a WZDx feed](/Creating_a_WZDx_Feed.md) which contains information about creating a WZDx data feed, such as the feed format, business rules, and validation tools.
+4. Use the [Specification Content](/spec-content) page to understand the data components of the specification.
+5. Validate your feed output using the respective [JSON Schema](#json-schemas).
6. Publish your feed and tell us about it via avdx@dot.gov.
+## JSON Schemas
+The WZDx Specification defines a JSON schema for each feed within the [schemas](/schemas) directory. Schemas can be used to validate a WZDx feed document for compliance to the specification. The repository contains schemas for the following feeds:
+
+### Current Version (4.0)
+- [WZDx v4.0 WZDxFeed](/schemas/4.0/WZDxFeed.json)
+- [WZDx v4.0 SwzDeviceFeed](/schemas/4.0/SwzDeviceFeed.json)
+- [WZDx v4.0 RoadRestrictionFeed](/schemas/4.0/RoadRestrictionFeed.json)
+
+### Previous Version
+- [WZDx v2.0 WZDxFeed](/schemas/2.0/WZDxFeed.json)
+- [WZDx v3.0 WZDxFeed](/schemas/3.0/WZDxFeed.json)
+- [WZDx v3.1 WZDxFeed](/schemas/3.1/WZDxFeed.json)
+
## Contributions
**How do I contribute to the WZDx Specification?**
- Report bugs and request features via [GitHub Issues](https://github.com/usdot-jpo-ode/wzdx/issues).
-- Ask the WZDx community for input on a question or propose an idea you have via [GitHub Discussions](https://github.com/usdot-jpo-ode/wzdx/discussions).
-- Create a [GitHub pull request](https://help.github.com/articles/creating-a-pull-request/) that implements new functionality or fixes a bug.
+- Ask the WZDx community for input on a question or propose an idea you have via [GithHub Discussions](https://github.com/usdot-jpo-ode/wzdx/discussions).
+- Create a [GitHub Pull Request](https://help.github.com/articles/creating-a-pull-request/) that implements new functionality or fixes a bug.
- Review and provide feedback on update issues/discussions/pull requests created by other users.
- Alternatively, [email us](mailto://avdx@dot.gov.) with any questions.
- Help us improve our best practices and formatting on GitHub.
diff --git a/RELEASES.md b/RELEASES.md
index 676a9506..5a5d1434 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -1,3 +1,82 @@
+# WZDx Specification v4.0
+Released December 2021
+
+WZDx version 4.0 implements clean up and small additions in functionality to the WZDx feed and adds definitions for two new feeds, the [SwzDeviceFeed](/spec-content/objects/SwzDeviceFeed.md) and [RoadRestrictionFeed](/spec-content/objects/RoadRestrictionFeed.md). Until version 4.0, the WZDx specification defined only one feed, the [WZDxFeed](/spec-content/objects/WZDxFeed.md).
+
+## Features
+- Add the following values to the [VehicleImpact](/spec-content/enumerated-types/VehicleImpact.md) enumerated type:
+ - `some-lanes-closed-merge-left`
+ - `some-lanes-closed-merge-right`
+ - `all-lanes-open-shift-left`
+ - `all-lanes-open-shift-right`
+ - `some-lanes-closed-split`
+ - `flagging`
+ - `temporary-traffic-signal`
+- Allow restrictions with a value and unit to be provided at the road event level; specifically:
+ - Rename the LaneRestrictionUnit enumerated type to [UnitOfMeasurement](/spec-content/enumerated-types/UnitOfMeasurement.md).
+ - Rename the RoadRestriction enumerated type to [RestrictionType](/spec-content/enumerated-types/RestrictionType.md).
+ - Rename the LaneRestriction object to [Restriction](/spec-content/objects/Restriction.md) and remove the `lane_restriction_` prefix from its properties.
+ - Rename the [Restriction](/spec-content/objects/Restriction.md) object `units` property to `unit`.
+- Add values `parking` and `median` to the [LaneType](/spec-content/enumerated-types/LaneType.md) enumerated type.
+- Define a new data feed, the [RoadRestrictionFeed](/spec-content/objects/RoadRestrictionFeed.md) and [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md) to enable providing a feed of restrictions on roadways, such as bridge clearances.
+- Define a new data feed, the [SwzDeviceFeed](/spec-content/objects/SwzDeviceFeed.md), to enable equipment vendors and manufacturers to provide high-level information about deployed field devices in work zones. A `SwzDeviceFeed` contains a new feature type, the [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md), which contains information about a specific type of field device. The following field devices are defined in WZDx v4.0:
+ - `ArrowBoard`: An electronic, connected arrow board which can display an arrow pattern to direct traffic.
+ - `Camera`: A camera device deployed in the field, capable of capturing still images.
+ - `DynamicMessageSign`: An electronic traffic sign deployed on the roadway, used to provide information to travelers.
+ - `FlashingBeacon`: A flashing beacon light of any form (e.g. trailer-mounted, vehicle), used to indicate something or capture driver attention.
+ - `HybridSign`: A hybrid sign that contains static text (e.g. on an aluminum sign) along with a single electronic message display, used to provide information to travelers.
+ - `LocationMarker`: Describes any GPS-enabled ITS device that is placed at a point on a roadway to dynamically know the location of something (often the beginning or end of a work zone).
+ - `TrafficSensor`: A traffic sensor deployed on a roadway which captures traffic metrics (e.g. speed, volume, occupancy) over a collection interval.
+- Rename the `workers_present` property on the [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) object to `worker_presence`; change the type from "boolean" to a new [WorkerPresence](/spec-content/objects/WorkerPresence.md) object which enables providing more nuanced information about worker presence in work zones.
+
+## Refactoring
+- Separate the v3.1 RoadEvent object into [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) (details that are shared by all specific types of road events) and specific types of road events ([WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md), [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md), and [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md)) which each contain the `RoadEventCoreDetails` via a `core_details` property; update the [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) `properties` property to be one of the specific road events types.
+- Move the `location_method` property from the [FeedDataSource](/spec-content/objects/FeedDataSource.md) object to the [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) object.
+- Change the `reduced_speed_limit` property on the [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) to `reduced_speed_limit_kph`; change its type from "integer" to "number" and clarify that the value should be in kilometers per hour.
+- Deprecate the `lane_number` property on the [Lane](/spec-content/objects/Lane.md) object.
+- Deprecate the `lrs_type` and `lrs_url` properties on the [FeedDataSource](/spec-content/objects/FeedDataSource.md) object.
+- Remove the deprecated value `alternating-one-way` from the [LaneStatus](/spec-content/enumerated-types/LaneStatus.md) enumerated type.
+- Remove the following deprecated properties from the road event (RoadEvent in previous versions; [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) and [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) in 4.0):
+ - `road_event_id`
+ - `road_number`
+ - `road_name`
+ - `total_num_lanes`
+- Remove the following deprecated values from the [LaneType](/spec-content/enumerated-types/LaneType.md) enumerated type:
+ - `left-lane`
+ - `right-lane`
+ - `middle-lane`
+ - `center-lane`
+ - `right-shoulder`
+ - `left-shoulder`
+ - `right-second-exit-ramp`
+ - `left-second-exit-ramp`
+ - `right-entrance-exit-ramp`
+ - `left-entrance-exit-ramp`
+ - `hov-lane`
+ - `alternating-flow-lane`
+ - `reversible-lane`
+ - `right-entrance-lane`
+ - `left-entrance-lane`
+ - `left-entrance-ramp`
+ - `right-merging-lane`
+ - `left-merging-lane`
+ - `right-second-entrance-ramp`
+ - `left-second-entrance-ramp`
+- Require the `road_names` property on the [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md).
+- Require the `id` property on the [RoadEventFeature](/spec-content/objects/RoadEventFeature.md).
+- Refine the [LaneType](/spec-content/enumerated-types/LaneType.md) enumerated type; specifically:
+ - Rename `lane` to `general`.
+ - Remove `right-turning-lane` and `left-turning-lane`.
+ - Remove `right-exit-lane` and `left-exit-lane`.
+ - Add `exit-lane`.
+ - Remove `right-exit-ramp` and `left-exit-ramp`.
+ - Add `exit-ramp`.
+ - Remove `right-entrance-ramp` and `left-exit-ramp`.
+ - Add `entrance-ramp`.
+ - Add `entrance-lane`.
+- Deprecate the `location_verify_method` property on the [FeedDataSource](/spec-content/objects/FeedDataSource.md).
+- Update the [SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md) enumerated type value descriptions to clarify that verified work zone locations should use a GPS enabled device.
+
# WZDx Specification v3.1
Released April 2021
diff --git a/create-feed/README.md b/create-feed/README.md
deleted file mode 100644
index 46ed0a07..00000000
--- a/create-feed/README.md
+++ /dev/null
@@ -1,134 +0,0 @@
-# Creating the Feed
-This directory contains information regarding creation of a WZDx feed, such as the feed format, example feed outputs, JSON schemas, and validation tools.
-
-## Feed Format and File Type
-
-The WZDx v3.1 data feed is formatted according to the [GeoJSON](https://geojson.org/) specification. GeoJSON is the file format of choice because:
-- It is a lightweight data exchange format.
-- It is easy for humans to read and write.
-- It is easy for machines to parse and generate.
-- The format is designed to exchange spatial data, which is a primary goal of the Work Zone Data Working Group.
-- It is an open specification and does not carry licensing burdens.
-- GeoJSON formatted-data is published as text files, so there is a low technological burden of entry.
-- GeoJSON validation, mapping, and visualization tools already exist and will ease adoption by producers and consumers.
-
-A WZDx feed contains a single entry describing aspects of the feed itself (such as version) as well as one or more entries which describe a work zone's (generically: road event) characteristics along a single road segment in a single direction.
-
-The tables below detail the specificaton's content and describe the data used to build the feed.
-
-## Objects
-### WZDx Feed Information
-
-- The [RoadEventFeedInfo](/spec-content/objects/RoadEventFeedInfo.md) object describes the data feed.
-- The [RoadEventDataSource](/spec-content/objects/RoadEventDataSource.md) object describes the data sources used to build the work zone data feed.
-
-### WZDx Work Zone (Road Event) Information
-
-- The [RoadEvent](/spec-content/objects/RoadEvent.md) object describes a work zone event.
-- The [TypeOfWork](/spec-content/objects/TypeOfWork.md) object describes the work taking place along the road. If applicable, it indicates if the work changes the roadway's architecture.
-- The [Lane](/spec-content/objects/Lane.md) object identifies and describes individual lanes within an event.
-- The [LaneRestriction](/spec-content/objects/LaneRestriction.md) object describes restrictions for identified lanes.
-- The [Relationship](/spec-content/objects/Relationship.md) object identifies sequential and hierarchical relationships between road events and other entities.
-
-The figure below models the tables and their relationships.
-
-## Work Zone Data Object Diagram
-
-![WZDx Object Diagram](/images/wzdx_object_diagram.jpg)
-
-## Feed Examples
-The following WZDx feed examples represent a variety of scenarios common when creating road events. Most of the examples are modeled after work zone scenarios used in [previous WZDx discussion](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131). Optional fields are not included in all examples but represented at least once across the various examples. Each scenario is provided as a single GeoJSON file which may contain multiple work zones documenting differences in representing road events at varying levels of complexity. A comprehensive example contains all of the scenarios in a single file. All example scenarios are provided for both the `LineString` and `MultiPoint` geometry types.
-
-* [All LineString GeoJSON Examples](/create-feed/examples/linestring-examples)
-* [All MultiPoint GeoJSON Examples](/create-feed/examples/multipoint-examples)
-
-Below is a summary of each of the example WZDx feeds and detailed differences for each of the road events:
-
-### Scenario 1 - Simple Work Zone
-Scenario 1 ([Linestring](/create-feed/examples/linestring-examples/scenario1_simple_linestring_example.geojson) or [MultiPoint](/create-feed/examples/multipoint-examples/scenario1_simple_multipoint_example.geojson)) is based on the same numbered annotated work zones in [Discussion Topic 131](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131) with a single lane closed on a multi-lane facility.
-
-- First work zone is single direction, single event, with no lane-level information (ID: `71234`).
-- Second work zone is single direction, single event, with detailed lane information (ID: `WDM-58493-NB`).
-- Third work zone is single direction, three sequential events, with detailed lane information. This work zone demonstrates the use of the `relationship` property, both `first` and `next` to indiciate the order of the road events and `parents` to indicate all road events are related (they all have `parents` as `65773`). (IDs: `65773-1`, `65773-2`, `65773-3`).
-
-### Scenario 2 - Lane Shift (simple scenario)
-Scenario 2 ([Linestring](/create-feed/examples/linestring-examples/scenario2_laneshift_linestring_example.geojson) or [MultiPoint](/create-feed/examples/multipoint-examples/scenario2_laneshift_multipoint_example.geojson)) is based on the same numbered annotated work zones in [Discussion Topic 131](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131) which keeps all lanes open but shifts them resulting in both shoulders being closed on a multi-lane facility.
-
-- Single work zone with lane shift in the detailed lane information showing us of verified location and start time. ("id": `7733`).
-
-### Scenario 3 - Shoulder Closure (bidirectional work zone)
-Scenario 3 ([Linestring](/create-feed/examples/linestring-examples/scenario3_shoulder_bidirectional_linestring_example.geojson) or [MultiPoint](/create-feed/examples/multipoint-examples/scenario3_shoulder_bidrectional_multipoint_example.geojson)) is based on the same numbered annotated work zones in [Discussion Topic 131](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131) which closes the shoulder in a single direction on an undivided roadway.
-
-- Single work zone represented by two road events (IDs: `121388-EB`, `121388-WB`), one in direction of shoulder closure and second in opposite direction.
-- Demonstrates the use of `restrictions` for the event as well as individual lanes
-- Demonstrates the use of `relationship` to show the road events in each direction are related to a common parent (`121388`)
-
-### Scenario 4 - Road Closure with Detour on Arterial
-Scenario 4 ([Linestring](/create-feed/examples/linestring-examples/scenario4_detour_linestring_example.geojson) or [MultiPoint](/create-feed/examples/multipoint-examples/scenario4_detour_multipoint_example.geojson) is based on the same numbered annotated work zones in [Discussion Topic 131](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131) which has an associated detour for a road closure. The example is slightly modified for use on a multi-lane facility.
-
-- Single work zone in one direction represented by a single road event (ID: `67890`), with a detour.
-- Showing use of `relationship` `parents` and `children` to connect the detour road events (IDs: `67890-detour1`, `67890-detour2`, `67890-detour3`) to the work zone.
-- Also uses `relationship` to represent the sequence of the three detour road events.
-- Does not use `parents` to connect the work zone and all detour road events to a common parent (e.g. a project), but that approach is acceptable.
-
-### Scenario 5 - Recurring Work Zone
-Scenario 5 ([Linestring](/create-feed/examples/linestring-examples/scenario5_recurring_linestring_example.geojson) or [MultiPoint](/create-feed/examples/multipoint-examples/scenario5_recurring_multipoint_example.geojson)) is based on the same numbered annotated work zones in [Discussion Topic 131](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131) assuming that it is just a single lane closure but is recurring over multiple days.
-
-- Simple work zone but with a recurring component.
-- Five road events: an `active` (day 1, ID: `PLK01012016-Day1`) event and four additional events (IDs: `PLK01012016-Day2`, `PLK01012016-Day3`, `PLK01012016-Day4`, `PLK01012016-Day5`) for later dates with a pending status.
-- The `active` work zone event demonstrates value of verified location and time.
-- The `relationship` property is used to show all road events are related (they have the same parent of `PLK01012016`).
-
-### Local Access Only (bidirectional work zone)
-The local access only example ([Linestring](/create-feed/examples/linestring-examples/local_access_only_bidirectional_linestring_example.geojson) or [MultiPoint](/create-feed/examples/multipoint-examples/local_access_only_bidirectional_multipoint_example.geojson)) shows a basic work zone that keeps all lanes open but places restrictions to only local traffic.
-
-- Single work zone on a bidirectional roadwith with impact to both directions, represented by two road events (IDs: `WZ389-NB`, `WZ389-SB`), one for each direction.
-- Uses `local-access-only` [RoadRestriction](/spec-content/enumerated-types/RoadRestriction.md).
-- One road event shows basic details (not lane-level), while the opposite direction road event shows detailed lane information. The detailed lane information also includes a bike lane for reference.
-
-### Comprehensive Example
-- The comprehensive example ([Linestring](/create-feed/examples/linestring-examples/comprehensive_linestring_example.geojson) or [MultiPoint](/create-feed/examples/multipoint-examples/comprehensive_multipoint_example.geojson)) contains all of the examples listed above in a single GeoJSON file showing how the various road events across multiple organizations and data sources can be represented in a single WZDx feed.
-
-## JSON Schemas
-The [schemas](/create-feed/schemas) directory includes a JSON Schema for the following WZDx feed versions:
-
-* [WZDx v2.0 Feed](/create-feed/schemas/wzdx_v2.0_feed.json)
-* [WZDx v3.0 Feed](/create-feed/schemas/wzdx_v3.0_feed.json)
-* [WZDx v3.1 Feed](/create-feed/schemas/wzdx_v3.1_feed.json)
-
-## Business Rules
-The following business rules help assure a standardized and interpretable use of the WZDx specification. The specification describes the required structure and data fields to describe a work zone, whereas business rules are additional requirements for using the WZDx specification in a standard manner. Note that business rules are distinct from best practices in that the latter are suggestions and business rules are requirements.
-
-1. Each direction of travel must be represented by a separate road event. For example, if there is a work zone on a roadway with two lanes, each in an opposite travel direction (↑↓), each direction must be a separate road event.
-2. Construction which requires alternating traffic flows within a lane must be represented with at least one road event in each direction. Similarly, roadways that during normal operation have an alternating flow of traffic direction based on time of day must be represented by at least one road event in each direction.
-3. The preferred [GeoJSON Geometry](https://tools.ietf.org/html/rfc7946#page-7) for a [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) is `LineString`, which allows indicating the full path of the road event. In cases where only the beginning and ending coordinates are available, the `MultiPoint` can be used.
-4. A cascading multi-lane closure should consider the speed of vehicles traveling through the work zone. If the distance between lane closures is short enough that time in a to-be-closed lane is not significant, which is common, the to-be-closed lane should be represented as closed to avoid traffic delays and potential crashes.
-5. A detour must be represented with a [RoadEvent](/spec-content/objects/RoadEvent.md) of type (i.e. with `event_type` of) `detour` and its containing [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) should have a `geometry` of `type` `LineString` to represent the full detour route. The detour road event should be connected to the work zone road event using the `relationship` property on the detour road event.
-6. If the `lanes` property on the [RoadEvent](/spec-content/objects/RoadEvent.md) object is provided, it must include one entry for every lane in the road event. Providing lane information for only some of the lanes in a road event is not allowed.
-
-## Data Validation
-### WZDx v2.0, v3.0, and v3.1
-Use the corresponding JSON schema linked above to validate WZDx v2.0, v3.0, and v3.1 feeds.
-
-### WZDx v1.0
-To validate data feeds and measure compliance with the v1.1 specification, the GSA/18F team have developed a prototype data validation tool. This validation service that checks work zone activities against the WZDx v1.1 JSON schema specification is available [here](https://github.com/18F/usdot-jpo-ode-workzone-data-exchange/wiki).
-
-### Self-Validation Checklist
-For a list of steps to take to make sure your data feed is ready to publish, follow the [Self-Validation Checklist](/documents/WZDx_Data_Feed_Self-Validation_Checklist.docx)
-
-## Collaborate via GitHub
-GitHub is an open-source repository hosting service that allows for the storage and collaboration of data projects with version control (tracks changes and allows you to revert to previous iterations). The GitHub workflow is comprised of following steps:
-- **Creating a Branch** - Branching allows you to make a copy of your project (i.e., the master branch) so that you keep your master branch clean (i.e., free of changes). This copy lets you experiment with new features (e.g., new data fields).
-- **Adding Commits** - A commit is any change made to your project that you can track, allowing you to create a record of your work that others can use as reference.
-- **Opening a Pull Request** - Pull requests allow you to alert others on your team to review and discuss your changes.
-- **Discussing and Reviewing Commits** - This part of the process allows reviewers on your team or the DAVI Data Team check that the spec is properly implemented (e.g., that data types are correctly specified in the JSON schema).
-- **Merging to Master Branch** - Once your commits have been reviewed and approved, you can push your changes to merge with the master branch.
-
-A more in-depth [tutorial is available here](https://guides.github.com/introduction/flow/).
-
-To start collaborating, [join GitHub](https://github.com/) by creating free [organization and user accounts](https://help.github.com/articles/differences-between-user-and-organization-accounts/) for your team.
-
-### How Do I Get Help?
-To interact directly with the DAVI Data Team and to get help implementing the spec for your data, post an **issue** under the **help wanted** label on the Work Zone GitHub site.
-
-![Posting An Issue](/images/issues.png)
diff --git a/create-feed/examples/linestring-examples/comprehensive_linestring_example.geojson b/create-feed/examples/linestring-examples/comprehensive_linestring_example.geojson
deleted file mode 100644
index 830d5027..00000000
--- a/create-feed/examples/linestring-examples/comprehensive_linestring_example.geojson
+++ /dev/null
@@ -1,2482 +0,0 @@
-{
- "road_event_feed_info": {
- "update_date": "2020-06-18T15:00:00Z",
- "publisher": "TestDOT",
- "contact_name": "Frederick Francis Feedmanager",
- "contact_email": "fred.feedmanager@testdot.gov",
- "update_frequency": 60,
- "version": "3.1",
- "license": "https://creativecommons.org/publicdomain/zero/1.0/",
- "data_sources": [
- {
- "data_source_id": "1",
- "organization_name": "Test City 1",
- "contact_name": "Solomn Soliel Sourcefeed",
- "contact_email": "solomon.sourcefeed@testcity1.gov",
- "update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- },
- {
- "data_source_id": "2",
- "organization_name": "TestDOT",
- "contact_name": "Samuel Sonny Sourcefeed",
- "contact_email": "samuel.sourcefeed@testdot.gov",
- "update_frequency": 60,
- "update_date": "2020-06-18T14:39:01Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- },
- {
- "data_source_id": "3",
- "organization_name": "Test County 1",
- "contact_name": "Stu Spiel Sourcefeed",
- "contact_email": "stu.sourcefeed@testcounty1.gov",
- "update_frequency": 300,
- "update_date": "2020-06-18T14:37:05Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- },
- {
- "data_source_id": "4",
- "organization_name": "Test City 2",
- "contact_name": "Skip Jack Sourcefeed",
- "contact_email": "skip.sourcefeed@testcity2.gov",
- "update_frequency": 60,
- "update_date": "2020-06-18T14:38:59Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- }
- ]
- },
- "type": "FeatureCollection",
- "features": [
- {
- "id": "WZ389-NB",
- "type": "Feature",
- "properties": {
- "data_source_id": "4",
- "event_type": "work-zone",
- "road_names": [
- "Beaver Avenue"
- ],
- "direction": "northbound",
- "beginning_cross_street": "Aurora Avenue",
- "ending_cross_street": "NW 46th Place",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-01-01T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [
- "local-access-only"
- ],
- "description": "Bidirectional work zone, northbound direction with road event-level local access only restriction.",
- "creation_date": "2010-01-01T01:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.67801666259766,
- 41.63699137361764
- ],
- [
- -93.67804884910583,
- 41.63971757283587
- ],
- [
- -93.6780595779419,
- 41.64156971886528
- ],
- [
- -93.6780595779419,
- 41.642211142309336
- ],
- [
- -93.67807030677795,
- 41.64325344178853
- ],
- [
- -93.67807030677795,
- 41.64402312904328
- ]
- ]
- }
- },
- {
- "id": "WZ389-SB",
- "type": "Feature",
- "properties": {
- "data_source_id": "4",
- "event_type": "work-zone",
- "road_names": [
- "Beaver Avenue"
- ],
- "direction": "southbound",
- "beginning_cross_street": "NW 46th Place",
- "ending_cross_street": "Aurora Avenue",
- "beginning_accuracy": "verified",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-01-01T17:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [
- "local-access-only"
- ],
- "description": "Bidirectional work zone, southbound direction with lane-level local access only restriction.",
- "creation_date": "2010-01-01T01:01:01Z",
- "update_date": "2010-01-01T01:03:01Z",
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane",
- "restrictions": [
- {
- "restriction_type": "local-access-only"
- }
- ]
- },
- {
- "order": 2,
- "status": "open",
- "type": "bike-lane",
- "restrictions": [
- {
- "restriction_type": "local-access-only"
- }
- ]
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.67823123931885,
- 41.64400709398592
- ],
- [
- -93.67819905281067,
- 41.642916700723454
- ],
- [
- -93.67820978164673,
- 41.642090875899925
- ],
- [
- -93.67819905281067,
- 41.641810253405005
- ],
- [
- -93.67819905281067,
- 41.641273058363055
- ],
- [
- -93.67818832397461,
- 41.63999820444394
- ],
- [
- -93.67816686630249,
- 41.63866719797019
- ],
- [
- -93.67815613746643,
- 41.63699137361764
- ]
- ]
- }
- },
- {
- "id": "71234",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "I-80, I-35"
- ],
- "direction": "northbound",
- "beginning_milepost": 125.2,
- "ending_milepost": 126.3,
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:00:00Z",
- "end_date": "2010-01-02T01:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "reduced_speed_limit": 55,
- "description": "Single direction work zone without lane-level information.",
- "creation_date": "2009-12-31T18:01:01Z",
- "update_date": "2009-12-31T18:01:01Z"
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.776684050999961,
- 41.617961698000045
- ],
- [
- -93.776682957,
- 41.618244962000063
- ],
- [
- -93.776677372999984,
- 41.619603362000078
- ],
- [
- -93.776674365999952,
- 41.620322783000063
- ],
- [
- -93.776671741999962,
- 41.620950321000066
- ],
- [
- -93.776688974999956,
- 41.622297226000057
- ]
- ]
- }
- },
- {
- "id": "WDM-58493-NB",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "128th Street"
- ],
- "direction": "northbound",
- "beginning_cross_street": "US 6, Hickman Road",
- "ending_cross_street": "Douglas Ave",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T06:00:00Z",
- "end_date": "2010-05-01T05:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "description": "Single direction work zone with detailed lane-level information.",
- "creation_date": "2009-12-13T13:35:26Z",
- "update_date": "2009-12-31T15:11:16Z",
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane",
- "restrictions": [
- {
- "restriction_type": "reduced-width",
- "restriction_value": 10,
- "restriction_units": "feet"
- }
- ]
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.791522243999964,
- 41.614948252000033
- ],
- [
- -93.791505319999942,
- 41.61501428300005
- ],
- [
- -93.791405791999978,
- 41.615577076000079
- ],
- [
- -93.791345430999968,
- 41.615782444000047
- ],
- [
- -93.791280304999987,
- 41.615977213000065
- ],
- [
- -93.791200891999949,
- 41.616140173000076
- ],
- [
- -93.791079009999976,
- 41.616296165000051
- ],
- [
- -93.790558010999973,
- 41.61681760700003
- ],
- [
- -93.790135601999964,
- 41.617246805000036
- ],
- [
- -93.789830552999945,
- 41.617562480000061
- ],
- [
- -93.789680613999963,
- 41.617771613000059
- ],
- [
- -93.789596382999946,
- 41.617913356000031
- ],
- [
- -93.789502863999985,
- 41.618086964000042
- ],
- [
- -93.78945179699997,
- 41.618264005000071
- ],
- [
- -93.789424159999953,
- 41.61840914000004
- ],
- [
- -93.789414473999955,
- 41.618523310000057
- ],
- [
- -93.789406687999985,
- 41.618788623000057
- ],
- [
- -93.789440425999942,
- 41.620294861000048
- ],
- [
- -93.789441241999953,
- 41.620405535000032
- ],
- [
- -93.789449826999942,
- 41.620516022000061
- ],
- [
- -93.789466157999982,
- 41.620626017000063
- ],
- [
- -93.78949019099997,
- 41.620735214000035
- ],
- [
- -93.789521855999965,
- 41.62084330700003
- ],
- [
- -93.78956107,
- 41.62095
- ],
- [
- -93.789607718999946,
- 41.621054995000065
- ],
- [
- -93.789661678999948,
- 41.621157998000058
- ],
- [
- -93.789725124999961,
- 41.621262305000073
- ],
- [
- -93.789796062999983,
- 41.621363857000063
- ],
- [
- -93.789874285999986,
- 41.621462354000073
- ],
- [
- -93.789959554999939,
- 41.621557500000051
- ],
- [
- -93.790051618999939,
- 41.621649010000056
- ],
- [
- -93.790150204999975,
- 41.621736613000053
- ],
- [
- -93.790255013999968,
- 41.621820048000075
- ],
- [
- -93.790365738,
- 41.621899067000072
- ],
- [
- -93.790482044999976,
- 41.621973433000051
- ],
- [
- -93.790603584999985,
- 41.622042923000038
- ],
- [
- -93.790730001999975,
- 41.622107331000052
- ],
- [
- -93.790860916999975,
- 41.622166468000046
- ],
- [
- -93.791037923999966,
- 41.622265540000058
- ],
- [
- -93.791219643999966,
- 41.622359685000049
- ],
- [
- -93.791405833999988,
- 41.622448775000066
- ],
- [
- -93.791596247999962,
- 41.62253269200005
- ],
- [
- -93.791974661999973,
- 41.622789772000033
- ],
- [
- -93.792348386999947,
- 41.623050684000077
- ],
- [
- -93.79264079099994,
- 41.62326022700006
- ],
- [
- -93.793051083999956,
- 41.623588822000045
- ],
- [
- -93.793245118999948,
- 41.623807143000079
- ],
- [
- -93.793416509999986,
- 41.62403972900006
- ],
- [
- -93.793538291999937,
- 41.62424188500006
- ],
- [
- -93.793626206999988,
- 41.624429215000077
- ],
- [
- -93.793710504999979,
- 41.624653499000033
- ],
- [
- -93.793764538999937,
- 41.624880703000031
- ],
- [
- -93.793784475999985,
- 41.62510231300007
- ],
- [
- -93.793785748999937,
- 41.625380807000056
- ],
- [
- -93.793738188999953,
- 41.625670969000055
- ],
- [
- -93.793679893999979,
- 41.625937897000028
- ],
- [
- -93.793612129999985,
- 41.626248174000068
- ],
- [
- -93.793525080999984,
- 41.626631768000038
- ],
- [
- -93.793438316999982,
- 41.626965183000038
- ],
- [
- -93.793363929999941,
- 41.627301995000039
- ],
- [
- -93.793344298999955,
- 41.627537681000035
- ],
- [
- -93.793345492999947,
- 41.627799206000077
- ],
- [
- -93.793356849999952,
- 41.628019275000042
- ],
- [
- -93.793396009,
- 41.62828070300003
- ],
- [
- -93.79347973299997,
- 41.628577397000072
- ]
- ]
- }
- },
- {
- "id": "65773-1",
- "type": "Feature",
- "properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
- ],
- "first": [
- "65773-1"
- ],
- "next": [
- "65773-2"
- ]
- },
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
- "beginning_milepost": 3.1,
- "ending_milepost": 2.9,
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T14:00:00Z",
- "end_date": "2010-01-05T23:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; first event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 5,
- "status": "open",
- "type": "right-entrance-ramp"
- },
- {
- "order": 6,
- "status": "open",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.720409507999989,
- 41.593422456000042
- ],
- [
- -93.721987662999936,
- 41.593428462000077
- ],
- [
- -93.724060080999948,
- 41.593444666000039
- ],
- [
- -93.724769801999969,
- 41.593457451000063
- ]
- ]
- }
- },
- {
- "id": "65773-2",
- "type": "Feature",
- "properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
- ],
- "first": [
- "65773-1"
- ],
- "next": [
- "65773-3"
- ]
- },
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
- "beginning_milepost": 2.9,
- "ending_milepost": 2.5,
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T14:00:00Z",
- "end_date": "2010-01-05T23:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "total_num_lanes": 4,
- "vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; second event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 5,
- "status": "open",
- "type": "right-exit-lane"
- },
- {
- "order": 6,
- "status": "open",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.724769801999969,
- 41.593457451000063
- ],
- [
- -93.725783878999948,
- 41.593459089000078
- ],
- [
- -93.72589773499999,
- 41.593459271000029
- ],
- [
- -93.727600448999965,
- 41.593468041000051
- ],
- [
- -93.728253463999977,
- 41.593468762000043
- ],
- [
- -93.72899278899996,
- 41.593459177000057
- ],
- [
- -93.729737457999988,
- 41.593435398000054
- ],
- [
- -93.730149926999957,
- 41.593410350000056
- ]
- ]
- }
- },
- {
- "id": "65773-3",
- "type": "Feature",
- "properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
- ],
- "first": [
- "65773-1"
- ]
- },
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
- "beginning_milepost": 2.5,
- "ending_milepost": 2.0,
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T14:00:00Z",
- "end_date": "2010-01-05T23:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "total_num_lanes": 3,
- "vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; third event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 5,
- "status": "open",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.730150629999969,
- 41.593410307000056
- ],
- [
- -93.730393025999945,
- 41.593395588000078
- ],
- [
- -93.731358798999963,
- 41.593326786000034
- ],
- [
- -93.731760730999952,
- 41.59329153300007
- ],
- [
- -93.732583278999982,
- 41.59323325400004
- ],
- [
- -93.732583278999982,
- 41.59323325400004
- ],
- [
- -93.732761573999937,
- 41.593220621000057
- ],
- [
- -93.733481823999966,
- 41.593160405000049
- ],
- [
- -93.734099563999962,
- 41.59310849700006
- ],
- [
- -93.735278425999979,
- 41.59301896900007
- ],
- [
- -93.735701953999978,
- 41.592987710000045
- ],
- [
- -93.736446499999943,
- 41.592931475000057
- ],
- [
- -93.737679269999944,
- 41.592827630000045
- ],
- [
- -93.738580275999936,
- 41.592760926000039
- ],
- [
- -93.739154871999972,
- 41.592719210000041
- ],
- [
- -93.739613443999986,
- 41.592679760000067
- ],
- [
- -93.739774495999939,
- 41.592668639000067
- ],
- [
- -93.739774495999939,
- 41.592668639000067
- ],
- [
- -93.740036978999967,
- 41.592650510000055
- ],
- [
- -93.740347204999978,
- 41.592627574000062
- ],
- [
- -93.74078960199995,
- 41.592592205000074
- ],
- [
- -93.741952240999979,
- 41.592498589000058
- ],
- [
- -93.742189315999951,
- 41.592481500000076
- ]
- ]
- }
- },
- {
- "id": "7733",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "I-80",
- "I-35"
- ],
- "direction": "westbound",
- "beginning_milepost": 133.967,
- "ending_milepost": 133.112,
- "beginning_accuracy": "verified",
- "ending_accuracy": "verified",
- "start_date": "2010-01-01T05:57:36Z",
- "end_date": "2010-01-05T23:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [],
- "description": "Single-direction work zone with lane shift",
- "creation_date": "2010-12-30T22:42:53Z",
- "update_date": "2010-01-01T05:57:36Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "shift-right",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "shift-right",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "shift-right",
- "type": "lane"
- },
- {
- "order": 5,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.652714940999942,
- 41.650200836000067
- ],
- [
- -93.654565142999957,
- 41.650281119000056
- ],
- [
- -93.655964627999936,
- 41.650350708000076
- ],
- [
- -93.65929743199996,
- 41.650497674000064
- ],
- [
- -93.66247390999996,
- 41.650639043000069
- ],
- [
- -93.665256117999945,
- 41.650763126000072
- ],
- [
- -93.665890640999976,
- 41.650791415000072
- ],
- [
- -93.667831858999989,
- 41.650878240000054
- ],
- [
- -93.669295947999956,
- 41.650943700000028
- ],
- [
- -93.672369497999966,
- 41.651076369000066
- ],
- [
- -93.675896873999989,
- 41.651236853000057
- ],
- [
- -93.679374683999981,
- 41.651391586000045
- ],
- [
- -93.680869566999945,
- 41.651461030000064
- ],
- [
- -93.681220380999946,
- 41.65147732500003
- ],
- [
- -93.682955475999961,
- 41.651551769000037
- ],
- [
- -93.683089,
- 41.651577294000049
- ]
- ]
- }
- },
- {
- "id": "121388-EB",
- "type": "Feature",
- "properties": {
- "data_source_id": "3",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "121388"
- ]
- },
- "road_names": [
- "IA 210"
- ],
- "direction": "eastbound",
- "beginning_milepost": 22.1,
- "ending_milepost": 24.6,
- "beginning_cross_street": "570th Avenue",
- "ending_cross_street": "610th Avenue",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T10:00:00Z",
- "end_date": "2010-01-01T16:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [],
- "description": "Bidirectional work zone with shoulder closure; eastbound direction with shoulder closure.",
- "creation_date": "2010-01-01T09:30:26Z",
- "update_date": "2010-01-01T09:30:26Z",
- "types_of_work": [
- {
- "type_name": "maintenance",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.56064319610596,
- 41.87764559047116
- ],
- [
- -93.5451292991638,
- 41.87767754402901
- ],
- [
- -93.53145003318785,
- 41.87766955564103
- ],
- [
- -93.5067629814148,
- 41.877565706506665
- ],
- [
- -93.48284840583801,
- 41.87750179926317
- ]
- ]
- }
- },
- {
- "id": "121388-WB",
- "type": "Feature",
- "properties": {
- "data_source_id": "3",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "121388"
- ]
- },
- "road_names": [
- "IA 210"
- ],
- "direction": "westbound",
- "beginning_milepost": 24.6,
- "ending_milepost": 22.1,
- "beginning_cross_street": "610th Avenue",
- "ending_cross_street": "570th Avenue",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T10:00:00Z",
- "end_date": "2010-01-01T16:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [
- "no-parking"
- ],
- "description": "Bidirectional work zone with shoulder closure; westbound direction without shoulder closure.",
- "creation_date": "2010-01-01T09:30:26Z",
- "update_date": "2010-01-01T09:30:26Z",
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "open",
- "type": "shoulder",
- "restrictions": [
- {
- "restriction_type": "no-parking"
- }
- ]
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.48284304141998,
- 41.877607645600484
- ],
- [
- -93.49073946475983,
- 41.87764559047116
- ],
- [
- -93.50573301315308,
- 41.877697514994544
- ],
- [
- -93.51188063621521,
- 41.877749439475735
- ],
- [
- -93.53036642074585,
- 41.87782133484157
- ],
- [
- -93.54414224624632,
- 41.877869265040545
- ],
- [
- -93.56063783168791,
- 41.87786127667653
- ]
- ]
- }
- },
- {
- "id": "67890",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "children": [
- "67890-detour1",
- "67890-detour2",
- "67890-detour3"
- ]
- },
- "road_names": [
- "I-35"
- ],
- "direction": "northbound",
- "beginning_milepost": 98.42,
- "ending_milepost": 101.50,
- "beginning_accuracy": "verified",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [
- "reduced-width"
- ],
- "description": "Simple, single direction work zone with detour.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "open",
- "type": "lane",
- "restrictions": [
- {
- "restriction_type": "reduced-width",
- "restriction_value": 11,
- "restriction_units": "feet"
- }
- ]
- },
- {
- "order": 3,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.570535026999949,
- 41.815141143000062
- ],
- [
- -93.570558665999954,
- 41.815778842000043
- ],
- [
- -93.570582206999973,
- 41.816327889000036
- ],
- [
- -93.570613866999963,
- 41.817305885000053
- ],
- [
- -93.570653239999956,
- 41.818343932000062
- ],
- [
- -93.570692683999937,
- 41.819444889000067
- ],
- [
- -93.57072468399997,
- 41.820444622000025
- ],
- [
- -93.570725033999963,
- 41.820762049000052
- ],
- [
- -93.570737569999949,
- 41.821725757000024
- ],
- [
- -93.570735194999941,
- 41.823038359000066
- ],
- [
- -93.570744205999972,
- 41.824273739000034
- ],
- [
- -93.570741062999957,
- 41.824888576000035
- ],
- [
- -93.570745857999952,
- 41.825769359000049
- ],
- [
- -93.570750405999945,
- 41.82642422400005
- ],
- [
- -93.570751056999939,
- 41.827013323000074
- ],
- [
- -93.570767342999943,
- 41.82791125600005
- ],
- [
- -93.570783135999989,
- 41.828363077000063
- ],
- [
- -93.57081113199996,
- 41.829478340000037
- ],
- [
- -93.570846661999951,
- 41.830487788000028
- ],
- [
- -93.570890330999987,
- 41.83194334500007
- ],
- [
- -93.570902443999955,
- 41.832520995000039
- ],
- [
- -93.570930157999953,
- 41.833378885000059
- ],
- [
- -93.570954688999961,
- 41.834811573000025
- ],
- [
- -93.570948738999959,
- 41.836344370000063
- ],
- [
- -93.570942684999977,
- 41.837782799000081
- ],
- [
- -93.570936722999988,
- 41.839304156000026
- ],
- [
- -93.570923044999972,
- 41.840765465000061
- ],
- [
- -93.570924651999974,
- 41.84221532600003
- ],
- [
- -93.570926279999981,
- 41.843685202000074
- ],
- [
- -93.570931724,
- 41.845146499000066
- ],
- [
- -93.570929340999953,
- 41.846447657000056
- ],
- [
- -93.570938627999965,
- 41.84792610900007
- ],
- [
- -93.570932442999947,
- 41.849247287000026
- ],
- [
- -93.570939776999978,
- 41.849617513000055
- ],
- [
- -93.570957815999975,
- 41.850528174000033
- ],
- [
- -93.570991150999987,
- 41.852249359000041
- ],
- [
- -93.571024497999986,
- 41.85397641600008
- ],
- [
- -93.571053711,
- 41.855521371000066
- ],
- [
- -93.571083075999979,
- 41.85719849700007
- ],
- [
- -93.57110858599998,
- 41.858940244000053
- ],
- [
- -93.571141838999949,
- 41.860579185000063
- ]
- ]
- }
- },
- {
- "id": "67890-detour1",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "67890"
- ],
- "first": [
- "67890-detour1"
- ],
- "next": [
- "67890-detour2"
- ]
- },
- "road_names": [
- "F22"
- ],
- "direction": "westbound",
- "ending_cross_street": "US 69",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, first segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.600376007999955,
- 41.791257966000046
- ],
- [
- -93.600375128999985,
- 41.791257965000057
- ],
- [
- -93.600373887999979,
- 41.79125798900003
- ],
- [
- -93.598991312999942,
- 41.791285770000059
- ],
- [
- -93.597408247999965,
- 41.791298693000044
- ],
- [
- -93.587018347999958,
- 41.791370250000057
- ],
- [
- -93.581030593999969,
- 41.791384089000076
- ],
- [
- -93.575477690999946,
- 41.791372395000053
- ],
- [
- -93.573306168999977,
- 41.791361989000052
- ],
- [
- -93.572569235999936,
- 41.791351637000048
- ],
- [
- -93.572478358999945,
- 41.79135169500006
- ]
- ]
- }
- },
- {
- "id": "67890-detour2",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "67890"
- ],
- "first": [
- "67890-detour1"
- ],
- "next": [
- "67890-detour3"
- ]
- },
- "road_names": [
- "US 69"
- ],
- "direction": "northbound",
- "beginning_cross_street": "NE 126th Avenue",
- "ending_cross_street": "IA 210",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, second segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.600401730999977,
- 41.877744832000076
- ],
- [
- -93.600383302999944,
- 41.876221974000032
- ],
- [
- -93.600399342999935,
- 41.874445421000075
- ],
- [
- -93.600382543999956,
- 41.872739253000077
- ],
- [
- -93.600389303999975,
- 41.871047136000072
- ],
- [
- -93.600386637999975,
- 41.869347993000076
- ],
- [
- -93.600379122999982,
- 41.867557387000033
- ],
- [
- -93.600390145999938,
- 41.865583833000073
- ],
- [
- -93.60037319199995,
- 41.863775643000054
- ],
- [
- -93.600372301999982,
- 41.863207043000045
- ],
- [
- -93.600381568999978,
- 41.862919375000047
- ],
- [
- -93.600376814999947,
- 41.861738109000044
- ],
- [
- -93.60037443899995,
- 41.860563973000069
- ],
- [
- -93.60037443899995,
- 41.859363694000081
- ],
- [
- -93.60036493299998,
- 41.858142023000028
- ],
- [
- -93.600360178999949,
- 41.85695124800003
- ],
- [
- -93.600357800999973,
- 41.855774736000058
- ],
- [
- -93.600357801999962,
- 41.854583964000028
- ],
- [
- -93.600353046999942,
- 41.853378931000066
- ],
- [
- -93.600348294999947,
- 41.852188157000057
- ],
- [
- -93.600343540999972,
- 41.85096173200003
- ],
- [
- -93.600341164999975,
- 41.849768581000035
- ],
- [
- -93.600338180999984,
- 41.84926536100005
- ],
- [
- -93.600334034999946,
- 41.848565926000049
- ],
- [
- -93.600329278999936,
- 41.847403672000041
- ],
- [
- -93.600324526999941,
- 41.846174873000052
- ],
- [
- -93.600319772999967,
- 41.844976968000026
- ],
- [
- -93.600315018999936,
- 41.843786195000064
- ],
- [
- -93.600305511999977,
- 41.842590668000071
- ],
- [
- -93.600296004999961,
- 41.841487836000056
- ],
- [
- -93.600296003999972,
- 41.840275672000075
- ],
- [
- -93.600291251999977,
- 41.839065885000025
- ],
- [
- -93.600291250999987,
- 41.837927402000048
- ],
- [
- -93.600284120999959,
- 41.836760396000045
- ],
- [
- -93.600279367999974,
- 41.83553872400006
- ],
- [
- -93.600273437999988,
- 41.834756276000064
- ],
- [
- -93.600272235999967,
- 41.834597515000041
- ],
- [
- -93.600274613999943,
- 41.833775145000061
- ],
- [
- -93.600272236999956,
- 41.832546343000047
- ],
- [
- -93.600269860999958,
- 41.831357947000072
- ],
- [
- -93.600265106999984,
- 41.830238478000069
- ],
- [
- -93.600269860999958,
- 41.829584861000058
- ],
- [
- -93.600262728999951,
- 41.829031068000063
- ],
- [
- -93.60026985899998,
- 41.828714954000077
- ],
- [
- -93.600265106999984,
- 41.827833163000037
- ],
- [
- -93.600265732999958,
- 41.82751014300004
- ],
- [
- -93.600267483999971,
- 41.82661149300003
- ],
- [
- -93.600267481999936,
- 41.825458747000027
- ],
- [
- -93.60026985899998,
- 41.824289366000073
- ],
- [
- -93.600262728999951,
- 41.823096216000067
- ],
- [
- -93.60026272999994,
- 41.822017153000047
- ],
- [
- -93.600265008999941,
- 41.821111594000058
- ],
- [
- -93.600263135999967,
- 41.820261561000052
- ],
- [
- -93.600264984999967,
- 41.819911794000063
- ],
- [
- -93.600262608999969,
- 41.818602179000038
- ],
- [
- -93.600255478999941,
- 41.817525493000062
- ],
- [
- -93.600255478999941,
- 41.816325213000027
- ],
- [
- -93.600248348999969,
- 41.815205744000025
- ],
- [
- -93.600243592999959,
- 41.814019724000048
- ],
- [
- -93.600245971999982,
- 41.812914517000024
- ],
- [
- -93.600253101999954,
- 41.811806931000035
- ],
- [
- -93.600269738999941,
- 41.81082056200006
- ],
- [
- -93.600276870999949,
- 41.80970822200004
- ],
- [
- -93.600288753999962,
- 41.808624405000046
- ],
- [
- -93.600295884,
- 41.807576241000049
- ],
- [
- -93.600310144,
- 41.806435380000039
- ],
- [
- -93.60031408499998,
- 41.805741814000044
- ],
- [
- -93.600314898999954,
- 41.805598749000069
- ],
- [
- -93.600324404999981,
- 41.804529191000029
- ],
- [
- -93.600319769999942,
- 41.803418761000046
- ],
- [
- -93.60031965099995,
- 41.803390708000052
- ],
- [
- -93.600322028999983,
- 41.802354426000079
- ],
- [
- -93.600322026999947,
- 41.801782615000036
- ],
- [
- -93.600322026999947,
- 41.80161524500005
- ],
- [
- -93.600331535999942,
- 41.800495775000059
- ],
- [
- -93.600326782999957,
- 41.799371551000036
- ],
- [
- -93.600331535999942,
- 41.798416082000074
- ],
- [
- -93.600331535999942,
- 41.797327511000049
- ],
- [
- -93.60033866699996,
- 41.796314997000025
- ],
- [
- -93.600345797999978,
- 41.795214543000043
- ],
- [
- -93.600350549999973,
- 41.794040406000079
- ],
- [
- -93.600362434999965,
- 41.792899545000068
- ],
- [
- -93.600360056999989,
- 41.791818106000051
- ],
- [
- -93.600373887999979,
- 41.79125798900003
- ],
- [
- -93.600373891999936,
- 41.791257820000055
- ]
- ]
- }
- },
- {
- "id": "67890-detour3",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "6780"
- ],
- "first": [
- "67890-detour1"
- ]
- },
- "road_names": [
- "IA 210"
- ],
- "direction": "eastbound",
- "beginning_cross_street": "US 69",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, third/final segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.573353147999967,
- 41.877796484000044
- ],
- [
- -93.573356421999961,
- 41.87779647800005
- ],
- [
- -93.574056398999971,
- 41.877795233000029
- ],
- [
- -93.577496035999957,
- 41.877791515000069
- ],
- [
- -93.578346253999939,
- 41.877790018000042
- ],
- [
- -93.579435310999941,
- 41.877788094000039
- ],
- [
- -93.580892132999963,
- 41.877785500000073
- ],
- [
- -93.581418045999953,
- 41.877784560000066
- ],
- [
- -93.581835475,
- 41.877783302000068
- ],
- [
- -93.586943989999952,
- 41.877767791000053
- ],
- [
- -93.591580114999942,
- 41.877755708000052
- ],
- [
- -93.596289923999962,
- 41.877747609000039
- ],
- [
- -93.60040158399994,
- 41.87774674700006
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day1",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "verified",
- "ending_accuracy": "verified",
- "start_date": "2010-01-01T08:32:01Z",
- "end_date": "2010-01-01T17:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; currently active work zone (day 1).",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2010-01-01T08:32:01Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.46077919006348,
- 41.83445374967984
- ],
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.46654057502747,
- 41.83445374967984
- ],
- [
- -93.46984505653381,
- 41.83450171239077
- ],
- [
- -93.47622871398926,
- 41.83458165016244
- ],
- [
- -93.48343849182129,
- 41.83470155663275
- ],
- [
- -93.49206447601318,
- 41.834813469135725
- ],
- [
- -93.49886655807495,
- 41.8349093939825
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ],
- [
- -93.51322174072264,
- 41.83502130612205
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day2",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-02T08:00:00Z",
- "end_date": "2010-01-02T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 2) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.46654057502747,
- 41.83445374967984
- ],
- [
- -93.46984505653381,
- 41.83450171239077
- ],
- [
- -93.47622871398926,
- 41.83458165016244
- ],
- [
- -93.48343849182129,
- 41.83470155663275
- ],
- [
- -93.49206447601318,
- 41.834813469135725
- ],
- [
- -93.49886655807495,
- 41.8349093939825
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day3",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-03T08:00:00Z",
- "end_date": "2010-01-03T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 3) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.46654057502747,
- 41.83445374967984
- ],
- [
- -93.46984505653381,
- 41.83450171239077
- ],
- [
- -93.47622871398926,
- 41.83458165016244
- ],
- [
- -93.48343849182129,
- 41.83470155663275
- ],
- [
- -93.49206447601318,
- 41.834813469135725
- ],
- [
- -93.49886655807495,
- 41.8349093939825
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day4",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-04T08:00:00Z",
- "end_date": "2010-01-04T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 4) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.46654057502747,
- 41.83445374967984
- ],
- [
- -93.46984505653381,
- 41.83450171239077
- ],
- [
- -93.47622871398926,
- 41.83458165016244
- ],
- [
- -93.48343849182129,
- 41.83470155663275
- ],
- [
- -93.49206447601318,
- 41.834813469135725
- ],
- [
- -93.49886655807495,
- 41.8349093939825
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day5",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-05T08:00:00Z",
- "end_date": "2010-01-05T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 5) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.46654057502747,
- 41.83445374967984
- ],
- [
- -93.46984505653381,
- 41.83450171239077
- ],
- [
- -93.47622871398926,
- 41.83458165016244
- ],
- [
- -93.48343849182129,
- 41.83470155663275
- ],
- [
- -93.49206447601318,
- 41.834813469135725
- ],
- [
- -93.49886655807495,
- 41.8349093939825
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- }
- ]
-}
diff --git a/create-feed/examples/linestring-examples/scenario5_recurring_linestring_example.geojson b/create-feed/examples/linestring-examples/scenario5_recurring_linestring_example.geojson
deleted file mode 100644
index fc1817e7..00000000
--- a/create-feed/examples/linestring-examples/scenario5_recurring_linestring_example.geojson
+++ /dev/null
@@ -1,461 +0,0 @@
-{
- "road_event_feed_info": {
- "update_date": "2020-06-18T15:00:00Z",
- "publisher": "TestDOT",
- "contact_name": "Frederick Francis Feedmanager",
- "contact_email": "fred.feedmanager@testdot.gov",
- "update_frequency": 60,
- "version": "3.1",
- "license": "https://creativecommons.org/publicdomain/zero/1.0/",
- "data_sources": [
- {
- "data_source_id": "1",
- "organization_name": "Test City 1",
- "contact_name": "Solomn Soliel Sourcefeed",
- "contact_email": "solomon.sourcefeed@testcity1.gov",
- "update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- }
- ]
- },
- "type": "FeatureCollection",
- "features": [
- {
- "id": "PLK01012016-Day1",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "verified",
- "ending_accuracy": "verified",
- "start_date": "2010-01-01T08:32:01Z",
- "end_date": "2010-01-01T17:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; currently active work zone (day 1).",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2010-01-01T08:32:01Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.46077919006348,
- 41.83445374967984
- ],
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.46654057502747,
- 41.83445374967984
- ],
- [
- -93.46984505653381,
- 41.83450171239077
- ],
- [
- -93.47622871398926,
- 41.83458165016244
- ],
- [
- -93.48343849182129,
- 41.83470155663275
- ],
- [
- -93.49206447601318,
- 41.834813469135725
- ],
- [
- -93.49886655807495,
- 41.8349093939825
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ],
- [
- -93.51322174072264,
- 41.83502130612205
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day2",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-02T08:00:00Z",
- "end_date": "2010-01-02T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 2) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.46654057502747,
- 41.83445374967984
- ],
- [
- -93.46984505653381,
- 41.83450171239077
- ],
- [
- -93.47622871398926,
- 41.83458165016244
- ],
- [
- -93.48343849182129,
- 41.83470155663275
- ],
- [
- -93.49206447601318,
- 41.834813469135725
- ],
- [
- -93.49886655807495,
- 41.8349093939825
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day3",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-03T08:00:00Z",
- "end_date": "2010-01-03T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 3) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.46654057502747,
- 41.83445374967984
- ],
- [
- -93.46984505653381,
- 41.83450171239077
- ],
- [
- -93.47622871398926,
- 41.83458165016244
- ],
- [
- -93.48343849182129,
- 41.83470155663275
- ],
- [
- -93.49206447601318,
- 41.834813469135725
- ],
- [
- -93.49886655807495,
- 41.8349093939825
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day4",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-04T08:00:00Z",
- "end_date": "2010-01-04T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 4) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.46654057502747,
- 41.83445374967984
- ],
- [
- -93.46984505653381,
- 41.83450171239077
- ],
- [
- -93.47622871398926,
- 41.83458165016244
- ],
- [
- -93.48343849182129,
- 41.83470155663275
- ],
- [
- -93.49206447601318,
- 41.834813469135725
- ],
- [
- -93.49886655807495,
- 41.8349093939825
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day5",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-05T08:00:00Z",
- "end_date": "2010-01-05T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 5) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.46654057502747,
- 41.83445374967984
- ],
- [
- -93.46984505653381,
- 41.83450171239077
- ],
- [
- -93.47622871398926,
- 41.83458165016244
- ],
- [
- -93.48343849182129,
- 41.83470155663275
- ],
- [
- -93.49206447601318,
- 41.834813469135725
- ],
- [
- -93.49886655807495,
- 41.8349093939825
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/create-feed/examples/multipoint-examples/comprehensive_multipoint_example.geojson b/create-feed/examples/multipoint-examples/comprehensive_multipoint_example.geojson
deleted file mode 100644
index 9c2d4ab3..00000000
--- a/create-feed/examples/multipoint-examples/comprehensive_multipoint_example.geojson
+++ /dev/null
@@ -1,1274 +0,0 @@
-{
- "road_event_feed_info": {
- "update_date": "2020-06-18T15:00:00Z",
- "publisher": "TestDOT",
- "contact_name": "Frederick Francis Feedmanager",
- "contact_email": "fred.feedmanager@testdot.gov",
- "update_frequency": 60,
- "version": "3.1",
- "license": "https://creativecommons.org/publicdomain/zero/1.0/",
- "data_sources": [
- {
- "data_source_id": "1",
- "organization_name": "Test City 1",
- "contact_name": "Solomn Soliel Sourcefeed",
- "contact_email": "solomon.sourcefeed@testcity1.gov",
- "update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- },
- {
- "data_source_id": "2",
- "organization_name": "TestDOT",
- "contact_name": "Samuel Sonny Sourcefeed",
- "contact_email": "samuel.sourcefeed@testdot.gov",
- "update_frequency": 60,
- "update_date": "2020-06-18T14:39:01Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- },
- {
- "data_source_id": "3",
- "organization_name": "Test County 1",
- "contact_name": "Stu Spiel Sourcefeed",
- "contact_email": "stu.sourcefeed@testcounty1.gov",
- "update_frequency": 300,
- "update_date": "2020-06-18T14:37:05Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- },
- {
- "data_source_id": "4",
- "organization_name": "Test City 2",
- "contact_name": "Skip Jack Sourcefeed",
- "contact_email": "skip.sourcefeed@testcity2.gov",
- "update_frequency": 60,
- "update_date": "2020-06-18T14:38:59Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- }
- ]
- },
- "type": "FeatureCollection",
- "features": [
- {
- "id": "WZ389-NB",
- "type": "Feature",
- "properties": {
- "data_source_id": "4",
- "event_type": "work-zone",
- "road_names": [
- "Beaver Avenue"
- ],
- "direction": "northbound",
- "beginning_cross_street": "Aurora Avenue",
- "ending_cross_street": "NW 46th Place",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-01-01T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [
- "local-access-only"
- ],
- "description": "Bidirectional work zone, northbound direction with road event-level local access only restriction.",
- "creation_date": "2010-01-01T01:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.67801666259766,
- 41.63699137361764
- ],
- [
- -93.67807030677795,
- 41.64402312904328
- ]
- ]
- }
- },
- {
- "id": "WZ389-SB",
- "type": "Feature",
- "properties": {
- "data_source_id": "4",
- "event_type": "work-zone",
- "road_names": [
- "Beaver Avenue"
- ],
- "direction": "southbound",
- "beginning_cross_street": "NW 46th Place",
- "ending_cross_street": "Aurora Avenue",
- "beginning_accuracy": "verified",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-01-01T17:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [
- "local-access-only"
- ],
- "description": "Bidirectional work zone, southbound direction with lane-level local access only restriction.",
- "creation_date": "2010-01-01T01:01:01Z",
- "update_date": "2010-01-01T01:03:01Z",
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane",
- "restrictions": [
- {
- "restriction_type": "local-access-only"
- }
- ]
- },
- {
- "order": 2,
- "status": "open",
- "type": "bike-lane",
- "restrictions": [
- {
- "restriction_type": "local-access-only"
- }
- ]
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.67823123931885,
- 41.64400709398592
- ],
- [
- -93.67815613746643,
- 41.63699137361764
- ]
- ]
- }
- },
- {
- "id": "71234",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "I-80, I-35"
- ],
- "direction": "northbound",
- "beginning_milepost": 125.2,
- "ending_milepost": 126.3,
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:00:00Z",
- "end_date": "2010-01-02T01:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "reduced_speed_limit": 55,
- "description": "Single direction work zone without lane-level information.",
- "creation_date": "2009-12-31T18:01:01Z",
- "update_date": "2009-12-31T18:01:01Z"
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.776684050999961,
- 41.617961698000045
- ],
- [
- -93.776688974999956,
- 41.622297226000057
- ]
- ]
- }
- },
- {
- "id": "WDM-58493-NB",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "128th Street"
- ],
- "direction": "northbound",
- "beginning_cross_street": "US 6, Hickman Road",
- "ending_cross_street": "Douglas Ave",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T06:00:00Z",
- "end_date": "2010-05-01T05:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "description": "Single direction work zone with detailed lane-level information.",
- "creation_date": "2009-12-13T13:35:26Z",
- "update_date": "2009-12-31T15:11:16Z",
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane",
- "restrictions": [
- {
- "restriction_type": "reduced-width",
- "restriction_value": 10,
- "restriction_units": "feet"
- }
- ]
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.791522243999964,
- 41.614948252000033
- ],
- [
- -93.79347973299997,
- 41.628577397000072
- ]
- ]
- }
- },
- {
- "id": "65773-1",
- "type": "Feature",
- "properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
- ],
- "first": [
- "65773-1"
- ],
- "next": [
- "65773-2"
- ]
- },
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
- "beginning_milepost": 3.1,
- "ending_milepost": 2.9,
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T14:00:00Z",
- "end_date": "2010-01-05T23:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; first event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 5,
- "status": "open",
- "type": "right-entrance-ramp"
- },
- {
- "order": 6,
- "status": "open",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.720409507999989,
- 41.593422456000042
- ],
- [
- -93.724769801999969,
- 41.593457451000063
- ]
- ]
- }
- },
- {
- "id": "65773-2",
- "type": "Feature",
- "properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
- ],
- "first": [
- "65773-1"
- ],
- "next": [
- "65773-3"
- ]
- },
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
- "beginning_milepost": 2.9,
- "ending_milepost": 2.5,
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T14:00:00Z",
- "end_date": "2010-01-05T23:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "total_num_lanes": 4,
- "vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; second event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 5,
- "status": "open",
- "type": "right-exit-lane"
- },
- {
- "order": 6,
- "status": "open",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.724769801999969,
- 41.593457451000063
- ],
- [
- -93.730149926999957,
- 41.593410350000056
- ]
- ]
- }
- },
- {
- "id": "65773-3",
- "type": "Feature",
- "properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
- ],
- "first": [
- "65773-1"
- ]
- },
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
- "beginning_milepost": 2.5,
- "ending_milepost": 2.0,
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T14:00:00Z",
- "end_date": "2010-01-05T23:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "total_num_lanes": 3,
- "vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; third event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 5,
- "status": "open",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.730150629999969,
- 41.593410307000056
- ],
- [
- -93.742189315999951,
- 41.592481500000076
- ]
- ]
- }
- },
- {
- "id": "7733",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "I-80",
- "I-35"
- ],
- "direction": "westbound",
- "beginning_milepost": 133.967,
- "ending_milepost": 133.112,
- "beginning_accuracy": "verified",
- "ending_accuracy": "verified",
- "start_date": "2010-01-01T05:57:36Z",
- "end_date": "2010-01-05T23:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [],
- "description": "Single-direction work zone with lane shift",
- "creation_date": "2010-12-30T22:42:53Z",
- "update_date": "2010-01-01T05:57:36Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "shift-right",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "shift-right",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "shift-right",
- "type": "lane"
- },
- {
- "order": 5,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.652714940999942,
- 41.650200836000067
- ],
- [
- -93.683089,
- 41.651577294000049
- ]
- ]
- }
- },
- {
- "id": "121388-EB",
- "type": "Feature",
- "properties": {
- "data_source_id": "3",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "121388"
- ]
- },
- "road_names": [
- "IA 210"
- ],
- "direction": "eastbound",
- "beginning_milepost": 22.1,
- "ending_milepost": 24.6,
- "beginning_cross_street": "570th Avenue",
- "ending_cross_street": "610th Avenue",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T10:00:00Z",
- "end_date": "2010-01-01T16:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [],
- "description": "Bidirectional work zone with shoulder closure; eastbound direction with shoulder closure.",
- "creation_date": "2010-01-01T09:30:26Z",
- "update_date": "2010-01-01T09:30:26Z",
- "types_of_work": [
- {
- "type_name": "maintenance",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.56064319610596,
- 41.87764559047116
- ],
- [
- -93.48284840583801,
- 41.87750179926317
- ]
- ]
- }
- },
- {
- "id": "121388-WB",
- "type": "Feature",
- "properties": {
- "data_source_id": "3",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "121388"
- ]
- },
- "road_names": [
- "IA 210"
- ],
- "direction": "westbound",
- "beginning_milepost": 24.6,
- "ending_milepost": 22.1,
- "beginning_cross_street": "610th Avenue",
- "ending_cross_street": "570th Avenue",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T10:00:00Z",
- "end_date": "2010-01-01T16:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [
- "no-parking"
- ],
- "description": "Bidirectional work zone with shoulder closure; westbound direction without shoulder closure.",
- "creation_date": "2010-01-01T09:30:26Z",
- "update_date": "2010-01-01T09:30:26Z",
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "open",
- "type": "shoulder",
- "restrictions": [
- {
- "restriction_type": "no-parking"
- }
- ]
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.48284304141998,
- 41.877607645600484
- ],
- [
- -93.56063783168791,
- 41.87786127667653
- ]
- ]
- }
- },
- {
- "id": "67890",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "children": [
- "67890-detour1",
- "67890-detour2",
- "67890-detour3"
- ]
- },
- "road_names": [
- "I-35"
- ],
- "direction": "northbound",
- "beginning_milepost": 98.42,
- "ending_milepost": 101.50,
- "beginning_accuracy": "verified",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [
- "reduced-width"
- ],
- "description": "Simple, single direction work zone with detour.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "open",
- "type": "lane",
- "restrictions": [
- {
- "restriction_type": "reduced-width",
- "restriction_value": 11,
- "restriction_units": "feet"
- }
- ]
- },
- {
- "order": 3,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.570535026999949,
- 41.815141143000062
- ],
- [
- -93.571141838999949,
- 41.860579185000063
- ]
- ]
- }
- },
- {
- "id": "67890-detour1",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "67890"
- ],
- "first": [
- "67890-detour1"
- ],
- "next": [
- "67890-detour2"
- ]
- },
- "road_names": [
- "F22"
- ],
- "direction": "westbound",
- "ending_cross_street": "US 69",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, first segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.600376007999955,
- 41.791257966000046
- ],
- [
- -93.572478358999945,
- 41.79135169500006
- ]
- ]
- }
- },
- {
- "id": "67890-detour2",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "67890"
- ],
- "first": [
- "67890-detour1"
- ],
- "next": [
- "67890-detour3"
- ]
- },
- "road_names": [
- "US 69"
- ],
- "direction": "northbound",
- "beginning_cross_street": "NE 126th Avenue",
- "ending_cross_street": "IA 210",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, second segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.600401730999977,
- 41.877744832000076
- ],
- [
- -93.600373891999936,
- 41.791257820000055
- ]
- ]
- }
- },
- {
- "id": "67890-detour3",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "6780"
- ],
- "first": [
- "67890-detour1"
- ]
- },
- "road_names": [
- "IA 210"
- ],
- "direction": "eastbound",
- "beginning_cross_street": "US 69",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, third/final segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.573353147999967,
- 41.877796484000044
- ],
- [
- -93.60040158399994,
- 41.87774674700006
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day1",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "verified",
- "ending_accuracy": "verified",
- "start_date": "2010-01-01T08:32:01Z",
- "end_date": "2010-01-01T17:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; currently active work zone (day 1).",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2010-01-01T08:32:01Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.46077919006348,
- 41.83445374967984
- ],
- [
- -93.51322174072264,
- 41.83502130612205
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day2",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-02T08:00:00Z",
- "end_date": "2010-01-02T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 2) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day3",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-03T08:00:00Z",
- "end_date": "2010-01-03T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 3) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day4",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-04T08:00:00Z",
- "end_date": "2010-01-04T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 4) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day5",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-05T08:00:00Z",
- "end_date": "2010-01-05T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 5) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- }
- ]
-}
diff --git a/create-feed/examples/multipoint-examples/local_access_only_bidirectional_multipoint_example.geojson b/create-feed/examples/multipoint-examples/local_access_only_bidirectional_multipoint_example.geojson
deleted file mode 100644
index f3891e37..00000000
--- a/create-feed/examples/multipoint-examples/local_access_only_bidirectional_multipoint_example.geojson
+++ /dev/null
@@ -1,132 +0,0 @@
-{
- "road_event_feed_info": {
- "update_date": "2020-06-18T15:00:00Z",
- "publisher": "TestDOT",
- "contact_name": "Frederick Francis Feedmanager",
- "contact_email": "fred.feedmanager@testdot.gov",
- "update_frequency": 60,
- "version": "3.1",
- "license": "https://creativecommons.org/publicdomain/zero/1.0/",
- "data_sources": [
- {
- "data_source_id": "1",
- "organization_name": "Test City 1",
- "contact_name": "Solomn Soliel Sourcefeed",
- "contact_email": "solomon.sourcefeed@testcity1.gov",
- "update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- }
- ]
- },
- "type": "FeatureCollection",
- "features": [
- {
- "id": "WZ389-NB",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "Beaver Avenue"
- ],
- "direction": "northbound",
- "beginning_cross_street": "Aurora Avenue",
- "ending_cross_street": "NW 46th Place",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-01-01T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [
- "local-access-only"
- ],
- "description": "Bidirectional work zone, northbound direction with road event-level local access only restriction.",
- "creation_date": "2010-01-01T01:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.67801666259766,
- 41.63699137361764
- ],
- [
- -93.67807030677795,
- 41.64402312904328
- ]
- ]
- }
- },
- {
- "id": "WZ389-SB",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "Beaver Avenue"
- ],
- "direction": "southbound",
- "beginning_cross_street": "NW 46th Place",
- "ending_cross_street": "Aurora Avenue",
- "beginning_accuracy": "verified",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-01-01T17:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [
- "local-access-only"
- ],
- "description": "Bidirectional work zone, southbound direction with lane-level local access only restriction.",
- "creation_date": "2010-01-01T01:01:01Z",
- "update_date": "2010-01-01T01:03:01Z",
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane",
- "restrictions": [
- {
- "restriction_type": "local-access-only"
- }
- ]
- },
- {
- "order": 2,
- "status": "open",
- "type": "bike-lane",
- "restrictions": [
- {
- "restriction_type": "local-access-only"
- }
- ]
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.67823123931885,
- 41.64400709398592
- ],
- [
- -93.67815613746643,
- 41.63699137361764
- ]
- ]
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/create-feed/examples/multipoint-examples/scenario2_laneshift_multipoint_example.geojson b/create-feed/examples/multipoint-examples/scenario2_laneshift_multipoint_example.geojson
deleted file mode 100644
index 9605e016..00000000
--- a/create-feed/examples/multipoint-examples/scenario2_laneshift_multipoint_example.geojson
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "road_event_feed_info": {
- "update_date": "2020-06-18T15:00:00Z",
- "publisher": "TestDOT",
- "contact_name": "Frederick Francis Feedmanager",
- "contact_email": "fred.feedmanager@testdot.gov",
- "update_frequency": 60,
- "version": "3.1",
- "license": "https://creativecommons.org/publicdomain/zero/1.0/",
- "data_sources": [
- {
- "data_source_id": "1",
- "organization_name": "Test City 1",
- "contact_name": "Solomn Soliel Sourcefeed",
- "contact_email": "solomon.sourcefeed@testcity1.gov",
- "update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- }
- ]
- },
- "type": "FeatureCollection",
- "features": [
- {
- "id": "7733",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "I-80",
- "I-35"
- ],
- "direction": "westbound",
- "beginning_milepost": 133.967,
- "ending_milepost": 133.112,
- "beginning_accuracy": "verified",
- "ending_accuracy": "verified",
- "start_date": "2010-01-01T05:57:36Z",
- "end_date": "2010-01-05T23:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [],
- "description": "Single-direction work zone with lane shift",
- "creation_date": "2010-12-30T22:42:53Z",
- "update_date": "2010-01-01T05:57:36Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "shift-right",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "shift-right",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "shift-right",
- "type": "lane"
- },
- {
- "order": 5,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.652714940999942,
- 41.650200836000067
- ],
- [
- -93.683089,
- 41.651577294000049
- ]
- ]
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/create-feed/examples/multipoint-examples/scenario3_shoulder_bidrectional_multipoint_example.geojson b/create-feed/examples/multipoint-examples/scenario3_shoulder_bidrectional_multipoint_example.geojson
deleted file mode 100644
index b0e5af91..00000000
--- a/create-feed/examples/multipoint-examples/scenario3_shoulder_bidrectional_multipoint_example.geojson
+++ /dev/null
@@ -1,167 +0,0 @@
-{
- "road_event_feed_info": {
- "update_date": "2020-06-18T15:00:00Z",
- "publisher": "TestDOT",
- "contact_name": "Frederick Francis Feedmanager",
- "contact_email": "fred.feedmanager@testdot.gov",
- "update_frequency": 60,
- "version": "3.1",
- "license": "https://creativecommons.org/publicdomain/zero/1.0/",
- "data_sources": [
- {
- "data_source_id": "1",
- "organization_name": "Test City 1",
- "contact_name": "Solomn Soliel Sourcefeed",
- "contact_email": "solomon.sourcefeed@testcity1.gov",
- "update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- }
- ]
- },
- "type": "FeatureCollection",
- "features": [
- {
- "id": "121388-EB",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "121388"
- ]
- },
- "road_names": [
- "IA 210"
- ],
- "direction": "eastbound",
- "beginning_milepost": 22.1,
- "ending_milepost": 24.6,
- "beginning_cross_street": "570th Avenue",
- "ending_cross_street": "610th Avenue",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T10:00:00Z",
- "end_date": "2010-01-01T16:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [],
- "description": "Bidirectional work zone with shoulder closure; eastbound direction with shoulder closure.",
- "creation_date": "2010-01-01T09:30:26Z",
- "update_date": "2010-01-01T09:30:26Z",
- "types_of_work": [
- {
- "type_name": "maintenance",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.56064319610596,
- 41.87764559047116
- ],
- [
- -93.48284840583801,
- 41.87750179926317
- ]
- ]
- }
- },
- {
- "id": "121388-WB",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "121388"
- ]
- },
- "road_names": [
- "IA 210"
- ],
- "direction": "westbound",
- "beginning_milepost": 24.6,
- "ending_milepost": 22.1,
- "beginning_cross_street": "610th Avenue",
- "ending_cross_street": "570th Avenue",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T10:00:00Z",
- "end_date": "2010-01-01T16:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "restrictions": [
- "no-parking"
- ],
- "description": "Bidirectional work zone with shoulder closure; westbound direction without shoulder closure.",
- "creation_date": "2010-01-01T09:30:26Z",
- "update_date": "2010-01-01T09:30:26Z",
- "lanes": [
- {
- "order": 1,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 3,
- "status": "open",
- "type": "shoulder",
- "restrictions": [
- {
- "restriction_type": "no-parking"
- }
- ]
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.48284304141998,
- 41.877607645600484
- ],
- [
- -93.56063783168791,
- 41.87786127667653
- ]
- ]
- }
- }
- ]
-}
diff --git a/create-feed/examples/multipoint-examples/scenario4_detour_multipoint_example.geojson b/create-feed/examples/multipoint-examples/scenario4_detour_multipoint_example.geojson
deleted file mode 100644
index 8946a76b..00000000
--- a/create-feed/examples/multipoint-examples/scenario4_detour_multipoint_example.geojson
+++ /dev/null
@@ -1,255 +0,0 @@
-{
- "road_event_feed_info": {
- "update_date": "2020-06-18T15:00:00Z",
- "publisher": "TestDOT",
- "contact_name": "Frederick Francis Feedmanager",
- "contact_email": "fred.feedmanager@testdot.gov",
- "update_frequency": 60,
- "version": "3.1",
- "license": "https://creativecommons.org/publicdomain/zero/1.0/",
- "data_sources": [
- {
- "data_source_id": "1",
- "organization_name": "Test City 1",
- "contact_name": "Solomn Soliel Sourcefeed",
- "contact_email": "solomon.sourcefeed@testcity1.gov",
- "update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- }
- ]
- },
- "type": "FeatureCollection",
- "features": [
- {
- "id": "67890",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "children": [
- "67890-detour1",
- "67890-detour2",
- "67890-detour3"
- ]
- },
- "road_names": [
- "I-35"
- ],
- "direction": "northbound",
- "beginning_milepost": 98.42,
- "ending_milepost": 101.50,
- "beginning_accuracy": "verified",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [
- "reduced-width"
- ],
- "description": "Simple, single direction work zone with detour.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z",
- "types_of_work": [
- {
- "type_name": "surface-work",
- "is_architectural_change": true
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "shoulder"
- },
- {
- "order": 2,
- "status": "open",
- "type": "lane",
- "restrictions": [
- {
- "restriction_type": "reduced-width",
- "restriction_value": 11,
- "restriction_units": "feet"
- }
- ]
- },
- {
- "order": 3,
- "status": "closed",
- "type": "lane"
- },
- {
- "order": 4,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.570535026999949,
- 41.815141143000062
- ],
- [
- -93.571141838999949,
- 41.860579185000063
- ]
- ]
- }
- },
- {
- "id": "67890-detour1",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "67890"
- ],
- "first": [
- "67890-detour1"
- ],
- "next": [
- "67890-detour2"
- ]
- },
- "road_names": [
- "F22"
- ],
- "direction": "westbound",
- "ending_cross_street": "US 69",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, first segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.600376007999955,
- 41.791257966000046
- ],
- [
- -93.572478358999945,
- 41.79135169500006
- ]
- ]
- }
- },
- {
- "id": "67890-detour2",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "67890"
- ],
- "first": [
- "67890-detour1"
- ],
- "next": [
- "67890-detour3"
- ]
- },
- "road_names": [
- "US 69"
- ],
- "direction": "northbound",
- "beginning_cross_street": "NE 126th Avenue",
- "ending_cross_street": "IA 210",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, second segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.600401730999977,
- 41.877744832000076
- ],
- [
- -93.600373891999936,
- 41.791257820000055
- ]
- ]
- }
- },
- {
- "id": "67890-detour3",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "6780"
- ],
- "first": [
- "67890-detour1"
- ]
- },
- "road_names": [
- "IA 210"
- ],
- "direction": "eastbound",
- "beginning_cross_street": "US 69",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-01T01:03:01Z",
- "end_date": "2010-06-30T01:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, third/final segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.573353147999967,
- 41.877796484000044
- ],
- [
- -93.60040158399994,
- 41.87774674700006
- ]
- ]
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/create-feed/examples/multipoint-examples/scenario5_recurring_multipoint_example.geojson b/create-feed/examples/multipoint-examples/scenario5_recurring_multipoint_example.geojson
deleted file mode 100644
index 366150cd..00000000
--- a/create-feed/examples/multipoint-examples/scenario5_recurring_multipoint_example.geojson
+++ /dev/null
@@ -1,333 +0,0 @@
-{
- "road_event_feed_info": {
- "update_date": "2020-06-18T15:00:00Z",
- "publisher": "TestDOT",
- "contact_name": "Frederick Francis Feedmanager",
- "contact_email": "fred.feedmanager@testdot.gov",
- "update_frequency": 60,
- "version": "3.1",
- "license": "https://creativecommons.org/publicdomain/zero/1.0/",
- "data_sources": [
- {
- "data_source_id": "1",
- "organization_name": "Test City 1",
- "contact_name": "Solomn Soliel Sourcefeed",
- "contact_email": "solomon.sourcefeed@testcity1.gov",
- "update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
- }
- ]
- },
- "type": "FeatureCollection",
- "features": [
- {
- "id": "PLK01012016-Day1",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "verified",
- "ending_accuracy": "verified",
- "start_date": "2010-01-01T08:32:01Z",
- "end_date": "2010-01-01T17:00:00Z",
- "start_date_accuracy": "verified",
- "end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; currently active work zone (day 1).",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2010-01-01T08:32:01Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.46077919006348,
- 41.83445374967984
- ],
- [
- -93.51322174072264,
- 41.83502130612205
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day2",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-02T08:00:00Z",
- "end_date": "2010-01-02T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 2) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day3",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-03T08:00:00Z",
- "end_date": "2010-01-03T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 3) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day4",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-04T08:00:00Z",
- "end_date": "2010-01-04T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 4) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- },
- {
- "id": "PLK01012016-Day5",
- "type": "Feature",
- "properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "PLK01012016"
- ]
- },
- "road_names": [
- "NE 150th Avenue"
- ],
- "direction": "westbound",
- "beginning_cross_street": "NE 72nd Street",
- "ending_cross_street": "NE 56th Street",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
- "start_date": "2010-01-05T08:00:00Z",
- "end_date": "2010-01-05T17:00:00Z",
- "start_date_accuracy": "estimated",
- "end_date_accuracy": "estimated",
- "event_status": "pending",
- "vehicle_impact": "all-lanes-open",
- "description": "Work zone with recurring event; pending (day 5) work zone.",
- "creation_date": "2009-12-29T15:37:57Z",
- "update_date": "2009-12-29T15:37:57Z",
- "types_of_work": [
- {
- "type_name": "roadside-work",
- "is_architectural_change": false
- }
- ],
- "lanes": [
- {
- "order": 1,
- "status": "open",
- "type": "lane"
- },
- {
- "order": 2,
- "status": "closed",
- "type": "shoulder"
- }
- ]
- },
- "geometry": {
- "type": "MultiPoint",
- "coordinates": [
- [
- -93.46380472183228,
- 41.8344297683109
- ],
- [
- -93.50240707397461,
- 41.83495735635197
- ]
- ]
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/examples/README.md b/examples/README.md
new file mode 100644
index 00000000..78ec4e1b
--- /dev/null
+++ b/examples/README.md
@@ -0,0 +1,66 @@
+# WZDx Example Feeds
+This directory contains example GeoJSON documents from WZDx data feeds. The examples cover a range of common scenarios. There are examples for the `WZDxFeed`, `RoadRestrictionFeed`, and `SwzDeviceFeed`, contained within the respective subdirectories.
+
+## WZDxFeed Examples
+The following `WZDxFeed` examples represent a variety of common scenarios when creating road events. Most of the examples are modeled after work zone scenarios used in [previous WZDx discussion](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131). Optional fields are not included in all examples but represented at least once across the various examples. Each scenario is provided as a single GeoJSON file which may contain multiple work zones documenting differences in representing road events at varying levels of complexity. All example scenarios are provided for the `LineString` geometry type as well as one `MultiPoint` geometry type for scenario 1.
+
+Below is a summary of each of the example WZDx feeds and detailed differences for each of the road events:
+
+### Scenario 1 - Simple Work Zone
+Scenario 1 ([LineString Example](/examples/WZDxFeed/scenario1_simple_linestring_example.geojson) or [MultiPoint Example](/examples/WZDxFeed/scenario1_simple_multipoint_example.geojson)) is based on the same numbered annotated work zones in [Discussion Topic 131](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131) with a single lane closed on a multi-lane facility.
+
+- First work zone is single direction, single event, with no lane-level information (ID: `71234`).
+- Second work zone is single direction, single event, with detailed lane information (ID: `WDM-58493-NB`).
+- Third work zone is single direction, three sequential events, with detailed lane information. This work zone demonstrates the use of the `relationship` property, both `first` and `next` to indiciate the order of the road events and `parents` to indicate all road events are related (they all have `parents` as `65773`). (IDs: `65773-1`, `65773-2`, `65773-3`).
+
+### Scenario 2 - Lane Shift (simple scenario)
+The [Scenario 2 Example](/examples/WZDxFeed/scenario2_laneshift_linestring_example.geojson) is based on the same numbered annotated work zones in [Discussion Topic 131](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131) which keeps all lanes open but shifts them resulting in both shoulders being closed on a multi-lane facility.
+
+- Single work zone with lane shift in the detailed lane information showing use of verified location and start time. ("id": `7733`).
+
+### Scenario 3 - Shoulder Closure (bidirectional work zone)
+The [Scenario 3 Example](/examples/WZDxFeed/scenario3_shoulder_bidirectional_linestring_example.geojson) is based on the same numbered annotated work zones in [Discussion Topic 131](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131) which closes the shoulder in a single direction on an undivided roadway.
+
+- Single work zone represented by two road events (IDs: `121388-EB`, `121388-WB`), one in direction of shoulder closure and second in opposite direction.
+- Demonstrates the use of `restrictions` for the event as well as individual lanes
+- Demonstrates the use of `relationship` to show the road events in each direction are related to a common parent (`121388`)
+
+### Scenario 4 - Road Closure with Detour on Arterial
+The [Scenario 4 Example](/examples/WZDxFeed/scenario4_detour_linestring_example.geojson) is based on the same numbered annotated work zones in [Discussion Topic 131](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131) which has an associated detour for a road closure. The example is slightly modified for use on a multi-lane facility.
+
+- Single work zone in one direction represented by a single road event (ID: `67890`), with a detour.
+- Showing use of `relationship` `parents` and `children` to connect the detour road events (IDs: `67890-detour1`, `67890-detour2`, `67890-detour3`) to the work zone.
+- Also uses `relationship` to represent the sequence of the three detour road events.
+- Does not use `parents` to connect the work zone and all detour road events to a common parent (e.g. a project), but that approach is acceptable.
+- Shows the use of both the work zone and detour road event objects in the same feed.
+
+### Scenario 5 - Recurring Work Zone
+The [Scenario 5 Example](/examples/WZDxFeed/scenario5_recurring_linestring_example.geojson)) is based on the same numbered annotated work zones in [Discussion Topic 131](https://github.com/usdot-jpo-ode/jpo-wzdx/discussions/131) assuming that it is just a single lane closure but is recurring over multiple days.
+
+- Simple work zone but with a recurring component.
+- Five road events: an `active` (day 1, ID: `PLK01012016-Day1`) event and four additional events (IDs: `PLK01012016-Day2`, `PLK01012016-Day3`, `PLK01012016-Day4`, `PLK01012016-Day5`) for later dates with a pending status.
+- The `active` work zone event demonstrates value of verified location and time.
+- The `relationship` property is used to show all road events are related (they have the same parent of `PLK01012016`).
+
+### Local Access Only (bidirectional work zone)
+The [local access only example](/examples/WZDxFeed/local_access_only_bidirectional_linestring_example.geojson) shows a basic work zone that keeps all lanes open but places restrictions to only local traffic.
+
+- Single work zone on a bidirectional roadwith with impact to both directions, represented by two road events (IDs: `WZ389-NB`, `WZ389-SB`), one for each direction.
+- Uses `local-access-only` [RestrictionType](/spec-content/enumerated-types/RestrictionType.md).
+- One road event shows basic details (not lane-level), while the opposite direction road event shows detailed lane information. The detailed lane information also includes a bike lane for reference.
+
+## SwzDeviceFeed Examples
+The following example `SwzDeviceFeed`s are provided:
+
+1. [Arrow Board "ok" Example](/examples/SwzDeviceFeed/arrow_board_ok_example.geojson): A simple feed that includes a single arrow board with an `ok` status and several optional properties provided.
+2. [Camera "error" Example](/examples/SwzDeviceFeed/camera_error_example.geojson): A simple feed that includes a single camera with an `error` status, no image data, associated `status_messages`, and a few optional properties provided.
+
+## RoadRestrictionFeed Examples
+The following example `RoadrestrictionFeed`s are provided:
+
+### 1. Bridge Height Restriction
+The [Bridge Height Restriction Example](/examples/RoadRestrictionFeed/bridge_height_restriction_linestring_example.geojson) shows the use of a [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md) to define a bridge clearance on a roadway.
+
+- Defines three bridge height restrictions.
+- Two restrictions (`id`s: `Bridge2`, `Bridge3`) are defined using only the required core details and basic event-level information.
+- One restriction (`id`: `Bridge1`) also includes lane-level details with additional height restrictions values for individual lanes.
\ No newline at end of file
diff --git a/examples/RoadRestrictionFeed/bridge_height_restriction_linestring_example.geojson b/examples/RoadRestrictionFeed/bridge_height_restriction_linestring_example.geojson
new file mode 100644
index 00000000..7f786a4b
--- /dev/null
+++ b/examples/RoadRestrictionFeed/bridge_height_restriction_linestring_example.geojson
@@ -0,0 +1,249 @@
+{
+ "feed_info": {
+ "update_date": "2021-07-01T15:00:00Z",
+ "publisher": "New York State DOT",
+ "contact_name": "Frederick Francis Feedmanager",
+ "contact_email": "fred.feedmanager@testdot.gov",
+ "update_frequency": 300,
+ "version": "4.0",
+ "data_sources": [
+ {
+ "data_source_id": "1",
+ "organization_name": "New York City DOT",
+ "contact_name": "Solomn Soliel Sourcefeed",
+ "contact_email": "solomon.sourcefeed@testcity1.gov",
+ "update_frequency": 60,
+ "update_date": "2021-07-01T00:00:00Z"
+ }
+ ]
+ },
+ "type": "FeatureCollection",
+ "features": [
+ {
+ "id": "Bridge1",
+ "type": "Feature",
+ "properties": {
+ "core_details": {
+ "event_type": "restriction",
+ "data_source_id": "1",
+ "road_names": [
+ "HRP",
+ "Hutchinson Parkway",
+ "Hutchinson River Parkway"
+ ],
+ "direction": "northbound"
+ },
+ "restrictions": [
+ {
+ "type": "reduced-height",
+ "value": 10.5,
+ "unit": "feet"
+ }
+ ],
+ "lanes": [
+ {
+ "order": 1,
+ "status": "open",
+ "type": "general",
+ "restrictions": [
+ {
+ "type": "reduced-height",
+ "value": 10.5,
+ "unit": "feet"
+ }
+ ]
+ },
+ {
+ "order": 2,
+ "status": "open",
+ "type": "general",
+ "restrictions": [
+ {
+ "type": "reduced-height",
+ "value": 11,
+ "unit": "feet"
+ }
+ ]
+ },
+ {
+ "order": 3,
+ "status": "open",
+ "type": "general",
+ "restrictions": [
+ {
+ "type": "reduced-height",
+ "value": 10.5,
+ "unit": "feet"
+ }
+ ]
+ }
+ ]
+ },
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ -73.83857488632202,
+ 40.83782481579416
+ ],
+ [
+ -73.8385534286499,
+ 40.83905758069452
+ ],
+ [
+ -73.83834958076477,
+ 40.84045773030475
+ ],
+ [
+ -73.83817791938782,
+ 40.841269397695825
+ ],
+ [
+ -73.83692264556885,
+ 40.84498467829638
+ ],
+ [
+ -73.83683949708939,
+ 40.84519569836051
+ ],
+ [
+ -73.83674025535583,
+ 40.84555483673242
+ ],
+ [
+ -73.83666649460793,
+ 40.84582976902955
+ ],
+ [
+ -73.83646667003632,
+ 40.84667890696712
+ ]
+ ]
+ }
+ },
+ {
+ "id": "Bridge2",
+ "type": "Feature",
+ "properties": {
+ "core_details": {
+ "event_type": "restriction",
+ "data_source_id": "1",
+ "road_names": [
+ "HRP",
+ "Hutchinson Parkway",
+ "Hutchinson River Parkway"
+ ],
+ "direction": "southbound"
+ },
+ "restrictions": [
+ {
+ "type": "reduced-height",
+ "value": 9.0,
+ "unit": "feet"
+ }
+ ]
+ },
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ -73.83725792169571,
+ 40.84455654898646
+ ],
+ [
+ -73.8378158211708,
+ 40.84294748850873
+ ],
+ [
+ -73.83808672428131,
+ 40.84214192905569
+ ],
+ [
+ -73.83834153413773,
+ 40.84133635981177
+ ]
+ ]
+ }
+ },
+ {
+ "id": "Bridge3",
+ "type": "Feature",
+ "properties": {
+ "core_details": {
+ "event_type": "restriction",
+ "data_source_id": "1",
+ "road_names": [
+ "HRP",
+ "Hutchinson Parkway",
+ "Hutchinson River Parkway"
+ ],
+ "direction": "southbound"
+ },
+ "restrictions": [
+ {
+ "type": "reduced-height",
+ "value": 11,
+ "unit": "feet"
+ }
+ ]
+ },
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ -73.83834153413773,
+ 40.841335852523244
+ ],
+ [
+ -73.8384260237217,
+ 40.84103300059402
+ ],
+ [
+ -73.83847497403622,
+ 40.84082856207721
+ ],
+ [
+ -73.83851654827595,
+ 40.84063071775089
+ ],
+ [
+ -73.83855678141117,
+ 40.84045722300951
+ ],
+ [
+ -73.83865937590599,
+ 40.83983324694044
+ ],
+ [
+ -73.83872039616108,
+ 40.8393289888175
+ ],
+ [
+ -73.83875325322151,
+ 40.838710582522424
+ ],
+ [
+ -73.83877135813236,
+ 40.838443230352674
+ ],
+ [
+ -73.83877202868462,
+ 40.83817942829337
+ ],
+ [
+ -73.83877471089363,
+ 40.83773502091179
+ ],
+ [
+ -73.83877538144588,
+ 40.83721857114785
+ ],
+ [
+ -73.83877336978912,
+ 40.83710442404608
+ ]
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/SwzDeviceFeed/arrow_board_ok_example.geojson b/examples/SwzDeviceFeed/arrow_board_ok_example.geojson
new file mode 100644
index 00000000..3745812b
--- /dev/null
+++ b/examples/SwzDeviceFeed/arrow_board_ok_example.geojson
@@ -0,0 +1,52 @@
+{
+ "feed_info": {
+ "update_date": "2021-12-06T15:00:00Z",
+ "publisher": "TestVendor",
+ "contact_name": "Robert Vendor",
+ "contact_email": "robert.vendor@testvendor.com",
+ "update_frequency": 60,
+ "version": "1.0",
+ "license": "https://creativecommons.org/publicdomain/zero/1.0/",
+ "data_sources": [
+ {
+ "data_source_id": "ff55b721-bd18-4c21-8ad7-1b31fdddd876",
+ "organization_name": "Test Vendor Inc.",
+ "contact_name": "Timmy Testor",
+ "contact_email": "timmy.testor@testvendor.com",
+ "update_frequency": 60,
+ "update_date": "2021-12-06T14:54:12Z"
+ }
+ ]
+ },
+ "type": "FeatureCollection",
+ "features": [
+ {
+ "id": "280258a2-d131-4d8d-b5a7-2cef813b25a8",
+ "type": "Feature",
+ "properties": {
+ "core_details": {
+ "device_type": "arrow-board",
+ "data_source_id": "ff55b721-bd18-4c21-8ad7-1b31fdddd876",
+ "road_names": [
+ "I-80",
+ "I-35"
+ ],
+ "device_status": "ok",
+ "has_automatic_location": true,
+ "name": "Arrow Board 1",
+ "update_date": "2021-12-06T14:54:12Z"
+ },
+ "pattern": "right-arrow-flashing",
+ "is_moving": false,
+ "is_in_transport_position": false
+ },
+ "geometry": {
+ "type": "Point",
+ "coordinates": [
+ -93.776684050999961,
+ 41.617961698000045
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/SwzDeviceFeed/camera_error_example.geojson b/examples/SwzDeviceFeed/camera_error_example.geojson
new file mode 100644
index 00000000..e1f8a554
--- /dev/null
+++ b/examples/SwzDeviceFeed/camera_error_example.geojson
@@ -0,0 +1,53 @@
+{
+ "feed_info": {
+ "update_date": "2021-12-06T15:00:00Z",
+ "publisher": "TestVendor",
+ "contact_name": "Robert Vendor",
+ "contact_email": "robert.vendor@testvendor.com",
+ "update_frequency": 60,
+ "version": "1.0",
+ "license": "https://creativecommons.org/publicdomain/zero/1.0/",
+ "data_sources": [
+ {
+ "data_source_id": "ff55b721-bd18-4c21-8ad7-1b31fdddd876",
+ "organization_name": "Test Vendor Inc.",
+ "contact_name": "Timmy Testor",
+ "contact_email": "timmy.testor@testvendor.com",
+ "update_frequency": 60,
+ "update_date": "2021-12-06T14:54:12Z"
+ }
+ ]
+ },
+ "type": "FeatureCollection",
+ "features": [
+ {
+ "id": "f18dd2ab-6f1a-4039-8012-54c677be18ab",
+ "type": "Feature",
+ "properties": {
+ "core_details": {
+ "device_type": "camera",
+ "data_source_id": "ff55b721-bd18-4c21-8ad7-1b31fdddd876",
+ "road_names": [
+ "US-1",
+ "I-295",
+ "ME-26"
+ ],
+ "device_status": "error",
+ "has_automatic_location": true,
+ "status_messages": [
+ "Failed to capture image."
+ ],
+ "name": "Tukey's Bridge North CCTV",
+ "update_date": "2021-12-06T14:54:12Z"
+ }
+ },
+ "geometry": {
+ "type": "Point",
+ "coordinates": [
+ 43.676800032123545,
+ -70.25631689267998
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/create-feed/examples/linestring-examples/local_access_only_bidirectional_linestring_example.geojson b/examples/WZDxFeed/local_access_only_bidirectional_linestring_example.geojson
similarity index 70%
rename from create-feed/examples/linestring-examples/local_access_only_bidirectional_linestring_example.geojson
rename to examples/WZDxFeed/local_access_only_bidirectional_linestring_example.geojson
index 32be0c50..c257aa10 100644
--- a/create-feed/examples/linestring-examples/local_access_only_bidirectional_linestring_example.geojson
+++ b/examples/WZDxFeed/local_access_only_bidirectional_linestring_example.geojson
@@ -5,7 +5,7 @@
"contact_name": "Frederick Francis Feedmanager",
"contact_email": "fred.feedmanager@testdot.gov",
"update_frequency": 60,
- "version": "3.1",
+ "version": "4.0",
"license": "https://creativecommons.org/publicdomain/zero/1.0/",
"data_sources": [
{
@@ -14,11 +14,7 @@
"contact_name": "Solomn Soliel Sourcefeed",
"contact_email": "solomon.sourcefeed@testcity1.gov",
"update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
+ "update_date": "2020-06-18T14:37:31Z"
}
]
},
@@ -28,12 +24,17 @@
"id": "WZ389-NB",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "Beaver Avenue"
- ],
- "direction": "northbound",
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "road_names": [
+ "Beaver Avenue"
+ ],
+ "direction": "northbound",
+ "description": "Bidirectional work zone, northbound direction with road event-level local access only restriction.",
+ "creation_date": "2010-01-01T01:01:01Z",
+ "update_date": "2010-01-01T01:03:01Z"
+ },
"beginning_cross_street": "Aurora Avenue",
"ending_cross_street": "NW 46th Place",
"beginning_accuracy": "estimated",
@@ -42,14 +43,14 @@
"end_date": "2010-01-01T17:00:00Z",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
+ "location_method": "channel-device-method",
"event_status": "active",
"vehicle_impact": "all-lanes-open",
"restrictions": [
- "local-access-only"
- ],
- "description": "Bidirectional work zone, northbound direction with road event-level local access only restriction.",
- "creation_date": "2010-01-01T01:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
+ {
+ "type": "local-access-only"
+ }
+ ]
},
"geometry": {
"type": "LineString",
@@ -85,46 +86,61 @@
"id": "WZ389-SB",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "Beaver Avenue"
- ],
- "direction": "southbound",
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "road_names": [
+ "Beaver Avenue"
+ ],
+ "direction": "southbound",
+ "description": "Bidirectional work zone, southbound direction with lane-level local access only restriction.",
+ "creation_date": "2010-01-01T01:01:01Z",
+ "update_date": "2010-01-01T01:03:01Z"
+ },
"beginning_cross_street": "NW 46th Place",
"ending_cross_street": "Aurora Avenue",
"beginning_accuracy": "verified",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T01:03:01Z",
"end_date": "2010-01-01T17:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "verified",
"end_date_accuracy": "estimated",
"event_status": "active",
"vehicle_impact": "all-lanes-open",
"restrictions": [
- "local-access-only"
+ {
+ "type": "local-access-only"
+ }
],
- "description": "Bidirectional work zone, southbound direction with lane-level local access only restriction.",
- "creation_date": "2010-01-01T01:01:01Z",
- "update_date": "2010-01-01T01:03:01Z",
"lanes": [
{
"order": 1,
"status": "open",
- "type": "lane",
+ "type": "center-left-turn-lane",
"restrictions": [
{
- "restriction_type": "local-access-only"
+ "type": "local-access-only"
}
]
},
{
"order": 2,
"status": "open",
+ "type": "general",
+ "restrictions": [
+ {
+ "type": "local-access-only"
+ }
+ ]
+ },
+ {
+ "order": 3,
+ "status": "open",
"type": "bike-lane",
"restrictions": [
{
- "restriction_type": "local-access-only"
+ "type": "local-access-only"
}
]
}
diff --git a/create-feed/examples/linestring-examples/scenario1_simple_linestring_example.geojson b/examples/WZDxFeed/scenario1_simple_linestring_example.geojson
similarity index 79%
rename from create-feed/examples/linestring-examples/scenario1_simple_linestring_example.geojson
rename to examples/WZDxFeed/scenario1_simple_linestring_example.geojson
index a6f6b451..cc9a2f23 100644
--- a/create-feed/examples/linestring-examples/scenario1_simple_linestring_example.geojson
+++ b/examples/WZDxFeed/scenario1_simple_linestring_example.geojson
@@ -5,7 +5,7 @@
"contact_name": "Frederick Francis Feedmanager",
"contact_email": "fred.feedmanager@testdot.gov",
"update_frequency": 60,
- "version": "3.1",
+ "version": "4.0",
"license": "https://creativecommons.org/publicdomain/zero/1.0/",
"data_sources": [
{
@@ -14,11 +14,7 @@
"contact_name": "Solomn Soliel Sourcefeed",
"contact_email": "solomon.sourcefeed@testcity1.gov",
"update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
+ "update_date": "2020-06-18T14:37:31Z"
},
{
"data_source_id": "2",
@@ -26,11 +22,7 @@
"contact_name": "Samuel Sonny Sourcefeed",
"contact_email": "samuel.sourcefeed@testdot.gov",
"update_frequency": 60,
- "update_date": "2020-06-18T14:39:01Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
+ "update_date": "2020-06-18T14:39:01Z"
}
]
},
@@ -40,26 +32,30 @@
"id": "71234",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "I-80, I-35"
- ],
- "direction": "northbound",
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "road_names": [
+ "I-80",
+ "I-35"
+ ],
+ "direction": "northbound",
+ "description": "Single direction work zone without lane-level information.",
+ "creation_date": "2009-12-31T18:01:01Z",
+ "update_date": "2009-12-31T18:01:01Z"
+ },
"beginning_milepost": 125.2,
"ending_milepost": 126.3,
"beginning_accuracy": "estimated",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T01:00:00Z",
"end_date": "2010-01-02T01:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
"vehicle_impact": "some-lanes-closed",
- "reduced_speed_limit": 55,
- "description": "Single direction work zone without lane-level information.",
- "creation_date": "2009-12-31T18:01:01Z",
- "update_date": "2009-12-31T18:01:01Z"
+ "reduced_speed_limit_kph": 88.514
},
"geometry": {
"type": "LineString",
@@ -95,42 +91,45 @@
"id": "WDM-58493-NB",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "128th Street"
- ],
- "direction": "northbound",
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "road_names": [
+ "128th Street"
+ ],
+ "direction": "northbound",
+ "description": "Single direction work zone with detailed lane-level information. Also includes additional details in vehicle impact",
+ "creation_date": "2009-12-13T13:35:26Z",
+ "update_date": "2009-12-31T15:11:16Z"
+ },
"beginning_cross_street": "US 6, Hickman Road",
"ending_cross_street": "Douglas Ave",
"beginning_accuracy": "estimated",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T06:00:00Z",
"end_date": "2010-05-01T05:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "description": "Single direction work zone with detailed lane-level information.",
- "creation_date": "2009-12-13T13:35:26Z",
- "update_date": "2009-12-31T15:11:16Z",
+ "vehicle_impact": "some-lanes-closed-merge-left",
"lanes": [
{
"order": 1,
"status": "open",
- "type": "lane",
+ "type": "general",
"restrictions": [
{
- "restriction_type": "reduced-width",
- "restriction_value": 10,
- "restriction_units": "feet"
+ "type": "reduced-width",
+ "value": 10,
+ "unit": "feet"
}
]
},
{
"order": 2,
"status": "closed",
- "type": "lane"
+ "type": "general"
}
]
},
@@ -404,39 +403,47 @@
"id": "65773-1",
"type": "Feature",
"properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
- ],
- "first": [
- "65773-1"
+ "core_details": {
+ "data_source_id": "2",
+ "event_type": "work-zone",
+ "relationship": {
+ "parents": [
+ "65773"
+ ],
+ "first": [
+ "65773-1"
+ ],
+ "next": [
+ "65773-2"
+ ]
+ },
+ "road_names": [
+ "I-235"
],
- "next": [
- "65773-2"
- ]
+ "direction": "westbound",
+ "description": "Single-direction work zone represented by three sequential road events; first event.",
+ "creation_date": "2009-12-31T11:56:26Z",
+ "update_date": "2009-12-31T11:56:26Z"
},
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
"beginning_milepost": 3.1,
"ending_milepost": 2.9,
"beginning_accuracy": "estimated",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T14:00:00Z",
"end_date": "2010-01-05T23:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
"vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
+ "worker_presence": {
+ "are_workers_present": false,
+ "definition": [
+ "humans-in-right-of-way"
+ ]
+ },
+ "reduced_speed_limit_kph": 88.514,
"restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; first event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
"types_of_work": [
{
"type_name": "surface-work",
@@ -452,22 +459,22 @@
{
"order": 2,
"status": "closed",
- "type": "lane"
+ "type": "general"
},
{
"order": 3,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 4,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 5,
"status": "open",
- "type": "right-entrance-ramp"
+ "type": "entrance-lane"
},
{
"order": 6,
@@ -502,40 +509,50 @@
"id": "65773-2",
"type": "Feature",
"properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
- ],
- "first": [
- "65773-1"
+ "core_details": {
+ "data_source_id": "2",
+ "event_type": "work-zone",
+ "relationship": {
+ "parents": [
+ "65773"
+ ],
+ "first": [
+ "65773-1"
+ ],
+ "next": [
+ "65773-3"
+ ]
+ },
+ "road_names": [
+ "I-235"
],
- "next": [
- "65773-3"
- ]
+ "direction": "westbound",
+ "description": "Single-direction work zone represented by three sequential road events; second event.",
+ "creation_date": "2009-12-31T11:56:26Z",
+ "update_date": "2009-12-31T11:56:26Z"
},
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
"beginning_milepost": 2.9,
"ending_milepost": 2.5,
"beginning_accuracy": "estimated",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T14:00:00Z",
"end_date": "2010-01-05T23:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
- "total_num_lanes": 4,
"vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
+ "worker_presence": {
+ "are_workers_present": true,
+ "method": "check-in-app",
+ "worker_presence_last_confirmed_date": "2010-01-04T15:00:00Z",
+ "confidence": "high",
+ "definition": [
+ "humans-in-right-of-way"
+ ]
+ },
+ "reduced_speed_limit_kph": 88.514,
"restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; second event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
"types_of_work": [
{
"type_name": "surface-work",
@@ -551,22 +568,22 @@
{
"order": 2,
"status": "closed",
- "type": "lane"
+ "type": "general"
},
{
"order": 3,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 4,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 5,
"status": "open",
- "type": "right-exit-lane"
+ "type": "exit-lane"
},
{
"order": 6,
@@ -617,37 +634,47 @@
"id": "65773-3",
"type": "Feature",
"properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
+ "core_details": {
+ "data_source_id": "2",
+ "event_type": "work-zone",
+ "relationship": {
+ "parents": [
+ "65773"
+ ],
+ "first": [
+ "65773-1"
+ ]
+ },
+ "road_names": [
+ "I-235"
],
- "first": [
- "65773-1"
- ]
+ "direction": "westbound",
+ "description": "Single-direction work zone represented by three sequential road events; third event.",
+ "creation_date": "2009-12-31T11:56:26Z",
+ "update_date": "2009-12-31T11:56:26Z"
},
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
"beginning_milepost": 2.5,
"ending_milepost": 2.0,
"beginning_accuracy": "estimated",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T14:00:00Z",
"end_date": "2010-01-05T23:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
- "total_num_lanes": 3,
"vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
+ "worker_presence": {
+ "are_workers_present": true,
+ "method": "check-in-app",
+ "worker_presence_last_confirmed_date": "2010-01-04T15:00:00Z",
+ "confidence": "high",
+ "definition": [
+ "humans-in-right-of-way"
+ ]
+ },
+ "reduced_speed_limit_kph": 88.514,
"restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; third event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
"types_of_work": [
{
"type_name": "surface-work",
@@ -663,17 +690,17 @@
{
"order": 2,
"status": "closed",
- "type": "lane"
+ "type": "general"
},
{
"order": 3,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 4,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 5,
diff --git a/create-feed/examples/multipoint-examples/scenario1_simple_multipoint_example.geojson b/examples/WZDxFeed/scenario1_simple_multipoint_example.geojson
similarity index 63%
rename from create-feed/examples/multipoint-examples/scenario1_simple_multipoint_example.geojson
rename to examples/WZDxFeed/scenario1_simple_multipoint_example.geojson
index 04e4b0c0..74d29f0e 100644
--- a/create-feed/examples/multipoint-examples/scenario1_simple_multipoint_example.geojson
+++ b/examples/WZDxFeed/scenario1_simple_multipoint_example.geojson
@@ -5,7 +5,7 @@
"contact_name": "Frederick Francis Feedmanager",
"contact_email": "fred.feedmanager@testdot.gov",
"update_frequency": 60,
- "version": "3.1",
+ "version": "4.0",
"license": "https://creativecommons.org/publicdomain/zero/1.0/",
"data_sources": [
{
@@ -14,11 +14,7 @@
"contact_name": "Solomn Soliel Sourcefeed",
"contact_email": "solomon.sourcefeed@testcity1.gov",
"update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
+ "update_date": "2020-06-18T14:37:31Z"
},
{
"data_source_id": "2",
@@ -26,11 +22,7 @@
"contact_name": "Samuel Sonny Sourcefeed",
"contact_email": "samuel.sourcefeed@testdot.gov",
"update_frequency": 60,
- "update_date": "2020-06-18T14:39:01Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
+ "update_date": "2020-06-18T14:39:01Z"
}
]
},
@@ -40,26 +32,30 @@
"id": "71234",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "I-80, I-35"
- ],
- "direction": "northbound",
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "road_names": [
+ "I-80",
+ "I-35"
+ ],
+ "direction": "northbound",
+ "description": "Single direction work zone without lane-level information.",
+ "creation_date": "2009-12-31T18:01:01Z",
+ "update_date": "2009-12-31T18:01:01Z"
+ },
"beginning_milepost": 125.2,
"ending_milepost": 126.3,
"beginning_accuracy": "estimated",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T01:00:00Z",
"end_date": "2010-01-02T01:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
"vehicle_impact": "some-lanes-closed",
- "reduced_speed_limit": 55,
- "description": "Single direction work zone without lane-level information.",
- "creation_date": "2009-12-31T18:01:01Z",
- "update_date": "2009-12-31T18:01:01Z"
+ "reduced_speed_limit_kph": 88.514
},
"geometry": {
"type": "MultiPoint",
@@ -79,42 +75,45 @@
"id": "WDM-58493-NB",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "128th Street"
- ],
- "direction": "northbound",
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "road_names": [
+ "128th Street"
+ ],
+ "direction": "northbound",
+ "description": "Single direction work zone with detailed lane-level information. Also includes additional details in vehicle impact",
+ "creation_date": "2009-12-13T13:35:26Z",
+ "update_date": "2009-12-31T15:11:16Z"
+ },
"beginning_cross_street": "US 6, Hickman Road",
"ending_cross_street": "Douglas Ave",
"beginning_accuracy": "estimated",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T06:00:00Z",
"end_date": "2010-05-01T05:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
- "vehicle_impact": "some-lanes-closed",
- "description": "Single direction work zone with detailed lane-level information.",
- "creation_date": "2009-12-13T13:35:26Z",
- "update_date": "2009-12-31T15:11:16Z",
+ "vehicle_impact": "some-lanes-closed-merge-left",
"lanes": [
{
"order": 1,
"status": "open",
- "type": "lane",
+ "type": "general",
"restrictions": [
{
- "restriction_type": "reduced-width",
- "restriction_value": 10,
- "restriction_units": "feet"
+ "type": "reduced-width",
+ "value": 10,
+ "unit": "feet"
}
]
},
{
"order": 2,
"status": "closed",
- "type": "lane"
+ "type": "general"
}
]
},
@@ -136,39 +135,47 @@
"id": "65773-1",
"type": "Feature",
"properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
- ],
- "first": [
- "65773-1"
+ "core_details": {
+ "data_source_id": "2",
+ "event_type": "work-zone",
+ "relationship": {
+ "parents": [
+ "65773"
+ ],
+ "first": [
+ "65773-1"
+ ],
+ "next": [
+ "65773-2"
+ ]
+ },
+ "road_names": [
+ "I-235"
],
- "next": [
- "65773-2"
- ]
+ "direction": "westbound",
+ "description": "Single-direction work zone represented by three sequential road events; first event.",
+ "creation_date": "2009-12-31T11:56:26Z",
+ "update_date": "2009-12-31T11:56:26Z"
},
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
"beginning_milepost": 3.1,
"ending_milepost": 2.9,
"beginning_accuracy": "estimated",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T14:00:00Z",
"end_date": "2010-01-05T23:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
"vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
+ "worker_presence": {
+ "are_workers_present": false,
+ "definition": [
+ "humans-in-right-of-way"
+ ]
+ },
+ "reduced_speed_limit_kph": 88.514,
"restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; first event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
"types_of_work": [
{
"type_name": "surface-work",
@@ -184,22 +191,22 @@
{
"order": 2,
"status": "closed",
- "type": "lane"
+ "type": "general"
},
{
"order": 3,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 4,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 5,
"status": "open",
- "type": "right-entrance-ramp"
+ "type": "entrance-lane"
},
{
"order": 6,
@@ -226,40 +233,50 @@
"id": "65773-2",
"type": "Feature",
"properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
- ],
- "first": [
- "65773-1"
+ "core_details": {
+ "data_source_id": "2",
+ "event_type": "work-zone",
+ "relationship": {
+ "parents": [
+ "65773"
+ ],
+ "first": [
+ "65773-1"
+ ],
+ "next": [
+ "65773-3"
+ ]
+ },
+ "road_names": [
+ "I-235"
],
- "next": [
- "65773-3"
- ]
+ "direction": "westbound",
+ "description": "Single-direction work zone represented by three sequential road events; second event.",
+ "creation_date": "2009-12-31T11:56:26Z",
+ "update_date": "2009-12-31T11:56:26Z"
},
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
"beginning_milepost": 2.9,
"ending_milepost": 2.5,
"beginning_accuracy": "estimated",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T14:00:00Z",
"end_date": "2010-01-05T23:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
- "total_num_lanes": 4,
"vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
+ "worker_presence": {
+ "are_workers_present": true,
+ "method": "check-in-app",
+ "worker_presence_last_confirmed_date": "2010-01-04T15:00:00Z",
+ "confidence": "high",
+ "definition": [
+ "humans-in-right-of-way"
+ ]
+ },
+ "reduced_speed_limit_kph": 88.514,
"restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; second event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
"types_of_work": [
{
"type_name": "surface-work",
@@ -275,22 +292,22 @@
{
"order": 2,
"status": "closed",
- "type": "lane"
+ "type": "general"
},
{
"order": 3,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 4,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 5,
"status": "open",
- "type": "right-exit-lane"
+ "type": "exit-lane"
},
{
"order": 6,
@@ -317,37 +334,47 @@
"id": "65773-3",
"type": "Feature",
"properties": {
- "data_source_id": "2",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "65773"
+ "core_details": {
+ "data_source_id": "2",
+ "event_type": "work-zone",
+ "relationship": {
+ "parents": [
+ "65773"
+ ],
+ "first": [
+ "65773-1"
+ ]
+ },
+ "road_names": [
+ "I-235"
],
- "first": [
- "65773-1"
- ]
+ "direction": "westbound",
+ "description": "Single-direction work zone represented by three sequential road events; third event.",
+ "creation_date": "2009-12-31T11:56:26Z",
+ "update_date": "2009-12-31T11:56:26Z"
},
- "road_names": [
- "I-235"
- ],
- "direction": "westbound",
"beginning_milepost": 2.5,
"ending_milepost": 2.0,
"beginning_accuracy": "estimated",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T14:00:00Z",
"end_date": "2010-01-05T23:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
- "total_num_lanes": 3,
"vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
+ "worker_presence": {
+ "are_workers_present": true,
+ "method": "check-in-app",
+ "worker_presence_last_confirmed_date": "2010-01-04T15:00:00Z",
+ "confidence": "high",
+ "definition": [
+ "humans-in-right-of-way"
+ ]
+ },
+ "reduced_speed_limit_kph": 88.514,
"restrictions": [],
- "description": "Single-direction work zone represented by three sequential road events; third event.",
- "creation_date": "2009-12-31T11:56:26Z",
- "update_date": "2009-12-31T11:56:26Z",
"types_of_work": [
{
"type_name": "surface-work",
@@ -363,17 +390,17 @@
{
"order": 2,
"status": "closed",
- "type": "lane"
+ "type": "general"
},
{
"order": 3,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 4,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 5,
diff --git a/create-feed/examples/linestring-examples/scenario2_laneshift_linestring_example.geojson b/examples/WZDxFeed/scenario2_laneshift_linestring_example.geojson
similarity index 77%
rename from create-feed/examples/linestring-examples/scenario2_laneshift_linestring_example.geojson
rename to examples/WZDxFeed/scenario2_laneshift_linestring_example.geojson
index 3ec8ffaf..9caf50bf 100644
--- a/create-feed/examples/linestring-examples/scenario2_laneshift_linestring_example.geojson
+++ b/examples/WZDxFeed/scenario2_laneshift_linestring_example.geojson
@@ -5,7 +5,7 @@
"contact_name": "Frederick Francis Feedmanager",
"contact_email": "fred.feedmanager@testdot.gov",
"update_frequency": 60,
- "version": "3.1",
+ "version": "4.0",
"license": "https://creativecommons.org/publicdomain/zero/1.0/",
"data_sources": [
{
@@ -14,11 +14,7 @@
"contact_name": "Solomn Soliel Sourcefeed",
"contact_email": "solomon.sourcefeed@testcity1.gov",
"update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
+ "update_date": "2020-06-18T14:37:31Z"
}
]
},
@@ -28,29 +24,40 @@
"id": "7733",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "road_names": [
- "I-80",
- "I-35"
- ],
- "direction": "westbound",
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "road_names": [
+ "I-80",
+ "I-35"
+ ],
+ "direction": "westbound",
+ "description": "Single-direction work zone with lane shift",
+ "creation_date": "2010-12-30T22:42:53Z",
+ "update_date": "2010-01-01T05:57:36Z"
+ },
"beginning_milepost": 133.967,
"ending_milepost": 133.112,
"beginning_accuracy": "verified",
"ending_accuracy": "verified",
"start_date": "2010-01-01T05:57:36Z",
"end_date": "2010-01-05T23:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "verified",
"end_date_accuracy": "estimated",
"event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "workers_present": true,
- "reduced_speed_limit": 55,
+ "vehicle_impact": "all-lanes-open-shift-right",
+ "worker_presence": {
+ "are_workers_present": true,
+ "method": "wearables-present",
+ "definition": [
+ "workers-in-work-zone-working",
+ "workers-in-work-zone-not-working",
+ "mobile-equipment-in-work-zone-moving"
+ ]
+ },
+ "reduced_speed_limit_kph": 88.5,
"restrictions": [],
- "description": "Single-direction work zone with lane shift",
- "creation_date": "2010-12-30T22:42:53Z",
- "update_date": "2010-01-01T05:57:36Z",
"types_of_work": [
{
"type_name": "surface-work",
@@ -66,17 +73,17 @@
{
"order": 2,
"status": "shift-right",
- "type": "lane"
+ "type": "general"
},
{
"order": 3,
"status": "shift-right",
- "type": "lane"
+ "type": "general"
},
{
"order": 4,
"status": "shift-right",
- "type": "lane"
+ "type": "general"
},
{
"order": 5,
diff --git a/create-feed/examples/linestring-examples/scenario3_shoulder_bidrectional_linestring_example.geojson b/examples/WZDxFeed/scenario3_shoulder_bidirectional_linestring_example.geojson
similarity index 74%
rename from create-feed/examples/linestring-examples/scenario3_shoulder_bidrectional_linestring_example.geojson
rename to examples/WZDxFeed/scenario3_shoulder_bidirectional_linestring_example.geojson
index 3febad6d..a2ce54cd 100644
--- a/create-feed/examples/linestring-examples/scenario3_shoulder_bidrectional_linestring_example.geojson
+++ b/examples/WZDxFeed/scenario3_shoulder_bidirectional_linestring_example.geojson
@@ -5,7 +5,7 @@
"contact_name": "Frederick Francis Feedmanager",
"contact_email": "fred.feedmanager@testdot.gov",
"update_frequency": 60,
- "version": "3.1",
+ "version": "4.0",
"license": "https://creativecommons.org/publicdomain/zero/1.0/",
"data_sources": [
{
@@ -14,11 +14,7 @@
"contact_name": "Solomn Soliel Sourcefeed",
"contact_email": "solomon.sourcefeed@testcity1.gov",
"update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
+ "update_date": "2020-06-18T14:37:31Z"
}
]
},
@@ -28,17 +24,22 @@
"id": "121388-EB",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "121388"
- ]
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "relationship": {
+ "parents": [
+ "121388"
+ ]
+ },
+ "road_names": [
+ "IA 210"
+ ],
+ "direction": "eastbound",
+ "description": "Bidirectional work zone with shoulder closure; eastbound direction with shoulder closure.",
+ "creation_date": "2010-01-01T09:30:26Z",
+ "update_date": "2010-01-01T09:30:26Z"
},
- "road_names": [
- "IA 210"
- ],
- "direction": "eastbound",
"beginning_milepost": 22.1,
"ending_milepost": 24.6,
"beginning_cross_street": "570th Avenue",
@@ -47,14 +48,12 @@
"ending_accuracy": "estimated",
"start_date": "2010-01-01T10:00:00Z",
"end_date": "2010-01-01T16:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
"vehicle_impact": "all-lanes-open",
"restrictions": [],
- "description": "Bidirectional work zone with shoulder closure; eastbound direction with shoulder closure.",
- "creation_date": "2010-01-01T09:30:26Z",
- "update_date": "2010-01-01T09:30:26Z",
"types_of_work": [
{
"type_name": "maintenance",
@@ -64,13 +63,13 @@
"lanes": [
{
"order": 1,
- "status": "open",
- "type": "lane"
+ "status": "closed",
+ "type": "general"
},
{
"order": 2,
- "status": "closed",
- "type": "lane"
+ "status": "open",
+ "type": "general"
},
{
"order": 3,
@@ -109,17 +108,22 @@
"id": "121388-WB",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "parents": [
- "121388"
- ]
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "relationship": {
+ "parents": [
+ "121388"
+ ]
+ },
+ "road_names": [
+ "IA 210"
+ ],
+ "direction": "westbound",
+ "description": "Bidirectional work zone with shoulder closure; westbound direction without shoulder closure.",
+ "creation_date": "2010-01-01T09:30:26Z",
+ "update_date": "2010-01-01T09:30:26Z"
},
- "road_names": [
- "IA 210"
- ],
- "direction": "westbound",
"beginning_milepost": 24.6,
"ending_milepost": 22.1,
"beginning_cross_street": "610th Avenue",
@@ -128,26 +132,26 @@
"ending_accuracy": "estimated",
"start_date": "2010-01-01T10:00:00Z",
"end_date": "2010-01-01T16:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "estimated",
"end_date_accuracy": "estimated",
"event_status": "active",
"vehicle_impact": "all-lanes-open",
"restrictions": [
- "no-parking"
+ {
+ "type": "no-parking"
+ }
],
- "description": "Bidirectional work zone with shoulder closure; westbound direction without shoulder closure.",
- "creation_date": "2010-01-01T09:30:26Z",
- "update_date": "2010-01-01T09:30:26Z",
"lanes": [
{
"order": 1,
"status": "closed",
- "type": "lane"
+ "type": "general"
},
{
"order": 2,
"status": "open",
- "type": "lane"
+ "type": "general"
},
{
"order": 3,
@@ -155,7 +159,7 @@
"type": "shoulder",
"restrictions": [
{
- "restriction_type": "no-parking"
+ "type": "no-parking"
}
]
}
@@ -196,4 +200,4 @@
}
}
]
-}
+}
\ No newline at end of file
diff --git a/create-feed/examples/linestring-examples/scenario4_detour_linestring_example.geojson b/examples/WZDxFeed/scenario4_detour_linestring_example.geojson
similarity index 85%
rename from create-feed/examples/linestring-examples/scenario4_detour_linestring_example.geojson
rename to examples/WZDxFeed/scenario4_detour_linestring_example.geojson
index 0e5ed38b..da47eb19 100644
--- a/create-feed/examples/linestring-examples/scenario4_detour_linestring_example.geojson
+++ b/examples/WZDxFeed/scenario4_detour_linestring_example.geojson
@@ -5,7 +5,7 @@
"contact_name": "Frederick Francis Feedmanager",
"contact_email": "fred.feedmanager@testdot.gov",
"update_frequency": 60,
- "version": "3.1",
+ "version": "4.0",
"license": "https://creativecommons.org/publicdomain/zero/1.0/",
"data_sources": [
{
@@ -14,11 +14,7 @@
"contact_name": "Solomn Soliel Sourcefeed",
"contact_email": "solomon.sourcefeed@testcity1.gov",
"update_frequency": 300,
- "update_date": "2020-06-18T14:37:31Z",
- "location_verify_method": "GPS",
- "location_method": "channel-device-method",
- "lrs_type": "milemarkers",
- "lrs_url": "https://gis.iowadot.gov/rams/rest/services/lrs"
+ "update_date": "2020-06-18T14:37:31Z"
}
]
},
@@ -28,37 +24,46 @@
"id": "67890",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "work-zone",
- "relationship": {
- "children": [
- "67890-detour1",
- "67890-detour2",
- "67890-detour3"
- ]
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "relationship": {
+ "children": [
+ "67890-detour1",
+ "67890-detour2",
+ "67890-detour3"
+ ]
+ },
+ "road_names": [
+ "I-35"
+ ],
+ "direction": "northbound",
+ "description": "Simple, single direction work zone with detour.",
+ "creation_date": "2009-12-15T14:01:01Z",
+ "update_date": "2010-01-01T01:03:01Z"
},
- "road_names": [
- "I-35"
- ],
- "direction": "northbound",
"beginning_milepost": 98.42,
"ending_milepost": 101.50,
"beginning_accuracy": "verified",
"ending_accuracy": "estimated",
"start_date": "2010-01-01T01:03:01Z",
"end_date": "2010-06-30T01:00:00Z",
+ "location_method": "channel-device-method",
"start_date_accuracy": "verified",
"end_date_accuracy": "estimated",
"event_status": "active",
"vehicle_impact": "some-lanes-closed",
- "workers_present": true,
- "reduced_speed_limit": 55,
- "restrictions": [
- "reduced-width"
- ],
- "description": "Simple, single direction work zone with detour.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z",
+ "worker_presence": {
+ "are_workers_present": true,
+ "method": "scheduled",
+ "confidence": "medium",
+ "definition": [
+ "workers-in-work-zone-working",
+ "workers-in-work-zone-not-working",
+ "mobile-equipment-in-work-zone-moving"
+ ]
+ },
+ "reduced_speed_limit_kph": 88.5,
"types_of_work": [
{
"type_name": "surface-work",
@@ -74,19 +79,19 @@
{
"order": 2,
"status": "open",
- "type": "lane",
+ "type": "general",
"restrictions": [
{
- "restriction_type": "reduced-width",
- "restriction_value": 11,
- "restriction_units": "feet"
+ "type": "reduced-width",
+ "value": 11,
+ "unit": "feet"
}
]
},
{
"order": 3,
"status": "closed",
- "type": "lane"
+ "type": "general"
},
{
"order": 4,
@@ -269,35 +274,35 @@
"id": "67890-detour1",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "67890"
- ],
- "first": [
- "67890-detour1"
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "detour",
+ "relationship": {
+ "parents": [
+ "67890"
+ ],
+ "first": [
+ "67890-detour1"
+ ],
+ "next": [
+ "67890-detour2"
+ ]
+ },
+ "road_names": [
+ "F22"
],
- "next": [
- "67890-detour2"
- ]
+ "direction": "westbound",
+ "description": "Detour for road event 67890, first segment.",
+ "creation_date": "2009-12-15T14:01:01Z",
+ "update_date": "2010-01-01T01:03:01Z"
},
- "road_names": [
- "F22"
- ],
- "direction": "westbound",
+ "beginning_cross_street": "I-35",
"ending_cross_street": "US 69",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
"start_date": "2010-01-01T01:03:01Z",
"end_date": "2010-06-30T01:00:00Z",
"start_date_accuracy": "verified",
"end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, first segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
+ "event_status": "active"
},
"geometry": {
"type": "LineString",
@@ -353,36 +358,35 @@
"id": "67890-detour2",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "67890"
- ],
- "first": [
- "67890-detour1"
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "detour",
+ "relationship": {
+ "parents": [
+ "67890"
+ ],
+ "first": [
+ "67890-detour1"
+ ],
+ "next": [
+ "67890-detour3"
+ ]
+ },
+ "road_names": [
+ "US 69"
],
- "next": [
- "67890-detour3"
- ]
+ "direction": "northbound",
+ "description": "Detour for road event 67890, second segment.",
+ "creation_date": "2009-12-15T14:01:01Z",
+ "update_date": "2010-01-01T01:03:01Z"
},
- "road_names": [
- "US 69"
- ],
- "direction": "northbound",
"beginning_cross_street": "NE 126th Avenue",
"ending_cross_street": "IA 210",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
"start_date": "2010-01-01T01:03:01Z",
"end_date": "2010-06-30T01:00:00Z",
"start_date_accuracy": "verified",
"end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, second segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
+ "event_status": "active"
},
"geometry": {
"type": "LineString",
@@ -734,32 +738,32 @@
"id": "67890-detour3",
"type": "Feature",
"properties": {
- "data_source_id": "1",
- "event_type": "detour",
- "relationship": {
- "parents": [
- "6780"
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "detour",
+ "relationship": {
+ "parents": [
+ "6780"
+ ],
+ "first": [
+ "67890-detour1"
+ ]
+ },
+ "road_names": [
+ "IA 210"
],
- "first": [
- "67890-detour1"
- ]
+ "direction": "eastbound",
+ "description": "Detour for road event 67890, third/final segment.",
+ "creation_date": "2009-12-15T14:01:01Z",
+ "update_date": "2010-01-01T01:03:01Z"
},
- "road_names": [
- "IA 210"
- ],
- "direction": "eastbound",
"beginning_cross_street": "US 69",
- "beginning_accuracy": "estimated",
- "ending_accuracy": "estimated",
+ "ending_cross_street": "I-35",
"start_date": "2010-01-01T01:03:01Z",
"end_date": "2010-06-30T01:00:00Z",
"start_date_accuracy": "verified",
"end_date_accuracy": "estimated",
- "event_status": "active",
- "vehicle_impact": "all-lanes-open",
- "description": "Detour for road event 67890, third/final segment.",
- "creation_date": "2009-12-15T14:01:01Z",
- "update_date": "2010-01-01T01:03:01Z"
+ "event_status": "active"
},
"geometry": {
"type": "LineString",
diff --git a/examples/WZDxFeed/scenario5_recurring_linestring_example.geojson b/examples/WZDxFeed/scenario5_recurring_linestring_example.geojson
new file mode 100644
index 00000000..0a2b7538
--- /dev/null
+++ b/examples/WZDxFeed/scenario5_recurring_linestring_example.geojson
@@ -0,0 +1,827 @@
+{
+ "road_event_feed_info": {
+ "update_date": "2020-06-18T15:00:00Z",
+ "publisher": "TestDOT",
+ "contact_name": "Frederick Francis Feedmanager",
+ "contact_email": "fred.feedmanager@testdot.gov",
+ "update_frequency": 60,
+ "version": "4.0",
+ "license": "https://creativecommons.org/publicdomain/zero/1.0/",
+ "data_sources": [
+ {
+ "data_source_id": "1",
+ "organization_name": "Test City 1",
+ "contact_name": "Solomn Soliel Sourcefeed",
+ "contact_email": "solomon.sourcefeed@testcity1.gov",
+ "update_frequency": 300,
+ "update_date": "2020-06-18T14:37:31Z"
+ }
+ ]
+ },
+ "type": "FeatureCollection",
+ "features": [
+ {
+ "id": "67890",
+ "type": "Feature",
+ "properties": {
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "work-zone",
+ "relationship": {
+ "children": [
+ "67890-detour1",
+ "67890-detour2",
+ "67890-detour3"
+ ]
+ },
+ "road_names": [
+ "I-35"
+ ],
+ "direction": "northbound",
+ "description": "Simple, single direction work zone with detour.",
+ "creation_date": "2009-12-15T14:01:01Z",
+ "update_date": "2010-01-01T01:03:01Z"
+ },
+ "beginning_milepost": 98.42,
+ "ending_milepost": 101.50,
+ "beginning_accuracy": "verified",
+ "ending_accuracy": "estimated",
+ "start_date": "2010-01-01T01:03:01Z",
+ "end_date": "2010-06-30T01:00:00Z",
+ "location_method": "channel-device-method",
+ "start_date_accuracy": "verified",
+ "end_date_accuracy": "estimated",
+ "event_status": "active",
+ "vehicle_impact": "some-lanes-closed",
+ "worker_presence": {
+ "are_workers_present": true,
+ "method": "scheduled",
+ "confidence": "medium",
+ "definition": [
+ "workers-in-work-zone-working",
+ "workers-in-work-zone-not-working",
+ "mobile-equipment-in-work-zone-moving"
+ ]
+ },
+ "reduced_speed_limit_kph": 55,
+ "types_of_work": [
+ {
+ "type_name": "surface-work",
+ "is_architectural_change": true
+ }
+ ],
+ "lanes": [
+ {
+ "order": 1,
+ "status": "open",
+ "type": "shoulder"
+ },
+ {
+ "order": 2,
+ "status": "open",
+ "type": "general",
+ "restrictions": [
+ {
+ "type": "reduced-width",
+ "value": 11,
+ "unit": "feet"
+ }
+ ]
+ },
+ {
+ "order": 3,
+ "status": "closed",
+ "type": "general"
+ },
+ {
+ "order": 4,
+ "status": "closed",
+ "type": "shoulder"
+ }
+ ]
+ },
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ -93.570535026999949,
+ 41.815141143000062
+ ],
+ [
+ -93.570558665999954,
+ 41.815778842000043
+ ],
+ [
+ -93.570582206999973,
+ 41.816327889000036
+ ],
+ [
+ -93.570613866999963,
+ 41.817305885000053
+ ],
+ [
+ -93.570653239999956,
+ 41.818343932000062
+ ],
+ [
+ -93.570692683999937,
+ 41.819444889000067
+ ],
+ [
+ -93.57072468399997,
+ 41.820444622000025
+ ],
+ [
+ -93.570725033999963,
+ 41.820762049000052
+ ],
+ [
+ -93.570737569999949,
+ 41.821725757000024
+ ],
+ [
+ -93.570735194999941,
+ 41.823038359000066
+ ],
+ [
+ -93.570744205999972,
+ 41.824273739000034
+ ],
+ [
+ -93.570741062999957,
+ 41.824888576000035
+ ],
+ [
+ -93.570745857999952,
+ 41.825769359000049
+ ],
+ [
+ -93.570750405999945,
+ 41.82642422400005
+ ],
+ [
+ -93.570751056999939,
+ 41.827013323000074
+ ],
+ [
+ -93.570767342999943,
+ 41.82791125600005
+ ],
+ [
+ -93.570783135999989,
+ 41.828363077000063
+ ],
+ [
+ -93.57081113199996,
+ 41.829478340000037
+ ],
+ [
+ -93.570846661999951,
+ 41.830487788000028
+ ],
+ [
+ -93.570890330999987,
+ 41.83194334500007
+ ],
+ [
+ -93.570902443999955,
+ 41.832520995000039
+ ],
+ [
+ -93.570930157999953,
+ 41.833378885000059
+ ],
+ [
+ -93.570954688999961,
+ 41.834811573000025
+ ],
+ [
+ -93.570948738999959,
+ 41.836344370000063
+ ],
+ [
+ -93.570942684999977,
+ 41.837782799000081
+ ],
+ [
+ -93.570936722999988,
+ 41.839304156000026
+ ],
+ [
+ -93.570923044999972,
+ 41.840765465000061
+ ],
+ [
+ -93.570924651999974,
+ 41.84221532600003
+ ],
+ [
+ -93.570926279999981,
+ 41.843685202000074
+ ],
+ [
+ -93.570931724,
+ 41.845146499000066
+ ],
+ [
+ -93.570929340999953,
+ 41.846447657000056
+ ],
+ [
+ -93.570938627999965,
+ 41.84792610900007
+ ],
+ [
+ -93.570932442999947,
+ 41.849247287000026
+ ],
+ [
+ -93.570939776999978,
+ 41.849617513000055
+ ],
+ [
+ -93.570957815999975,
+ 41.850528174000033
+ ],
+ [
+ -93.570991150999987,
+ 41.852249359000041
+ ],
+ [
+ -93.571024497999986,
+ 41.85397641600008
+ ],
+ [
+ -93.571053711,
+ 41.855521371000066
+ ],
+ [
+ -93.571083075999979,
+ 41.85719849700007
+ ],
+ [
+ -93.57110858599998,
+ 41.858940244000053
+ ],
+ [
+ -93.571141838999949,
+ 41.860579185000063
+ ]
+ ]
+ }
+ },
+ {
+ "id": "67890-detour1",
+ "type": "Feature",
+ "properties": {
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "detour",
+ "relationship": {
+ "parents": [
+ "67890"
+ ],
+ "first": [
+ "67890-detour1"
+ ],
+ "next": [
+ "67890-detour2"
+ ]
+ },
+ "road_names": [
+ "F22"
+ ],
+ "direction": "westbound",
+ "description": "Detour for road event 67890, first segment.",
+ "creation_date": "2009-12-15T14:01:01Z",
+ "update_date": "2010-01-01T01:03:01Z"
+ },
+ "beginning_cross_street": "I-35",
+ "ending_cross_street": "US 69",
+ "start_date": "2010-01-01T01:03:01Z",
+ "end_date": "2010-06-30T01:00:00Z",
+ "start_date_accuracy": "verified",
+ "end_date_accuracy": "estimated",
+ "event_status": "active"
+ },
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ -93.600376007999955,
+ 41.791257966000046
+ ],
+ [
+ -93.600375128999985,
+ 41.791257965000057
+ ],
+ [
+ -93.600373887999979,
+ 41.79125798900003
+ ],
+ [
+ -93.598991312999942,
+ 41.791285770000059
+ ],
+ [
+ -93.597408247999965,
+ 41.791298693000044
+ ],
+ [
+ -93.587018347999958,
+ 41.791370250000057
+ ],
+ [
+ -93.581030593999969,
+ 41.791384089000076
+ ],
+ [
+ -93.575477690999946,
+ 41.791372395000053
+ ],
+ [
+ -93.573306168999977,
+ 41.791361989000052
+ ],
+ [
+ -93.572569235999936,
+ 41.791351637000048
+ ],
+ [
+ -93.572478358999945,
+ 41.79135169500006
+ ]
+ ]
+ }
+ },
+ {
+ "id": "67890-detour2",
+ "type": "Feature",
+ "properties": {
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "detour",
+ "relationship": {
+ "parents": [
+ "67890"
+ ],
+ "first": [
+ "67890-detour1"
+ ],
+ "next": [
+ "67890-detour3"
+ ]
+ },
+ "road_names": [
+ "US 69"
+ ],
+ "direction": "northbound",
+ "description": "Detour for road event 67890, second segment.",
+ "creation_date": "2009-12-15T14:01:01Z",
+ "update_date": "2010-01-01T01:03:01Z"
+ },
+ "beginning_cross_street": "NE 126th Avenue",
+ "ending_cross_street": "IA 210",
+ "start_date": "2010-01-01T01:03:01Z",
+ "end_date": "2010-06-30T01:00:00Z",
+ "start_date_accuracy": "verified",
+ "end_date_accuracy": "estimated",
+ "event_status": "active"
+ },
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ -93.600401730999977,
+ 41.877744832000076
+ ],
+ [
+ -93.600383302999944,
+ 41.876221974000032
+ ],
+ [
+ -93.600399342999935,
+ 41.874445421000075
+ ],
+ [
+ -93.600382543999956,
+ 41.872739253000077
+ ],
+ [
+ -93.600389303999975,
+ 41.871047136000072
+ ],
+ [
+ -93.600386637999975,
+ 41.869347993000076
+ ],
+ [
+ -93.600379122999982,
+ 41.867557387000033
+ ],
+ [
+ -93.600390145999938,
+ 41.865583833000073
+ ],
+ [
+ -93.60037319199995,
+ 41.863775643000054
+ ],
+ [
+ -93.600372301999982,
+ 41.863207043000045
+ ],
+ [
+ -93.600381568999978,
+ 41.862919375000047
+ ],
+ [
+ -93.600376814999947,
+ 41.861738109000044
+ ],
+ [
+ -93.60037443899995,
+ 41.860563973000069
+ ],
+ [
+ -93.60037443899995,
+ 41.859363694000081
+ ],
+ [
+ -93.60036493299998,
+ 41.858142023000028
+ ],
+ [
+ -93.600360178999949,
+ 41.85695124800003
+ ],
+ [
+ -93.600357800999973,
+ 41.855774736000058
+ ],
+ [
+ -93.600357801999962,
+ 41.854583964000028
+ ],
+ [
+ -93.600353046999942,
+ 41.853378931000066
+ ],
+ [
+ -93.600348294999947,
+ 41.852188157000057
+ ],
+ [
+ -93.600343540999972,
+ 41.85096173200003
+ ],
+ [
+ -93.600341164999975,
+ 41.849768581000035
+ ],
+ [
+ -93.600338180999984,
+ 41.84926536100005
+ ],
+ [
+ -93.600334034999946,
+ 41.848565926000049
+ ],
+ [
+ -93.600329278999936,
+ 41.847403672000041
+ ],
+ [
+ -93.600324526999941,
+ 41.846174873000052
+ ],
+ [
+ -93.600319772999967,
+ 41.844976968000026
+ ],
+ [
+ -93.600315018999936,
+ 41.843786195000064
+ ],
+ [
+ -93.600305511999977,
+ 41.842590668000071
+ ],
+ [
+ -93.600296004999961,
+ 41.841487836000056
+ ],
+ [
+ -93.600296003999972,
+ 41.840275672000075
+ ],
+ [
+ -93.600291251999977,
+ 41.839065885000025
+ ],
+ [
+ -93.600291250999987,
+ 41.837927402000048
+ ],
+ [
+ -93.600284120999959,
+ 41.836760396000045
+ ],
+ [
+ -93.600279367999974,
+ 41.83553872400006
+ ],
+ [
+ -93.600273437999988,
+ 41.834756276000064
+ ],
+ [
+ -93.600272235999967,
+ 41.834597515000041
+ ],
+ [
+ -93.600274613999943,
+ 41.833775145000061
+ ],
+ [
+ -93.600272236999956,
+ 41.832546343000047
+ ],
+ [
+ -93.600269860999958,
+ 41.831357947000072
+ ],
+ [
+ -93.600265106999984,
+ 41.830238478000069
+ ],
+ [
+ -93.600269860999958,
+ 41.829584861000058
+ ],
+ [
+ -93.600262728999951,
+ 41.829031068000063
+ ],
+ [
+ -93.60026985899998,
+ 41.828714954000077
+ ],
+ [
+ -93.600265106999984,
+ 41.827833163000037
+ ],
+ [
+ -93.600265732999958,
+ 41.82751014300004
+ ],
+ [
+ -93.600267483999971,
+ 41.82661149300003
+ ],
+ [
+ -93.600267481999936,
+ 41.825458747000027
+ ],
+ [
+ -93.60026985899998,
+ 41.824289366000073
+ ],
+ [
+ -93.600262728999951,
+ 41.823096216000067
+ ],
+ [
+ -93.60026272999994,
+ 41.822017153000047
+ ],
+ [
+ -93.600265008999941,
+ 41.821111594000058
+ ],
+ [
+ -93.600263135999967,
+ 41.820261561000052
+ ],
+ [
+ -93.600264984999967,
+ 41.819911794000063
+ ],
+ [
+ -93.600262608999969,
+ 41.818602179000038
+ ],
+ [
+ -93.600255478999941,
+ 41.817525493000062
+ ],
+ [
+ -93.600255478999941,
+ 41.816325213000027
+ ],
+ [
+ -93.600248348999969,
+ 41.815205744000025
+ ],
+ [
+ -93.600243592999959,
+ 41.814019724000048
+ ],
+ [
+ -93.600245971999982,
+ 41.812914517000024
+ ],
+ [
+ -93.600253101999954,
+ 41.811806931000035
+ ],
+ [
+ -93.600269738999941,
+ 41.81082056200006
+ ],
+ [
+ -93.600276870999949,
+ 41.80970822200004
+ ],
+ [
+ -93.600288753999962,
+ 41.808624405000046
+ ],
+ [
+ -93.600295884,
+ 41.807576241000049
+ ],
+ [
+ -93.600310144,
+ 41.806435380000039
+ ],
+ [
+ -93.60031408499998,
+ 41.805741814000044
+ ],
+ [
+ -93.600314898999954,
+ 41.805598749000069
+ ],
+ [
+ -93.600324404999981,
+ 41.804529191000029
+ ],
+ [
+ -93.600319769999942,
+ 41.803418761000046
+ ],
+ [
+ -93.60031965099995,
+ 41.803390708000052
+ ],
+ [
+ -93.600322028999983,
+ 41.802354426000079
+ ],
+ [
+ -93.600322026999947,
+ 41.801782615000036
+ ],
+ [
+ -93.600322026999947,
+ 41.80161524500005
+ ],
+ [
+ -93.600331535999942,
+ 41.800495775000059
+ ],
+ [
+ -93.600326782999957,
+ 41.799371551000036
+ ],
+ [
+ -93.600331535999942,
+ 41.798416082000074
+ ],
+ [
+ -93.600331535999942,
+ 41.797327511000049
+ ],
+ [
+ -93.60033866699996,
+ 41.796314997000025
+ ],
+ [
+ -93.600345797999978,
+ 41.795214543000043
+ ],
+ [
+ -93.600350549999973,
+ 41.794040406000079
+ ],
+ [
+ -93.600362434999965,
+ 41.792899545000068
+ ],
+ [
+ -93.600360056999989,
+ 41.791818106000051
+ ],
+ [
+ -93.600373887999979,
+ 41.79125798900003
+ ],
+ [
+ -93.600373891999936,
+ 41.791257820000055
+ ]
+ ]
+ }
+ },
+ {
+ "id": "67890-detour3",
+ "type": "Feature",
+ "properties": {
+ "core_details": {
+ "data_source_id": "1",
+ "event_type": "detour",
+ "relationship": {
+ "parents": [
+ "6780"
+ ],
+ "first": [
+ "67890-detour1"
+ ]
+ },
+ "road_names": [
+ "IA 210"
+ ],
+ "direction": "eastbound",
+ "description": "Detour for road event 67890, third/final segment.",
+ "creation_date": "2009-12-15T14:01:01Z",
+ "update_date": "2010-01-01T01:03:01Z"
+ },
+ "beginning_cross_street": "US 69",
+ "ending_cross_street": "I-35",
+ "start_date": "2010-01-01T01:03:01Z",
+ "end_date": "2010-06-30T01:00:00Z",
+ "start_date_accuracy": "verified",
+ "end_date_accuracy": "estimated",
+ "event_status": "active"
+ },
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ -93.573353147999967,
+ 41.877796484000044
+ ],
+ [
+ -93.573356421999961,
+ 41.87779647800005
+ ],
+ [
+ -93.574056398999971,
+ 41.877795233000029
+ ],
+ [
+ -93.577496035999957,
+ 41.877791515000069
+ ],
+ [
+ -93.578346253999939,
+ 41.877790018000042
+ ],
+ [
+ -93.579435310999941,
+ 41.877788094000039
+ ],
+ [
+ -93.580892132999963,
+ 41.877785500000073
+ ],
+ [
+ -93.581418045999953,
+ 41.877784560000066
+ ],
+ [
+ -93.581835475,
+ 41.877783302000068
+ ],
+ [
+ -93.586943989999952,
+ 41.877767791000053
+ ],
+ [
+ -93.591580114999942,
+ 41.877755708000052
+ ],
+ [
+ -93.596289923999962,
+ 41.877747609000039
+ ],
+ [
+ -93.60040158399994,
+ 41.87774674700006
+ ]
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/create-feed/schemas/wzdx_v2.0_feed.json b/schemas/2.0/WZDxFeed.json
similarity index 99%
rename from create-feed/schemas/wzdx_v2.0_feed.json
rename to schemas/2.0/WZDxFeed.json
index ac46f968..bd627244 100644
--- a/create-feed/schemas/wzdx_v2.0_feed.json
+++ b/schemas/2.0/WZDxFeed.json
@@ -1,5 +1,5 @@
{
- "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/master/create-feed/schemas/wzdx_v2.0_feed.json",
+ "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/2.0/WZDxFeed.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "WZDx v2.0 Feed",
"description": "The GeoJSON output of a WZDx v2.0 data feed",
diff --git a/create-feed/schemas/wzdx_v3.0_feed.json b/schemas/3.0/WZDxFeed.json
similarity index 99%
rename from create-feed/schemas/wzdx_v3.0_feed.json
rename to schemas/3.0/WZDxFeed.json
index ac53a7cc..e6b9fd5c 100644
--- a/create-feed/schemas/wzdx_v3.0_feed.json
+++ b/schemas/3.0/WZDxFeed.json
@@ -1,5 +1,5 @@
{
- "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/master/create-feed/schemas/wzdx_v3.0_feed.json",
+ "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/3.0/WZDxFeed.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "WZDx v3.0 Feed",
"description": "The GeoJSON output of a WZDx v3.0 data feed",
diff --git a/create-feed/schemas/wzdx_v3.1_feed.json b/schemas/3.1/WZDxFeed.json
similarity index 99%
rename from create-feed/schemas/wzdx_v3.1_feed.json
rename to schemas/3.1/WZDxFeed.json
index 61b89858..612e6d4d 100644
--- a/create-feed/schemas/wzdx_v3.1_feed.json
+++ b/schemas/3.1/WZDxFeed.json
@@ -1,6 +1,6 @@
{
- "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/master/create-feed/schemas/wzdx_v3.1_feed.json",
+ "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/3.1/WZDxFeed.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "WZDx v3.1 Feed",
"description": "The GeoJSON output of a WZDx v3.1 data feed",
diff --git a/schemas/4.0/BoundingBox.json b/schemas/4.0/BoundingBox.json
new file mode 100644
index 00000000..e35ed926
--- /dev/null
+++ b/schemas/4.0/BoundingBox.json
@@ -0,0 +1,11 @@
+{
+ "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/BoundingBox.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "GeoJSON Bounding Box",
+ "description": "Information on the coordinate range for a Geometry, Feature, or FeatureCollection",
+ "type": "array",
+ "minItems": 4,
+ "items": {
+ "type": "number"
+ }
+}
\ No newline at end of file
diff --git a/schemas/4.0/FeedInfo.json b/schemas/4.0/FeedInfo.json
new file mode 100644
index 00000000..ae3e6eeb
--- /dev/null
+++ b/schemas/4.0/FeedInfo.json
@@ -0,0 +1,110 @@
+{
+ "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/FeedInfo.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "WZDx Feed Information",
+ "description": "Describes WZDx feed header information such as metadata, contact information, and data sources",
+ "type": "object",
+ "properties": {
+ "publisher": {
+ "description": "The organization responsible for publishing the feed",
+ "type": "string"
+ },
+ "contact_name": {
+ "description": "The name of the individual or group responsible for the data feed",
+ "type": "string"
+ },
+ "contact_email": {
+ "description": "The email address of the individual or group responsible for the data feed",
+ "type": "string",
+ "format": "email"
+ },
+ "update_frequency": {
+ "description": "The frequency in seconds at which the data feed is updated",
+ "type": "integer",
+ "minimum": 1
+ },
+ "update_date": {
+ "description": "The UTC date and time when the GeoJSON file (representing the instance of the feed) was generated",
+ "type": "string",
+ "format": "date-time"
+ },
+ "version": {
+ "description": "The WZDx specification version used to create the data feed, in 'major.minor' format",
+ "type": "string",
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"
+ },
+ "license": {
+ "description": "The URL of the license that applies to the data in the WZDx feed. This *must* be the string \"https://creativecommons.org/publicdomain/zero/1.0/\"",
+ "enum": [
+ "https://creativecommons.org/publicdomain/zero/1.0/"
+ ]
+ },
+ "data_sources": {
+ "description": "A list of specific data sources for the road event data in the feed",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FeedDataSource"
+ },
+ "minItems": 1
+ }
+ },
+ "required": [
+ "update_date",
+ "version",
+ "publisher",
+ "data_sources"
+ ],
+ "definitions": {
+ "FeedDataSource": {
+ "title": "WZDx Feed Data Source",
+ "description": "Describes information about a specific data source used to build the work zone data feed",
+ "type": "object",
+ "properties": {
+ "data_source_id": {
+ "description": "Unique identifier for the organization providing work zone data",
+ "type": "string"
+ },
+ "organization_name": {
+ "description": "The name of the organization for the authoritative source of the work zone data",
+ "type": "string"
+ },
+ "contact_name": {
+ "description": "The name of the individual or group responsible for the data source",
+ "type": "string"
+ },
+ "contact_email": {
+ "description": "The email address of the individual or group responsible for the data source",
+ "type": "string",
+ "format": "email"
+ },
+ "update_frequency": {
+ "description": "The frequency in seconds at which the data source is updated",
+ "type": "integer",
+ "minimum": 1
+ },
+ "update_date": {
+ "description": "The UTC date and time when the data source was last updated",
+ "type": "string",
+ "format": "date-time"
+ },
+ "lrs_type": {
+ "description": "**DEPRECATED** Describes the type of linear referencing system used for the milepost measurements",
+ "type": "string"
+ },
+ "lrs_url": {
+ "description": "**DEPRECATED** A URL where additional information on the LRS information and transformation information is stored",
+ "type": "string",
+ "format": "uri"
+ },
+ "location_verify_method": {
+ "description": "***DEPRECATED***The method used to verify the accuracy of the location information",
+ "type": "string"
+ }
+ },
+ "required": [
+ "data_source_id",
+ "organization_name"
+ ]
+ }
+ }
+}
diff --git a/schemas/4.0/RoadEventFeature.json b/schemas/4.0/RoadEventFeature.json
new file mode 100644
index 00000000..d17a7670
--- /dev/null
+++ b/schemas/4.0/RoadEventFeature.json
@@ -0,0 +1,621 @@
+
+{
+ "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/RoadEventFeature.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "Road Event Feature (GeoJSON Feature)",
+ "description": "The container object for a specific WZDx road event; an instance of a GeoJSON Feature",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "A unique identifier issued by the data feed provider to identify the WZDx road event",
+ "type": "string"
+ },
+ "type": {
+ "description": "The GeoJSON object type; must be 'Feature'",
+ "enum": ["Feature"]
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/RoadEventCoreDetails"
+ }
+ },
+ "required": ["core_details"],
+ "oneOf": [
+ {
+ "$ref": "#/definitions/WorkZoneRoadEvent"
+ },
+ {
+ "$ref": "#/definitions/DetourRoadEvent"
+ },
+ {
+ "$ref": "#/definitions/RestrictionRoadEvent"
+ }
+ ]
+ },
+ "geometry": {
+ "oneOf": [
+ {
+ "$ref": "https://geojson.org/schema/LineString.json"
+ },
+ {
+ "$ref": "https://geojson.org/schema/MultiPoint.json"
+ }
+ ]
+ },
+ "bbox": {
+ "$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/BoundingBox.json"
+ }
+ },
+ "required": ["id","type","properties","geometry"],
+ "definitions": {
+ "WorkZoneRoadEvent": {
+ "title": "Work Zone Road Event",
+ "description": "Descibes a work zone road event including where, when, and what activities are taking place within a work zone on a roadway",
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "event_type": {
+ "const": "work-zone"
+ }
+ },
+ "required": ["event_type"]
+ }
+ },
+ "required": ["core_details"]
+ },
+ {
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/RoadEventCoreDetails"
+ },
+ "beginning_cross_street": {
+ "description": "Name or number of the nearest cross street along the roadway where the event begins",
+ "type": "string"
+ },
+ "ending_cross_street": {
+ "description": "Name or number of the nearest cross street along the roadway where the event ends",
+ "type": "string"
+ },
+ "beginning_milepost": {
+ "description": "The linear distance measured against a milepost marker along a roadway where the event begins",
+ "type": "number",
+ "minimum": 0
+ },
+ "ending_milepost": {
+ "description": "The linear distance measured against a milepost marker along a roadway where the event ends",
+ "type": "number",
+ "minimum": 0
+ },
+ "beginning_accuracy": {
+ "$ref": "#/definitions/SpatialVerification"
+ },
+ "ending_accuracy": {
+ "$ref": "#/definitions/SpatialVerification"
+ },
+ "start_date": {
+ "description": "The UTC date and time (formatted according to RFC 3339, Section 5.6) when the road event begins (e.g. 2020-11-03T19:37:00Z)",
+ "type": "string",
+ "format": "date-time"
+ },
+ "end_date": {
+ "description": "The UTC date and time (formatted according to RFC 3339, Section 5.6) when the road event ends (e.g. 2020-11-03T19:37:00Z)",
+ "type": "string",
+ "format": "date-time"
+ },
+ "start_date_accuracy": {
+ "$ref": "#/definitions/TimeVerification"
+ },
+ "end_date_accuracy": {
+ "$ref": "#/definitions/TimeVerification"
+ },
+ "event_status": {
+ "$ref": "#/definitions/EventStatus"
+ },
+ "vehicle_impact": {
+ "$ref": "#/definitions/VehicleImpact"
+ },
+ "location_method": {
+ "$ref": "#/definitions/LocationMethod"
+ },
+ "worker_presence": {
+ "$ref": "#/definitions/WorkerPresence"
+ },
+ "reduced_speed_limit_kph": {
+ "description": "If applicable, the reduced speed limit posted within the road event, in kilometers per hour",
+ "type": "number",
+ "minimum": 0
+ },
+ "restrictions": {
+ "description": "A list of zero or more restrictions applying to the road event",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Restriction"
+ }
+ },
+ "types_of_work": {
+ "description": "A list of the types of work being done in a road event",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/TypeOfWork"
+ }
+ },
+ "lanes": {
+ "description": "A list of individual lanes within a road event (roadway segment)",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Lane"
+ }
+ }
+ },
+ "required": [
+ "core_details",
+ "beginning_accuracy",
+ "ending_accuracy",
+ "start_date",
+ "end_date",
+ "start_date_accuracy",
+ "end_date_accuracy",
+ "vehicle_impact",
+ "location_method"
+ ]
+ }
+ ]
+ },
+ "DetourRoadEvent": {
+ "title": "Detour Road Event",
+ "description": "Descibes a detour on a roadway",
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "event_type": {
+ "const": "detour"
+ }
+ },
+ "required": ["event_type"]
+ }
+ },
+ "required": ["core_details"]
+ },
+ {
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/RoadEventCoreDetails"
+ },
+ "beginning_cross_street": {
+ "description": "Name or number of the nearest cross street along the roadway where the event begins",
+ "type": "string"
+ },
+ "ending_cross_street": {
+ "description": "Name or number of the nearest cross street along the roadway where the event ends",
+ "type": "string"
+ },
+ "beginning_milepost": {
+ "description": "The linear distance measured against a milepost marker along a roadway where the event begins",
+ "type": "number",
+ "minimum": 0
+ },
+ "ending_milepost": {
+ "description": "The linear distance measured against a milepost marker along a roadway where the event ends",
+ "type": "number",
+ "minimum": 0
+ },
+ "start_date": {
+ "description": "The UTC date and time (formatted according to RFC 3339, Section 5.6) when the road event begins (e.g. 2020-11-03T19:37:00Z)",
+ "type": "string",
+ "format": "date-time"
+ },
+ "end_date": {
+ "description": "The UTC date and time (formatted according to RFC 3339, Section 5.6) when the road event ends (e.g. 2020-11-03T19:37:00Z)",
+ "type": "string",
+ "format": "date-time"
+ },
+ "start_date_accuracy": {
+ "$ref": "#/definitions/TimeVerification"
+ },
+ "end_date_accuracy": {
+ "$ref": "#/definitions/TimeVerification"
+ },
+ "event_status": {
+ "$ref": "#/definitions/EventStatus"
+ }
+ },
+ "required": [
+ "core_details",
+ "start_date",
+ "end_date",
+ "start_date_accuracy",
+ "end_date_accuracy"
+ ]
+ }
+ ]
+ },
+ "RestrictionRoadEvent": {
+ "title": "Restriction Road Event",
+ "description": "A road event describing a section of roadway and the limitations of how that section can be used",
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "event_type": {
+ "const": "restriction"
+ }
+ },
+ "required": ["event_type"]
+ }
+ },
+ "required": ["core_details"]
+ },
+ {
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/RoadEventCoreDetails"
+ },
+ "restrictions": {
+ "description": "A list of zero or more restrictions applying to the road event",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Restriction"
+ }
+ },
+ "lanes": {
+ "description": "A list of individual lanes within a road event (roadway segment)",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Lane"
+ }
+ }
+ },
+ "required": [
+ "core_details"
+ ],
+ "anyOf": [
+ {
+ "required": [
+ "restrictions"
+ ]
+ },
+ {
+ "required": [
+ "lanes"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "RoadEventCoreDetails": {
+ "title": "Road Event Core Details",
+ "description": "The core details of an event occurring on a roadway (i.e. a road event) that is shared by all types of road events",
+ "type": "object",
+ "properties": {
+ "data_source_id": {
+ "description": "Identifies the data source from which the road event data is sourced from",
+ "type": "string"
+ },
+ "event_type": {
+ "$ref": "#/definitions/EventType"
+ },
+ "relationship": {
+ "$ref": "#/definitions/Relationship"
+ },
+ "road_names": {
+ "description": "A list of publicly known names of the road on which the event occurs. This may include the road number designated by a jurisdiction such as a county, state or interstate (e.g. I-5, VT 133)",
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ }
+ },
+ "direction": {
+ "$ref": "#/definitions/Direction"
+ },
+ "description": {
+ "description": "Short free text description of the road event",
+ "type": "string"
+ },
+ "creation_date": {
+ "description": "The UTC date and time (formatted according to RFC 3339, Section 5.6) when the road event was created (e.g. 2020-11-03T19:37:00Z)",
+ "type": "string",
+ "format": "date-time"
+ },
+ "update_date": {
+ "description": "The UTC date and time (formatted according to RFC 3339, Section 5.6) when the road event was last updated (e.g. 2020-11-03T19:37:00Z)",
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "required": [
+ "event_type",
+ "data_source_id",
+ "direction",
+ "road_names"
+ ]
+ },
+ "LocationMethod": {
+ "title": "Location Method Enumerated Type",
+ "description": "The typical method used to locate the beginning and end of a work zone impact area",
+ "enum": [
+ "channel-device-method",
+ "sign-method",
+ "junction-method",
+ "other",
+ "unknown"
+ ]
+ },"Relationship": {
+ "title": "Relationship",
+ "description": "Identifies both sequential and hierarchical relationships between road events and other entities. For example, a relationship can be used to link multiple road events to a common 'parent', such as a project or phase, or identify a sequence of road events",
+ "type": "object",
+ "properties": {
+ "first": {
+ "description": "Indicates the first (can be multiple) road event in a sequence of road events by RoadEventFeature 'id'",
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ }
+ },
+ "next": {
+ "description": "Indicates the next (can be multiple) road event in a sequence of road events by RoadEventFeature 'id'",
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ }
+ },
+ "parents": {
+ "description": "Indicates entities that the road event with this relationship is a part of, such as a work zone project or phase. Values can but do not have to correspond to a WZDx entity",
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ }
+ },
+ "children": {
+ "description": "Indicates entities that are part of the road event with this relationship, such as a detour or piece of equipment. Values can but do not have to correspond to a WZDx entity",
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "TypeOfWork": {
+ "title": "Type of Work",
+ "description": "A description of the type of work being done in a road event and an indication of if that work will result in an architectural change to the roadway",
+ "type": "object",
+ "properties": {
+ "type_name": {
+ "$ref": "#/definitions/WorkTypeName"
+ },
+ "is_architectural_change": {
+ "description": "A flag indicating whether the type of work will result in an architectural change to the roadway",
+ "type": "boolean"
+ }
+ },
+ "required": ["type_name"]
+ },
+ "Lane": {
+ "title": "Lane",
+ "description": "An individual lane within a road event",
+ "type": "object",
+ "properties": {
+ "order": {
+ "description": "The position (index) of the lane in sequence on the roadway, where '1' represents the left-most lane",
+ "type": "integer",
+ "minimum": 1
+ },
+ "status": {
+ "$ref": "#/definitions/LaneStatus"
+ },
+ "type": {
+ "$ref": "#/definitions/LaneType"
+ },
+ "lane_number": {
+ "description": "***DEPRECATED*** The number assigned to the lane to help identify its position. Flexible, but usually used for regular, driveable lanes",
+ "type": "integer",
+ "minimum": 1
+ },
+ "restrictions": {
+ "description": "A list of zero or more restrictions specific to the lane",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Restriction"
+ }
+ }
+ },
+ "required": ["status", "type", "order"]
+ },
+ "Restriction": {
+ "title": "Restriction",
+ "description": "A restriction on a roadway or lane, including type and value",
+ "type": "object",
+ "properties": {
+ "type": {
+ "$ref": "#/definitions/RestrictionType"
+ },
+ "value": {
+ "type": "number"
+ },
+ "unit": {
+ "$ref": "#/definitions/UnitOfMeasurement"
+ }
+ },
+ "required": ["type"],
+ "dependencies": {
+ "value": ["unit"]
+ }
+ },
+ "WorkerPresence": {
+ "title": "Worker Presence",
+ "description": "Information about the presence of workers in the work zone event area",
+ "type": "object",
+ "properties": {
+ "are_workers_present": {
+ "description": "Whether workers are present in the work zone event area, following the definition provided in the ‘definition’ property on the WorkerPresence object",
+ "type": "boolean"
+ },
+ "method": {
+ "$ref": "#/definitions/WorkerPresenceMethod"
+ },
+ "worker_presence_last_confirmed_date": {
+ "description": "The UTC date and time at which the presence of workers was last confirmed",
+ "type": "string",
+ "format": "date-time"
+ },
+ "confidence": {
+ "$ref": "#/definitions/WorkerPresenceConfidence"
+ },
+ "definition": {
+ "description": "A list of situations in which workers are considered to be present in the jurisdiction of the data provider",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/WorkerPresenceDefinition"
+ },
+ "uniqueItems": true
+ }
+ },
+ "required": ["are_workers_present"]
+ },
+ "EventType": {
+ "title": "Road Event Type Enumerated Type",
+ "description": "The type of WZDx road event",
+ "enum": ["work-zone", "detour", "restriction"]
+ },
+ "Direction": {
+ "title": "Direction Enumerated Type",
+ "description": "The direction for a road event based on standard naming for US roads; indicates the direction the traffic flow regardless of the real heading angle",
+ "enum": ["northbound", "eastbound", "southbound", "westbound"]
+ },
+ "SpatialVerification": {
+ "title": "Spatial Verification Enumerated Type",
+ "description": "An indication of how a geographical coordinate was defined",
+ "enum": ["estimated", "verified"]
+ },
+ "TimeVerification": {
+ "title": "Time Verification Enumerated Type",
+ "description": "A measure of how accurate a date-time is",
+ "enum": ["estimated", "verified"]
+ },
+ "EventStatus": {
+ "title": "Event Status Enumerated Type",
+ "description": "The status of the road event",
+ "enum": ["planned", "pending", "active", "completed", "cancelled"]
+ },
+ "VehicleImpact": {
+ "title": "Vehicle Impact Enumerated Type",
+ "description": "The impact to vehicular lanes along a single road in a single direction",
+ "enum": ["all-lanes-closed", "some-lanes-closed", "all-lanes-open", "alternating-one-way", "some-lanes-closed-merge-left", "some-lanes-closed-merge-right", "all-lanes-open-shift-left", "all-lanes-open-shift-right", "some-lanes-closed-split", "flagging", "temporary-traffic-signal", "unknown"]
+ },
+ "RestrictionType": {
+ "title": "Restriction Type Enumerated Type",
+ "description": "The type of vehicle restriction on a roadway",
+ "enum": [
+ "no-trucks",
+ "travel-peak-hours-only",
+ "hov-3",
+ "hov-2",
+ "no-parking",
+ "reduced-width",
+ "reduced-height",
+ "reduced-length",
+ "reduced-weight",
+ "axle-load-limit",
+ "gross-weight-limit",
+ "towing-prohibited",
+ "permitted-oversize-loads-prohibited",
+ "local-access-only"
+ ]
+ },
+ "WorkTypeName": {
+ "title": "Work Type Name Enumerated Type",
+ "description": "A high-level text description of the type of work being done in a road event",
+ "enum": [
+ "maintenance",
+ "minor-road-defect-repair",
+ "roadside-work",
+ "overhead-work",
+ "below-road-work",
+ "barrier-work",
+ "surface-work",
+ "painting",
+ "roadway-relocation",
+ "roadway-creation"
+ ]
+ },
+ "LaneStatus": {
+ "title": "Lane Status Enumerated Type",
+ "description": "The status of the lane for the traveling public",
+ "enum": ["open", "closed", "shift-left", "shift-right", "merge-left", "merge-right", "alternating-flow"]
+ },
+ "LaneType": {
+ "title": "Lane Type Enumerated Type",
+ "description": "An indication of the type of lane or shoulder",
+ "enum": [
+ "general",
+ "exit-lane",
+ "exit-ramp",
+ "entrance-lane",
+ "entrance-ramp",
+ "sidewalk",
+ "bike-lane",
+ "shoulder",
+ "parking",
+ "median",
+ "center-left-turn-lane"
+ ]
+ },
+ "UnitOfMeasurement": {
+ "title": "Unit of Measurement Enumerated Type",
+ "description": "Unit of measurement, used when providing a unit to accompany a value",
+ "enum": ["feet", "inches", "centimeters", "pounds", "tons", "kilograms"]
+ },
+ "WorkerPresenceMethod": {
+ "title": "Worker Presence Method Enumerated Type",
+ "description": "Describes methods for how worker presence in a work zone event area is determined",
+ "enum": [
+ "camera-monitoring",
+ "arrow-board-present",
+ "cones-present",
+ "maintenance-vehicle-present",
+ "wearables-present",
+ "mobile-device-present",
+ "check-in-app",
+ "check-in-verbal",
+ "scheduled"
+ ]
+ },
+ "WorkerPresenceDefinition": {
+ "title": "Worker Presence Definition Enumerated Type",
+ "description": "Situations in which workers may be considered present in a work zone",
+ "enum": [
+ "workers-in-work-zone-working",
+ "workers-in-work-zone-not-working",
+ "mobile-equipment-in-work-zone-moving",
+ "mobile-equipment-in-work-zone-not-working",
+ "fixed-equipment-in-work-zone",
+ "humans-behind-barrier",
+ "humans-in-right-of-way"
+ ]
+ },
+ "WorkerPresenceConfidence": {
+ "title": "Worker Presence Confidence Enumerated Type",
+ "description": "A high-level description of the feed publisher's confidence in the reported WorkerPresence value of are_workers_present",
+ "enum": [
+ "low",
+ "medium",
+ "high"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/4.0/RoadRestrictionFeed.json b/schemas/4.0/RoadRestrictionFeed.json
new file mode 100644
index 00000000..a01b98d5
--- /dev/null
+++ b/schemas/4.0/RoadRestrictionFeed.json
@@ -0,0 +1,55 @@
+{
+ "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/RoadRestrictionFeed.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "WZDx v4.0 Road Restriction Feed",
+ "description": "The GeoJSON output of a WZDx road restriction data feed (v4.0)",
+ "type": "object",
+ "properties": {
+ "feed_info": {
+ "$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/FeedInfo.json"
+ },
+ "type": {
+ "description": "The GeoJSON type",
+ "enum": [
+ "FeatureCollection"
+ ]
+ },
+ "features": {
+ "description": "An array of GeoJSON Feature objects which represent WZDx restriction road events",
+ "type": "array",
+ "items": {
+ "allOf": [
+ {
+ "properties": {
+ "properties": {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "event_type": {
+ "const": "restriction"
+ }
+ },
+ "required": ["event_type"]
+ }
+ },
+ "required": ["core_details"]
+ }
+ },
+ "required": ["properties"]
+ },
+ {
+ "$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/RoadEventFeature.json"
+ }
+ ]
+ }
+ },
+ "bbox": {
+ "$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/BoundingBox.json"
+ }
+ },
+ "required": [
+ "feed_info",
+ "type",
+ "features"
+ ]
+}
\ No newline at end of file
diff --git a/schemas/4.0/SwzDeviceFeed.json b/schemas/4.0/SwzDeviceFeed.json
new file mode 100644
index 00000000..86e07084
--- /dev/null
+++ b/schemas/4.0/SwzDeviceFeed.json
@@ -0,0 +1,585 @@
+{
+ "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/SwzDeviceFeed.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "WZDx v4.0 SwzDeviceFeed",
+ "description": "The GeoJSON output of a WZDx smart work zone device data feed (v4.0)",
+ "type": "object",
+ "properties": {
+ "feed_info": {
+ "$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/FeedInfo.json"
+ },
+ "type": {
+ "description": "The GeoJSON type",
+ "enum": ["FeatureCollection"]
+ },
+ "features": {
+ "description": "An array of GeoJSON Feature objects which represent field devices deployed in a smart work zone",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FieldDeviceFeature"
+ }
+ },
+ "bbox": {
+ "$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/BoundingBox.json"
+ }
+ },
+ "required": ["feed_info", "type", "features"],
+ "definitions": {
+ "FieldDeviceFeature": {
+ "title": "Field Device Feature (GeoJSON Feature)",
+ "description": "The GeoJSON feature container for a WZDx field device",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "A unique identifier issued by the data feed provider to identify the field device",
+ "type": "string"
+ },
+ "type": {
+ "description": "The GeoJSON object type; must be 'Feature'",
+ "enum": ["Feature"]
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/FieldDeviceCoreDetails"
+ }
+ },
+ "required": ["core_details"],
+ "oneOf": [
+ {
+ "$ref": "#/definitions/ArrowBoard"
+ },
+ {
+ "$ref": "#/definitions/Camera"
+ },
+ {
+ "$ref": "#/definitions/DynamicMessageSign"
+ },
+ {
+ "$ref": "#/definitions/FlashingBeacon"
+ },
+ {
+ "$ref": "#/definitions/HybridSign"
+ },
+ {
+ "$ref": "#/definitions/LocationMarker"
+ },
+ {
+ "$ref": "#/definitions/TrafficSensor"
+ }
+ ]
+ },
+ "geometry": {
+ "oneOf": [
+ {
+ "$ref": "https://geojson.org/schema/Point.json"
+ }
+ ]
+ },
+ "bbox": {
+ "$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/BoundingBox.json"
+ }
+ },
+ "required": ["id","type","properties","geometry"]
+ },
+ "FieldDeviceCoreDetails": {
+ "title": "Field Device Core Details",
+ "description": "The core details—both configuration and current state—of a field device that are shared by all types of field devices",
+ "type": "object",
+ "properties": {
+ "device_type": {
+ "$ref": "#/definitions/FieldDeviceType"
+ },
+ "data_source_id": {
+ "description": "Identifies the data source from which the field device information is sourced from",
+ "type": "string"
+ },
+ "road_names": {
+ "description": "A list of publicly known names of the road on which the field device is located. This may include the road number designated by a jurisdiction such as a county, state or interstate (e.g. I-5, VT 133)",
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string"
+ }
+ },
+ "device_status": {
+ "$ref": "#/definitions/FieldDeviceStatus"
+ },
+ "update_date": {
+ "description": "The UTC date and time (formatted according to RFC 3339, Section 5.6) when the field device data was last updated (e.g. 2020-11-03T19:37:00Z)",
+ "type": "string",
+ "format": "date-time"
+ },
+ "has_automatic_location": {
+ "description": "A yes/no value indicating if the field device location (parent FieldDeviceFeature's geometry) is determined automatically from an onboard GPS (true) or manually set/overidden (false)",
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string",
+ "description": "A human-readable name for the field device"
+ },
+ "description": {
+ "type": "string",
+ "description": "A description of the field device."
+ },
+ "status_messages": {
+ "type": "array",
+ "description": "A list of messages associated with the device's status, if applicable. Used to provide additional information about the status such as specific warning or error message.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "road_event_ids": {
+ "type": "array",
+ "description": "A list of one or more IDs of a RoadEventFeatures that the device is associated with",
+ "items": {
+ "type": "string"
+ }
+ },
+ "milepost": {
+ "type": "number",
+ "description": "The linear distance measured against a milepost marker along a roadway where the device is located"
+ },
+ "make": {
+ "type": "string",
+ "description": "The make or manufacturer of the device"
+ },
+ "model": {
+ "type": "string",
+ "description": "The model of the device"
+ },
+ "serial_number": {
+ "type": "string",
+ "description": "The serial number of the device"
+ },
+ "firmware_version": {
+ "type": "string",
+ "description": "The version of firmware the device is using to operate"
+ }
+ },
+ "required": [
+ "device_type",
+ "data_source_id",
+ "road_names",
+ "device_status",
+ "update_date",
+ "has_automatic_location"
+ ]
+ },
+ "ArrowBoard": {
+ "title": "Arrow Board Field Device",
+ "description": "An electronic, connected arrow board which can display an arrow pattern to direct traffic",
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "device_type": {
+ "const": "arrow-board"
+ }
+ },
+ "required": ["device_type"]
+ }
+ },
+ "required": ["core_details"]
+ },
+ {
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/FieldDeviceCoreDetails"
+ },
+ "pattern": {
+ "$ref": "#/definitions/ArrowBoardPattern"
+ },
+ "is_moving": {
+ "type": "boolean",
+ "description": "A yes/no value indicating if the arrow board is actively moving (not statically placed) as part of a mobile work zone operation."
+ },
+ "is_in_transport_position": {
+ "type": "boolean",
+ "description": "A yes/no value indicating if the arrow board is in the stowed/transport position (true) or deployed/upright position (false)"
+ }
+ },
+ "required": [
+ "core_details",
+ "pattern"
+ ]
+ }
+ ]
+ },
+ "Camera": {
+ "title": "Camera Field Device",
+ "description": "A camera device deployed in the field, capable of capturing still images",
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "device_type": {
+ "const": "camera"
+ }
+ },
+ "required": ["device_type"]
+ }
+ },
+ "required": ["core_details"]
+ },
+ {
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/FieldDeviceCoreDetails"
+ },
+ "image_url": {
+ "type": "string",
+ "format": "uri",
+ "description": "A URL pointing to an image file for the camera image still"
+ },
+ "image_timestamp": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The UTC date and time when the image was captured"
+ }
+ },
+ "required": [
+ "core_details"
+ ],
+ "dependencies": {
+ "image_url": [
+ "image_timestamp"
+ ]
+ }
+ }
+ ]
+ },
+ "DynamicMessageSign": {
+ "title": "Dynamic Message Sign Field Device",
+ "description": "An electronic traffic sign deployed on the roadway, used to provide information to travelers",
+ "allOf": [
+ {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "device_type": {
+ "const": "dynamic-message-sign"
+ }
+ },
+ "required": ["device_type"]
+ }
+ },
+ "required": ["core_details"]
+ },
+ {
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/FieldDeviceCoreDetails"
+ },
+ "message_multi_string": {
+ "type": "string",
+ "description": "A MULTI-formatted string describing the message currently posted to the sign"
+ }
+ },
+ "required": [
+ "core_details",
+ "message_multi_string"
+ ]
+ }
+ ]
+ },
+ "FlashingBeacon": {
+ "title": "Flashing Beacon Field Device",
+ "description": "A flashing beacon light of any form (e.g. trailer-mounted, vehicle), used to indicate something and capture driver attention",
+ "allOf": [
+ {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "device_type": {
+ "const": "flashing-beacon"
+ }
+ },
+ "required": ["device_type"]
+ }
+ },
+ "required": ["core_details"]
+ },
+ {
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/FieldDeviceCoreDetails"
+ },
+ "function": {
+ "$ref": "#/definitions/FlashingBeaconFunction"
+ },
+ "is_flashing": {
+ "type": "boolean",
+ "description": "A yes/no value indicating if the flashing beacon is currently in use and flashing"
+ }
+ },
+ "required": [
+ "core_details",
+ "function"
+ ]
+ }
+ ]
+ },
+ "HybridSign": {
+ "title": "Hybrid Sign Field Device",
+ "description": "A hybrid sign that contains static text (e.g. on an aluminum sign) along with a single electronic message display, used to provide information to travelers",
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "device_type": {
+ "const": "hybrid-sign"
+ }
+ },
+ "required": ["device_type"]
+ }
+ },
+ "required": ["core_details"]
+ },
+ {
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/FieldDeviceCoreDetails"
+ },
+ "dynamic_message_function": {
+ "$ref": "#/definitions/HybridSignDynamicMessageFunction"
+ },
+ "dynamic_message_text": {
+ "type": "string",
+ "description": "A text representation of the message currently posted to the dynamic electronic component of the hybrid sign"
+ },
+ "static_sign_text": {
+ "type": "string",
+ "description": "The static text on the non-electronic component of the hybrid sign"
+ }
+ },
+ "required": [
+ "core_details",
+ "dynamic_message_function"
+ ]
+ }
+ ]
+ },
+ "LocationMarker": {
+ "title": "Location Marker Field Device",
+ "description": "Any GPS-enabled ITS device that is placed at a point on a roadway to dynamically know the location of something (often the beginning or end of a work zone)",
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "device_type": {
+ "const": "location-marker"
+ }
+ },
+ "required": ["device_type"]
+ }
+ },
+ "required": ["core_details"]
+ },
+ {
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/FieldDeviceCoreDetails"
+ },
+ "marked_locations": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "$ref": "#/definitions/MarkedLocation"
+ }
+ }
+ },
+ "required": ["core_details", "marked_locations"]
+ }
+ ]
+ },
+ "MarkedLocation": {
+ "title": "Marked Location",
+ "description": "Describes a specific location where a LocationMarker is placed, such as the start or end of a work zone road event",
+ "properties": {
+ "type": {
+ "$ref": "#/definitions/MarkedLocationType"
+ },
+ "road_event_id": {
+ "type": "string",
+ "description": "The ID of a RoadEventFeature that the MarkedLocation applies to"
+ }
+ },
+ "required": ["type"]
+ },
+ "TrafficSensor": {
+ "title": "Traffic Sensor Field Device",
+ "description": "A traffic sensor deployed on a roadway which captures traffic metrics (e.g. speed, volume, occupancy) over a collection interval",
+ "type": "object",
+ "allOf": [
+ {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "device_type": {
+ "const": "traffic-sensor"
+ }
+ },
+ "required": ["device_type"]
+ }
+ },
+ "required": ["core_details"]
+ },
+ {
+ "properties": {
+ "core_details": {
+ "$ref": "#/definitions/FieldDeviceCoreDetails"
+ },
+ "collection_interval_start_date": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The UTC date and time where the TrafficSensor data collection started. The averages and totals contained in the TrafficSensor data apply to the inclusive interval of 'collection_interval_start_date' to 'collection_interval_end_date'"
+ },
+ "collection_interval_end_date": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The UTC date and time where the TrafficSensor data collection ended. The averages and totals contained in the TrafficSensor data apply to the inclusive interval of 'collection_interval_start_date' to 'collection_interval_end_date'"
+ },
+ "average_speed_kph": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "The average speed of vehicles across all lanes over the collection interval in kilometers per hour"
+ },
+ "volume_vph": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "The rate of vehicles passing by the sensor during the collection interval in vehicles per hour"
+ },
+ "occupancy_percent": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "The percent of time the roadway section monitored by the sensor was occupied by a vehicle over the collection interval"
+ },
+ "lane_data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/TrafficSensorLaneData"
+ }
+ }
+ },
+ "required": [
+ "core_details",
+ "collection_interval_start_date",
+ "collection_interval_end_date"
+ ]
+ }
+ ]
+ },
+ "TrafficSensorLaneData": {
+ "title": "Traffic Sensor Lane Data",
+ "description": "data for a single lane within a RoadEvent measured by a TrafficSensor deployed on the roadway",
+ "properties": {
+ "road_event_id": {
+ "type": "string",
+ "description": "The ID of a RoadEventFeature that the measured lane occurs in"
+ },
+ "lane_order": {
+ "type": "integer",
+ "minimum": 1,
+ "description": "The lane's position in sequence within the road event specified by the 'road_event_id' property"
+ },
+ "average_speed_kph": {
+ "type": "integer",
+ "minimum": 1,
+ "description": "The average speed of traffic in the lane over the collection interval (in kilometers per hour)"
+ },
+ "volume_vph": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "The rate of vehicles passing by the sensor in the lane during the collection interval (in vehicles per hour)"
+ },
+ "occupancy_percent": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "The percent of time the lane monitored by the sensor was occupied by a vehicle over the collection interval"
+ }
+ },
+ "required": [
+ "road_event_id",
+ "lane_order"
+ ]
+ },
+ "ArrowBoardPattern": {
+ "title": "Arrow Board Pattern Enumerated Type",
+ "description": "a list of options for the posted pattern on an ArrowBoard",
+ "enum": [
+ "bidirectional-arrow-flashing",
+ "bidirectional-arrow-static",
+ "blank",
+ "diamonds-alternating",
+ "four-corners-flashing",
+ "left-arrow-flashing",
+ "left-arrow-sequential",
+ "left-arrow-static",
+ "left-chevron-flashing",
+ "left-chevron-sequential",
+ "left-chevron-static",
+ "line-flashing",
+ "right-arrow-flashing",
+ "right-arrow-sequential",
+ "right-arrow-static",
+ "right-chevrons-flashing",
+ "right-chevrons-sequential",
+ "right-chevrons-static",
+ "unknown"
+ ]
+ },
+ "FieldDeviceType": {
+ "title": "Field Device Type Enumerated Type",
+ "description": "The type of field device",
+ "enum": [
+ "arrow-board",
+ "camera",
+ "dynamic-message-sign",
+ "flashing-beacon",
+ "hybrid-sign",
+ "location-marker",
+ "traffic-sensor"
+ ]
+ },
+ "FieldDeviceStatus": {
+ "title": "Field Device Status Enumerated Type",
+ "description": "The operational status of a field device",
+ "enum": ["ok", "warning", "error", "unknown"]
+ },
+ "FlashingBeaconFunction": {
+ "title": "Flashing Beacon Function Enumerated Type",
+ "description": "Options for what a FlashingBeacon is being used to indicate",
+ "enum": ["vehicle-entering", "queue-warning", "reduced-speed", "workers-present"]
+ },
+ "HybridSignDynamicMessageFunction": {
+ "title": "Hybrid Sign Dynamic Message Function Enumerated Type",
+ "description": "Options for the function of the dynamic message displayed by the electronic display on a HybridSign",
+ "enum": ["speed-limit", "travel-time", "other"]
+ },
+ "MarkedLocationType": {
+ "title": "Marked Location Type Enumerated Type",
+ "description": "Options for what a MarkedLocation can mark, such as the start or end of a road event",
+ "enum": [
+ "afad",
+ "flagger",
+ "lane-shift",
+ "lane-closure",
+ "temporary-traffic-signal",
+ "road-event-start",
+ "road-event-end",
+ "work-zone-start",
+ "work-zone-end"
+ ]
+ }
+ }
+}
diff --git a/schemas/4.0/WZDxFeed.json b/schemas/4.0/WZDxFeed.json
new file mode 100644
index 00000000..bdd2c8ad
--- /dev/null
+++ b/schemas/4.0/WZDxFeed.json
@@ -0,0 +1,49 @@
+{
+ "$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/WZDxFeed.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "WZDx v4.0 WZDxFeed",
+ "description": "The GeoJSON output of a WZDx feed data feed (v4.0)",
+ "type": "object",
+ "properties": {
+ "road_event_feed_info": {
+ "$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/FeedInfo.json"
+ },
+ "type": {
+ "description": "The GeoJSON type",
+ "enum": ["FeatureCollection"]
+ },
+ "features": {
+ "description": "An array of GeoJSON Feature objects which represent WZDx road events",
+ "type": "array",
+ "items": {
+ "allOf": [
+ {
+ "properties": {
+ "properties": {
+ "properties": {
+ "core_details": {
+ "properties": {
+ "event_type": {
+ "enum": ["work-zone", "detour"]
+ }
+ },
+ "required": ["event_type"]
+ }
+ },
+ "required": ["core_details"]
+ }
+ },
+ "required": ["properties"]
+ },
+ {
+ "$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/RoadEventFeature.json"
+ }
+ ]
+ }
+ },
+ "bbox": {
+ "$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.0/BoundingBox.json"
+ }
+ },
+ "required": ["road_event_feed_info", "type", "features"]
+}
\ No newline at end of file
diff --git a/spec-content/README.md b/spec-content/README.md
index 06ee4527..738f4ca5 100644
--- a/spec-content/README.md
+++ b/spec-content/README.md
@@ -1,16 +1,19 @@
# WZDx Specification Content
-The WZDx specification describes the content and structure of a WZDx GeoJSON document. It defines distinct entities called objects which contain the data content (called fields or properties) of each entity. The structure of and relationship between objects describes how the GeoJSON output of a WZDx feed looks. Objects are found in the [objects](/spec-content/objects) directory.
+The WZDx specification defines the content and structure of several GeoJSON documents, each intended to be distributed as a data feed. Each GeoJSON document (colloquially "feed") contains a single feed root object. WZDx v4.0 defines the following feed objects:
-The value of some properties of an object are restricted to a defined set of values. These enumerations are found in the [enumerated-types](/spec-content/enumerated-types) directory.
+- [WZDxFeed](/spec-content/objects/WZDxFeed.md): describes high-level information about work zone events ocurring on roadways (called "road events") that impact the characteristics of the roadway and involve a change from the default state (such as a lane closure). This is the original work zone data exchange feed and the only feed that WZDx defined until [version 4.0](https://github.com/usdot-jpo-ode/wzdx/releases/tag/v4.0).
+- [RoadRestrictionFeed](/spec-content/objects/RoadRestrictionFeed.md): describes the location and details of restrictions on roadways.
+- [SwzDeviceFeed](/spec-content/objects/SwzDeviceFeed.md): describes information (location, status, live data) about field devices deployed on the roadway in work zones.
-## Objects
-The WZDx specification describes the structure and content of a GeoJSON document, which can be called an instance of a "WZDx Feed". Each WZDx GeoJSON document has one root object, a [WZDxFeed](/spec-content/objects/WZDxFeed.md) object, with many properties and nested objects. Each distinct object is described in its own human-readable markdown file within the [objects](/spec-content/objects) directory, as well as within the JSON schema in `/create-feed/schemas/`. An object represents a distinct entity, such as a road event, a lane, or information about a feed. All pieces of data that describe that entity are included as properties of the object.
+Each feed object contains many layers of child objects. Together all the objects define the WZDx feed. All WZDx objects are located in the [objects](/spec-content/objects) subdirectory and listed in the [Objects](#objects) section of this document.
+
+The value of certain object properties is restricted to a defined set of values called an **enumerated type**. Enumerated types are located in the [enumerated-types](/spec-content/enumerated-types) subdirectory and listed in the [Enumerated Types](#enumerated-types) section of this document.
-### Object Details
-Each object is described by a table of properties, which are each defined by the following characteristics:
+## Objects
+Each WZDx object is described by a table of properties with following columns:
- **Name** - The property name.
-- **Type** - The type of data being stored. This can be one of the JSON primative types (only `String`, `Number`, `Array` are used), `Integer`, as defined in the [JSON schema validation specification](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1), a [WZDx Enumerated Type](#enumerated-types), a WZDx Object, or a [GeoJSON Object](https://tools.ietf.org/html/rfc7946#section-3).
+- **Type** - The type of data being stored. This can be one of the JSON primative types (only `String`, `Number`, `Array` are used), `Integer`, as defined in the [JSON schema validation specification section 6.1 (Draft 07)](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1), a formatted string as defined in [JSON schema validation specification section 7 (Draft 07)](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-validation-01#section-7.3), a [WZDx Enumerated Type](#enumerated-types), a WZDx Object, or a [GeoJSON Object](https://tools.ietf.org/html/rfc7946#section-3).
- **Description** - A description of the value of the property.
- **Conformance** - An indication of the requirement for including the property in a WZDx GeoJSON document. There are three categories of conformance:
- *Required* - The property must be included
@@ -21,63 +24,94 @@ Each object is described by a table of properties, which are each defined by the
### List of Objects
This section provides a tabular list of all objects used in the WZDx specification.
+#### Feed-Level
+The following objects are high-level and describe either a WZDx feed or information about a WZDx feed:
+
Object | Description
--- | ---
+[FeedDataSource](/spec-content/objects/FeedDataSource.md) | Information about a specific data source used to build a work zone data feed.
+[FeedInfo](/spec-content/objects/FeedInfo.md) | Information about a WZDx feed such as metadata, contact information, and data sources.
+[RoadRestrictionFeed](/spec-content/objects/RoadRestrictionFeed.md) | The root (highest-level) object of a **Road Restriction Feed** GeoJSON document.
+[SwzDeviceFeed](/spec-content/objects/SwzDeviceFeed.md) | The root (highest-level) object of **Smart Work Zone Device Feed** GeoJSON document.
+[WZDxFeed](/spec-content/objects/WZDxFeed.md) | The root (highest-level) object of a **WZDx Feed** GeoJSON document.
+
+#### Road Events
+The following objects are used to describe events ocurring on roadways (road events) that impact the characteristics of the roadway and involve a change from the default state:
+
+Object | Description
+--- | ---
+[DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md) | A detour on a roadway.
[Lane](/spec-content/objects/Lane.md) | An individual lane within a road event.
-[LaneRestriction](/spec-content/objects/LaneRestriction.md) | A lane-level restriction, including type and value.
[Relationship](/spec-content/objects/Relationship.md) | Identification of both sequential and hierarchical relationships between road events and other entities.
-[RoadEvent](/spec-content/objects/RoadEvent.md) | Information that describes where, when, and what activity is taking place along a road segment.
-[RoadEventDataSource](/spec-content/objects/RoadEventDataSource.md) | Information about a specific data source used to build a work zone data feed.
-[RoadEventFeature](/spec-content/objects/RoadEventFeature.md) | The GeoJSON `Feature` container object for a WZDx `RoadEvent`.
-[RoadEventFeedInfo](/spec-content/objects/RoadEventFeedInfo.md) | WZDx feed header information such as metadata, contact information, and data sources.
+[Restriction](/spec-content/objects/Restriction.md) | A restriction on a road event or lane, including type and value.
+[RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md) | Describes a section of roadway and the limitations of how that section can be used.
+[RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) | The core details of an event occurring on a roadway (i.e. a road event) that is shared by all types of road events.
+[RoadEventFeature](/spec-content/objects/RoadEventFeature.md) | The GeoJSON `Feature` container object for a WZDx road event.
[TypeOfWork](/spec-content/objects/TypeOfWork.md) | A description of the type of work being done in a road event and an indication of if that work will result in an architectural change to the roadway.
-[WZDxFeed](/spec-content/objects/WZDxFeed.md) | The root (highest-level) object of a WZDx feed GeoJSON document.
+[WorkerPresence](/spec-content/objects/WorkerPresence.md) | Information about the presence of workers in the road event area.
+[WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) | A work zone road event including where, when, and what activities are taking place within a work zone on a roadway.
-### Object Diagram
-The object diagram below indicates the relationship between the data objects.
+#### Field Devices
+The following objects are used to describe deployed roadside [ITS](https://en.wikipedia.org/wiki/Intelligent_transportation_system) devices:
-![Object Diagram](/images/wzdx_object_diagram.jpg)
+Object | Description
+--- | ---
+[ArrowBoard](/spec-content/objects/ArrowBoard.md) | An electronic, connected arrow board which can display an arrow pattern to direct traffic.
+[Camera](/spec-content/objects/Camera.md) | A camera device deployed in the field, capable of capturing still images.
+[DynamicMessagesSign](/spec-content/objects/DynamicMessageSign.md) | An electronic traffic sign deployed on the roadway, used to provide information to travelers.
+[FlashingBeacon](/spec-content/objects/FlashingBeacon.md) | A flashing beacon light of any form (e.g. trailer-mounted, vehicle), used to indicate something or capture driver attention.
+[FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md) | The GeoJSON `Feature` container object for a deployed field device.
+[FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) | The core details—both configuration and current state—of a field device that are shared by all types of field devices.
+[HybridSign](/spec-content/objects/HybridSign.md) | A hybrid sign that contains static text (e.g. on an alumium sign) along with a single electronic message display, used to provide information to travelers.
+[LocationMarker](/spec-content/objects/LocationMarker.md) | Describes any GPS-enabled ITS device that is placed at a point on a roadway to dynamically know the location of something (often the beginning or end of a work zone).
+[MarkedLocation](/spec-content/objects/MarkedLocation.md) | Describes a specific location where a [LocationMarker](/spec-content/objects/LocationMarker.md) is placed, such as the start or end of a work zone road event.
+[SwzDeviceFeed](/spec-content/objects/SwzDeviceFeed.md) | The root (highest-level) object of smart work zone device feed GeoJSON document.
+[TrafficSensor](/spec-content/objects/TrafficSensor.md) | A traffic sensor deployed on a roadway which captures traffic metrics (e.g. speed, volume, occupancy) over a collection interval.
+[TrafficSensorLaneData](/spec-content/objects/TrafficSensorLaneData.md) | Data for a single lane within a road event (e.g. [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md)) measured by a [TrafficSensor](/spec-content/objects/TrafficSensor.md) deployed on the roadway.
+
+### Object Diagrams
+The object diagrams below depict the relationship between the data objects for each WZDx feed.
+
+[TBD]
#### Updating the object diagram
When making changes to the specification, the object diagram needs to be updated as well. To modify the object diagram, open `/images/wzdx_object_diagram.drawio` at https://app.diagrams.net (or any drawio editor). Make necessary changes to the diagram using the web editor, then download the `drawio` file and replace `/images/wzdx_object_diagram.drawio` with the new file. Additionally **export** the diagram as a JPEG, using the diagram name as the file name, and replace `/images/wzdx_object_diagram.jpg` with the new image file.
## Enumerated Types
-Many object properties are restricted to a finite set of values, defined by an enumerated type. The enumerations for each enumerated type as well as what object properties it is used by is described in its own file in the [enumerated-types](/spec-content/enumerated-types) directory.
+Many object properties are restricted to a finite set of values defined by an enumerated type. The enumerations for each enumerated type as well as what object properties it is used by is described in its own file in the [enumerated-types](/spec-content/enumerated-types) directory.
### List of Enumerated Types
This section provides a tabular list of all enumerated types used in the WZDx specification.
+#### Road Events
+The following enumerated types are used by objects that describe road events:
+
Enumerated Type | Description
--- | ---
[Direction](/spec-content/enumerated-types/Direction.md) | The direction for a road event based on standard naming for US roads.
[EventType](/spec-content/enumerated-types/EventType.md) | The type of a WZDx road event.
[EventStatus](/spec-content/enumerated-types/EventStatus.md) | The status of a road event.
-[LaneRestrictionUnit](/spec-content/enumerated-types/LaneRestrictionUnit.md) | Units of measure used for a lane restriction value.
[LaneStatus](/spec-content/enumerated-types/LaneStatus.md) | The status of a lane for the traveling public.
[LaneType](/spec-content/enumerated-types/LaneType.md) | An indication of the type of lane or shoulder.
[LocationMethod](/spec-content/enumerated-types/LocationMethod.md) | The typical method used to locate the beginning and end of a work zone impact area.
-[RoadRestriction](/spec-content/enumerated-types/RoadRestriction.md) | The type of vehicle restriction on a roadway.
+[RestrictionType](/spec-content/enumerated-types/RestrictionType.md) | The type of vehicle restriction on a roadway or lane.
[SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md) | An indication of how a geographical coordinate was defined.
[TimeVerification](/spec-content/enumerated-types/TimeVerification.md) | A measure of how accurate a date-time is.
+[UnitOfMeasurement](/spec-content/enumerated-types/UnitOfMeasurement.md) | Unit of measurement (e.g. "pounds", "centimeters").
[VehicleImpact](/spec-content/enumerated-types/VehicleImpact.md) | The impact to vehicular lanes along a single road in a single direction.
+[WorkerPresenceConfidence](/spec-content/enumerated-types/WorkerPresenceConfidence.md) | High-level description of the feed publisher's confidence in worker presence.
+[WorkerPresenceDefinition](/spec-content/enumerated-types/WorkerPresenceDefinition.md) | Method of knowing the presence of workers in the road event area.
+[WorkerPresenceMethod](/spec-content/enumerated-types/WorkerPresenceMethod.md) | Methods for how worker presence in a work zone event area is determined.
[WorkTypeName](/spec-content/enumerated-types/WorkTypeName.md) | A high-level text description of the type of work being done in a road event.
-### Object Properties using Enumerated Types
-For ease of reference, the table below describes all properties in the WZDx specification whose value is restricted by an enumerated type, as well as the object that contains that property.
-
-Property | Object | Enumerated Type | Notes
---- | --- | --- | ---
-`beginning_accuracy` | [RoadEvent](/spec-content/objects/RoadEvent.md) | [SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md) | Enumeration updated in WZDx v3.0
-`direction` | [RoadEvent](/spec-content/objects/RoadEvent.md) | [Direction](/spec-content/enumerated-types/Direction.md) | Enumeration adapted from TMDD link-alignment
-`end_date_accuracy` | [RoadEvent](/spec-content/objects/RoadEvent.md) | [TimeVerification](/spec-content/enumerated-types/TimeVerification.md) | Enumeration updated in WZDx v3.0
-`ending_accuracy` | [RoadEvent](/spec-content/objects/RoadEvent.md) | [SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md) | Enumeration updated in WZDx v3.0
-`event_type` | [RoadEvent](/spec-content/objects/RoadEvent.md) | [EventType](/spec-content/enumerated-types/EventType.md) | Enumeration create in WZDx v3.0
-`event_status` | [RoadEvent](/spec-content/objects/RoadEvent.md) | [EventStatus](/spec-content/enumerated-types/EventStatus.md) | Enumeration created in WZDx v1.0
-`location_method` | [RoadEventDataSource](/spec-content/objects/RoadEventDataSource.md) | [LocationMethod](/spec-content/enumerated-types/LocationMethod.md) | Enumeration created in WZDx v3.0 but referenced since v1.1
-`restrictions` | [RoadEvent](/spec-content/objects/RoadEvent.md) | [RoadRestriction](/spec-content/enumerated-types/RoadRestriction.md) | Enumeration created in WZDx v1.0
-`restriction_type` | [LaneRestriction](/spec-content/objects/LaneRestriction.md) | [RoadRestriction](/spec-content/enumerated-types/RoadRestriction.md) | Individual lane restrictions | Enumeration created in WZDx v1.0
-`restriction_units` | [LaneRestriction](/spec-content/objects/LaneRestriction.md) | [LaneRestrictionUnit](/spec-content/enumerated-types/LaneRestrictionUnit.md) | This is an intial list, created in WZDx v2.0, and is not intended to be complete. More values will be added as needed.
-`start_date_accuracy` | [RoadEvent](/spec-content/objects/RoadEvent.md) | [TimeVerification](/spec-content/enumerated-types/TimeVerification.md) | Enumeration updated in WZDx v3.0
-`status` | [Lane](/spec-content/objects/Lane.md) | [LaneStatus](/spec-content/enumerated-types/LaneStatus.md) | Enumeration created in WZDx v2.0
-`type` | [Lane](/spec-content/objects/Lane.md) | [LaneType](/spec-content/enumerated-types/LaneType.md) | Enumeration adapted from TMDD LaneRoadway; updated in WZDx v3.0
-`type_name` | [TypeOfWork](/spec-content/objects/TypeOfWork.md) | [WorkTypeName](/spec-content/enumerated-types/WorkTypeName.md) | Enumeration created in WZDx v2.0
-`vehicle_impact` | [RoadEvent](/spec-content/objects/RoadEvent.md) | [VehicleImpact](/spec-content/enumerated-types/VehicleImpact.md) | Enumeration created in WZDx v2.0
+
+#### Field Devices
+The following enumerated types are used in describing deployed roadside [ITS](https://en.wikipedia.org/wiki/Intelligent_transportation_system) devices:
+
+Enumerated Type | Description
+--- | ---
+[ArrowBoardPattern](/spec-content/enumerated-types/ArrowBoardPattern.md) | A list of options for the posted pattern on an [ArrowBoard](/spec-content/objects/ArrowBoard.md).
+[FlashingBeaconFunction](/spec-content/enumerated-types/FlashingBeaconFunction.md) | Describes options for what a [FlashingBeacon](/spec-content/objects/FlashingBeacon.md) is being used to indicate.
+[HybridSignDynamicMessageFunction](/spec-content/enumerated-types/HybridSignDynamicMessageFunction.md) | Describes options for the function of the dynamic message displayed by the electronic display on a [HybridSign](/spec-content/objects/HybridSign.md).
+[FieldDeviceStatus](/spec-content/enumerated-types/FieldDeviceStatus.md) | The operational status of a field device.
+[FieldDeviceType](/spec-content/enumerated-types/FieldDeviceType.md) | The type of a field device.
+[MarkedLocationType](/spec-content/enumerated-types/MarkedLocationType.md) | Describes options for what a [MarkedLocation](/spec-content/objects/MarkedLocation.md) can mark, such as the start or end of a road event.
diff --git a/spec-content/enumerated-types/ArrowBoardPattern.md b/spec-content/enumerated-types/ArrowBoardPattern.md
new file mode 100644
index 00000000..007b924e
--- /dev/null
+++ b/spec-content/enumerated-types/ArrowBoardPattern.md
@@ -0,0 +1,32 @@
+# ArrowBoardPattern Enumerated Type
+The `ArrowBoardPattern` enumerated type defines a list of options for the posted pattern on an [ArrowBoard](/spec-content/objects/ArrowBoard.md).
+
+If the arrow board pattern does not exactly match one of the values described, the closest pattern should be used.
+
+## Values
+Value | Description
+--- | ---
+`blank` | No pattern; the board is not displaying anything.
+`right-arrow-static` | Merge right represented by an arrow pattern (e.g. `-->`) that does not flash or move.
+`right-arrow-flashing` | Merge right represented by an arrow pattern (e.g. `-->`) that flashes on/off.
+`right-arrow-sequential` | Merge right represented by an arrow pattern (e.g. `-->`) that is displayed in a progressing sequence (e.g. `>` `->` `-->` or `-` `--` `-->`).
+`right-chevron-static` | Merge right represented by a pattern of chevrons (e.g. `>>>`) that does not flash or move.
+`right-chevron-flashing` | Merge right represented by a pattern of chevrons (e.g. `>>>`) that flashes on/off.
+`right-chevron-sequential` | Merge right represented by a pattern of chevrons that is displayed in a progressing sequence.
+`left-arrow-static` | Merge left represented by an arrow pattern (e.g. `<--`) that does not flash or move.
+`left-arrow-flashing` | Merge left represented by an arrow pattern (e.g. `<--`) that flashes on/off.
+`left-arrow-sequential` | Merge left represented by an arrow pattern (e.g. `<--`) that is displayed in a progressing sequence (e.g. `<` `<-` `<--` or `-` `--` `<--`).
+`left-chevron-static` | Merge left represented by a pattern of chevrons (e.g. `<<<`) that does not flash or move.
+`left-chevron-flashing` | Merge left represented by a pattern of chevrons (e.g. `<<<`) that flashes on/off.
+`left-chevron-sequential` | Merge left represented by a pattern of chevrons that is displayed in a progressing sequence.
+`bidirectional-arrow-static` | Split (merge left or right) represented by arrows pointing both left and right (e.g. `<-->`) that does not flash or move.
+`bidirectional-arrow-flashing` | Split (merge left or right) represented by arrows pointing both left and right (e.g. `<-->`) that flashes on/off.
+`line-flashing` | A flashing line or bar (e.g. `---`), indicating warning/caution, not a merge.
+`diamonds-alternating` | An alternating display of two diamond shapes (e.g. `◇ ◇`), indicating warning/caution, not a merge.
+`four-corners-flashing` | Four dots on the corners of the board which flash, indiciating warning/caution, not a merge.
+`unknown` | The arrow board pattern is not known.
+
+## Used By
+Property | Object
+--- | ---
+`pattern` | [ArrowBoard](/spec-content/objects/ArrowBoard.md)
\ No newline at end of file
diff --git a/spec-content/enumerated-types/Direction.md b/spec-content/enumerated-types/Direction.md
index 86a8271a..b4b6dd39 100644
--- a/spec-content/enumerated-types/Direction.md
+++ b/spec-content/enumerated-types/Direction.md
@@ -12,10 +12,10 @@ Value | Description
## Used By
Property | Object
--- | ---
-`direction` | [RoadEvent](/spec-content/objects/RoadEvent.md)
+`direction` | [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md)
## Additional Information
-The Direction enumerated type values were based on the TMDD Link-alignment Enumeration, which contains the following values:
+The `Direction` enumerated type values were based on the TMDD Link-alignment Enumeration, which contains the following values:
```
northbound (1)
@@ -24,4 +24,4 @@ southbound (3)
westbound (4)
inner-loop (5)
outer-loop (6)
-```
\ No newline at end of file
+```
diff --git a/spec-content/enumerated-types/EventStatus.md b/spec-content/enumerated-types/EventStatus.md
index af1853bc..d4f83bf4 100644
--- a/spec-content/enumerated-types/EventStatus.md
+++ b/spec-content/enumerated-types/EventStatus.md
@@ -1,4 +1,4 @@
-# Work Zone Event Status
+# EventStatus Enumerated Type
The status of a road event.
## Values
@@ -13,4 +13,5 @@ Value | Description
## Used By
Property | Object
--- | ---
-`event_status` | [RoadEvent](/spec-content/objects/RoadEvent.md)
+`event_status` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md)
+`event_status` | [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md)
diff --git a/spec-content/enumerated-types/EventType.md b/spec-content/enumerated-types/EventType.md
index ff565054..27a093cf 100644
--- a/spec-content/enumerated-types/EventType.md
+++ b/spec-content/enumerated-types/EventType.md
@@ -1,4 +1,4 @@
-# Event Type
+# EventType Enumerated Type
The type of a WZDx road event.
## Values
@@ -6,8 +6,9 @@ Value | Description
--- | ---
`work-zone` | An area of a trafficway with highway construction, maintenance, or utility-work activities. A work zone is typically marked by signs, channeling devices, barriers, pavement markings, and/or work vehicles. It extends from the first warning sign or flashing lights on a vehicle to the "End of Road Work" sign or the last traffic control device. A work zone may be for short or long durations and may include stationary or moving activities.
Inclusions: