PostGIS

**PostGIS** on avatud lähtekoodiga tarkvara, mis järgib ISO ja OGC standardit Simple Features. PostGIS lisab geograafiliste objektide haldamise vabavaralisele PostgreSQL andmebaasihaldurile. PostGIS on saadaval erinevatele platvormidele.

## Ajalugu

### Enne PostGISi – 2000
PostgresSQL sisaldab geomeetrilisi andmetüüpe, mis on limiteeritud võimalustega geoinfosüsteemide andmetele ja nende analüüsimiseks. Geomeetria andmetüüp on loodud akadeemilisteks uuringuteks ja sobib paremini arvutigraafika kui GISi jaoks.
Refractions osutas aastatel 2000 ja 2001 andmehaldusteenust Briti Columbia omavalitsusele. Enamus tööst tehti andmete salvestamise abil failidesse, aga ruumilise analüüsi jaoks oli selline meetod keeruline. Kohandatud andmebaasiga on palju lihtsam hallata ruumilisi andmeid. 
OpenGIS dokument annab ruumiandmete sisestamiseks andmebaasi kaks võimalust: kohandada geomeetria relatsioonilisse mudelisse või luua andmetüüp "geomeetria". Valiti lihtsam moodus – geomeetriliste andmete tükeldamine ja kohandamine olemasolevatesse andmetüüpidesse. Selline meetod muutis süsteemi väga aeglaseks. 2001. aastal otsustati koostada andmetüüp "geomeetria".

### Varajane PostGIS
Andmebaasihaldurina kasutati Postgresi, mis lubab lisada uusi andmetüüpe. Uue andmetüübi lisamisega oli andmetele ligipääs 100 korda kiirem kui relatsioonilises mudelis ja 10 korda kiirem kui BLOBis ehk suur kahendobjekti süsteemis. Lisaks loodi ruumiindeks, mis võimaldaks kiireid päringuid ja alamhulgana suuri tabeleid. Selleks kasutati Postgresis olemasolevat indeksserimismeetodit R-puu abil. Pärast indeksi valmimist oli võimalk millisekundite jooksul ligi pääseda andmetele, mis olid mitme miljonilises ruumikirjetega tabelis. Esimene versioon PostGIS 0.1 tehti avalikuks 31. mail 2001. 
## Versioonid
***0.1** – 31. mai 2001. Esimene väljalase sisaldas põhilisi funktsioone, ruumilisi objekte, OpenGIS "well-known text" standardil põhinevat teksti üles- ja allalaadimist. Lisaks ruumiindeksit kiiremaks ligipääsemisemiseks andmetele.
***0.2** – 20. juuni 2001. Lisati mõned funktsioonid "well-known binary" vormingute loomiseks PostGISi väljundina.
***0.5** – 21. juuli 2001. Lisati kaardiserveri tugi Minnesota Mapserver, mille abil sai geomeetrilisi kujundeid visualiseerida. Lisati suur hulk funktsioone, mis olid nõutud OpenGIS spetsifikatsioonidest. Versioonid 0.3 ja 0.4 jäeti vahele, sest uusi funktsioone oli väga palju. Selles versioonis ühita funktsioonide nimed OpenGISiga.
***0.6** – 19. september 2001. Uus versioon tuli välja peamiselt selleks, et lisada uusi funktsioone, mis olid ühildatud OpenGIS kirjetega.
***0.7** – 5. mai 2002. Sellest versioonist alates olid võimalikud koordinaatide teisendused teistesse koordinaatsüsteemidesse. Parandati ruumiindeksi valimismeetodit.
***0.8** – 6. november 2003. Parandati kiirust, vähendades mittevajalikke andmeid läbitöötlemisel. Algselt ei pööratud tähelepanu kui palju mälu kasutatakse. Kõige aeglasem osa tänapäeva arvutis on andmete kirjutamine ja lugemine kettalt. Andmevood peavad olema võimalikud väiksed. Selleks, et kiirendada PostGISi, lisati 0.8 versiooni eksperimentaalne "kergekaaluline geomeetria", kus tehti andmestruktuurid väiksemaks. See oli lisavõimalus, mida ei kasutatud vaikimisi geomeetria asemel enne 1.0 versiooni.
***0.9** – 14. september 2004. Oli parandatud 0.8 vigasid ja kohandatud uuele Postgre SQL 8.0. Hinnangud ühildati Postgres SQL hinnangute ja planeerimissüsteemidega. Selline lahendus suurendas märgatavalt suurte andmebaaside jõudlust.
***1.0** – 19. aprill 2005. Pärast kaheaastast eksperimentaalset "kergekaalulist geomeetriat" muutus see vaikimisi PostGISi geomeetria salvestemise süsteemiks. Poole aasta jooksul lisandus 6 vigade parandust.
***1.1** – 12. detsember 2005. Antud versiooniga tehti suur edasiminek süsteemi ehitamises. Lisati GISi põhifunktsioonid, näiteks hulknurga ja joone koostamine ja jõudluse edasiarendamine oli ikka peamiseks eesmärgiks.
***1.2** – 8. detsember 2006. Viimastel aastatel ei olnud PostGIS suuri muutusi läbinud. Järgnevad versioonid tõid kaasa suuremaid muudatusi. Hetkel kasutuses olnud OpenGIS dokumentatsioon vahetati välja ISO SQL/MM spetsifikatsiooniga. See sisaldas palju suuremal hulgal ruumiobjekte ja lisas erinevaid joonekõveraid juba olemasolevatele standardtüüpidele. 1.2 oli esimene versioon, mis toetas kurve.
***1.3** – 9. august 2007. Jätkati SQL/MM järgimist aina täpsemalt. Kõik funktsioonid ühildati SQL/MM standardiga lisades funktsiooni eesliiteks "ST_" ja lisati uued funktsioonid, mis olid defineeritud SQL/MM dokumentatsioonis. Et lihtsustada PostGISi kasutamist uutele kasutajatele, kasutati ruumiindeksit ära kõige enam kasutatavates funktsioonides.
***1.4** – 24. juuli 2009. Lisati palju jõudluse parandusi, veaparandusi. Paranes sisemine testimissüsteem, ja täpsustati dokumentatsiooni. Olulised jõudluse parandused tulid ruumilistes operatsioonides. Lisati uusi meetodeid.
***1.5** – 4. veebruar 2010. Lisati suurel hulgal uusi omadusi. Lisati uus "geograafia" andmetüüp, mis haldaks geodeetilisi laius- ja pikkuskraadide andmeid. Jõudlus paranes kauguse arvutamisel. GML- ja KML-vormingu lugemine. Parandatud graafiline kasutajaliides kuju laadimisel.
***2.0** – 27. juuni 2011. Uue põhiversiooni väljatoomiseks kulus 26 kuud. Uus ümmargune number tähendab, et see pole tagasiulatuv, sellega ei saa vanemate versioonide poolt salvestatud andmeid töödelda. Põhiliseks uuenduseks on jadastamise (ingl k serialization) ehk andmevoogude struktuuri muutmine korrastatumaks, et seda saaks arvutiga kiiremini töödelda. Sellega kasvab jõudlus ja päringute kiirus. Lisati 3D- ja 4D-indekseerimine, rastri tüübid ja sellega seotud funktsioonid. Ühitati ISO WKT ja WKBga. Lisati kolmemõõtmelised tüübid, näiteks pind.
***2.1** – 17. august 2013. Anti välja seni uusim PostGIS-i versioon. Parandatud on kiirust ja lisatud uusi funktsioone ja täiendatud olemasolevaid. 
***2.2** – arendamisjärgus. Lisanduvad kõik uued funktsioonid.

