如何使用R

时间:2018-09-02 15:38:24

标签: r time geospatial spatial temporal

我正在使用软件包{STPtrajectories}进行研究,以估计居民的potential path area (PPA),该变量在时空分析术语中使用,作为旨在验证是否存在以下问题的分析的目标变量。城市中不同类型的居民之间的生活范围(或居住范围)存在显着差异。

但是,在介绍了here的教程之后,我得到的PPA比我预期的要大。

由于我使用的人员旅行数据仅包含一天中的开始/结束点和移动时间,因此我将其转换为24小时活动格式并估算了PPA,如下所示:

## ---------- START OF CODE ---------- ##

## Load packages
library(sp)
library(spacetime)
library(knitr)
library(rgl)
library(xts)
library(rgeos)
knit_hooks$set(webgl = hook_webgl)
library(STPtrajectories)

## Start time of activity
time <- as.POSIXct(c(
"2012-01-01 00:00:00",  # Sleeping
"2012-01-01 07:00:00",  # Start to leave for workplace
"2012-01-01 07:30:00",  # Arrive at workplace [change coordinates]
"2012-01-01 10:00:00",  # Start to leave for home
"2012-01-01 10:30:00",  # Arrive at home for houseshore [change coordinates]
"2012-01-01 17:30:00",  # Start to leave for another destination
"2012-01-01 17:45:00",  # Arrive at another destination  [change coordinates]
"2012-01-01 21:30:00",  # Start to leave for home
"2012-01-01 21:45:00"), # Arrive at home [change coordinates]
origin="1970-1-1",tz="Asia/Phnom_Penh")

## End time of activity
endtime <- as.POSIXct(c(
"2012-01-01 07:00:00",  # Sleeping and preparation to leave
"2012-01-01 07:30:00",  # Arrive at workplace
"2012-01-01 10:00:00",  # End time of work
"2012-01-01 10:30:00",  # Arrive at home
"2012-01-01 17:30:00",  # Houseshore and leave for another destination
"2012-01-01 17:45:00",  # Arrive at anther destination
"2012-01-01 21:30:00",  # Arrive at destination  [change coordinates]
"2012-01-01 21:45:00",  # Do private matter and leave for home
"2012-01-02 00:00:00"), # End of the day  [change coordinates],
origin="1970-1-1",tz="Asia/Phnom_Penh")

## X coordinates of activity
x <- c(
475465.6, # Home
475465.6, # Home (time to leave)
473548.0, # Workplace (time to start to work)
473548.0, # Workplace (time to leave for home)
475465.6, # Home (houseshore)
475465.6, # Home (time to leave for another destination)
484869.7, # Another place (private matter)
484869.7, # Another place (time to leave for home)
475465.6  # Home (night time until sleep)
)

## Y coordinates of activity
y <- c(
1272272,
1272272,
1279171,
1279171,
1272272,
1272272,
1270558,
1270558,
1272272
)

## Combine X and Y
xy <- cbind(x,y)

## Dummy data frame for spdf
dummy <-  data.frame(sp=rep(0,nrow(test)))

## Build spatial points data frame
spdf <- SpatialPointsDataFrame(coords=xy,data=dummy,
            proj4string=CRS("+proj=utm +north +zone=48 ellps=WGS84"))

## Dummy data frame for STIDF
dummy <-  data.frame(df=rep(0,nrow(test)))

## Activity time: this is canceled to implement
# a <- track@connections
# a$duration[a$speed!=0] <- 0
# atime <- a$duration

## Build STIDF class object
stidf <- STIDF(spdf,time,dummy,endtime)

#### Build track class object
track <- Track(stidf)
## Convert meters into kilometers
track@connections$distance <- track@connections$distance/1000
## Convert velocity m/s into km/h
track@connections$duration <- track@connections$duration/3600

#### Build STP_track class object
## Velocity to build STP_track class object
v <- track@connections$speed * 1.0 # No adjustment
v[v==0] <- 3.0 # Walk speed in kph
## BUild STP_track class object
stp <- STP_Track(track=track,vmax=v)

## Plot STP_track class object
xrange <- c(350000,605000)   # Manually set to see too large PAA
yrange <- c(1140000,1410000) # Manually set to see too large PAA
plot(stp,type="p",col="red",pch=16,cex=2,xlim=xrange,ylim=yrange,
     xlab="lon (meters)",ylab="y (meters)",main="Tragectories of xxx")

#### Estimate PPA
ppa <- PPA(stp)
plot(ppa,add=T)
ppa.area <- area(ppa)

## ---------- END OF CODE ---------- ##

这是代码的当前输出:

enter image description here 注意:显示的管理边界仅供您理解

我预计PPA将在活动的每个红点附近进行估算,因为每次运动的速度约为3-10 kph,持续时间约为一个小时或更短,但是PPA几乎覆盖了整个城市,因为如图所示。

数据框存在一些基本问题/假设:

  1. 活动坐标 每个活动的位置均未在实际坐标中编码,而是由位于行政边界中心的区域质心表示。

  2. 活动数量和持续时间 假定居民的移动仅在移动的时间固定,因此,在此数据帧中,当他/她(1)醒来,(2)离开工作,( 3)到达工作地点,(4)离开家,(5)到达家,(6)离开到另一个目的地,(7)到达另一个目的地,(8)离开回家,(9)到达家。因此,未设置[activity_time]中的@connections。 因此,他/她应该能够在每个活动之间移动。 但是,由于这种格式,某些活动对没有距离,例如(1)和(2)之间的活动。我想估计PPA可能不是问题。

  3. 活动之间无插值 在该示例中估计了随机轨迹。但是,我没有对数据框应用此操作,因为生成远离实际活动位置的新点负担不了。但是,这似乎会影响如此巨大的PPA的结果。 信息方面,当我在示例中减少了数据帧的分割数(例如,n_points从15更改为3)时,它仍然生成了椭圆形的PPA,仍然可以承受,但是在我的案例中却没有发生数据框。

  4. 软件包的棘手行为

    • 根据{STPtrajectories}的插图,跟踪点的endTime标记和activity_time用于在活动期间禁止样本移动。但是,当我更改设置时,这两个变量似乎不会影响结果。
    • Speed插槽中的{li} period@connections
      跟踪类对象最初将距离存储为米,周期存储为分钟,速度存储为kph。由于似乎没有统一,我在构建了轨道类对象之后将距离转换为公里,将周期转换为小时。但是,它也不会影响PPA估计的结果。

非常感谢您能提出适当的PPA估算建议。

0 个答案:

没有答案