In [1]:
Copied!
import psycopg2
import psycopg2
In [2]:
Copied!
user = "xxx"
passwd = "xxx"
conn_string = f"dbname=uzpr user={user} password={passwd} host=gislab.fsv.cvut.cz"
conn = psycopg2.connect(conn_string)
user = "xxx"
passwd = "xxx"
conn_string = f"dbname=uzpr user={user} password={passwd} host=gislab.fsv.cvut.cz"
conn = psycopg2.connect(conn_string)
In [3]:
Copied!
cur = conn.cursor()
cur = conn.cursor()
Vykreslíme statistiku počtu parcel pro jednotlivé druhy pozemku. Dotazujeme se přímo do pohledu vytvořeného v 1. části cvičení.
In [4]:
Copied!
cur.execute('SELECT "DRUH_POZEMKU", "POCET_PARCEL" FROM "DRUPOZ_STATS_VIEW"')
drupoz = []
count = []
for rec in cur.fetchall():
drupoz.append(rec[0])
count.append(rec[1])
print(drupoz)
print(count)
cur.execute('SELECT "DRUH_POZEMKU", "POCET_PARCEL" FROM "DRUPOZ_STATS_VIEW"')
drupoz = []
count = []
for rec in cur.fetchall():
drupoz.append(rec[0])
count.append(rec[1])
print(drupoz)
print(count)
['ostatní plocha', 'chmelnice', 'vinice', 'ovocný sad', 'vodní plocha', 'zahrada', 'lesní pozemek', 'trvalý travní porost', 'orná půda', 'zastavěná plocha a nádvoří'] [511, 0, 0, 0, 45, 76, 107, 355, 251, 172]
In [5]:
Copied!
import matplotlib.pyplot as plt
plt.bar(drupoz, count, color='skyblue')
plt.xlabel('Druh pozemku')
plt.ylabel('Počet parcel')
plt.title('Počet parcel podle druhu pozemku v katastrálním území 602515')
plt.xticks(rotation=45, ha='right')
plt.show()
import matplotlib.pyplot as plt
plt.bar(drupoz, count, color='skyblue')
plt.xlabel('Druh pozemku')
plt.ylabel('Počet parcel')
plt.title('Počet parcel podle druhu pozemku v katastrálním území 602515')
plt.xticks(rotation=45, ha='right')
plt.show()
Vykreslíme statistiku počtu parcel pro jednotlivé druhy pozemků a způsoby využití pozemků pomocí typu grafu "stacked bar chart".
In [6]:
Copied!
import matplotlib.pyplot as plt
import numpy as np
cur.execute('SELECT "ZPUSOB_VYUZITI", "DRUH_POZEMKU", "POCET_PARCEL" FROM "DRUPOZ_ZPVYPA_STATS_VIEW"')
data_dict = {}
drupoz = []
for rec in cur.fetchall():
zpusob_vyuziti = rec[0] or "nezarazeno"
druh = rec[1]
pocet_parcel = rec[2]
drupoz.append(druh)
if zpusob_vyuziti not in data_dict:
# Vytvoření klíče pro druh pozemku, pokud neexistuje
data_dict[zpusob_vyuziti] = {druh: pocet_parcel}
else:
# Přidání nebo aktualizace hodnoty pro daný způsob využití
data_dict[zpusob_vyuziti][druh] = pocet_parcel
print(data_dict)
unikatni_druhy = list(set(drupoz))
plt.figure(figsize=(12, 8))
bottom = np.zeros(len(unikatni_druhy))
for zpusob, druhy in data_dict.items():
values = [druhy.get(druh, 0) for druh in unikatni_druhy]
plt.bar(unikatni_druhy, values, bottom=bottom, label=zpusob)
# Aktualizace výšky sloupce, aby se sloupce způsobů využití nepřekrývaly, ale byly nad sebou
bottom += values
# Nastavení popisků os
plt.xlabel('Druh pozemku')
plt.ylabel('Počet parcel')
plt.title('Počty parcel a jejich druhy v návaznosti na způsob využití v katastrálním území 602515')
# Přidání legendy
plt.legend(title='Způsoby využití')
# Otočení textu na ose x pro lepší čitelnost
plt.xticks(rotation=45, ha='right')
# Zobrazení grafu
plt.show()
import matplotlib.pyplot as plt
import numpy as np
cur.execute('SELECT "ZPUSOB_VYUZITI", "DRUH_POZEMKU", "POCET_PARCEL" FROM "DRUPOZ_ZPVYPA_STATS_VIEW"')
data_dict = {}
drupoz = []
for rec in cur.fetchall():
zpusob_vyuziti = rec[0] or "nezarazeno"
druh = rec[1]
pocet_parcel = rec[2]
drupoz.append(druh)
if zpusob_vyuziti not in data_dict:
# Vytvoření klíče pro druh pozemku, pokud neexistuje
data_dict[zpusob_vyuziti] = {druh: pocet_parcel}
else:
# Přidání nebo aktualizace hodnoty pro daný způsob využití
data_dict[zpusob_vyuziti][druh] = pocet_parcel
print(data_dict)
unikatni_druhy = list(set(drupoz))
plt.figure(figsize=(12, 8))
bottom = np.zeros(len(unikatni_druhy))
for zpusob, druhy in data_dict.items():
values = [druhy.get(druh, 0) for druh in unikatni_druhy]
plt.bar(unikatni_druhy, values, bottom=bottom, label=zpusob)
# Aktualizace výšky sloupce, aby se sloupce způsobů využití nepřekrývaly, ale byly nad sebou
bottom += values
# Nastavení popisků os
plt.xlabel('Druh pozemku')
plt.ylabel('Počet parcel')
plt.title('Počty parcel a jejich druhy v návaznosti na způsob využití v katastrálním území 602515')
# Přidání legendy
plt.legend(title='Způsoby využití')
# Otočení textu na ose x pro lepší čitelnost
plt.xticks(rotation=45, ha='right')
# Zobrazení grafu
plt.show()
{'ostatní komunikace': {'ostatní plocha': 93}, 'koryto vodního toku umělé': {'vodní plocha': 26}, 'nezarazeno': {'orná půda': 251, 'zastavěná plocha a nádvoří': 168, 'lesní pozemek': 107, 'zahrada': 76, 'trvalý travní porost': 355}, 'silnice': {'ostatní plocha': 39}, 'společný dvůr': {'zastavěná plocha a nádvoří': 1}, 'jiná plocha': {'ostatní plocha': 30}, 'manipulační plocha': {'ostatní plocha': 46}, 'koryto vodního toku přirozené nebo upravené': {'vodní plocha': 16}, 'neplodná půda': {'ostatní plocha': 303}, 'vodní nádrž umělá': {'vodní plocha': 3}, 'zbořeniště': {'zastavěná plocha a nádvoří': 3}}
In [7]:
Copied!
conn.close()
conn.close()