找出我的数据框中有多少点与区域shapefile重叠

时间:2017-12-14 00:39:30

标签: r coordinates overlay gis

我有一个数据框,其中包含一个月内在一个城市发生的所有事故及其位置(大约10,000个位置坐标)的列表。

Accident ID   Name         latitudes longitudes    Intensity  time
 1           citycentre     -25.5567   +54.00087     minor    morning
 2           
 3
 4

我需要发现在一组经度和纬度之间发生了多少次事故(例如,在纬度25和S&27; S< S< S< 54 E和55 E'之间)

有没有办法在R上做这样的事情 我是R的新手,所以任何帮助都会非常感激。我必须对来自大量月份和不同坐标对之间的数据进行相同的处理。因此运行循环并使用计数器变量将非常耗时。

如果我将学习区域变成多边形形状文件,是否有可用的功能可以告诉我事故的次数

1 个答案:

答案 0 :(得分:2)

我确定有很多方法可以做到这一点。这里只有一个使用非equi连接:

library(data.table)
points <- fread("Accident_ID   Name         latitudes longitudes    Intensity  time
 1           citycentre     -28.5567   +54.50087     minor    morning
 2           citycentre     -28.5567   +54.50087     minor    morning
 3           citycentre     0   0     minor    morning
 4           citycentre     100   100     minor    morning")
extents <- data.table(
  extent_id=1:3, 
  x1=c(-30, -20, 1000), 
  x2=c(-27, 20, 1100), 
  y1=c(54, -54, 100), 
  y2=c(55, 55, 100)
)
points[extents, on=.(latitudes>=x1, latitudes<=x2, longitudes>=y1, longitudes<=y2)][
  ,.(N=sum(!is.na(Accident_ID))), by=extent_id]
#    extent_id N
# 1:         1 2
# 2:         2 1
# 3:         3 0