diff --git a/MTM/task4-straipsnis/.gitignore b/MTM/task4-straipsnis/.gitignore new file mode 100644 index 0000000..6c911bf --- /dev/null +++ b/MTM/task4-straipsnis/.gitignore @@ -0,0 +1 @@ +/db/ diff --git a/MTM/task4-straipsnis/managedb b/MTM/task4-straipsnis/managedb new file mode 100755 index 0000000..e0886bb --- /dev/null +++ b/MTM/task4-straipsnis/managedb @@ -0,0 +1,23 @@ +#!/bin/bash +set -xeuo pipefail + +if [[ $1 == init ]]; then + mkdir -p db && initdb db + pg_ctl -D db -l db/logfile start + + psql postgres \ + -c 'CREATE DATABASE airportgames;' \ + -c 'CREATE USER airportgames;' \ + -c 'GRANT ALL PRIVILEGES ON DATABASE airportgames to airportgames;' + psql -d airportgames \ + -c 'CREATE EXTENSION postgis' +fi + +if [[ $1 == start ]]; then + pg_ctl -D db -l db/logfile start +fi + + +if [[ $1 == stop ]]; then + pg_ctl -D db -l db/logfile stop +fi diff --git a/MTM/task4-straipsnis/straipsnis.md b/MTM/task4-straipsnis/straipsnis.md new file mode 100644 index 0000000..587853d --- /dev/null +++ b/MTM/task4-straipsnis/straipsnis.md @@ -0,0 +1,53 @@ +Trumpas įvadas į GIS programuotojui +=================================== + +Jei tau nesvetimos duomenų bazės ar programavimas, ir iš žinių norėjote +daugiau, šis įrašas -- jums. Labai trumpai susipažinsime, kaip sukurti +"erdvinę" duomenų bazę ir leisti naudingas užklausas. + +Turinys: +- Kas yra PostGis? +- Užduoties aprašymas. +- Užduoties vykdymas. +- Pavyzdžiai. + +Kas yra PostGis? +---------------- + +PostGis yra PostgreSQL įskiepis, pridedantis naujų duomenų tipų ir funkcijų, +skirtų dirbti su erdve. Ką tai reiškia? Išspręskime užduotį ir sužinosime. + +Užduotis +-------- + +Susikurkime PostgreSQL lentelę su viso pasaulio oro uostais (bent tais, kurie +turi [IATA kodą][1]) ir pažaiskime su duomenimis. Turėdami visus pasaulio oro +uostus galime sugalvoti daug klausimų, bet man šiuo metu įdomu: +- kokie du oro uostai yra labiausiai nutolę vienas nuo kito? +- kurie du oro uosta yra arčiausiai vienas kito? +- kiek kartų reikia nuskristi United Economy klase iš Vilniaus į San + Franciską ir atgal (pro Frankfurtą), kad uždirbčiau [nemokamus pusryčius][2] prieš + skrydį? + +Užduoties vykdymas +------------------ + +Susidarys iš kelių dalių: +- Duomenų bazės sukūrimas. +- Duomenų importavimas. +- Užklausos. + +Duomenų bazės sukūrimui galite naudoti skriptą: + +``` +./managedb init +psql airportgames < init.sql +``` + +Atsisiųskime oro uostų informaciją [airports.dat][3] faile ir importuokime į duomenų bazę: + + + +[1]: https://en.wikipedia.org/wiki/International_Air_Transport_Association_code +[2]: https://www.united.com/ual/en/us/fly/mileageplus/premier/full-premier-benefits-chart.html +[3]: https://openflights.org/data.html