[R-sig-Geo] Create raster layer that counts SpatialPoint occurrence within cells
Andrew Vitale
vitale232 at gmail.com
Fri Sep 12 01:01:35 CEST 2014
Hello all,
I have a Python script that searches Twitter for tweets that meet certain
criteria and records the coordinates of those tweets. This leaves me with
a CSV that can then easily be read into R as a SpatialPoints object.
Once I have the SpatialPoints, I would like to make a raster layer that has
the count of tweet locations that occur within each cell of that raster
layer.
I have a working script, but I feel like my way of doing this is very
inefficient. Does anyone know a better way to produce a map similar to
this? I'm also interested in other suggestions of how to visualize these
data.
The example below shows my approach to this problem. I believe the weak
point of the code is my for loop. I would like to increase efficiency, as
I plan to use this approach on much larger datasets. Thanks for your
advice!
-Andrew Vitale
The example:
library(raster)
## Create a set of random long/lat coordinates
## that are centred around a "metro" area.
## These data mimic the CSV of tweet coords I read in to R
n = 500
set.seed(232)
x = rnorm(n, -96, 5)
y = rnorm(n, 32, 5)
xy = cbind(x, y)
## Create a SpatialPoints object of the "tweets"
tweets = SpatialPoints(xy)
proj4string(tweets) = CRS('+proj=longlat +datum=WGS84')
## Create an empty template raster for rasterizing the points and
## create an empty list to store each rasterized point
r = raster(nrow=90, ncol=180)
l = list()
## Loop through the tweets one point (row) at a time and create
## a raster with the value of 1 at the location of the tweet.
## Store the raster layers created for each tweet in a list.
## This loop is the slow part of my code. ##
for(i in 1:length(tweets)){
p = tweets[i, ]
l[[i]] = rasterize(p, r)
}
## Create a raster stack from the list
s = stack(l)
## Sum the stack layers together ignoring NA values, which
## produces a raster layer of counts. Set 0 values to NA
counts = sum(s, na.rm=TRUE)
counts[counts == 0] = NA
## Plot the raster layer
plot(counts)
--
*Andrew P. Vitale*
Masters Student
Department of Geography
University of Nevada, Reno
vitale232 at gmail.com
[[alternative HTML version deleted]]
More information about the R-sig-Geo
mailing list