readWKT中的多边形(" POLYGON((。))")在rgeos包中的功能

时间:2016-04-28 07:28:21

标签: r polygon geospatial

让我们考虑具有足够大(例如20个)顶点的二维多边形(X):

x= c(0.0003969323 , 0.008053435,  0.01570994,  0.02336644,  0.02873640,
    0.024194693, 0.019652986, 0.01511128, 0.01056957, 0.006027866, 
   -0.0003964319, -0.008052642, -0.01570885, -0.02336506, -0.02874606 ,-0.024202093,  
   -0.019658130,-0.01511417, -0.01057020, -0.006026239,  0.0003969323)

y=c( -0.0280138365, -0.023670987, -0.01932814, -0.01498529, -0.01004309,
 -0.002502845, 0.005037398 ,0.01257764, 0.02011789, 0.027658129,    
  0.0280152119, 0.023671847,  0.01932848,  0.01498512,  0.01004582,
  0.002506936, -0.005031947,-0.01257083 ,-0.02010971, -0.027648598, -0.0280138365)

X=cbind(x,y)

我正在尝试使用以下代码获取多边形,并计算两个此类多边形的面积之间的差异:

C=cbind(X[1,],X[2,])
C1=toString(paste(C[,1], C[,2], collapse = ','))
C2=noquote(C1)
poly_1=readWKT("POLYGON ((C2))")

但它给出了错误:

  

ParseException:预期的数字,但遇到了单词:' C2'。

任何人都可以建议如何克服这个错误。

1 个答案:

答案 0 :(得分:2)

这是我第一次在这里发帖,但我从StackOverflow那里得到了很多很棒的解决方案,我也想尝试提供帮助。

这是一个有效的例子:

x和y是分数

x<-c(0,3,3,0,0)
y<-c(0,0,3,3,0)

请注意,last和first元素是相同的!

多边形需要在它开始的同一个地方结束。

现在,创建一个要评估的字符串

ply<-paste0(noquote(
          paste(x,y,collapse=",")
          )
   )
ply<-paste0("POLYGON ((",ply,"))")
ply<-paste0('readWKT("',ply,'")')

到目前为止,ply是一个带有特殊字符的字符串“

\ #[1] "readWKT(\"POLYGON ((0 0,3 0,3 3,0 3,0 0))\")"

最后,评估表达式以创建多边形

ply<-eval(parse(text=ply))