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

results matching ""

    No results matching ""