🏎️ Rýchlokurz jazyka Python

JupyterLab
Google Colab
Matematická kartografia
Knižnice
Slovníky
Cykly
Iterácie
Užitočné funkcie
Autor

Jakub Šperka

Publikované

16. februára 2026

Import knižníc

Jednoduchý import knižnice/balíčka

Pomocou príkazu import načítate do vášho skriptu potrebné knižnice/balíčky.

Štruktúra príkazu je nasledovná: import NÁZOV_KNIŽNICE

Kód
# Ukážka použitia na knižnici NumPy:
import numpy 

Keď chcete použiť funkciu z importovaného balíčka je syntax nasledovná: NÁZOV_KNIŽNICE.NÁZOV_PRÍKAZU

Kód
# Ukážka použitia na príkaze funkcie sínus:
x = numpy.sin(numpy.pi)

Import knižnice/balíčka pomocou skratkového slova

Aby sme ušetrili čas a znaky v kóde môžeme názov knižnice skrátiť pomocou nami definované skratkového slova.

Štruktúra je nasledovná: import NÁZOV_KNIŽNICE as SKRATKOVÉ_SLOVO

Kód
# Ukážka použitia na knižnici NumPy:
import numpy as np

💡 V príprade knižnice NumPy je skratka “np” viacmenej nepísaným pravidlom, takto sa ku knižnici NumPy referuje vo veľkom množstve dokumentácie.

Keď chcete použiť funkciu z takto importovaného balíčka je syntax nasledovná: SKRATKOVÉ_SLOVO.NÁZOV_PRÍKAZU

Kód
# Ukážka použitia na príkaze funkcie sínus:
y = np.sin(np.pi)

Import konkrétnej funkcie/funkcií z knižnice

V prípade, že z nejakej knižnice potrebujeme len konkrétne funkcie môžeme importovať len tie.

Syntax je nasledovná: from NÁZOV_KNIŽNICE import NÁZOV_FUNKCIE, NÁZOV_FUNKCIE...

Všetky takto volané funkcie z knižníc sa používajú ako systémové. Neni preto nutné deklarovať balíček z ktorého pochádzajú.

Kód
# Ukážka použitia na knižnici Degrees.py:
from Degrees import deg2dms, dms2deg
Kód
# Ukážka použitia na funkcii deg2dms
z = deg2dms(12.3456)

💡 Aj v prípade takéhoto importu je možné použiť skratkové slovo, avšak v tomto prípade sa už vzťahuje na samotnú funckiu. Je tak možné funkcie z knižnice premenovať.

Import všetkých funkcií z knižnice

Ak chceme z balíčka importovať všetky funkcie takýmto spôsobom je syntax nasledovná: from NÁZOV_KNIŽNICE import *

Kód
# Ukážka použitia na knižnici Degrees.py:
from Degrees import *

Dátový typ Dictionary

Pre prácu s viacerými súbormi hodnôt, je vhodné použiť vstavaný dátový typ Dictionary (Slovník). Náš prípad použitia pre zadávanie súradníc miest, či parametrov elipsoidiov je celkom vhodný na použitie tohto dátového typu.

Syntax deklarácie tohto dátového typu môžeme zovšeobecnic nasledovne: NÁZOV_SLOVNÍKU = {"NÁZOV_PREMENNEJ":HODNOTA_PREMENNEJ, "NÁZOV_PREMENNEJ":HODNOTA_PREMENNEJ...}

Kód
# Ukážka použitia na elipsoide GRS80 a bode v okolí Nitry
GRS80 = {"a":6378137.000,"e":0.08181919112}

Syntax pre zavolanie hodnoty premennej zo slovníka je nasledovná: NÁZOV_SLOVNÍKU["NÁZOV_PREMENNEJ"]

Kód
# Ukážka použitia na priradení hodnoty premennej zo slovníka do inej premennej
main_axis = GRS80["a"]

💡 Dictionaries (Slovníky) sú rozšíriteľné a upravovateľné, tieto vlastnosti opisujeme pojmom mutable.

Kód
# Ukážka použitia na priradení ďalšej hodnoty dĺžky vedľajšej polosi do existujúceho slovníka GRS80
GRS80["b"] = 6356752.314

Užitočné funkcie

V rámci prvého cvičenia sme okrem základných matematických funkcií, ktoré sú v Pythone resp.NumPy pomenované samoopisne použili aj niektoré menej časté funkcie a nástroje, ktoré však budeme často používať. Prikladám preto jednoduchý zoznam:

Funkcia Popis Syntax Príklad použitia
np.degrees() Konverzia radiánov na stupne np.degrees(hodnota_v_radianoch) np.degrees(np.pi)180.0
np.radians() Konverzia stupňov na radiány np.radians(hodnota_v_stupnoch) np.radians(180)3.14159
round() / np.round() Zaokrúhľovanie čísla na zadaný počet desatinných miest round(hodnota, pocet_miest)
np.round(hodnota, pocet_miest)
round(3.14159, 2)3.14
abs() / np.abs() Výpočet absolútnej hodnoty abs(hodnota)
np.abs(hodnota)
abs(-5)5
Kód
# Ukážka použitia

d = np.degrees(np.pi)
r = np.radians(360)
z = np.round(1.12423242,3)
ab = abs(-10)

Formátovaný výstup na obrazovku

Pre vypísanie hodnôt na obrazovku používame funkciu print("TEXT_KTORÝ_ZOBRAZUJEME").

V prípade, že textový reťazecm, ktorý chceme vypísať je potrebné výstup formátovať. Syntax pre túto operáciu má nasledovný tvar: print(f"{PREMENNÁ_KTORÚ_ZOBRAZUJEME}")

