How it works

From field capture to client handover

Every step between driving a road and handing a deliverable to a client. Manual steps are marked. Everything else is automated.

Capture

1

GnssMonitor records GPS + NMEA. Video stream data captures footage with embedded GPMF telemetry. SurveyApp tracks routes on mobile. Auto-sync every 2 minutes.

GnssMonitorGPS + NMEA → .kml .csv .nmea
Video streamVideo + GPMF → .mp4
SurveyAppRoute logs → .json
Profiler instrumentsIRI / MPD / SMTD / Rut / FWD → .xyp .erd
Manual

Upload

2

Fast parallel upload supporting all survey file types.

CID field preview
fieldtype
ROAD_IDtext(12) — sender road identifier
LANE_CODEtext(4) — direction + lane
START_KMdecimal(6,3) — start chainage
AVG_IRI_L/Rdecimal(3,1) — avg IRI per wheelpath
MP4 telemetry field preview
fieldtype
latitude, longitudefloat — WGS84 from GPMF
speed2dfloat — ground speed (km/h)
ACCL, GYROvec3 — motion sensors
dop, fixuint16 — GPS quality (GPS9)
XYP profiler field preview
fieldtype
ProductSNstring — equipment serial
lIRI, rIRIfloat — left/right IRI (mm/m)
lMPD, cMPD, rMPDfloat — mean profile depth
lRD, rRD, maxRDfloat — rut depth (mm)
XYD deflectometer field preview
fieldtype
stationdecimal(6,3) — chainage (km)
d1…d11int — deflection sensors (nm)
forcefloat — peak load (kN)
surfaceTempfloat — surface temp (°C)
Shapefile component preview
fieldtype
.shpfile — geometry (polyline / point)
.dbffile — attribute table
.shxfile — spatial index
.prjfile — coordinate system (WGS84)
KML field preview
fieldtype
Placemarkelement — named waypoint
coordinatesstring — lon,lat,alt tuples
lat, lon, altfloat — parsed position
totalPointsint — GPS points extracted
NMEA field preview
fieldtype
lat, lonfloat — from DDMM.MMMMM
fixQualityint — 0=inv … 4=RTK
satellitesint — satellites in use
speed_kmhfloat — ground speed
ERD field preview
fieldtype
ERDFILEstring — version e.g. V2.00
SHORTNAMstring — channel names
intervalfloat — sampling interval (m)
leftVal, rightValfloat — L/R channel data
FWD field preview
fieldtype
ROAD_IDtext — road identifier
DEF_0…DEF_2100int(4) — 13 deflection sensors
BLI, MLI, LLIint(4) — layer indices
PEAK_LOADdecimal(4,2) — load (kN)
JSON field preview
fieldtype
Namestring — project name
Operatorstring — surveyor name
DriveIds[]array — drive identifiers
gpsPoints[]array — telemetry positions
XLSX field preview
fieldtype
Sheet / Tabstring — instrument channel name
Chainagedecimal(6,3) — station (km)
IRI_L, IRI_Rfloat — left/right IRI (mm/m)
MPD, SMTD, Rutfloat — texture & profile metrics
CSV field preview
fieldtype
Stationdecimal(6,3) — chainage (km)
Lat, Lonfloat — WGS84 position
IRI, MPDfloat — instrument readings
Speedfloat — survey speed (km/h)
ZIP package entry preview
fieldtype
frames/dir — chainage-named .jpg images
*.cidfile — TMH18 instrument data
*.xlsxfile — direction workbook
*.geojsonfile — route geometry
Automated

Process

3

GPMF telemetry extraction. FFmpeg frames at ~5m GPS spacing. GPS fusion, chapter consolidation, and instrument file parsing.

GPMF extract telemetry
FFmpeg frames ~5m spacing
Chainage naming .jpg
GPS fusion IMU + external
Chapter consolidation multi-file merge
Archive extraction .zip → frames
IRI / MPD / SMTD / Rut / FWD parsed
Automated

Review

4

GPS track on map. Telemetry charts synced to chainage. IRI heatmap with TRH12 threshold bands. FWD benchmarks. MPD, SMTD, and rut analysis. Frame viewer with GPS outlier detection. Video group management.

IRI profile — TRH12 thresholds
Good Fair Poor
Manual

Assess

5

TMH9 visual assessment with 30+ distress types, degree and extent ratings per COTO standards. Flexible and unpaved road forms. Draft → Submitted → Approved lifecycle.

Distress types 30+
Degree & extent rated
Photo evidence linked
COTO forms offline
Manual

Export

6

Standards-compliant deliverables packaged per road link. Approve and publish directly to client portal.

