使用 sf 在 R 中求多边形的交集

2023-11-24

我想通过查看 400m(步行 5 分钟)内其他点的数量来评估每个点与其他等效点的空间接近程度。

我在地图上有一些点。 我可以在它们周围画一个简单的 400 m 缓冲区。 我想确定哪些缓冲区重叠,然后计算重叠的数量。 这个重叠数应该与原始点相关,这样我就可以看到哪个点的重叠数最多,因此如果我从该点步行 400 m,我可以确定我可以到达多少个其他点。

我在 GIS 溢出中问过这个问题,但我不确定 ArcGIS 是否会回答这个问题,我想我更喜欢在 R 中完成这项工作。

这就是我的目标https://www.newham.gov.uk/Documents/Environment%20and%20planning/EB01.%20Evidence%20Base%20-%20Cumulative%20Impact%20V2.pdf

为了简化这里有一些代码

# load packages
library(easypackages)
needed<-c("sf","raster","dplyr","spData","rgdal",
          "tmap","leaflet","mapview","tmaptools","wesanderson","DataExplorer","readxl",
          "sp" ,"rgisws","viridis","ggthemes","scales","tidyverse","lubridate","phecharts","stringr")
easypackages::libraries(needed)

## read in csv data; first column is assumed to be Easting and second Northing
polls<-st_as_sf(read.csv(url("https://www.caerphilly.gov.uk/CaerphillyDocs/FOI/Datasets_polling_stations_csv.aspx")),
                coords = c("Easting","Northing"),crs = 27700)
polls_buffer_400<-st_buffer(plls,400)
polls_intersection<-st_intersection(x=polls_buffer_400,y=polls_buffer_400)
plot(polls_intersection$geometry)

这应该显示投票站周围重叠的缓冲区。 我想做的是计算此处完成的重叠次数:

polls_intersection_grouped<-polls_intersection%>%group_by(Ballot.Box.Polling.Station)%>%count()

这是我不确定的一点,为了获得我想要的输出(在这种情况下将显示投票站的“热点”)我该如何着色?我怎么能够 : 通过查看 400m(步行 5 分钟)内其他点的数量来评估每个点与其他等效点的空间接近程度。

这可能是非常糟糕的形式,但这是我最初的 GIS 问题https://gis.stackexchange.com/questions/328577/buffer-analysis-of-points-counting-intersects-of-resulting-polygons

编辑: 这给了交叉点不同的颜色,这很棒。 绘图(polls_intersection$geometry,col = sf.colors(calcategori = TRUE,alpha = .5))

summary(lengths(st_intersects(polls_intersection)))

我在这里涂什么颜色?我的意思是它看起来不错,但我真的不知道我在做什么。


我如何:通过查看 400m(步行 5 分钟)内其他点的数量来评估每个点与其他等效点的空间接近程度。

以下是如何将列添加到您的初始sfc投票站数量,告诉您该要素中每个要素 400m 范围内有多少个投票站sfc.

请注意,最小值是1因为投票站的距离总是在 400m 之内。

# n_neighbors shows how many polling stations are within 400m
polls %>% 
  mutate(n_neighbors = lengths(st_is_within_distance(polls, dist = 400)))

同样,对于你的sfc相交多边形的集合,您可以添加一列来计算包含每个相交多边形的缓冲区多边形的数量:

polls_intersection %>% 
  mutate(n_overlaps = lengths(st_within(geometry, polls_buffer_400)))

这是我不确定的一点,为了获得我想要的输出(在这种情况下将显示投票站的“热点”)我该如何着色?

如果你想绘制这些东西我强烈建议使用ggplot2。它非常清楚地表明如何将颜色等属性与特定变量关联起来。

例如,这是一个映射示例alpha(透明度)每个多边形的缩放版本n_overlaps column:

library(ggplot2)
polls_intersection %>% 
  mutate(n_overlaps = lengths(st_covered_by(geometry, polls_buffer_400))) %>% 
  ggplot() + 
  geom_sf(aes(alpha = 0.2*n_overlaps), fill = "red") 

enter image description here

