Cvičná databáze PostGIS

Z GeoWikiCZ

Na serveru geo102 je umístěna cvičná databáze PostGIS pgis_student. Databáze je přístupná všem uživatelům serveru geo102 bez omezení a je určena pro experimenty. Databáze je pracovní - každý den je vrácena do původního stavu! Není tedy určena pro skladování dat, data vytvořená uživateli jsou odstraněna (obnova databáze je nastavena na každý den ráno).

V případě problémů či dotazů se obraťte na správce databáze.

Data - schémata

intro

Data z tutoriálu Introduction to PostGIS (EPSG:4326).

SELECT * FROM geometry_columns WHERE f_table_schema = 'intro';
 f_table_catalog | f_table_schema |  f_table_name   | f_geometry_column | coord_dimension | srid |      type       
-----------------+----------------+-----------------+-------------------+-----------------+------+-----------------
 pgis_student    | intro          | countries       | geom              |               2 | 4326 | MULTIPOLYGON
 pgis_student    | intro          | bc_municipality | geom              |               2 | 4326 | MULTIPOLYGON
 pgis_student    | intro          | bc_voting_areas | geom              |               2 | 4326 | MULTIPOLYGON
 pgis_student    | intro          | cities          | geom              |               2 | 4326 | POINT
 pgis_student    | intro          | newyork_census  | geom              |               2 | 4326 | MULTIPOLYGON
 pgis_student    | intro          | bc_border       | geom              |               2 | 4326 | MULTILINESTRING
 pgis_student    | intro          | bc_hospitals    | geom              |               2 | 4326 | POINT
 pgis_student    | intro          | bc_roads        | geom              |               2 | 4326 | MULTILINESTRING
 pgis_student    | intro          | timezone        | geom              |               2 | 4326 | MULTIPOLYGON
 pgis_student    | intro          | usa_counties    | geom              |               2 | 4326 | MULTIPOLYGON
 pgis_student    | intro          | bc_pubs         | geom              |               2 | 4326 | POINT
(11 rows)

osm

Data OpenStreetMap pro území ČR (EPSG 3857). Viz návod na import.

SELECT * FROM geometry_columns WHERE f_table_schema = 'osm';
 f_table_catalog | f_table_schema | f_table_name  | f_geometry_column | coord_dimension |  srid  |    type    
-----------------+----------------+---------------+-------------------+-----------------+--------+------------
 pgis_student    | osm            | czech_line    | geom              |               2 | 3857   | LINESTRING
 pgis_student    | osm            | czech_polygon | geom              |               2 | 3857   | POLYGON
 pgis_student    | osm            | czech_roads   | geom              |               2 | 3857   | LINESTRING
 pgis_student    | osm            | czech_point   | geom              |               2 | 3857   | POINT
(4 rows)

Popisek tabulek - viz osm2pgsql schéma.

Příklad odvození tématické vrstvy silnic - viz popis zájmových objektů mapování OSM.

CREATE TABLE silnice AS
 SELECT * from osm.czech_line where highway IN ('motorway', 'motorway_link',
  'trunk', 'trunk_link', 'primary', 'primary_link',
  'secondary', 'secondary_link', 'tertiary', 'tertiary_link');

SELECT Populate_Geometry_Columns('public.silnice'::regclass);
-- nutne pro vizualizaci v QGISu
ALTER TABLE silnice ADD PRIMARY KEY (osm_id); 
GRANT SELECT ON silnice TO postgis;


fgcz

Datová sada FreeGeoDataCZ (EPSG 5514).

SELECT * FROM geometry_columns WHERE f_table_schema = 'fgcz';
 f_table_catalog | f_table_schema |  f_table_name   | f_geometry_column | coord_dimension | srid |    type    
