Instalând funcțiile PostGIS vom putea accesa funcțiile spațiale din interiorul PostgreSQL.
Scopul acestei lecții: De a instala funcțiile spațiale, și pentru scurte demonstrații a aplicării lor.
Note
Vom utiliza PostGIS versiunea 2.1 în acest exercițiu. Instalarea și configurarea bazei de date sunt diferite pentru versiuni mai vechi, dar restul acestui material din acest modul va fi, în continuare, funcțional. Consultați documentația pentru platforma dvs, pentru asistență referitoare la instalarea și configurarea bazei de date.
PostGIS este ușor de instalat din apt.
$ sudo apt-get install postgis
$ sudo apt-get install postgresql-9.1-postgis
Într-adevăr, este atât de ușor ...
Note
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.
Pentru a instala cea mai recentă versiune a PostGIS, puteți folosi următoarele comenzi.
$ 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
Instalarea pe Windows este un pic mai complicată, dar nu este chiar dificilă. Rețineți că trebuie să fiți online pentru a instala pachetul PostGIS.
First Visit the download page.
Then follow this guide.
More information about installing on Windows can be found on the PostGIS website.
The PostGIS website download has information about installing on other platforms including macOS and on other linux distributions
După ce PostGIS este instalat, va trebui să configurați baza de date pentru a utiliza extensiile. Dacă ați instalat versiunea PostGIS > 2.0, aceasta este la fel de simplu ca și execuția următoarei comenzi în psql, folosind baza de date de adrese din exercițiul nostru anterior.
$ psql -d address -c "CREATE EXTENSION postgis;"
Note
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.
PostGIS poate fi considerat ca o colecție de funcții din baza de date, care extind capabilitățile de bază ale PostgreSQL, astfel încât să poatădatelor spațiale. Prin ‘a face față’, înțelegem stocarea, preluarea, interogarea și manipularea. Pentru a face acest lucru, sunt instalate o serie de funcții în baza de date.
Our PostgreSQL address database is now geospatially enabled, thanks to PostGIS. We are going to delve a lot deeper into this in the coming sections, but let’s give you a quick little taster. Let’s say we want to create a point from text. First we use the psql command to find functions relating to point. If you are not already connected to the address database, do so now. Then run:
\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.
Try running this command:
select st_pointfromtext('POINT(1 1)');
Result:
st_pointfromtext
--------------------------------------------
0101000000000000000000F03F000000000000F03F
(1 row)
Trei lucruri de reținut:
Am definit un punct la poziția 1,1 (EPSG:4326 se presupune), folosind POINT(1 1),
Am rulat o instrucțiune SQL, dar nu pe orice tabelă, doar pe datele introduse din promptul SQL,
Rândul rezultat nu prea are sens.
Rândul rezultat se află în formatul OGC denumit ‘Well Known Binary’ (WKB). Vom analiza în detaliu acest format în secțiunea următoare.
To get the results back as text, we can do a quick scan through the function list for something that returns text:
\df *text
The query we’re looking for now is st_astext. Let’s combine it with the previous query:
select st_astext(st_pointfromtext('POINT(1 1)'));
Result:
st_astext
------------
POINT(1 1)
(1 row)
Aici, am intrat în șirul POINT(1,1), transformându-l într-un punct folosind st_pointfromtext(), și aducându-l înapoi într-o formă ușor de înțeles de către utilizator cu st_astext(), care returează șirul de caractere inițial.
One last example before we really get into the detail of using PostGIS:
select st_astext(st_buffer(st_pointfromtext('POINT(1 1)'),1.0));
Care este rezultatul acestuia? S-a creat un tampon de 1 grad în jurul punctului nostru, și s-a returnat un rezultat sub formă de text.
În plus față de funcțiile PostGIS, extensia conține o colecție cu definiții ale sistemelor de referință spațială (SRS), așa cum au fost stabilite de către European Petroleum Survey Group (EPSG). Acestea sunt utilizate pentru operațiuni de conversie a sistemelor de coordonate de referință (CRS).
Putem inspecta aceste definiții SRS din baza noastră de date, pe măsură ce acestea sunt stocate în tabelele normale ale bazei de date.
First, let’s look at the schema of the table by entering the following command in the psql prompt:
\d spatial_ref_sys
The result should be this:
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)
Puteți utiliza interogări SQL standard (așa cum am învățat din secțiunile introductive), pentru a vizualiza și manipula acest tabel - totuși, actualizarea sau ștergerea înregistrărilor nu reprezintă o idee bună dacă nu știți ce faceți.
One SRID you may be interested in is EPSG:4326 - the geographic / lat lon reference system using the WGS 84 ellipsoid. Let’s take a look at it:
select * from spatial_ref_sys where srid=4326;
Result:
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 reprezintă definiția proiecției în well known text (puteți recunoaște acest lucru din fișierele .prj din colecția dvs. de fișiere shape).
Acum aveți funcțiile PostGIS instalate în copia dvs. de PostgreSQL. Astfel, veți putea să faceți uz de funcțiile spațiale extinse ale PostGIS.
Mai departe, veți învăța cum se reprezintă entitățile spațiale într-o bază de date.