Перейти к содержанию

Глава 1. Создание пространственной БД#

Часть 1#

Методические указания (как делать)#

1 Выберите уникальный в пределах вашей группы регион России (за исключением городов федерального значения)
2 Зайдите на сайт Росстата и найдите Итоги Всероссийской переписи населения 2020 года

Например для Нижегородской области:
https://52.rosstat.gov.ru/folder/62175#

Где 52 это номер региона.

https://ratcatcher.ru/media/bd/rgr/20_8.png

3 Скачайте Таблицу «Численность населения городских округов, муниципальных районов, муниципальных округов, городских и сельских поселений, городских населенных  пунктов, сельских населенных пунктов с населением 3000 человек и более»
(Номер таблицы может отличаться! Формат csv, xsls, xls)

https://ratcatcher.ru/media/bd/rgr/21_8.png

Пример данных переписи населения для Белгородской области (В отличие от Нижегородской пункт №4. Название совпадает)

https://ratcatcher.ru/media/bd/rgr/22_8.png

4 Откройте скаченный файл и отредактируйте его следующим образом:
- Удалите «Шапку»
- Удалите строку 4, где указано «А 1 2 3 4 5)
- Удалите колонку «В общей численности населения, процентов)
- Добавьте название первой колонке

https://ratcatcher.ru/media/bd/rgr/23_8.png

Question

Ответьте на вопрос: Почему не обязательно хранить данные из удаленной колонки?
Как это связано с процессом нормализации данных Лекция 3?

5 Полученный файл открой в QGIS (без геометрии)

6 Проверьте таблицу атрибутов
- Переименуйте слой в Rosstat

https://ratcatcher.ru/media/bd/rgr/24_8.png

Если при открытии файла csv у вас вместо названия регинов стоят "нечитаемые" символы, то воспользуйтесь следующей инструкцией:

https://ratcatcher.ru/media/bd/rgr/25_8.png

7 Экспортируйте таблицу (слой) в формате PostgreSQL SQL Дамп

https://ratcatcher.ru/media/bd/rgr/26_8.png

При экспорте проверить корректность типов данных (Люди измеряются в целых числах! Если вы видите иной тип данных проверьте таблицу! Вернитесь к пункту 6!)

https://ratcatcher.ru/media/bd/rgr/27_8.png

8 При экспорте в поле геометрия «Тип геометрии» изменить на "Без геометрии"

https://ratcatcher.ru/media/bd/rgr/28_8.png

9 Создайте БД с именем «ВАШЕФИО_ОБЛ». Например «LebedevED_Nizn».

10 Импортируйте SQL-дамп (см. гиф)
- Откройте pgdmin
- Откройте панель "Query tool"
- Перенесите файл в панель и выполните код.

https://ratcatcher.ru/media/bd/rgr/Практика_4.gif

11 Отобразите содержимое Таблицы Rostat
12 Посчитайте сколько у вас NULL значений
13 Удалите все строки содержащие NULL значения одновременно в трех колонках
14 Выведите таблицу после удаления

Состав отчета Часть 1#

  1. Дайте краткую справку региону, который вы выбрали
  2. Опишите данные РОССТАТА, которые вы берете. Приложите ссылку на сайт росстата региона
  3. Покажите исходную таблицу в excel. (Назовите рис. 1 Исходные данные)
  4. Опишите процесс нормализации таблицы (Дополните рис. 2 Нормализованная таблица)
  5. Опишите какая таблица была создана в Postgres. Приведите для создания таблицы и первые 5 вставленных строчек командой INSERT INTO. Назовите эту «Листинг 1. Создание и наполнение таблицы {Ваше название таблицы}» Соблюдайте цветовую разметку!)

Tip

Пример Листинг 1. Создание и наполнение таблицы {Ваше название таблицы}

