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?
- QGIS -> SPIT (Shapefile import) plugin
- založit připojení a otestovat
- Menu Databáze -> Správce databází
- Vybrat PostGIS -> název db -> tabulka cities
- 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