我有一个有很多补丁(具有相同值的连续单元的块)的栅格地图。我需要做的是获得每个补丁的中心坐标(或接近中心)。 我对栅格包非常没有经验,但是只有当我知道地图中单元格的位置时,我才能得到坐标。有没有办法让坐标给出单元格的值呢?谢谢获取栅格地图中补丁的坐标(R中的栅格包)
1
A
回答
1
你可以采取每个补丁的坐标的平均值:
# some dummy data
m <- matrix(c(
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,4,4,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,4,4,0,
0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,4,4,0,
0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,
0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,
0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,
0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,
0,0,2,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), nrow=20, byrow=T)
# create a raster
r <- raster(m)
# convert raster to points
p <- data.frame(rasterToPoints(r))
# filter out packground
p <- p[p$layer > 0,]
# for each patch calc mean coordinates
sapply(split(p[, c("x", "y")], p$layer), colMeans)
+0
它的工作原理!谢谢! – Oritteropus 2013-03-26 09:03:52
4
如果补丁你的意思是团块,光栅包可以让你找到并隔离,团块。服用clump()
光栅包例子,扩展它:
library(raster)
library(igraph)
detach("package:coin", unload=TRUE)
r <- raster(ncols=12, nrows=12)
set.seed(0)
r[] <- round(runif(ncell(r))*0.7)
rc <- clump(r)
clump_id <- getValues(rc)
xy <- xyFromCell(rc,1:ncell(rc))
df <- data.frame(xy, clump_id, is_clump = rc[] %in% freq(rc, useNA = 'no')[,1])
df[df$is_clump == T, ]
plot(r)
plot(rc)
text(df[df$is_clump == T, 1:2], labels = df[df$is_clump == T, 3])
可能不会像有趣,你可以期望。
您与方向= 4
rc <- clump(r, directions = 4)
clump_id <- getValues(rc)
xy <- xyFromCell(rc,1:ncell(rc))
df <- data.frame(xy, clump_id, is_clump = rc[] %in% freq(rc, useNA = 'no')[,1])
df[df$is_clump == T, ]
重来一次得到
,也许丛 '重心'
dfm <- ddply(df[df$is_clump == T, ], .(clump_id), summarise, xm = mean(x), ym = mean(y))
plot(rc)
text(dfm[, 2:3], labels = dfm$clump_id)
注意:
如果您尝试使用clump()
没有首先 分离modeltools库将有一个错误。模型工具是由硬币调用的,也可能是其他统计库。
相关问题
- 1. R栅格包中的交叉带
- 2. R中的多个栅格盒形图
- 3. R中栅格和多边形的坐标参考系统
- 4. 覆盖栅格包R中的许多ASCII图层R
- 5. 如何用R中另一个栅格的值替换大栅格中的NA?
- 6. 使用另一个栅格的作物栅格R
- 7. 来自PostGIS栅格中其他栅格记录的平均栅格记录
- 8. 层不会栅格化中的R
- 9. 用R中的输入聚合栅格
- 10. R的栅格ggplot图像为tikzdevice
- 11. 获取栅格细胞中心的摘要向量在R
- 12. 标签对中的R栅格条棒图表
- 13. R - 用栅格创建boxplot
- 14. R:使用第二个栅格堆栈中的图层替换栅格堆栈中的多个图层
- 15. MATLAB和栅格图
- 16. R栅格识别黑色光栅图像
- 17. 栅格刷新时,Dojo栅格隐藏
- 18. 查询栅格创建结果栅格
- 19. 确定栅格中栅格单元的大小
- 20. 栅格列表中同一日期的镶嵌栅格
- 21. 重复相同的栅格图层来创建栅格堆栈
- 22. 在Plotly(R API)中绘制地理参考栅格图像
- 23. R栅格修剪plotRGB图像
- 24. R:使用栅格包的函数中的错误
- 25. 带格栅图像的旋转标签
- 26. R - 在大栅格图层中查找特定单元格值
- 27. R中的自定义调整栅格符号包
- 28. 如何从java中的图像获取栅格?
- 29. 高效地从R中的栅格堆栈访问数据
- 30. 从Linux上的R列表中错误地堆叠栅格
你是如何创建你创建/导入你的光栅?如果您展示了数据样本,用于创建栅格的代码和/或您尝试的内容,我会更简单地帮助您。 – plannapus 2013-03-26 08:51:14
请参阅'?click'和可能还有'?zoom'。 – 2013-03-26 08:57:33
作为一种替代方案,您可能想要使用ImageJ,它具有丛/找斑工具。 – 2013-03-26 11:40:34