解析对查询的XML响应

时间:2016-03-22 20:20:22

标签: xml r api census

我正在尝试提取大量经度和纬度线的县fips数。我可以从FCC API获取数据,但我很难将其读入R。

例如,当我在R中运行以下代码时:

library(httr)
fips <- GET("http://data.fcc.gov/api/block/find", query = list(latitude = 48.9905, longitude = -122.2733, showall="false"))

result <- content(fips, as = "parsed")

result

对象&#34;结果&#34;显示如下

{xml_document}
<Response>
[1] <Block FIPS="530730102002091"/>
[2] <County FIPS="53073" name="Whatcom"/>
[3] <State FIPS="53" code="WA" name="Washington"/>

我感兴趣的信息是县FIPS代码&#34; 53073。&#34;我该如何提取这个数字?

2 个答案:

答案 0 :(得分:1)

您必须解析从该API返回的XML

library("httr")
library("XML")
fips <- GET("http://data.fcc.gov/api/block/find", query = list(latitude = 48.9905, longitude = -122.2733, showall="false"))
result <- content(fips, as = "parsed")
> xmlToList(xmlParse(result))$County["FIPS"]
   FIPS 
"53073" 

答案 1 :(得分:0)

另一种选择是使用以下链接中的代码:Latitude/Longitude to FIPS Codes via the FCC's API

# FCC's Census Block Conversions API
# http://www.fcc.gov/developers/census-block-conversions-api

install.packages("RCurl")
install.packages("RJSONIO")

latlong2fips <- function(latitude, longitude) {
  url <- "http://data.fcc.gov/api/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'])
}

# Orange County
latlong2fips(latitude=28.35975, longitude=-81.421988)

我相信有一个查询限制,但我还没有确定那是什么。