You are on page 1of 74

Візуалізація даних.

Географічні дані в R.
Лекція 5
Питання
1. Моделі географічних даних.
2. Що таке ГІС?
3. Що таке просторовий аналіз?
4. Відображення просторових даних у R.
5. Пакет tmap.
6. Пакет ggplot2.
7. Пакет sf.
8. Створення анімації в R.
1. Моделі географічних даних
 Існує дві основні моделі географічних даних: векторна та растрова.
 Векторна модель даних представляє світ за допомогою точок,
ламаних ліній (поліліній) і багатокутників.
 Растрова модель даних ділить поверхню на комірки сталого
розміру.
Векторні дані
Растрові дані
Представлення просторових даних

 Карта - особливим типом графіка.


 Карта — це графік просторових даних, який також має мітки та інші графічні
об’єкти, такі як масштабна шкала або легенда.

 Самі просторові дані не слід називати картою!


Підготовчій етап
 1-й крок. Будуємо графік.

 2-й крок. Додаємо назви метеостанцій.


 Додаємо легенду на графік.
 Додамо кілька наборів точок на графік і намалюємо лінії та багатокутники.
 Просторові дані можуть бути представлені в одному 'data.frame'.
2. Що таке ГІС?
 Географічна інформаційна система — сучасна комп'ютерна технологія, що дозволяє
поєднати модельне зображення території (електронне відображення карт, схем, космо-,
аерозображень земної поверхні) з інформацією табличного типу (різноманітні статистичні
дані, списки, економічні показники тощо).
 Під ГІС розуміють систему управління просторовими даними та асоційованими з ними
атрибутами.
 ГІС забезпечує можливість використання, збереження, редагування, аналізу та
відображення географічних даних.
 Важливо зазначити, що більшості наборів даних можна призначити просторове
розташування на земній поверхні чи в довільній системі координат.
 Типи даних, які використовують у ГІС:
 Просторові/позиційні (метричні).
 Атрибутивні (семантичні).
 Позиційні дані описують просторові характеристики різних об'єктів: дороги, будівлі,
водойми, лісові масиви тощо.
 Реальні об'єкти можна розділити на дві абстрактні категорії: дискретні (будинки,
територіальні зони) і неперервні (рельєф, рівень опадів, середньорічна температура).
 Існує два способи представлення просторової інформації — векторний та растровий.
 Виникає питання: «Чи потрібно аналізувати набір даних в середовищі
ГІС?» Відповідь на це питання залежить від мети аналізу.
 Якщо, наприклад, потрібно визначити десять африканських країн із
найвищими показниками індексу конфліктів за період 1966-1978 років, то все,
що потрібно, — це проста таблиця, у якій перелічено ці показники за країнами.
 Якщо провести просте сортування в стовпці «Конфлікт» отримаємо, що ряд
представлений країн є першою десяткою країн із найвищими показниками
індексу конфліктів за період 1966-1978 років.

Джерело даних: Anselin, L.


and John O'Loughlin. 1992.
 Якщо задача аналізу полягає у тому, чи є країни з високим індексом конфлікту
географічно кластеризованими, чи дає наведена вище таблиця достатньо
інформації, щоб допомогти відповісти на це запитання?
 Відповідь, ні.
 Потрібні додаткові дані, що стосуються географічного положення та форми
кожної країни. Допомогла б карта країн.
3. Що таке просторовий аналіз?
Відмінність ГІС та просторового аналізу
Розподіл кленів у
 У контексті основного програмного забезпечення ГІС термін аналіз стосується досліджуваній зоні
маніпулювання даними та запитів до даних. 1000 x 1000 футів.

 У контексті просторового аналізу аналіз зосереджується на статистичному


аналізі закономірностей і основних процесів. Це дослідницький процес, за
допомогою якого намагаються кількісно визначити спостережувану
закономірність, а потім дослідити процеси, які могли породити цю модель.
 Наприклад, відбувається запис розташування кожного дерева в чітко визначеній
досліджуваній зоні. Потім малюється розташування кожного дерева (завдання
ГІС). Але на цьому етапі можна зробити висновки про спостережувану
закономірність.
 Дерева скупчені чи розсіяні?
 Чи постійна густота дерев на досліджуваній території?
 Чи міг тип ґрунту призвести до спостережуваної закономірності?