CREATE TABLE "public"."rosstat"(); 
ALTER TABLE "public"."rosstat" 
ADD COLUMN "ogc_fid" SERIAL CONSTRAINT "rosstat_pk" PRIMARY KEY; 
ALTER TABLE "public"."rosstat" ADD COLUMN "Название области" VARCHAR; 
ALTER TABLE "public"."rosstat" ADD COLUMN "Мужчины и женщины" NUMERIC(10,0);
ALTER TABLE "public"."rosstat« ADD COLUMN "Мужчины" NUMERIC(10,0); 
ALTER TABLE "public"."rosstat" ADD COLUMN "Женщины" NUMERIC(10,0); 
INSERT INTO "public"."rosstat" ("Название области", "Мужчины и женщины", "Мужчины", "Женщины") VALUES ('Нижегородская область', 3119115, 1411929, 1707186);   

6 Покажите запрос и таблицу в Pg admin (Листинг 2. Запрос для вывода таблицы Рис. 3 «Таблица с данными в PostgreSQL» )

7 Укажите сколько Null значений существует в таблице. (Листинг 3. Запрос для вывода Null –значений)

8 Удалите все строки, содержащие Null в трех и более столбцах (Листинг 4. Запрос для удаления пустых строк)

9 Рис. 4 Таблица после выполнения запроса

!!! tip Пример Листинг 4. Запрос для удаления пустых строк

```sql

DELETE FROM your_table_name 
WHERE "Мужчины и женщины" IS NULL AND "Мужчины" IS NULL AND 
"Женщины" IS NULL;   

```

Отчет присылается в формате doc, docx или pdf.

Примечание: Следите, чтобы названия колонок были в двойных кавычках (""), а текст в одинарных ('')! Иначе запрос не будет выполняться!

Часть 2#

Методические указания (как делать)#

1 Установите плагин “QuickOSM” для QGIS для загрузки векторных данных (Модули -> Управление модулями -> Поиск QuickOSM)

https://ratcatcher.ru/media/bd/rgr/29_8.png

Примечание: QuickOSM позволяет выгружать любые данные из OpenStreetMap сразу в проект без ограничений для размера территории выгрузки.

2 После установки найдите новый инструмент в разделе Вектор -> QuickOSM –> QuickOSM

https://ratcatcher.ru/media/bd/rgr/30_8.png

3 OSM предполагает запросы с использованием атрибутов.
Выберем атрибут admin level = 6 в границах выбранного вами субъекта РФ

https://ratcatcher.ru/media/bd/rgr/31.png

Примечание 1: Атрибут admin_level описывает границы на разных административных уровнях — от страны до города.Имеет значения от 2 до 10, где 2 границы страны, 10 – городских поселений

Примечание 2: Если после нажатия на «Выполнить запрос» ничего не произошло проверьте правильность правописания субъекта РФ!

4 Полученные вами данные загружены как «Временные слои». Сохраните их (ПКМ по слою -> сохранить на диск -> *.shp (или любой иной формат))

https://ratcatcher.ru/media/bd/rgr/32.png

5 Откройте таблицу атрибутов векторного полигонального слоя.

6 Нажмите https://ratcatcher.ru/media/bd/rgr/33.png для редактирования

7 Нажмите https://ratcatcher.ru/media/bd/rgr/34.png для удаления лишних полей

https://ratcatcher.ru/media/bd/rgr/35.png

Примечание:Вам необходимо оставить full_id , osm_id, name, official_name остальные поля удалить.

