使用mapdeck的add_trips函数创建数据层时出错

时间:2019-11-25 12:53:23

标签: r gis sf mapdeck

尝试对mapdeck使用新的add_trips层。下面的示例代码和错误。感谢您的协助。谢谢。

我正在使用的数据:

> class(msi)
[1] "sf"         "tbl_df"     "tbl"        "data.frame"

> head(msi$geometry)
Geometry set for 6 features 
geometry type:  POINT
dimension:      XYZ
bbox:           xmin: 2.94486 ymin: 51.34172 xmax: 3.21298 ymax: 51.42742
epsg (SRID):    4326
proj4string:    +proj=longlat +datum=WGS84 +no_defs
First 5 geometries:
POINT Z (2.94486 51.42742 1573824004)
POINT Z (3.2062 51.35052 1573827317)
POINT Z (3.21298 51.34172 1573830334)
POINT Z (3.21298 51.34175 1573834830)
POINT Z (3.21297 51.34173 1573838433)

枫甲板代码:

key = "mykeyhere"

plot <- mapdeck( token = key, style = 'mapbox://styles/mapbox/dark-v9',
                         pitch = 30,
                         width="100%",
                         zoom=15) %>%
  add_trips(
    data = msi
  )

我遇到的错误:

Error in rcpp_path_geojson(data, l, geometry_column, digits, "trips") : Error creating data layer

1 个答案:

答案 0 :(得分:1)

示例注释

  1. 行程层需要LINESTRING,而不是POINT
  2. 它还需要同时具有Z(海拔)和M(时间)属性(线条以时空表示)

其他详细信息

我将旅行{@ 3}}记入sf库中,因此我将其设计为自动读取{{的z_rangem_range 1}}对象。

我还有一个sfc库,它可以构造包含这些属性的sf对象。

我正在使用sf和mapdeck的github版本

sfheaders

工作示例

您的问题中没有包含可重复的数据集,因此我将使用自己的数据集。

在此示例中,我

  1. 拍摄一个SF LINESTRING对象
  2. 转换为坐标remotes::install_github("r-spatial/sf") remotes::install_github("SymbolixAU/mapdeck")
  3. 附加Z和M列
  4. 转换回sf LINESTRING对象
  5. 乘飞机旅行
data.table

this pull-request