Ці питання розглядаються в просторовому аналізі з використанням


статистичних методів.
Світова топологія ГІС:

•Довідкові •Презентаційні •Статистичні карти,


Довідкові карти

Презентаційні карти

Статистичні карти
карти (карти карти, представлені метою яких є
походів, карти доріг в пресі, наприклад, маніпулювання
тощо). в журналах. Такі необробленими даними
•Використовуються карти розроблені, таким чином, щоб
для навігації по щоб передати дуже виявити закономірності,
ландшафту або конкретну розповідь які інакше не можна
визначення місць, за вибором автора. помітити в оригінальній
що представляють формі. Зазвичай для
інтерес. цього потрібні операції з
маніпулюванням даними
та візуалізація.

 Будемо використовувати статистичні карти.


 Популярне ГІС-програмне забезпечення є чудовим інструментом для
створення та обробки просторових даних, але якщо потрібно вийти за рамки
маніпулювання даними та проаналізувати шаблони та процеси, які могли
призвести до цих спостережень, потрібні інші інструменти. Одним із таких
інструментів є R! R має багатший набір інструментів для аналізу просторових
даних і статистики, доступних сьогодні.
4.Відображення просторових даних у R
 Існує кілька різних просторових форматів R. Вибір формату значною мірою буде
продиктований пакетом(ами) та/або функцією(ами), які використовуються у вашому
робочому процесі.
Розподіл форматів та їх призначення

використовується з використовується в
формат даних використовується для…
… пакеті …

візуалізація, маніпулювання,
sf вектор sf, інші
запит

візуалізація, маніпулювання,
raster растр raster, інші
просторова статистика

SpatialPoints*
SpatialPolygons* sp, візуалізація, просторова
вектор та растр
SpatialLines* spdep статистика
SpatialGrid*

аналіз/статистика точкового
ppp owin вектор spatstat
шаблону
аналіз/статистика точкового
im растр spatstat
шаблону
Читання просторових даних
1. Читання шейп-файлу
 Шейп-файл — це формат даних на основі файлів, рідний для ГІС ArcView 3.x.
 Концептуально шейп-файл — це клас об’єктів, у якому зберігається набір об’єктів, які
мають однаковий тип геометрії (точка, лінія або багатокутник), однакові змінні та
спільний просторовий екстент.
 Шейп-файли складаються з багатьох файлів, які мають однакову основну назву та
різні розширення файлів.
 Наприклад, зразок шейп-файлу, що складається з таких файлів:
Зауважте, що sf об’єкт зберігає не
лише геометрію, а й інформацію
про систему координат і дані
змінних!
2. Читання GeoPackage

 ГІС GeoPackage працює з файлами із розширенням gpkg.

 GeoPackage може зберігати більше одного шару даних, отримуємо список


шарів:

 У прикладі є два окремих шари: Interstateі та Rail.


 Можемо видобувати кожен шар окремо за допомогою параметру layer.
Набір просторових даних залізничного сполучення штату Мен (США)
3. Читання растру

 Пакет raster читає багато різних растрових форматів файлів, таких як geoTiff,
Imagine, HDF5 тощо.
 У прикладі зчитується растровий imagine-файл.

 Що відрізняє raster об’єкт від інших об’єктів файлу даних R - його зберігання?
 За замовчуванням файли даних завантажуються в пам’ять, а raster об’єкти – ні.
Перевірка, чи elev.r об'єкт завантажено в пам'ять:
 Зберегти растр у пам’яті, використовуємо readAll():

 Розглянемо властивості растру:

 Растровий об’єкт повертає:


 розміри сітки (кількість рядків, стовпців, клітинок),
 розмір пікселів/роздільну здатність (в одиницях системи координат
шару),
 географічний протяжність,
 рідну систему координат (UTM NAD83 Zone 19 з одиницями вимірювання)
 мінімальні/максимальні значення растру.
4. Створення просторового об'єкта з набору даних
 Зауважте, важливо вказувати систему координат, яка використовується для
запису пар координат, оскільки така інформація не зберігається у наборі даних.
 У прикладі значення координат записані в географічній системі координат WGS
