如何在 R 中毫无问题地将 Lat-Long 转换为 FIPS 县代码?

Posted

技术标签:

【中文标题】如何在 R 中毫无问题地将 Lat-Long 转换为 FIPS 县代码?【英文标题】:How can I convert Lat-Long to FIPS county code without problems in R? 【发布时间】:2014-04-15 18:43:18 【问题描述】:

我有数千个经纬度点,我使用此代码将其转换为 FIPS 县代码。

latlong2county <- function(pointsDF) 
# Prepare SpatialPolygons object with one SpatialPolygon
# per state (plus DC, minus HI & AK)
states <- map('county', fill=TRUE, col="transparent", plot=FALSE)
IDs <- sapply(strsplit(states$names, ":"), function(x) x[1])
states_sp <- map2SpatialPolygons(states, IDs=IDs,
                               proj4string=CRS("+proj=longlat +datum=wgs84"))

# Convert pointsDF to a SpatialPoints object 
pointsSP <- SpatialPoints(pointsDF, 
                        proj4string=CRS("+proj=longlat +datum=wgs84"))

# Use 'over' to get _indices_ of the Polygons object containing each point 
indices <- over(pointsSP, states_sp)

# Return the state names of the Polygons object containing each point
stateNames <- sapply(states_sp@polygons, function(x) x@ID)
stateNames[indices]


data(county.fips)
latlon <- data.frame(all$lon,all$lat)
county<-latlong2county(latlon)
fips<-with(county.fips, fips[match(county, polyname)])

但是,这样做的问题是它没有将所有经纬度转换为 FIPS 代码。我得到合法县的 NA 值。有人可以帮忙吗?

或者只是提出不同的解决方案?

【问题讨论】:

maps 包中的多边形分辨率很低。如果您还没有,您应该检查(通过绘图)返回 NA 的那些点实际上位于正确的县。 最好的就是 gov api:fcc.gov/developers/census-block-conversions-api 【参考方案1】:

虽然此解决方案不是基于 python,但您可以使用 ruby​​ 和 geokit gem 来预处理您的数据,然后通过 csv 文件或其他方式将其传递给 R。

请参阅此write-up 了解更多说明。

【讨论】:

以上是关于如何在 R 中毫无问题地将 Lat-Long 转换为 FIPS 县代码?的主要内容,如果未能解决你的问题,请参考以下文章

在R中有效地将反斜杠转换为正斜杠

如何阻止 Pandas DataFrame 无缘无故地将 int 转换为 float?

Python 电子邮件包:如何可靠地将多部分消息转换/解码为 str

R read_excel readxl 有时会错误地将数字转换为日期

如何正确地将 USC-2 little endian 转换为 UTF-8?

每次我使用融合位置 api 获取 lat-long 时都会改变 Lat-long,即使我仍然在同一个位置