## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup--------------------------------------------------------------------
library(abstr)

## ----getlocations, eval=FALSE, echo=FALSE-------------------------------------
# home = stplanr::geo_code("potternewton park")
# work = stplanr::geo_code("university of leeds")
# park = stplanr::geo_code("woodhouse moore park")
# cafe = stplanr::geo_code("heart centre leeds")
# cafe = stplanr::geo_code("worsley building leeds")

## ----places-------------------------------------------------------------------
places = tibble::tribble(
  ~name, ~x, ~y,
  "Home", -1.524, 53.819,
  "Work", -1.552, 53.807,
  "Park", -1.560, 53.812,
  "Cafe", -1.556, 53.802
)
places_sf = sf::st_as_sf(places, coords = c("x", "y"), crs = 4326)
plot(places_sf, pch = places$name)
# mapview::mapview(places_sf, pch = places$name)

## ----placestoosimple, eval=FALSE, echo=FALSE----------------------------------
# places = tibble::tribble(
#   ~name, ~x, ~y,
#   "Home", 5, 0,
#   "Work", 2, 5,
#   "Park", 1, 4,
#   "Cafe", 2, 4
# )
# places_sf = sf::st_as_sf(places, coords = c("x", "y"))
# plot(places_sf, pch = places$name)

## ----lines--------------------------------------------------------------------
od = tibble::tribble(
  ~o, ~d, ~mode, ~departure, ~person,
  "Home", "Work", "Bike", "08:30", 1,
  "Work", "Park", "Walk", "11:30", 1,
  "Park", "Cafe", "Walk", "12:15", 1,
  "Cafe", "Work", "Walk", "12:45", 1,
  "Work", "Home", "Bike", "17:00", 1
)

## -----------------------------------------------------------------------------
od_sf = od::od_to_sf(od, places_sf)
plot(od_sf["departure"], reset = FALSE, key.pos = 1, lwd = 6:2)
plot(places_sf$geometry, pch = places$name, add = TRUE, cex =2)
# mapview::mapview(od_sf["departure"])

## -----------------------------------------------------------------------------
(od::od_coordinates(od_sf))

## -----------------------------------------------------------------------------
departure_times = c(
  8.5,
  11.5,
  12.25,
  12.75,
  17
)
set.seed(42) # if you want deterministic results, set a seed.
od_sf$departure = ab_time_normal(hr = departure_times, sd = 0.15, n = length(departure_times))

## -----------------------------------------------------------------------------
od_json1 = ab_json(od_sf[1, ], scenario_name = "activity")
od_json = ab_json(od_sf, scenario_name = "activity")

## ----absave-------------------------------------------------------------------
ab_save(od_json1, f = "scenario1.json")

## -----------------------------------------------------------------------------
# Save in the current directory:
ab_save(od_json, f = "activity_leeds.json")
# Save in a directory where you cloned the abstreet repo for the simulation
# ab_save(od_json, f = "~/orgs/a-b-street/abstreet/activity_leeds.json")



## ----eval=FALSE, echo=FALSE---------------------------------------------------
# # Regenerate json data
# ab_save(od_json, "inst/extdata/activity_leeds.json")

## ----eval=FALSE---------------------------------------------------------------
# file.edit("scenario1.json")

## -----------------------------------------------------------------------------
od_sf_roundtrip = ab_sf("activity_leeds.json")
# Or in the file saved in the abstr package
# od_sf_roundtrip = ab_sf(json = system.file("extdata/activity_leeds.json", package = "abstr"))
identical(od_sf$geometry, od_sf_roundtrip$geometry) 

## ----include=FALSE------------------------------------------------------------
file.remove("scenario1.json")

## -----------------------------------------------------------------------------
head(sao_paulo_activity_sf_2)
sp_2_json = ab_json(sao_paulo_activity_sf_2, mode_column = "mode", scenario_name = "2-agents")

## ----eval=FALSE---------------------------------------------------------------
# ab_save(sp_2_json, "activity_sp_2.json")

## -----------------------------------------------------------------------------
head(sao_paulo_activity_sf_20)
sp_20_json = ab_json(sao_paulo_activity_sf_20, mode_column = "mode", scenario_name = "20-agents")

## ----eval=FALSE---------------------------------------------------------------
# ab_save(sp_20_json, "activity_sp_20.json") # save in current folder, or:
# # save to directory where you cloned the abstreet repo
# # (replace '~/orgs...' with the path to your local directory)
# # ab_save(sp_20_json, "~/orgs/a-b-street/abstreet/activity_sp_20.json")