1984 (crs = 4326). Фрейм даних зі значеннями широти та довготи деяких міст
штату Мен:

 Перетворення фрейму даних на просторовий об’єкт. Зверніть увагу, що


параметр crs= 4326 призначає систему координат WGS84 просторового об'єкту.
Перетворення sf об'єкта в Spatial* об'єкт
 У прикладі sf багатокутник перетворюється на SpatialPolygonsDataFrame об’єкт.

Перетворення sf об’єкта на owin об’єкт


 Пакет spatstat.
Перетворення raster об'єкта в im об'єкт
 Пакет maptools перетворить raster об’єкт на im об’єкт за допомогою
as.im.RasterLayer().

Перетворення Spatial* об'єкта в sf об'єкт


 Усі вищезазначені просторові формати, окрім owin, можуть бути приведені
до sf об’єкта за допомогою st_as_sf(), наприклад:
Склад sf об'єкта
 Можемо витягти таблицю sf об’єкта до спеціального набору даних:

 У наборі даному створюється стовпець геометрії (geometry), що зберігає


список пар геометричних координат (в цьому прикладі значення координат
вершини багатокутника).
 Можемо видалити стовпець геометрії (Geometry) перед створенням набору
даних:
Приклади візуалізації просторових даних у R
 Існує багато пакетів, які можна застосувати в R для відображення просторових
даних, представимо три найпоширеніших: tmap, ggplot2 і sf.
 Файл для прикладу дані про округи штату Мен:

 Дані складаються з п’яти шарів:


1) растр рельєфу (elev.r),
2) ламані доріг між штатами (inter.sf),
3) точки міст (p.sf),
4) ламані залізниці (rail.sf)
5) багатокутники округів штату Мен (s.sf).
 Усі векторні шари є sf об’єктами. Усі набори знаходяться в проекції UTM/NAD83,
за винятком шару p.sf - в географічній системі координат WGS 1984.
5. Пакет tmap
 Пакет tmap розроблено спеціально для відображення просторових даних.
Пропонує найбільші можливості відображення. Пакет розпізнає об’єкти sf,
raster і Spatial*.
 Відобразимо шар багатокутників округів Мен за допомогою сірої колірної
схеми:
 tm_shape() завантажує просторовий об’єкт (вектор або растр) у сеанс
відображення.
 tm_polygons() є однією функцій, які визначають спосіб відображення
просторового об’єкта.
 Наприклад, використаємо змінну Income для визначення колірної схеми:
Налаштування карти (поєднуючи різні елементи карти).
 Наприклад, легенда за межами карти за допомогою tm_legend(outside = TRUE):
 Не відображати поле легенди (legend.show = FALSE) і рамку набору даних
(tm_layout(frame = FALSE)):
 Не відображати межі багатокутників на графіку параметр border.col = NULL.
Об'єднання шарів
 Функція tm_shape()
 У прикладі шар залізниці та шар міст штату Мен додаються до карти доходу.
 Шар залізниці (rail.sf) відображається за допомогою tm_lines(), а шар точок
міст(p.sf) – за допомогою tm_dots(). Шари об’єднуються за допомогою символу - +.
Налаштування схем класифікації
 Можемо контролювати тип класифікації, колірну схему та номери бінів за
допомогою tm_polygons().
 Наприклад, щоб застосувати квантильну схему з 6 бінами та різними відтінками
зеленого:
 Інші типи класифікації (style) включають fixed, equal, jenks, kmeans and sd.
 Якщо потрібно контролювати розриви вручну, установіть і вкажіть розриви
класифікації за допомогою параметра breaks.

Більше налаштувань для легенди:


Налаштування кольорів
 Існує багато кольорових схем, можна дотримуватися зразків кольорів,
розроблених Синтією Брюер, палітри доступні в tmap під назвами:

Палітри для послідовних Палітри для різнокольорових схем:


кольорових схем:

Палітри для категоріальних


кольорових схем:
 Наприклад, відобразимо назви округів за допомогою Pastel1 категоріальної
кольорової схеми:
 Щоб відобразити відсоток населення, яке не має диплому про середню освіту
(стовпець NoSchoolу в s.sf), використаємо YlOrBr палітру з 8 бінами, змінюючи
заголовок легенди на «Частка без ступеня HS»:

Символ \na у загаловку легенди інтерпретується в R як новий рядок.