TMH18 CID / FWD / FLX / VGI .xlsx
TMH13 IRI data .csv
Named frames archive .zip
Direction workbook + FWD benchmarks .xlsx
Per-link packages + GeoJSON .geojson
Download builder + raw data .zip
Automated

Ready to see it on your data?

RoadSense is invitation-only. Tell us about your survey operations and we'll set up your organisation.

Request Access
.cid
Complete CID schema
fieldtype
ROAD_IDtext(12) — sender road identifier
LANE_CODEtext(4) — direction + lane e.g. P1, N2
START_KMdecimal(6,3) — start chainage (km)
END_KMdecimal(6,3) — end chainage (km)
MEASURE_DATEdatetime — YYYYMMDD HH24:MI:SS
AVG_IRI_Ldecimal(3,1) — avg IRI left wheelpath (m/km)
AVG_IRI_Rdecimal(3,1) — avg IRI right wheelpath (m/km)
IRI_L_STDVdecimal(3,1) — IRI left std deviation
IRI_R_STDVdecimal(3,1) — IRI right std deviation
AVG_HRIdecimal(3,1) — average half-car roughness
HRI_STDVdecimal(3,1) — HRI std deviation
AVG_RUT_Ldecimal(4,1) — avg rut left (mm)
AVG_RUT_Rdecimal(4,1) — avg rut right (mm)
RUT_L_STDVdecimal(4,1) — rut left std deviation
RUT_R_STDVdecimal(4,1) — rut right std deviation
AVG_MPD_Ldecimal(3,2) — avg MPD left wheelpath
AVG_MPD_Cdecimal(3,2) — avg MPD centre
AVG_MPD_Rdecimal(3,2) — avg MPD right wheelpath
MPD_STDV_Ldecimal(3,2) — MPD std deviation left
MPD_STDV_Cdecimal(3,2) — MPD std deviation centre
MPD_STDV_Rdecimal(3,2) — MPD std deviation right
START_LONGITUDEdecimal(12,9) — WGS84 longitude
START_LATITUDEdecimal(12,9) — WGS84 latitude
Complete MP4 telemetry schema
fieldtype
latitudefloat — WGS84 decimal degrees (GPS5/GPS9)
longitudefloat — WGS84 decimal degrees
altitudefloat — metres above sea level
speed2dfloat — 2D ground speed (m/s → km/h)
speed3dfloat — 3D speed incl. vertical (m/s)
timestampISO string — from GPS9 daysSince2000 + seconds
dopuint16 — dilution of precision (GPS9)
fixuint16 — fix type (GPS9)
ACCLvec3 — accelerometer x, y, z (m/s²)
GYROvec3 — gyroscope x, y, z (rad/s)
CORIquaternion — camera orientation
GRAVvec3 — gravity vector
Complete XYP profiler schema
fieldtype
Header metadata
ProductSNstring — equipment serial number
StartStationfloat — start chainage (km)
Directionenum — + or −
Intervalfloat — sampling interval (m)
TestDatedate — date of survey
Lanestring — lane code
Sectionstring — road section identifier
IRI sub-type
start, endfloat — chainage range (m)
speedfloat — survey speed (km/h)
lIRI, rIRIfloat — left/right IRI (mm/m)
lat, lonfloat — WGS84 position
MPD sub-type
start, endfloat — chainage range (m)
lMPD, cMPD, rMPDfloat — L/C/R mean profile depth (mm)
lat, lonfloat — WGS84 position
Rut depth sub-type
start, endfloat — chainage range (m)
lRD, rRDfloat — left/right rut depth (mm)
maxRDfloat — maximum rut depth (mm)
lat, lonfloat — WGS84 position
SMTD sub-type
lSMTD, cSMTD, rSMTDfloat — L/C/R surface macrotexture
GNSS sub-type
station, lat, lonfloat — chainage + position
Binary profile sub-type
stationfloat — from StartStation + DMIInterval
leftElev, rightElevfloat32 — left/right elevation
Complete XYD deflectometer schema
fieldtype
5 header lines: format, serial, sensor config, offsets
timeISO datetime — test timestamp
locationstring — location description
sectionstring — road section identifier
lanestring — lane code
stationdecimal(6,3) — chainage (km)
directionstring — up / down
lat, lonfloat — WGS84 decimal degrees
dropIdint — drop sequence number
surfaceTempfloat — surface temperature (°C)
ambientTempfloat — air temperature (°C)
asphaltTempfloat — asphalt temperature (°C)
forcefloat — peak load (kN)
pressurefloat — contact pressure
d1…d11int — deflection sensors 1–11 (nm)
eMpafloat — back-calculated modulus (MPa)
pulseTimefloat — pulse duration (ms)
Complete shapefile schema
fieldtype
Required files (client upload)
.shpfile — geometry (PolyLine / Point)
.dbffile — dBASE attribute table
.shxfile — spatial index (byte offsets)
.prjfile — coordinate system definition (WGS84 / Hartebeesthoek94)
Attribute table fields (.dbf)
ROAD_IDtext(20) — client road identifier
ROAD_NAMEtext(80) — road name / description
SECTION_IDtext(20) — section or segment code
START_KMdecimal(8,3) — start chainage (km)
END_KMdecimal(8,3) — end chainage (km)
LENGTH_KMdecimal(8,3) — segment length (km)
SURF_TYPEtext(20) — surface type (asphalt / gravel / concrete)
LANESint — number of lanes
CLASStext(10) — road class (N / R / MR / DR)
AUTHORITYtext(40) — road authority / municipality
Complete KML schema
fieldtype
Placemarkelement — named waypoint or route
coordinatesstring — lon,lat,alt tuples
LineStringelement — GPS track geometry
latfloat — decimal degrees (parsed)
lonfloat — decimal degrees (parsed)
altfloat — altitude in metres (0 if absent)
coordinateBlocksint — number of coordinate groups
totalPointsint — total GPS points extracted
Complete NMEA schema
fieldtype
Tab-separated: PC_timestamp → NMEA sentence
$GPGGA fields
lat, lonfloat — converted from DDMM.MMMMM
altfloat — MSL altitude (m)
satellitesint — satellites in use
hdopfloat — horizontal dilution of precision
fixQualityint — 0=inv, 1=GPS, 2=DGPS, 4=RTK
$GPRMC / $GNRMC fields
gnss_datetime_utcISO string — full date + time
speed_kmhfloat — ground speed (km/h)
course_degfloat — course over ground (deg)
$PTNL,GGK (Trimble)
ellipsoid_height_mfloat — ellipsoidal height (m)
$GPVTG
course_degfloat — true track (degrees)
speed_kmhfloat — ground speed (km/h)
Complete ERD schema
fieldtype
Header block (terminated by END)
ERDFILEstring — version e.g. V2.00
numPointsint — total data points
intervalfloat — sampling interval (m), default 0.025
SHORTNAMstring — channel names e.g. LIRI RIRI
UNITSNAMstring — measurement units
XLABELstring — x-axis label
XUNITSstring — x-axis units
Data rows (two floats per line)
startfloat — station (m) auto-incremented
leftValfloat — left channel (IRI/MPD/SMTD/RD)
rightValfloat — right channel
maxRDfloat — max rut depth (profile sub-type only)
Complete FWD schema
fieldtype
ROAD_IDtext — road identifier
LANE_CODEtext — direction + lane
SURVEY_KMdecimal(6,3) — test point (km)
DATEdatetime — YYYYMMDD HH24:MI:SS
TEMP_AIRdecimal(3,2) — air temp (°C)
TEMP_SURFACEdecimal(3,2) — surface temp (°C)
PEAK_LOADdecimal(4,2) — applied load (kN)
DROP_NUMint(2) — drop sequence number
DEF_0int(4) — deflection at plate centre (nm)
DEF_200…DEF_2100int(4) — 12 sensor offsets (nm)
PULSE_DURATIONdecimal(4,2) — pulse time (ms)
BLIint(4) — base layer index D0−D300
MLIint(4) — middle layer index D300−D600
LLIint(4) — lower layer index D600−D900
START_LONGITUDEdecimal(12,9) — WGS84 longitude
START_LATITUDEdecimal(12,9) — WGS84 latitude
Complete JSON schema
fieldtype
RSP project.json
Namestring — project name
Descriptionstring — project description
ProjectFolderstring — local folder path
CreatedDateISO datetime — UTC creation time
SiteLocationstring — site location text
Operatorstring — surveyor/operator name
AllocationIdstring — fleet route allocation ID
DriveIds[]array — associated drive identifiers
KmlRouteFiles[]array — KML filenames in project
telemetry.json (processed video)
gpsPoints[]array — lat, lon, alt, speed, accuracy
gpmfMetadataobject — duration, distance, pointCount
telemetrySummaryobject — accel/gyro statistics
Complete ZIP package schema
fieldtype
Raw data package
{camera}-{dir}.ziparchive — per camera-direction frame JPEGs
cid-{dir}-lane{N}.xlsxworkbook — CID per direction + lane
all.ziparchive — everything combined
Client download package
frames/dir — chainage-named .jpg images
*.cidfile — TMH18 combined instrument data
*.csvfile — GPS track + summary exports
*.geojsonfile — route geometry
*.xlsxfile — direction workbook
Frame naming convention
{cam}_{dir}_{ch7}_{route}.jpgstring — chainage-named frame