首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用GEOJSON_WRITE在R中创建GEOJSON文件

使用GEOJSON_WRITE在R中创建GEOJSON文件
EN

Stack Overflow用户
提问于 2021-09-03 23:17:29
回答 1查看 631关注 0票数 2

我是地理空间数据和的新手,我试图使用geojsonio和sf包将csv转换成GEOJSON。我希望我的输出是这种格式。

代码语言:javascript
运行
复制
{
                "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、长、高度/高度、时间戳。

我的代码如下

代码语言:javascript
运行
复制
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(即时间戳)。

代码语言:javascript
运行
复制
> 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文件?是否有其他的软件包/功能可以达到同样的效果?作为一个新的空间,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-09-07 04:21:05

{sf}库可以直接读写geojson。下面是一个简单的工作示例

代码语言:javascript
运行
复制
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维度。

代码语言:javascript
运行
复制
## - 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")
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69051352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档