PostGIS

prostorová nadstavba PostgreSQL

CREATE EXTENSION postgis;

a je to!

vektory

rastry

topologie

routování

projekce

TIN

3D data

výstupy

standards for the win

SELECT * FROM spatial_ref_sys WHERE srid = 5514; -- A co Křovák?

DATA, DATA, DATA!

INSERT, COPY, shp2pgsql

geometry (rovina) × geography (sféra)

CREATE TABLE cities (
  name varchar PRIMARY KEY,
  x float NOT NULL,
  y float NOT NULL
);
INSERT INTO cities (name, x, y) 
  VALUES  ('Brno', 16.62, 49.2);
ALTER TABLE cities ADD COLUMN geom geometry(Point,4326);

úplně obyčejná tabulka

s úplně obyčejným záznamem

už vůbec není obyčejná

UPDATE cities
  SET geom = ST_MakePoint(x, y);

proč to sakra nefunguje?

ERROR:  Geometry SRID (0) does not match column SRID (4326)
UPDATE cities
  SET geom = ST_SetSRID(ST_MakePoint(x, y), 4326);
SELECT geom FROM cities; // wtf?

SELECT ST_AsText(geom) FROM cities; // aha!

SELECT ST_AsGML(geom) FROM cities; // wtf?

SELECT ST_AsGeoJson(geom) FROM cities; // wtf?

SELECT ST_AsLatLonText(geom) FROM cities; // aha!

Hurá, ale... :-/

TRUNCATE TABLE cities;

A co geometrie?

Co se s nimi mohlo stát?

UPDATE cities SET geom = ST_SetSRID(ST_MakePoint(x, y), 4326);

Jak si data prohlédnout?

  1. QGIS -> SPIT (Shapefile import) plugin
  2. založit připojení a otestovat
  3. Menu Databáze -> Správce databází
  4. Vybrat PostGIS -> název db -> tabulka cities
  5. pravé myšítko -> přidat do mapového okna

INSERT, COPY, ogr2ogr

QGIS -> Databáze -> SPIT -> připojit DB -> vybrat soubor -> OK

USE THE INDEX, LUKE!

  • Jak vůbec fungují prostorové dotazy?
  • Dají se zrychlovat, nebo ne?
  • Dají se napsat tak, že vám zničí počítač?
  • Co je to R-strom?
  • Proč je důležité používat prostorové indexy?
CREATE INDEX cities_idx ON cities USING GIST (geom);

Geodatabáze: PostGIS

By Michal Zimmermann

Geodatabáze: PostGIS

  • 2,592