Страница 1 из 1

Карта Московской области

Добавлено: 28 апр 2020, 17:27
VistaSV30
Добрый день!
Изучаю пример работы с картами по книге Мастицкого. Загрузил карту Белоруссии:

Код: Выделить всё

gadm <- readRDS(gzcon(url(
  "http://biogeo.ucdavis.edu/data/gadm2.8/rds/BLR_adm2.rds"
)))


Подскажите адрес, где на этом сайте Московская область?

Спасибо!

Re: Карта Московской области

Добавлено: 28 апр 2020, 17:49
Игорь Белов
Данные GADM находятся на сайте GADM.
Московская область входит в состав России.

Re: Карта Московской области

Добавлено: 29 апр 2020, 09:15
VistaSV30
Карту России я скачал и попытался скопировать Московскую область, но пока не получается

Код: Выделить всё

madm <- readRDS(gzcon(url(
  "http://biogeo.ucdavis.edu/data/gadm2.8/rds/RUS_adm2.rds"
)))

mos <- madm[madm@data$NAME_1 == "Moskva"]
Получаю сообщение:
Error in `[.data.frame`(x@data, i, j, ..., drop = FALSE) :
undefined columns selected


Подскажите, что не так?

Re: Карта Московской области

Добавлено: 29 апр 2020, 09:18
gamm
так сделайте table(madm@data$NAME_1), и узнаете :mrgreen:

Re: Карта Московской области

Добавлено: 29 апр 2020, 09:22
VistaSV30
Названия регионов, я смог прочитать
unique(madm@data$NAME_1)
А вот как теперь скопировать одну область сообразить не могу

Re: Карта Московской области

Добавлено: 29 апр 2020, 09:43
gamm
запятую поставьте, без нее индексируются столбцы, а не строки. Только там что-то странное, похоже и Московскую область прихватили , там 81 объект :mrgreen:

Код: Выделить всё

 foo<- madm[madm@data$NAME_1 == "Moskva",]
 head(foo@data)
     OBJECTID ID_0 ISO NAME_0 ID_1 NAME_1 ID_2                NAME_2   HASC_2 CCN_2 CCA_2 TYPE_2 ENGTYPE_2           NL_NAME_2 VARNAME_2
1125     1125  188 RUS Russia   44 Moskva 1125 Balashikhinskiy rayon RU.MS.BR    NA        Raion           Балашихинский район          
1126     1126  188 RUS Russia   44 Moskva 1126     Chekhovskiy rayon RU.MS.CR    NA        Raion               Чеховский район          
1127     1127  188 RUS Russia   44 Moskva 1127         Chernogolovka             NA                                                     
1128     1128  188 RUS Russia   44 Moskva 1128     Dmitrovskiy rayon RU.MS.DR    NA        Raion             Дмитровский район          
1129     1129  188 RUS Russia   44 Moskva 1129           Dolgoprudny             NA                                                     
1130     1130  188 RUS Russia   44 Moskva 1130   Domodedovskiy rayon RU.MS.DD    NA        Raion           Домодедовский район    

Re: Карта Московской области

Добавлено: 29 апр 2020, 09:48
VistaSV30
Спасибо мне это и надо. Москва там есть отдельно "Moscow City".

Постоянно забываю эту запятую ставить.

Спасибо еще раз!

Re: Карта Московской области

Добавлено: 29 апр 2020, 10:17
nickleb

Код: Выделить всё

madm <- readRDS(gzcon(url(
  "http://biogeo.ucdavis.edu/data/gadm2.8/rds/RUS_adm2.rds"
)))
# mos <- madm[madm@data$NAME_1 == "Moskva"]

# Вы забыли поставить запятую перед закрывающейся квадратной скобкой:
# вот так правильно надо:
mos <- madm[madm@data$NAME_1 == "Moskva", ]
# проверяем простейшей визуализацией:
plot(mos)

Re: Карта Московской области

Добавлено: 29 апр 2020, 11:07
VistaSV30
Оказалось, что Крым и Севастополь на этом сайте относятся к Украине.

Подскажите еще, как теперь сохранить карту на своем компьютере, чтоб каждый раз не обращаться на сайт.
В каком формате сохранять переменную madm с картой?

Re: Карта Московской области

Добавлено: 29 апр 2020, 11:58
nickleb
VistaSV30 писал(а):
29 апр 2020, 11:07
В каком формате сохранять переменную madm с картой?
в RDS-формате (компактен) и сохраните:

Код: Выделить всё

saveRDS(mаdm, "madm.rds")
а читать так:

Код: Выделить всё

madm <- readRDS("madm.rds")

Re: Карта Московской области

Добавлено: 29 апр 2020, 13:38
VistaSV30
Карту построил, спасибо добрым людям - помогли!
Теперь проблема с раскраской

Код: Выделить всё

rg <- radm[radm@data$NAME_1 == "Moskva",]
counties <- tidy(rg, region = "NL_NAME_2")
m <- rep(2, 33614)
m[1] <- 3
m[669] <- 4
m[1502] <- 5
ggplot() + geom_map(data = counties, aes(map_id = id),
                    map = counties, color = "gray70", fill = m) +
  expand_limits(x = counties$long, y = counties$lat) +
  coord_map("polyconic")
Залить всю карту одним цветом получается.

Теперь не могу сообразить как выбирать цвет заливки в зависимости от какого-нибудь показателя (численность населения и т.п.).
В принципе один вариант уже есть - подставлять в вектор m нужные значения, но уж как-то муторно получается. Может быть есть более удобный способ?

Решение проблемы:
https://gis-lab.info/forum/viewtopic.php?f=31&t=25972

Re: Карта Московской области

Добавлено: 30 апр 2020, 11:21
VistaSV30
Посмотрите, пожалуйста предыдущее моё сообщение!

Re: Карта Московской области

Добавлено: 30 апр 2020, 15:47
gamm

Re: Карта Московской области

Добавлено: 01 май 2020, 15:32
nickleb
... специально-то, пожалуй, sf и plotly для "рендеринга-раскраски" полигонов в К можно ещё посмотреть: https://www.r-bloggers.com/visualizing- ... nd-plotly/

Re: Карта Московской области

Добавлено: 02 май 2020, 10:04
nickleb
,,, иль просто plot:

Код: Выделить всё

n <- length(mos@data$NAME_2)
plot(mos, col=rainbow(n), 
     main = 'Москва... как много в этом звуке для сердца русского слилось!',
     sub= '[А.С. Пушкин]')