Змінити кольорову схему на протилежну - додайте символ мінус (-) перед
назвою палітри, уpalette = "-YlOrBr".
Додавання міток
 Додавання тексту і міток за допомогою tm_text().
 У прикладі мітки точок додаються праворуч від точок із вирівнюванням тексту за лівим
краєм (just = "left") і зі зміщенням x на 0,5 одиниці для доданого буфера між точкою та
текстом.
Додавання сітки або ліній
 За допомогою tm_grid().
 У прикладі сітка створюється за допомогою системи координат шару UTM і
ділиться приблизно на чотири сегменти вздовж осі x і на п’ять сегментів вздовж
осі y. Функція налаштує розміщення сітки, щоб створити «красиві» значення
міток.
 Щоб створити сітку (лінії широти та довготи), потрібно змінити систему координат сітки
на географічну, використовуючи систему координат EPSG, або рядок у форматі PROJ4.
 Зауважте, що PROJ синтаксис рядка втрачає перевагу в поточних і майбутніх просторових
середовищах R, тому, якщо це можливо, використовуйте EPSG (або OGC).
 У прикладі скористаємось EPSG:4326 те, що визначає географічну систему координат WGS
1984, а також змінимо розміщення сітки, явно вказавши значення широти/довготи сітки.
 Щоб додати символ ° до значень широти/довготи, потрібно:

Використовуємо десяткове представлення Юнікоду символу ° (Юнікод 176 ) і


передаємо його функції intToUtf8.
Додавання статистичних графіків

 До легенди можна додати гістограму змінних, що відображаються.


 За замовчуванням гістограма успадковує кольори, використані у схемі
класифікації.
Відображення растрових файлів
 Растрові об’єкти можна відобразити, вказавши функцію tm_raster().
 Наприклад, побудувати растр висот і призначити 64 безперервні відтінки
вбудованої кольорової рамки рельєфу:
 Наприклад, вручну встановимо перерви на 50, 100, 500, 750, 1000 і 15000
метрів:
 Інші градієнти кольорів, які пропонує R, включають heat.colors, rainbow та topo.colors.
 За допомогою функції colorRampPalette() можна створити власну кольорову рамку.
 Наприклад, щоб створити схему квантильної класифікації з 12 бінами, використовуючи
лінійку кольорів, яка змінюється від darkolivegreen4 до yellow до brown (вбудовані
кольори R), і додавши гістограму для перегляду розподілу кольорів між пікселями,
необхідно:

Зверніть увагу, що назви палітри Брюера також можна використовувати з растрами.


Зміна систем координат
 Tmap може змінювати систему координат виводу без необхідності повторного
проектування шарів даних.
 У прикладі растр рельєфу, шар залізниці та шар точок міста нанесено на USA Contiguous
Albers Equal Area Conic (це конічна рівноплоща картографічна проекція, яка використовує
дві стандартні паралелі). Широта/довгота сітка додається як посилання.
Відображення декількох карт
 За допомогою функції tmap_arrange() можна з’єднувати карти.
 Спочатку потрібно зберегти кожну карту на окремому об’єкті, перш ніж
об’єднувати їх.
Розбиття даних на ламані або групи багатокутників
 Наприклад, розділимо карту доходів на окремі фасети за допомогою змінної
NAME:

Порядок фасетного графіка відповідає алфавітно-цифровому


порядку значень атрибутів фасетування.
6. Пакет ggplot2
 Під час відображення просторових даних використовується функція geom_sf().
 Накреслити геометричні елементи шару:
 Можемо передати назву набору даних:

 За замовчуванням ggplot до графіка буде додано зону сітки, навіть якщо


система координат, пов’язана з шаром, знаходиться в системі спроєктованих
координат.
 Застосуємо будь-яку зі ggplot2 стратегій видалення сітки, наприклад
скористаємося функцією theme_void().
 Якщо потрібно, щоб ggplot використовував власну систему координат шару
(наприклад, UTM NAD 1983) замість географічної системи координат за
замовчуванням:
 Встановлюючи параметру datum = NULL,  Якщо потрібно застосувати
забороняємо ggplot перетворювати рідну систему рідну сітку до системи
координат шару на географічну. координат шару:
 Можемо контролювати інтервали сітки/ліній за