8 Сохраните изменения закончив редактирования (нажмите https://ratcatcher.ru/media/bd/rgr/33.png и сохраните)

9 Настройте проекцию проекта для этого выберите подходящую зону Гаусс-Крюгера. Например,дял Нижегородской области EPSG:20008 - Pulkovo 1995 / Gauss-Kruger zone 8

10 Проведите операции над линейным и точечным слоем.

11 Переименуйте слои как «Границы ИМЯ_СУБЪЕКТА_РФ», «Районы ИМЯ_СУБЪЕКТА_РФ» и «Административные центры ИМЯ_СУБЪЕКТА_РФ»

12 Экспортируйте все данные в формате SQL DUMP

https://ratcatcher.ru/media/bd/rgr/36.png

13 Загрузите данные подобно прошлому заданию (пункт 10. часть 1)

14 Выполните запрос использовав JOIN для соединения таблицы ROSSTAT И Районы ИМЯ_СУБЪЕКТА_РФ

Tip

    SELECT *
    FROM ROSSTAT
    JOIN  «Районы ИМЯ_СУБЪЕКТА_РФ»
    ON  ROSSTAT.name = "Районы ИМЯ_СУБЪЕКТА_РФ».name"

Примечание: Следите, чтобы названия колонок были в двойных кавычках (""), а текст в одинарных ('')! Иначе запрос не будет выполняться!

15 Визуализируйте результат.
(Оранжевый результат запроса, бежевый – все районы)

https://ratcatcher.ru/media/bd/rgr/37.png

Question

Почему не получилось «соединить» все данные?

16 Откройте ранее скаченный файл Росстата и сформируйте новую таблицу на их основе

  • Выберите только районы из списка «Районы ИМЯ_СУБЪЕКТА_РФ»
  • Обратите внимание, что в файле Росстата имена могут отличаться. Скорректируйте их
  • Городское и сельское население вынесите в отдельные таблицы
  • Для районов используйте OSM_ID

Пример:

https://ratcatcher.ru/media/bd/rgr/38.png

17 Полученные таблицы сохрание в формате .csv (.xlsx, .xls)

Состав отчета Часть 2#

Примечание: Часть 2 продолжается в том же файле после части 1.

  1. Напишите характеристику порталу OSM. Опишите какие данные там можно получить
  2. Укажите параметры запросы для QuickOSM. Добавьте таблицу с описанием значений admin_level. Добавьте Рис. 5 Результаты запросы
  3. Добавьте запрос для вывода векторного слоя районов субъекта РФ (Листинг 5). Покажите результат запроса.
  4. Объясните операцию JOIN. Укажите по какому атрибуту производится соединение и почему? Добавьте запрос в виде Листинга 6. Добавьте визуализацию всех районов субъекта РФ и результатов соединения
  5. Объясните почему возникла проблема. Опишите принципы нормализации ко 2НФ. Таблицы «Общее население», «Городское население» и «Сельское население» Вставьте в конец файла и назоваите «Приложение А.1», «Приложение А.2», «Приложение А.3» соответственно

Отчет присылается в формате doc, docx или pdf.

Часть 3#

Методические указания (как делать)#

1 Загрузите *.csv с населением по вашему субъекту РФ в базу данных (они были сделаны в конце прошлой части)

2 Для загрузки новых таблиц вы можете пользоваться «Менеджером БД»

  • Базы данных -> Менеджер БД
  • Раскройте вашу БД -> из списка выберите public (одним щелчком) -> затем нажимаете Импорт слоя/файла
  • Выбираете параметра импорта (какой слой, в какую Базу данных, как назвать таблицу)

Примечание: Чтобы QGIS понял в какую БД импортировать данные в должны выбрать БД из спиcка
(Раскройте POSTGIS -> раскройте выбранную БД -> выберите public [он загорится синим цветом])

https://ratcatcher.ru/media/bd/rgr/39.png

3 Отобразите полученные таблицы при помощи запроса SELECT и выведите как слои QGIS

4 Чтобы соединить таблицу с векторным слоем нажмите ПКМ по Районы ИМЯ_СУБЪЕКТА_РФ

  • Выберите вкладку «Связи». Нажмите на +. Установите связь между слоем и таблицей по атрибуту OSM_ID

https://ratcatcher.ru/media/bd/rgr/40.png

Примечание: Вкладка Связь работает аналогично оператору JOIN. Только в данном случае вместо ручного запроса вы используете графический интерфейс

5 В поле «Присоединяемые поля» выберите все поля, кроме OSM_ID

6 Повторите операцию для всех 3 таблиц (Таблица Общее население, Таблица Городское население, Таблица Сельское населения)

7 Измените стиль отображения слоя, подобрав шкалу.

  • Выведите сформированный слой при помощи оператора JOIN.
  • Нажмите ПКМ по слою и перейдите в раздел свойства
  • Выберите вкладку стиль

https://ratcatcher.ru/media/bd/rgr/41.png

8 Измените стиль отображения с «Простой символики» на «Символизация по диапазонам значений»

https://ratcatcher.ru/media/bd/rgr/42.png

9 Настройте карту для отображение общего состава населения

10 Шкалу и количество классов настройте по своему усмотрению, исходя из правил картографического отображения

https://ratcatcher.ru/media/bd/rgr/43.png

11 Перейдите во вкладку «Диаграммы» (ПКМ по слою -> свойства -> Диаграммы)

  • Выберите «Круговая диаграмма».
  • Нажмите на ε и вычислите долю городского населения (поделите общее население на городское * 100)
  • Нажмите на ε и вычислите долю сельского населения (поделите общее население на городское * 100)
  • Подберите контрастные цвета для отображения

https://ratcatcher.ru/media/bd/rgr/44.png

12 При необходимости настройте Размер круговых диаграмм (никакая диаграмма не должна выходить за пределы границ районов)

https://ratcatcher.ru/media/bd/rgr/45.png

Пример Фрагмент карты Нижегородской области

https://ratcatcher.ru/media/bd/rgr/46.png

13 Проведите компоновку карты

14 Проект -> Менеджер макетов ->создать ->Область Фамилия

https://ratcatcher.ru/media/bd/rgr/47.png

15 Добавьте карту на Холст (холст направьте горизонтально или вертикально в зависимости от протяженности области)

https://ratcatcher.ru/media/bd/rgr/48.png

16 Добавьте рамку

https://ratcatcher.ru/media/bd/rgr/49.png

17 Добавьте герб региона. Добавьте масштаб

https://ratcatcher.ru/media/bd/rgr/50.png

18 Итоговый макет экспортируйте в изображение

https://ratcatcher.ru/media/bd/rgr/51.png

Состав отчета Часть 3#

Примечание: Часть 3 продолжается в том же файле после части 2.

1 Опишите все атрибуты внутри ваших таблиц в формате:

Таблица "Рейсы"
Код рейса (первичный ключ)
Номер рейса (Числовой, длинное целое)
Аэропорт вылета (Текстовый, 20)
Аэропорт назначения (Внешний ключ, ссылается на таблицу "Аэропорты назначения")
Продолжительность полета (Временной)
Цена билета (Денежный, в рублях)

2 В виде схемы отобразите соединения между имеющимися таблицами (можете воспользоваться сервисом https://dbdiagram.io/d). Представьте в виде рис. 6

3 Покажите таблицу атрибутов слоя Районы ИМЯ_СУБЪЕКТА_РФ после соединения

4 Из документации QGIS выпишите, чем отличаются алгоритмы формирования шкал. Посмотрите, какой из алгоритмов и сколькими классами вам подойдет. Полученную шкалу «округлите». Например,
Ступень от 999 до 1793 целесобразно для лучшего восприятия превратить в «от 1000 до 1800» (или от 1000 до 2000)

5 Дайте рис. 7, рис. 8 и рис.9 для иллюстрации разных параметров автоматической генерации

6 Приведите итоговую шкалу и карту на рис. 10

7 Полученную карту проанализируйте (есть ли закономерности в распределении населения?)
Опишите результаты пространственного анализа.

8 Добавьте рис. 11 (карту с картодиаграммами соотношения городского населения) Проведите пространственный анализ посредствам визуального изучения.

9 Сделайте запрос к БД, который сформирует таблицу с долями городского и сельского населения по административным районам. Добавьте эту таблицу в приложение А.4

10 Рис. 12 Добавьте итоговый макет. Укажите масштаб.

Отчет присылается в формате doc, docx или pdf.