跳到目录

R-CMD检查 项目状态:活动–项目已达到稳定可用状态,正在积极开发中。

生命周期:稳定 Codecov测试覆盖率 rOpenSci软件同行评审的状态 内政部

介绍

射频消除器允许用户通过开放的FEMA API访问联邦应急管理局(FEMA)的公开可用数据。该软件包提供了一组功能,可以轻松导航和访问FEMA提供的所有数据集,包括(但不限于)来自国家洪水保险计划和FEMA各种灾难援助计划的数据。

FEMA数据公开FEMA网站但是,文件有时非常大(数GB),很多时候用户不需要一个数据系列的所有记录(例如:许多用户可能只需要一个状态的记录数年)。使用FEMA的API是一个很好的选择,可以避免使用批量数据文件,但对于那些没有API经验的人来说,可能无法访问。此软件包包含一组函数,使用户无需任何API技术知识即可轻松识别和检索FEMA API中的数据。值得注意的是,FEMA API不需要API密钥,这意味着无论用户是否与API进行过交互,都可以非常容易地访问包。

本页的其余部分解释了该软件包的优点,并演示了软件包的基本用法。对于那些希望了解如何在工作流中使用包的更深入示例的人,请考虑阅读入门小插曲。

根据Open Fema条款和条件:本产品使用联邦应急管理局的Open Fema API,但未经Fema认可。联邦政府或联邦应急管理局在从该局网站检索数据后,无法对从这些数据中得出的数据或分析进行担保。联邦应急管理局(FEMA)对公开联邦应急管理署(Open FEMA)数据的首选引用指南可在以下网址找到:https://www.fema.gov/about/openfema/terms-conditions网站.

为什么是rfema?

通过射频消除器包与直接访问API相比?简而言之射频消除器该包处理与构建API查询、处理API限制以及应用过滤器或其他参数相关的大量繁琐工作。假设有人想获得2020年佛罗里达州所有洪水保险索赔的数据。以下代码在不使用射频消除器包裹。可以看出,它需要相当多的代码行,部分原因是API将每次调用的调用限制为1000条记录,这可能会使获取完整数据集变得很麻烦。

#在没有rfema包的情况下获得佛罗里达州洪水保险索赔数据所需的代码------------------

#为适当的api端点定义url
基本url <- "https://www.fema.gov/api/open/v2/FimaNfipClaims网站"

#附加base_url以应用筛选器
过滤器 <- “?$inlinecount=allpages&$filter=(state%20eq%20'FL')%20和%20(yearOfLoss%20eq%2020)”

api查询 <- 粘贴0(基本url,过滤器)

#运行一个查询,将topn参数设置为1,以检查有多少记录与过滤器匹配
记录检查查询 <- "https://www.fema.gov/api/open/v2/FimaNfipClaims?$inlinecount=allpages&$top=1&$filter=(state%20eq%20'FL')%20和%20(yearOfLoss%20eq%2020)“

#运行api调用并确定匹配记录的数量
结果 <- 高温气冷堆::GET(获取)(记录检查查询)
json数据 <- 高温气冷堆::内容(结果)        
n个记录 <- json数据$元数据$计数 

#使用
#FEMA定义的1000条记录/调用最大限制
迭代 <- 天花板(n个记录 / 1000)

#初始化跳过计数器,该计数器将指示
#每个API调用都需要从数据集开始。
跳过 <- 0

#进行多少API调用都是获取完整数据集所必需的
对于 ( 在里面 序列(= 1,至= 迭代,由= 1)) {
  #如上所述,如果您有筛选器、特定字段或正在排序,请添加
  #将其连接到基本URL,或者确保在此处将其连接起来。
  结果 <- 高温气冷堆::GET(获取)(粘贴0(api查询,“&$skip=”,( - 1) * 1000))
  如果 (结果$状态代码 != 200) {
    地位 <- 高温气冷堆::http_状态(结果)
    停止(地位$消息)
  }
  json数据 <- 高温气冷堆::内容(结果)[[2]]
  
  #对于作为列表列表返回的数据,请更正任何差异
  #通过将NA值添加到较短的列表中来确定列表的长度
  
  #计算最长列表
  最大列表长度 <- 最大值(狡猾的(json数据,长度))
  
  #将NA值添加到小于最大列表长度的列表中
  json数据 <- 翻领的(json数据,功能(x个) {
    c(x个,代表(不适用,最大列表长度 - 长度(x个)))
  })
  
  如果 ( == 1) {
    #将数据绑定到单个数据帧
    数据 <- 数据帧(do.呼叫(旋转,json数据))
  } 其他的 {
    数据 <- 数字播放器::绑定行(_R)(
      数据,
      数据帧(do.呼叫(旋转,json数据))
    )
  }
}

 
#从返回的数据框中删除html换行符(如果有)
数据 <- as_表格(重叠地(数据,功能(数据) gsub公司(“\n”,"",数据)))

