将两个多边形区域合并为R中的单个多边形区域

2023-12-30

我是 R 中处理空间数据和多边形的新手。

我有两个独立的形状文件,包含从 Google 地球中提取的两个多边形。因此,基本上第一个形状文件是一个位置(例如购物中心等),第二个形状文件是第一个位置周围三公里的半径。我将两个形状文件作为 SpatialPolygonsDataFrames 读入 R。我使用以下代码:

library(maptools)
library(sp)
library(spatstat)
options(digits=10) 

# Read polygon a

a <- readShapeSpatial(file.choose())
class(a)

spatstat.options(checkpolygons=FALSE)

r <- slot(a,"polygons")
r <- lapply(r, function(a) { SpatialPolygons(list(a)) })
windows <- lapply(r, as.owin)
Ploy_One <- tess(tiles=windows)

# Read polygon b

b <- readShapeSpatial(file.choose())
class(b)

spatstat.options(checkpolygons=FALSE)

s <- slot(b,"polygons")
s <- lapply(s, function(b) { SpatialPolygons(list(b)) })

windows <- lapply(s, as.owin)
Poly_Two <- tess(tiles=windows)

# Read polygon b

Combined_Region <- intersect.tess(Poly_One, Poly_Two)
plot(Combined_Region)

但是,我没有得到两个多边形的组合视图(一个多边形在另一个多边形内的视图)。

如果有人对我如何在 R 中将两个多边形区域合并为一个多边形区域进行编码有一些建议,我将非常感激!


如果您决心使用spatstat包,这可能不会很有帮助。如果没有,请继续阅读...

如果您只想将多边形绘制为单独的图层,请使用ggplot

library(ggplot2)
library(sp)
library(maptools)

setwd("<directory with all your files...>")

poly1 <- readShapeSpatial("Polygon_One")
poly2 <- readShapeSpatial("Polygon_Two")
# plot polygons as separate layers,,,
poly1.df <- fortify(poly1)
poly2.df <- fortify(poly2)
ggplot() +
  geom_path(data=poly1, aes(x=long,y=lat, group=group))+
  geom_path(data=poly2, aes(x=long,y=lat, group=group), colour="red")+
  coord_fixed()

如果您需要将它们组合成一个spatialPolygonDataFrame,请使用它。这里的细微差别是你不能使用spRbind(...)如果两个图层具有共同的多边形 ID。所以调用spChFIDs(...)更改其中一个多边形的 IDpoly2(圆圈)到“R.3km”。

# combine polygons into a single shapefile
poly.combined <- spRbind(poly1,spChFIDs(poly2,"R.3km"))
# plot polygons using ggplot aesthetic mapping
poly.df <- fortify(poly.combined)
ggplot(poly.df) + 
  geom_path(aes(x=long, y=lat, group=group, color=group)) + 
  scale_color_discrete("",labels=c("Center", "3km Radius")) +
  coord_fixed()
# plot using plot(...) method for spatialObjects
plot(poly.combined)

您会注意到,在这些图上,“圆圈”不是。这是因为我们使用的是长/纬度,而您距离赤道以南很远。数据需要重新投影。事实证明,适合南非的 CRS 是utm-33 http://spatialreference.org/ref/epsg/32733/.

wgs.84 <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
utm.33 <- "+proj=utm +zone=33 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"
proj4string(poly.combined) <- CRS(wgs.84)
poly.utm33 <- spTransform(poly.combined,CRS(utm.33))
poly.df    <- fortify(poly.utm33)
ggplot(poly.df) + 
  geom_path(aes(x=long, y=lat, group=group, color=group)) + 
  scale_color_discrete("",labels=c("Center", "3km Radius")) +
  theme(axis.text=element_blank()) + labs(x=NULL,y=NULL) +
  coord_fixed()

现在圈子是。

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

