Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Dit onderdeel beschrijft hoe je in PostGIS een ruimtelijke tabel met puntgeometrieën aanmaakt. De tabel wordt hier rx_puntjes genoemd. 

Tabel rx_puntjes heeft de volgende kolommen:

  • gid
    uniek oplopende nummer van het object dat door het systeem wordt toegekend (datatype serial).
  • geom
    de geometrie van het object.
  • label
    een tekstlabel.
  • code
    een code (datatype tekst).
  • state
    een statusveld met een integerwaarde.
  • date
    een datumveld met tijd en tijdzone.

In de PostGIS 1.x wordt in een constraint met PostGIS-functie geometrytype(geom) aangegeven dat de kolom geom alleen punt-geometrieën mag bevatten (of leeg mag zijn) en met PostGIS-functie st_srid(geom) dat de punt-geometrieën in deze kolom uitgedrukt worden in coördinaten van het RD-kaartstelsel (SRID ‘28992’). Constraints bepalen ook dat het kolom gid de primaire sleutel van de tabel vormt en dat de punt-geometrieën tweedimensionaal zijn (alleen x en y, geen z). Ten slotte wordt er aan de tabel één record met een puntgeometrie ingevoegd. Met de functie ST_Point worden eerst de coördinaten aan het punt toegekend en vervolgens wordt met de functie ST_SetSRID het RD-stelsel aan de coördinaten gekoppeld. Zie SQL-statement voor PostGIS 1.5.

Voor PostGIS 2.x kan de tabel iets eenvoudiger aangemaakt worden en zijn er geen contraints nodig. Bij de declaratie van de kolommen kan al worden aangegeven dat gid de primaire sleutel vormt en dat de geometrie van het type POINT is met de coördinaten van het RD-stelsel. Zie de SQL-statement voor PostGIS 2.1.  

Op een vergelijkbare manier kun je een tabel met vlak-geometrieën aanmaken. Zie ***.

Werkwijze

Op de volgende manier maak je de ruimtelijke tabel met puntgeometriën aan:

  1. Meld je via pgAdmin aan bij de PostGIS-database en zorg dat je daarbij voldoende gebruikersrechten hebt. Controleer met het SQL-statement: SELECT postgis_full_version() ; of de juiste versie van PostGIS is geïnstalleerd. De versie moet 1.5 of hoger zijn. 

  2. Maak met een SQL-statement (query) een nieuwe ruimtelijke tabel aan met puntgeometrieën. De onderstaande query creëert tabel rx_puntjes in het databaseschema rx met uitsluitend punt-geometrieën.  Zie de SQL-statements voor PostGIS 1.5 en voor PostGIS 2.1.

  3. Maak een ruimtelijke index op het geometrieveld van de tabel. Dat kan met het volgende SQL-statement: 

    CREATE INDEX index_rx_puntjes_geom  ON rx.rx_puntjes USING gist (geom);

  4. Controleer of alles gelukt is door de tabel uit te lezen met:

    SELECT gid, label, code, date, state, ST_AsText(geom) FROM rx.rx_puntjes;

    Met de PostGIS-functie ST_AsText zorg je ervoor dat de RD-coördinaten als tekst worden weergegeven en niet als binaire waarden.

CREATE TABLE in Postgis 1.5
-- Testtabel met puntgeometrieën en vier attributen

-- DROP TABLE rx.rx_puntjes;

CREATE TABLE rx.rx_puntjes

(

gid serial,

geom geometry,

label character varying,

code character varying,

state integer,

date timestamp with time zone,

CONSTRAINT rx_puntjes_pkey PRIMARY KEY (gid),

CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 2),

CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = 'POINT'::text OR geom IS NULL),

CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 28992) -- of een andere SRID natuurlijk

);

-- En 1 punt-geometrie bij locatie Nieuwland (attributen achteraf zelf invullen)

INSERT INTO rx.rx_puntjes (geom)

VALUES (ST_SetSRID(ST_Point(175135, 442000), 28992));


CREATE TABLE in Postgis 2.1
CREATE TABLE rx.rx_puntjes (gid serial PRIMARY KEY, label varchar, code varchar, state integer, date timestamptz, geom geometry(POINT, 28992));

-- aan deze tabel kan op dezelfde manier een punt toegevoegd worden:

INSERT INTO rx.rx_puntjes2 (label, code, geom) VALUES ('nieuwland', 5, ST_SetSRID(ST_Point(175135, 442000), 28992)) ;



  • No labels