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

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

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

Сообщение VistaSV30 » 28 апр 2020, 17:27

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

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

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


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

Спасибо!
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2231
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1504
Откуда: Казань

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

Сообщение Игорь Белов » 28 апр 2020, 17:49

Данные GADM находятся на сайте GADM.
Московская область входит в состав России.
The purpose of computing is insight, not numbers

Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

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

Сообщение VistaSV30 » 29 апр 2020, 09:15

Карту России я скачал и попытался скопировать Московскую область, но пока не получается

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

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


Подскажите, что не так?
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

gamm
Гуру
Сообщения: 4057
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 29 апр 2020, 09:18

так сделайте table(madm@data$NAME_1), и узнаете :mrgreen:

Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

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

Сообщение VistaSV30 » 29 апр 2020, 09:22

Названия регионов, я смог прочитать
unique(madm@data$NAME_1)
А вот как теперь скопировать одну область сообразить не могу
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

gamm
Гуру
Сообщения: 4057
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 29 апр 2020, 09:43

запятую поставьте, без нее индексируются столбцы, а не строки. Только там что-то странное, похоже и Московскую область прихватили , там 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           Домодедовский район    

Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

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

Сообщение VistaSV30 » 29 апр 2020, 09:48

Спасибо мне это и надо. Москва там есть отдельно "Moscow City".

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

Спасибо еще раз!
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

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

Сообщение nickleb » 29 апр 2020, 10:17

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

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)

Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

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

Сообщение VistaSV30 » 29 апр 2020, 11:07

Оказалось, что Крым и Севастополь на этом сайте относятся к Украине.

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

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

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

Сообщение nickleb » 29 апр 2020, 11:58

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

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

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

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

madm <- readRDS("madm.rds")

Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

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

Сообщение VistaSV30 » 29 апр 2020, 13:38

Карту построил, спасибо добрым людям - помогли!
Теперь проблема с раскраской

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

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
Последний раз редактировалось VistaSV30 22 май 2020, 11:59, всего редактировалось 1 раз.
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

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

Сообщение VistaSV30 » 30 апр 2020, 11:21

Посмотрите, пожалуйста предыдущее моё сообщение!
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

gamm
Гуру
Сообщения: 4057
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 30 апр 2020, 15:47


nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

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

Сообщение nickleb » 01 май 2020, 15:32

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

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

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

Сообщение nickleb » 02 май 2020, 10:04

,,, иль просто plot:

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

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

Ответить

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

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

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