我已经得到了当前在csv中的数据,其中一列名为“journeyroute”。该列具有以下数据[由于大小而截断]:
{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [-4.095772, 50.409393]}, "properties": {"name": "start"}}, {"type": "Feature", "geometry": null, "properties": {"name": "end"}}, {"type": "Feature", "geometry": {"type": "LineString", "coordinates": [[-4.095772, 50.409393], [-4.095781, 50.409397], [-4.095792, 50.409401], [-4.095965, 50.40971], [-4.096064, 50.410069], [-4.09597, 50.410397]]}, "properties": {"distance": 4027.4, "name": "Raw", "times": [1690900467000, 1690900520000, 1690900522000, 1690900539000, 1690900550000, 1690900569000], "duration": 4923.0}}]}
字符串
有五千行数据。我试图做的是提取LineString数据以在R中使用,但我被卡住了。有人能帮忙吗?
我尝试转换为JSON,然后取消嵌套,但出现了一个错误(代码改编自其他答案使用谷歌地球引擎):
new_df <- df %>%
mutate(geo = map(Journey.Route, ~ jsonlite::fromJSON(.))) %>%
as.data.frame() %>%
unnest(geo) %>%
filter(geo != "FeatureCollection") %>%
mutate(coord = rep(c("x", "y"))) %>%
pivot_wider(names_from = coord, values_from = coordinates)
Error in `mutate()`:
ℹ In argument: `coord = rep(c("x", "y"))`.
Caused by error:
! `coord` must be size 5000 or 1, not 2.
Run `rlang::last_trace()` to see where the error occurred.
型
应为LineString坐标的sf几何体列。
2条答案
按热度按时间xa9qqrwz1#
library(geojsonsf)
可以读取geojson的向量,因此不需要任何行操作字符串
sf
对象型
型
ru9i0ody2#
当我们处理GeoJSON字符串时,可以使用
sf::st_read()
或gejsonsf::geojson_sfc()
进行解析,以获得一些性能提升(当使用geojson_sfc()作为st_read()的插入时,性能提升约2倍,当将rowwsiest_read()
与矢量化geojson_sfc()
进行比较时,性能提升约100倍)。按行分组,一次访问一行;仅保留
LINESTRING
几何图形(假设每个FeatureCollection一个,如提供的示例所示)。字符串
基准测试结果和生成的
sf
对象:型
创建于2023-08-04使用reprex v2.0.2