Geometry constructors

Geometry constructors er den familie af PostGIS-funktioner, der med forskellige metoder, giver os muligheder for at konstruere geometri som vores database med PostGIS kan arbejde med.

Eksempler

St_MakePoint

Anvendes til at konstruere geometri fra x/y baserede koordinatsæt

727039.01 6173981.01


--Konstruér punkt-geometri med "unknown" SRID
SELECT ST_MakePoint(727039.01 , 6173981.01);

--Konstruér punkt-geometri med SRID 25832 (UTM32)
SELECT ST_SetSRID(ST_MakePoint(727039.01 , 6173981.01),25832);

--Konstuér 3D point (punkt med højde på 1,5 m)
SELECT ST_MakePoint(1, 2,1.5);

-- Konvertér ikke-spatiel tabel med x,y kollonner til geometri

--Tilføj geometrikolonne
ALTER TABLE kursus.adresser
    ADD COLUMN geometri geometry(Point,25832);
-- Konstruér geometri
UPDATE kursus.adresser 
    SET geometri = ST_SetSRID(ST_MakePoint(etrs89koordinat_oest , etrs89koordinat_nord),25832); 
--ELLER fra WGS 84 koordinater

UPDATE kursus.adresser
  SET geometri = ST_Transform(ST_SetSRID(ST_MakePoint(wgs84koordinat_laengde , wgs84koordinat_bredde),4326),25832);

De konstruerede geometrier ovenfor kan man dermed anvende alle PostGIS-funktionerne på. Eksempelvis kan man udtrække højden på et punkt:

WITH geometri as (
SELECT ST_MakePoint(1, 2,1.5) as the_geom
)
SELECT ST_AsText(the_geom) as wkt, ST_Z(the_geom) as height FROM geometri;

--

[HANDS-ON]: Prøv selv at åbne pgAdmin og åben et sql vindue og se resultatet af ovenstående sql statement.

Konvertér til 2d

Mange datasæt fra f.eks. Kortforsyningen kommer med z-koordinater, hvor det er irrelevant. Det kan være en god idé at fjerne z og andre dimensioner hvis denne information ikke er nødvendige, da nogle software har svært ved at håndtere ekstra dimensioner.


--Tjek antal dimensioner

SELECT ST_NDims(geom) FROM kursus.postnummer;

--Se hvordan det ser ud i klar tekst:

SELECT ST_Astext(st_astext(geom)) AS geom FROM kursus.postnummer

---Fjern unødvendig information

SELECT ST_Astext(ST_Force2D(st_astext(geom))) AS geoma FROM kursus.postnummer

Påtryk SRID

Nogle gange er data i et forkert eller i intet koordinatsystem. Hvis vi kender geometriens SRID, kan vi påklistre det. Det er nødvendigt for at kunne transformere data eller lave spatialle sammenligninger med en anden tabel.

--Tjek aktuelt srid på geomtrier

SELECT ST_Srid(geom) FROM kursus.postnummer; 
---Sæt srid til noget andet

UPDATE kursus.postnummer
    SET geom = ST_SetSRID(geom,0) --0 er ingen srid

--Sæt srid tilbage til det korrekte
UPDATE kursus.postnummer
    SET geom = ST_SetSRID(geom,25832)

Opret geometri fra geoJSON tekst

SELECT ST_AsText(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[-48.23456,20.12345]}')) As wkt;

[HANDS-ON]: Prøv selv at opbygge geometrier

Find den funktion, der passer til din opgave:

http://postgis.net/docs/manual-2.1/reference.html#Geometry_Constructors

results matching ""

    No results matching ""