допомогою scale_..._continuous():
 Щоб символізувати геометрію шару за допомогою одного з атрибутів шару,
додаємо функцію aes().
 Зверніть увагу, що дані та естетику також можна визначити у функції
geom_sf:

 Змінимо колір рамки:


Налаштування кольорових схем
 скористайтеся scale_fill_stepsn*().
 Скористаємось схемами кольорів Брюера, застосувавши одну з функцій
scale_..._fermenter() і вказавши тип класифікації (послідовний, seq;
різний, div або категоричний, qual) і назву палітри.
 Наприклад, відобразимо різнокольорову схему за допомогою «PRGn»
кольорів:
 Щоб перевернути колірну схему встановимо direction = 1.
 ggplot() пропонує багато розширених параметрів.
 Наприклад, можемо змінити інтервали бінів, згенерувавши нерівномірну
схему класифікації та масштабуючи панель легенди, щоб відобразити
нерівномірні інтервали за допомогою функції guide_coloursteps() та її
аргументу even.steps = FALSE, змінимо розміри панелі легенди та заголовок у
цьому фрагменті коду.
Об'єднання шарів
 Перекривати шари на карті, додаючи функцію geom_sf().
 У такому випадку для зручності читання краще вказати назву шару у
функції geom_sf замість ggplot.
Додавання растрових шарів до карти

 Растровий шар має бути у форматі набору даних із стовпцями x та y.


 Растр elev.r має RasterLayer формат, і його потрібно буде перетворити на
фрейм даних за допомогою функції as.data.frame() з raster пакета. Її
параметри:
 xy = TRUE - функції для створення стовпців з координатами x і y з
набору даних
 na.rm = TRUE - видаляють порожні комірки (це допоможе зменшити
розмір набору даних).

 Зверніть увагу, що потрібно завантажити raster пакет, щоб скористатися його


as.data.frame.
7. Пакет sf
 Пакет sf має власну функцію plot().
 За замовчуванням, коли sf об’єкт передається в plot, функція генеруватиме
окремі графіки, оскільки є декілька змінних в наборі даних.
Обмежити графік лише однією змінною.
 Наприклад, відобразимо на графіку зміну Income:

 Щоб обмежити вихід лише геометрією шару, вкажіть назву об’єкта у функції
st_geometry().
 Контроль кольорів заливки та рамки за допомогою параметрів col і border
відповідно.

 Додати сітку, встановивши для параметра сітки значення TRUE. Щоб додати
мітки сітки, axes встановіть TRUE.
Об'єднання шарів
 Щоб додати шари, згенеруйте новий виклик plot із параметром add = TRUE.
 Наприклад, додамо шар rail.sf на карту:

 Зверніть увагу, що plot_sf вимагає, щоб шари були в одній системі


координат. Наприклад, додавання p.sf не відображатиме точки на карті,
оскільки вона знаходиться в іншій системі координат.
 sf шари можна поєднувати з растровими шарами.
 Порядок наведення шарів має значення! Зазвичай спочатку потрібно
відобразити растровий шар, а потім додати векторний шар(и).
Налаштування кольорових схем
 Налаштувати кольорові схеми, а також відобразити легенди.
 Останній вимагатиме використання вбудованої функції par() в R, за допомогою якої
параметр las = 1 відображатиме мітки ключів горизонтально, а параметр omi
запобігатиме обрізанню міток легенди.

Хоча plot з sf пропонує стислі команди побудови та незалежність від інших пакетів
картографування, він обмежений у можливостях налаштування.
8. Створення анімації в R.
 Пакет gganimate дозволяє анімувати графіки, побудовані за допомогою ggplot().
 Приклад 1. Використаємо набір демографічних даних gapminder з однойменного пакету
(install.packages("gapminder")):
 country – факторна змінна із 142 рівнями, назва країни
 continent – факторна змінна із 5 рівнями, назва континенту
 year – числова змінна, рік від 1952 до 2007 з кроком у 5 років
 lifeExp – числова змінна, очікувана тривалість життя при народженні, в роках
 pop – числова змінна, населення країни
 gdpPercap – числова змінна, ВВП країни на душу населення
Приклад 2.

https://r-graph-gallery.com/animation.html

You might also like