## Funktsioonid

PostGIS kasutab kõige väiksemat geomeetria ja indeksite esituse struktuuri, et maksimeerida jõudlust. Väiksemad andmepaketid kiirendavad andmeedastust ja võimaldavad hoida rohkem infot vahemälus, kus see on lähemale protsessorile, et parandada kiirust. Ruumiliste andmete salvestamine andmebaasi lubab lihtsat ligipääsu andmetele kõikides programmides, mis oskavad suhelda SQLis. PostGIS realukustus võimaldab mitmel protsessil kirjutada ruumiandmete tabelisse ilma tervikut teadmata ja garanteerides andmete terviklikkuse. PostGIS sisaldab täiskomplekti geomeetriliste päringute operatsioone. Lisaks on päringud kiirendatud R-puu indeksi abil, mis on täielikult PostgreSQLi päringute planeerimisse sisse ehitatud. GISi analüüsi saab läbi viia kasutades ruumilisi ühendusi, puhvrit, ristumisi, hulknurkade ja joonte koostamist ning veel teisi funktsioone. PostGIS toetab andmete importi OGC vahenditega MapInfo tab, dgn, dxf, GML ja teistest failivormingutest ning samuti saab eksportida andmeid paljudesse vormingutesse. PostGIS sisaldab selliseid geomeetria tüüpe nagu punkt, joon, hulknurgad, punktid, jooned, hulknurgad ja geomeetriliste objektide kogumit. Samuti sisaldab PostGis ruumiliste andmete tehteid mõõtmete jaoks nagu pindala, vahemaa, pikkus ja perimeeter. Lisaks veel georuumilised tehted nagu ühend, vahe, sümmeetriline vahe, puhver.

## Kasutajad
PostGISi andmebaasi kasutada oskavat tarkvara on rohkesti, nende seas:
* ArcGIS 
* Cadcorp
* CitySurf Globe
* ERDAS APOLLO
* Everest GIS
* Feature Manipulation Engine
* GeoMedia
* GeoServer
* GRASS GIS GPL
* gvSIG GPL
* Interoperability Extension Esrilt
* Ionic Red Spider
* Kosmo GPL
* Manifold System
* MapInfo Professional
* Mapnik LGPL
* MapDotNet Server
* MapServer (BSD)
* MapGuide LGPL
* MezoGIS
* OpenJUMP GPL
* Quantum GIS GPL
* TerraLib LGPL
* TerraView GPL
* uDig LGPL

## Viited

## Lisamaterjal
* PostGIS
* PostgreSQL
* pgRouting

### Õpimaterjalid
* Sissejuhatus PostGISi
* PostGIS õppematerjal
* Alustamine PostGISiga
* Lühike tutvustus PostGISist

### Dokumentatsioon
* PostGIS HTML dokumentatsioon
* PostGIS 2.0 PDF käsiraamat
* PostGIS in Action, 1. väljaanne aprill 2011, 2. väljaanne