-
Notifications
You must be signed in to change notification settings - Fork 0
/
nbm_data.qmd
70 lines (51 loc) · 1.94 KB
/
nbm_data.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
---
title: "FCC NBM data"
date: last-modified
format:
html:
code-fold: true
engine: knitr
---
```{r}
#| label: utility functions
source("R/table_with_options.R")
```
This page will display all available data (minus challenge data[^chalenge_api]]) that can downloaded from FCC NBM.
[^chalenge_api]: this data is stored in a slighly different endpoint see
## Getting the Information about NBM Release:
```{r}
#| label: setting URL and getting a table with release
#| eval: false
filing_url <- "https://broadbandmap.fcc.gov/nbm/map/api/published/filing"
# getting a list of release
get_release <- function(filing_url) {
req <- curl::curl_fetch_memory(filing_url)
release <- jsonlite::fromJSON(rawToChar(req$content))$data
return(release)
}
release <- get_release(filing_url)
table_with_options(release)
```
## Getting links for every CSV in NBM:
Even if NBM have a biannual release cycle it is updated more frequently (around every two weeks).
```{r}
#| label: list all available data
#| eval: false
get_data_url <- paste0("https://broadbandmap.fcc.gov/nbm/map/api/",
"national_map_process/nbm_get_data_download/")
get_csv_to_dl <- function(release_file, release_nb) {
get_data_url <- paste0(get_data_url,
release_file[release_nb, "process_uuid"])
raw_dat <- curl::curl_fetch_memory(get_data_url)
csv_to_dl <- jsonlite::fromJSON(rawToChar(raw_dat$content))$data
csv_to_dl[["release"]] <- release_file[release_nb, "filing_subtype"]
return(csv_to_dl)
}
big_list <- lapply(1:nrow(release), get_csv_to_dl, release_file = release)
all_data <- do.call(rbind, big_list)
col_to_keep <- c("release", "data_type", "technology_code", "state_fips", "provider_id", "file_name", "file_type", "data_category")
slim_all_data <- all_data[, col_to_keep]
fixed <-
slim_all_data[slim_all_data$data_type == "Fixed Broadband" | slim_all_data$data_category == "Nationwide" , ]
table_with_options(fixed)
```