gpt4 book ai didi

r - 从 SpatialLines 对象和基本 df 创建 SpatialLinesDataFrame

转载 作者:行者123 更新时间:2023-12-05 00:49:57 27 4
gpt4 key购买 nike

使用 leaflet ,我正在尝试绘制一些线条并根据“速度”变量设置它们的颜色。我的数据从编码的折线级别开始(即一系列纬度/经度点,编码为字母数字字符串),每个 EPL 都有一个速度值。

我能够解码折线以获得纬度/经度系列(感谢 Max,here),并且我能够从这些点系列创建线段并将它们格式化为 SpatialLines对象(感谢凯尔沃克,here)。

我的问题:我可以使用 leaflet 正确绘制线条,但我无法将 SpatialLines 对象连接到基础数据以创建 SpatialLinesDataFrame,因此我无法根据速度变量对线条颜色进行编码。 我怀疑问题在于我分配给 SL 段的 ID 与基础 df 中的 ID 不匹配。

我尝试加入的对象,SpatialLinesDataFrame() :

  1. “sl_object”,一个 SpatialLines具有约 140 个观察值的对象,每个片段一个;我正在使用上面链接的 Kyle 代码,并进行了一个关键更改 - 我不是为每个段创建任意迭代 ID 值,而是从我的基础数据中提取关联的 ID。 (或者至少我正在尝试。)所以,我已经替换了:

    id <- paste0("line", as.character(p))

    lguy <- data.frame(paths[[p]][1])
    id <- unique(lguy[,1])

  2. “speed_object”,一个对单个速度变量进行约 140 次观测的 df 和 row.names设置为我认为我在上面的 SL 对象中创建的相同 id var。 (观察次数永远不会超过但可能小于 SL 对象中的段数。)

我的加入代码:

splndf <- SpatialLinesDataFrame(sl = sl_object, data = speed_object)

结果:

row.names of data and Lines IDs do not match

谢谢大家。我发布这篇文章的部分原因是我看到了一些类似的问题——包括一些专门提到更改 Kyle 伟大工具的 ID 输出的问题——但一直未能找到好的答案。

编辑:包括数据样本。

来自 sl_obj,单个段:

print(sl_obj)

Slot "ID":
[1] "4763655"

[[151]]
An object of class "Lines"
Slot "Lines":
[[1]]
An object of class "Line"
Slot "coords":
lon lat
1955 -74.05228 40.60397
1956 -74.05021 40.60465
1957 -74.04182 40.60737
1958 -74.03997 40.60795
1959 -74.03919 40.60821

还有来自speed_obj的对应记录:

row.names speed
... ...
4763657 44.74
4763655 34.8 # this one matches the ID above
4616250 57.79
... ...

最佳答案

要消除此错误消息,请通过准备 sl_object 和/或 speed_object 使数据的 row.names 和行 ID 匹配,或者,如果您确定它们应该按照它们出现的顺序匹配,使用

splndf <- SpatialLinesDataFrame(sl = sl_object, data = speed_object, match.ID = FALSE)

这在 ?SpatialLinesDataFrame 中有记录。

关于r - 从 SpatialLines 对象和基本 df 创建 SpatialLinesDataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33151556/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com