Na splošno velja varnostno pravilo da ni primerno opravljati vnos GIS podatkov v podatkovno bazo PostGIS database kot uporabnik (in z vlogo) postgres, ki bi morala biti uporabljen samo za administrativno delo.
Zato bomo ustvarili novo vlogo in uporabnika GIS za upravljanje s podatki v bazi podatkov PostGIS. Lahko celo ustvarite več uporabnikov z različnimi dovoljenji (SELECT, INSERT, UPDATE, DELETE na različnih tabelah), tako da ustvarite bolj varno okolje, vse je odvisno od vaših potreb pri uporabi GIS-a.
Povežemo se na postgres (kot uporabnik postgres ): psql
in vnesemo v ukazno vrstico naslednji ukaz da ustvarimo vlogo skupine ki jo bomo imenovali gisgroup (lahko izberete manj dovoljenj če to rabite iz varnostnih razlogov):
CREATE ROLE gisgroup NOSUPERUSER NOINHERIT CREATEDB NOCREATEROLE;
natipkate še tole zato da ustvarite vlogo za login, imenovali jo bomo gis (lahko izberete katerokoli ime in geslo):
CREATE ROLE gis LOGIN PASSWORD 'mojegeslo' NOINHERIT;
vključimo sedaj uporabnika gis v skupino gisgroup :
GRANT gisgroup TO gis;
DODELJEVANJE DOVOLJENJ:
Dodeliti moramo dovoljenja za tabele našega postgistemplate (lastnik tabel geometry_columns in spatial_ref_sys bo postal uporabnik gis):
najprej se odklopimo iz prejšnje povezave (vtipkamo \q), in se povežemo na bazo podatkov postgistemplate kot uporabnik postgres:
psql -d postgistemplate
dodelimo dovoljenja:
ALTER TABLE geometry_columns OWNER TO gis;
ALTER TABLE spatial_ref_sys OWNER TO gis;
Ustvarimo nov schema za naše podatke GIS (bi ne smeli ustvariti podatkov GIS v public schema):
CREATE SCHEMA gis_schema AUTHORIZATION gis;
odklopimo se od povezave (\q)
Sedaj lahko ustvarimo bazo podatkov kamor bomo naložili podatke (imenovali jo bomo gisdb), z uporabo ukaza createdb, iz modela postgistemplate ki smo ga pravkar ustvarili:
kot uporabnik postgres vnesemo ukaz
$ createdb -T postgistemplate -O gis gisdb
nedelja, september 26, 2010
Priprava modela za Postgis
Za prvo ureditev Postgisa po nastvitvi, mi je veliko pomagal dober članek, ki ga je napisal in objavil na spletu Paolo Corti:
http://www.paolocorti.net/2008/01/30/installing-postgis-on-ubuntu/
v katerem med drugim opiše pripravo modela, ki ga lahko potem uporabljamo za pripravo baz podatkov in si s tem prihranimo precej dela za nadaljne nastavitve novih baz podatkov,
Nastavitev poteka kar preko ukazne vrstice.
Za pripravo modela se povežemo kot uporabnik postgres:
sudo su postgres
Pripravimo bazo podatkov, ki bo služila kot model, imenujemo jo npr. postgistemplate:
createdb postgistemplate
Ji dodamo možnost za upravljanje preko proceduralnega jezika PL/pgSQL za rdbms PostgreSQL, ki ga potrebuje PostGIS, v ukazno vrstico vnesemo:
createlang plpgsql postgistemplate
preko odjemalca psql izvršimo naslednja dva ukaza:
psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql
psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql
Naš template je pripravljen, dodano je bilo veliko funkcij in sta bili ustvarjeni dve tabeli - geometry_columns and spatial_ref_sys.
Lahko sedaj poskusimo model postgistemplate, ki smo ga pravkar ustvarili:
psql -d postgistemplate -c "SELECT postgis_full_version();"
postgis_full_version
-------------------------------------------------------------------------------------------------------
POSTGIS="1.5.1" GEOS="3.2.2-CAPI-1.6.2" PROJ="Rel. 4.7.1, 23 September 2009" LIBXML="2.7.6" USE_STATS
Tabela spatial_ref_sys vsebuje podatke o projekcijah, ki jih lahko uporabljamo v bazi podatkov za vnos geografskih objektov.
Spatial_ref_sys je bila ustvarjena s sledečim ukazom sql (ko je bila ustvarjena baza podatkov z ukazom createdb postgistemplate):
CREATE TABLE spatial_ref_sys
(
srid integer NOT NULL,
auth_name character varying(256),
auth_srid integer,
srtext character varying(2048),
proj4text character varying(2048),
CONSTRAINT spatial_ref_sys_pkey PRIMARY KEY (srid)
)
WITH (
OIDS=FALSE
);
V stolpcu srid so identifikacijske številke projekcij (EPSG), medtem ko je v stolpcu proj4text definicija projekcije kot jo uporabljamo v knjižnici proj4.
Leta 2008 je Geodetska uprava registrala pri skrbniku zbirke EPSG parametra koordinatnih sistemov SI-D48 (pod številko CODE 3787) in SI-D96 (pod številko CODE 3794) tako da jih sedaj dobimo tudi v tej tabeli.
Če pa bi v tej tabeli ne dobili parametrov koordinatnega sistema ki ga rabimo, jih lahko vnesemo z ukazom sql s programom psql vedno kot uporabnik postgres. Naprimer če bi hoteli ročno vnesti parametre D48 z 7 parametri za Primorsko in Notranjsko (operacija seveda ni potrebna ker sedaj imamo parametre za EPSG:3787), se najprej povežemo na bazo podatkov:
postgres@veciaruga:/home/dean$ psql -d postgistemplate
psql (8.4.4)
in potem vnesemo projekcijo D48 s 7 parametri za proj4, ji damo npr. identifikacijsko številko 111111 ker je še neobstoječa in si jo tako z lahkoto zapomnimo:
postgistemplate=# INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) VALUES (111111, 'DEAN', 111111, '', '+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +units=m +towgs84=355.803451,274.321338,462.96856,9.087389,6.490416,-14.502467,20.888271 +no_defs -f %.3f');
odgovor ki potrjuje da je operacija izvršena:
INSERT 0 1
če se želite prepričati, da je v tabeli spatial_ref_sys res prisotna nova projekcija, kar izvedete v programu psql ukaz sql:
postgistemplate=# select * from spatial_ref_sys where srid=111111; in dobite tole:
srid | auth_name | auth_srid | srtext | proj4text
--------+-----------+-----------+--------+-------------------------------------------------------------------------------------------------------
111111 | DEAN | 111111 | | +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +units=m
+towgs84=355.803451,274.321338,462.96856,9.087389,6.490416,-14.502467,20.888271 +no_defs -f %.3f
za izhod iz programa psql vpišemo ukaz:
postgistemplate-# \q
postgres@veciaruga:/home/dean$
Sedaj ko je model postgistemplate pripravljen ga lahko uporabimo za pripravo naših baz podatkov, tako da bodo vsakič vsebovale vse tabele in projekcije in ne bo treba vsakič ponavljati vseh prejšnjih ukazov ko bomo želeli ustvariti novo bazo podatkov.
http://www.paolocorti.net/2008/01/30/installing-postgis-on-ubuntu/
v katerem med drugim opiše pripravo modela, ki ga lahko potem uporabljamo za pripravo baz podatkov in si s tem prihranimo precej dela za nadaljne nastavitve novih baz podatkov,
Nastavitev poteka kar preko ukazne vrstice.
Za pripravo modela se povežemo kot uporabnik postgres:
sudo su postgres
Pripravimo bazo podatkov, ki bo služila kot model, imenujemo jo npr. postgistemplate:
createdb postgistemplate
Ji dodamo možnost za upravljanje preko proceduralnega jezika PL/pgSQL za rdbms PostgreSQL, ki ga potrebuje PostGIS, v ukazno vrstico vnesemo:
createlang plpgsql postgistemplate
preko odjemalca psql izvršimo naslednja dva ukaza:
psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql
psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql
Naš template je pripravljen, dodano je bilo veliko funkcij in sta bili ustvarjeni dve tabeli - geometry_columns and spatial_ref_sys.
Lahko sedaj poskusimo model postgistemplate, ki smo ga pravkar ustvarili:
psql -d postgistemplate -c "SELECT postgis_full_version();"
postgis_full_version
-------------------------------------------------------------------------------------------------------
POSTGIS="1.5.1" GEOS="3.2.2-CAPI-1.6.2" PROJ="Rel. 4.7.1, 23 September 2009" LIBXML="2.7.6" USE_STATS
Tabela spatial_ref_sys vsebuje podatke o projekcijah, ki jih lahko uporabljamo v bazi podatkov za vnos geografskih objektov.
Spatial_ref_sys je bila ustvarjena s sledečim ukazom sql (ko je bila ustvarjena baza podatkov z ukazom createdb postgistemplate):
CREATE TABLE spatial_ref_sys
(
srid integer NOT NULL,
auth_name character varying(256),
auth_srid integer,
srtext character varying(2048),
proj4text character varying(2048),
CONSTRAINT spatial_ref_sys_pkey PRIMARY KEY (srid)
)
WITH (
OIDS=FALSE
);
V stolpcu srid so identifikacijske številke projekcij (EPSG), medtem ko je v stolpcu proj4text definicija projekcije kot jo uporabljamo v knjižnici proj4.
Leta 2008 je Geodetska uprava registrala pri skrbniku zbirke EPSG parametra koordinatnih sistemov SI-D48 (pod številko CODE 3787) in SI-D96 (pod številko CODE 3794) tako da jih sedaj dobimo tudi v tej tabeli.
Če pa bi v tej tabeli ne dobili parametrov koordinatnega sistema ki ga rabimo, jih lahko vnesemo z ukazom sql s programom psql vedno kot uporabnik postgres. Naprimer če bi hoteli ročno vnesti parametre D48 z 7 parametri za Primorsko in Notranjsko (operacija seveda ni potrebna ker sedaj imamo parametre za EPSG:3787), se najprej povežemo na bazo podatkov:
postgres@veciaruga:/home/dean$ psql -d postgistemplate
psql (8.4.4)
in potem vnesemo projekcijo D48 s 7 parametri za proj4, ji damo npr. identifikacijsko številko 111111 ker je še neobstoječa in si jo tako z lahkoto zapomnimo:
postgistemplate=# INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) VALUES (111111, 'DEAN', 111111, '', '+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +units=m +towgs84=355.803451,274.321338,462.96856,9.087389,6.490416,-14.502467,20.888271 +no_defs -f %.3f');
odgovor ki potrjuje da je operacija izvršena:
INSERT 0 1
če se želite prepričati, da je v tabeli spatial_ref_sys res prisotna nova projekcija, kar izvedete v programu psql ukaz sql:
postgistemplate=# select * from spatial_ref_sys where srid=111111; in dobite tole:
srid | auth_name | auth_srid | srtext | proj4text
--------+-----------+-----------+--------+-------------------------------------------------------------------------------------------------------
111111 | DEAN | 111111 | | +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +units=m
+towgs84=355.803451,274.321338,462.96856,9.087389,6.490416,-14.502467,20.888271 +no_defs -f %.3f
za izhod iz programa psql vpišemo ukaz:
postgistemplate-# \q
postgres@veciaruga:/home/dean$
Sedaj ko je model postgistemplate pripravljen ga lahko uporabimo za pripravo naših baz podatkov, tako da bodo vsakič vsebovale vse tabele in projekcije in ne bo treba vsakič ponavljati vseh prejšnjih ukazov ko bomo želeli ustvariti novo bazo podatkov.
Naročite se na:
Objave (Atom)