将两个多边形区域合并为R中的单个多边形区域 的相关文章

  • 如何按时间间隔匹配数据帧?

    这是我从数据记录器导入原始数据时经常出现的问题 温度记录仪设置为每十分钟记录一次温度 单独的气体记录仪设置为记录最后十分钟间隔内使用的气体 我想将这两个记录器的数据合并到一个数据框中进行绘图和分析 但时间并不完全一致 我希望每十分钟的时间段
  • 如何在 R 中执行近似(模糊)名称匹配

    我有一个专门用于生物学期刊的大型数据集 该数据集是由不同的人长时间编写的 因此 数据不采用单一格式 例如 在 作者 栏中我可以找到John Smith Smith John Smith J等 但它们是同一个人 我连最简单的动作都做不了 例如
  • 如何在 R 中的 for 循环内将值存储在向量中

    我正在开始使用 R 但我对以下问题感到非常沮丧 我试图将 for 循环内完成的某些计算的值存储到我之前定义的向量中 问题是如何进行索引 因为for循环迭代代码的次数取决于用户的输入 所以变量i不一定要从1开始 它可以从80开始 for举个例
  • `dplyr::_join` 函数的命名向量“by”参数[重复]

    这个问题在这里已经有答案了 我正在写一个函数dplyr join两个数据框by不同的列 第一个数据帧的列名称动态指定为函数参数 我相信我需要使用rlang准引用 元编程 但未能找到可行的解决方案 我很感激任何建议 library dplyr
  • 在网格中制作一个矩形图例,并标记行和列

    我有一个 ggplot 我将因子映射到填充和 alpha 如下所示 set seed 47 the data lt data frame value rpois 6 lambda 20 cat1 rep c A B each 3 cat2
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • 为什么这个 R ggplot2 代码会显示一个空白的显示设备?

    虽然 SO 通常不用于帮助解决错误 但这个显示了特别简单且特别烦人的行为 如果你是一个ggplot2用户 您可以在 10 秒或更短的时间内重现它 正如这个 GitHub 问题 ggplot gtable 创建空白显示 https githu
  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • 增加雷达图中长轴标签的空间

    我想创建一个雷达图ggirahExtra ggRadar 问题是我的标签很长并且被剪掉了 我想我可以通过添加在标签和绘图之间创建更多空间margin margin 0 0 2 0 cm to element text in axis tex
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • R:如何将字符/数字转为1,NA转为0?

    有没有一种简单的方法可以将列的字符 数字变为 1 将 NA 变为 0 这里有一些示例数据 我想将其应用于 3 4 structure list Item Code c 176L 187L 191L 201L 217L 220L Item x
  • 如何在 R 中的 dygraph 标题中使用 UTF-8 字符

    使用 Rstudio Windows8 当我使用 dygraph 函数绘制时间序列时 在尝试在主标题中使用 UTF 8 字符时遇到问题 library dygraphs dygraph AirPassengers main T tulo 这
  • 使用数据帧的 R 中的 EWMA 波动性

    我正在尝试从一系列股票每日收益中获取 EWMA 波动性 这些收益来自一个名为base retorno diario Data IBOV ABEV3 AEDU3 ALLL3 BBAS3 BBDC3 BBDC4 1 2000 01 04 0 0
  • R:单纯形错误:在下标赋值中不允许使用 NA

    对于以下具有目标函数和约束的最小化 boot simplex返回错误 Error in tab pr lt tab pr tab pr pc pv o tab pr NAs are not allowed in subscripted as
  • R - 基于列名称的子集

    我的数据框有超过 120 列 变量 我想根据列名称创建子集 例如 我想创建一个子集 其中列名称包含字符串 心情 这可能吗 我一般用 SubData lt myData grep whatIWant colnames myData 我很清楚
  • StatET调试工具

    我想我只是很密集 但我似乎无法弄清楚如何在 Eclipse 中的 R 中使用调试工具 StatET 插件 有人有关于这个主题的任何提示或教程吗 StatET 2 00 现在对高级 可视化调试提供实验性支持 需要 Eclipse 3 6 或
  • 在 Google Colab 上的 R 笔记本中安装 python 库

    我正在尝试在 Google Colab 上的 R 笔记本中安装 python 库 为此我使用 reticulate 包 library reticulate py install pandas 但我得到的结果是这个错误 Error coul
  • R:改变堆积条形图的颜色

    library ggplot2 df2 lt data frame supp rep c VC OJ each 3 dose rep c D0 5 D1 D2 2 len c 6 8 15 33 4 2 10 29 5 head df2 g
  • 安装 2.15 后 ggplot2 中的 alpha 通道不起作用

    更新到 R 2 15 后 ggplot 中的 alpha 通道似乎不再起作用 plot rnorm 100 rnorm 100 bg cc000055 pch 21 工作得很好但是 qplot rnorm 100 rnorm 100 col
  • 将 Excel 文件读入 R 并锁定单元格

    我有一个 Excel 电子表格要读入 R 它受密码保护并锁定了单元格 我可以使用 excel link 导入受密码保护的文件 但我不知道如何解锁 取消保护单元格 excel link 给了我这个错误 gt

