如何在 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 县代码?的主要内容,如果未能解决你的问题,请参考以下文章
如何阻止 Pandas DataFrame 无缘无故地将 int 转换为 float?
Python 电子邮件包:如何可靠地将多部分消息转换/解码为 str
R read_excel readxl 有时会错误地将数字转换为日期