使用多边形图层下方的轮廓线切割多边形

2024-05-22

我想根据高程将多边形图层切割成两部分(上部和下部)。多边形可能是凸的或凹的,并且切割的位置可能彼此不同。等高线的间隔为 5m,这意味着我可能需要生成一个具有更紧凑的等高线的等高线,例如 1m 的间隔。关于如何做到这一点的任何想法,在 ArcGIS 中还是在 R 中更好? 下面是 Q 的运行示例:

library(sp)
library(raster)
r<-raster(ncol=100,nrow=100)
values(r)<-rep(1:100,100)
plot(r)   ### I have no idea why half of the value is negative...
p1<-cbind(c(-100,-90,-50,-100),c(60,70,30,30,60))
p2<-cbind(c(0,50,100,0),c(0,-25,10,0))
p1p<-Polygons(list(Polygon(p1,hole=T)),"p1")
p2p<-Polygons(list(Polygon(p2,hole=T)),"p2")
p<-SpatialPolygons(list(p1p,p2p),1:2)
plot(p,add=T)
segments(-90,80,-90,20)  ##where the polygon could be devided
segments(50,20,50,-30)  ##

先谢谢啦~

Marco


如果我理解正确的话,你可以使用rgeosR 中的包和相关空间工具。

我采取了缓冲相交线的技巧,然后从该站点生成“差异”多边形:

http://www.chopshopgeo.com/blog/?p=89 http://www.chopshopgeo.com/blog/?p=89

生成示例栅格和叠加的多边形。

vdata <- list(x = 1:nrow(volcano), y = 1:ncol(volcano), z = volcano)

## raw polygon data created using image(vdata); xy <- locator()

xy <- structure(list(x = c(43.4965355534823, 41.7658494766076, 36.2591210501883, 
25.560334393145, 13.7602020508178, 18.7949251835441, 29.179041644792, 
40.6645037913237, 44.2832110429707, 47.272577903027, 47.5872480988224
), y = c(30.0641086410103, 34.1278207016757, 37.6989616034726, 
40.900674136118, 32.7732500147872, 27.4781100569505, 22.5523984682652, 
22.7986840476995, 24.5226831037393, 29.3252519027075, 33.8815351222414
)), .Names = c("x", "y"))

## close the polygon
coords <- cbind(xy$x, xy$y)
coords <- rbind(coords, coords[1,])

library(sp)

## create a Spatial polygons object
poly <- SpatialPolygons(list(Polygons(list(Polygon(coords, hole = FALSE)), "1")))


## create a contour line that cuts the polygon at height 171
cl <- contourLines(vdata, levels = 171)

## for ContourLines2SLDF
library(maptools)

clines <- ContourLines2SLDF(cl)

现在,将多边形与线相交,然后稍微缓冲该线,并再次与多边形进行差异以得到多部分多边形。

library(rgeos)
lpi <- gIntersection(poly, clines)

blpi <- gBuffer(lpi, width = 0.000001)

dpi <- gDifference(poly, blpi)

绘制原始数据,以及从空间对象中手动提取的多边形半部。

par(mfrow = c(2,1))

image(vdata)
plot(poly, add = TRUE)

plot(SpatialPolygons(list(Polygons(list(dpi@polygons[[1]]@Polygons[[1]]), "1"))), 
     add = TRUE, col = "lightblue")

image(vdata)
plot(poly, add = TRUE)
cl <- contourLines(vdata, levels = 171)

plot(SpatialPolygons(list(Polygons(list(dpi@polygons[[1]]@Polygons[[2]]), "2"))), 
     add = TRUE, col = "lightgreen")

