{
  "_id": "6abd6fc999f7aa8c6aa504b4",
  "Package": "transittraj",
  "Title": "Reconstruct and Visualize Transit Vehicle Trajectories",
  "Version": "1.1.0",
  "Date": "2026-08-11",
  "Authors@R": "c(\nperson(\"Benjamin\", \"O'Brien\",\nemail = \"obrienbenjaminj@gmail.com\",\nrole = c(\"aut\", \"cre\", \"cph\")),\nperson(\"Lewis\", \"Lehe\",\nemail = \"lehe@illinois.edu\",\nrole = \"aut\"))",
  "Description": "Today's public transit vehicles produce a large amount of\nautomatic vehicle location (AVL) data. This data is very useful\nfor planning and performance studies, but can be noisy,\nerror-prone, and sparse. This package provides tools for\ncleaning AVL point data and turning it into continuous,\ndifferentiable, monotonic, and invertible vehicle trajectory\nfunctions, based on the work of Robbennolt et al. (2025)\n<doi:10.48550/arXiv.2509.00119> and Huang et al. (2023)\n<doi:10.1109/ITSC57777.2023.10422524>.",
  "License": "GPL (>= 3)",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "URL": "https://utel-uiuc.github.io/transittraj/",
  "BugReports": "https://github.com/UTEL-UIUC/transittraj/issues",
  "LazyData": "true",
  "VignetteBuilder": "knitr",
  "Config/Needs/website": "rmarkdown, vembedr",
  "Config/testthat/edition": "3",
  "Language": "en-US",
  "Config/pak/sysreqs": "libabsl-dev cmake libgdal-dev gdal-bin libgeos-dev\nmake libicu-dev libjpeg-dev libpng-dev libuv1-dev libssl-dev\nlibproj-dev libsqlite3-dev libudunits2-dev",
  "Repository": "https://utel-uiuc.r-universe.dev",
  "Date/Publication": "2026-09-30 16:13:46 UTC",
  "RemoteUrl": "https://github.com/utel-uiuc/transittraj",
  "RemoteRef": "HEAD",
  "RemoteSha": "b29c656a89166ba7bd606491b52c44e09e3c697f",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-09-30 20:07:14 UTC",
    "User": "root"
  },
  "Author": "Benjamin O'Brien [aut, cre, cph],\nLewis Lehe [aut]",
  "Maintainer": "Benjamin O'Brien <obrienbenjaminj@gmail.com>",
  "_user": "utel-uiuc",
  "_type": "src",
  "_file": "transittraj_1.1.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/65dab42f5ff495915394072b837235e7a2306e9a8f8bfbd30416b342db42e96e",
  "_filesize": 3192890,
  "_sha256": "65dab42f5ff495915394072b837235e7a2306e9a8f8bfbd30416b342db42e96e",
  "_expires": "2027-01-08T20:23:35.000Z",
  "_created": "2026-09-30T20:07:14.000Z",
  "_published": "2026-09-30T20:23:37.776Z",
  "_jobs": [
    {
      "job": 110075121754,
      "time": 289,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11124180556"
    },
    {
      "job": 110075121511,
      "time": 254,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11123009279"
    },
    {
      "job": 110075121648,
      "time": 228,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11124272277"
    },
    {
      "job": 110075121542,
      "time": 267,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11123956449"
    },
    {
      "job": 110073395677,
      "time": 260,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11123755564"
    },
    {
      "job": 110075121425,
      "time": 190,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11124410077"
    },
    {
      "job": 110075121635,
      "time": 225,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11124020492"
    },
    {
      "job": 110075121564,
      "time": 184,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11123975342"
    },
    {
      "job": 110075121531,
      "time": 190,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11124410083"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/utel-uiuc/actions/runs/36769886402",
  "_status": "success",
  "_upstream": "https://github.com/utel-uiuc/transittraj",
  "_commit": {
    "id": "b29c656a89166ba7bd606491b52c44e09e3c697f",
    "author": "obrien-ben <obrienbenjaminj@gmail.com>",
    "committer": "obrien-ben <obrienbenjaminj@gmail.com>",
    "message": "Updating NEWS, CRAN submission data\n",
    "time": 1790784826
  },
  "_maintainer": {
    "name": "Benjamin OBrien",
    "email": "obrienbenjaminj@gmail.com",
    "login": "obrien-ben",
    "linkedin": "in/ben-obrien-2003",
    "description": "Graduate Fellow & Research Assistant | \nTraffic engineer specializing in transit technology & transit-supportive streets",
    "uuid": 88078136
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.5",
      "role": "Depends"
    },
    {
      "package": "data.table",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "geos",
      "role": "Imports"
    },
    {
      "package": "gganimate",
      "role": "Imports"
    },
    {
      "package": "ggnewscale",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "ggspatial",
      "role": "Imports"
    },
    {
      "package": "hms",
      "role": "Imports"
    },
    {
      "package": "ivs",
      "role": "Imports"
    },
    {
      "package": "leaflet",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "sf",
      "role": "Imports"
    },
    {
      "package": "slider",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "tidytransit",
      "role": "Imports"
    },
    {
      "package": "viridis",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "prettymapr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "spelling",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "utel-uiuc",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-08",
      "n": 54
    },
    {
      "week": "2026-09",
      "n": 39
    },
    {
      "week": "2026-10",
      "n": 19
    },
    {
      "week": "2026-11",
      "n": 13
    },
    {
      "week": "2026-12",
      "n": 16
    },
    {
      "week": "2026-13",
      "n": 5
    },
    {
      "week": "2026-16",
      "n": 2
    },
    {
      "week": "2026-19",
      "n": 2
    },
    {
      "week": "2026-22",
      "n": 3
    },
    {
      "week": "2026-23",
      "n": 18
    },
    {
      "week": "2026-24",
      "n": 5
    },
    {
      "week": "2026-31",
      "n": 25
    },
    {
      "week": "2026-32",
      "n": 14
    },
    {
      "week": "2026-33",
      "n": 15
    },
    {
      "week": "2026-36",
      "n": 1
    },
    {
      "week": "2026-40",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "v0.1.1",
      "date": "2026-03-13"
    },
    {
      "name": "v0.1.2",
      "date": "2026-03-25"
    },
    {
      "name": "v0.1.3",
      "date": "2026-04-14"
    },
    {
      "name": "v0.1.4",
      "date": "2026-06-08"
    },
    {
      "name": "v1.1.0",
      "date": "2026-09-02"
    }
  ],
  "_stars": 2,
  "_contributors": [
    {
      "user": "obrien-ben",
      "count": 264,
      "uuid": 88078136
    }
  ],
  "_userbio": {
    "uuid": 90534722,
    "type": "organization",
    "name": "Urban Traffic & Economics Lab",
    "followers": 24,
    "description": "The group is focused on movement of people in cities, emphasizing economic theory and novel data collection. We do a lot of programming."
  },
  "_downloads": {
    "count": 461,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/transittraj"
  },
  "_devurl": "https://github.com/utel-uiuc/transittraj",
  "_pkgdown": "https://utel-uiuc.github.io/transittraj/",
  "_searchresults": 15,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/transittraj.html"
  ],
  "_homeurl": "https://github.com/utel-uiuc/transittraj",
  "_realowner": "utel-uiuc",
  "_cranurl": true,
  "_releases": [
    {
      "version": "1.0.0",
      "date": "2026-09-08"
    },
    {
      "version": "1.1.0",
      "date": "2026-09-08"
    }
  ],
  "_exports": [
    "%>%",
    "clean_incomplete_trips",
    "clean_jumps",
    "clean_overlapping_subtrips",
    "export_animation",
    "filter_by_route",
    "get_gtfs_service_dates",
    "get_gtfs_trajectory_fun",
    "get_linear_distances",
    "get_shape_geometry",
    "get_stop_distances",
    "get_trajectory_fun",
    "get_trip_extremes",
    "group_trajectories",
    "make_monotonic",
    "new_transittraj_data",
    "plot_animated_line",
    "plot_animated_map",
    "plot_interactive_gtfs",
    "plot_trajectory",
    "project_onto_route",
    "trim_trips",
    "validate_monotonicity",
    "validate_tides"
  ],
  "_datasets": [
    {
      "name": "lacmta_avl",
      "title": "LA Metro AVL Data",
      "object": "lacmta_avl",
      "class": [
        "data.frame"
      ],
      "fields": [
        "location_ping_id",
        "service_date",
        "trip_id_performed",
        "latitude",
        "longitude",
        "speed",
        "vehicle_id",
        "event_timestamp",
        "direction_id",
        "shape_id",
        "route_id"
      ],
      "rows": 14179,
      "table": true,
      "tojson": true
    },
    {
      "name": "lacmta_gtfs",
      "title": "LA Metro GTFS",
      "object": "lacmta_gtfs",
      "class": [
        "tidygtfs",
        "gtfs",
        "list"
      ],
      "fields": [],
      "table": false,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "clean_incomplete_trips",
      "title": "Filter out entire trips which do not meet distance or duration requirements",
      "topics": [
        "clean_incomplete_trips"
      ]
    },
    {
      "page": "clean_jumps",
      "title": "Apply median filters to detect large jumps (i.e., outliers) in trajectories.",
      "topics": [
        "clean_jumps"
      ]
    },
    {
      "page": "clean_overlapping_subtrips",
      "title": "Remove trips with multiple operators or vehicles assigned to the same trip ID",
      "topics": [
        "clean_overlapping_subtrips"
      ]
    },
    {
      "page": "export_animation",
      "title": "Save an animation at a desired quality",
      "topics": [
        "export_animation"
      ]
    },
    {
      "page": "filter_by_route",
      "title": "Filter GTFS to a desired route(s) and direction(s)",
      "topics": [
        "filter_by_route"
      ]
    },
    {
      "page": "get_gtfs_service_dates",
      "title": "Get a dataframe of all service dates and their service IDs from a GTFS",
      "topics": [
        "get_gtfs_service_dates"
      ]
    },
    {
      "page": "get_gtfs_trajectory_fun",
      "title": "Fit continuous trajectory interpolating curves from GTFS schedule data",
      "topics": [
        "get_gtfs_trajectory_fun"
      ]
    },
    {
      "page": "get_linear_distances",
      "title": "Linearize latitude-longitude GPS points on a provided route shape",
      "topics": [
        "get_linear_distances"
      ]
    },
    {
      "page": "get_shape_geometry",
      "title": "Get the geometry of a route shape",
      "topics": [
        "get_shape_geometry"
      ]
    },
    {
      "page": "get_stop_distances",
      "title": "Get the distances of stops along routes",
      "topics": [
        "get_stop_distances"
      ]
    },
    {
      "page": "get_trajectory_fun",
      "title": "Fit continuous trajectory interpolating curves from AVL data",
      "topics": [
        "get_trajectory_fun"
      ]
    },
    {
      "page": "get_trip_extremes",
      "title": "Get the distance and time range of each trip in a trajectory object",
      "topics": [
        "get_trip_extremes"
      ]
    },
    {
      "page": "group_trajectories",
      "title": "Group existing trajectory objects or split them apart",
      "topics": [
        "group_trajectories"
      ]
    },
    {
      "page": "lacmta_avl",
      "title": "LA Metro AVL Data",
      "topics": [
        "lacmta_avl"
      ]
    },
    {
      "page": "lacmta_gtfs",
      "title": "LA Metro GTFS",
      "topics": [
        "lacmta_gtfs"
      ]
    },
    {
      "page": "make_monotonic",
      "title": "Correct distance observations, and optionally speeds, to be weakly or strictly monotonic",
      "topics": [
        "make_monotonic"
      ]
    },
    {
      "page": "new_transittraj_data",
      "title": "Retrieve an object from a particular step of 'transittraj''s workflow",
      "topics": [
        "new_transittraj_data"
      ]
    },
    {
      "page": "plot_animated_line",
      "title": "Animate vehicle trajectory or AVL data",
      "topics": [
        "plot_animated_line",
        "plot_animated_map"
      ]
    },
    {
      "page": "plot_interactive_gtfs",
      "title": "Generate a Leaflet viewer of GTFS routes and stops",
      "topics": [
        "plot_interactive_gtfs"
      ]
    },
    {
      "page": "plot_trajectory",
      "title": "Plot vehicle trajectories or AVL data",
      "topics": [
        "plot_trajectory"
      ]
    },
    {
      "page": "plot.avltrajectory_group",
      "title": "Quickly plot an AVL trajectory",
      "topics": [
        "plot.avltrajectory_group",
        "plot.avltrajectory_single"
      ]
    },
    {
      "page": "predict.avltrajectory_group",
      "title": "Interpolate time or distance points using AVL trajectories",
      "topics": [
        "predict.avltrajectory_group"
      ]
    },
    {
      "page": "print.avltrajectory_group",
      "title": "Print an AVL trajectory object",
      "topics": [
        "print.avltrajectory_group",
        "print.avltrajectory_single"
      ]
    },
    {
      "page": "project_onto_route",
      "title": "Project points to linear distances along a route",
      "topics": [
        "project_onto_route"
      ]
    },
    {
      "page": "summary.avltrajectory_group",
      "title": "Summarize an AVL trajectory object",
      "topics": [
        "summary.avltrajectory_group",
        "summary.avltrajectory_single"
      ]
    },
    {
      "page": "trim_trips",
      "title": "Remove observations occurring before a trip's minimum distance, or after a trip's maximum distance",
      "topics": [
        "trim_trips"
      ]
    },
    {
      "page": "validate_monotonicity",
      "title": "Check if AVL data satisfies assumptions of monotonicity",
      "topics": [
        "validate_monotonicity"
      ]
    },
    {
      "page": "validate_tides",
      "title": "Check if AVL data meets TIDES standards",
      "topics": [
        "validate_tides"
      ]
    }
  ],
  "_pkglogo": "https://github.com/utel-uiuc/transittraj/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/utel-uiuc/transittraj/raw/HEAD/README.md",
  "_rundeps": [
    "abind",
    "base64enc",
    "bslib",
    "cachem",
    "class",
    "classInt",
    "cli",
    "cpp11",
    "crayon",
    "crosstalk",
    "curl",
    "data.table",
    "DBI",
    "digest",
    "dplyr",
    "e1071",
    "evaluate",
    "farver",
    "fastmap",
    "fontawesome",
    "fs",
    "generics",
    "geodist",
    "geos",
    "gganimate",
    "ggnewscale",
    "ggplot2",
    "ggspatial",
    "glue",
    "gridExtra",
    "gtable",
    "gtfsio",
    "highr",
    "hms",
    "htmltools",
    "htmlwidgets",
    "isoband",
    "ivs",
    "jpeg",
    "jquerylib",
    "jsonlite",
    "KernSmooth",
    "knitr",
    "labeling",
    "lattice",
    "lazyeval",
    "leaflet",
    "leaflet.providers",
    "libgeos",
    "lifecycle",
    "lpSolve",
    "magrittr",
    "memoise",
    "mime",
    "pillar",
    "pkgconfig",
    "png",
    "prettyunits",
    "progress",
    "proxy",
    "purrr",
    "R6",
    "rappdirs",
    "raster",
    "RColorBrewer",
    "Rcpp",
    "rlang",
    "rmarkdown",
    "rosm",
    "s2",
    "S7",
    "sass",
    "scales",
    "sf",
    "slider",
    "sp",
    "stringi",
    "stringr",
    "terra",
    "tibble",
    "tidyr",
    "tidyselect",
    "tidytransit",
    "tinytex",
    "transformr",
    "tweenr",
    "units",
    "utf8",
    "vctrs",
    "viridis",
    "viridisLite",
    "warp",
    "withr",
    "wk",
    "xfun",
    "yaml",
    "zip"
  ],
  "_vignettes": [
    {
      "source": "intro-trajectories.Rmd",
      "filename": "intro-trajectories.html",
      "title": "Introduction to Trajectories",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Fitting a Trajectory Curve",
        "Interpolating",
        "Interpolating for Distance from Time",
        "Interpolating for Time from Distance",
        "Interpolating for Time & Distance Pairs Over a Range",
        "Visualizing Trajectories",
        "Quick Plots",
        "Detailed Trajectories",
        "Line Animations",
        "Map Animations",
        "Conclusion"
      ],
      "created": "2026-08-11 18:38:49",
      "modified": "2026-09-02 17:00:58",
      "commits": 2
    },
    {
      "source": "avl-data-workflow.Rmd",
      "filename": "avl-data-workflow.html",
      "title": "The AVL Cleaning Workflow",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Step 0: Setup",
        "AVL",
        "GTFS",
        "Visualizing our Starting Data",
        "Steps 1 & 2: Buffer & Linearize",
        "Running the Code",
        "Exploring the Results",
        "Step 3: Cleaning Overlapping Subtrips",
        "Step 4: Clean Outlier/Jumps",
        "Step 5: Trim Trip Tails",
        "Step 6: Clean Incomplete Trips",
        "Step 7: Correct for Monotonicity",
        "Conclusion"
      ],
      "created": "2026-09-02 17:00:58",
      "modified": "2026-09-02 17:00:58",
      "commits": 1
    }
  ],
  "_score": 5.681241237375588,
  "_indexed": true,
  "_nocasepkg": "transittraj",
  "_universes": [
    "utel-uiuc",
    "obrien-ben"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.1.0",
      "date": "2026-09-30T20:10:28.000Z",
      "distro": "resolute",
      "commit": "b29c656a89166ba7bd606491b52c44e09e3c697f",
      "fileid": "https://r2.ropensci.org/abcf8963002000e5814c9117e9cad646071ff080d33e22a8825c94aecbef657b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/utel-uiuc/actions/runs/36769886402"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.1.0",
      "date": "2026-09-30T20:10:04.000Z",
      "distro": "resolute",
      "commit": "b29c656a89166ba7bd606491b52c44e09e3c697f",
      "fileid": "https://r2.ropensci.org/d591d7158de190713213aa7338709e514235be6808cbcc3dc491a18a26d1313a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/utel-uiuc/actions/runs/36769886402"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.1.0",
      "date": "2026-09-30T20:21:19.000Z",
      "commit": "b29c656a89166ba7bd606491b52c44e09e3c697f",
      "fileid": "https://r2.ropensci.org/0ba4708e3dfd25cc1412a59c5361ce3676c8b18be1655b9e42245d57478027a9",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/utel-uiuc/actions/runs/36769886402"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "1.1.0",
      "date": "2026-09-30T20:14:57.000Z",
      "commit": "b29c656a89166ba7bd606491b52c44e09e3c697f",
      "fileid": "https://r2.ropensci.org/6a74379edcf5e48dbd79b72eeb8352b3e735a8ce0f39bb9cfa9e6bb73040dc7b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/utel-uiuc/actions/runs/36769886402"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.1.0",
      "date": "2026-09-30T20:10:41.000Z",
      "commit": "b29c656a89166ba7bd606491b52c44e09e3c697f",
      "fileid": "https://r2.ropensci.org/535b3dd531461a82f594a9065983a355ead5fca0c920524b1fd431d06052ccb2",
      "status": "success",
      "buildurl": "https://github.com/r-universe/utel-uiuc/actions/runs/36769886402"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.1.0",
      "date": "2026-09-30T20:09:20.000Z",
      "commit": "b29c656a89166ba7bd606491b52c44e09e3c697f",
      "fileid": "https://r2.ropensci.org/959668d62e2aaa7507e213b20784da8cacb1081624aded704cf4e4540cbe567a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/utel-uiuc/actions/runs/36769886402"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.1.0",
      "date": "2026-09-30T20:08:52.000Z",
      "commit": "b29c656a89166ba7bd606491b52c44e09e3c697f",
      "fileid": "https://r2.ropensci.org/86b72e81d96c4f1246f4f836db7e6d6ee5052a3936a5f489155ca6ff396b02ac",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/utel-uiuc/actions/runs/36769886402"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.1.0",
      "date": "2026-09-30T20:08:40.000Z",
      "commit": "b29c656a89166ba7bd606491b52c44e09e3c697f",
      "fileid": "https://r2.ropensci.org/9e2dd3cc06f4cfaee3bdb4466ef25dc3d49c569ce56b753b2a63058c69d5f99d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/utel-uiuc/actions/runs/36769886402"
    }
  ]
}