2015-06-03 39 views
12

tôi thấy Lịch sử Vị trí trên Google của tôi tạiLàm thế nào để đọc Lịch sử Vị trí trên Google của tôi trong R

https://maps.google.co.uk/locationhistory/b/0/?hl=en-GB

sau đó tôi đã tải về tệp KML

Tôi đã cài đặt rgdal một cách chính xác nhưng tôi không thể đọc các tập tin

tôi đặt tên file và lớp tên kể từ 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") 

đây là cách tập tin trông giống như

<?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"> 

Đây là lỗi

>Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv, : 
Cannot open file 

Thông tin bổ sung

> 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 
+0

http://gis.stackexchange.com/questions/58131/how-to-efficiently-read-a-kml-file-into-r – lnNoam

+0

đã làm điều đó nhưng didnt làm việc. xem cấu trúc tệp kml –

+0

'thư viện (XML); kml <- xmlToList (xmlParse ("history-07-01-2013.kml")) 'đưa bạn cấu trúc như một danh sách mà bạn có thể lặp lại. – hrbrmstr

Trả lời

0
library(jsonlite) 
a=fromJSON("/home/rstudio/R/Takeout/Location History/LocationHistory.json") 
b=as.data.frame(a) 

mygoog=NULL 
mygoog$latitude=b$locations.latitudeE7/10000000 
mygoog$longitude=b$locations.longitudeE7/10000000 
mygoog$time=as.POSIXct(as.numeric(b$locations.timestampMs)/1000 , origin="1970-01-01") 


mygoog=as.data.frame(mygoog) 


library(ggmap) 
Map <- get_googlemap(center = c(lon = median(mygoog$longitude), lat = median(mygoog$latitude)), 
        zoom = 12, 
        size = c(640, 640), 
        scale = 2, maptype = c("terrain"), 
        color = "color") 

plot1 <- ggmap(Map) + 
    geom_path(data = mygoog, aes(x = longitude, y = latitude 
          ), 
      alpha = I(0.5), 
      size = 0.8) 
suppressWarnings(print(plot1)) 

For 1 months data location history

mygoog2=mygoog[time>"2015-09-21 12:09:31",,] 
plot1 <- ggmap(Map) + 


geom_path(data = mygoog2, aes(x = longitude, y = latitude 
          ), 
      alpha = I(0.5), 
      size = 0.8) 
suppressWarnings(print(plot1)) 

enter image description here

5

tôi đọc một tập tin vào một đối tượng trajectories:Track với:

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) 

Cuộc gọi sub sẽ xử lý các múi giờ khác nhau; R's strptime không thể đọc, ví dụ: -07: 00, nhưng hiểu được -0700.

Bạn có thể chuyển đổi nó thành một data.frame bởi:

as(track, "data.frame") 

Gần đây (kể từ tháng 7 năm 2015), google cho phép bạn download a copy of all your data. Bạn có thể nhập tệp json do đó thu được bằng cách

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, [email protected])) 
plot(tr) 

tập dữ liệu này cũng có thông tin chính xác và phân loại chế độ hoạt động.

+0

Đối với múi giờ, bạn có thể thay đổi thành: 'sub (" ([+ \\ -]) (\\ d \\ d): (\\ d \\ d) $ "," \\ 1 \\ 2 \\ 3 ", ...)' –

+0

Cool !! Cảm ơn Regexp thông minh, tôi sửa đổi câu trả lời của tôi cho phù hợp. –

+0

Tôi nhận được lỗi này trong checkSlotAssignment (đối tượng, tên, giá trị): gán đối tượng của lớp “S4” không hợp lệ cho thời điểm 'thời gian' trong đối tượng của lớp “STIDF”; là (giá trị, "xts") không phải là TRUE –

2

Thông thường nó sẽ làm việc như thế này:

library(rgdal) 
kml_fname <- "path/to/history-05-04-2015.kml" 
tracks <- readOGR(kml_fname, ogrListLayers(kml_fname)[1]) 

Nhưng tôi thấy:

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 

Có thể vấn đề với trình điều khiển KML. Một trình điều khiển tốt hơn một chút là LIBKML, nhưng nó không được cài đặt cho phiên bản của tôi rgdal (và rất khó để làm như vậy).


Bạn có thể thử chuyển đổi tệp KML thành GML bằng GDAL bằng LIBKML. Ví dụ, từ một dấu nhắc lệnh, đầu tiên chạy ogrinfo để xem nếu bạn có thể đọc các tập tin với libkml không, sau đó thử chạy ogr2ogr để chuyển đổi nó:

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 

(Lưu ý: Tôi cũng thấy "Warning 1: Layer tên ' lịch sử-05-04-2015 'được điều chỉnh thành' history_05_04_2015 'để có giá trị XML.")

Sau đó, trong R:

gml_fname <- "path/to/history-05-04-2015.gml" 
tracks <- readOGR(gml_fname, ogrListLayers(gml_fname)[1]) 

trong đó cho thấy

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 

Nhưng kết quả khác hoạt động tốt với, ví dụ plot(tracks)

Các vấn đề liên quan