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:
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:
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
- Topografická analýza povrchu, reklasifikace rastrových dat
- Mapová algebra, interpolace rastrových dat