我尝试使用CurveTransect在横断面上创建等距点。https://github.com/esbach/CurveTransect
但是,我总是遇到一个错误。
transectXY = data.frame(matrix(nrow=11, ncol=2))
colnames(transectXY) = c("x", "y")
transectXY$x = c(1096002, 1096052, 1096002, 1095952, 1096002, 1096052, 1096002, 1095952, 1096002, 1096052, 1096002)
transectXY$y = c(-39178.7, -39078.7, -38978.7, -38878.7, -38778.7, -38678.7, -38578.7, -38478.7, -38378.7, -38278.7, -38178.7)
transectXY = data.matrix(transectXY)
library(Orcs) #coords2Line
transect = coords2Lines(transectXY, ID="A") # transectXY into line
library(smoothr) #curve smoothing
transect = smooth(transect, method="chaikin") # smooth line
projected = CRS("+proj=utm +zone=17 +ellps=intl +units=m +datum=WGS84 +no_defs") # add a crs
proj4string(transect) = projected
plot(transect)
print(plot)
library(rgeos) # gLength
length = round(gLength(transect))
transectXY = data.matrix(transect@lines[[1]]@Lines[[1]]@coords)
**transectXY = observerXY(transect=transectXY, spacing=1)** in this step!!
is.data.frame(frame)中的错误:试图从一个没有槽的基本类(“matrix”)的对象中获取槽“行”
我解决不了这个问题。有人能帮帮我吗?谢谢你,谢谢
此错误消息表示该函数试图从类“matrix”的对象访问名为“lines”的插槽,该对象没有任何插槽。
在将矩阵传递给observerXY()
函数之前,我尝试使用as.data.frame()
函数将其转换为 Dataframe 。
然而,它不能工作。
1条答案
按热度按时间bhmjp9jg1#
看起来这个例子与正确版本的函数“XnverXY”不匹配。该函数接受一个SpatialLinesDataFrame,并自动执行您发布的倒数第二行(即,您不需要
transectXY = data.matrix(transect@lines[[1]]@Lines[[1]]@coords)
。在
length = round(gLength(transect))
之后,您可以使用以下命令:这是一个完全可重复的结果: