我是地理空间数据和的新手,我试图使用geojsonio和sf包将csv转换成GEOJSON。我希望我的输出是这种格式。
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": { "vendor": "A",
"vol":20},
"geometry": {
"type": "LineString",
"coordinates": [
[-74.20986, 40.81773, 0, 1564184363],
[-74.20987, 40.81765, 0, 1564184396],
[-74.20998, 40.81746, 0, 1564184409]
]
}
}
]
}
正如您注意到的,这里的坐标有4个维度: lat、长、高度/高度、时间戳。
我的代码如下
library(geojsonio)
library(sf)
library(tidyverse)
sf_data <- st_as_sf(Master_GPX, coords = c("lon", "lat","ele","timestamp"),dim="XYZM")
sf_data %>%
group_by(Msisdn) %>%
summarise(geometry = st_combine(geometry)) %>%
st_cast("LINESTRING") -> res_sfdata
geojson_write(res_sfdata,geometry = "LINESTRING", file = "C:/Project/checks/res_sfdata.geojson")
Master_GPX文件,如下所示
但是,在使用编写geojson文件时,我收到了一个警告,建议它从geojson文件中删除维度M(即时间戳)。
> geojson_write(res_sfdata,geometry = "LINESTRING", file = "C:/Project/checks/res_sfdata.geojson",)
removing M dimension as not supported in GeoJSON format
Success! File is at C:/Project/checks/res_sfdata.geojson
我需要维度"M“,这是geojson文件中的时间戳,用于我正在构建的可视化。如何将所有四个值:纬度、经度、海拔和时间戳写回geojson文件?。是否有其他的软件包/功能可以达到同样的效果?作为一个新的空间,任何帮助都将不胜感激。
发布于 2021-09-07 04:21:05
{sf}库可以直接读写geojson。下面是一个简单的工作示例
library(sf)
nc <- sf::st_read( system.file("./shape/nc.shp", package = "sf"))
sf::st_write(nc, dsn = "~/Desktop/nc.geojson", layer = "nc.geojson")
还有一个稍微详细的例子,说明它也处理Z&M维度。
## - convert to data.frame
df <- sfheaders::sf_to_df(nc, fill = TRUE)
## - add Z & M columns
df$z <- rnorm(nrow(df))
df$m <- rnorm(nrow(df))
## - convert back to 'sf' object
sf <- sfheaders::sf_multipolygon(
obj = df
, x = "x"
, y = "y"
, z = "z"
, m = "m"
, keep = T
, multipolygon_id = "multipolygon_id"
, polygon_id = "polygon_id"
, linestring_id = "linestring_id"
)
sf
sf::st_write(sf, dsn = "~/Desktop/nc_zm.geojson", layer = "nc_zm.geojson")
https://stackoverflow.com/questions/69051352
复制相似问题