r - 使用 FCC API 将 Lat/Lon 转换为县代码
问题描述
感谢@caldwellst 和@rohit ,我之前想出了如何使用 FCC API(在 2 列数据帧上应用 API 函数,输出第三列)将纬度/经度转换为县级 FIPS 代码。不幸的是,FCC 修改了 API,我无法弄清楚如何修复代码以再次工作。
这是新 API 的链接:https ://geo.fcc.gov/api/census/
这是我的数据框:
> head(df_coords)
# A tibble: 6 x 3
lon lat censusYear
<dbl> <dbl> <dbl>
1 -112. 33.4 2010
2 -73.2 44.5 2010
3 -88.2 41.9 2010
4 -88.2 41.9 2010
5 -88.4 41.9 2010
6 -77.1 39.0 2010
这是我之前借用/改编的函数以及运行它的命令:
geo2fips <- function(latitude, longitude) {
url <- "https://geo.fcc.gov/api/census/block/find?format=json&latitude=%f&longitude=%f"
url <- sprintf(url, latitude, longitude)
json <- RCurl::getURL(url)
json <- RJSONIO::fromJSON(json)
as.character(json$County['FIPS'])
}
df_fips$county_fips <- mapply(geo2fips, df_fips$lat, df_fips$lon)
这是我运行它时收到的错误消息:
Error in function (type, msg, asError = TRUE) :
Unknown SSL protocol error in connection to geo.fcc.gov:443
谁能帮我解决这个问题?我认为这可能与人口普查年的要求有关,所以我尝试修改代码如下,但它返回了相同的错误消息:
geo2fips <- function(latitude, longitude, censusYear) {
+ url <- "https://geo.fcc.gov/api/census/block/find?format=json&latitude=%f&longitude=%f&censusYear=%f"
+ url <- sprintf(url, latitude, longitude, censusYear)
+ json <- RCurl::getURL(url)
+ json <- RJSONIO::fromJSON(json)
+ as.character(json$County['FIPS'])
+ }
> df_coords$county_fips <- mapply(geo2fips, df_coords$lat, df_coords$lon, df_coords$censusYear)
Error in function (type, msg, asError = TRUE) :
Unknown SSL protocol error in connection to geo.fcc.gov:443
>
非常感谢任何可以提供帮助的人。-麦克风
解决方案
URL 和参数略有变化 - 您可以使用:
geo2fips <- function(latitude, longitude) {
url <- "https://geo.fcc.gov/api/census/area?lat=%f&lon=%f&format=json"
res <- jsonlite::fromJSON(sprintf(url, latitude, longitude))[["results"]][["county_fips"]]
unique(res)
}
jsonlite
如果您使用包而不是RSJONIO
前者直接接受连接,您还可以稍微简化一些事情。
推荐阅读
- json - 再次登录时跳转到第 5 步(ViewController 5)
- .net - 通过 Angular 8 客户端对用户进行身份验证时出现未知错误
- regex - 从数据集中提取数据
- swift - SwiftUI - 使用“ObservableObject”和@EnvironmentObject 有条件地显示视图
- r - 如何按组获得最高数量的列
- python - 整数下限到最接近的 10,000
- php - 如何根据列中的值显示按钮
- python - 有没有办法在使用浮点数的同时按键值对字典进行排序?
- node.js - NodeJS Async Await 将数据插入数据库和 Google API
- jquery - Jquery mmenu 从 bootstrap 4 布局中退出