flowchart TD A[Start] --> B{PUNKT DECYZYJNY} B -->|Tak| C[AKCJA 1] B -->|Nie| D[AKCJA 2] C --> E[Koniec] D --> E
Wprowadzenie
Kontakt: krzysztof.dyba@amu.edu.pl
Algorytm to zestaw precyzyjnie zdefiniowanych instrukcji krok po kroku służących do rozwiązania konkretnego problemu lub wykonania zadania w skończonym czasie.
Jest to jednoznaczna sekwencja operacji, która wykorzystuje dane wejściowe, przetwarza je zgodnie z określonymi zasadami i generuje dane wyjściowe.
Przepis kuchenny to instrukcja w jaki sposób przygotować składniki (dane wejściowe), aby otrzymać potrawę (dane wyjściowe).
flowchart TD A[Start] --> B{PUNKT DECYZYJNY} B -->|Tak| C[AKCJA 1] B -->|Nie| D[AKCJA 2] C --> E[Koniec] D --> E
Prostokąt reprezentuje etap procesu.
Romb reprezentuje punkt decyzyjny, który rozgałęzia przepływ na podstawie warunków TAK/NIE lub PRAWDA/FAŁSZ.
Schemat blokowy to wizualna reprezentacja procesu, która ilustruje sekwencję kroków, decyzji i działań podejmowanych w celu osiągnięcia określonego celu.
W przeciwieństwie do algorytmu, cechuje się uproszczoną formą, przez co jest łatwiejszy w odbiorze.
Szukanie wartości maksymalnej w zbiorze
Dane wejściowe: Lista liczb.
Dane wyjściowe: Największa liczba z listy.
Kroki:
Ustaw pierwszą liczbę z listy jako największą.
Dla każdej liczby na liście:
Jeśli bieżąca liczba jest większa od największej, to ustaw ją na bieżącą.
Zwróć największą liczbę.
flowchart LR A[Start] --> B[Ustaw pierwszy element jako maks] B --> C[Dla każdego elementu z listy] C --> D{Czy bieżący element jest większy od maks?} D -- Tak --> E[Ustaw nowe maksimum] D -- Nie --> F[Sprawdź kolejny element] E --> F F --> G{Czy są kolejne elementy do sprawdzenia?} G -- Tak --> C G -- Nie --> H[Zwróć maks] H --> I[Koniec]
flowchart LR
A[Start] --> B[Ustaw pierwszy element jako maks]
B --> C[Dla każdego elementu z listy]
C --> D{Czy bieżący element jest większy od maks?}
D -- Tak --> E[Ustaw nowe maksimum]
D -- Nie --> F[Sprawdź kolejny element]
E --> F
F --> G{Czy są kolejne elementy do sprawdzenia?}
G -- Tak --> C
G -- Nie --> H[Zwróć maks]
H --> I[Koniec]
Pseudokod – uproszczony sposób opisywania logiki algorytmu bez użycia ścisłej składni określonego języka programowania. Traktowany jest jako szkic kodu, zatem nie może zostać uruchomiony na komputerach.
ALGORYTM ZnajdzMaks(lista)
maks = lista[1]
FOR kazdego elementu IN lista:
IF element > maks THEN
maks = element
RETURN maks
Jakie są różnice między tymi dwoma blokami kodu?
Algorytm geoprzestrzenny to procedura obliczeniowa służąca do przetwarzania i analizowania danych geoprzestrzennych (tj. w kontekście przestrzennym).
Są one przede wszystkim wykorzystywane w systemach informacji geograficznej do między innymi:
328 algorytmów (narzędzi) w 26 kategoriach:
802 algorytmów (narzędzi) w 16 kategoriach:
444 algorytmów (narzędzi) w 10 kategoriach:
Interfejsy definiują sposób, w jaki różne części systemu współdziałają ze sobą, umożliwiając im komunikację i wymianę informacji.
Geointerfejs odnosi się do interfejsu, który zapewnia dostęp do danych i usług geoprzestrzennych, umożliwiając interakcje pomiędzy różnymi systemami geoprzestrzennymi za pomocą interfejsu programowania aplikacji (API).
Otwarte interfejsy umożliwiają interoperacyjność między różnymi narzędziami, nawet jeśli są napisane w innych językach programowania lub używają odmiennych struktur do reprezentacji danych.
Interfejs wiersza poleceń (CLI) to oparty na tekście interfejs, który umożliwia użytkownikom interakcję z systemem lub oprogramowaniem poprzez wpisywanie poleceń w konsoli.
Wykorzystanie algorytmów programów GISowych jest możliwe poprzez powłokę systemową (np. bash czy PowerShell).
flowchart TD A[R] --> B{{<a href='https://github.com/paleolimbot/geos'>geos</a>}} B --> C[GEOS] A --> D{{<a href='https://github.com/USDAForestService/gdalraster'>gdalraster</a>}} D --> E[GDAL] A --> F{{<a href='https://github.com/stevenpawley/Rsagacmd'>Rsagacmd</a>}} F --> G[Saga GIS] A --> H{{<a href='https://github.com/OSGeo/rgrass'>rgrass</a>}} H --> I[Grass GIS] A --> J{{<a href='https://github.com/r-spatial/qgisprocess'>qgisprocess</a>}} J --> K[QGIS]
Wykorzystanie QGIS CLI za pośrednictwem pakietu qgisprocess
w R:
library(qgisprocess)
qgis_search_algorithms("buffer")
#> provider_title group algorithm
#> 1 GDAL Vector geoprocessing gdal:buffervectors
#> 2 GRASS Vector (v.*) grass7:v.buffer
#> 3 QGIS (native c++) Vector geometry native:buffer
qgis_run_algorithm(
"native:buffer",
INPUT = "punkt.gpkg",
OUTPUT = "bufor.gpkg",
DISTANCE = 100
)
#> Geometry set for 1 feature
#> Geometry type: POLYGON
#> Dimension: XY
#> Bounding box: xmin: 411648 ymin: 5084491 xmax: 411668 ymax: 5084511
#> Projected CRS: NAD83 / UTM zone 20N
#> POLYGON ((411668 5084501, 411668 5084498, 4...