让我们考虑具有足够大(例如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'。
任何人都可以建议如何克服这个错误。
答案 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))