如何找到多边形内的所有点来创建等值线图?

问题描述

我是 R 新手,在处理两个 sp 数据帧时遇到了一些麻烦。

数据框:

  • 'violence'(这是一个包含暴力事件实例的数据框,按经度和纬度列出)
  • 'DRC_GEO2'(它是包含 DRC 行政边界的 shapefile)。

我想计算由 DRC_GEO2 数据框多边形定义的每个行政区域的暴力事件数量。这篇文章 (https://gis.stackexchange.com/questions/110117/counting-number-of-points-in-polygon-using-r/110246#110246?newreg=5bfe0d571b8241158bac704f188cf026) 有助于概述类似的问题。但是,我不想记录来自“暴力”的数据点样本,我想要数据框中的所有记录实例。

我已经尝试了下面的代码,它确实输出了正确的实例数量,但是,它根据最大的管理单位('ADM1_FR')对它们进行分类,但我希望它按最小的管理单位('ADM2_FR')进行分类).

res

表(res$NAME_1)

返回的是: enter image description here

最终,我想要一个关于原始 shapefile 'DRC_GEO2' 上的暴力实例数量的等值线图。如何将每个行政区域的出现次数添加到数据中以制作区域分布图?

解决方法

在没有 MRE 的情况下很难分享准确的答案(请参阅 How to make a great R reproducible example)。

话虽如此,这里是您如何实现这一目标的一般答案。如果您能够共享数据,我很乐意进行更具体的编辑。

library(ggplot2)

# Count points in each ADM2_FR
res <- table(over(violence_point,DRC_GEO2[,"ADM2_FR"]))
names(res) <- c("ADM2_FR","Violence_Count")

# Merge counts with original data
dat <- merge(DRC_GEO2,res,by = "ADM2_FR",all.x = TRUE)

# Plot choropleth 
ggplot() +
  geom_polygon(data = dat,aes(fill = Violence_Count,x = long,y = lat,group = group)) +
  theme_void() +
  coord_map()

请看这里:https://www.r-graph-gallery.com/327-chloropleth-map-from-geojson-with-ggplot2.html

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...