#查看检索到的数据
数据
###A桥:9986×73
##农业…¹asOfD…²basem…³policy…²crsCl…¨dateO…⁶eleva…⁸eleva…⁹
##<chr><chr>
##1假2021-0…0 1 5 2020-0…假NULL 1
##2假2023-0…0 1 6 2020-0…假1空
##3错误2020-0…2 1 7 2020-0..正确3-6
##4 FALSE 2022-0…0 1 6 2020-0…FALSE 1 NULL
##5假2023-0…1 1 10 2020-0…假3 1
##6假2023-0…空1 6 2020-0…真空0
##7假2020-0…NULL 1 6 2020-0..假NULL 7
##8假2022-1…0 1 7 2020-0…假NULL NULL
##9假2022-1…0 1 5 2020-0…假1空
##10假2023-0…0 1 5 2020-0…假NULL 4
###…还有9976行,64个变量:baseFloodElevation<chr>,
###ratedFloodZone,houseWorship,locationOfContents,
###lowestAdjacentGrade<chr>,lowestFloorElevation<chr],
###numberOfFloorsInTheInsuredBuilding,非盈利指标,
###obstructionType<chr>,occupancyType<chr>,originalConstructionDate<chr>,
###originalNBDate<chr>,amountPaidOnBuildingClaim<chr],
###amountPaidOnContentsClaim<chr>…

使用rfema公司包裹。这个射频消除器包允许用两行代码发出相同的请求。值得注意的是打开电子邮件(_fema)函数处理记录数的检查,并实现一个迭代循环来处理1000条记录/调用的限制。

#定义要应用的筛选器列表
过滤器列表 <- 列表(状态= “FL”(飞行高度层),年亏损= "= 2020")

#使用“open_fema”函数进行API调用。该函数将输出
#发送到控制台的状态消息,可以监视数据检索的进度。
数据 <- 打开电子邮件(数据集= “fimaNfip索赔”,呼叫前询问= F类,筛选器= 过滤器列表)

#查看数据
数据
###A桥:9986×73
##农业…¹asOfDate basem…²policy…³crsCl…⑷dateOfLoss
##<chr><dttm><chr>
##1错误2021-03-30 00:00:00 0 1 5 2020-01-02 00:00:0
##2错误2023-06-01 00:00:00 0 1 6 2020-01-03 00:00:00
##3错误2020-07-17 00:00:00 2 1 7 2020-01-02 00:00:0
##4错误2022-09-11 00:00:00 0 1 6 2020-01-05 00:00:0
##5假2023-02-14 00:00:00 1 1 10 2020-01-09 00:00:0
##6假2023-03-03 00:00:00空1 6 2020-01-01 00:00:0
##7错误2020-04-20 00:00:00空1 6 2020-01-11 00:00:0
##8错误2022-11-16 00:00:00 0 1 7 2020-01-04 00:00:0
##9假2022-12-02 00:00:00 0 1 5 2020-01-12 00:00:0
##10假2023-02-22 00:00:00 0 1 5 2020-01-21 00:00:0
###…还有9976行,67个变量:elevatedBuildingIndicator<chr>,
###elevationCertificateIndicator<chr>,elevationDifference<chr],
###baseFloodElevation<chr>,ratedFloodZone<chr>,houseToshist<chr>,
###locationOfContents<chr>,lowestAdjacentGrade<chr],
###lowestFloorElevation<chr>,保险大楼中的楼层数,
###nonProfitIndicator<chr>,障碍类型<chr],占用类型<chr,
###originalConstructionDate<dttm>,originalNBDate<dttm>…

这个射频消除器在可能的情况下,该包还以更易于使用的格式返回数据。例如,所有函数都将数据作为tible返回,所有日期列都转换为POSIX格式。这使得绘制时间序列变得简单,因为API调用可以直接通过管道传输到ggplot图绘图。例如,以下是美国联邦应急管理局自2010年以来为应对飓风而发布的灾难声明数量图,其中佛罗里达州与美国其他州分列。在需要最新数据的应用程序中,可以重新运行此代码块以绘制来自FEMA API的最新数据。

图书馆(ggplot2)
打开电子邮件(“灾害声明摘要”,
过滤器= 列表(声明日期= ">= 2010-01-01",
意外事件类型= “飓风”),
呼叫前询问= F类) %>% 
  突变(日期= 杂交的::楼层_日期(声明日期,“年份”),计数= 1,
佛罗里达州= 因素(状态 == “FL”(飞行高度层))) %>%
  选择(日期,计数,佛罗里达州) %>%
  分组方式(_B)(日期,佛罗里达州) %>%
  总结(计数= 总和(计数)) %>%
  ggplot图(.,原子发射光谱(填满=佛罗里达州,年=计数,x个=日期)) + 
    地理工具栏(位置=“堆栈”,统计=“身份”) +
  缩放_照明_手动(名称= "",个值= c(“灰色80”,“森林绿化”),下降= 错误的,
标签= c(“美国其他地区”,“佛罗里达”)) +
  实验室(x个= “年份”,年= "",
标题= “县级FEMA飓风灾害声明”) +
  主题_灯光()

安装

