The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

PavData Universidade Federal do Ceará PavData Logo

Version Lifecycle: experimental

pavdata is an R package for storing, validating, and exploring transportation infrastructure data with a lightweight, human-readable .pavdata format based on JSON.

It is designed for pavement and materials workflows where researchers need to:

Installation

Install from a local source tree:

install.packages("path/to/pavdata", repos = NULL, type = "source")

After its first release on CRAN, install it with:

install.packages("pavdata")

Why pavdata?

Laboratory and field datasets in pavement engineering are often fragmented across spreadsheets, scripts, and reports. pavdata provides a small relational layer in R so those records can be created, checked, saved, and reused more consistently.

The package focuses on four practical ideas aligned with the FAIR Principles:

Quick Start

Create a few linked objects:

library(pavdata)

binder <- pav_new(
  "binder",
  id = "binder-cap-50-70",
  name = "CAP 50/70",
  binder_type = "CAP 50/70",
  penetration_mm = 52,
  softening_point_c = 49
)

aggregate <- pav_new(
  "aggregate",
  id = "aggregate-basalt",
  name = "Basalt aggregate",
  bulk_specific_gravity = 2.71,
  water_absorption_pct = 1.2
)

mixture <- pav_new(
  "mixture",
  id = "mixture-dense-graded",
  name = "Dense graded mix",
  binder_id = binder$id,
  aggregate_id = aggregate$id,
  binder_content_pct = 5.3
)

volumetrics <- pav_new(
  "mixture_test",
  id = "test-volumetrics-dense-graded",
  name = "Dense graded mix volumetrics",
  mixture_id = mixture$id,
  test_type = "volumetrics",
  volumetrics = list(
    air_voids_pct = 4.1,
    voids_mineral_aggregate_pct = 15.4,
    voids_filled_asphalt_pct = 73.4,
    filler_binder_ratio = 1.1
  )
)

Validate the objects:

pav_check(binder)
pav_check(mixture)
pav_check(volumetrics)

Save them to disk and read them back:

path <- tempfile(fileext = ".pavdata")
pav_write(list(binder, aggregate, mixture, volumetrics), path)

objects <- pav_read(path)
names(objects)

Load them into a library for indexed access:

lib <- pav_library()
pav_library_load(lib, path)

print(lib)
pav_list(lib, type = "mixture")
pav_view(lib, mixture$id)

Inspecting Objects

PavData objects support standard S3 methods.

print()

Use print() for a compact object overview:

print(binder)
<pavdata_binder> CAP 50/70
  id: binder-cap-50-70 | v1 | 13 fields

summary()

Use summary() to display the populated metadata and data fields:

summary(volumetrics)
MIXTURE_TEST: Dense graded mix volumetrics
ID: test-volumetrics-dense-graded | v1 | Created: <timestamp>
Source:
mixture_id                     mixture-dense-graded
test_type                      volumetrics
volumetrics
  air_voids_pct                4.1
  voids_mineral_aggregate_pct  15.4
  voids_filled_asphalt_pct     73.4
  filler_binder_ratio          1.1

plot()

Use plot() to compare numeric fields. Short labels can be passed to the underlying base-R bar plot with names.arg:

plot(
  volumetrics,
  names.arg = c("Air voids (%)", "VMA (%)", "VFA (%)", "Filler/binder"),
  ylim = c(0, 80)
)

Bar plot of volumetric properties generated by plot()

Main Functions

Function Purpose
pav_new() Create a new PavData object
pav_check() Validate one object
pav_check_integrity() Validate a collection and its foreign keys
pav_write() Write objects to a .pavdata file
pav_read() Read objects from a .pavdata file
pav_load() Read a file and validate all objects
pav_library() Create an in-memory indexed library
pav_library_load() Load a file into a library
pav_list() List objects in a library
pav_view() Display one object from a library

Object Types

pavdata currently supports these object families:

Each object shares common metadata such as id, name, type, version, created_at, source, and notes.

UML Data Model

The UML diagram below summarizes the S3 classes and their relationships.

UML diagram of PavData S3 classes

Built-In Example Data

The package ships with an example .pavdata file:

path <- pavdata_sample_path()
path

You can use it to test import, browsing, and validation workflows.

Authors and Affiliation

PavData is developed by:

Creator

Authors

Contributors

Affiliation

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.