usdot-jpo-ode / wzdx

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.
Creative Commons Zero v1.0 Universal
92 stars 62 forks source link

4.1 update add road incident feed #318

Closed DeraldDudley closed 2 years ago

DeraldDudley commented 2 years ago

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:

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"]}

mark-mockett commented 2 years ago

@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.

DeraldDudley commented 2 years ago

@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.

j-d-b commented 2 years ago

The Road Incident Feed has moved to TDx