【发布时间】:2020-12-29 10:46:09
【问题描述】:
在将原始数据从 db 转换为 sf 对象时,我正在寻找最佳且可行的解决方案。 我需要创建原始坐标点(浮点类型)。我找到了一种解决方案,我们从这样的原始数据创建 sf 对象:
lnd_point = st_point(c(0.1, 51.5))
lnd_geom = st_sfc(lnd_point, crs = 4326)
lnd_attrib = data.frame(
name = 'London',
temperature = 25,
date = as.Date('2017-06-21')
)
lnd_sf = st_sf(lnd_attrib, geometry = lnd_geom)
很遗憾,它不适用于表格列。这是我的数据库表(名为“tableDB”):
与上面的示例一样,首先我想创建 2 个单独的 POINT 类型的 geom 列(用于 lonCust/latCust 和 lonApp/latApp,使用 st_point),然后创建点列表(使用 st_sfc),最后创建 sf 对象(使用st_sf) 但在我的情况下它不起作用。
一般来说,我需要在 2 个单独的列中创建 lonCust/latCust 和 lonApp/latApp 的 POINT 数据类型(2 个几何列放置在数据框的末尾)。首先,我想将它们转换为 POINT,但 st_point 不适用于列,正如我之前提到的。我在书中和网上找到的是这样的:
newDF <- tableDB %>%
st_as_sf(coords = c("lonCust","latCust"), crs = 4326)
在那之后,我的“newDF”变成了“sf”和“data.frame”对象,这没关系,但我仍然需要制作 2 个几何列,而不是一个。不知道如何在 df 的末尾添加第二个和更多的 geom 列。总结一下,我有几个问题:
- 将原始数据从 db 转换为空间对象(例如 POINT)的最佳方法是什么?
- 如何向数据框添加更多 geom 列(如在我的示例中,我需要 2 个 geom POINT 列:用于 ..Cust 和 ..App)?
- 减法是一种好习惯吗?来自原始 df 的 lat/lon 列并创建一个新的、单独的 sf 对象?如果是这样,那么我如何将每个空间点与属性配对/分配(例如上面示例中的 ZLP 或 LP)?
我对将原始数据转换为空间数据方面的良好做法非常感兴趣 - 我想编写 Shiny 应用程序并且需要知道从哪里开始。
【问题讨论】:
标签: r gis geospatial sf