Geometry Accessors
Geometry Accessors giver os mulighed for at spørge og trække oplysninger ud om vores geometriobjekter vi netop har konstrueret med geometry constructors funktionerne. Vi kan eksempelvis bruge dem til at finde ud hvor stor den højeset x-værdi er med (ST_XMax) eller trække en højdeværdi ud med (ST_Z). Vi kan også få svar på hvilken geometritype objektet har med (ST_GeometryType) Fejl i geometrier kan sagtens forekomme når man har importeret data fra eksempelvis MapInfo. Derfor er det smart at man tjekke om en geomtri er valid med (ST_IsValid)
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
Eksempler
Validér geomtri på polygoner
Undersøg om polygonerne til skoledistrikterne har gyldige geometrier så vi sikrer at fremtdige beregninger på disse geometrier giver korrekte resultater
SELECT * FROM kursus.bygning WHERE not ST_IsValid(wkb_geometry);
Validér at geometrierne har det forventede kooordinatsystem:
Det er vigtigt at alle geometrier har det rigtige koordinatsystem (SRID). Det kan forekomme at man uden at være klar over det har objekter med forskellige koordinatssytemer.
SELECT ST_SRID (wkb_geometry) FROM kursus.bygning
Udtræk bounding boxen (envelope) af en geometri (i wkt format):
SELECT ST_AsText(ST_Envelope(wkb_geometry)) FROM kursus.bygning;
Udtræk bounding boxen for alle geometrierne i en tabel:
Her lægges alle geomtrierne sammen til en MultiPolygon som bruges til at beregne en envelope/Boundingbox.
SELECT ST_AsText(ST_Union(ST_Envelope(wkb_geometry))) FROM kursus.bygning
Få MAX x,y værdierne fra et punkt
SELECT ST_XMAX(wkb_geometry) as x, ST_YMAX(wkb_geometry) as y FROM kursus.bygning LIMIT 10;
Tjek geometritypen
SELECT ST_GeometryType(wkb_geometry) FROM kursus.bygning LIMIT 10;
WITH geomtypes AS (
SELECT ST_GeometryType(wkb_geometry) gtype FROM kursus.bygning
)
SELECT count(*), geomtypes.gtype FROM geomtypes GROUP BY gtype ;
Tæl antal vertexes i geometri
SELECT ST_NPoints(wkb_geometri) FROM kursus.bygning LIMIT 10;
--Gennemsnitsantal
SELECT avg(ST_NPoints(wkb_geometry)) FROM kursus.bygning;
Kontollér koordinatsystem på geometrier
SELECT ST_SRID(wkb_geometry) FROM kursus.bygning LIMIT 10;
--
[HANDS-ON]: Prøv selv at åbne pgAdmin og åben et sql vindue og se dine tabeller har gyldige geometrier
Se alle alle geometry accesors her: http://postgis.net/docs/manual-2.1/reference.html#Geometry_accesors