2014-01-15 49 views
1

我需要與多邊形(x,y)相交座標系(x,y,z),然後瞭解哪個點與z座標相交。多邊形和三維座標數據之間的交集。框架

coo=matrix(1:15, 3,3); 
colnames(coo)=c("x", "y", "z") 
coo=as.data.frame(coo) 
coordinates(coo)=~x+y+z 
l3=readWKT("POLYGON((1.5 0,10 0,10 10,1.5 10, 1.5 0))") 

我嘗試用包「rgeos」的gIntersection這就是結果

a=gIntersection(coo, l3) 
a 
SpatialPoints: 
    x y 
1 2 5 
1 3 6 
Coordinate Reference System (CRS) arguments: NA 

而且我嘗試用選項byid=T EDN函數返回的元素相交,但沒有Z座標。
我該怎麼辦?

+0

我不熟悉瓦特/'WKT' - 做了'POLYGON'創建有任何Z-COORDS?如果你將它構建爲'POLYGON((xy 0,xy 0,...'? –

+0

我嘗試過但它不起作用。 – user3115445

+0

瀏覽 - 我不清楚'sp'和'rgeos'支持3D多邊形,其他人可以澄清一下嗎? –

回答

0

一種解決方案是:

  1. 將您spatial類的對象爲data.frame。
  2. 在兩個數據幀之間執行merge
  3. 將合併的數據幀轉換回類spatial的對象。

將會有相交的座標x,y和z。

coo=matrix(1:15, 3,3) 
colnames(coo)=c("x", "y", "z") 
coo=as.data.frame(coo) 

require(sp) 
coordinates(coo)=~x+y+z 
l3=readWKT("POLYGON((1.5 0,10 0,10 10,1.5 10, 1.5 0))") 

require(rgeos) 
clip=gIntersection(coo,l3) 
clip = data.frame(clip) 

df = merge(clip,coo) 
coordinates(df)=~x+y+z 

輸出是:

df 

SpatialPoints: 
    x y z 
[1,] 2 5 8 
[2,] 3 6 9 
Coordinate Reference System (CRS) arguments: NA