Как добавить несколько длинных длин при преобразовании в CSV в формате Gejson в R
У меня есть широта / долгота определенной области. Как вставить несколько лат / лонов, соответствующих одной области в файле CSV? Я просто использую случайные числа прямо сейчас в моем файле CSV. Я приложил скриншот, чтобы показать мой файл CSV. Я не хочу одну широту и долготу, но несколько, соответствующих одной области. Я должен нанести их на карту позже
Это код, который я использую для преобразования моего CSV-файла в файл Geojson
library(geojsonio)
library(rgdal)
file_to_geojson(input = "FINAL DATA ENTRY.csv",method ="web" )
Файл geojson при создании дает координаты как это. Если вы видите выделенную красным цветом область в моем выходном файле geojson, который я конвертировал из CSV-файла, я хочу, чтобы геометрия была многоугольной или многоугольной, и она должна включать 100 координат, а не одну. Как я могу предоставить эти 100+ координат в CSV-файл? Я буду более ясен, если кто-то не сможет меня понять. Дайте мне знать. Проигнорируйте мой плохой английский, пожалуйста.
Добавлен мой CSV-файл.
1 ответ
Попробуй это:
С помощью sf
-пакет, который позволяет объединить точки группы (например, состояния) в MULTIPOINT
или же POLYGON
, В вашем файле некоторые штаты имеют только одну точку, поэтому я могу преобразовать ее в 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