Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4.1 update add road incident feed #318

Conversation

DeraldDudley
Copy link
Collaborator

@DeraldDudley DeraldDudley commented May 31, 2022

Summary

Add an Incident Road Feed

Motivation

Adding an incident Road Feed enables publishers to inform drivers about events that close or restricts the use of road segments. This is valuable because it reduces driver uncertainty and increases the probability of driver success. It also fulfills use cases identified by WZDx working group members and state transportation officials. These use cases include informing citizens about road closures after a hurricane and informing transportation management centers about road status during emergencies.

Adding incidents will bolster the specifications usefulness. A more useful specification is more likely to be implemented. More implementations inform more drivers about hazards to navigation. Better informed drivers avoid hazards resulting in safer, cleaner, and more efficient transportation.

IncidentRoadEvents vs WorkZoneRoadEvents

IncidentRoadEvents are very similar to WorkZoneRoadEvent. They are different in the following ways:

  • The property type_of_work is dropped from the IncidentRoadEvent object.
  • The property end_date is optional in IncidentRoadEvent object.
  • The property type_of_incident is created for the IncidentRoadEvent object. Incident types are described using incident enumerations.

Changes

RoadIncidentFeed Object (GeoJSON FeatureCollection)

The RoadIncidentFeed object is the root (highest level) object of a WZDx road incident feed. There is one RoadIncidentFeed object per road incident feed GeoJSON document. The RoadIncidentFeed is a GeoJSON FeatureCollection.

The RoadIncidentFeed informs drivers about the location of roadway incidents. Incident types are described by type_of_incident enumerations.

Properties

Name Type Description Conformance Notes
feed_info FeedInfo Information about the WZDx road restriction feed. Required This is a WZDx-specific foreign member 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] An array of GeoJSON Feature objects which represent WZDx road events. Required
bbox GeoJSON Bounding Box 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 RoadIncidentFeed object per file).

RoadEventFeature Object (GeoJSON Feature)

The RoadEventFeature object is the container object for a WZDx road event (WorkZoneRoadEvent, DetourRoadEvent, RestrictionRoadEvent, RestrictionRoadEvent). The RoadEventFeature object is an instance of a GeoJSON Feature.

Properties

Name Type Description Conformance Notes
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 One of: WorkZoneRoadEvent, DetourRoadEvent, RestrictionRoadEvent, IncidentRoadEvent The specific details of the incident. Required This is a GeoJSON property.
geometry GeoJSON Geometry object with type of LineString or MultiPoint The geometry of the road event. The Geometry object's type property MUST be LineString or MultiPoint. 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 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
features RoadRestrictionFeed
features RoadIncidentFeed

IncidentRoadEvent Object

The IncidentRoadEvent object locates and describes incidents or events that close or restrict the use of a road segment.

The IncidentRoadEvent is a type of road event; it has a core_details property which contains the RoadEventCoreDetails and exists within a RoadEventFeature.

Properties

Name Type Description Conformance Notes
core_details RoadEventCoreDetails The core details of the road event that are shared by all types of road events, not specific to work zones. Required
types_of_incident Array; TypeOfIncident A list of one or more incident types describing the cause of closure or restriction. Required Incident types are described using incident enumerations.
start_date String; date-time The UTC time and date when the event begins. Required All datetime formats shall follow RFC 3339 Section 5.6. Example: 2016-11-03T19:37:00Z.
end_date String; date-time The UTC time and date when the event ends. Optional All datetime formats shall follow RFC 3339 Section 5.6. Example: 2016-11-03T19:37:00Z.
is_start_date_verified Boolean Indicates if the detour has been confirmed to have started, such as from a person or device in the field or a report from a traffic management center. Required
is_end_date_verified Boolean Indicates if the detour has been confirmed to have ended, such as from a person or device in the field or a report from a traffic management center. Optional
is_start_position_verified Boolean Indicates if the start position (first geometric coordinate pair) is based on actual reported data from a GPS-equipped device that measured the location of the start of the work zone. Required
is_end_position_verified Boolean Indicates if the end position (last geometric coordinate pair) is based on actual reported data from a GPS-equipped device that measured the location of the end of the work zone. Required
location_method LocationMethod The typical method used to locate the beginning and end of a work zone impact area. Required
vehicle_impact VehicleImpact The impact to vehicular lanes along a single road in a single direction. Required
lanes Array; [Lane] 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.
worker_presence WorkerPresence 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] 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

TypeOfIncident Object

The TypeOfIncident object describes an event that causees disruptions to expected operations.

Properties

Property Name Data Type Description Conformance Notes
incident_type IncidentType The type incedent causing disruptions. Required Populated using an IncidentType enumeration.