现在,安装和使用射频消除器包是通过使用以下命令直接从rOpenSci安装的install.packages(“rfema”,repos=“https://ropensci.r-universie.dev公司")。FEMA API不需要和API密钥,这意味着无需采取进一步的设置步骤即可开始使用该包。

用法

对于那些不熟悉通过FEMA API提供的数据集的人来说,一个很好的起点是访问FEMA API文档页面。但是,如果您已经熟悉数据并希望快速引用数据集名称或其他元数据,请使用女性数据集()获取可用数据集以及相关元数据的函数是一个方便的选项。

#将可用数据集的元数据作为对象存储在R环境中
数据集 <- fema数据集()

#查看刚刚检索的数据
数据集
###A台:51×35
##identify…¹name title descr…²webSe…³dataD…⑷关键字modif…­publi…­conta…­
##<chr><chr>
##1 openfema…Fema…Fema…“这…https:…https:.…<list>2023-0…Federa…OpenFE…
##2 openfema…Ipaw…Ipaw…“The I.…https:…https:…<list>2020-0…Federa…OpenFE…
##3 openfema…Regi…Regi“这…https:…https:.…<list>2023-0…Federa…OpenFE…
##4 openfema…Regi…Regi“这…https:…https:.…<list>2023-1…Federa…OpenFE…
##5 openfema…Fema…Fema…“这…https:…https:.…<list>2023-0…Federa…OpenFE…
##6 openfema…Haza…Haza.…“d…https:…https:.…<list>2023-1…Federa…OpenFE…
##7 openfema…Hous…Hous“这…https:…https:.…<list>2023-0…Federa…OpenFE…
##8 openfema…Hous…Hous“The d.…https:…https:.…<list>2023-0…Federa…OpenFE…
##9 openfema…Indi…Indi…“这…https:…https:…<list>2020-0…联邦…OpenFE…
##10 openfema…Miss…Miss?“1.1 W.…https:?https:…<list>2023-0…Federa…OpenFE…
###…还有41行,25个变量:mbox<chr>,accessLevel<chr>,
###landingPage<list>,时态<list>、api<lgl>,版本<int>,
###bureauCode<chr>、programCode<chir>、license<list>、theme<list>,
###dataQuality<chr>,累算周期<list>,语言<chr>,
###references<list>,已发布<list>、recordCount<list>和depDate<list>,
###depApiMessage<list>,depWebMessage<list>depNewURL,hash<chr>,
###lastRefresh<chr>,id<chr>lastDataSetRefresh<list>…

获得所需数据集的名称后,只需将其作为参数传递给打开电子邮件(_fema)函数,该函数将数据集作为tibble返回。默认情况下,打开电子邮件(_fema)如果记录数大于1000,将向您发出警告,并显示完成记录请求所需的估计时间。作为用户,系统会要求您确认是否要检索所有可用记录(对于许多数据集来说,总记录非常大)。要关闭此功能,请设置参数呼叫前询问等于FALSE。要限制返回的记录数,请指定前n个参数。这对于在不检索所有记录的情况下探索数据集很有用。

#从fimaNfipClaims数据集中获取前10条记录。
#注意:data_set参数不区分大小写
检索的数据 <- 打开电子邮件(数据集= “fimanfipclaims”,前n名= 10)

#查看数据
检索的数据
###A台:10×73
##农业…¹asOfDate basem…²policy…³crsCl…⑷dateOfLoss
##<chr><dttm><chr>
##1假2020-01-22 00:00:00空1 8 1998-02-07 00:00:0
##2错误2020-01-22 00:00:00空1 8 2005-08-29 00:00:0
##3错误2020-01-22 00:00:00空1 9 1998-09-28 00:00:0
##4错误2019-09-19 00:00:00 1 1 9 1994-10-07 00:00:0
##5假2019-09-19 00:00:00空1 8 1996-03-11 00:00-00
##6假2020-01-22 00:00:00空1空1998-02-03 00:00:0
##7假2020-01-22 00:00:00空1 5 2017-08-27 00:00:00
##8假2019-10-19 00:00:00空1空1992-09-11 00:00:0
##9假2019-10-19 00:00:00空1 8 1998-09-28 00:00:0
##10假2019-09-19 00:00:00空1 8 1995-03-11 00:00-00
###…还有67个变量:elevatedBuildingIndicator<chr>,
###elevationCertificateIndicator<chr>,elevationDifference<chr],
###baseFloodElevation<chr>,ratedFloodZone<chr>,houseWorship<chr,
###locationOfContents<chr>,lowestAdjacentGrade<chr],
###lowestFloorElevation<chr>,保险大楼中的楼层数,
###nonProfitIndicator<chr>,障碍类型<chr],占用类型<chr,
###originalConstructionDate<dttm>,originalNBDate<dttm>…

通过指定要返回的记录数量、指定要返回数据集中的列以及对数据集中的任何列应用筛选器,还有多种其他方法可以更精确地定位要检索的数据。有关更多信息和用例示例,请参阅入门小插曲。


请注意射频消除器发布时带有贡献者行为准则。为套餐捐款即表示您同意遵守套餐的条款。