-----------------+----------------+-----------------+-------------------+-----------------+------+------------
 pgis_student    | fgcz           | kraje_pseudo    | geom              |               2 | 5514 | POLYGON
 pgis_student    | fgcz           | silnice_useky   | geom              |               2 | 5514 | LINESTRING
 pgis_student    | fgcz           | mes_casti       | geom              |               2 | 5514 | POINT
 pgis_student    | fgcz           | mesta_b         | geom              |               2 | 5514 | POINT
 pgis_student    | fgcz           | mesta_p         | geom              |               2 | 5514 | POLYGON
 pgis_student    | fgcz           | silnice_uzly    | geom              |               2 | 5514 | POINT
 pgis_student    | fgcz           | obce            | geom              |               2 | 5514 | POINT
 pgis_student    | fgcz           | voda            | geom              |               2 | 5514 | POLYGON
 pgis_student    | fgcz           | zeleznice       | geom              |               2 | 5514 | LINESTRING
 pgis_student    | fgcz           | okresy_pseudo   | geom              |               2 | 5514 | POLYGON
 pgis_student    | fgcz           | silnice_pasport | geom              |               2 | 5514 | LINESTRING
 pgis_student    | fgcz           | reky            | geom              |               2 | 5514 | LINESTRING
 pgis_student    | fgcz           | klad_zm10       | geom              |               2 | 5514 | POINT
 pgis_student    | fgcz           | silnice         | geom              |               2 | 5514 | LINESTRING
 pgis_student    | fgcz           | cr              | geom              |               2 | 5514 | POLYGON
 pgis_student    | fgcz           | cesty           | geom              |               2 | 5514 | LINESTRING
 pgis_student    | fgcz           | czfree_nodes    | geom              |               2 | 5514 | POINT
 pgis_student    | fgcz           | casti_obce      | geom              |               2 | 5514 | POINT
 pgis_student    | fgcz           | dsnimky         | geom              |               2 | 5514 | LINESTRING
 pgis_student    | fgcz           | cfm_points      | geom              |               2 | 5514 | POINT
 pgis_student    | fgcz           | cfm_areas       | geom              |               2 | 5514 | POLYGON
(21 rows)

nc

Vektorová data z edukačního datasetu OSGeo North Carolina (EPSG 3358).

SELECT * FROM geometry_columns WHERE f_table_schema = 'nc';
 f_table_catalog | f_table_schema |     f_table_name      | f_geometry_column | coord_dimension | srid |    type    
-----------------+----------------+-----------------------+-------------------+-----------------+------+------------
 pgis_student    | nc             | busroute_a            | geom              |               2 | 3358 | LINESTRING
 pgis_student    | nc             | p079214               | geom              |               2 | 3358 | GEOMETRY
 pgis_student    | nc             | elev_lidrural_mrptsft | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | nc_state              | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | busroutesall          | geom              |               2 | 3358 | LINESTRING
 pgis_student    | nc             | p079215               | geom              |               2 | 3358 | GEOMETRY
 pgis_student    | nc             | elev_ned10m_cont10m   | geom              |               2 | 3358 | LINESTRING
 pgis_student    | nc             | streams               | geom              |               2 | 3358 | LINESTRING
 pgis_student    | nc             | overpasses            | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | p079218               | geom              |               2 | 3358 | GEOMETRY
 pgis_student    | nc             | poi_names_wake        | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | firestations          | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | busstopsall           | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | precip_30ynormals     | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | geodetic_pts          | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | census_wake2000       | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | p079219               | geom              |               2 | 3358 | GEOMETRY
 pgis_student    | nc             | streets_wake          | geom              |               2 | 3358 | LINESTRING
 pgis_student    | nc             | censusblk_swwake      | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | boundary_county       | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | swwake_10m            | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | geodetic_swwake_pts   | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | precip_30ynormals_3d  | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | urbanarea             | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | railroads             | geom              |               2 | 3358 | LINESTRING
 pgis_student    | nc             | geology               | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | comm_colleges         | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | boundary_municp       | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | elev_lid792_bepts     | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | roadsmajor            | geom              |               2 | 3358 | LINESTRING
 pgis_student    | nc             | bridges               | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | geonames_nc           | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | geonames_wake         | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | elev_lid792_cont1m    | geom              |               2 | 3358 | LINESTRING
 pgis_student    | nc             | busroute1             | geom              |               2 | 3358 | LINESTRING
 pgis_student    | nc             | schools_wake          | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | elev_lid792_randpts   | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | usgsgages             | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | soils_general         | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | hospitals             | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | busroute11            | geom              |               2 | 3358 | LINESTRING
 pgis_student    | nc             | soils_wake            | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | lakes                 | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | zipcodes_wake         | geom              |               2 | 3358 | POLYGON
 pgis_student    | nc             | elev_lidrural_mrpts   | geom              |               2 | 3358 | POINT
 pgis_student    | nc             | busroute6             | geom              |               2 | 3358 | LINESTRING
(46 rows)

ruian

Data RUIAN území celky stát až ZSJ (EPSG 5514).

SELECT * FROM geometry_columns WHERE f_table_schema = 'ruian';
 f_table_catalog | f_table_schema |    f_table_name    | f_geometry_column | coord_dimension | srid |     type     
