2017-06-13 15 views
0

R-ArcGISブリッジパッケージarcgisbindingを使用し始めましたが、フィーチャクラスデータをdplyrパッケージに結合しようとすると問題が発生しています。ここでは、2つのシェイプファイルから1つのデータフレームにオゾン列を取得し、シェイプファイルとしてエクスポートする例を示します。 arcgisbindingパッケージから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) 

p上記d形状属性を持つデータフレームのオブジェクトです。問題は、一度left_joinを使用すると、結合されたデータフレームの空間属性データが失われてしまうことです。これを回避する方法はありますか?

答えて

1

これは明らかに既知の問題です(see GitHub here)。

spdplyrパッケージを使用する回避策は、ESRI GeoNetのShaun Wallbridge(link to thread)を使用します。基本的に、arc.dataデータフレームをspオブジェクトに変換し、分析を実行して、フィーチャクラスまたはシェイプファイルとしてエクスポートします。

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) 
関連する問題