R-ArcGIS:无法使用数据框执行dplyr连接?

时间:2017-06-13 01:49:59

标签: r dplyr arcgis

我刚刚开始使用R-ArcGIS桥接软件包arcgisbinding,当我尝试使用dplyr软件包加入要素类数据时,我遇到了问题。这是一个例子,我试图将两个shapefile中的臭氧列放入一个数据框中,然后作为shapefile导出。

library(dplyr)
library(arcgisbinding)
arc.check_product()

fc <- arc.open(system.file("extdata", "ca_ozone_pts.shp",
                       package="arcgisbinding"))
d <- arc.select(fc, fields=c('FID', 'ozone'))
p<-arc.select(fc,fields=c('FID', 'ozone'))
p$ozone<-p$ozone*2
p<-left_join(p,d,by="FID")
arc.write(tempfile("ca_new", fileext=".shp"), p)
# original dataframe has shape attributes
str(d)
# new dataframe does not
str(p)

arcgisbinding包中,上面的pd是具有形状属性的数据框对象。问题是,一旦我使用left_join,我就会丢失连接数据框中的空间属性数据。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

显然这是一个已知问题(see GitHub here)。

使用spdplyr软件包的解决方法来自ESRI GeoNet上的Shaun Wallbridge(link to thread)。基本上,将arc.data数据帧转换为sp对象,执行分析,然后导出为要素类或shapefile。

library(spdplyr)
library(arcgisbinding)
arc.check_product()

fc <- arc.open(system.file("extdata", "ca_ozone_pts.shp", package="arcgisbinding"))
d <- arc.select(fc,fields=c('FID', 'ozone'))
d.sp <- arc.data2sp(d)

p <-arc.select(fc,fields=c('FID', 'ozone'))
p.sp <- arc.data2sp(p)
p.sp$ozone <- p$ozone*2

joined <- left_join(p.sp, d.sp, by="FID", copy=TRUE)
joined.df <- arc.sp2data(joined)

arc.write(tempfile("ca_ozone_pts_joined", fileext=".shp"), joined.df)