最后,应该有一种更好的方法来生成已经计算重叠的相交多边形。这是内置于st_intersection求交点的函数sfc对象与自身。

但是,当您尝试执行此操作时,您的数据尤其会生成错误:

st_intersection(polls_buffer_400)

# > Error in CPL_nary_intersection(x) : 
#>  Evaluation error: TopologyException: side location conflict at 315321.69159061194 199694.6971799387.

我不知道什么是“侧面位置冲突”。也许@edzer 可以帮助解决这个问题。但是,大多数数据子集不包含该冲突。例如:

# this version adds an n.overlaps column automatically:
st_intersection(polls_buffer_400[1:10,]) %>% 
  ggplot() + geom_sf(aes(alpha = 0.2*n.overlaps), fill = "red") 

enter image description here

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

使用 sf 在 R 中求多边形的交集 的相关文章

  • R 中的点图每行有多个值

    我有以下 R 输入文件 car 1 car 2 car 3 car2 1 car2 2 car2 3 然后 我使用以下命令来绘制图表 autos data 点图 autos data V2 autos data V1 但这将每个汽车和 ca
  • R,igraph,是否可以用图案填充顶点

    使用 R 和 igraph 绘制图形 我使用颜色来标记顶点类型 请参阅下面的代码 是否可以用图案而不是颜色填充顶点 以便在以彩色和黑白查看时可以区分节点类型 我需要 4 种独特的颜色 图案 colorbrewer 中唯一适合的调色板是这个
  • Shiny :针对所有错误显示一条消息

    我在 R 的 Shiny 中有一个应用程序 我想处理消息 以便用户看不到发生了什么错误 我知道通过 tags style type text css shiny output error visibility hidden shiny ou
  • 使用 R 下载压缩数据文件、提取并导入 .csv

    我正在尝试使用以下方法从网页下载并提取 csv 文件R 这个问题是重复的使用 R 下载压缩数据文件 提取和导入数据 https stackoverflow com questions 3053833 using r to download
  • 使用 R 将日期格式的字符串列表/向量转换为 posix 日期类

    我有一个日期格式的字符串列表 我想将其转换为可以使用 R 操作的 posix 日期列表 我该怎么做 这就是我所拥有的 但我最终得到了一个列表 a lt c 2009 01 01 00 00 00 2009 01 01 00 00 00 z
  • R 3.5 - read.csv 无法读取 UTF-16 csv 文件

    我的代码如下 read csv http asic gov au Reports YTD 2018 RR20180420 001 SSDailyYTD csv skip 1 fileEncoding UTF 16 sep t header
  • 在列标题和配对变量中嵌入数据的数据透视表

    假设我有这样的数据 不幸的是 变量值嵌入在列名称中 library tidyr library dplyr dat lt tribble group var1 var meta1 var2 var meta2 group1 5 2 cat
  • 按名称包含在单个对象中的多个列对 data.frame 进行排序?

    我想排序一个data frame由多列组成 理想情况下使用基础 R 无需任何外部包 尽管如果有必要 就这样吧 读过如何按列对数据框进行排序 https stackoverflow com questions 1296646 how to s
  • R中data.frame(列表)的列平均值

    Data https i stack imgur com ZYsmv jpg 请 我需要计算此 data frame 中维吉尼亚币 Sepal Length 列的平均值 Sepal Length Sepal Width Petal Leng
  • ggplot 按因子和梯度颜色

    我正在尝试绘制一个对两个变量 一个因子和一个强度 进行着色的图 我希望每个因素都是不同的颜色 并且我希望强度是白色和该颜色之间的渐变 到目前为止 我已经使用了诸如对因子进行分面等技术 将颜色设置为两个变量之间的相互作用 并将颜色设置为因子并
  • 从 leafletProxy() 返回渲染的传单地图

    是否可以在渲染后在 Shiny 中检索传单地图 下面是一个代码示例 展示了如何生成地图leaflet 与返回的不同leafletProxy 即使它们在渲染时看起来完全相同 是否有一个功能可能不同于leafletProxy 获取实际的 htm
  • 在 R 中读入原始二进制数据并将其转换为整数

    我有一个二进制文件 其中包含编码为不同长度 主要是 2 4 字节 的有符号或无符号整数的数值 为了处理这些数据 我将文件的所需部分读取为raw向量与readBin 然后尝试将其转换为十进制 问题是 R的内置函数有限制 我不太明白 比如没有l
  • data.table 查找值并翻译

    像许多人一样 我是 R 新手 我有一个大数据集 500M 行 我已将其读取到 data table 中logStats其中有如下数据 head logStats 15 time pid mean 1 2014 03 10 00 00 00
  • 关于在 LyX 中生成和交叉引用 knitr 图的意见

    我的目标是在 LyX 中包含一个knitr图 我可以在我的文档中交叉引用 我 插入了浮动图像 添加了标题和标签 在浮动图像中插入了 ERT 而不是图像 我所做的图片如下 我在这里检查过类似的问题 但没有人做我所做的事情 所以我在这里问 有没
  • Rcpp 包不包含 Rcpp_precious_remove

    我一直在尝试创建数据库并安装 DBI 包 但仍然遇到此错误 我重新安装了 DBI 和 RSQLite 软件包 但它们似乎不起作用 library DBI con lt dbConnect RSQLite SQLite dbname memo
  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • 按新年拆分日期行

    我有来自一家医院的包含许多变量的数据 以及每行的起始日期和截止日期 这告诉我们每行何时 有效 每行的有效期最长为一年 test data frame ID c 10 10 10 12 12 Disease c P P P D P Pass
  • R 中 optim() 的优化(L-BFGS-B 需要“fn”的有限值)

    我在 R 中使用 optim 来求解涉及积分的可能性时遇到一些问题 我收到一条错误消息 optim par c 0 1 0 1 LLL method L BFGS B lower c 0 L BFGS B 需要 fn 的有限值 中的错误 下
  • R 中的 aov() 错误术语:bw Error(id) 和 Error(id/timevar) 规范有什么区别?

    两者有什么区别aov depvar timevar Error id 和aov depvar timevar Error id timevar 配方规格 这两种变体产生略有不同的结果 同样的问题曾经在这里被问过 https stats st
  • 将 R 中的列中的单引号替换为双引号

    我在 R 中的数据框有一个 A 列 其中有带单引号的字符串数据 Column A Hello World Hi World Good morning world 我想做的是将单引号替换为双引号并实现如下所示的输出 Column A Hell

