在R中将csv转换为gejson格式时如何添加多个纬度

时间:2019-06-27 06:02:12

标签: r mapbox geojson geojsonio

我有lat/longs个特定区域。如何在CSV文件中插入与单个区域对应的多个经/纬度?我现在在CSV文件中使用随机数。我已附上截图以显示我的CSV文件。我不希望有一个纬度和经度,而是要多个对应一个区域。我稍后必须在地图框上绘制它们

这是我用于将csv文件转换为geojson文件的代码

library(geojsonio)
library(rgdal)
file_to_geojson(input = "FINAL DATA ENTRY.csv",method ="web" ) 

我的csv文件 enter image description here geojson文件在创建后会给出这样的坐标。如果在我从csv文件转换后的geojson输出文件中看到红色突出显示的区域,则我想要的几何形状应该是多边形或多多边形,并且它应该包含100个坐标而不是单个坐标。如何将这100多个坐标提供给csv文件?如果有人不了解我,我会更加清楚。让我知道。请忽略我的英语不好。enter image description here

Added我的csv文件。

1 个答案:

答案 0 :(得分:1)

尝试一下:

使用sf软件包,该软件包允许将组的点(例如状态)组合到MULTIPOINTPOLYGON。在您的文件中,某些州只有一分,所以我可以将其转换为MULTIPOINT

然后将sf类另存为geojson。


library(geojsonio)
library(sf)
library(tidyverse)

data<- data[,c("State", "lat", "lon")]

sf_data <- st_as_sf(data, coords = c("lon", "lat"))

sf_data  %>%
  group_by(State) %>%
  summarise(geometry = st_combine(geometry)) %>%
  st_cast("POLYGON") -> res_sfdata


geojson_write(res_sfdata, file = "yourpath/res_sfdata.geojson")

但是,您必须删除其他列。因为您要汇总的每个点上都有不同的信息。

编辑:如果要按更多列分组:


data<- data[,c("State", "PC_Name", "lat", "lon")]

sf_data <- st_as_sf(data, coords = c("lon", "lat"))

sf_data  %>%
  group_by(State, PC_Name) %>%
  summarise(geometry = st_combine(geometry)) %>%
  st_cast("POLYGON") %>%
  group_by(State) %>%
  summarise(geometry = st_combine(geometry)) 
  st_cast("MULTIPOLYGON") -> res_sfdata