Repozitorijā apkopoti Centrālajā statistikas pārvaldē veidoti un izmantoti skripti dažādu Latvijas iestāžu publicēto atvērto datu lejupielādei un importēšanai PostgreSQL datubāzē, uzkrājot to vēsturi.
Importēto datu struktūra atšķiras no iestāžu publicētajiem datiem - tā ir vairāk normalizēta, taču ne pilnībā, mēģinot rast balansu starp normalizāciju un lietošanas ērtumu, arīdzan nav iekļautas kolonnas, kas satur datus, ko iespējams atvasināt no citām kolonnām. Atsevišķos gadījumos veidotas arī papildu tabulas un skati ar lietošanai ērtāku datu struktūru.
Skripti veidoti izpildīšanai Linux operētājsistēmās, taču ar nelielām izmaiņām tos iespējams lietot arī citās, tai skaitā Windows.
Bash skripti veidoti, lai ar cron varētu ieplānot to automātisku izpildi. Piemēram, lai izsauktu Adrešu registra datu automātisku atjaunošanu katru darbdienas rītu plkst. 8.20, Crontab pievienojams ieraksts 20 08 * * 1-5 /path/to/aw_csv.sh
(/path/to/
vietā jānorādā pilns ceļš uz datni). Crontab rediģē ar komandu crontab -e
. Jāņem vērā, ka skriptiem jābūt izpildāmiem, ko piemēra gadījumā iespējams īstenot ar komandu chmod +x /path/to/aw_csv.sh
. Izpildes laika pieraksta noteikšanai iespējams izmantot https://crontab.guru/. Lai cron darbi tiktu izpildīti pēc vietējā laika, nevis saskaņotā pasaules laika (UTC): sudo systemctl edit cron.service
Pievieno rindu: TZ=Europe/Riga
sudo systemctl restart cron
Nepieciešamā programmatūra:
- PostgreSQL ar paplašinājumiem PostGIS un PostgreSQL OGR Foreign Data Wrapper,
- wget,
- jq,
- p7zip.
Sākotnējā iestatīšana:
-
PostgreSQL:
- roles.sql - izveido lomas un lietotājus (
password
vietā jānorāda lietotāja parole). Atkarībā no konfigurācijas tie jāpievieno arī konfigurācijas datnē pg_hba.conf. Lietotāji editor un basic_user nav obligāti, bet tiek izmantoti turpmākajos skriptos. - izveido datubāzi (skriptos lietota
spatial
), tajā izpilda spatial.sql, kas pievieno paplašinājumus un nosaka pieejas tiesības. - public.sql - nosaka public shēmas pieejas tiesības.
- roles.sql - izveido lomas un lietotājus (
-
Izveido direktoriju datu failu glabāšanai (
DIRECTORY
norāda saknes direktoriju, kurā tā tiks izveidota, šeit un turpmāk pieņemta lietotāja mājas direktorija; jaunizveidotajai direktorijai jābūt lasāmai no PostgreSQL):export DIRECTORY=$HOME cd $DIRECTORY mkdir data
Ietvertas tās datu kopas, kas nepieciešamas datu apstrādei no citiem avotiem.
Sākotnējā iestatīšana:
PostgreSQL izveido csp shēmu un nosaka pieejas tiesības, izpildot csp.sql.
Sākotnējā iestatīšana:
-
Izveido direktoriju lejupielādēto datu glabāšanai (
DIRECTORY
norāda saknes direktoriju, kurā tā tiks izveidota):export DIRECTORY=$HOME/data cd $DIRECTORY mkdir csp
-
Izpilda bash skriptu csp.sh (lejupielādē datus).
-
PostgreSQL izveido ārējo datu avotu, izpildot ogr_fdw_csv_csp.sql (
/home/user
vietā jānorāda saknes direktorija).
Dati publicēti Latvijas atvērto datu portālā.
Sākotnējā iestatīšana:
PostgreSQL izveido vzd shēmu un nosaka pieejas tiesības, izpildot vzd.sql.
Sākotnējā iestatīšana:
-
Izveido direktoriju lejupielādēto datu glabāšanai (
DIRECTORY
norāda saknes direktoriju, kurā tā tiks izveidota):export DIRECTORY=$HOME/data cd $DIRECTORY mkdir aw_shp
-
Izpilda bash skriptu aw_shp.sh bez PostgreSQL procedūrām (lejupielādē datus).
-
PostgreSQL izveido ārējo datu avotu, izpildot ogr_fdw_aw_shp.sql (
/home/user
vietā jānorāda saknes direktorija). -
PostgreSQL izveido tabulu ciemu datu uzkrāšanai, izpildot vzd_init.sql.
- vzd_teritorialas_vienibas.sql - procedūra, kas apvieno vienā tabulā visas aktuālās teritoriālās vienības un pievieno atbilstošos administratīvo teritoriju un statistisko reģionu kodus un nosaukumus.
- vzd_ciemi_proc.sql - procedūra kumulatīvai ciemu robežu uzkrāšanai.
- aw_shp.sh - bash skripts, kas lejupielādē administratīvo teritoriju, teritoriālo vienību un ciemu robežas un izsauc procedūras vzd.teritorialas_vienibas() un vzd.ciemi_proc() (aiz
PGPASSWORD
jānorāda lietotāja scheduler parole).
Sākotnējā iestatīšana:
-
PostgreSQL izveido shēmu un tabulas, kurās importēt datus, izpildot aw_csv.sql (PostgreSQL OGR Foreign Data Wrapper netiek izmantots, jo nesaglabā dubultpēdiņas teksta laukos).
-
Izveido direktoriju lejupielādēto dzēsto ēku adrešu koordinātu glabāšanai (
DIRECTORY
norāda saknes direktoriju, kurā tā tiks izveidota):export DIRECTORY=$HOME/data cd $DIRECTORY mkdir aw_del
-
Izpilda bash skriptu aw_del.sh, kas lejupielādē dzēsto ēku adrešu koordinātas (
/home/user
vietā jānorāda saknes direktorija). -
PostgreSQL izveido ārējo datu avotu, izpildot ogr_fdw_aw_del.sql (
/home/user
vietā jānorāda saknes direktorija). -
PostgreSQL izveido tabulas datu uzkrāšanai, izpildot adreses_init.sql.
- adreses.sql - procedūra datu atjaunošanai.
- adreses_his_ekas_split.sql - procedūra, kas sadala pa laukiem adrešu vēsturiskos pierakstus.
- aw_csv.sh - bash skripts, kas lejupielādē VARIS datus, importē tabulas shēmā aw_csv un izsauc procedūras vzd.adreses() un vzd.adreses_his_ekas_split() (aiz
PGPASSWORD
jānorāda lietotāja scheduler parole).
postal_codes.sql - aprēķina pasta indeksu teritorijas, izmantojot Voronoja diagrammas (yyyymmdd
jānorāda teritoriālo vienību robežu datums, dd.mm.yyyy.
- VARIS datu datums).
Sākotnējā iestatīšana:
-
Izveido direktoriju lejupielādēto teksta datu glabāšanai (
DIRECTORY
norāda saknes direktoriju, kurā tā tiks izveidota):export DIRECTORY=$HOME/data cd $DIRECTORY mkdir nivkis_txt
-
Izpilda bash skriptus kk_shp.sh un pre_reg_buildings.sh bez PostgreSQL procedūrām (lejupielādē datus).
-
PostgreSQL izveido ārējo datu avotus, izpildot ogr_fdw_kk_shp.sql un ogr_fdw_pre_reg_buildings.sql (
/home/user
vietā jānorāda saknes direktorija). -
PostgreSQL izveido tabulas kadastra telpisko datu uzkrāšanai, izpildot nivkis_init.sql.
-
PostgreSQL izveido tabulas kadastra teksta datu uzkrāšanai, izpildot nivkis_txt_init.sql.
-
Izpilda bash skriptu pre_reg_buildings.sh.
- nivkis_proc.sql - procedūra kumulatīvai ēku un inženierbūvju, zemes vienību un zemes vienību daļu robežu, kā arī apgrūtinājumu ceļa servitūtu teritoriju uzkrāšanai.
- kk_shp.sh - bash skripts, kas lejupielādē telpiskos datus, apvieno shapefile (tikai ēkas, inženierbūves, zemes vienības, zemes vienību daļas un apgrūtinājumu ceļa servitūtu teritorijas) un izsauc procedūru vzd.nivkis() (aiz
PGPASSWORD
jānorāda lietotāja scheduler parole). - nivkis_property_proc.sql - procedūra kumulatīvai datu uzkrāšanai par nekustamajiem īpašumiem.
- nivkis_ownership_proc.sql - procedūra kumulatīvai datu uzkrāšanai par personu īpašumtiesībām.
- nivkis_parcel_proc.sql - procedūra kumulatīvai datu uzkrāšanai par zemes vienības raksturojošajiem datiem.
- nivkis_parcelpart_proc.sql - procedūra kumulatīvai datu uzkrāšanai par zemes vienību daļas raksturojošajiem datiem.
- nivkis_building_proc.sql - procedūra kumulatīvai datu uzkrāšanai par būves raksturojošajiem datiem.
- nivkis_premisegroup_proc.sql - procedūra kumulatīvai datu uzkrāšanai par telpu grupas raksturojošajiem datiem.
- nivkis_address_proc.sql - procedūra kumulatīvai datu uzkrāšanai par kadastra objektiem reģistrētajām adresēm.
- nivkis_encumbrance_proc.sql - procedūra kumulatīvai datu uzkrāšanai par kadastra objektiem reģistrētajiem apgrūtinājumiem.
- nivkis_mark_proc.sql - procedūra kumulatīvai datu uzkrāšanai par kadastra objektiem reģistrētajām atzīmēm.
- nivkis_valuation_proc.sql - procedūra kumulatīvai datu uzkrāšanai par kadastra objektu novērtējumiem un kadastrālajām vērtībām.
- nivkis_building_pre_reg_proc.sql - procedūra pirmsreģistrēto būvju datu atjaunošanai.
- pre_reg_buildings.sh - bash skripts, kas lejupielādē datus par pirmsreģistrētajām būvēm un izsauc procedūru vzd.nivkis_building_pre_reg_proc() (aiz
PGPASSWORD
jānorāda lietotāja scheduler parole). - nivkis_ekas_rekviziti.sql - materializētais skats ar aktuālajām ēku ģeometrijām un daļu teksta datu, t.sk. adresēm.
- nivkis_txt.sh - bash skripts, kas lejupielādē teksta datus, importē pagaidu PostgreSQL tabulās un izsauc procedūras (aiz
PGPASSWORD
jānorāda lietotāja scheduler parole).
Sākotnējā iestatīšana:
-
Izveido direktoriju lejupielādēto datu glabāšanai (
DIRECTORY
norāda saknes direktoriju, kurā tā tiks izveidota):export DIRECTORY=$HOME/data cd $DIRECTORY mkdir nitis
-
Izpilda bash skriptu nitis.sh bez PostgreSQL procedūrām (lejupielādē datus; ja nav instalēts, pirms tam instalē dos2unix).
-
PostgreSQL izveido ārējo datu avotu, izpildot ogr_fdw_csv_nitis.sql (
/home/user
vietā jānorāda saknes direktorija). -
PostgreSQL izveido tabulas datu uzkrāšanai, izpildot nitis_init.sql.
- nitis.sql - procedūra datu atjaunošanai.
- nitis_geom.sql - procedūra, kas pievieno trūkstošo ģeometriju no NĪVKIS datiem.
- nitis.sh - bash skripts, kas lejupielādē datus un izsauc procedūras vzd.nitis() un vzd.nitis_geom() (aiz
PGPASSWORD
jānorāda lietotāja scheduler parole).
Sākotnējā iestatīšana:
PostgreSQL izveido lad shēmu un nosaka pieejas tiesības, izpildot lad.sql.
Dati publicēti WFS pakalpju veidā.
Sākotnējā iestatīšana:
- PostgreSQL izveido ārējos datu avotus, izpildot ogr_fdw_wfs_lad.sql.
- PostgreSQL izveido tabulas datu uzkrāšanai, izpildot lad_init.sql.
- lad_field_blocks.sql - procedūra kumulatīvai lauku bloku datu uzkrāšanai.
- lad_fields.sql - procedūra kumulatīvai lauku datu uzkrāšanai.
- lad.sh - bash skripts, kas izsauc procedūras lad.field_blocks_proc() un lad.fields_proc() (aiz
PGPASSWORD
jānorāda lietotāja scheduler parole).
Sākotnējā iestatīšana:
PostgreSQL izveido mvr shēmu un nosaka pieejas tiesības, izpildot mvr.sql.
Dati publicēti Latvijas atvērto datu portālā.
Kodu klasifikatori aktuālajiem kodiem.
Sākotnējā iestatīšana:
- Izpilda bash skriptu mvr.sh bez PostgreSQL procedūras (lejupielādē datus; ja nav instalēts, pirms tam instalē 7za).
- PostgreSQL izveido ārējo datu avotu, izpildot ogr_fdw_mvr.sql (
/home/user
vietā jānorāda saknes direktorija). - PostgreSQL izveido tabulas datu uzkrāšanai, izpildot mvr_init.sql.
-
mvr_proc.sql - procedūra kumulatīvai datu uzkrāšanai.
-
mvr.sh - bash skripts, kas izsauc procedūru mvr.mvr_proc() (aiz
PGPASSWORD
jānorāda lietotāja scheduler parole). Pēc datu atjaunošanas tabulā mvr.mvr_imported jāizlabo vērtības kolonnās date_created un date_deleted uz Latvijas atvērto datu portālā norādītajām:UPDATE mvr.mvr_imported SET date_created = 'yyyy-mm-dd' --Latvijas atvērto datu portālā norādītais datums. WHERE date_created = 'yyyy-mm-dd'; --Datu atjaunošanas skripta izpildes datums. UPDATE mvr.mvr_imported SET date_deleted = 'yyyy-mm-dd' --Latvijas atvērto datu portālā norādītais datums. WHERE date_deleted = 'yyyy-mm-dd'; --Datu atjaunošanas skripta izpildes datums.