随机推荐

  • 导出到 csv wordpress

    我需要将数据导出到 csv 文件中的一个表中 我能够正常获取数据 但浏览器并未生成 CSV 文件 我的代码是这样的 它是标题的问题 我只得到带有逗号分隔值的输出 但没有得到 csv 文件 Converting data to CSV pub
  • 添加注释到pdf

    我开发了一个 pdf 查看器 其中包含您的所有建议和代码片段 谢谢 现在我想把它变成一个pdf编辑器 我想为 iphone ipad 创建一个类似于 PDFKit 的应用程序 仅适用于桌面 我希望用户能够添加注释并突出显示文本部分 我该怎么
  • 为什么卷积神经网络可以具有低损失,但精度却非常低?

    I am new to machine learning and am currently trying to train a convolutional neural net with 3 convolutional layers and
  • jQuery SVG,为什么我不能 addClass?

    我正在使用 jQuery SVG 我无法向对象添加或删除类 有人知道我的错误吗 The SVG
  • 同步两个RichTextBox的滚动位置?

    在我的申请表中 我有两个RichTextBox对象 它们的文本行数始终相同 我想 同步 这两者之间的垂直滚动 以便当用户更改其中一个的垂直滚动位置时 另一个滚动相同的量 我该怎么做呢 感谢杰伊的回答 经过更多搜索 我也找到了所描述的方法he
  • Formik + 是的:如何在安装时立即验证表单?

    我想在安装表单时显示字段错误 提交后不行 Yup const validation Yup object shape field Yup string required Required Formik
  • golang中星号(*struct)表示法是什么意思

    NewReaderSize returns a new Reader whose buffer has at least the specified 43 size If the argument io Reader is already
  • geom_area 绘图默认堆叠区域

    我在用geom area绘制一个非常简单的数据集 绘图时使用geom line一切正常 但是当我切换到geom area绘制更高的值 我认为查看图表是代表我的问题的最佳方式 require tidyverse x lt structure
  • 在 CPanel 中编辑 DNS 记录的 PHP 脚本

    我想变得自给自足 因此不需要 DNSDynamic 和 DYNDNS 等服务 而且我不喜欢为我自己可以做的服务付费 场景如下 我的主网站由托管公司托管 我还有一个家庭服务器 上面有我的音乐等 但问题是我的 ISP BT 不向消费者提供静态
  • 确保第一个 ajax 函数在第二个之前完成

    我有一个 JavaScript 函数 它使用 jQuery 发出两个连续的 Ajax 请求 我想确保在调用第二个函数之前第一个请求已加载 我有办法做到这一点吗 要么指定async false in the ajax选项 或者进行第二个 aj
  • 样式图标标记 - 融合表

    这是为像我这样的其他新手提供的帮助 我花了很长时间才弄清楚如何在我的融合表项目中将不同的图标分配给不同类别的标记 我发现文档有限且令人困惑 我想如果我感到困惑 那么其他人可能也会如此 在其他人的帮助和大量测试的帮助下 我现在可以与您分享两种
  • JMeter、JUnit 和 Spring Java 配置

    是否可以使用 JUnit 插件 采样器和 Spring Java 配置来运行 JMeter 当我尝试执行此操作时 未创建 Spring 自动装配 bean 尽管测试用例运行 但由于尚未创建 bean 我收到了空指针异常 我正在使用Sprin
  • 如何从 char 数组进行转换 [char; N] 到字符串切片 &str?

    给定一个固定长度char数组如 let s char 5 h e l l o 我如何获得 str 你不能没有一些分配 这意味着你最终会得到一个String let s2 String s iter collect 问题是 Rust 中的字符
  • 如何修复我的包中的“.dist-info 目录未找到”?

    我有一个 Python 2 软件包 我正在尝试将其升级到 Python 3 它是由曾经在我现在所在的同一团队工作的某个人编写的 但他已不再在公司工作 不幸的是 没有人离开公司团队能够提供帮助 对包的文件运行 2to3 后 我运行python
  • R匹配2个以上条件并返回响应值

    您好 我有两个数据集 其中第一个是一组索引 ind1 lt rep c E W times 20 ind2 lt sample 100 150 40 y lt c 1 40 index lt data frame cbind ind1 in
  • 如果内存大小相等,如何将 C 结构体转换为另一种结构体类型?

    我有 2 个矩阵结构意味着相同的数据 但具有不同的形式 如下所示 Matrix type 1 typedef float Scalar typedef struct Scalar e 4 Vector typedef struct Vect
  • 该字符串未被识别为有效的日期时间。有一个从索引 0 开始的未知单词

    我有以下 C 在尝试将字符串解析为日期时间时出现上述错误 DateTime backupdate System Convert ToDateTime imageflowlabel Text DateTime currentdate Syst
  • gTTS直接输出

    我想让聊天机器人做出回应audio和文字 所有使用 gTTS 的示例代码似乎都需要 将文本保存到文件中 然后播放该文件 是否有另一种方法可以简化流程 例如使用 gTTS 自动播放 聊天机器人的响应 如果你简单地看一下the docs 您会看
  • 悬停时开始和暂停 SVG 动画

    当用户将鼠标悬停在以下 SVG 上时 我想对齿轮进行动画处理 也就是说 当鼠标进入时 两个齿轮都开始从它们停止的地方旋转 当鼠标离开时 齿轮会停止在它们所在的任何位置 如果可能的话 我希望动画使用缓入 缓出功能开始和结束 如何使用 SVG
  • 使用 sf 在 R 中求多边形的交集

    我想通过查看 400m 步行 5 分钟 内其他点的数量来评估每个点与其他等效点的空间接近程度 我在地图上有一些点 我可以在它们周围画一个简单的 400 m 缓冲区 我想确定哪些缓冲区重叠 然后计算重叠的数量 这个重叠数应该与原始点相关 这样