简体   繁体   English

如何从空间点数据框中根据treeID创建多边形?

[英]How to create polygon according to treeID from spatial points data frame?

I have created a spatial points data frame from .las file which has the following structure and headings. 我从.las文件创建了一个空间点数据框,该框具有以下结构和标题。

head(Rnorm@data)

         X       Y     Z  gpstime Intensity ReturnNumber NumberOfReturns Classification ScanAngle pulseID treeID
1: 390385.3 5847998 23.35 8194.459         9            1               2              5       -14       1    291
2: 390385.9 5847998  0.52 8194.479        76            1               1              4       -13       2    291
3: 390385.1 5847998  1.06 8194.483        72            1               1              4       -13       3    291
4: 390385.7 5847999  0.81 8194.483        75            1               1              4       -13       4    291
5: 390386.1 5848001  0.41 8194.503        15            2               2              3       -13       5    241
6: 390385.4 5848000  0.26 8194.503        78            1               1              3       -13       6    241

converting this data to spatial points data frame 将此数据转换为空间点数据帧

 df <- as.spatial(Rnorm)

the structure of the spatial points data frame looks like: 空间点数据框的结构如下:

 str(df)

Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots 带有5个插槽的正式类'SpatialPointsDataFrame'[package“ sp”]

..@ data       :'data.frame':   71164 obs. of  9 variables:
  .. ..$ Z              : num [1:71164] 23.35 0.52 1.06 0.81 0.41 ...
  .. ..$ gpstime        : num [1:71164] 8194 8194 8194 8194 8195 ...
  .. ..$ Intensity      : int [1:71164] 9 76 72 75 15 78 54 76 55 79 ...
  .. ..$ ReturnNumber   : int [1:71164] 1 1 1 1 2 1 1 1 2 1 ...
  .. ..$ NumberOfReturns: int [1:71164] 2 1 1 1 2 1 1 1 2 1 ...
  .. ..$ Classification : int [1:71164] 5 4 4 4 3 3 3 3 3 3 ...
  .. ..$ ScanAngle      : int [1:71164] -14 -13 -13 -13 -13 -13 -13 -14 -14 -14 
  .. ..$ pulseID        : int [1:71164] 1 2 3 4 5 6 7 8 9 10 ...
  .. ..$ treeID         : int [1:71164] 291 291 291 291 241 241 241 291 NA NA 
  ..@ coords.nrs : num(0) 
  ..@ coords     : num [1:71164, 1:2] 390385 390386 390385 390386 390386 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : NULL
  .. .. ..$ : chr [1:2] "X" "Y"
  ..@ bbox       : num [1:2, 1:2] 390281 5847998 390386 5848126
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:2] "X" "Y"
  .. .. ..$ : chr [1:2] "min" "max"
  ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
  .. .. ..@ projargs: chr NA

Now I want to create the polygon from each of the treeID which contains more than one points so would like to request for your kind help. 现在,我想从每个包含多个点的treeID创建多边形,因此希望请求您的帮助。

Thanks in advance for your kind help. 在此先感谢您的帮助。

The lidR package has the functionality you need to create individual tree polygons from point cloud data. lidR软件包具有您需要根据点云数据创建单个树多边形的功能。 The following example shows how to convert point cloud data to individual tree polygons: 以下示例显示了如何将点云数据转换为单个树多边形:

library(lidR)

# read file
las = readLAS("Example.las")

# ground classification
lasground(las, MaxWinSize = 10, InitDist = 0.05, CellSize = 7)

# normalization
lasnormalize(las, method = "knnidw", k = 10L)

# compute a canopy image
chm = grid_canopy(lasnorm, res = 0.5, subcircle = 0.2, na.fill = "knnidw", k = 4)
chm = as.raster(chm)
kernel = matrix(1,3,3)
chm = raster::focal(chm, w = kernel, fun = mean)
chm = raster::focal(chm, w = kernel, fun = mean)

# tree segmentation
crowns = lastrees(las, "watershed", chm, th = 4, extra = TRUE)

# display
tree = lasfilter(las, !is.na(treeID))
plot(tree, color = "treeID", colorPalette = pastel.colors(100), size = 1)

# More stuff
library(raster)
contour = rasterToPolygons(crowns, dissolve = TRUE)

plot(chm, col = height.colors(50))
plot(contour, add = T) 

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将类从数据框更改为空间多边形? - How to change class from data frame to spatial polygon? 如何从空间多边形数据集中为数据框指定坐标 - How to assign coordinates to a data frame from a Spatial polygon dataset 从空间多边形数据框中绘制一个多边形 - plot one polygon from a spatial polygon data frame 替换空间多边形数据框中的多边形 - Replace a Polygon in a Spatial Polygon Data Frame 如何从多边形数据中提取栅格值然后加入空间数据框? - How do I extract raster values from polygon data then join into spatial data frame? 来自空间点数据帧的子集随机点 - Subset random points from spatial points data frame 使用R将经纬度的数据框空间连接到多边形shapefil - Using R to spatial join a data frame of lat/long points to a polygon shapefil 根据时间 window 计算多边形内的空间点 - Counting spatial points within a polygon according to a temporal window 如何从空间点数据集创建内聚空间像素 - How to create cohesive Spatial Pixels from Spatial Points Dataset 创建一个空间多边形数据框,该框保留与另一个空间多边形数据框的重叠要素,但不裁剪多边形范围 - Create a spatial polygons data frame that preserves overlapping features with another spatial polygons data frame but does not clip polygon extent
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM