Есть ли функция R для преобразования числовых значений в координаты? - PullRequest
0 голосов
/ 28 апреля 2020

Я работаю с набором данных, в котором представлены химические анализы из разных мест в пещере, причем каждый анализ упорядочен по номеру участка и широте и долготе сайтов. Это первое изображение - то, что я сделал изначально, просто используя ggplot. Карта данных сайта, закрашенная N-концентрацией

Но я хочу использовать шейп-файл системы пещер, из которой получены данные, и сделать что-то похожее, построив точки над системой, а затем раскрасить их концентрацией. Ниже приведен шейп-файл, который я загрузил шейп-файл Cave system шейп-файл Cave system

Так что в основном я хочу иметь возможность отображать химические данные из моего набора данных, используемого для сопоставления первой фигуры, но на карта шейп-файла. Первоначально он продолжал говорить, что он не мог заговорить сверху этого. Поэтому я решил, что мне нужно преобразовать широту и долготу в пространственные координаты, которые затем можно отобразить в шейп-файле.

    Master_Cave_data <- Master_cave_data %>%
    st_as_sf(MastMaster_cave_data, agr = "identity", coord = Lat_DD)

Это было то, что я думал использовать, чтобы преобразовать числовые координаты широты в пространственные данные.

1 Ответ

3 голосов
/ 28 апреля 2020

Я предполагаю, что ваши координаты находятся в проекционной системе WSG84 (код crs 4326). Вы можете создать свой объект sf следующим образом:

Master_Cave_data <- st_as_sf(MastMaster_cave_data, coords = c('lon', 'lat'), crs = 4326)

Изменить столбцы lon и lat на соответствующие имена. Чтобы построить точки с помощью шейп-файла, они нужны вам в одной и той же проекционной системе, поэтому при необходимости выполните перепроектирование:

Master_Cave_data <- Master_cave_data %>% st_transform(st_crs(shapefile))

Пример

Заимствовано из там

df <- data.frame(place = "London", 
       lat = 51.5074, lon = 0.1278,
       population = 8500000) # just to add some value that is plotable
crs <- 4326
df <- st_as_sf(x = df,                         
           coords = c("lon", "lat"),
           crs = crs)

И вы можете взглянуть на карту:

library(tmap)
data("World")    
tm_shape(World[World$iso_a3 == "GBR", ]) + tm_polygons("pop_est") + 
    tm_shape(df) + tm_bubbles("population")
...