Keď to skombinujeme to môže vyzerať takto: print(f"Hodnota premennej X = {X}")

Kód
# Ukážka použitia

X = 10
print(f"Hodnota premennej X = {X}")
Hodnota premennej X = 10

‼️ V prípade, že chcete vypísať hodnotu zo slovníka (Dictionary) je potrebné dbať na úvodzovky/apostrofy. Niektoré rozhrania môžu mať zo zhodujúcimi sa úvodzovkami problém, napr. Google Colab.

💡 V prípade, že rozhranie nepodporuje tento zápis: print(f"NÁZOV_SLOVNÍKU["NÁZOV_PREMENNEJ"]"),je potrebné použiť v jednom z prípadov apostrofy, nasledovne: print(f"NÁZOV_SLOVNÍKU['NÁZOV_PREMENNEJ']")


Cyklus While (Jednoduchá iterácia)

V rámci matematickej kartografie sa stretneme z viacerími prípadmi, kedy bude nutné určiť výsledok rovnice pomocou numerickej metódy jednoduchej iterácie. Túto úlohu dokážeme rýchlo a elegantne algoritmizovať, pomocou cyklu while.

Štruktúru takéhoto algoritmu s odkazmi na porblém z cvičenia môžeme zapísať nasledovne:

  • Fáza pred cyklom
    1. Definovanie premennej pre rozdiel a jeho počiatočná hodnota definovaná tak aby nebola splnená zastavovacia podmienka diff = 1
    2. Definovanie premennej a počiatočnej hodnoty pre sledovanie počtu iterácií (nie je potrebné) iteration = 0
    3. Definovanie počiatočnej hodnoty (0.iterácia) t_0 = (Nitra["Z"])/((1-GRS80["e"]**2)*p)
    4. Definovanie pomocnej hodnoty pre určenie rozdielu iterácií (nie je potrebné) phi_0 = np.arctan(t_0)
    5. Syntaktické definovanie začiatku cyklu while PREMENNÁ_PRE_ROZDIEL LOGICKÝ_OPERÁTOR ZASTAVOVACIA_HODNOTA: v našom prípade to je while diff >= 0.00000000000001:
  • Fáza cyklu (Odsadená po dvojbodke o 1 tabulátor)
    1. Výpočet hodnoty pre iteráciu t = (Nitra["Z"])/(p-((GRS80["a"]*GRS80["e"]**2)/(np.sqrt(1+(1-GRS80["e"]**2)*(t_0**2)))))
    2. Navýčenie pomocnej hodnoty o 1 pre počet iterácií (nie je potrebné) iteration = iteration + 1
    3. Výpočet pomocnej hodnoty pre výsledok iterácie phi = np.arctan(t)
    4. Výpočet rozdielu aktuálnej a predchádzajúcej iterácie, táto hodnota slúži pre spustenie ďalšej iterácie alebo pre vyjdenie z cyklu (vhodné implementovať absolútnu hodnotu, v závislosti od logickej podmienky)diff = abs(phi-phi_0)
    5. Priradenie hodnoty aktuálnej iterácie to hodnoty pre počiatočnú (predchádzajúcu iteráciu), ktorá sa použije v ďalšej iterácii. t_0 = t
    6. Priradenie pomocnej hodnoty aktuálnej iterácie to hodnoty pre počiatočnú (predchádzajúcu iteráciu), ktorá sa použije v ďalšej iterácii na výpočet rozdielu (nie je potrebné). phi_0 = phi
  • Fáza po cykle (Odsadená naspäť do pôvodnej vetvy kódu o 1 tabulátor)
    1. Priradenie výslednej (konečnej) iterácie do premmenej používanej na ďalšie výpočty (nie je potrebné) Nitra["phi_2"] = phi
Kód
# Analyzovaný príklad z cvičenia (Nespúšťať, neobsahuje predchádzajúce vztahy potrebné na výpočet)

diff = 1
iteration = 0
t_0 = (Nitra["Z"])/((1-GRS80["e"]**2)*p)
phi_0 = np.arctan(t_0)

while diff >= 0.00000000000001:
    t = (Nitra["Z"])/(p-((GRS80["a"]*GRS80["e"]**2)/(np.sqrt(1+(1-GRS80["e"]**2)*(t_0**2)))))
    iteration = iteration + 1
    phi = np.arctan(t)
    diff = abs(phi-phi_0)
    t_0 = t
    phi_0 = phi
       
Nitra["phi_2"] = phi

Definovanie vlastných funkcií

V prípade, že potrebujeme nejakú konktŕetnu funkcionalitu, a nie je bežne dostupná v základnom Pythone, či nejakom balíčku je možné si chýbajúci výpočet alebo fubkciu lahko doprogramovať a mať ju kedykoľvek pripravenú na ďalšie výpočty. Definovanie vlastnej funkcie si ukážeme na príklade z cvičenia, vytvoríme funkciu na výpočet izometrickej šírky z elipsodickej. Štrktúra definovania vlastnej funkcie je nasledovná:

  1. Deklarácia funkcie a vstupných premenných
  2. Telo funkcie
  3. Deklarovanie návratov

Vo všeobecnosti to môžeme zapísať takto:

def NÁZOV_FUNKCIE(PREMENNÉ_ODDELENÉ_ČIARKOU):
    TELO_FUNKCIE
    return ČO_MÁ_VRÁTIŤ

Nezabudnite, že telo funckie a návrátené hodnoty sú odsadené !

V našom prípade to bude vyzerať takto:

Kód
def isometric(phi, e):
    iso = np.log((np.tan(0.5*phi+(np.pi/4)))*(np.sqrt(((1-e*np.sin(phi))/(1+e*np.sin(phi)))**e)))
    return iso