Отобразить gadm_1 и точки наблюдений

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
stok1946
Новоприбывший
Сообщения: 5
Зарегистрирован: 17 май 2017, 08:25
Репутация: 1

Отобразить gadm_1 и точки наблюдений

Сообщение stok1946 » 24 авг 2020, 16:13

Коллеги! Геоинформатика - это не та лошадь, на которой я езжу, и прошу помочь.
Вознамерился создать слои ggplot() карты-подложки, на которой буду показывать результаты наблюдений в речках, ручейках некоторого региона.
Создал BBOX и захотел взглянуть:
library(sf)
library(rnaturalearth)
library(tidyverse)
WB_bbox <- sf::st_bbox(c(xmin = 44.532, xmax = 55.648, ymax = 55.112, ymin = 48.655))
WB_bbox %>% mapview::mapview()
Создался только файл index.html, который ничего не показывает в любом эксплорере. Ну, ладно, на нет и судна нет, как говорят в нашей богадельне. Начал грузить картографическую информацию
rivers10_base <- rnaturalearth::ne_download(scale = 10, type = "rivers_lake_centerlines", category = "physical", returnclass = "sf")
rivers10_europe <- rnaturalearth::ne_download(scale = 10, type = "rivers_europe",
category = "physical", returnclass = "sf")
lakes10 <- rnaturalearth::ne_download(scale = 10, type = "lakes_europe", category = "physical", returnclass = "sf")
# Обрезаю по взятому BBOX
baseWB_sf <- rivers10_base %>%
filter(name=="Volga") %>%
sf::st_crop(WB_bbox)
riverWB_sf <- rivers10_europe %>%
sf::st_crop(WB_bbox)
lakesWB_sf <- lakes10 %>%
sf::st_crop(WB_bbox)
# Получаю плот
ggplot() +
geom_sf(data = baseWB_sf, fill = "blue", color = "blue", size = 1.5) +
geom_sf_label(data = baseWB_sf, aes(label = name_ru), label.size = 0.1 ) +
geom_sf(data = lakesWB_sf, fill = "blue") +
geom_sf(data = riverWB_sf, color = "blue") +
geom_sf_label(data = riverWB_sf, aes(label = name_ru), label.size = 0.1 ) +
theme_bw() +
xlab("") +
ylab("") +
coord_sf(crs = 3857)
Любуюсь
Sf_reg.png
Sf_reg.png (18.01 КБ) 4976 просмотров
Но осадочек остается. Хочется нанести границы областей (и при особом везении - названия административных центров)
gadm36_RUS_1 <- readRDS(file = "gadm36_RUS_1_sf.rds")
gadmWB_sf <- gadm36_RUS_1 %>%
sf::st_crop(WB_bbox)
ggplot() +
geom_sf(gadmWB_sf, aes(map_id = NAME_1))
Ошибка: `mapping` must be created by `aes()`
Обидно, что еще там за aes()? Я же ничего не группирую.
Ну, ладно. Отобразим хотя бы координаты точек отбора проб из таблицы df
str(df)
'data.frame': 132 obs. of 3 variables:
$ x: num 49 52 52.3 50.2 50.8 ...
$ y: num 53.4 53.7 53.9 52.5 52.2 ...
$ z: num 6.92 0 6.55 0 0 ...

TB.Spatial <- SpatialPointsDataFrame(coords=cbind(df$x, df$y), data=df)
# proj4string=CRS('+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0')

ggplot() +
...
geom_point(data= fortify(TB.Spatial), aes(x=x, y=y), color="red") +
`data` must be a data frame, or other object coercible by `fortify()`
А это совсем плохо

stok1946
Новоприбывший
Сообщения: 5
Зарегистрирован: 17 май 2017, 08:25
Репутация: 1

Re: Отобразить gadm_1 и точки наблюдений

Сообщение stok1946 » 26 авг 2020, 18:17

Извините за беспокойство. Нашел свои помарки. Кому интересно, скрипт выглядит так (текст после рисунка выше):
gadm36_RUS_1 <- readRDS(file = "gadm36_RUS_1_sf.rds")
gadmWB_sf <- gadm36_RUS_1 %>%
sf::st_crop(WB_bbox)
gadmWB_sf$NL_NAME_1 <- c(NA,NA,NA,NA,NA,"Оренбургская",NA,"Самарская",
"Саратовская",NA,"Ульяновская","Волгоградская")
df <- structure(list(
X = c(49.00051,51.98063 , 52.33430, 50.18092, ...)
,Y = c(53.41473,53.74324 ,53.93778 , 52.52049, ...))
,.Names = c("X", "Y")
,row.names = c(NA, -4L)
,class = "data.frame")
ggplot() +
geom_sf(data = gadmWB_sf, size = 1, color = "grey10", fill = NA) +
geom_sf_label(data = gadmWB_sf, aes(label = NL_NAME_1), size = 3 ) +
geom_sf(data = baseWB_sf, fill = "blue", color = "blue", size = 1.5) +
geom_sf(data = lakesWB_sf, fill = "blue") +
geom_sf(data = riverWB_sf, color = "blue") +
geom_point(data= df, aes(x=X, y=Y), color="red", size=3.5) +
theme_minimal() +
xlab("") +
ylab("")
Sf_reg_adm.png
Sf_reg_adm.png (24.19 КБ) 4845 просмотров

stok1946
Новоприбывший
Сообщения: 5
Зарегистрирован: 17 май 2017, 08:25
Репутация: 1

Re: Отобразить gadm_1 и точки наблюдений

Сообщение stok1946 » 10 сен 2020, 13:27

Подробности об ответах на этот вопрос излагаются в блоге https://stok1946.blogspot.com/

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя