Med PostGIS kan man udføre enkle og meget avancerede analyser med de mange funktioner til at spørge om spatialle "relations" mellem geomtrieobjekter. Man kan også udføre geometriske beregninger som arealer, længer, omkreds osv med "measurements funnktioner"
Det er meget vigtigt at geomtrierne er valide fordi beregninger på ugyldige geometrier kan resultere i fejlbehæftede resultater. Eksemplevis kan arealberegninger give forkerte resultater, hvis de udføres på ugyldige geometriobjekter. Derudover er det nødvendigt at geomtrierne har samme SRID (spatielt refenrencesystem) når der foretages geografiske sammenligninger (relationships). Derfor kan det være nødvendigt at reprojicere geomtrier, der ikke har samme SRID når der skal foretages analyser
SELECT ST_Area(wkb_geometry) as areal, * FROM tek.bygning LIMIT 10;
SELECT ST_Area(wkb_geometry) as m2, * FROM trafik.vejflade_samlet LIMIT 1000;
SELECT ST_Area(ST_Union(wkb_geometry)) as m2 FROM trafik.vejflade_samlet LIMIT 1000;
SELECT count(*), status, ST_Length(ST_Union(wkb_geometry))/1000 km FROM trafik.vejregister GROUP BY status ORDER BY km;
SELECT DISTINCT ON (vej.ogc_fid) vej.ogc_fid, vej.wkb_geometry FROM trafik.vejflade vej
JOIN buf.skoler skoler ON
(st_intersects(vej.wkb_geometry, st_buffer(skoler.wkb_geometry, 100)))
Eller med en anden syntaks
WITH skoler
AS (SELECT ST_Buffer(wkb_geometry, 100) as geom
FROM buf.skoler),
veje
AS (SELECT *
FROM trafik.vejflade)
SELECT DISTINCT ON (veje.ogc_fid)veje.ogc_fid,veje.vejnavn, veje.wkb_geometry --DISTNCT bruges så vi kke får den samme vej flere gange
FROM veje, skoler WHERE ST_Intersects(veje.wkb_geometry, skoler.geom)
SELECT DISTINCT ON (beb.ogc_fid) beb.* FROM trafik.beboerzone beb, trafik.grundejerforening grund WHERE ST_InterSects(beb.wkb_geometry, grund.wkb_geometry)
--
[HANDS-ON]: Prøv selv at finde på spørgmsål, der skal besvares med SQL