多边形和3D坐标之间的交点data.frame

时间:2014-01-15 10:19:55

标签: r coordinates gis polygon intersection

我需要将坐标系(x,y,z)与多边形(x,y)相交,然后了解哪个点与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坐标 我该怎么办?

1 个答案:

答案 0 :(得分:0)

解决方案是:

  1. 将类spatial的对象转换为data.frame。
  2. 在两个data.frames之间执行merge
  3. 将合并的data.frame转换回类spatial的对象。
  4. 将有相交的坐标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