Diskuse:155UZPR / Semestrální projekt: Porovnání verzí
mBez shrnutí editace |
|||
(Není zobrazeno 41 mezilehlých verzí od stejného uživatele.) | |||
Řádek 1: | Řádek 1: | ||
== Přístup k databázi | == Přístup k databázi uzpr_projekty == | ||
* databáze: <tt>uzpr_projekty</tt> | |||
* host: <tt>geo102.fsv.cvut.cz</tt> | * host: <tt>geo102.fsv.cvut.cz</tt> | ||
* uživatelské jméno: <tt> | * uživatelské jméno: <tt>uzpr<rok>_<skupina></tt>, např. <tt>uzpr22_a</tt> | ||
Příklad pro skupinu A v roce | Příklad pro skupinu A v akademickém roce 2022/2023 | ||
psql | psql uzpr_projekty -U uzpr22_a -h geo102.fsv.cvut.cz -W | ||
{{fig|qgis-uzpd-connect|Přihlašovací dialog v programu QGIS|size=300}} | |||
<!-- | |||
[[Image:pgadmin3-uzpd.png|center|thumb|300px|Přihlašovací dialog pgadmin3 pro databázi pgis_uzpd]] | [[Image:pgadmin3-uzpd.png|center|thumb|300px|Přihlašovací dialog pgadmin3 pro databázi pgis_uzpd]] | ||
[[Image:pgadmin3-uzpd1.png|center|thumb|640px|Příklad dotazu v prostředí PgAdmin3]] | [[Image:pgadmin3-uzpd1.png|center|thumb|640px|Příklad dotazu v prostředí PgAdmin3]] | ||
--> | |||
== | === Změna hesla === | ||
<syntaxhighlight lang=sql> | |||
ALTER USER uzpr22_a WITH PASSWORD 'nove_heslo'; | |||
</syntaxhighlight> | |||
=== Nastavení práv === | |||
< | Příklad zpřístupnění tabulek ve schématu <tt>uzpr22_a</tt> uživateli <tt>uzpr22_b</tt> v režimu čtení: | ||
</ | |||
< | <syntaxhighlight lang=sql> | ||
GRANT USAGE ON SCHEMA uzpr22_a TO uzpr22_b; | |||
GRANT SELECT ON ALL TABLES IN SCHEMA uzpr22_a TO uzpr22_b; | |||
GRANT SELECT ON ALL SEQUENCES IN SCHEMA uzpr22_a TO uzpr22_b; | |||
</syntaxhighlight> | |||
</ | |||
== Vstupní data == | |||
<source lang=sql> | <source lang=sql> | ||
SELECT | SELECT * FROM geometry_columns; | ||
</source> | </source> | ||
Řádek 65: | Řádek 48: | ||
<pre> | <pre> | ||
-[ RECORD 1 ]+--------------------------------------- | -[ RECORD 1 ]+-------------------------------------------------------------------------------------------------------------------------- | ||
f_table_name | czech_line | f_table_name | czech_line | ||
auth_name | | auth_name | EPSG | ||
auth_srid | | auth_srid | 3857 | ||
proj4text | +proj=merc + | proj4text | +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs | ||
... | |||
</pre> | </pre> | ||
<source lang=sql> | <source lang=sql> | ||
SELECT g.f_table_name, s.auth_name, s.auth_srid, s.proj4text FROM geometry_columns AS g JOIN | SELECT g.f_table_name, s.auth_name, s.auth_srid, s.proj4text FROM geometry_columns AS g JOIN | ||
spatial_ref_sys AS s ON g.srid = s.srid AND g.f_table_schema = ' | spatial_ref_sys AS s ON g.srid = s.srid AND g.f_table_schema = 'ruian'; | ||
</source> | </source> | ||
<pre> | <pre> | ||
-[ RECORD 1 ]+------------------------------------- | -[ RECORD 1 ]+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
f_table_name | castiobci | |||
- | |||
f_table_name | | |||
auth_name | EPSG | auth_name | EPSG | ||
auth_srid | | auth_srid | 5514 | ||
proj4text | +proj=krovak + | proj4text | +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=570.8,85.7,462.8,4.998,1.587,5.261,3.56 +units=m +no_defs | ||
... | |||
</pre> | </pre> | ||
Při kombinaci dat ze schémat <tt>osm</tt> a <tt> | Při kombinaci dat ze schémat <tt>osm</tt> a <tt>ruian</tt> je nutné provést transformaci ([http://postgis.net/docs/manual-2.1/ST_Transform.html ST_Transform]) dat do společného souřadnicové systému. | ||
<source lang=sql> | <source lang=sql> | ||
SELECT count(*) from osm.czech_point AS kino JOIN | SELECT count(*) from osm.czech_point AS kino JOIN ruian.obce AS obce ON | ||
ST_Within(kino.geom, ST_Transform(obce.geom, | ST_Within(kino.geom, ST_Transform(obce.geom, 3857)) AND | ||
kino.amenity = 'cinema' AND obce.nazev = 'Praha'; | kino.amenity = 'cinema' AND obce.nazev = 'Praha'; | ||
</source> | </source> | ||
Řádek 142: | Řádek 81: | ||
<source lang=sql> | <source lang=sql> | ||
CREATE TABLE obce AS SELECT * FROM | CREATE TABLE obce AS SELECT * FROM ruian.obce; | ||
ALTER TABLE obce ADD COLUMN geom1 geometry(multipolygon, 3857); | |||
ALTER TABLE obce ADD COLUMN geom1 geometry(multipolygon, | |||
UPDATE obce SET | UPDATE obce SET geom1 = ST_Transform(geom, 3857); | ||
</source> | </source> | ||
<source lang=sql> | <source lang=sql> | ||
SELECT nazev,st_astext(st_pointonsurface(geom)),st_astext(st_pointonsurface(geom1)) FROM obce LIMIT 1; | SELECT nazev,st_astext(st_pointonsurface(geom)) as jtsk,st_astext(st_pointonsurface(geom1)) as pmercator FROM obce LIMIT 1; | ||
</source> | </source> | ||
<pre> | <pre> | ||
-[ RECORD 1 ]--------------------------------------- | |||
nazev | Tvorovice | |||
jtsk | POINT(-551931.998228383 -1145211.62) | |||
pmercator | POINT(1916798.04173232 6339076.60345749) | |||
</pre> | </pre> | ||
Řádek 170: | Řádek 102: | ||
<source lang=sql> | <source lang=sql> | ||
SELECT COUNT(*) FROM osm.czech_point AS kino JOIN obce AS obce ON | SELECT COUNT(*) FROM osm.czech_point AS kino JOIN obce AS obce ON | ||
ST_Within(kino.geom, obce. | ST_Within(kino.geom, obce.geom1) AND | ||
kino.amenity = 'cinema' AND obce.nazev = 'Praha'; | kino.amenity = 'cinema' AND obce.nazev = 'Praha'; | ||
</source> | </source> | ||
Řádek 176: | Řádek 108: | ||
== Vytvoření tématické vrstvy == | == Vytvoření tématické vrstvy == | ||
Příklad pro 'vinice' (polygonová data) - viz [http://wiki.openstreetmap.org/wiki/ | Příklad pro 'vinice' (polygonová data) - viz [http://wiki.openstreetmap.org/wiki/Cs:Map_Features Map Features] na wiki OSM. | ||
<source lang="sql"> | <source lang="sql"> | ||
CREATE TABLE vinice AS SELECT osm_id, geom AS geom FROM czech_polygon WHERE landuse = 'vineyard'; | CREATE TABLE vinice AS SELECT osm_id, geom AS geom FROM osm.czech_polygon WHERE landuse = 'vineyard'; | ||
</source> | </source> | ||
Řádek 198: | Řádek 130: | ||
<source lang="sql"> | <source lang="sql"> | ||
CREATE INDEX | CREATE INDEX ON vinice USING gist (geom); | ||
</source> | </source> | ||
Řádek 204: | Řádek 136: | ||
<source lang="sql"> | <source lang="sql"> | ||
DROP TABLE vinice; | |||
</source> | </source> |
Aktuální verze z 23. 11. 2022, 11:33
Přístup k databázi uzpr_projekty
- databáze: uzpr_projekty
- host: geo102.fsv.cvut.cz
- uživatelské jméno: uzpr<rok>_<skupina>, např. uzpr22_a
Příklad pro skupinu A v akademickém roce 2022/2023
psql uzpr_projekty -U uzpr22_a -h geo102.fsv.cvut.cz -W

Změna hesla
ALTER USER uzpr22_a WITH PASSWORD 'nove_heslo';
Nastavení práv
Příklad zpřístupnění tabulek ve schématu uzpr22_a uživateli uzpr22_b v režimu čtení:
GRANT USAGE ON SCHEMA uzpr22_a TO uzpr22_b;
GRANT SELECT ON ALL TABLES IN SCHEMA uzpr22_a TO uzpr22_b;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA uzpr22_a TO uzpr22_b;
Vstupní data
SELECT * FROM geometry_columns;
Transformace dat
Data ze schémat osm a gis1 jsou lokalizována v různých souřadnicových systémech.
SELECT g.f_table_name, s.auth_name, s.auth_srid, s.proj4text FROM geometry_columns AS g JOIN
spatial_ref_sys AS s ON g.srid = s.srid AND g.f_table_schema = 'osm';
-[ RECORD 1 ]+-------------------------------------------------------------------------------------------------------------------------- f_table_name | czech_line auth_name | EPSG auth_srid | 3857 proj4text | +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs ...
SELECT g.f_table_name, s.auth_name, s.auth_srid, s.proj4text FROM geometry_columns AS g JOIN
spatial_ref_sys AS s ON g.srid = s.srid AND g.f_table_schema = 'ruian';
-[ RECORD 1 ]+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- f_table_name | castiobci auth_name | EPSG auth_srid | 5514 proj4text | +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=570.8,85.7,462.8,4.998,1.587,5.261,3.56 +units=m +no_defs ...
Při kombinaci dat ze schémat osm a ruian je nutné provést transformaci (ST_Transform) dat do společného souřadnicové systému.
SELECT count(*) from osm.czech_point AS kino JOIN ruian.obce AS obce ON
ST_Within(kino.geom, ST_Transform(obce.geom, 3857)) AND
kino.amenity = 'cinema' AND obce.nazev = 'Praha';
Při opakované transformaci je výhodné vytvořit ve vlastním schématu kopii vektorové vrstvy ve zvoleném souřadnicovém systému, např.
CREATE TABLE obce AS SELECT * FROM ruian.obce;
ALTER TABLE obce ADD COLUMN geom1 geometry(multipolygon, 3857);
UPDATE obce SET geom1 = ST_Transform(geom, 3857);
SELECT nazev,st_astext(st_pointonsurface(geom)) as jtsk,st_astext(st_pointonsurface(geom1)) as pmercator FROM obce LIMIT 1;
-[ RECORD 1 ]--------------------------------------- nazev | Tvorovice jtsk | POINT(-551931.998228383 -1145211.62) pmercator | POINT(1916798.04173232 6339076.60345749)
Korespondující dotaz dostane následující podobu
SELECT COUNT(*) FROM osm.czech_point AS kino JOIN obce AS obce ON
ST_Within(kino.geom, obce.geom1) AND
kino.amenity = 'cinema' AND obce.nazev = 'Praha';
Vytvoření tématické vrstvy
Příklad pro 'vinice' (polygonová data) - viz Map Features na wiki OSM.
CREATE TABLE vinice AS SELECT osm_id, geom AS geom FROM osm.czech_polygon WHERE landuse = 'vineyard';
- Definice primárního klíče
ALTER TABLE vinice ADD PRIMARY KEY(osm_id);
Pokud přidání primárního klíče nad atributem osm_id zkolabuje, přidejte nový atribut gid a vytvořte primární klíč nad tímto atributem
ALTER TABLE vinice ADD COLUMN gid serial;
ALTER TABLE vinice ADD PRIMARY KEY(gid);
- Vytvoření prostorového klíče
CREATE INDEX ON vinice USING gist (geom);
Odstranění tématické vrstvy
DROP TABLE vinice;