Важно
Prevod je zajednički napor :ref:`možete se pridružiti `. Ova stranica je trenutno prevedena na |napredak prevođenja|.
16.1. Lekcija: Podešavanje PostGIS-a
Podešavanje PostGIS funkcija će vam omogućiti pristup prostornim funkcijama iz PostgreSQL-a.
Cilj ove lekcije: Instalirati prostorne funkcije i ukratko demonstrirati njihove efekte.
Белешка
U ovoj vežbi pretpostavićemo upotrebu PostGIS verzije 2.1 ili novije. Instalacija i konfiguracija baze podataka se razlikuju za starije verzije, ali ostatak materijala u ovom modulu će i dalje funkcionisati. Za pomoć oko instalacije i konfiguracije baze podataka pogledajte dokumentaciju za vašu platformu.
16.1.1. Instaliranje pod Ubuntuom
Postgis se lako instalira iz apt-a.
$ sudo apt install postgresql
$ sudo apt install postgis
Zaista, to je tako lako…
Белешка
Tačne verzije koje će biti instalirane zavise od toga koju verziju Ubuntua koristite i koje ste repozitorijume konfigurisali. Nakon instalacije možete proveriti verziju izdavanjem upita „select PostGIS_full_version();“ pomoću psql-a ili nekog drugog alata.
Da biste instalirali određenu verziju (npr. PostgreSQL verziju 13 i PostGIS 3), možete koristiti sledeće komande.
$ sudo apt install wget ca-certificates
$ sudo lsb_release -a
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
$ sudo apt-get update
$ sudo apt install postgis postgresql-13-postgis-3
16.1.2. Instalacija na Windows-u
Instalacija na Windows-u može se obaviti iz binarnih paketa pomoću uobičajenih Windows dijaloga za instalaciju.
Prvo posetite stranicu za preuzimanje. Zatim pratite ovaj vodič.
Više informacija o instalaciji na Windows-u možete pronaći na PostGIS sajtu.
16.1.3. Instalacija na drugim platformama
Preuzimanje sa PostGIS sajta sadrži informacije o instalaciji na drugim platformama, uključujući macOS i druge Linux distribucije
16.1.4. Konfigurisanje baza podataka za korišćenje PostGIS-a
Kada je PostGIS instaliran, potrebno je da konfigurišete svoju bazu podataka da koristi ekstenzije. Ako ste instalirali PostGIS verziju > 2.0, ovo je jednostavno kao izdavanje sledeće komande pomoću psql koristeći bazu podataka address iz naše prethodne vežbe.
$ psql -d address -c "CREATE EXTENSION postgis;"
Белешка
U zavisnosti od vaše verzije, više uputstava o tome kako prostorno omogućiti bazu podataka možete pronaći na https://postgis.net/docs/postgis_administration.html#create_spatial_db.
16.1.5. Pregled instaliranih PostGIS funkcija
PostGIS se može zamisliti kao zbirka funkcija unutar baze podataka koje proširuju osnovne mogućnosti PostgreSQL-a tako da može da radi sa prostornim podacima. Pod „radi sa“ mislimo na čuvanje, preuzimanje, postavljanje upita i manipulaciju. Da bi se to postiglo, u bazu podataka se instalira niz funkcija.
Naša PostgreSQL address baza podataka sada je geoprostorno omogućena, zahvaljujući PostGIS-u. U ovo ćemo mnogo dublje zaroniti u narednim odeljcima, ali dajmo vam kratku probu. Recimo da želimo da napravimo tačku iz teksta. Prvo koristimo psql komandu da pronađemo funkcije koje se odnose na tačku. Ako već niste povezani sa address bazom podataka, povežite se sada. Zatim pokrenite:
\df *point*
Ovo je komanda koju tražimo: st_pointfromtext. Za listanje kroz listu koristite strelicu nadole, zatim pritisnite Q da biste izašli nazad u psql školjku.
Pokušajte da pokrenete ovu komandu:
select st_pointfromtext('POINT(1 1)');
Rezultat:
st_pointfromtext
--------------------------------------------
0101000000000000000000F03F000000000000F03F
(1 row)
Tri stvari koje treba primetiti:
Definisali smo tačku na položaju 1,1 (pretpostavlja se EPSG:4326) pomoću
POINT(1 1),Pokrenuli smo sql naredbu, ali ne nad bilo kojom tabelom, već samo nad podacima unetim iz SQL prompta,
Rezultujući red nema mnogo smisla.
Rezultujući red je u OGC formatu pod nazivom „Well Known Binary“ (WKB). Ovaj format ćemo detaljno razmotriti u sledećem odeljku.
Da bismo rezultate dobili nazad kao tekst, možemo brzo pregledati listu funkcija za nešto što vraća tekst:
\df *text
Upit koji sada tražimo je st_astext. Kombinujmo ga sa prethodnim upitom:
select st_astext(st_pointfromtext('POINT(1 1)'));
Rezultat:
st_astext
------------
POINT(1 1)
(1 row)
Ovde smo uneli nisku POINT(1,1), pretvorili je u tačku pomoću st_pointfromtext(), i pretvorili je nazad u čitljiv oblik pomoću st_astext(), što nam je vratilo našu originalnu nisku.
Još jedan poslednji primer pre nego što zaista uđemo u detalje korišćenja PostGIS-a:
select st_astext(st_buffer(st_pointfromtext('POINT(1 1)'),1.0));
Šta je to uradilo? Napravilo je bafer od 1 stepena oko naše tačke i vratilo rezultat kao tekst.
16.1.6. Prostorni referentni sistemi
Pored PostGIS funkcija, ekstenzija sadrži zbirku definicija prostornih referentnih sistema (SRS) kako ih je definisala Evropska grupa za naftna istraživanja (EPSG). Ove se koriste tokom operacija kao što su pretvaranja koordinatnih referentnih sistema (CRS).
Ove SRS definicije možemo pregledati u našoj bazi podataka jer su sačuvane u običnim tabelama baze podataka.
Prvo, pogledajmo šemu tabele unosom sledeće komande u psql prompt:
\d spatial_ref_sys
Rezultat treba da bude ovo:
Table "public.spatial_ref_sys"
Column | Type | Modifiers
-----------+-------------------------+-----------
srid | integer | not null
auth_name | character varying(256) |
auth_srid | integer |
srtext | character varying(2048) |
proj4text | character varying(2048) |
Indexes:
"spatial_ref_sys_pkey" PRIMARY KEY, btree (srid)
Možete koristiti standardne SQL upite (kao što smo naučili iz naših uvodnih odeljaka) za pregled i manipulaciju ovom tabelom - mada nije dobra ideja ažurirati ili brisati bilo koje zapise osim ako ne znate šta radite.
Jedan SRID koji vas može zanimati je EPSG:4326 - geografski / lat lon referentni sistem koji koristi WGS 84 elipsoid. Pogledajmo ga:
select * from spatial_ref_sys where srid=4326;
Rezultat:
srid | 4326
auth_name | EPSG
auth_srid | 4326
srtext | GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS
84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,
0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]
proj4text | +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
srtext je definicija projekcije u dobro poznatom tekstu (možda ćete ga prepoznati iz .prj datoteka u svojoj zbirci shapefile-ova).
16.1.7. Zaključak
Sada imate PostGIS funkcije instalirane u svojoj kopiji PostgreSQL-a. Sa ovim ćete moći da koristite obimne prostorne funkcije PostGIS-a.
16.1.8. Šta je sledeće?
Zatim ćete naučiti kako se prostorni objekti predstavljaju u bazi podataka.