Traffic Density
Purpose
The Traffic Density service gives insight to the amount of data available for an area. This service is **
asynchronous**. There are two endpoints consuming two types of requests. The first one is only for
ordering jobs with POST requests. In its response the user receives a jobId
, which should be used in
the second endpoint with a GET request to the check job's status. When the job is successfully finished, the
user via the response will receive links to download results.
Using this service
There are some important notes about using this service:
- The latitude and longitude coordinates are in EPSG4326 / WGS84 format for both input and output. Other coordinate systems are not supported.
- The current API version is 1.
- The maximum length of date range is 366 days.
- The maximum number of time sets is 24.
- Network size, calculated as size of bounding box of defined geometry, cannot be greater than 20 000 km².
- As the service is asynchronous it can take a while before results are available, depending on how busy the service is. Do not repost your request multiple times if you do not get feedback within seconds, we will ensure that the results are delivered.
- At the same time you can have only 5 jobs in CALCULATIONS and SCHEDULED statuses per each developer key. When you reach this limit you can still create new jobs as they will be queued until at least one of currently running jobs is done.
Request data
HTTPS method: POST
Constants and parameters enclosed in curly brackets { } must be replaced with their values.
URL format
https://{baseURL}/traffic/trafficstats/trafficdensity/{versionNumber}?key={Your_API_Key}
Required headers
Header | Value |
---|---|
|
Request parameters
The following table describes all of the parameters that can be used in a request. Required parameters _ must_ be used or the call will fail. Optional parameters may be used.
Required parameters | Description |
---|---|
| Base URL for calling the API. |
| Service version number. |
| Authorization key for access to the API. |
POST body request parameters
The following JSON parameters refer to the POST request body.
Required parameters | Description |
---|---|
| Job name. Given for the user's convenience. |
| Base unit used for distance and speed. |
| Network for calculations. See the Structure of network section. |
| Range of dates for calculations. See the Structure of dateRange section. |
| Time sets for calculations. See the Structure of timeSets section. |
Optional parameters | Description |
---|---|
| What map should be used. A list of currently available maps in all
Traffic Stats API services can be checked at Available Maps. |
| Defines whether the job should be accepted manually or automatically. |
| If the average sample size for any combination of network, date range,
and time set will be lower than the given value, then the output will
not be generated and the job will be moved into the REJECTED
state and user will not be charged for such report. If not specified the
output will be always generated no matter how many samples were
available. |
Structure of network
Required parameters | Description |
---|---|
| Name of the network. |
| In which time zone all times are given. |
| Functional road classes. |
| Geometry of the network in GeoJSON format. Supported geometry types are
Polygon and MultiPolygon. See RFC 7946. |
Optional parameters | Description |
---|---|
| Determines from what devices data will be used.
|
| Bounding box of the network. Mutually exclusive with
|
Structure of dateRange
Parameter | Description |
---|---|
| Date range name. Given for the user's convenience. |
| The date from (inclusive). |
| The date to (inclusive). |
| List of days excluded from date range. |
| List of days of the week to be excluded.
|
Structure of timeSets
Required parameters | Description |
---|---|
| Time set name. |
| Time groups in the time set.
|
POST body request example - JSON
1{2 "jobName": "Test job",3 "distanceUnit": "KILOMETERS",4 "mapVersion": "2021.12",5 "acceptMode": "AUTO",6 "network": {7 "name": "test",8 "geometry": {9 "type": "MultiPolygon",10 "coordinates": [11 [12 [13 [19.44305, 51.75612],14 [19.44992, 51.75612],15 [19.44992, 51.75947],16 [19.44305, 51.75947],17 [19.44305, 51.75612]18 ]19 ],20 [21 [22 [19.45011, 51.75789],23 [19.45687, 51.75789],24 [19.45687, 51.75946],25 [19.45011, 51.75946],26 [19.45011, 51.75789]27 ]28 ]29 ]30 },31 "timeZoneId": "Europe/Warsaw",32 "frcs": ["0", "1", "2", "3", "4", "5", "6", "7", "8"],33 "probeSource": "ALL"34 },35 "dateRange": {36 "name": "Last working week of January",37 "from": "2021-01-25",38 "to": "2021-01-29",39 "exclusions": ["2021-01-26", "2021-01-27"]40 },41 "timeSets": [42 {43 "name": "Monday morning hour",44 "timeGroups": [45 {46 "days": ["MON"],47 "times": ["7:00-8:00"]48 }49 ]50 }51 ]52}
Response data
In response to the request a jobId is provided, which is required for further communication about the query. A JSON response content example:
1{2 "jobId": "677",3 "responseStatus": "OK",4 "messages": ["Job created. Processing started."]5}
Check job status
When a job has been initiated via the API request, it is possible to check the status.
JSON request
https://{baseURL}/traffic/trafficstats/status/{versionNumber>/{job_id}?key={Your_API_Key}
Job status parameters
The table below describes all of the parameters that can be used in a request. Required parameters must be used or the call will fail. Optional parameters may be used.
Parameter | Description |
---|---|
| Base URL for calling the API. |
| Service version number. |
| The job ID. |
| Authorization key for access to the API. |
JSON response
1{2 "jobId": "{job_id}",3 "jobState": "{job_status}",4 "responseStatus": "OK"5}
Job status flow
During the process there are different stages applicable. Via the get state request you can see what the state of your job is. The following table shows the different stages of the process.
Status | Description |
---|---|
| The job is waiting for mapmatching to start. |
| Job is scheduled for calculations. |
| Mapmatching is in progress. |
| Mapmatching is done and the job is waiting for Geobase reading. |
| Geobase reading is in progress. |
| Calculations are in progress. |
| Occurs only if manual acceptance mode was used. The results are waiting to be accepted or rejected. In this state sample summaries for the job are provided when checking job status. |
| Calculations are done. The results are waiting to be downloaded. |
| The job stopped due to the fact that something went wrong. This can occur at any place in the flow. |
| The job is rejected. During processing it turned out that the job exceeds set limits, bounding box cannot be processed (it is effectively empty because there are no roads with selected frcs or it is defined on area which is not supported), or there are less samples than required (see averageSampleSizeThreshold ). This can occur at any place in the flow. |
| The job is cancelled. The owner of the job stopped processing it. It can be done at any time before the job is processed. |
| The job is older than a year and all data has been removed. |
Confirming job results
When the job's state is NEED_CONFIRMATION
, then a summary URL will be available in the response.
1{2 "jobId": "{job_id}",3 "jobState": "NEED_CONFIRMATION",4 "sampleDetailsUrl": "{url_for_sample_details_file}",5 "responseStatus": "OK",6 "messages": ["For more details see: {url_for_sample_details_file}"]7}
A sample details file looks like this:
1{2 "summaries": [3 {4 "locationName": "test",5 "dateRangeName": "Last working week of January",6 "timeSetName": "Monday morning hour",7 "averageSampleSize": 17.06,8 "frcDetails": [9 {10 "frc": 0,11 "averageSampleSize": 0,12 "networkLength": 0,13 "distanceUnit": "KILOMETERS"14 },15 {16 "frc": 1,17 "averageSampleSize": 0,18 "networkLength": 0,19 "distanceUnit": "KILOMETERS"20 },21 {22 "frc": 2,23 "averageSampleSize": 0,24 "networkLength": 0,25 "distanceUnit": "KILOMETERS"26 },27 {28 "frc": 3,29 "averageSampleSize": 0,30 "networkLength": 0,31 "distanceUnit": "KILOMETERS"32 },33 {34 "frc": 4,35 "averageSampleSize": 30.08,36 "networkLength": 5.41,37 "distanceUnit": "KILOMETERS"38 },39 {40 "frc": 5,41 "averageSampleSize": 11.96,42 "networkLength": 0.78,43 "distanceUnit": "KILOMETERS"44 },45 {46 "frc": 6,47 "averageSampleSize": 5.63,48 "networkLength": 1.22,49 "distanceUnit": "KILOMETERS"50 },51 {52 "frc": 7,53 "averageSampleSize": 0.77,54 "networkLength": 4.55,55 "distanceUnit": "KILOMETERS"56 },57 {58 "frc": 8,59 "averageSampleSize": 0,60 "networkLength": 0,61 "distanceUnit": "KILOMETERS"62 }63 ]64 }65 ]66}
If you wish to accept the job make the following request:
https://{baseURL}/traffic/trafficstats/status/{versionNumber}/{job_id}/accept?key={Your_API_Key}
Otherwise reject the job with the following request:
https://{baseURL}/traffic/trafficstats/status/{versionNumber}/{job_id}/reject?key={Your_API_Key}
Response data
Final DONE response
1{2 "jobId":"{job_id}",3 "jobState":"DONE",4 "responseStatus":"OK",5 "urls":{6 "for_json_result_file}",7 "{url_for_geojson_result_file}",8 "{url_for_shape_result_file}"9 ]10}
Results
Output of Traffic Density is available in the following formats:
JSON and GeoJSON results are provided in a gzip compressed format. SHAPE files are packed into zip archives. If you want to get an example of these files please click the applicable link names.
JSON result description
Field(s) | Description | |
---|---|---|
| From the request. | |
| The job creation time. | |
| Requested preference. | |
| From the request
| |
| From the request. | List |
| Data for requested network. |
Structure of timeSets
Field(s) | Description |
---|---|
| Helper reference for further use (in network.segmentResults.segmentProbeCounts). |
| From and as in the request. |
| Time ranges from the request, grouped per day of the week:
|
Structure of network
Field | Description |
---|---|
| From and as in the request |
| Version of maps used for map matching. |
| Data for each segment in given area. See the segmentResults section. |
Structure of segmentResults
Field | Description |
---|---|
| Depending on the map on which job is processed it can be a MultiNet
Segment ID (optionally prefixed by |
| Depending on the map on which job is processed it can be a MultiNet-R
Segment ID (optionally prefixed by |
| Speed limit (in kmph or mph according to |
| Functional Road Class. |
| The street name. |
| The length of a segment (in meters or feet according to
|
| Geometrical shape of segment. A list of pairs: longitude & latitude. |
| See the segmentProbeCounts section. |
Structure of segmentProbeCounts
Field | Description | |
---|---|---|
| Reference to | |
| Reference to DateRange in which calculations were made. | Integer |
| The sample size visible on the segment. These are unique vehicles traveling on segment. If several measurements are received from the same vehicle on a single segment it is only counted once in the sample size count. |