这适用于这个相当简单的情况,它可能对您的场景有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用多边形图层下方的轮廓线切割多边形 的相关文章

  • R 中的自定义对比:对比系数矩阵或对比矩阵/编码方案?以及如何到达那里?

    自定义对比在分析中应用非常广泛 例如 这个三水平因子的第 1 级和第 3 级的 DV 值是否有显着差异 直观上 这种对比用单元均值表示为 c 1 0 1 这些对比中的一个或多个 以列的形式绑定 形成对比系数矩阵 例如 mat matrix
  • 在 data.table 中进行浅复制

    我在一个 SO 主题中读到 Matt Dowle 关于一个问题的回答shallow函数进行浅拷贝data table 然而 我再也找不到话题了 data table没有任何调用的导出函数shallow 有一个内部的 但没有记录 我可以安全地
  • 自动使用 LRT 评估整个因子变量的显着性

    包含一个或多个因子变量的多变量回归模型的 R 输出不会自动包含模型中整个因子变量的显着性的似然比检验 LRT 例如 fake data frame x1 rnorm 100 x2 sample LETTERS 1 4 size 100 re
  • 无法使用 RODBC 附加到具有自动编号列的表

    我正在尝试使用 RODBC 将新行插入到 Microsoft Access 数据库中的表中 问题是主键列是一个自动编号 它似乎不允许我省略此列 我正在使用带有append TRUE 的sqlSave 函数和带有单行的数据框 我已经尝试过以下
  • 根据 r 中另一个数据帧中的列填充数据帧中的列

    我有一个评论数据框 如下所示 df1 Comments Apple laptops are really good for work we should buy them Apple Iphones are too costly we ca
  • 使用填充美学两次,具有两种不同的比例[重复]

    这个问题在这里已经有答案了 我正在尝试在一组多边形的顶部使用分组箱线图来绘制一个图 并且希望使用填充美学来基于连续变量为多边形着色 并且箱线图基于单独的分组变量 我发现了几篇文章可以帮助我获得多边形上的箱线图 并且找到了其他有相关问题的人
  • 使用名义变量删除 r 中的异常值

    比如说 我有三列 x lt c 10 1 6 50 x1 lt c 20 1 6 60 z lt c 1 2 3 4 5 6 7 8 检查 x 的异常值 bx lt boxplot x bx out 检查 x1 的异常值 bx1 lt bo
  • 使用 Eclipse 和 Rserve 从 Java 调用 R 的简单程序

    我的应用程序必须执行 R 操作 例如 m matrix sample 0 1 100 rep T ncol 10 结果应该可供 Java 应用程序使用 The 预留套餐 http www rforge net Rserve 将 R 与其他语
  • 闪亮错误:参数暗示行数不同

    我正在尝试开发一个简单的应用程序 从 Kijiji 网站获取本地分类广告 我用几乎相同的脚本制作了一个类似的应用程序 但我没有收到下面描述的错误 所以我不知道这个脚本出了什么问题 我尝试了我能想到的一切 但无法让它发挥作用 的结构df数据框
  • 如何让 print() 将参数传递给 R 中用户定义的打印方法?

    我在 R 中定义了一个 S3 类 它需要自己的打印方法 当我创建这些对象的列表并打印它时 R 按其应有的方式对列表中的每个元素使用我的打印方法 我想对打印方法实际显示的数量进行一些控制 因此 我的类的 print 方法需要一些额外的参数 但
  • par(mfrow=c(1,2)) 不显示并排密度图[重复]

    这个问题在这里已经有答案了 par mfrow c 1 2 plot 1 12 log y plot 1 2 xaxs i 然而 当我尝试做并排密度图时 图会单独输出 load the stud recs dataset library U
  • 返回数据帧 R 中的下一行

    我有一个看起来像这样的数据框 kind datetime book 2016 04 23 04 23 00 pen 2016 04 23 04 30 00 toy 2016 04 23 06 45 00 我想为数据集中的每一行返回下一行的日
  • 如何对同一列上的数据帧列表中的所有数据帧进行排序?

    我有一个数据框列表dataframes list 举个例子 我把dput dataframes list 在底部 我想对列列表中的所有数据框进行排序enrichment 我可以对一个数据框进行排序 first dataframe lt da
  • 将年月格式转换为 POSIXct [重复]

    这个问题在这里已经有答案了 我有一些年月形式的数据 我想将其格式化以用于绘图ggplot date lt c 2016 03 2016 04 2016 05 2016 06 2016 07 2016 08 2016 09 2016 10 2
  • 是否可以通过扫描从控制台读取而不回显字符?

    这是一个示例函数 passwordEntry lt function cat Enter your password pwd lt scan n 1 what character quiet TRUE invisible pwd 并测试该功
  • R中的一元加/减是什么?

    来自 R 的详细信息部分Syntax http stat ethz ch R manual R patched library base html Syntax html帮助页面 定义了以下一元和二元运算符 他们被列出 在优先级组中 从最高
  • R - Plm 和 lm - 固定效应

    我有一个平衡面板数据集 df 本质上由三个变量组成 A B and Y 对于一堆独特识别的区域来说 它会随着时间的推移而变化 我想运行一个回归 其中包括区域 下面等式中的区域 和时间 年份 固定效应 如果我没记错的话 我可以通过不同的方式来
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 选择 R 中的数据表中隐藏时(在绿色加号下方)列的显示顺序

    Context 使用 DataTables 库制作交互式表格时 当屏幕宽度对于列的数量和宽度来说太窄时 列将隐藏在绿色 号下 我有一个非常宽的表格 有 20 多列 其中一些内容非常冗长 因此某些列在所有屏幕宽度下总是隐藏的 每次隐藏新列时
  • 时间戳半小时窗口内字段的平均值

    我的数据框有列名Timestamp es看起来像 Timestamp es 2015 04 01 09 07 42 31 2015 04 01 09 08 01 29 5 2015 04 01 09 15 03 18 5 2015 04 0

随机推荐