Język SQL w QGIS

Author

Anna Dmowska

1 Cel ćwiczenia

Celem ćwiczenia jest omówienie narzędzi selekcji atrybutowej z wykorzystaniem składni SQL.

2 Dane

W ćwiczeniu zostaną wykorzystane dane z folderu COUNTRIES:

  • world_countries.gpkg - zawierające granice państw i terytoriów zależnych.
  • wdi1990_2020.csv - zawierające podstawowe informacje dotyczące poszczególnych państw oraz terytoriów zależnych.

3 Przygotowanie danych

  • Wczytać do QGIS dane world_countries.gpkg oraz wdi1990_2020.csv.
  • Po wczytaniu pliku wdi1990_2020.csv trzeba upewnić się, że dane zostały wczytane jako dane liczbowe (zmiennoprzecinkowe lub całkowite).

  • Do danych przestrzennych world_countries.gpkg dołączyć warstwę wdi1990_2020.csv.

3.1 Łączenie warstw

  • Wybrać właściwości warstwy world_countries oraz opcję Joins (Złączenia).
  • Klucz ID pozwalający na połączenie obu warstw to trzyliterowy kod obszaru (Code na warstwie wdi1990_2020 oraz ISO_A3 na warstwie world_countries.gpkg)
  • Uwaga! Oba pliki zawierają kolumnę z nazwą terytorium (NAME, Name). Na etapie łączenia trzeba wskazać wszystkie kolumny w zbiorze wdi1990_2020 z wyjątkiem kolumny Name. Przy zduplikowanych nazwach kolumn nie będzie można zapisać pliku do geopaczki.

  • Zapisać warstwę world_countries z dołączonymi danymi attrybutowymi jako world_countries_attr.gpkg, nazwa warstwy wdi.

4 Edytor SQL

W oknie managera baz danych (DB Manager) po wskazaniu Database - SQL Window pojawi się okno edytora SQL

  • Utworzenie zbioru danych zawierających tylko dane dla 2020 roku
#| eval: false
SELECT Code, NAME_PL, Region, CONTINENT, TYPE, HDI_Code, INCOME2020, GDP2020, POP2020, RPOP2020, UPOP2020, LE2020, HDI2020, geom 
FROM wdi

- Selekcja danych spełniających określony warunek

#| eval: false
SELECT * 
FROM wdi2020 
WHERE CONTINENT = 'Africa'

#| eval: false
SELECT * 
FROM wdi2020 
WHERE CONTINENT = 'Africa' AND POP2020 > 50000000

#| eval: false
SELECT * 
FROM wdi2020 
WHERE CONTINENT = 'Africa' AND HDI_Code IN ('High', 'Very High')

#| eval: false
SELECT * 
FROM wdi2020 
WHERE Region LIKE '%Asia'

#| eval: false
SELECT * 
FROM wdi2020 
WHERE Region LIKE '%Asia%'

5 Okno SQL dla danej warstwy

6 Selekcja poprzez wyrażenie

Otworzyć okno selekcji poprzez wyrażenie oraz wpisać wyrażenie: HDI_Code IN (‘Low’, ‘Medium’)

7 Zadanie do samodzielnego wykonania

7.1 Zadanie 1

Wykorzystując edytor języka SQL:

  1. Utwórz zbiór danych zawierający kolumny Code, NAME_PL, Region, CONTINENT, TYPE, HDI_Code oraz dane dla 1990 roku. Zapisz utworzony zbiór danych jako wdi1990.gpkg
  2. Wybierz kraje, których nazwa zaczyna się na P i zapisz je do osobnej warstwy w geopaczce wdi1990, nazwa warstwy: kraje_p.
  3. Wybierz kraje z liczbą ludności między 50 - 100mln i zapisz je do osobnej warstwy w geopaczce wdi1990, nazwa warstwy: kraje_50_100mln. .
  4. Wybierz kraje położone w Europie oraz Azji i zapisz je do osobnej warstwy w geopaczce wdi1990, nazwa warstwy: kraje_europa_azja.

7.2 Zadanie 2

Używając narzędzia selekcji poprzez wyrażenie (select by expression)

  1. Wybierz kraje które w roku 1990 były sklasyfikowane jako Low income, a w roku 2020 jako Upper middle income. Jakie to kraje?
  2. Wybierz kraje, w których w 1990 roku oczekiwana długość trwania życia przekraczała 70 lat. Ile jest takich obszarów?
  3. Wybierz kraje, w których w 2020 roku oczekiwana długość trwania życia nie przekraczała 70 lat. Ile jest takich obszarów?