如何在R或Python中将County FIPS转换为经纬度坐标?

时间:2019-06-17 21:48:18

标签: r shiny leaflet geo

由于世界卫生组织的IARC将草甘膦列为可能的致癌物质,草甘膦最近引起了人们的关注。我对美国的农药使用方式感到好奇,例如使用传单在R-Shiny中使用交互式地图绘制此数据。

可在以下位置找到县的农药使用量估算值:https://water.usgs.gov/nawqa/pnsp/usage/maps/county-level/

使用州/县FIPS代码报告数据。我需要经纬度坐标才能显示数据。

似乎很容易从经纬度转换为FIPS,如此处的API所示:https://geo.fcc.gov/api/census/

如何反向行驶?

1 个答案:

答案 0 :(得分:0)

我发现需要使用来自here.com的五个选项中的REST API(以下)的解决方案。我首先使用fips_codes中的表library(tigris)将USGS表中的FIPS代码与县名和州名进行了交叉引用。这给了我一些名字,像Boulder County, CO一样放在地址行中。接下来,我编写了一个小函数here_now,其示例用法为:

here_now("Boulder+County,+CO") # $lat: 40.08791; $lon: -105.3447

实现是使用fromJSON中的library(jsonlite)到REST API的调用

here_now <- function(searchtext) {

    AppCode <- getOption("hereAppCode")
    AppID <- getOption("hereAppID")       

    rootURL <- "https://geocoder.api.here.com/6.2/geocode.json?"
    app_id = paste("app_id", AppID, sep="=")
    app_code = paste("app_code", AppCode, sep="=")
    searchtext = paste("searchtext", searchtext, sep="=")

    request <- paste(paste(rootURL, app_id, sep=''), app_code, searchtext, sep="&")
    response = fromJSON(request)

    res <- list()
    res$lat <- response$Response$View$Result[[1]]$Location$NavigationPosition[[1]]$Latitude
    res$lon <- response$Response$View$Result[[1]]$Location$NavigationPosition[[1]]$Longitude

    res
}

此外,我使用了FCC的反向地理编码API进行验证:https://geo.fcc.gov/api/census/

我尝试过的地理编码选项包括: -通过ggmap的Google API(需要API密钥,需要信用卡) -mapquest API(需要API密钥,无需信用卡) -数据科学工具包的RDSK实施 -通过同名的R包进行地名服务 -此处的API(需要AppID和AppCode,免费增值模式)