With the recently relased version of the package RGL (V. **0.92.879**) there is a new option to publish 3D plots as an interactive WebGL graphic.

Nearly every 3D plot you set up in a RGL window can be exportet via a very easy command. Just plot as usual into your rgl device and then use the command “writeWebGL()”.

**Time Space Cube sample:**

Dependable on your hardware and software specifications (graphics have to support a newer OpenGL version) you’ll be able to open my try in your browser window:

Click here to open my WebGL sample in a new window (~3MB)

Here the command to export your RGL window to a webpage:

browseURL(paste(“file://”, writeWebGL(dir=file.path(tempdir(), “webGL”), width=700), sep=””))

To get a quick impression about the temporal stay of places it is helpful to generate a plot of the trackpoints spatial density (intensity).

As the 3d visualisation has both advatages and disadvantages, a combination with a 2D plot is useful to interpret the data. The data used in this example is a gps record of the “everyday life” of a test person.

Code snippet:

###################################################

## 3d/2D Plot density with spatstat density.ppp

###################################################

bb_utm <- qbbox(lat = tripdata_utm_num[,2], lon = tripdata_utm_num[,1]) #Boundingbox

Rect <- owin(c(bb_utm$lonR[1]-500, bb_utm$lonR[2]+1800), c(bb_utm$latR[1]-500, bb_utm$latR[2]+500))

P_all <- ppp(tripdata_utm_num[,1], tripdata_utm_num[,2], window=Rect) # opt: marks=datetime

PPP_all <- as.ppp(P_all)

den <- density(PPP_all, sigma = 70)

cutted_den <- den # Wertebereich abschneiden für Extreme

cutvalue <- 0.0020 # Erfahrungswert

cutted_den$v[cutted_den$v>=cutvalue] <-cutvalue

png(paste(plotpath,proband,”intensity_overview_spatstat_v3.png”, sep=””),2400,1200); # Plot Dichte 3D

layout(matrix(c(1,2), 2, 2, byrow = TRUE), widths=c(1,1))

persp(cutted_den , col=”grey”, d=1, ticktype=”detailed”, cex.lab=4, cex.axis=4, zlim=c(range(cutted_den$v)[1],cutvalue), phi=30, theta=-20, xlab=”longitude”, ylab=”latitude”, zlab=”density”, main=paste(proband, “Räumliche Intensität”))

couleurs <- tail(topo.colors(trunc(1.4 * 100)),100)

couleurs[1] <- “#0400ff”

plot(cutted_den , col=couleurs, ticktype=”detailed”, xlab=”longitude”, ylab=”latitude”, cex.lab=5, cex.axis=5, main=paste(proband, “Räumliche Intensität 2D”))

#points(SP_UTM@coords[,1], SP_UTM@coords[,2], cex=0.05, col=”grey”)

points(SP_wp_UTM@coords[,1], SP_wp_UTM@coords[,2], cex=2, col=”red”)

text(SP_wp_UTM@coords[,1], SP_wp_UTM@coords[,2], labels=daten_wp$wpOpen, cex=1, adj=c(0,-1), col=”red”)

dev.off()

# If you use any code, please refer to or cite this site (see about geolabs)

## Hägerstrand Time-Space Cube

### 11/30/2010

With the rgl package it’s possible to interact with the 3d visualization of the timespace tracks.

Code example:

plot3d(lon,lat,timedate, xlim=range(lon), ylim=range(lat), zlim=range(timedate), ticktype=”detailed”, xlab=”longitude”, ylab=”latitude”, zlab=”Date”, col= as.POSIXlt(daten[,”Date”])$mday, type=”l”, main=plottitle)

In the posted example individual waypoints were added by drawing vertical lines.

## Time-Space Cloud with R

### 02/22/2010

Here comes another option to analyze a TimeSpace-Track with R. A lattice cloud plots every recorded trackpoint into a 3d-time-space-cube. As the data (planar point pattern) is marked with the daytime, cluster of everyday routines become visible.

Here the direct comparison between a function of density and the time-space-cloud.

Code example:

cloud(time_hours ~ PPP_selection$x * PPP_selection$y, data = daten, zlim = c(23,0), xlim = c(653000,643000), screen = list(z = 160, x = 120), panel.aspect = 0.75, xlab = “Longitude”, ylab = “Latitude”, zlab = “Time”, scales = list(z = list(arrows = FALSE, distance = 2), x = list(arrows =FALSE, distance = 2), y = list(arrows = FALSE, distande = 2)),)

This examle is inspired by: http://lmdvr.r-forge.r-project.org/ (Figure 6.2)

## Time-Space Analysis with R

### 02/06/2010

Beside the visualisation of TimeSpace Tracks, I’m trying to find a way to analyze GPX-Tracks with statistical software. This are the first results with R (The R Project for Statistical Computing):

^This graph is a result of the analysis with the package trip (Spatial analysis of animal track data). Unfortunatelly i’m do not understand witch scale is used by the package.

^Trackpoints as a function of density.

Since there is a trackpoint recorded every 10 sec., it is possible to interpretate the density of the trackpoints as time-spend.

This is a two day track. The highest peak in the right corner is my home (Nuremberg). The peaks in the backstage are both university in Erlangen. The path on the rigth side I did with my bicycle, the left one with the train.

But how to examine specific areas?

^1500 m arround my house in the city center.

With clickppp() from the spatstat package it’s possible to choose e.g. a point with the mouse:

####### Example Code:

plot(tripdata_utm) # plots the recorded trackpoints (converted to UTM)

P_center <- clickppp(n=1, win=Rect, add=TRUE, main=NULL, hook=NULL) # Select a point in the plot with the mouse

center <- as.data.frame(P_center)

D <- disc(radius = 1500, centre = c(center[,1], center[,2])) # create a disc window

P_selection <- ppp(tripdata_utm_num[,1], tripdata_utm_num[,2], window=D) # reduce the data with the window

^Another function of density (2D).

^Trackpoints as a function of time.

Here the trackpoints are divided by a grid and counted. Since the device records the position every 10 sec. The qqcount can be clearly interpreted as time-spend.

The next step is to add this data to a gis layer.

## Consumption and Shopping as an Event

### 02/06/2010

This is an recent project about consumption and the categorization of consumers. The whole survey you can explore on: http://www.geographie.uni-erlangen.de/projects/konsum/ (german!).

For the evaluation, R was used.

“Der Verhaltensraum des Konsumenten – The Space of Consumer Behaviour”

The Space shows the consumer in the center of a two dimensional abstract space. He is able to “move” to every point in the coordinate system. Each buy he takes a new position. The first dimension is the dimension of hedonism (buying – shopping), the second is the dimension of autonomy. They are both independent. 31 test persons took part in the survey. They filled out a diary about their buys.

This is a sample person with 16 buys. The arrows indicate the direction of time, the circle grows for each buy at the same position.

This graph compares the buys of different people in the same category of shops.

It shows a clustering towards hedonism in fashion shops and a clustering towards buying in drugstores.

More on the project homepage.