Outdated version of the documentation. Find the latest one here.

17.1. Lesson: Instellen van PostGIS

Instellen van functies voor PostGIS zal u in staat stellen toegang te verkrijgen tot ruimtelijke functies binnen PostgreSQL.

Het doel voor deze les: Ruimtelijke functies installeren en in het kort hun effecten demonstreren.

Notitie

We gaan er van uit dat we voor deze oefening PostGIS versie 2.1 gebruiken. De installatie en configuratie van de database zijn anders voor oudere versies, maar de rest van dit materiaal in deze module zal nog steeds werken. Consulteer de documentatie voor uw platform voor hulp bij de installatie en de configuratie van de database.

17.1.1. Installeren onder Ubuntu

Postgis wordt eenvoudig geïnstalleerd vanuit apt.

$ sudo apt-get install postgis
$ sudo apt-get install postgresql-9.1-postgis

Echt, zo eenvoudig is dat...

Notitie

Depending on which version of Ubuntu you are using, and which repositories you have configured, these commands will install PostGIS 1.5, or 2.x. You can find the version installed by issuing a select PostGIS_full_version(); query with psql or another tool.

U kunt de volgende opdrachten gebruiken om de absoluut laatste versie van PostGIS te installeren.

$ sudo apt-add-repository ppa:sharpie/for-science
$ sudo apt-add-repository ppa:sharpie/postgis-nightly
$ sudo apt-get update
$ sudo apt-get install postgresql-9.1-postgis-nightly

17.1.2. Installeren onder Windows

Installeren op Windows is iets meer gecompliceerd, maar nog steeds niet moeilijk. Onthoud dat u online moet zijn om de opgeslagen Postgis te installeren.

First Visit the download page.

Then follow this guide.

More information about installing on Windows can be found on the PostGIS website.

17.1.3. Installeren op andere platformen

The PostGIS website download has information about installing on other platforms including macOS and on other linux distributions

17.1.4. Databases configureren om PostGIS te gebruiken

Als PostGIS eenmaal is geïnstalleerd, zult u uw database moeten configureren om de extensies te gebruiken. Als u PostGIS versie > 2.0 heeft geïnstalleerd, is dit zo simpel als de volgende opdracht met psql uit te voeren met behulp van de adresdatabase uit onze vorige oefening.

$ psql -d address -c "CREATE EXTENSION postgis;"

Notitie

If you are using PostGIS 1.5 and a version of PostgreSQL lower than 9.1, you will need to follow a different set of steps in order to install the postgis extensions for your database. Please consult the PostGIS Documentation for instructions on how to do this. There are also some instructions in the previous version of this manual.

17.1.5. Kijken naar de geïnstalleerde functies van PostGIS

Aan PostGIS kan worden gedacht als aan een collectie van functies binnen de database die de bronmogelijkheden van PostgreSQL uitbreiden zodat het ruimtelijke gegevens kan afhandelen. Met ‘afhandelen’ bedoelen we opslaan, ophalen, bevragen en bewerken. Een aantal functies worden in de database geïnstalleerd om dit te kunnen doen.

Onze PostgreSQL database address is nu geo-ruimtelijk ingeschakeld, dankzij PostGIS. We gaan hier in de komende gedeelten een stuk dieper op in, maar laten we u een klein voorproefje geven. Laten we zeggen dat we een punt uit tekst willen maken. Eerst gebruiken we de opdracht voor psql om functies te zoeken in relatie tot punten. Als u nog niet verbonden bent met de database address, doe dat dan nu. Voer dan uit:

\df *point*

This is the command we’re looking for: st_pointfromtext. To page through the list, use the down arrow, then press q to quit back to the psql shell.

Probeer deze opdracht uit te voeren:

select st_pointfromtext('POINT(1 1)');

Resultaat:

st_pointfromtext
--------------------------------------------
0101000000000000000000F03F000000000000F03F
(1 row)

Drie dingen om te onthouden:

  • We definieerden een punt op de positie 1,1 (we gaan uit van EPSG:4326) met behulp van POINT(1 1),

  • We voerden een argument van sql uit, maar niet op een tabel, alleen maar op gegevens ingevoerd vanuit de SQL-prompt,

  • De resulterende rij heeft weinig betekenis.

De resulterende rij is in de indeling OGC, genaamd ‘Well Known Binary’ (WKB). We zullen in het volgende gedeelte in detail naar deze indeling kijken.

We kunnen een snelle scan doen door de functielijst naar iets dat tekst teruggeeft om de resultaten als tekst terug te krijgen:

\df *text

De query waar we nu naar zoeken is st_astext. Laten we die combineren met de vorige query:

select st_astext(st_pointfromtext('POINT(1 1)'));

Resultaat:

 st_astext
------------
  POINT(1 1)
  (1 row)

Hier voerden we de tekenreeks POINT(1,1) in, maakten daar een punt van met behulp van st_pointfromtext(), en maakten er weer een door mensen te lezen vorm van met st_astext(), wat ons onze originele tekenreeks teruggaf.

Een laatste voorbeeld voor we echt naar de details gaan van het gebruiken van PostGIS:

select st_astext(st_buffer(st_pointfromtext('POINT(1 1)'),1.0));

Wat deed dat? Het maakte een buffer van 1 graad rondom ons punt, en gaf het resultaat als tekst terug.

17.1.6. Ruimtelijke referentiesystemen

In aanvulling op de functies van PostGIS, bevat de extensie een verzameling definities voor ruimtelijke referentiesystemen (SRS) zoals gedefinieerd door de European Petroleum Survey Group (EPSG). Deze worden gebruikt tijdens bewerkingen zoals conversies van coördinaten referentiesystemen (CRS).

We kunnen deze definities voor SRS inspecteren in onze database omdat zij zijn opgeslagen in normale databasetabellen.

Laten we eerst eens kijken naar het schema van de tabel door de volgende opdracht in te voeren bij de psql prompt:

\d spatial_ref_sys

Het resultaat zou dit moeten zijn:

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)

U kunt standaard SQL-queries gebruiken (zoals we hebben geleerd uit onze gedeelten ter introductie), om deze tabel t ebekijken en te bewerken - hoewel het geen goed idee is om records te bewerken of te verwijderen, tenzij u weet waar u mee bezig bent.

Eén SRID waarin u misschien geïnteresseerd bent is EPSG:4326 - het geografische / lat lon referentiesysteem dat de ellipsoïde WGS 84 gebruikt. Laten we er eens naar kijken:

select * from spatial_ref_sys where srid=4326;

Resultaat:

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

De srtext is de definitie van de projectie in well known text (u zou dit kunnen herkennen van de bestanden .prj in uw verzameling shapefiles).

17.1.7. In Conclusion

U heeft nu functies van PostGIS geïnstalleerd in uw kopie van PostgreSQL. Hiermee bent u in staat gebruik te maken van de uitgebreide ruimtelijke functies van PostGIS.

17.1.8. What’s Next?

Vervolgens zult u leren hoe ruimtelijke objecten worden weergegeven in een database.