Used By

Property Object
incident_types IncidentRoadEvent

IncidentType Enumerated Type

Descriptions of the incidents causing disruptions to expected operations.

Values

Category Incident Description
Crash Crash A crash interrupts normal operations.
Crash Injury A crash involving and injury interrupts normal operations.
Crash Investigation A crash investigation interrupts normal operations.
Crash Incident An non-crash incident interrupts normal operations.
Crash Spill A spill interrupts normal operations.
Winds Strong Strong winds interrupt normal operations. (windspeed: 25-38 mph / 39-61 km/h)
Winds Gale Force Gale force winds interrupt normal operations. (windspeed: 39-54 mph / 62-88 km/h)
Winds Tropical Storm Force Storm force winds or a tropical storm interrupts normal operations. (windspeed: 55-72 mph / 89-117 km/h)
Winds Hurricane Force Hurricane force winds or a hurricane interrupts normal operations. (windspeed: >73 mph / >117 km/h)
Winds Tornado A tornado interrupts normal operations.
Winds Crosswinds Crosswinds interrupt normal operations.
Winds Gusts Winds Gusty winds interrupt normal operations.
Disaster Crash Air An air crash interrupts normal operations.
Disaster Crash Rail A rail crash interrupts normal operations.
Disaster Explosion An explosion interrupts normal operations.
Disaster Fire A serious fire interrupts normal operations.
Disaster Fire Building fire A building fire interrupts normal operations.
Disaster Fire Brush A brush fire interrupts normal operations.
Disaster Fire Forest A forest fire has interrupts normal operations.
Disaster Fire Grass A grass fire interrupts normal operations.
Disaster Fire Wild A wild fire interrupts normal operations.
Disaster Fire Hazardous Materials materials fire A major hazardous materials fire interrupts normal operations.
Disaster Flood Flash A flash flood interrupts normal operations.
Disaster Flood Major A major flood interrupts normal operations.
Disaster Flood Reservoir Failure A reservoir failure interrupts normal operations.
Disaster Flood Levee Failure A levee failure interrupts normal operations.
Disaster Flow Avalanche/Mud/Material A levee failure interrupts normal operations.
Disaster Radiation Release/Leak A radioactive release interrupts normal operations.
Disaster Radiation Hazard A radiation hazard interrupts normal operations.
Disaster Seismic Earthquake Damage Earthquake damage interrupts normal operations.
Disaster Seismic Tsunami/Tidal Wave A tsunami interrupts normal operations.
Disaster Toxin Release/Leak A toxic release has interrupts normal operations.
Disaster Volcanic Ash Fall Ash fall interrupts normal operations.
Disaster Volcanic Lava Flow A lava flow interrupts normal operations.
Disaster Volcanic Eruption A volcanic eruption interrupts normal operations.
Special Event Major A major event interrupts normal operations.
Special Event Airshow An airshow interrupts normal operations.
Special Event Hot Air Ballooning Hot air ballooning interrupts normal operations.
Special Event Concert A concert interrupts normal operations.
Special Event State Occasion A state occasion interrupts normal operations.
Special Event VIP Visit A VIP visit interrupts normal operations.
Special Event Show A show interrupts normal operations.
Special Event Festival A festival interrupts normal operations.
Special Event Exhibition A exhibition interrupts normal operations.
Special Event Performing Arts A performing arts event interrupts normal operations.
Special Event Outdoor Market An outdoor market is interrupting normal operations.
Special Event Fair A fair interrupts normal operations.
Special Event Carnival A carnival interrupts normal operations.
Special Event Fireworks Display A fireworks display interrupts normal operations.
Special Event Trade Expo A trade expo interrupts normal operations.
Special Event Movie Filming Movie filming interrupts normal operations.
Special Event Parade A parade interrupts normal operations.
Special Event Procession A procession interrupts normal operations.
Special Event Crowd A crowd interrupts normal operations.
Special Event Road Race A crowd interrupts normal operations.
Special Event Running Race A crowd interrupts normal operations.

Used By

Property Object
incident_type TypeOfIncident

Added RoadIncidentFeed.json to Schemas

RoadIncidentFeed.json

