将两个多边形区域合并为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中的单个多边形区域 的相关文章

  • 如何从 Fortran 调用 R 函数?

    根据http gallery rcpp org articles r function from c http gallery rcpp org articles r function from c Rcpp 允许用户从 C 调用 R 函数
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • 基于时间窗口的不规则时间序列的优化滚动函数

    有没有办法使用 rollapply 来自zoo包或类似的东西 优化功能 rollmean rollmedian等 使用基于时间的窗口计算滚动函数 而不是基于大量观察的函数 我想要的很简单 对于不规则时间序列中的每个元素 我想计算一个具有 N
  • 旋转 Markdown 的表格 pdf 输出

    我想将 pdf 上的表格输出旋转 90 度 我正在使用 Markdown 生成报告并kable循环显示表格 如果可以的话我想继续使用kable因为还有很多其他依赖于它的东西我没有包含在这个 MWE 中 这是一个简单的例子 使用iris数据集
  • 计算 R 中各列的唯一值

    我正在尝试创建一个新变量 其中包含来自两个不同列的字符串值的唯一计数 所以我有这样的东西 例如 A tibble 4 x 2 names partners
  • 所有 x 轴标签未以 45 度显示

    I m having the code as like below But I m not getting all the x axis labels and it is not displaying in 45 degree when I
  • 为什么 R 更新后 sim_slopes() 中会出现此错误?

    我正在尝试使用 交互 包来创建简单斜率的约翰逊 尼曼图 但是 当尝试运行 sim slopes 函数时 出现以下错误 直到我将R更新到4 2 2 我才没有遇到这个问题 我使用的是 macOS Ventura 13 1 Error class
  • read_html(url) 和 read_html(content(GET(url), "text")) 之间的区别

    我正在看这个很棒的答案 https stackoverflow com a 58211397 3502164 https stackoverflow com a 58211397 3502164 解决方案的开头包括 library httr
  • 如何使用 SparkR 1.6.0 写入 JDBC 源?

    使用 SparkR 1 6 0 我可以使用以下代码从 JDBC 源读取数据 jdbc url lt jdbc mysql localhost 3306 dashboard user
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 以编程方式将字符串宽度值插入到 sprintf() 中

    我正在尝试以编程方式将字符串宽度值插入到sprintf 格式 期望的结果是 sprintf 20s hello 1 hello 但我想插入20在同一通话中即时进行 因此它可以是任何号码 我努力了 sprintf ds 20 hello 1
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • R:使用 tidyverse 将 NA 替换为 df 中的其他变量

    我想使用 tidyverse 替换 df 中的 NA 值 我想要的值应该从其他列中计算出来 input ID X1 X2 X3 A 0 96 NA 0 97 B 1 00 NA 1 01 C 0 98 0 03 NA A 1 00 NA 1
  • 无法更改 RStudio 中的 R 版本

    我的 RStudio V 0 99 491 无法更改 R 版本 我以平常的方式行事Global Options gt R Version 然后它挂起并且不再工作或反应 R 运行良好的初始版本是R 3 1 0 我以前从未遇到过这样的问题 也许

随机推荐

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

    我相信这纯粹是 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