-----------------+----------------+--------------------+-------------------+-----------------+------+--------------
 pgis_student    | ruian          | momc               | geom              |               2 | 5514 | POINT
 pgis_student    | ruian          | mop                | geom              |               2 | 5514 | POINT
 pgis_student    | ruian          | kraje              | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian          | orp                | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian          | pou                | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian          | regionysoudrznosti | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian          | spravniobvody      | geom              |               2 | 5514 | POINT
 pgis_student    | ruian          | obce               | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian          | okresy             | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian          | staty              | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian          | castiobci          | geom              |               2 | 5514 | POINT
 pgis_student    | ruian          | katastralniuzemi   | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian          | vusc               | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian          | zsj                | geom              |               2 | 5514 | MULTIPOINT
(14 rows)

ruian_praha

Data RUIAN Hlavního města Prahy (EPSG 5514).

SELECT * FROM geometry_columns WHERE f_table_schema = 'ruian_praha';
 f_table_catalog | f_table_schema |   f_table_name   | f_geometry_column | coord_dimension | srid |      type       
-----------------+----------------+------------------+-------------------+-----------------+------+-----------------
 pgis_student    | ruian_praha    | adresnimista     | geom              |               2 | 5514 | POINT
 pgis_student    | ruian_praha    | momc             | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian_praha    | mop              | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian_praha    | castiobci        | geom              |               2 | 5514 | POINT
 pgis_student    | ruian_praha    | katastralniuzemi | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian_praha    | spravniobvody    | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian_praha    | obce             | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian_praha    | parcely          | geom              |               2 | 5514 | POLYGON
 pgis_student    | ruian_praha    | stavebniobjekty  | geom              |               2 | 5514 | MULTIPOLYGON
 pgis_student    | ruian_praha    | ulice            | geom              |               2 | 5514 | MULTILINESTRING
 pgis_student    | ruian_praha    | zsj              | geom              |               2 | 5514 | MULTIPOLYGON
(11 rows)

Přístup k databázi

Příkazová řádka - psql

psql pgis_student -U postgis -h geo102.fsv.cvut.cz -W
Příklad přístupu ke studentské geodatabázi přes psql

GUI - pgAdmin

pgAdmin je grafické uživatelské rozhraní pro přístup k PostgreSQL databázi. Nástroj je multiplatformní a je ke stažení na adrese http://www.pgadmin.org/download/. Viz instalace PostgreSQL na MS Windows.

Připojení k databázi pgis_student můžete přidat z menu

File -> Add server
Dialog pgAdmin3 pro přihlášení k databázi pgis_student
pgAdmin3: příklad prostorového SQL dotazu

Vizualizace dat

QGIS

QGIS je multiplatformní desktopová GIS aplikace.

K datům uložených v geodatabázi PostGIS lze přistupovat z menu či nástrojové lišty :

Podpora PostGIS v prostředí QGISu
Layer -> Add PostGIS Layer

Nové připojení k PostGIS databázi - New

Dialog pro přihlášení k PostGIS databázi

Po stisknutí tlačítka Connect se QGIS připojí k databázovému serveru a zobrazí seznam dostupných datových vrstev.

Připojení k databázi pgis_student v QGISu
Vizualizace PostGIS dat v QGISu


MapServer

Příklady prostorových dotazů

-- nejprve vytvoříme vlastní schéma a nastavíme vyhledávací cestu
-- nově vytvářené tabulky, tak budou vytvořeny ve vlastním schématu
CREATE SCHEMA landamar;
SET search_path TO landamar, osm, public;
-- příklad vytvoření bodové vrstvy knihoven 
CREATE TABLE knihovny AS SELECT * FROM czech_point WHERE amenity = 'library';
-- zjištění celkového počtu knihoven 
SELECT COUNT(*) FROM knihovny;

Stažení databáze pro vlastní potřebu

Geodatabáze pgis_student obsahuje pouze volně šířitelná data. Data si tedy můžete stáhnout a používat pro vlastní účely.

Ke stažení je dostupný dump soubor pgis_student.dump (>2.2 GB !).

Poznámka: Dávka byla vytvořena příkazem

pg_dump -Fc -b -v -f pgis_student.dump pgis_student

Příklad importu dat (včetně vytvoření databáze pgis_student):

  1. Vytvoření nové PostGIS geodatabáze pgis_student
  2. Stažení a nahrání dávky do této databáze
wget http://geo102.fsv.cvut.cz/~landa/vyuka/postgis/pgis_student.dump
postgis_restore.pl pgis_student.dump | psql pgis_student