2017-06-13 25 views
0

我剛剛開始使用R-ArcGIS橋包arcgisbinding,並且在嘗試將要素類數據與dplyr包結合時遇到問題。下面是一個例子,我試圖從兩個shape文件中將臭氧層列轉換爲單個數據幀,然後將其作爲shapefile導出。上述R-ArcGIS:不可能用數據框執行dplyr連接?

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

顯然這是一個已知的問題(see GitHub here)。

使用spdplyr包的解決方法是通過Sharon Wallbridge在ESRI GeoNet(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) 
相關問題