I found my Google Location History at
https://maps.google.co.uk/locationhistory/b/0/?hl=en-GB
I then downloaded the KML file
I installed rgdal
correctly but am unable to read the file
I put the file name and layer name as from https://gis.stackexchange.com/questions/58131/how-to-efficiently-read-a-kml-file-into-r
hist = readOGR(dsn="/home/ajay/Desktop/history-05-04-2015",layer="Location history from 05/05/2015 to 06/04/2015")
this is how file looks like
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<name>Location history from 05/05/2015 to 06/04/2015</name>
<open>1</open>
<description/>
<StyleMap id="multiTrack">
This is the error
>Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv, :
Cannot open file
Additional Information
> ogrDrivers()
name write
1 AVCBin FALSE
2 AVCE00 FALSE
3 BNA TRUE
4 CSV TRUE
5 DGN TRUE
6 DODS FALSE
7 DXF TRUE
8 ESRI Shapefile TRUE
9 Geoconcept TRUE
10 GeoJSON TRUE
11 GeoRSS TRUE
12 GML TRUE
13 GMT TRUE
14 GPSTrackMaker TRUE
15 GPX TRUE
16 Interlis 1 TRUE
17 Interlis 2 TRUE
18 KML TRUE
19 MapInfo File TRUE
20 Memory TRUE
21 MySQL TRUE
22 ODBC TRUE
23 OGDI FALSE
24 PCIDSK FALSE
25 PGeo FALSE
26 PostgreSQL TRUE
27 REC FALSE
28 S57 TRUE
29 SDTS FALSE
30 SQLite TRUE
31 TIGER TRUE
32 UK .NTF FALSE
33 VFK FALSE
34 VRT FALSE
35 XPlane FALSE
> sessionInfo()
R version 3.2.0 (2015-04-16)
Platform: i686-pc-linux-gnu (32-bit)
Running under: Ubuntu precise (12.04.5 LTS)
locale:
[1] LC_CTYPE=en_IN.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_IN.UTF-8 LC_COLLATE=en_IN.UTF-8
[5] LC_MONETARY=en_IN.UTF-8 LC_MESSAGES=en_IN.UTF-8
[7] LC_PAPER=en_IN.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_IN.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
other attached packages:
[1] rgdal_0.9-3 sp_1.1-0
loaded via a namespace (and not attached):
[1] tools_3.2.0 grid_3.2.0 lattice_0.20-31
I read a file into a trajectories:Track
object with:
filename = "history-06-14-2015.kml"
library(XML)
kml <- xmlToList(filename)
tr = kml$Document$Placemark$Track
cc = which(names(tr) == "coord")
coord = t(sapply(kml$Document$Placemark$Track[cc], function(x) scan(text = x, quiet = TRUE)))[,1:2]
when = which(names(tr) == "when")
# convert the "-07:00" into " -0700" with sub:
time = strptime(sub("([+\\-])(\\d\\d):(\\d\\d)$", " \\1\\2\\3",
unlist(kml$Document$Placemark$Track[when])), "%Y-%m-%dT%H:%M:%OS %z")
library(sp)
library(spacetime)
library(trajectories)
track = Track(STI(SpatialPoints(coord, CRS("+proj=longlat +ellps=WGS84")),
time))
summary(track)
plot(track, axes = TRUE)
The sub
call takes care of different time zones; R's strptime
can't read e.g. -07:00, but does understand -0700.
You can convert it into a data.frame
by:
as(track, "data.frame")
More recently (since July 2015), google allows you to download a copy of all your data. You can import the json file thus obtained by
library(jsonlite)
system.time(x <- fromJSON("Location History/LocationHistory.json"))
loc = x$locations
loc$time = as.POSIXct(as.numeric(x$locations$timestampMs)/1000,
origin = "1970-01-01")
loc$lat = loc$latitudeE7 / 1e7
loc$lon = loc$longitudeE7 / 1e7
library(sp)
loc.sp = loc
coordinates(loc.sp) = ~lon+lat
proj4string(loc.sp) = CRS("+proj=longlat +datum=WGS84")
library(spacetime)
library(trajectories)
tr = Track(STIDF(geometry(loc.sp), loc.sp$time, loc.sp@data))
plot(tr)
this data set also has accuracy information, and activity mode classifications.
Normally it should work like this:
library(rgdal)
kml_fname <- "path/to/history-05-04-2015.kml"
tracks <- readOGR(kml_fname, ogrListLayers(kml_fname)[1])
But I see:
Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv, :
object 'keepGeoms' not found
In addition: Warning message:
In ogrFIDs(dsn = dsn, layer = layer) : no features found
There are possibly issues with the KML
driver. A slightly better driver is LIBKML
, but it isn't installed for my version of rgdal
(and it is difficult to do so).
You could try converting the KML file to a GML using GDAL with LIBKML. For example, from a command prompt, first run ogrinfo
to see if you can read the file with LIBKML, then try running ogr2ogr to convert it:
ogrinfo history-05-04-2015.kml
INFO: Open of `history-05-04-2015.kml'
using driver `LIBKML' successful.
1: history-05-04-2015
ogr2ogr -f GML history-05-04-2015.gml history-05-04-2015.kml
(Note: I also see "Warning 1: Layer name 'history-05-04-2015' adjusted to 'history_05_04_2015' for XML validity.")
Then in R:
gml_fname <- "path/to/history-05-04-2015.gml"
tracks <- readOGR(gml_fname, ogrListLayers(gml_fname)[1])
which shows
OGR data source with driver: GML
Source: "C:\Users\mtoews\Downloads\history-05-04-2015.gml", layer: "history_05_04_2015"
with 1 features
It has 12 fields
Warning message:
In readOGR(gml_fname, ogrListLayers(gml_fname)[1]) : Z-dimension discarded
But the result otherwise works fine with, e.g. plot(tracks)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With