Viktigt

Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.

16.1. Lektion: Installation av PostGIS

Om du ställer in PostGIS-funktioner kan du komma åt spatiala funktioner inom PostgreSQL.

Målet för den här lektionen: Att installera spatiala funktioner och kort demonstrera deras effekter.

Observera

Vi förutsätter att du använder PostGIS version 2.1 eller senare i den här övningen. Installationen och databaskonfigurationen är annorlunda för äldre versioner, men resten av materialet i denna modul kommer fortfarande att fungera. Konsultera dokumentationen för din plattform för hjälp med installation och databaskonfiguration.

16.1.1. Installera under Ubuntu

Postgis installeras enkelt från apt.

$ sudo apt install postgresql
$ sudo apt install postgis

Verkligen, det är så enkelt…

Observera

De exakta versionerna som installeras beror på vilken version av Ubuntu du använder och vilka arkiv du har konfigurerat. Efter installationen kan du kontrollera versionen genom att ställa en select PostGIS_full_version();-fråga med psql eller ett annat verktyg.

För att installera en specifik version (t.ex. PostgreSQL version 13 och PostGIS 3) kan du använda följande kommandon.

$ 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. Installera under Windows

Installation på Windows kan göras från binära paket med hjälp av en vanlig Windows-installationsdialog.

Besök först nedladdningssidan <https://www.postgresql.org/download/>`_. Följ sedan den här guiden.

Mer information om installation i Windows finns på PostGIS webbplats.

16.1.3. Installera på andra plattformar

PostGIS webbplats nedladdning har information om installation på andra plattformar, inklusive macOS och andra Linux-distributioner

16.1.4. Konfigurera databaser för att använda PostGIS

När PostGIS har installerats måste du konfigurera din databas så att den kan använda tilläggen. Om du har installerat PostGIS version > 2.0 är det så enkelt som att ge följande kommando med psql och använda adressdatabasen från vår tidigare övning.

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

Observera

Beroende på vilken version du har kan du hitta fler instruktioner om hur du aktiverar en databas spatialt på https://postgis.net/docs/postgis_administration.html#create_spatial_db.

16.1.5. Titta på de installerade PostGIS-funktionerna

PostGIS kan betraktas som en samling funktioner i databasen som utökar kärnfunktionerna i PostgreSQL så att den kan hantera spatiala data. Med ”hantera” menar vi lagra, hämta, fråga och manipulera. För att göra detta installeras ett antal funktioner i databasen.

Vår PostgreSQL adress databas är nu geospatialt aktiverad tack vare PostGIS. Vi kommer att fördjupa oss mycket djupare i detta i de kommande avsnitten, men låt oss ge dig en snabb liten smakprov. Låt oss säga att vi vill skapa en punkt från text. Först använder vi kommandot psql för att hitta funktioner som relaterar till punkt. Om du inte redan är ansluten till databasen address, gör det nu. Kör sedan:

\df *point*

Det här är kommandot vi letar efter: st_pointfromtext. För att bläddra igenom listan använder du nedåtpilen och trycker sedan på Q för att avsluta tillbaka till psql-skalet.

Försök att köra det här kommandot:

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

Resultat:

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

Tre saker att notera:

  • Vi definierade en punkt på position 1,1 (EPSG:4326 antas) med POINT(1 1),

  • Vi körde en SQL-sats, men inte på någon tabell, bara på data som matats in från SQL-prompten,

  • Den resulterande raden är inte särskilt meningsfull.

Den resulterande raden är i OGC-format som kallas ”Well Known Binary” (WKB). Vi kommer att titta närmare på detta format i nästa avsnitt.

För att få tillbaka resultaten som text kan vi göra en snabb sökning i funktionslistan efter något som returnerar text:

\df *text

Den fråga vi letar efter nu är st_astext. Låt oss kombinera den med den tidigare frågan:

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

Resultat:

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

Här skrev vi in strängen POINT(1,1), förvandlade den till en punkt med st_pointfromtext(), och förvandlade den tillbaka till en mänskligt läsbar form med st_astext(), vilket gav oss tillbaka vår ursprungliga sträng.

Ett sista exempel innan vi går in på detaljerna i hur PostGIS används:

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

Vad gjorde den? Den skapade en buffert på 1 grad runt vår punkt och returnerade resultatet som text.

16.1.6. Spatiala referenssystem

Förutom PostGIS-funktionerna innehåller tillägget en samling definitioner av spatiala referenssystem (SRS) som definieras av European Petroleum Survey Group (EPSG). Dessa används under operationer som konvertering av koordinatreferenssystem (CRS).

Vi kan inspektera dessa SRS-definitioner i vår databas eftersom de lagras i vanliga databastabeller.

Låt oss först titta på schemat för tabellen genom att ange följande kommando i psql-prompten:

\d spatial_ref_sys

Resultatet bör bli detta:

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)

Du kan använda vanliga SQL-frågor (som vi har lärt oss i våra inledande avsnitt) för att visa och manipulera den här tabellen - men det är ingen bra idé att uppdatera eller ta bort poster om du inte vet vad du gör.

En SRID som du kanske är intresserad av är EPSG:4326 - det geografiska / lat lon-referenssystemet som använder WGS 84-ellipsoiden. Låt oss ta en titt på det:

select * from spatial_ref_sys where srid=4326;

Resultat:

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 är projektionsdefinitionen i en välkänd text (du kanske känner igen den från .prj-filer i din shapefilsamling).

16.1.7. Sammanfattningsvis

Du har nu PostGIS-funktioner installerade i din kopia av PostgreSQL. Med detta kommer du att kunna använda PostGIS omfattande spatiala funktioner.

16.1.8. Vad händer härnäst?

Därefter får du lära dig hur spatiala funktioner representeras i en databas.