{
"$id": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.1/RoadIncidentFeed.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "WZDx v4.1 RoadIncidentFeed",
"description": "The GeoJSON output of a Road Incident Feed data feed (v4.0)",
"type": "object",
"properties": {
"road_event_feed_info": {
"$ref": "https://raw.githubusercontent.com/usdot-jpo-ode/wzdx/main/schemas/4.1/FeedInfo.json"
},
"type": {
"description": "The GeoJSON type",
"enum": ["FeatureCollection"]
},
"features": {
"description": "An array of GeoJSON Feature objects which represent Incident road events",
"type": "array",
"items": {
"allOf": [
{
"properties": {
"properties": {
"properties": {
"core_details": {
"properties": {
"event_type": {
"enum": ["incident", "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"]}

mollybehan and others added 8 commits March 25, 2022 08:39
* Update Creating_a_WZDx_Feed.md

Added a section with data security details.

* Update Creating_a_WZDx_Feed.md

* Update Creating_a_WZDx_Feed.md

* Update Creating_a_WZDx_Feed.md

Co-authored-by: Nate Deshmukh Towery <45435037+natedeshmukhtowery@users.noreply.github.com>
* Fix recurring event example feed

* Change dates in recurrent event example feed for clarity
@DeraldDudley DeraldDudley changed the base branch from main to release/v4.1 May 31, 2022 21:35
@mark-mockett
Copy link
Collaborator

@DeraldDudley I'm not sure about splitting the components of the IncidentFeed between multiple PRs from an implementation point. If you do keep them separate, you should merge the commits from this branch into those so that the IncidentType enumerations are shown in context.

Also, for completeness this PR should add a new schema file for the IncidentFeed and add the IncidentRoadEvent to the RoadEventFeature schema. Let me know if you want any help making these changes - happy to assist as needed.

@mark-mockett mark-mockett added the Specification Extension This issue/PR is related to the Specification Extension Subgroup label Jun 3, 2022
@mark-mockett mark-mockett added this to the v4.1 milestone Jun 3, 2022
@DeraldDudley
Copy link
Collaborator Author

@DeraldDudley I'm not sure about splitting the components of the IncidentFeed between multiple PRs from an implementation point. If you do keep them separate, you should merge the commits from this branch into those so that the IncidentType enumerations are shown in context.

Also, for completeness this PR should add a new schema file for the IncidentFeed and add the IncidentRoadEvent to the RoadEventFeature schema. Let me know if you want any help making these changes - happy to assist as needed.

Happy to merge the incident type enumerations into this PR if it makes it easier. Didn't want the incidents feed to get rejected because people disagreed with some of the enumeration values.

Comment on lines 14 to 15
## Used By
Road Restriction GeoJSON document (one `RoadIncidentFeed` object per file).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this needs to be updated to Road Incident GeoJSON document

# RoadIncidentFeed Object (GeoJSON FeatureCollection)
The `RoadIncidentFeed` object is the root (highest level) object of a WZDx road incident feed. There is one `RoadIncidentFeed` object per road incident feed GeoJSON document. The `RoadIncidentFeed` is a [GeoJSON FeatureCollection](https://tools.ietf.org/html/rfc7946#section-3.3).

The `RoadIncidentFeed` informs drivers about the location of roadway incidents. Incident types are described by [`type_of_incident`](/spec-content/enumerated-types/event_enumerations.md) enumerations.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have a preference on whether to keep the enumerations separate in the PRs (#319 and #320) but think a placeholder for the actual enumerations should be added. You refer to it here as event_enumerations.md but just need to add it to the enumerated-type folder.

Also, for PR #319 and #320 you use a different name for the file with the enumerations. My assumptions is they should all be in a single file as described above if it is being used by the same field.

`end_date_accuracy` | [TimeVerification](/spec-content/enumerated-types/TimeVerification.md) | A measure of how accurate the end date-time is. | Optional|
`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 |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure location_method is necessary since this is very work zone specific. If you do think it is important to include then we may need to generalize the descriptions that are appropriate.

Comment on lines 15 to 16
`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 |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since incidents are most likely going to be unplanned events, is the beginning and ending accuracy needed? We modified the description in I think v4.0 that verified needs to be based on a GPS equipped device which is more applicable for work zones. Not saying it can't be used but just wanted to ask the question.

`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 |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The event_status is very work zone focused and not sure it is applicable for incidents. Its not approved but there is also PR #294 that is planning on deprecating event_status

`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 |
`worker_presence` | [WorkerPresence](/spec-content/objects/WorkerPresence.md) | Information about whether workers are present in the road event area. | Optional |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right now the worker_presence is very work zone specific. I assume you are trying to indicate whether someone is responding or on site of the incident which I think is valuable but we either need to modify the description of the WorkerPresence object or use another field.

@j-d-b
Copy link
Collaborator

j-d-b commented Sep 23, 2022

The Road Incident Feed has moved to TDx

@j-d-b j-d-b closed this Sep 23, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Specification Extension This issue/PR is related to the Specification Extension Subgroup
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants