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:
  1. Long-term stationary highway construction such as building a new bridge, adding travel lanes to the roadway, and extending an existing trafficway.
  2. Mobile highway maintenance such as striping the roadway, median, and roadside grass mowing/landscaping, and pothole repair.
  3. Short-term stationary utility work such as repairing electric, gas, or water lines within the trafficway.
Exclusions:
  1. Private construction, maintenance, or utility work outside the trafficway.
*The AASHTO term equivalent to roadway is traveled way.
*The AASHTO term equivalent to trafficway is highway, street, or road.

Source: https://www.fhwa.dot.gov/publications/publicroads/99mayjun/workzone.cfm `detour` | A temporary rerouting of road users onto an existing trafficway to avoid a work zone or other impedance.

Source: https://mutcd.fhwa.dot.gov/htm/2009/part6/part6c.htm +`restriction` | A section of roadway that has limitations of how that section can be used. ## Used By Property | Object --- | --- -`event_type` | [RoadEvent](/spec-content/objects/RoadEvent.md) +`event_type` | [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) diff --git a/spec-content/enumerated-types/FieldDeviceStatus.md b/spec-content/enumerated-types/FieldDeviceStatus.md new file mode 100644 index 00000000..95ac23bc --- /dev/null +++ b/spec-content/enumerated-types/FieldDeviceStatus.md @@ -0,0 +1,15 @@ +# FieldDeviceStatus Enumerated Type +The `FieldDeviceStatus` enumerated type describes the operational status of a field device. The status indicates the health of the device. + +## Values +Value | Description +--- | --- +`ok` | The device is turned on and working without issue. +`warning` | The device is functional but is impaired or impacted in a way that is not critical to operation. +`error` | The device is impaired such that it is not able to perform one or more necessary functions. +`unknown` | The device's operational status is not known. + +## Used By +Property | Object +--- | --- +`device_status` | [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) \ No newline at end of file diff --git a/spec-content/enumerated-types/FieldDeviceType.md b/spec-content/enumerated-types/FieldDeviceType.md new file mode 100644 index 00000000..2273f9a7 --- /dev/null +++ b/spec-content/enumerated-types/FieldDeviceType.md @@ -0,0 +1,18 @@ +# FieldDeviceType Enumerated Type +The `FieldDeviceType` enumerated type enumerates all types of field devices described by the specification. + +## Values +Value | Description +--- | --- +`arrow-board` | 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. +`dynamic-message-sign` | An electronic traffic sign deployed on the roadway, used to provide information to travelers. +`flashing-beacon` | A flashing beacon light of any form, used to indicate caution and capture driver attention. +`hybrid-sign` | A message sign that contains both static text (e.g. on an aluminium board) along with a variable electronic message sign, used to provide information to travelers. +`location-marker` | Any GPS-enabled ITS device that is placed at a point on a roadway to mark a location (often the beginning or end of a road event). +`traffic-sensor` | A device deployed on a roadway which captures traffic metrics such as speed, volume, or occupancy. + +## Used By +Property | Object +--- | --- +`device_type` | [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) \ No newline at end of file diff --git a/spec-content/enumerated-types/FlashingBeaconFunction.md b/spec-content/enumerated-types/FlashingBeaconFunction.md new file mode 100644 index 00000000..9b138620 --- /dev/null +++ b/spec-content/enumerated-types/FlashingBeaconFunction.md @@ -0,0 +1,15 @@ +# FlashingBeaconFunction Enumerated Type +The `FlashingBeaconFunction` enumerated type describes a list of options for what a [FlashingBeacon](/spec-content/objects/FlashingBeacon.md) is being used to indicate. + +## Values +Value | Description +--- | --- +`vehicle-entering` | Vehicles are entering the roadway. +`queue-warning` | There is a queue of vehicles. +`reduced-speed` | There is a reduced speed limit. +`workers-present` | There are workers present on or near the roadway. + +## Used By +Property | Object +--- | --- +`function` | [FlashingBeacon](/spec-content/objects/FlashingBeacon.md) \ No newline at end of file diff --git a/spec-content/enumerated-types/HybridSignDynamicMessageFunction.md b/spec-content/enumerated-types/HybridSignDynamicMessageFunction.md new file mode 100644 index 00000000..f449d429 --- /dev/null +++ b/spec-content/enumerated-types/HybridSignDynamicMessageFunction.md @@ -0,0 +1,14 @@ +# HybridSignDynamicMessageFunction Enumerated Type +The `HybridSignDynamicMessageFunction` enumerated type describes options for the function of the dynamic message displayed by the electronic display on a [HybridSign](/spec-content/objects/HybridSign.md). + +## Values +Value | Description +--- | --- +`speed-limit` | The message is a speed limit. +`travel-time` | The message is a travel time. +`other` | The hybrid sign message function is not one of the other options described by this enumerated type. + +## Used By +Property | Object +--- | --- +`dynamic_message_function` | [HybridSign](/spec-content/objects/HybridSign.md) \ No newline at end of file diff --git a/spec-content/enumerated-types/LaneStatus.md b/spec-content/enumerated-types/LaneStatus.md index 773003d3..5a5806fd 100644 --- a/spec-content/enumerated-types/LaneStatus.md +++ b/spec-content/enumerated-types/LaneStatus.md @@ -1,4 +1,4 @@ -# Lane Status +# LaneStatus Enumerated Type The status of a lane for the traveling public. ## Values @@ -11,7 +11,6 @@ Value | Description `merge-left` | The lane gradually tapers while merging into the lane directly to the left `merge-right` | The lane gradually tapers while merging into the lane directly to the right `alternating-flow` | Traffic may travel in either direction, depending on certain conditions. Example conditions include time of day (e.g. reversible lanes), automated controls, or on-site personnel -`alternating-one-way` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `alternating-flow` instead* — The lane alternates the direction of travel via either automated controls or onsite personnel ## Used By Property | Object diff --git a/spec-content/enumerated-types/LaneType.md b/spec-content/enumerated-types/LaneType.md index 66793461..32069ae8 100644 --- a/spec-content/enumerated-types/LaneType.md +++ b/spec-content/enumerated-types/LaneType.md @@ -1,37 +1,20 @@ -# Lane Type -A description of the type of a lane on the roadway. +# LaneType Enumerated Type +A description of the static properties of a section of the roadway, intended to reflect information about its function that is not covered by its status (see [LaneStatus](/spec-content/enumerated-types/LaneStatus.md)). ## Values Value | Description --- | --- -`lane` | Generic lane type, intended to be used for normal, driveable lanes -`right-turning-lane` | A lane where right turns are permissible -`left-turning-lane`| A lane where left turns are permissible -`right-exit-lane` | A lane with an egress on the right -`left-exit-lane` | A lane with an egress on the left -`left-exit-ramp`| An exit ramp with an egress on the left in the direction of flow at an interchange -`right-exit-ramp` | An exit ramp with an egress on the right in the direction of flow at an interchange -`right-entrance-ramp` | A lane or ramp with an ingress on the right -`left-entrance-ramp` | A lane or ramp with an ingress on the left -`sidewalk` | A sidewalk or pedestrian way -`bike-lane` | A lane on the roadway for cyclists only -`shoulder` | A generic shoulder -`center-left-turn-lane` | A lane in the center of a bidirectional roadway in which traffic from both directions uses to make a left turn -`left-lane` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `lane` instead* - The leftmost lane -`right-lane` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `lane` instead* - The rightmost lane -`middle-lane` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `lane` instead* - A lane that is not the rightmost or leftmost lane -`center-lane` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `lane` instead* - The center-most lane when the total number of lanes is odd -`right-shoulder` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `shoulder` instead* — The outer shoulder or the rightmost shoulder -`left-shoulder` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `shoulder` instead* — The inner shoulder or the leftmost shoulder -`right-second-exit-ramp` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `right-exit-lane` instead* — The second exit ramp with an egress on the right in the direction of flow at an interchange -`left-second-exit-ramp` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `left-exit-lane` instead* — The second exit ramp with an egress on the left in the direction of flow at an interchange -`right-second-entrance-ramp` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `right-entrance-lane` instead* — The second entrance ramp with an ingress on the right in the direction of flow at an interchange -`left-second-entrance-ramp` (DEPRECATED) | *This value is deprecated and will be removed in a future version; use `left-entrance-lane` instead* — The second entrance ramp with an ingress on the left in the direction of flow at an interchange -`right-merging-lane` (DEPRECATED) | *This value is deprecated and will be removed in a future version; specify merging lanes via the lane's `status` property* — The right lane where the lane ends with a gradual merge with the second most lane -`left-merging-lane` (DEPRECATED) | *This value is deprecated and will be removed in a future version; specify merging lanes via the lane's `status` property* — The left lane where the lanes ends by a gradual merge with the second most left lane -`hov-lane` (DEPRECATED) | *This value is deprecated and will be removed in a future version; specify hovs via the lane's `restrictions` property* — A high-occupancy vehicle lane -`alternating-flow-lane` (DEPRECATED) | *This value is deprecated and will be removed in a future version; specify alternating flow via the lane's `status` property (value of `alternating-flow`)* — A lane where signal or flagger controls lane flow | -`reversible-lane` (DEPRECATED) | *This value is deprecated and will be removed in a future version; specify reversible status via the lane's `status` property (value of `alternating-flow`)* — A lane in which traffic may travel in either direction, depending on certain conditions such as time of day | +`general` | A generic lane type, intended to be used for general purpose travel lanes. +`exit-lane` | A lane leading towards an egress from the current roadway. An `exit-lane` usually becomes an `exit-ramp` after a gore point. +`exit-ramp`| A lane at an interchange leading away from the current roadway to another roadway. +`entrance-lane` | A lane leading away from an ingress to the current roadway. An `entrance-ramp` usually becomes an `entrance-lane` after a gore point. +`entrance-ramp` | A lane at an interchange for traffic to ingress from another roadway to the mainline. +`sidewalk` | A path for pedestrians, usually on the side of the roadway. +`bike-lane` | A lane on the roadway for use by cyclists only. +`shoulder` | A portion of the roadway that is outside (either right or left) of the main travel lanes. A shoulder can have many uses but is not intended for general traffic. +`parking` | A lane used for parking, not allowed for travel. +`median` | An often unpaved, non-drivable area that separates sections of the roadway. In most cases a median should only be described if it separates lanes in a single direction of travel, as per [business rule #1](/Creating_a_WZDx_Feed.md#business-rules) each direction of travel must be represented by a separate road event. +`center-left-turn-lane` | A lane in the center of a bidirectional roadway that traffic from both directions uses to make a left turn. ## Used By Property | Object @@ -41,4 +24,4 @@ Property | Object ## Additional Information The LaneType enumerated type was originally based on the TMDD LaneRoadway Enumeration, which is imported into TMDD from SAE 2540 (ITIS Standard). -In later release, other standards were examined for inspiration. These include SAE J2735 and the ISO 20524-1 Geographic Data Files (GDF) standard. \ No newline at end of file +In later release, other standards were examined for inspiration. These include SAE J2735 and the ISO 20524-1 Geographic Data Files (GDF) standard. diff --git a/spec-content/enumerated-types/LocationMethod.md b/spec-content/enumerated-types/LocationMethod.md index 8c978075..6afac631 100644 --- a/spec-content/enumerated-types/LocationMethod.md +++ b/spec-content/enumerated-types/LocationMethod.md @@ -1,4 +1,4 @@ -# Location Method +# LocationMethod Enumerated Type The typical method used to locate the begin and end of a work zone impact area. ## Values @@ -13,7 +13,7 @@ Value | Description ## Used By Property | Object --- | --- -`location_method` | [RoadEventDataSource](/spec-content/objects/RoadEventDataSource.md) +`location_method` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) ## Additional Information The following sections details the usage of each of the location method diff --git a/spec-content/enumerated-types/MarkedLocationType.md b/spec-content/enumerated-types/MarkedLocationType.md new file mode 100644 index 00000000..47d5293d --- /dev/null +++ b/spec-content/enumerated-types/MarkedLocationType.md @@ -0,0 +1,20 @@ +# MarkedLocationType Enumerated Type +The `MarkedLocationType` enumerated type describes options for what a [MarkedLocation](/spec-content/objects/MarkedLocation.md) can mark, such as the start or end of a road event. + +## Values +Value | Description +--- | --- +`afad` | An automatic flagger assistance device. +`flagger` | A human who is directing traffic. +`lane-shift` | A lane shift. +`lane-closure` | One or more lanes are closed. +`temporary-traffic-signal` | A temporary traffic signal. +`road-event-start` | The start point of a road event. +`road-event-end` | The end point of a road event. +`work-zone-start` | The start point of a work zone. +`work-zone-end` | The end point of a work zone. + +## Used By +Property | Object +--- | --- +`type` | [MarkedLocation](/spec-content/objects/MarkedLocation.md) \ No newline at end of file diff --git a/spec-content/enumerated-types/RestrictionType.md b/spec-content/enumerated-types/RestrictionType.md new file mode 100644 index 00000000..099803cb --- /dev/null +++ b/spec-content/enumerated-types/RestrictionType.md @@ -0,0 +1,25 @@ +# RestrictionType Enumerated Type +The type of vehicle restriction on a roadway. + +## Values +Value | Description +--- | --- +`local-access-only` | Only vehicles accessing addresses along the segment being described are allowed; this includes emergency services, deliveries, and direct property access. +`no-trucks` | Trucks are prohibited from traveling this part of the network. +`travel-peak-hours-only` | Travel restricted to travel peak hours only. +`hov-3` | Travel restricted to high occupancy vehicles of three or more. +`hov-2` | Travel restricted to high occupancy vehicles of two or more. +`no-parking` | No parking along the segment being described. +`reduced-width` | Lane width reduced along the segment being described. +`reduced-height` | Height restrictions reduced along the segment being described. +`reduced-length` | Vehicle length restrictions reduced along the segment being described. +`reduced-weight` | Vehicle weight restrictions reduced along the segment being described. +`axle-load-limit` | Vehicle axle-load-limit restrictions reduced along the segment being described. +`gross-weight-limit` | Vehicle gross-weight-limit restrictions reduced along the segment being described. +`towing-prohibited` | Towing prohibited along the segment being described. +`permitted-oversize-loads-prohibited` | “Permitted oversize loads” prohibited along the segment being described; this applies to annual oversize load permits. + +## Used By +Property | Object +--- | --- +`type` | [Restriction](/spec-content/objects/Restriction.md) \ No newline at end of file diff --git a/spec-content/enumerated-types/RoadRestriction.md b/spec-content/enumerated-types/RoadRestriction.md deleted file mode 100644 index 5be636d4..00000000 --- a/spec-content/enumerated-types/RoadRestriction.md +++ /dev/null @@ -1,26 +0,0 @@ -# Road Restriction -The type of vehicle restriction on a roadway. - -## Values -Value | Description ---- | --- -`local-access-only` | Travel allowed only for vehicles accessing addresses in the work zone area; this includes emergency services, deliveries, and direct property access -`no-trucks` | Trucks are prohibited from traveling in work zone area -`travel-peak-hours-only` | Travel restricted to travel peak hours only -`hov-3` | Travel restricted to high occupancy vehicles of three or more -`hov-2` | Travel restricted to high occupancy vehicles of two or more -`no-parking` | No parking in work zone area -`reduced-width` | Lane width reduced in work zone area -`reduced-height` | Height restrictions reduced in work zone area -`reduced-length` | Vehicle length restrictions reduced in work zone area -`reduced-weight` | Vehicle weight restrictions reduced in work zone area -`axle-load-limit` | Vehicle axle-load-limit restrictions reduced in work zone area -`gross-weight-limit` | Vehicle gross-weight-limit restrictions reduced in work zone area -`towing-prohibited` | Towing prohibited in work zone area -`permitted-oversize-loads-prohibited` | “Permitted oversize loads” prohibited in work zone area; this applies
to annual oversize load permits. - -## Used By -Property | Object ---- | --- -`restrictions` | [RoadEvent](/spec-content/objects/RoadEvent.md) -`restriction_type` | [LaneRestriction](/spec-content/objects/LaneRestriction.md) diff --git a/spec-content/enumerated-types/SpatialVerification.md b/spec-content/enumerated-types/SpatialVerification.md index a24df232..9fb95ab1 100644 --- a/spec-content/enumerated-types/SpatialVerification.md +++ b/spec-content/enumerated-types/SpatialVerification.md @@ -1,14 +1,14 @@ -# Spatial Verification +# SpatialVerification Enumerated Type An indication of how a geographical coordinate was defined. ## Values Value | Description --- | --- -`estimated` | Estimated location associated with work zone activities and lane closures.
An estimated measurement may be based on an approximation of a location
referencing method (e.g., lat/long or milepost), for example: a point relative to a
posted milemarker, point on a map, or GPS device that provides less than
centimeter accuracy. -`verified` | Actual reported information about work zone locations. Actual location is
typically measured by a calibrated navigation or survey system to centimeter
accuracy (six decimal places for latitude and longitude). +`estimated` | Estimated location for the work zone road event geometry. An estimated measurement is based on an approximation of the reported location of a work zone. Approximations of the location can include but are not limited to a point relative to a posted mile maker or cross street, selecting a point on a map, or locations based on project plans. +`verified` | Verified locations for the work zone road event geometry representing the actual extents of the work zone. A verified measurement is based on actual reported data from a GPS equipped device showing the measured location of the work zone. ## Used By Property | Object --- | --- -`beginning_accuracy` | [RoadEvent](/spec-content/objects/RoadEvent.md) -`ending_accuracy` | [RoadEvent](/spec-content/objects/RoadEvent.md) +`beginning_accuracy` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) +`ending_accuracy` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) diff --git a/spec-content/enumerated-types/TimeVerification.md b/spec-content/enumerated-types/TimeVerification.md index f5af5f78..ffada2a0 100644 --- a/spec-content/enumerated-types/TimeVerification.md +++ b/spec-content/enumerated-types/TimeVerification.md @@ -1,4 +1,4 @@ -# Time Verification +# TimeVerification Enumerated Type A measure of how accurate a date-time is. ## Values @@ -10,5 +10,7 @@ Value | Description ## Used By Property | Object --- | --- -`start_date_accuracy` | [RoadEvent](/spec-content/objects/RoadEvent.md) -`end_date_accuracy` | [RoadEvent](/spec-content/objects/RoadEvent.md) +`start_date_accuracy` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) +`start_date_accuracy` | [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md) +`end_date_accuracy` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) +`end_date_accuracy` | [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md) diff --git a/spec-content/enumerated-types/LaneRestrictionUnit.md b/spec-content/enumerated-types/UnitOfMeasurement.md similarity index 55% rename from spec-content/enumerated-types/LaneRestrictionUnit.md rename to spec-content/enumerated-types/UnitOfMeasurement.md index c50a4030..92217a29 100644 --- a/spec-content/enumerated-types/LaneRestrictionUnit.md +++ b/spec-content/enumerated-types/UnitOfMeasurement.md @@ -1,5 +1,5 @@ -# Lane Restriction Unit -Units of measure used for a lane restriction value. +# UnitOfMeasurement Enumerated Type +Unit of measurement. This enumerated type is intended for use across the specification and more values can be added in the future if needed. ## Values Value | Description @@ -14,4 +14,4 @@ Value | Description ## Used By Property | Object --- | --- -`restriction_units` | [LaneRestriction](/spec-content/objects/LaneRestriction.md) +`unit` | [Restriction](/spec-content/objects/Restriction.md) diff --git a/spec-content/enumerated-types/VehicleImpact.md b/spec-content/enumerated-types/VehicleImpact.md index 8dfe099b..052c134f 100644 --- a/spec-content/enumerated-types/VehicleImpact.md +++ b/spec-content/enumerated-types/VehicleImpact.md @@ -1,4 +1,4 @@ -# Vehicle Impact +# VehicleImpact Enumerated Type The impact to vehicular lanes along a single road in a single direction. ## Values @@ -8,9 +8,16 @@ Value | Description `some-lanes-closed` | Some lanes are closed `all-lanes-open` | All lanes are open `alternating-one-way` | The roadway is alternating one way +`some-lanes-closed-merge-left` | Some lanes merge to the left +`some-lanes-closed-merge-right` | Some lanes merge to the right +`all-lanes-open-shift-left` | All lanes are open, shift to the left +`all-lanes-open-shift-right` | All lanes are open, shift to the right +`some-lanes-closed-split` | Some lanes end and split & merge to the right and left +`flagging` | A flagging operation is in effect +`temporary-traffic-signal` | A temporary traffic signal is in operation `unknown` | The vehicle impact is unknown ## Used By Property | Object --- | --- -`vehicle_impact` | [RoadEvent](/spec-content/objects/RoadEvent.md) +`vehicle_impact` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) diff --git a/spec-content/enumerated-types/WorkTypeName.md b/spec-content/enumerated-types/WorkTypeName.md index a747d8ea..754d84e4 100644 --- a/spec-content/enumerated-types/WorkTypeName.md +++ b/spec-content/enumerated-types/WorkTypeName.md @@ -1,4 +1,4 @@ -# Work Type Name +# WorkTypeName Enumerated Type A high-level text description of the type of work being done in a road event. ## Values diff --git a/spec-content/enumerated-types/WorkerPresenceConfidence.md b/spec-content/enumerated-types/WorkerPresenceConfidence.md new file mode 100644 index 00000000..67ab8f92 --- /dev/null +++ b/spec-content/enumerated-types/WorkerPresenceConfidence.md @@ -0,0 +1,14 @@ +# WorkerPresenceConfidence Enumerated Type +A high-level description of a feed publisher's confidence in the reported value of `are_workers_present` on the [WorkerPresence](/spec-content/objects/WorkerPresence.md) object. + +## Values +Value | Description +--- | --- +`low` | Feed publisher is not confident in the reported value, such as when data is manually reported or not updated frequently. +`medium` | Feed publisher is somewhat confident in the reported value, such as when the value is still manually reported but is being updated in a timely manner, or when worker presence is indirectly inferred from other equipment like smart arrow board. +`high` | Feed publisher is very confident in the reported value, such as when automated systems with GPS locations are used to generate the value. + +## Used By +Property | Object +--- | --- +`confidence` | [WorkerPresence](/spec-content/objects/WorkerPresence.md) diff --git a/spec-content/enumerated-types/WorkerPresenceDefinition.md b/spec-content/enumerated-types/WorkerPresenceDefinition.md new file mode 100644 index 00000000..61d3217c --- /dev/null +++ b/spec-content/enumerated-types/WorkerPresenceDefinition.md @@ -0,0 +1,18 @@ +# WorkerPresenceDefinition Enumerated Type +Situations in which workers may be considered present in a work zone. + +## Values +Value | Description +--- | --- +`workers-in-work-zone-working` | Humans are physically in the work zone event area, doing road work. +`workers-in-work-zone-not-working` | Humans are physically in the work zone event area but not performing work. +`mobile-equipment-in-work-zone-moving` | Mobile equipment is moving within the work zone event area, implying the presence of a worker. +`mobile-equipment-in-work-zone-not-moving` | Mobile equipment is in the work zone event area but is not moving. +`fixed-equipment-in-work-zone` | Fixed equipment is in the work zone event area. +`humans-behind-barrier` | Humans are present in the work zone event area but separated from traffic by a barrier. +`humans-in-right-of-way` | Humans are present on the drivable surface. + +## Used By +Property | Object +--- | --- +`definition` | [WorkerPresence](/spec-content/objects/WorkerPresence.md) diff --git a/spec-content/enumerated-types/WorkerPresenceMethod.md b/spec-content/enumerated-types/WorkerPresenceMethod.md new file mode 100644 index 00000000..cf0e2f4e --- /dev/null +++ b/spec-content/enumerated-types/WorkerPresenceMethod.md @@ -0,0 +1,20 @@ +# WorkerPresenceMethod Enumerated Type +Describes methods for how worker presence in a work zone event area is determined. + +## Values +Value | Description +--- | --- +`camera-monitoring` | Cameras in the work zone event area show workers are present. +`arrow-board-present` | A GPS-enabled arrow board is located in the work zone event area and broadcasting its location, implying that workers are present. +`cones-present` | GPS-enabled cones are located in the road event area, implying that workers are present. +`maintenance-vehicle-present` | A GPS-enabled maintenance vehicle is located in the road event area, implying that workers are present. +`wearables-present` | Workers wearing wearable detection equipment are present in the work zone. +`mobile-device-present` | Workers with GPS-enabled mobile device tracking are present in the work zone. +`check-in-app` | Workers have checked into the work zone via a mobile app. +`check-in-verbal` | Workers have checked into the work zone via phone or radio to a remote operations center. +`scheduled` | Workers are scheduled to be in the road event area, but presence has not been confirmed. + +## Used By +Property | Object +--- | --- +`method` | [WorkerPresence](/spec-content/objects/WorkerPresence.md) diff --git a/spec-content/objects/ArrowBoard.md b/spec-content/objects/ArrowBoard.md new file mode 100644 index 00000000..15e5b5ce --- /dev/null +++ b/spec-content/objects/ArrowBoard.md @@ -0,0 +1,17 @@ +# ArrowBoard Object +The `ArrowBoard` object describes an electronic, connected arrow board ([example image](https://trafficlaneclosures.com/wp-content/uploads/2015/03/st4825-arrowboard.png)) which can display an arrow pattern to direct traffic. Arrow boards are often placed at the beginning of a lane closure—thus knowing the location of an arrow board can assist in programmatically generating a WZDx road event with verified spatial information. + +The `ArrowBoard` is a type of field device; it has a `core_details` property which contains the [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) and exists within a [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md). + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`core_details` | [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) | The core details of the field device that are shared by all types of field devices, not specific to arrow boards. | Required | This property appears on all field devices. +`pattern` | [ArrowBoardPattern](/spec-content/enumerated-types/ArrowBoardPattern.md) | The current pattern displayed on the arrow board. Note this includes `blank`, which indicates that nothing is shown on the arrow board. | Required | +`is_moving` | Boolean | A yes/no value indicating if the arrow board is actively moving (not statically placed) as part of a mobile work zone operation. | Optional | The `is_moving` property is optional and should not be provided if it is not known if the arrow board is moving. +`is_in_transport_position` | Boolean | A yes/no value indicating if the arrow board is in the stowed/transport position (`true`) or deployed/upright position (`false`). | Optional | + +## Used By +Property | Object +--- | --- +`properties` | [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md) \ No newline at end of file diff --git a/spec-content/objects/Camera.md b/spec-content/objects/Camera.md new file mode 100644 index 00000000..b8f0e06d --- /dev/null +++ b/spec-content/objects/Camera.md @@ -0,0 +1,16 @@ +# Camera Object +The `Camera` object describes a camera device deployed in the field, capable of capturing still images. + +The `Camera` is a type of field device; it has a `core_details` property which contains the [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) and exists within a [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md). + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`core_details` | [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) | The core details of the field device that are shared by all types of field devices, not specific to cameras. | Required | This property appears on all field devices. +`image_url` | String; [uri](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.5) | A URL pointing to an image file for the camera image still. | Optional | +`image_timestamp` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC date and time when the image was captured. | Conditional; required if `image_url` is provided | + +## Used By +Property | Object +--- | --- +`properties` | [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md) \ No newline at end of file diff --git a/spec-content/objects/DetourRoadEvent.md b/spec-content/objects/DetourRoadEvent.md new file mode 100644 index 00000000..ff80b283 --- /dev/null +++ b/spec-content/objects/DetourRoadEvent.md @@ -0,0 +1,23 @@ +# DetourRoadEvent Object +The `DetourRoadEvent` object describes a detour on a roadway. The `DetourRoadEvent` can be either a segment of a detour (each segment represented by its own `DetourRoadEvent`) or the entire detour. + +The `DetourRoadEvent` is a type of road event; it has a `core_details` property which contains the [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) and exists within a [RoadEventFeature](/spec-content/objects/RoadEventFeature.md). + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`core_details` | [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) | The core details of the road event that are shared by all types of road events, not specific to detours. | Required | +`start_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the event begins. | Required | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z`. +`end_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the event ends. | Required | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z`. +`start_date_accuracy` | [TimeVerification](/spec-content/enumerated-types/TimeVerification.md) | A measure of how accurate the start date-time is. | Required | +`end_date_accuracy` | [TimeVerification](/spec-content/enumerated-types/TimeVerification.md) | A measure of how accurate the end date-time is. | Required | +`beginning_cross_street` | String | Name or number of the nearest cross street along the roadway where the event begins. | Optional | +`ending_cross_street` | String | Name or number of the nearest cross street along the roadway where the event ends. | Optional | +`beginning_milepost` | Number | The linear distance measured against a milepost marker along a roadway where the event begins. | Optional | A milepost or mile marker is a surveyed distance posted along a roadway measuring the length (in miles or tenth of a mile) from the south west to the north east. These markers are typically notated on State and local government digital road networks. +`ending_milepost` | Number | The linear distance measured against a milepost marker along a roadway where the event ends. | Optional | A milepost or mile marker is a surveyed distance posted along a roadway measuring the length (in miles or tenth of a mile) from the south west to the north east. These markers are typically notated on State and local government digital road networks. +`event_status` | [EventStatus](/spec-content/enumerated-types/EventStatus.md) | The status of the event. | Optional | + +## Used By +Property | Object +--- | --- +`properties` | [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) diff --git a/spec-content/objects/DynamicMessageSign.md b/spec-content/objects/DynamicMessageSign.md new file mode 100644 index 00000000..28e90b6d --- /dev/null +++ b/spec-content/objects/DynamicMessageSign.md @@ -0,0 +1,15 @@ +# DynamicMessageSign Object +The `DynamicMessageSign` object describes a dynamic message sign (DMS)—also known as changeable message sign (CMS) or variable message sign (VMS)—which is an electronic traffic sign deployed on the roadway used to provide information to travelers. + +The `DynamicMessageSign` is a type of field device; it has a `core_details` property which contains the [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) and exists within a [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md). + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`core_details` | [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) | The core details of the field device that are shared by all types of field devices, not specific to dynamic message signs. | Required | This property appears on all field devices. +`message_multi_string` | String | The MULTI (Mark-Up Language for Transportation Information, see [NTCIP 1203 v03](https://www.ntcip.org/file/2018/11/NTCIP1203v03f.pdf)) formatted string describing the message currently posted to the sign. | Required | If the message is unknown, such as due to an error, the empty string `""` can be used. + +## Used By +Property | Object +--- | --- +`properties` | [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md) \ No newline at end of file diff --git a/spec-content/objects/FeedDataSource.md b/spec-content/objects/FeedDataSource.md new file mode 100644 index 00000000..41568452 --- /dev/null +++ b/spec-content/objects/FeedDataSource.md @@ -0,0 +1,20 @@ +# FeedDataSource Object +The `FeedDataSource` object describes information about a specific data source used to build a work zone data feed. A WZDx feed must contain at least one `FeedDataSource`, included as an entry in the `data_sources` array of the [FeedInfo](/spec-content/objects/FeedInfo.md) object. + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`data_source_id` | String | Unique identifier for the data source organization providing work zone data. | Required | Linked to a road event by the `data_source_id` property on the road event's [core details](/spec-content/objects/RoadEventCoreDetails.md) or a field device by the `data_source_id` property on the device's [core details](/spec-content/objects/FieldDeviceCoreDetails.md). +`organization_name` | String | The name of the organization for the authoritative source of the work zone data. | Required | Example: County DOT +`update_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC date and time when the data source was last updated. | Optional | All date-time formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z` +`update_frequency` | Integer | The frequency in seconds at which the data source is updated. | Optional | +`contact_name` | String | The name of the individual or group responsible for the work zone data source. | Optional | Example: `Jo Help` +`contact_email` | String; [email](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.2) | The email address of the individual or group responsible for the data source. | Optional | +`lrs_type` (DEPRECATED) | String | *This property is deprecated and will be removed in a future version* — Describes the type of linear referencing system (LRS) used for the milepost measurements. | Optional | Example: `Use of milemarkers posted by the roadways. These are registered to a dynamic segmentation of statewide LRS basemap.` +`lrs_url` (DEPRECATED) | String; [uri](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.5) | *This property is deprecated and will be removed in a future version* — A URL where additional information on the LRS information and transformation information is stored. | Optional | Example `https://aaa.bbb.com/lrs` +`location_verify_method` (DEPRECATED) | String | *This property is deprecated and will be removed in a future version; verified locations must use GPS devices as defined in the [SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md) enumerated type* — The method used to verify the accuracy of the location information. | Optional | Example: `Survey accurate GPS equipment accurate to 0.1 cm` + +## Used By +Property | Object +--- | --- +`data_sources` | [FeedInfo](/spec-content/objects/FeedInfo.md) \ No newline at end of file diff --git a/spec-content/objects/RoadEventFeedInfo.md b/spec-content/objects/FeedInfo.md similarity index 80% rename from spec-content/objects/RoadEventFeedInfo.md rename to spec-content/objects/FeedInfo.md index f79a7dc5..5bc07046 100644 --- a/spec-content/objects/RoadEventFeedInfo.md +++ b/spec-content/objects/FeedInfo.md @@ -1,5 +1,5 @@ -# RoadEventFeedInfo Object -The `RoadEventFeedInfo` object describes WZDx feed header information such as metadata, contact information, and data sources. There is one `RoadEventFeedInfo` per WZDx GeoJSON document. +# FeedInfo Object +The `FeedInfo` object describes WZDx feed header information such as metadata, contact information, and data sources. There is one `FeedInfo` per WZDx GeoJSON document. ## Properties Name | Type | Description | Conformance | Notes @@ -7,7 +7,7 @@ Name | Type | Description | Conformance | Notes `publisher` | String | The organization responsible for publishing the feed. | Required | Example: `State DOT` `version` | String | The WZDx specification version used to create the data feed in `major.minor` format. Note this mandates that all data in a WZDx feed complies to a single version of WZDx. | Required | Examples: `1.1`, `2.0` `license` | String; [uri](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.5); "https://creativecommons.org/publicdomain/zero/1.0/" | 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/". | Optional | Data in all public WZDx feeds must be licensed under the [Creative Commons - Public Domian License (CC0)](https://creativecommons.org/share-your-work/public-domain/cc0/) which permits consumers to freely publish the enclosed information. This property is currently optional but *will be required in a future release*. -`data_sources` | Array; \[[RoadEventDataSource](/spec-content/objects/RoadEventDataSource.md)\] | A list of specific data sources for the road event data in the feed. | Required | Length of array must be at least one. +`data_sources` | Array; \[[FeedDataSource](/spec-content/objects/FeedDataSource.md)\] | A list of specific data sources for the road event data in the feed. | Required | Length of array must be at least one. `update_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC date and time when the GeoJSON file (representing the instance of the feed) was generated. | Required | The recency of the value of this property depends on if the feed producer is generating a new feed GeoJSON file for each request or generating the file in advance and making it available for download (WZDx does not mandate a particular distribution method). Note all date-time formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z` `update_frequency` | Integer | The frequency in seconds at which the data feed is updated. | Optional | Example: `60` `contact_name` | String | The name of the individual or group responsible for the data feed. | Optional | Example: `Jo Help` @@ -16,4 +16,6 @@ Name | Type | Description | Conformance | Notes ## Used By Property | Object --- | --- +`feed_info` | [RoadRestrictionFeed](/spec-content/objects/RoadRestrictionFeed.md) +`feed_info` | [SwzDeviceFeed](/spec-content/objects/SwzDeviceFeed.md) `road_event_feed_info` | [WZDxFeed](/spec-content/objects/WZDxFeed.md) diff --git a/spec-content/objects/FieldDeviceCoreDetails.md b/spec-content/objects/FieldDeviceCoreDetails.md new file mode 100644 index 00000000..445ddbe4 --- /dev/null +++ b/spec-content/objects/FieldDeviceCoreDetails.md @@ -0,0 +1,32 @@ +# FieldDeviceCoreDetails Object +The `FieldDeviceCoreDetails` object represents the core details—both configuration and current state—of a field device that are shared by all types of field devices. The `FieldDeviceCoreDetails` object cannot occur directly in a data feed and does not represent a field device on its own. It is used as the value of the `core_details` property on every specific type of field device, each represented by its own object. + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`device_type` | [FieldDeviceType](/spec-content/enumerated-types/FieldDeviceType.md) | The type of field device. | Required | +`data_source_id` | String | Identifies the data source from which the field device data originates. | Required | The value must match to the `data_source_id` property of a [FeedDataSource](/spec-content/objects/FeedDataSource.md) included within the same [SwzDeviceFeed](/spec-content/objects/SwzDeviceFeed.md) GeoJSON document. +`road_names` | Array; [String] | A list of publicly known names of the road on which the 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). | Required | +`device_status` | [FieldDeviceStatus](/spec-content/enumerated-types/FieldDeviceStatus.md) | The operational status of the field device. The value of this property indicates if the device is ok or in an error or warning state. | Required | +`update_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the field device information was updated. | Required | +`has_automatic_location` | Boolean | 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`). | Required | +`name` | String | A human-readable name for the field device. | Optional | +`description` | String | A description of the field device. | Optional | +`status_messages` | Array; [String] | 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 messages. | Optional | The content of this property is up to the producer. +`road_event_ids` | Array; [String] | A list of one or more IDs of a [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) that the device is associated with. | Optional | +`milepost` | Number | The linear distance measured against a milepost marker along a roadway where the device is located. | Optional | +`make` | String | The make or manufacturer of the device. | Optional | +`model` | String | The model of the device. | Optional | +`serial_number` | String | The serial number of the device. | Optional | +`firmware_version` | String | The version of firmware the device is using to operate. | Optional | + +## Used By +Property | Object +--- | --- +`core_details` | [ArrowBoard](/spec-content/objects/ArrowBoard.md) +`core_details` | [Camera](/spec-content/objects/Camera.md) +`core_details` | [DynamicMessageSign](/spec-content/objects/DynamicMessageSign.md) +`core_details` | [FlashingBeacon](/spec-content/objects/FlashingBeacon.md) +`core_details` | [HybridSign](/spec-content/objects/HybridSign.md) +`core_details` | [LocationMarker](/spec-content/objects/LocationMarker.md) +`core_details` | [TrafficSensor](/spec-content/objects/TrafficSensor.md) \ No newline at end of file diff --git a/spec-content/objects/FieldDeviceFeature.md b/spec-content/objects/FieldDeviceFeature.md new file mode 100644 index 00000000..d588e284 --- /dev/null +++ b/spec-content/objects/FieldDeviceFeature.md @@ -0,0 +1,18 @@ +# FieldDeviceFeature Object +The `FieldDeviceFeature` object is a [GeoJSON Feature](https://tools.ietf.org/html/rfc7946#section-3.2) representing a deployed field device. This object contains the specific details of the field device, similar to how the [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) object in a WZDx Feed contains the road event object ([WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) or [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md). + +Currently, only point devices are supported. + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`id` | String | A unique identifier issued by the data feed provider to identify the field device. It is recommended that this identifier is a Universally Unique IDentifier (UUID) as defined in [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122). | Required | This is a GeoJSON property. +`type` | String; `"Feature"` | The GeoJSON object type. This MUST be the string `Feature`. | Required | This is a GeoJSON property. +`properties` | One of: [ArrowBoard](/spec-content/objects/ArrowBoard.md), [Camera](/spec-content/objects/Camera.md), [DynamicMessageSign](/spec-content/objects/DynamicMessageSign.md), [FlashingBeacon](/spec-content/objects/FlashingBeacon.md), [HybridSign](/spec-content/objects/HybridSign.md), [LocationMarker](/spec-content/objects/LocationMarker.md), [TrafficSensor](/spec-content/objects/TrafficSensor.md) | The specific details of the field device. | Required | This is a GeoJSON property. +`geometry` | GeoJSON [Geometry](https://tools.ietf.org/html/rfc7946#section-3.1) object with `type` of [Point](https://tools.ietf.org/html/rfc7946#section-3.1.2). | The geometry of the field device, indicating its location. The Geometry object's `type` property MUST be [Point](https://tools.ietf.org/html/rfc7946#section-3.1.2). | Required | This is a GeoJSON property. +`bbox` | GeoJSON [Bounding Box](https://tools.ietf.org/html/rfc7946#section-5) | Information on the coordinate range for this field device. Must be an array of length `2n` where `n` is the number of dimensions represented in the `geometry` property, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of the `geometry`. | Optional | This is a GeoJSON property. + +## Used By +Property | Object +--- | --- +`features` | [SwzDeviceFeed](/spec-content/objects/SwzDeviceFeed.md) diff --git a/spec-content/objects/FlashingBeacon.md b/spec-content/objects/FlashingBeacon.md new file mode 100644 index 00000000..e1d006af --- /dev/null +++ b/spec-content/objects/FlashingBeacon.md @@ -0,0 +1,17 @@ +# FlashingBeacon Object +The `FlashingBeacon` object describes a flashing beacon light of any form (e.g. trailer-mounted, vehicle), used to indicate something and capture driver attention. + +The `FlashingBeacon` is a type of field device; it has a `core_details` property which contains the [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) and exists within a [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md). + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`core_details` | [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) | The core details of the field device that are shared by all types of field devices, not specific to flashing beacons. | Required | This property appears on all field devices. +`function` | [FlashingBeaconFunction](/spec-content/enumerated-types/FlashingBeaconFunction.md) | Describes the function or purpose of the flashing beacon, i.e. what it is being used to indicate. | Required | +`is_flashing` | Boolean | A yes/no value indicating if the flashing beacon is currently in use and flashing. | Optional | The `is_flashing` property is optional as it should not be provided if the producer does not know if the beacon is flashing (e.g. if it's in error state or similar). + +## Used By +Property | Object +--- | --- +`properties` | [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md) + diff --git a/spec-content/objects/HybridSign.md b/spec-content/objects/HybridSign.md new file mode 100644 index 00000000..aad401d4 --- /dev/null +++ b/spec-content/objects/HybridSign.md @@ -0,0 +1,17 @@ +# HybridSign Object +The `HybridSign` object describes 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. This object is intended to be general to represent hybrid signs with multiple functions, such as variable speed limit signs (VSLS), hybrid travel time signs, and other similar systems. + +The `HybridSign` is a type of field device; it has a `core_details` property which contains the [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) and exists within a [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md). + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`core_details` | [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) | The core details of the field device shared by all field devices types, not specific to hybrid signs. | Required | This property appears on all field devices. +`dynamic_message_function` | [HybridSignDynamicMessageFunction](/spec-content/enumerated-types/HybridSignDynamicMessageFunction.md) | The function the dynamic message displayed (e.g. a speed limit). | Required | +`dynamic_message_text` | String | A text representation of the message currently posted to the electronic component of the hybrid sign. | Optional | +`static_sign_text` | String | The static text on the non-electronic component of the hybrid sign. | Optional | + +## Used By +Property | Object +--- | --- +`properties` | [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md) diff --git a/spec-content/objects/Lane.md b/spec-content/objects/Lane.md index c89bb88a..6975e6b6 100644 --- a/spec-content/objects/Lane.md +++ b/spec-content/objects/Lane.md @@ -7,10 +7,11 @@ Name | Type | Description | Conformance | Notes `order` | Positive Integer | The position of a lane in sequence on the roadway. This value is used as an index to indicate the order of all WZDx lanes provided for a road event. | Required | A value of `1` must represent the **left-most** lane and an increase in 1 must represent moving a single lane over from the **left**. `type` | [LaneType](/spec-content/enumerated-types/LaneType.md) | An indication of the type of lane or shoulder. | Required | `status` | [LaneStatus](/spec-content/enumerated-types/LaneStatus.md) | Status of the lane for the traveling public. | Required | -`lane_number` | Positive Integer | The number assigned to the lane to help identify its position. Flexible, but usually used for regular, driveable lanes. | Optional | Assigned by counting from the **left** edge of the improved surface. Useful for text to voice translation. -`restrictions` | Array; \[[LaneRestriction](/spec-content/objects/LaneRestriction.md)\] | A list of specific restrictions that apply to the lane. | Optional | +`restrictions` | Array; [[Restriction](/spec-content/objects/Restriction.md)] | A list of zero or more restrictions specific to the lane. | Optional | +`lane_number` (DEPRECATED) | Positive Integer | *This property is deprecated; use `order` to indicate lane positions* — The number assigned to the lane to help identify its position. Flexible, but usually used for regular, driveable lanes. | Optional | Assigned by counting from the **left** edge of the improved surface. ## Used By Property | Object --- | --- -`lanes` | [RoadEvent](/spec-content/objects/RoadEvent.md) \ No newline at end of file +`lanes` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) +`lanes` | [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md) diff --git a/spec-content/objects/LaneRestriction.md b/spec-content/objects/LaneRestriction.md deleted file mode 100644 index 7476b7d3..00000000 --- a/spec-content/objects/LaneRestriction.md +++ /dev/null @@ -1,14 +0,0 @@ -# Lane Restriction Object -The `LaneRestriction` object describes a restriction on a specific lane within a road event. - -## Properties -Name | Type | Description | Conformance | Notes ---- | --- | --- | --- | --- -`restriction_type` | [RoadRestriction](/spec-content/enumerated-types/RoadRestriction.md) | The type of restriction being enforced. | Required | -`restriction_value` | Number | The measure of the restriction type. | Optional | -`restriction_units` | [LaneRestrictionUnit](/spec-content/enumerated-types/LaneRestrictionUnit.md) | Units of measure for the restriction value. | Conditional: required if `restriction_value` is not null | - -## Used By -Property | Object ---- | --- -`restrictions` | [Lane](/spec-content/objects/Lane.md) \ No newline at end of file diff --git a/spec-content/objects/LocationMarker.md b/spec-content/objects/LocationMarker.md new file mode 100644 index 00000000..df0d8090 --- /dev/null +++ b/spec-content/objects/LocationMarker.md @@ -0,0 +1,15 @@ +# LocationMarker Object +The `LocationMarker` object 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). The `LocationMarker` contains a list of one or more [MarkedLocation](/spec-content/objects/MarkedLocation.md) objects which indicate the type of location (such as the start or end) and optionally the ID of a [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) that the location is associated with. + +The `LocationMarker` is a type of field device; it has a `core_details` property which contains the [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) and exists within a [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md). + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`core_details` | [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) | The core details of the field device shared by all field devices types, not specific to the location marker. | Required | This property appears on all field devices. +`marked_locations` | Array; [[MarkedLocation](/spec-content/objects/MarkedLocation.md)] | A list of locations that the `LocationMarker` is marking. | Required | + +## Used By +Property | Object +--- | --- +`properties` | [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md) diff --git a/spec-content/objects/MarkedLocation.md b/spec-content/objects/MarkedLocation.md new file mode 100644 index 00000000..717233b3 --- /dev/null +++ b/spec-content/objects/MarkedLocation.md @@ -0,0 +1,13 @@ +# MarkedLocation Object +The `MarkedLocation` object 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. The marked location is typically within a road event, but is not required to be. + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`type` | [MarkedLocationType](/spec-content/enumerated-types/MarkedLocationType.md) | The type of location (e.g. start or end) that is marked. | Required | +`road_event_id` | String | The ID of a [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) that the `MarkedLocation` applies to. | Optional | This property is optional because the field device information producer may not always have road event information. + +## Used By +Property | Object +--- | --- +`marked_locations` | [LocationMarker](/spec-content/objects/LocationMarker.md) \ No newline at end of file diff --git a/spec-content/objects/Relationship.md b/spec-content/objects/Relationship.md index 952e63a3..082dfcf4 100644 --- a/spec-content/objects/Relationship.md +++ b/spec-content/objects/Relationship.md @@ -12,7 +12,7 @@ Name | Type | Description | Conformance | Notes ## Used By Property | Object --- | --- -`relationship` | [RoadEvent](/spec-content/objects/RoadEvent.md) +`relationship` | [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) ## Important Notes The value of all elements in the `Relationship`'s `first` or `next` properties must match the value of the `id` property of a [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) that is included in the same WZDx GeoJSON document. diff --git a/spec-content/objects/Restriction.md b/spec-content/objects/Restriction.md new file mode 100644 index 00000000..786e2f17 --- /dev/null +++ b/spec-content/objects/Restriction.md @@ -0,0 +1,16 @@ +# Restriction Object +The `Restriction` object describes a restriction on a roadway or lane. This object is used by the [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md), [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md), and [Lane](/spec-content/objects/Lane.md) objects. + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`type` | [RestrictionType](/spec-content/enumerated-types/RestrictionType.md) | The type of restriction being enforced. | Required | +`value` | Number | A value associated with the restriction, if applicable. | Optional | For example, if `type` is `reduced-height`, `value` and `unit` together would allow indicating what value the height was reduced to. +`unit` | [UnitOfMeasurement](/spec-content/enumerated-types/UnitOfMeasurement.md) | Unit of measurement for the restriction `value`, if applicable. | Conditional: required if `value` is not null. | + +## Used By +Property | Object +--- | --- +`restrictions` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) +`restrictions` | [Lane](/spec-content/objects/Lane.md) +`restrictions` | [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md) diff --git a/spec-content/objects/RestrictionRoadEvent.md b/spec-content/objects/RestrictionRoadEvent.md new file mode 100644 index 00000000..82bd3f11 --- /dev/null +++ b/spec-content/objects/RestrictionRoadEvent.md @@ -0,0 +1,19 @@ +# RestrictionRoadEvent Object +The `RestrictionRoadEvent` object describes one or more restrictions on a section of a roadway. It describes the location of the road section and the limitations on how it can be used. The `RestrictionRoadEvent` is a linear road event intended to represent persistent restrictions without a defined start or event date, such as bridge clearances. + +The `RestrictionRoadEvent` is a type of road event; it has a `core_details` property which contains the [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) and exists within a [RoadEventFeature](/spec-content/objects/RoadEventFeature.md). + +For representing restrictions due to road work, see the [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) and [WZDxFeed](/spec-content/objects/WZDxFeed.md). + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`core_details` | [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) | Describes the basic characterisitics of a road event. | Required | +`restrictions` | Array; [[Restriction](/spec-content/objects/Restriction.md)] | A list of zero or more road restrictions that apply to the roadway segment described by this road event. | Conditional: required if `lanes` property is not provided. | Restrictions can also be provided on an individual lane. +`lanes` | Array; \[[Lane](/spec-content/objects/Lane.md)\] | A list of individual lanes within a road event (roadway segment). | Conditional: required if `restrictions` property is not provided. | + +## Used By +Property | Object +--- | --- +`properties` | [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) + diff --git a/spec-content/objects/RoadEvent.md b/spec-content/objects/RoadEvent.md deleted file mode 100644 index 0efb5775..00000000 --- a/spec-content/objects/RoadEvent.md +++ /dev/null @@ -1,43 +0,0 @@ -# RoadEvent Object -The `RoadEvent` object contains information that describes where, when, and what activity is taking place along a road segment. This specification currently accommodates `work-zone` and `detour` type road events, specified by the road event's `event_type` property (see [EventType](/spec-content/enumerated-types/EventType.md])). - -## Properties -Name | Type | Description | Conformance | Notes ---- | --- | --- | --- | --- -`event_type` | [EventType](/spec-content/enumerated-types/EventType.md) | The type/classification of road event. | Required | -`data_source_id` | String | Identifies the data source from which the road event originates. | Required | The value must match to the `data_source_id` property of a [RoadEventDataSource](/spec-content/objects/RoadEventDataSource.md) included within the same WZDx GeoJSON document. -`start_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the event begins. | Required | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z`. -`end_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the event ends. | Required | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z`. -`start_date_accuracy` | [TimeVerification](/spec-content/enumerated-types/TimeVerification.md) | A measure of how accurate the start Date Time is. | Required | -`end_date_accuracy` | [TimeVerification](/spec-content/enumerated-types/TimeVerification.md) | A measure of how accurate the end Date Time is. | Required | -`beginning_accuracy` | [SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md) | Indicates how the beginning coordinate was defined. | Required | -`ending_accuracy` | [SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md) | Indicates how the ending coordinate was defined. | Required | -`road_names` | Array; [String] | 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). | Conditional: required if `road_name` is not provided. | This property captures the functionality of the deprecated `road_number` and `road_name` properties and conformance will be required in a future release. -`direction` | [Direction](/spec-content/enumerated-types/Direction.md) | The digitization direction of the road that is impacted by the event. This value is based on the standard naming for US roadways and indicates the direction of the traffic flow regardless of the real heading angle. | Required | Example `northbound` (for I-5 North) -`vehicle_impact` | [VehicleImpact](/spec-content/enumerated-types/VehicleImpact.md) | The impact to vehicular lanes along a single road in a single direction. | Required | -`relationship` | [Relationship](/spec-content/objects/Relationship.md) | Identifies both sequential and hierarchical relationships between the 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 | Optional | -`lanes` | Array; \[[Lane](/spec-content/objects/Lane.md)\] | A list of individual lanes within a road event (roadway segment) | Optional | -`beginning_cross_street` | String | Name or number of the nearest cross street along the roadway where the event begins. | Optional | -`ending_cross_street` | String | Name or number of the nearest cross street along the roadway where the event ends. | Optional | -`beginning_milepost` | Number | The linear distance measured against a milepost marker along a roadway where the event begins. | Optional | A milepost or mile marker is a surveyed distance posted along a roadway measuring the length (in miles or tenth of a mile) from the south west to the north east. These markers are typically notated on State and local government digital road networks. See also the `lrs_type` property on the [RoadEventDataSource](/spec-content/objects/RoadEventDataSource.md) object. -`ending_milepost` | Number | The linear distance measured against a milepost marker along a roadway where the event ends. | Optional | A milepost or mile marker is a surveyed distance posted along a roadway measuring the length (in miles or tenth of a mile) from the south west to the north east. These markers are typically notated on State and local government digital road networks. See also the `lrs_type` property on the [RoadEventDataSource](/spec-content/objects/RoadEventDataSource.md) object. -`event_status` | [EventStatus](/spec-content/enumerated-types/EventStatus.md) | The status of the event. | Optional | -`types_of_work` | Array; \[[TypeOfWork](/spec-content/objects/TypeOfWork.md)\] | A list of the types of work being done in a road event and an indiciation of if each type results in an architectural change to the roadway. | Optional | -`workers_present` | Boolean | A flag indicating that there are workers present in the event space. | Optional | -`reduced_speed_limit` | Integer | The reduced speed limit posted within the event space. | Optional | -`restrictions` | Array; \[[RoadRestriction](/spec-content/enumerated-types/RoadRestriction.md)\] | Zero or more road restrictions applying to the work zone road segment associated with the work zone. | Optional | These are included as flags rather than detailed restrictions. Detailed restrictions are coded to specific lanes. -`description` | String | Short free text description of work zone. | Optional | This will be populated with formal phrases in a later WZDx version -`creation_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the activity or event was created. | Optional | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z`. -`update_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the activity or event was updated. | Optional | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z`. -`road_event_id` (DEPRECATED) | String | *This property is deprecated; use the `id` property on the parent [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) object instead* — A unique identifier issued by the data feed provider to identify the road event activity. | Optional | This property will be removed in a future version of WZDx. -`road_number` (DEPRECATED) | String | *This property is deprecated and will be removed in a future version; include road numbers within the `road_names` array instead* — The road number designated by a jurisdiction such as a county, state, or interstate. | Optional | Examples I-5, VT 133. -`road_name` (DEPRECATED) | String | *This property is deprecated and will be removed in a future version; include road names within the `road_names` array instead* — Publicly known name of the road on which the event occurs. | Conditional: required if `road_names` property is not provided. | -`total_num_lanes` (DEPRECATED) | Integer | *This property is deprecated and will be removed in a future version* — The total number of lanes associated with the road segment designated by the event geometry. | Optional | A segment is a part of a roadway in a single direction designated the event geometry. - -## Used By -Property | Object ---- | --- -`properties` | [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) - -## Important Notes -The value of the `RoadEvent`'s `data_source_id` property MUST match the value of the `data_source_id` property of a [RoadEventDataSource](/spec-content/objects/RoadEventDataSource.md) that is included in the same WZDx GeoJSON document. diff --git a/spec-content/objects/RoadEventCoreDetails.md b/spec-content/objects/RoadEventCoreDetails.md new file mode 100644 index 00000000..9b9d1259 --- /dev/null +++ b/spec-content/objects/RoadEventCoreDetails.md @@ -0,0 +1,24 @@ +# RoadEventCoreDetails Object +The `RoadEventCoreDetails` object represents the core details of an event occurring on a roadway (i.e. a "road event") that is shared by all types of road events, such as work zones (see [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md)), detours (see [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md)), and road restrictions (see [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md)). The `RoadEventCoreDetails` cannot exist directly in a data feed and on its own does not represent a road event. It is used as the value of `core_details` property on every specific type of road event, each of which is represented by its own object. + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`event_type` | [EventType](/spec-content/enumerated-types/EventType.md) | The type/classification of road event. | Required | +`data_source_id` | String | Identifies the data source from which the road event originates. | Required | The value must match to the `data_source_id` property of a [FeedDataSource](/spec-content/objects/FeedDataSource.md) included within the same WZDx GeoJSON document. +`road_names` | Array; [String] | 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). | Required | +`direction` | [Direction](/spec-content/enumerated-types/Direction.md) | The digitization direction of the road that is impacted by the event. This value is based on the standard naming for US roadways and indicates the direction of the traffic flow regardless of the real heading angle. | Required | Example `northbound` (for I-5 North) +`relationship` | [Relationship](/spec-content/objects/Relationship.md) | Identifies both sequential and hierarchical relationships between the 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 | Optional | +`description` | String | Short free text description of road event. | Optional | +`creation_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the activity or event was created. | Optional | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z`. +`update_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the activity or event was updated. | Optional | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z`. + +## Used By +Property | Object +--- | --- +`core_details` | [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md) +`core_details` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) +`core_details` | [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md) + +## Important Notes +The value of the `RoadEventCoreDetails`'s `data_source_id` property MUST match the value of the `data_source_id` property of a [FeedDataSource](/spec-content/objects/FeedDataSource.md) that is included in the same WZDx GeoJSON document. diff --git a/spec-content/objects/RoadEventDataSource.md b/spec-content/objects/RoadEventDataSource.md deleted file mode 100644 index 81ad0493..00000000 --- a/spec-content/objects/RoadEventDataSource.md +++ /dev/null @@ -1,24 +0,0 @@ -# RoadEventDataSource Object -The `RoadEventDataSource` object describes information about a specific data source used to build a work zone data feed. A WZDx feed must contain at least one `RoadEventDataSource`, included as an entry in the `data_sources` array of the `RoadEventFeedInfo` object. - -## Properties -Name | Type | Description | Conformance | Notes ---- | --- | --- | --- | --- -`data_source_id` | String | Unique identifier for the data source organization providing work zone data. | Required | Linked to a [RoadEvent](/spec-content/objects/RoadEvent.md) by the `RoadEvent`'s `data_source_id` property. -`organization_name` | String | The name of the organization for the authoritative source of the work zone data. | Required | Example: County DOT -`location_method` | [LocationMethod](/spec-content/enumerated-types/LocationMethod.md) | The typical method used to locate the beginning and end of a work zone impact area. | Required | -`update_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC date and time when the data source was last updated. | Optional | All date-time formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z` -`update_frequency` | Integer | The frequency in seconds at which the data source is updated. | Optional | -`contact_name` | String | The name of the individual or group responsible for the work zone data source. | Optional | Example: `Jo Help` -`contact_email` | String; [email](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.2) | The email address of the individual or group responsible for the data source. | Optional | -`location_verify_method` | String | The method used to verify the accuracy of the location information. | Optional | Example: `Survey accurate GPS equipment accurate to 0.1 cm` -`lrs_type` | String | Describes the type of linear referencing system (LRS) used for the milepost measurements. | Optional | Example: `Use of milemarkers posted by the roadways. These are registered to a dynamic segmentation of statewide LRS basemap.` -`lrs_url` | String; [uri](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.5) | A URL where additional information on the LRS information and transformation information is stored. | Optional | Example `https://aaa.bbb.com/lrs` - -## Used By -Property | Object ---- | --- -`data_sources` | [RoadEventFeedInfo](/spec-content/objects/RoadEventFeedInfo.md) - -## Additional Notes -The value of a `RoadEventDataSource`'s `data_source_id` property should match the value of the `data_source_id` property of at least one [RoadEvent](/spec-content/objects/RoadEvent.md) that is included within the same WZDx GeoJSON document. diff --git a/spec-content/objects/RoadEventFeature.md b/spec-content/objects/RoadEventFeature.md index 27eaa543..d024296e 100644 --- a/spec-content/objects/RoadEventFeature.md +++ b/spec-content/objects/RoadEventFeature.md @@ -1,16 +1,17 @@ # RoadEventFeature Object (GeoJSON Feature) -The `RoadEventFeature` object is the container object for a WZDx [RoadEvent](/spec-content/objects/RoadEvent.md). The `RoadEventFeature` object is an instance of a [GeoJSON Feature](https://tools.ietf.org/html/rfc7946#section-3.2). +The `RoadEventFeature` object is the container object for a WZDx road event ([WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md), [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md), or [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md). The `RoadEventFeature` object is an instance of a [GeoJSON Feature](https://tools.ietf.org/html/rfc7946#section-3.2). ## Properties Name | Type | Description | Conformance | Notes --- | --- | --- | --- | --- -`id` | String | A unique identifier issued by the data feed provider to identify the WZDx road event. | Conditional; Required if road event's ID is not provided via the `road_event_id` property on the road event (detailed in the `properties` property). | In prior versions of WZDx, the road event ID was given by a `road_event_id` property on the [RoadEvent](/spec-content/objects/RoadEvent.md) object. Now, `road_event_id` is deprecated and this `id` should be used instead. This property will be required in a future version of WZDx. This is a GeoJSON property. +`id` | String | A unique identifier issued by the data feed provider to identify the WZDx road event. | Required | This is a GeoJSON property. `type` | String; `"Feature"` | The GeoJSON object type. This MUST be the string `Feature`. | Required | This is a GeoJSON property. -`properties` | [RoadEvent](/spec-content/objects/RoadEvent.md) | The specific details of road event. | Required | This is a GeoJSON property. +`properties` | One of: [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md), [DetourRoadEvent](/spec-content/objects/DetourRoadEvent.md), [RestrictionRoadEvent](/spec-content/objects/RestrictionRoadEvent.md) | The specific details of the road event. | Required | This is a GeoJSON property. `geometry` | GeoJSON [Geometry](https://tools.ietf.org/html/rfc7946#section-3.1) object with `type` of [LineString](https://tools.ietf.org/html/rfc7946#section-3.1.4) or [MultiPoint](https://tools.ietf.org/html/rfc7946#section-3.1.3) | The geometry of the road event. The Geometry object's `type` property MUST be [LineString](https://tools.ietf.org/html/rfc7946#section-3.1.4) or [MultiPoint](https://tools.ietf.org/html/rfc7946#section-3.1.3). `LineString` allows specifying the entire road event path and should be preferred. `MultiPoint` should be used when only the start and end coordinates are known. | Required | This is a GeoJSON property. -`bbox` | GeoJSON [Bounding Box](https://tools.ietf.org/html/rfc7946#section-5) | Information on the coordinate range for this RoadEventFeature. Must be an array of length 2*n where n is the number of dimensions represented in the `geometry` property, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of the `geometry`. | Optional | This is a GeoJSON property. +`bbox` | GeoJSON [Bounding Box](https://tools.ietf.org/html/rfc7946#section-5) | Information on the coordinate range for this RoadEventFeature. Must be an array of length `2n` where `n` is the number of dimensions represented in the `geometry` property, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of the `geometry`. | Optional | This is a GeoJSON property. ## Used By Property | Object --- | --- `features` | [WZDx Feed](/spec-content/objects/WZDxFeed.md) +`features` | [RoadRestrictionFeed](/spec-content/objects/RoadRestrictionFeed.md) diff --git a/spec-content/objects/RoadRestrictionFeed.md b/spec-content/objects/RoadRestrictionFeed.md new file mode 100644 index 00000000..c5d7e1b8 --- /dev/null +++ b/spec-content/objects/RoadRestrictionFeed.md @@ -0,0 +1,15 @@ +# RoadRestrictionFeed Object (GeoJSON FeatureCollection) +The `RoadRestrictionFeed` object is the root (highest level) object of a WZDx road restriction feed. There is one `RoadRestrictionFeed` object per road restriction feed GeoJSON document. The `RoadRestrictionFeed` is a [GeoJSON FeatureCollection](https://tools.ietf.org/html/rfc7946#section-3.3). + +The `RoadRestrictionFeed` contains 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. + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`feed_info` | [FeedInfo](/spec-content/objects/FeedInfo.md) | Information about the WZDx road restriction feed. | Required | This is a WZDx-specific [foreign member](https://tools.ietf.org/html/rfc7946#section-6.1) and is not part of the GeoJSON specification. +`type` | String; `"FeatureCollection"` | The GeoJSON object type. For WZDx, this must be the string `FeatureCollection`. | Required | This is a GeoJSON property. +`features` | Array; \[[RoadEventFeature](/spec-content/objects/RoadEventFeature.md)\] | An array of GeoJSON [Feature](https://tools.ietf.org/html/rfc7946#section-3.2) objects which represent WZDx road events. | Required | +`bbox` | GeoJSON [Bounding Box](https://tools.ietf.org/html/rfc7946#section-5) | Information on the coordinate range for all RoadEventFeatures in the WZDx feed. Must be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. | Optional | This is a GeoJSON property. + +## Used By +Road Restriction GeoJSON document (one `RoadRestrictionFeed` object per file). diff --git a/spec-content/objects/SwzDeviceFeed.md b/spec-content/objects/SwzDeviceFeed.md new file mode 100644 index 00000000..f62618c6 --- /dev/null +++ b/spec-content/objects/SwzDeviceFeed.md @@ -0,0 +1,15 @@ +# SwzDeviceFeed Object (GeoJSON FeatureCollection) +The `SwzDeviceFeed` object is the root (highest level) object of a smart work zone device feed. There is one `SwzDeviceFeed` object per feed GeoJSON document. The `SwzDeviceFeed` is a [GeoJSON FeatureCollection](https://tools.ietf.org/html/rfc7946#section-3.3) object. + +The `SwzDeviceFeed` contains information (location, status, live data) about field devices deployed on the roadway in work zones. + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`feed_info` | [FeedInfo](/spec-content/objects/FeedInfo.md) | Information about the data feed. | Required | This is a WZDx-specific [foreign member](https://tools.ietf.org/html/rfc7946#section-6.1) and is not part of the GeoJSON specification. +`type` | String; `"FeatureCollection"` | The GeoJSON object type. For WZDx, this must be the string `FeatureCollection`. | Required | This is a GeoJSON property. +`features` | Array; \[[FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md)\] | An array of GeoJSON [Feature](https://tools.ietf.org/html/rfc7946#section-3.2) objects which each represent a field device deployed in a smart work zone. | Required | This is a GeoJSON property. +`bbox` | GeoJSON [Bounding Box](https://tools.ietf.org/html/rfc7946#section-5) | Information on the coordinate range for all `FieldDeviceFeature`s in the feed. The value must be an array of length `2n` where `n` is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a `bbox` follows the axes order of geometries. | Optional | This is a GeoJSON property. + +## Used By +SwzDeviceFeed GeoJSON document (one `SwzDeviceFeed` object per file). diff --git a/spec-content/objects/TrafficSensor.md b/spec-content/objects/TrafficSensor.md new file mode 100644 index 00000000..f20e3a60 --- /dev/null +++ b/spec-content/objects/TrafficSensor.md @@ -0,0 +1,20 @@ +# TrafficSensor Object +The `TrafficSensor` object describes a traffic sensor deployed on a roadway which captures traffic metrics (e.g. speed, volume, occupancy) over a collection interval. The `TrafficSensor` can describe lane-level traffic data if available and if associated with a road event (e.g. [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md)). + +The `TrafficSensor` is a type of field device; it has a `core_details` property which contains the [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) and exists within a [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md). + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`core_details` | [FieldDeviceCoreDetails](/spec-content/objects/FieldDeviceCoreDetails.md) | The core details of the field device shared by all field devices types, not specific to traffic sensors. | Required | This property appears on all field devices. +`collection_interval_start_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC date and time where the `TrafficSensor` data began being collected at. The averages and totals contained in the `TrafficSensor` data apply to the inclusive interval of `collection_interval_start_date` to `collection_interval_end_date`. | Required | +`collection_interval_end_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC date and time where the `TrafficSensor` collection interval 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`. | Required | +`average_speed_kph` | Integer (>= 0) | The average speed of vehicles across all lanes over the collection interval in kilometers per hour. | Optional | +`volume_vph` | Integer (>= 0) | The rate of vehicles passing by the sensor during the collection interval in vehicles per hour. | Optional | +`occupancy_percent` | Integer (>= 0) | The percent of time the roadway section monitored by the sensor was occupied by a vehicle over the collection interval. | Optional | +`lane_data` | Array; [[TrafficSensorLaneData](/spec-content/objects/TrafficSensorLaneData.md)] | A list of objects each describing traffic data for a specific lane—each pointing to a road event lane and indiciating the metrics of that lane. | Optional | Lane-level data can only be provided if the data producer has knowledge of the road event to assign the traffic sensor lane data to. + +## Used By +Property | Object +--- | --- +`properties` | [FieldDeviceFeature](/spec-content/objects/FieldDeviceFeature.md) diff --git a/spec-content/objects/TrafficSensorLaneData.md b/spec-content/objects/TrafficSensorLaneData.md new file mode 100644 index 00000000..58a4942e --- /dev/null +++ b/spec-content/objects/TrafficSensorLaneData.md @@ -0,0 +1,18 @@ +# TrafficSensorLaneData Object +The `TrafficSensorLaneData` object describes 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. + +Note this structure allows a single [TrafficSensor](/spec-content/objects/TrafficSensor.md) to provide data across lanes on multiple road events. It does not allow for lane data to be provided when a road event is not known. + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`road_event_id` | String | The ID of a [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) which the measured lane occurs in. | Required | +`lane_order` | Positive Integer | The lane's position in sequence within the road event (specified by `road_event_id`). The value of this property corresponds to the associated road event's [Lane](/spec-content/objects/Lane.md)'s `order` property. | Required | +`average_speed_kph` | Integer (>= 0) | The average speed of traffic in the lane over the collection interval (in kilometers per hour). | Optional | +`volume_vph` | Integer (>= 0) | The rate of vehicles passing by the sensor in the lane during the collection interval (in vehicles per hour). | Optional | +`occupancy_percent` | Integer (>= 0) | The percent of time the lane monitored by the sensor was occupied by a vehicle over the collection interval. | Optional | + +## Used By +Property | Object +--- | --- +`lane_data` | [TrafficSensor](/spec-content/objects/TrafficSensor.md) \ No newline at end of file diff --git a/spec-content/objects/TypeOfWork.md b/spec-content/objects/TypeOfWork.md index e3aa0e85..0e795aa6 100644 --- a/spec-content/objects/TypeOfWork.md +++ b/spec-content/objects/TypeOfWork.md @@ -10,4 +10,4 @@ Property Name | Data Type | Description | Conformance | Notes ## Used By Property | Object --- | --- -`types_of_work` | [RoadEvent](/spec-content/objects/RoadEvent.md) \ No newline at end of file +`types_of_work` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md) diff --git a/spec-content/objects/WZDxFeed.md b/spec-content/objects/WZDxFeed.md index c69e2f99..7b06cb37 100644 --- a/spec-content/objects/WZDxFeed.md +++ b/spec-content/objects/WZDxFeed.md @@ -1,13 +1,15 @@ # WZDxFeed Object (GeoJSON FeatureCollection) The `WZDxFeed` object is the root (highest level) object of a WZDx feed. There is one WZDx feed object per WZDx GeoJSON document. The `WZDxFeed` is an instance of a [GeoJSON FeatureCollection](https://tools.ietf.org/html/rfc7946#section-3.3) object. +The `WZDxFeed` contains high-level information about events ocurring 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. + ## Properties Name | Type | Description | Conformance | Notes --- | --- | --- | --- | --- -`road_event_feed_info` | [RoadEventFeedInfo](/spec-content/objects/RoadEventFeedInfo.md) | Information about the WZDx feed. | Required | This is a WZDx-specific [foreign member](https://tools.ietf.org/html/rfc7946#section-6.1) and is not part of the GeoJSON specification. +`road_event_feed_info` | [FeedInfo](/spec-content/objects/FeedInfo.md) | Information about the WZDx feed. | Required | This is a WZDx-specific [foreign member](https://tools.ietf.org/html/rfc7946#section-6.1) and is not part of the GeoJSON specification. `type` | String; `"FeatureCollection"` | The GeoJSON object type. For WZDx, this must be the string `FeatureCollection`. | Required | This is a GeoJSON property. `features` | Array; \[[RoadEventFeature](/spec-content/objects/RoadEventFeature.md)\] | An array of GeoJSON [Feature](https://tools.ietf.org/html/rfc7946#section-3.2) objects which represent WZDx road events. | Required | -`bbox` | GeoJSON [Bounding Box](https://tools.ietf.org/html/rfc7946#section-5) | Information on the coordinate range for all RoadEventFeatures in the WZDx feed. Must be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. | Optional | This is a GeoJSON property. +`bbox` | GeoJSON [Bounding Box](https://tools.ietf.org/html/rfc7946#section-5) | Information on the coordinate range for all RoadEventFeatures in the WZDx feed. Must be an array of length `2n` where `n` is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. | Optional | This is a GeoJSON property. ## Used By WZDx GeoJSON document (one `WZDxFeed` object per file). diff --git a/spec-content/objects/WorkZoneRoadEvent.md b/spec-content/objects/WorkZoneRoadEvent.md new file mode 100644 index 00000000..6584765d --- /dev/null +++ b/spec-content/objects/WorkZoneRoadEvent.md @@ -0,0 +1,32 @@ +# WorkZoneRoadEvent Object +The `WorkZoneRoadEvent` object describes a work zone road event including where, when, and what activities are taking place within a work zone on a roadway. A full "work zone" is represented by one or more `WorkZoneRoadEvent`s. + +The `WorkZoneRoadEvent` is a type of road event; it has a `core_details` property which contains the [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) and exists within a [RoadEventFeature](/spec-content/objects/RoadEventFeature.md). + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`core_details` | [RoadEventCoreDetails](/spec-content/objects/RoadEventCoreDetails.md) | The core details of the road event that are shared by all types of road events, not specific to work zones. | Required | +`start_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the event begins. | Required | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z`. +`end_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC time and date when the event ends. | Required | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Example: `2016-11-03T19:37:00Z`. +`start_date_accuracy` | [TimeVerification](/spec-content/enumerated-types/TimeVerification.md) | A measure of how accurate the start date-time is. | Required | +`end_date_accuracy` | [TimeVerification](/spec-content/enumerated-types/TimeVerification.md) | A measure of how accurate the end date-time is. | Required | +`beginning_accuracy` | [SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md) | Indicates how the beginning coordinate was defined. | Required | +`ending_accuracy` | [SpatialVerification](/spec-content/enumerated-types/SpatialVerification.md) | Indicates how the ending coordinate was defined. | Required | +`location_method` | [LocationMethod](/spec-content/enumerated-types/LocationMethod.md) | The typical method used to locate the beginning and end of a work zone impact area. | Required | +`vehicle_impact` | [VehicleImpact](/spec-content/enumerated-types/VehicleImpact.md) | The impact to vehicular lanes along a single road in a single direction. | Required | +`lanes` | Array; \[[Lane](/spec-content/objects/Lane.md)\] | A list of individual lanes within a road event (roadway segment). | Optional | +`beginning_cross_street` | String | Name or number of the nearest cross street along the roadway where the event begins. | Optional | +`ending_cross_street` | String | Name or number of the nearest cross street along the roadway where the event ends. | Optional | +`beginning_milepost` | Number | The linear distance measured against a milepost marker along a roadway where the event begins. | Optional | A milepost or mile marker is a surveyed distance posted along a roadway measuring the length (in miles or tenth of a mile) from the south west to the north east. These markers are typically notated on State and local government digital road networks. +`ending_milepost` | Number | The linear distance measured against a milepost marker along a roadway where the event ends. | Optional | A milepost or mile marker is a surveyed distance posted along a roadway measuring the length (in miles or tenth of a mile) from the south west to the north east. These markers are typically notated on State and local government digital road networks. +`event_status` | [EventStatus](/spec-content/enumerated-types/EventStatus.md) | The status of the event. | Optional | +`types_of_work` | Array; \[[TypeOfWork](/spec-content/objects/TypeOfWork.md)\] | A list of the types of work being done in a road event and an indiciation of if each type results in an architectural change to the roadway. | Optional | +`worker_presence` | [WorkerPresence](/spec-content/objects/WorkerPresence.md) | Information about whether workers are present in the road event area. | Optional | +`reduced_speed_limit_kph` | Number | The reduced speed limit posted within the road event, in kilometers per hour. This property only needs to be supplied if the speed limit within the road event is lower than the posted speed limit of the roadway. | Optional | +`restrictions` | Array; [[Restriction](/spec-content/objects/Restriction.md)] | A list of zero or more road restrictions that apply to the roadway segment described by this road event. | Optional | Restrictions can also be provided on an individual lane. + +## Used By +Property | Object +--- | --- +`properties` | [RoadEventFeature](/spec-content/objects/RoadEventFeature.md) \ No newline at end of file diff --git a/spec-content/objects/WorkerPresence.md b/spec-content/objects/WorkerPresence.md new file mode 100644 index 00000000..06dfa791 --- /dev/null +++ b/spec-content/objects/WorkerPresence.md @@ -0,0 +1,16 @@ +# WorkerPresence Object +The `WorkerPresence` object contains information on the presence of workers in the [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md)'s area. + +## Properties +Name | Type | Description | Conformance | Notes +--- | --- | --- | --- | --- +`are_workers_present` | Boolean | Whether workers are present in the work zone event area. This value should be set in accordance with the definition provided in the `definition` property if it is provided. | Required | +`definition` | Array; \[[WorkerPresenceDefinition](/spec-content/enumerated-types/WorkerPresenceDefinition.md)\] | A list of situations in which workers are considered to be present in the jurisdiction of the data provider. | Optional +`method` | [WorkerPresenceMethod](/spec-content/enumerated-types/WorkerPresenceMethod.md) | Describes the method for how worker presence in a work zone event area is determined. | Optional | +`worker_presence_last_confirmed_date` | String; [date-time](https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7.3.1) | The UTC date and time at which the presence of workers was last confirmed. | Optional | All datetime formats shall follow [RFC 3339 Section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). +`confidence` | [WorkerPresenceConfidence](/spec-content/enumerated-types/WorkerPresenceConfidence.md) | The data producer’s confidence in the value of `are_workers_present`. | Optional | + +## Used By +Property | Object +--- | --- +`worker_presence` | [WorkZoneRoadEvent](/spec-content/objects/WorkZoneRoadEvent.md)