Přeskočit obsah

12. PostGIS - rastrová data

Přednáška

Cvičení

Praktická úloha

DMT importujeme pomocí konzolového nástroje raster2pgsql

raster2pgsql -s 5514 -C -I 12/dmt100.tif dmt > dmt.sql

psql uzpr -h gislab.fsv.cvut.cz -U xxx -W -f dmt.sql

Zjistíme informace o importovaném rastru:

SELECT * FROM raster_columns;

SELECT * FROM dmt;

--
-- Základní metadata o DMT
--
SELECT st_srid(rast), st_numbands(rast), st_bandpixeltype(rast, 1),
 st_width(rast), st_height(rast), st_pixelwidth(rast),
 st_pixelheight(rast), st_georeference(rast)
FROM dmt;

SELECT (st_summarystats(rast)).* AS stats
FROM   dmt;

Překryv s bodovými daty

Určete nadmořské výšky požárních stanic:

SELECT p.osm_id,ST_Value(r.rast,p.geom) AS vyska
FROM dmt AS r
CROSS JOIN osm.pozarni_stanice as p
ORDER BY vyska;

Optimalizace založená na dlaždicování DMT:

raster2pgsql -s 5514 -t 400x400 -C -I 12/dmt100.tif dmt_t > dmt_t.sql
SELECT * FROM raster_columns;

SELECT count(*) FROM dmt_t;

Určete nadmořské výšky požárních stanic pomocí dlaždicovaného rastru a porovnejte s předchozí verzí.

SELECT p.osm_id,ST_Value(r.rast,p.geom) AS vyska FROM dmt_t AS r
JOIN osm.pozarni_stanice as p
ON ST_Intersects(r.rast,p.geom)
ORDER BY vyska;

Překryv s polygonovými daty

shp2pgsql -s 5514 07-08/data50/SilniceDalnice.shp silnice | \
psql uzpr -h gislab.fsv.cvut.cz -U landa -W

Provedeme průnik obalové zóny dálníce D8 a DMT:

CREATE TEMPORARY TABLE d8_dmt AS
WITH d8_b AS (
 SELECT st_union(st_buffer(geom, 200)) AS geom
 FROM silnice WHERE typsil LIKE 'D1%' AND nazev = 'D8'
)
SELECT st_intersection(rast, geom) AS geomval
FROM  dmt_t
JOIN d8_b
on st_intersects(rast, geom)

A vypočítáme minimální, průměrnou a maximální nadmořskou výšku v této oblasti:

SELECT min((geomval).val),avg((geomval).val),max((geomval).val)
FROM d8_dmt;

Podobnou analýzu provedeme pro reklasifikovaný DMT:

CREATE TABLE dmt_r AS
 SELECT st_reclass(rast, '0-250:1, 250-450:2, 450-2000:3', '16BUI') AS rast
 FROM   dmt_t;

Nejprve určíme pro každou kategorii její výměru v hekratech:

SELECT value, sum(count)
FROM (
 SELECT (st_valuecount(rast)).* from dmt_r
) AS f
GROUP BY value
ORDER BY value;

Na závěr provedeme průnik s obalovou zónou dalnice D8 a pro toto území spočítáme pro každou kategorii její výměru v hekratech:

WITH d8_b AS (
 SELECT st_union(st_buffer(geom, 200)) AS geom
 FROM silnice WHERE typsil LIKE 'D1%' AND nazev = 'D8'
)
SELECT val,sum(st_area(geom))/1e4 AS vymera
FROM (
 SELECT (st_intersection(rast, geom)).*
 FROM   dmt_r
 JOIN d8_b
 on st_intersects(rast, geom)
) AS s
GROUP BY val
ORDER BY vymera

Úkol

Statistika není kompletní, protože ve vrstvě silnic chybí části tunelů.

Importujte vrstvu tunelů z datasetu Data50 a začleňte je do výpočtu.

Opakování úloh z předmětu GIS2

Opakování úloh z předmětu GIS2 4. cvičení.

Otázky jsou postaveny nad datasetem ArcČR v3.3 (S:\K155\Public\data\GIS\ArcCR500 3.3).

Import dat je možný pomocí konzolového nástroje raster2pgsql

raster2pgsql -s 5514 -C -I dmt_uk.tif dmt_uk > dmt_uk.sql
raster2pgsql -s 5514 -C -I -t 400x400 dmt_uk.tif dmt_uk_tiles > dmt_uk_tiles.sql

psql arccr500 -h gislab.fsv.cvut.cz -U xxx -W -f dmt_uk.sql
psql arccr500 -h gislab.fsv.cvut.cz -U xxx -W -f dmt_uk_tiles.sql

Další materiály