Интерактивная карта вузов Москвы
Материал из Поле цифровой дидактики
Описание проекта
Этот проект демонстрирует создание интерактивной карты ведущих вузов Москвы с помощью языка R и библиотеки leaflet. Скрипт упакован в один файл и не требует внешних источников данных — вся информация (названия, адреса, координаты и ссылки на сайты) уже включена в код.
Проект наглядно показывает:
- работу с пакетом
leafletдля создания веб-карт; - использование
dplyrдля манипуляции данными; - создание интерактивных маркеров с группировкой в кластеры;
- формирование HTML-содержимого для всплывающих подсказок.
Карта отображается прямо во встроенном браузере RStudio (вкладка Viewer) и может быть сохранена в автономный HTML-файл.
Необходимые инструменты
- R 4.0+
- Пакеты: leaflet, dplyr, htmltools
Установка пакетов
При первом запуске скрипт автоматически проверит наличие пакетов и установит недостающие из CRAN.
if (!require(leaflet)) install.packages("leaflet")
if (!require(dplyr)) install.packages("dplyr")
if (!require(htmltools)) install.packages("htmltools")
Полный код скрипта
Сохраните следующий код в файл с расширением .R (например, moscow_universities_map.R) и выполните его в RStudio.
# Интерактивная карта ведущих вузов Москвы
# Проект по программированию на R
# 1. Установка и загрузка необходимых пакетов
if (!require(leaflet)) install.packages("leaflet")
if (!require(dplyr)) install.packages("dplyr")
if (!require(htmltools)) install.packages("htmltools")
library(leaflet)
library(dplyr)
library(htmltools)
# 2. Создание набора данных с координатами вузов
universities <- data.frame(
name = c(
"МГУ имени М.В. Ломоносова",
"НИУ «Высшая школа экономики»",
"МФТИ (Физтех)",
"МГТУ им. Н.Э. Баумана",
"НИЯУ «МИФИ»",
"РУДН",
"МГИМО МИД России",
"РЭУ им. Г.В. Плеханова",
"Финансовый университет",
"РАНХиГС",
"РГГУ",
"Первый МГМУ им. И.М. Сеченова"
),
lat = c(
55.702, # МГУ (Главное здание на Воробьёвых горах)
55.755, # ВШЭ (Покровский бульвар)
55.712, # МФТИ (Долгопрудный)
55.766, # МГТУ им. Баумана
55.757, # МИФИ
55.648, # РУДН
55.672, # МГИМО
55.728, # РЭУ им. Плеханова
55.799, # Финансовый университет
55.671, # РАНХиГС
55.775, # РГГУ
55.727 # Сеченовский университет
),
lng = c(
37.530, # МГУ
37.652, # ВШЭ
37.518, # МФТИ
37.679, # МГТУ
37.668, # МИФИ
37.520, # РУДН
37.486, # МГИМО
37.629, # РЭУ
37.596, # Финуниверситет
37.603, # РАНХиГС
37.597, # РГГУ
37.625 # Сеченовский
),
address = c(
"Ленинские горы, 1",
"Покровский бульвар, 11",
"Институтский пер., 9, Долгопрудный",
"2-я Бауманская ул., 5",
"Каширское ш., 31",
"ул. Миклухо-Маклая, 6",
"пр-т Вернадского, 76",
"Стремянный пер., 36",
"Ленинградский пр-т, 49",
"пр-т Вернадского, 82",
"Миусская пл., 6",
"ул. Трубецкая, 8, стр. 2"
),
website = c(
"https://www.msu.ru/",
"https://www.hse.ru/",
"https://mipt.ru/",
"https://bmstu.ru/",
"https://mephi.ru/",
"https://www.rudn.ru/",
"https://mgimo.ru/",
"https://www.rea.ru/",
"http://www.fa.ru/",
"https://www.ranepa.ru/",
"https://www.rsuh.ru/",
"https://www.sechenov.ru/"
),
stringsAsFactors = FALSE
)
# 3. Создание HTML-содержимого для всплывающих подсказок
universities <- universities %>%
mutate(
popup_content = paste0(
"<b>", name, "</b><br>",
"📍 ", address, "<br>",
"🌐 <a href='", website, "' target='_blank'>", website, "</a>"
)
)
# 4. Создание интерактивной карты
map <- leaflet(universities) %>%
# Добавление базового слоя карты (OpenStreetMap)
addTiles() %>%
# Установка начального вида (центр Москвы)
setView(lng = 37.618, lat = 55.751, zoom = 10) %>%
# Добавление маркеров
addMarkers(
lng = ~lng,
lat = ~lat,
popup = ~popup_content,
label = ~name, # Подсказка при наведении
labelOptions = labelOptions(
noHide = FALSE,
direction = "auto"
),
clusterOptions = markerClusterOptions() # Группировка маркеров при большом масштабе
) %>%
# Добавление легенды
addControl(
html = "<div style='padding: 8px; background: white; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);'><b>🏛️ Ведущие вузы Москвы</b></div>",
position = "topright"
)
# 5. Отображение карты
map
# 6. Сохранение карты в HTML-файл (опционально)
# htmlwidgets::saveWidget(map, "moscow_universities_map.html", selfcontained = TRUE)
Как это работает
- Создание набора данных: Внутри скрипта задаётся
data.frameс названиями, адресами, координатами и ссылками на сайты 12 ведущих университетов Москвы. Координаты определены приблизительно по главным корпусам. - Формирование подсказок: С помощью
dplyr::mutate()создаётся колонка с HTML-кодом, который будет показан при клике на маркер. Всплывающее окно содержит название, адрес и кликабельную ссылку на сайт вуза. - Построение карты:
leaflet()инициализирует карту.addTiles()добавляет базовый слой OpenStreetMap.setView()задаёт начальный центр и масштаб (Москва).addMarkers()размещает маркеры, группируя их в кластеры (markerClusterOptions()) для улучшения читаемости при уменьшении масштаба.addControl()добавляет кастомную легенду в правый верхний угол.
- Отображение: При выполнении скрипта карта автоматически открывается во вкладке Viewer в RStudio.
Ссылки
- [Документация пакета leaflet](https://rstudio.github.io/leaflet/)
- [Документация пакета dplyr](https://dplyr.tidyverse.org/)
- [Официальный сайт R](https://www.r-project.org/)
- [Страница загрузки RStudio](https://posit.co/download/rstudio-desktop/)