随机推荐

  • 避免“通过派生类型访问类型的静态成员”

    我相信这纯粹是 Resharper 警告 但其背后的原因 已解释 here https stackoverflow com questions 660132 using a classs static member on a derived
  • macOS 13升级xcode git命令行工具总是尝试找到旧的SDK,即使安装了git它仍然声称我需要安装

    xcodebuild 错误 无法找到 SDK Applications Xcode beta app Contents Developer Platforms MacOSX platform Developer SDKs MacOSX12
  • PyQt5:如何安装/运行 Qt Designer

    现在感觉真的很愚蠢 但标题说明了一切 How你启动QtDesigner了吗 我已经安装了PyQt5 via pip我相信已将其安装目录确定为 C Users username AppData Local Programs Python Py
  • “数据位”容量与“开销位”大小?

    我有点困惑 因为我找不到任何涵盖缓存 数据 部分的内容 我在 google 上搜索到的所有内容 99 9 都与缓存寻址有关 我被问到的问题是这样表述的 Contrast the difference between data bit cap
  • DbSet<>.Local 使用时需要特别小心吗?

    几天来 我一直在努力从存储库中检索我的实体 DbContext 我试图在原子操作中保存所有实体 因此 不同的实体在一起对我来说代表着有价值的东西 如果所有实体都是 有效 那么我可以将它们全部保存到数据库中 实体 a 已存储在我的存储库中 需
  • 多个物体之间的碰撞

    我正在编写一个简单的物理系统来娱乐 但我遇到了一个让我陷入困境的问题 现在的基本算法是 移动物体 检查是否有碰撞 If there was a collision 将对象移动最小距离以解决碰撞 根据法线 质量等调整速度 我有一个移动的物体朝
  • 情感分析中的否定处理

    我在这里需要一点帮助 我需要识别 不好 不错 等负面词语 然后识别情绪的极性 消极或积极 除了处理否定之外 我做了所有事情 我只是想知道如何将否定包含在其中 我该怎么办 否定处理是一个相当广泛的领域 有许多不同的潜在实现 在这里 我可以提供
  • 无法确定存储版本 - 实体框架

    我正在当前解决方案的一个单独的项目中实现代码优先模式 因为我这样做了 所以我初始化了我的连接字符串DbContext我收到这个奇怪的错误 无法确定存储版本 有效的存储连接或 需要版本提示 我正在使用 Entity Framework 5 0
  • 从对象验证消息中删除字段名称

    我在表单中使用它对对象进行了简单的活动记录验证 form error messages message gt header message gt 这又会输出类似 FieldName My Custom message 的内容 我需要做的是从
  • JavaFX BooleanProperty 和 Hibernate

    我正在尝试将 JavaFX BooleanPropety 添加到由 Hibernate 保留的模型中 但出现以下错误 Caused by org hibernate MappingException Could not determine
  • 避免在释放控件时调用 Invoke

    我的工作线程中有以下代码 ImageListView下面是源自Control if mImageListView null mImageListView IsHandleCreated mImageListView IsDisposed i
  • RSpec:如何存根继承的方法 current_user (无需设计)?

    我有一个基于 MHartl 的控制器RoR4 教程 http www railstutorial org book single page 就像 MHartl 一样 我没有使用设计 I 推出了我自己的身份验证系统 http www rail
  • UIImagePickerController 快门

    I have bug with UIImagePickerController which source type is camera Sometimes after controller appeared shutter is not o
  • 实现 π (pi) 的 Spigot 算法

    我很难理解插口算法找到 pi here http www cut the knot org Curriculum Algorithms SpigotForPi shtml在页面底部 我在第 2 部分 将 A 放入常规形式 的底部迷失了方向
  • 如何在 C# 中的随机端口上创建 HttpListener 类?

    我想创建一个在内部提供网页服务的应用程序 并且可以在同一台计算机上的多个实例中运行 为此 我想创建一个HttpListener监听的端口是 随机选择 目前未使用 本质上 我想要的是这样的 mListener new HttpListener
  • 如何设置新创建的 emacsclient 的样式和位置?

    我最近改用 emacsclient 进行大部分文本编辑 我正在尝试将一些设置迁移到新的 略有不同的 环境 特别是 在我的 emacs 文件中 我有一个设置窗口大小并准备一些主题的函数 但是 emacs 文件中的代码不会在每次调用 emacs
  • 如何在 AppEngine Standard 和 Nodejs 中提供静态文件

    The 文档 https cloud google com appengine docs standard nodejs serving static files表示您只需更新您的 app yaml 就像 AppEngine 中的任何语言一
  • MongoDB:将多个集合中的数据合并为一个......如何?

    我如何 在 MongoDB 中 将多个集合中的数据合并到一个集合中 我可以使用map reduce吗 如果可以的话怎么办 因为我是新手 所以我非常感谢一些例子 MongoDB 3 2 现在允许人们通过以下方式将多个集合中的数据合并为一个集合
  • 测试 SQL Server 连接

    我构建了一个基于 Excel 的工具 它使用 ODBC 连接和查询表从 SQL Server 2014 提取数据 该工具必须与 Mac Office 2016 兼容 因此需要 ODBC 和查询表 我正在努力测试用户是否可以连接到 SQL S
  • 将两个多边形区域合并为R中的单个多边形区域

    我是 R 中处理空间数据和多边形的新手 我有两个独立的形状文件 包含从 Google 地球中提取的两个多边形 因此 基本上第一个形状文件是一个位置 例如购物中心等 第二个形状文件是第一个位置周围三公里的半径 我将两个形状文件作为 Spati