GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
1/24
Prednaska 1
GeodatabazeSimple FeaturesUvod do problematiky, geodatabaze, OGC Simple Features
155UZPD Uvod do zpracovanı prostorovych dat, zimnı semestr 2019-2020
Martin [email protected]
Fakulta stavebnı CVUT v PrazeKatedra geomatiky
http://geo.fsv.cvut.cz/gwiki/155UZPD
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
2/24
Copyright c© 2009-2019 Martin Landa
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation Licence, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts.
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
3/24
Obsah prednasky
1 UvodDatabazove systemyProstorova databazeGeodatabaze
2 OpenGIS Simple FeaturesDatovy typ GeometryOdvozene datove typyVlastnosti datovych typuForma zapisuOpenGIS Simple Features for SQL
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
4/24
Napln predmetu
Stranky predmetu
http://geo.fsv.cvut.cz/gwiki/155UZPD
1 Databazove systemy a geograficka data obecne2 Specifikace OGC Simple Features3 Prostorove SQL4 Geodatabaze prakticky
• PostGIS• SpatiaLite• rasdaman• mongoDB
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
4/24
Napln predmetu
Stranky predmetu
http://geo.fsv.cvut.cz/gwiki/155UZPD
1 Databazove systemy a geograficka data obecne2 Specifikace OGC Simple Features3 Prostorove SQL4 Geodatabaze prakticky
• PostGIS• SpatiaLite• rasdaman• mongoDB
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
5/24
Databaze
Databaze
• Usporadana mnozina informacı (dat) ulozena napamet’ovem mediu, ktere jsou dostupne prostrednictvımpocıtacoveho programu.
• System slouzıcı k modelovanı objektu a vztahu realnehosveta prostrednictvım digitalnıch dat usporadanych tak,aby se s nimi dalo efektivne manipulovat.
→ Zakladnımi prvky jsou data a program pro praci s nimi.
DBMS
DataBase Management System (system rızenı baze dat):• softwarove vybavenı, ktere zajist’uje praci s databazı• tvorı rozhranı mezi aplikacnımi programy a ulozenymi daty
Databazovy system
System rızenı baze dat dohromady s bazı dat.
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
5/24
Databaze
Databaze
• Usporadana mnozina informacı (dat) ulozena napamet’ovem mediu, ktere jsou dostupne prostrednictvımpocıtacoveho programu.
• System slouzıcı k modelovanı objektu a vztahu realnehosveta prostrednictvım digitalnıch dat usporadanych tak,aby se s nimi dalo efektivne manipulovat.
→ Zakladnımi prvky jsou data a program pro praci s nimi.
DBMS
DataBase Management System (system rızenı baze dat):• softwarove vybavenı, ktere zajist’uje praci s databazı• tvorı rozhranı mezi aplikacnımi programy a ulozenymi daty
Databazovy system
System rızenı baze dat dohromady s bazı dat.
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
6/24
Prostorova data
Prostorova data
• Entita definovana v prostoru, u ktere je zrejma:1 Identifikace2 Umıstenı v prostoru3 Vztah k okolnım entitam
• Prostorovy referencnı system (system pro identifikacipolohy v realnem svete)
Popis entit
1 simplex2 deskriptor
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
6/24
Prostorova data
Prostorova data
• Entita definovana v prostoru, u ktere je zrejma:1 Identifikace2 Umıstenı v prostoru3 Vztah k okolnım entitam
• Prostorovy referencnı system (system pro identifikacipolohy v realnem svete)
Popis entit
1 simplex• nejmensı nevyplneny objekt dane dimenze, 0-simplex je
bod, 1-simplex usecka, 2-simplex trojuhelnık, 3-simplexctyrsten atd.
• kazdy d-simplex se sklada z d+1 simplexu rozmeru d-1(”styky“)
• kombinace simplexu do slozitejsıch struktur je povolena jen,kdyz je prunik libovolnych dvou simplexu ”stykem“
2 deskriptor
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
6/24
Prostorova data
Prostorova data
• Entita definovana v prostoru, u ktere je zrejma:1 Identifikace2 Umıstenı v prostoru3 Vztah k okolnım entitam
• Prostorovy referencnı system (system pro identifikacipolohy v realnem svete)
Popis entit
1 simplex2 deskriptor
• mnozina bodu, usecek• prıpadne vyssıch celku s nasledujıcımi vlastnostmi:
• kazdy (koncovy) bod je bodem sıte• zadny vnitrnı bod nenı zaznamenan v sıti• zadne dve usecky nemajı prusecık a ani se neprekryvajı
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
7/24
Prostorova databaze
Zakladnı charakteristika
• Databaze optimalizovana pro skladovanı, udrzbu adotazovanı prostorovych dat (tj. dat vztazenych k objektumlokalizovanych v definovanem prostoru)
•”Prostor“ znamena 2 a vıce dimenzı
• S vyhodou vyuzıvany v GIS• Oproti ”bezne“ databazi definuje:
1 Datove typy prostorovych objektu (features)2 Metody pro dotazovanı a zpracovanı prostorovych dat
• Prostorove vztahy, tzv. ”predikaty“, napr. je uvnitr(),dotyka se(), obsahuje(), . . .
• Operace prekrytı, tzv. ”relace“, napr. prunik(), spojeni(),. . .
• Ostatnı, napr. plocha(), delka(), typ(), . . .
http://en.wikipedia.org/wiki/Spatial_database
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
7/24
Prostorova databaze
Zakladnı charakteristika
• Databaze optimalizovana pro skladovanı, udrzbu adotazovanı prostorovych dat (tj. dat vztazenych k objektumlokalizovanych v definovanem prostoru)
•”Prostor“ znamena 2 a vıce dimenzı
• S vyhodou vyuzıvany v GIS• Oproti ”bezne“ databazi definuje:
1 Datove typy prostorovych objektu (features)2 Metody pro dotazovanı a zpracovanı prostorovych dat
• Prostorove vztahy, tzv. ”predikaty“, napr. je uvnitr(),dotyka se(), obsahuje(), . . .
• Operace prekrytı, tzv. ”relace“, napr. prunik(), spojeni(),. . .
• Ostatnı, napr. plocha(), delka(), typ(), . . .
http://en.wikipedia.org/wiki/Spatial_database
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
7/24
Prostorova databaze
Zakladnı charakteristika
• Databaze optimalizovana pro skladovanı, udrzbu adotazovanı prostorovych dat (tj. dat vztazenych k objektumlokalizovanych v definovanem prostoru)
•”Prostor“ znamena 2 a vıce dimenzı
• S vyhodou vyuzıvany v GIS• Oproti ”bezne“ databazi definuje:
1 Datove typy prostorovych objektu (features)2 Metody pro dotazovanı a zpracovanı prostorovych dat
• Prostorove vztahy, tzv. ”predikaty“, napr. je uvnitr(),dotyka se(), obsahuje(), . . .
• Operace prekrytı, tzv. ”relace“, napr. prunik(), spojeni(),. . .
• Ostatnı, napr. plocha(), delka(), typ(), . . .
http://en.wikipedia.org/wiki/Spatial_database
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
8/24
Geodatabaze
Zakladnı charakteristika
• Prostorova databaze navrzena pro ulozenı, dotazovanıa manipulaci s geografickymi informacemia prostorovymi daty (tzv. ”geodaty“)
• Komponenta GIS pro skladovanı a manipulaci s daty+ Bezne pouzıvane relacne-objektove databaze+ SQL, prostorove dotazy+ Vıceuzivatelsky prıstup k datum+ V segmentu velkych dat (big-data) se spıse pouzıvajı
NoSQL databaze
http://en.wikipedia.org/wiki/Geodatabase
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
9/24
Geodatabaze
Geodata
Formalnı prepis geograficke informace do formy vhodne propocıtacove zpracovanı.
Geodata identifikujı:1 geografickou polohu2 charakteristiky prırodnıch i antropogennıch jevu a hranic
mezi nimi
Definice pojmu ”geoprvek“
Modelovany obraz (prostorove) lokalizovaneho objekturealneho sveta, ktery je dale nedelitelny, jednoznacneodlisitelny od ostatnıch prvku (napr. dalnice D8, obec ”Slany”,vrchol Milesovky, . . . )
Anglicky: feature
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
9/24
Geodatabaze
Slozky popisu (rozmer) geoprvku
• geometricka• vztahova (topologicka),• popisna (tematicka, atributova),• casova,• kvalitativnı (metadata, ”data o datech“)• . . .
Reprezentace dat
• vektorova• rastrova
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
10/24
Geodatabaze
Historie
1 Geometrie a atributy ulozeny oddelene ve specifickychsouborovych strukturach (napr. souborovy format EsriShapefile)
2 Geometrie v souborech, atributova data ulozenav (relacnıch) databazovych systemech (napr. souborovyformat GRASS + SQLite)
3 Geometrie a atributy ulozeny spolecne v databazi• Prvotnı implementace pouzıvaly middleware pro ulozenı
prostorovych dat s vyuzitım standardnıch datovych typu(napr. BLOB)• IBM Geographic Database System (GDBS) – polovina 80.let• IBM GeoManager (rozsırenı pro IBM DB2) – pocatek 90.let• Oracle v.4 (prelom 80. a 90.let)→ Oracle Spatial• Objektove-relacnı databazove systemy (konec 90.let)
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
10/24
Geodatabaze
Historie
1 Geometrie a atributy ulozeny oddelene ve specifickychsouborovych strukturach (napr. souborovy format EsriShapefile)
2 Geometrie v souborech, atributova data ulozenav (relacnıch) databazovych systemech (napr. souborovyformat GRASS + SQLite)
3 Geometrie a atributy ulozeny spolecne v databazi• Prvotnı implementace pouzıvaly middleware pro ulozenı
prostorovych dat s vyuzitım standardnıch datovych typu(napr. BLOB)• IBM Geographic Database System (GDBS) – polovina 80.let• IBM GeoManager (rozsırenı pro IBM DB2) – pocatek 90.let• Oracle v.4 (prelom 80. a 90.let)→ Oracle Spatial• Objektove-relacnı databazove systemy (konec 90.let)
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
10/24
Geodatabaze
Historie
1 Geometrie a atributy ulozeny oddelene ve specifickychsouborovych strukturach (napr. souborovy format EsriShapefile)
2 Geometrie v souborech, atributova data ulozenav (relacnıch) databazovych systemech (napr. souborovyformat GRASS + SQLite)
3 Geometrie a atributy ulozeny spolecne v databazi• Prvotnı implementace pouzıvaly middleware pro ulozenı
prostorovych dat s vyuzitım standardnıch datovych typu(napr. BLOB)• IBM Geographic Database System (GDBS) – polovina 80.let• IBM GeoManager (rozsırenı pro IBM DB2) – pocatek 90.let• Oracle v.4 (prelom 80. a 90.let)→ Oracle Spatial• Objektove-relacnı databazove systemy (konec 90.let)
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
10/24
Geodatabaze
Prehled nekterych produktu
• IBM DB2 – IBM DB2 Spatial Extender• Oracle – Oracle Spatial/Locator• PostgreSQL – PostGIS (?)• MySQL – MySQL Spatial Extensions (?)• Microsoft SQL Server• Esri ArcSDE• Informix Spatial DataBlade• SQLite – SpatiaLite (?)• CouchDB (?)• MongoDB (?)• . . .
(?) . . . open source
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
11/24
Obsah prednasky
1 UvodDatabazove systemyProstorova databazeGeodatabaze
2 OpenGIS Simple FeaturesDatovy typ GeometryOdvozene datove typyVlastnosti datovych typuForma zapisuOpenGIS Simple Features for SQL
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
12/24
OpenGIS Simple Features
http://www.opengeospatial.org
Specifikace Open Geospatial Consortium (OGC)
1 OpenGIS Simple Features Access (ISO 19125) —http://www.opengeospatial.org/standards/sfa
2 OpenGIS Simple Features for SQL —http://www.opengeospatial.org/standards/sfs
→ PostGIS jako implementace ”OpenGIS Simple Features forSQL“ pro objektove-relacnı databazovy system PostgreSQL
http://en.wikipedia.org/wiki/Open_Geospatial_Consortium
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
12/24
OpenGIS Simple Features
http://www.opengeospatial.org
Specifikace Open Geospatial Consortium (OGC)
1 OpenGIS Simple Features Access (ISO 19125) —http://www.opengeospatial.org/standards/sfa
2 OpenGIS Simple Features for SQL —http://www.opengeospatial.org/standards/sfs
→ PostGIS jako implementace ”OpenGIS Simple Features forSQL“ pro objektove-relacnı databazovy system PostgreSQL
http://en.wikipedia.org/wiki/Open_Geospatial_Consortium
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
13/24
OpenGIS Simple Features
Trıda Geometry
• Abstraktnı rodicovska trıda• Objekty majı prostorove a neprostorove vlastnosti• Prostorove vlastnosti jsou reprezentovany 2D
geometrickymi objekty
Dimenze objektu
Geometricke objekty nulte (bod), prvnı (linie) a druhe(polygon) dimenze v 2D/3D/4D souradnicovem systemu• 2D (x, y)• 3D (x, y, z) – vyska• 3D (x, y, m) – merenı• 4D (x, y, z, m)
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
13/24
OpenGIS Simple Features
Trıda Geometry
• Abstraktnı rodicovska trıda• Objekty majı prostorove a neprostorove vlastnosti• Prostorove vlastnosti jsou reprezentovany 2D
geometrickymi objekty
Dimenze objektu
Geometricke objekty nulte (bod), prvnı (linie) a druhe(polygon) dimenze v 2D/3D/4D souradnicovem systemu• 2D (x, y)• 3D (x, y, z) – vyska• 3D (x, y, m) – merenı• 4D (x, y, z, m)
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
14/24
Zakladnı metody trıdy Geometry• dimension(), geometryType(), SRID()• envelope(), boundary()• asText(), asBinary()• isSimple(), isEmpty(), is3D(), isMeasured()
Prostorove vztahy (predikatory)
• equals(), disjoint()• intersects(), touches(), crosses(),• within(), contains(), overlaps(), relate()
Prostorova analyza
• distance(), buffer(), convexHull(),intersection(), union(), difference()
Poznamka
Metody pro prostorove analyzy ci pro urcenı prostorovychvztahu jsou omezeny pouze na 2D
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
14/24
Zakladnı metody trıdy Geometry• dimension(), geometryType(), SRID()• envelope(), boundary()• asText(), asBinary()• isSimple(), isEmpty(), is3D(), isMeasured()
Prostorove vztahy (predikatory)
• equals(), disjoint()• intersects(), touches(), crosses(),• within(), contains(), overlaps(), relate()
Prostorova analyza
• distance(), buffer(), convexHull(),intersection(), union(), difference()
Poznamka
Metody pro prostorove analyzy ci pro urcenı prostorovychvztahu jsou omezeny pouze na 2D
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
15/24
Datovy model Simple Features
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
16/24
Datove typy Simple Features
Point
Bod
Curve
Posloupnost bodu, zpusob interpolace• LineString – linie, lomena cara (linearnı interpolace)• Line – linie s dvema body• LineRing – jednoducha a uzavrena linie
• Jednoducha krivka – sama sebe neprotına (1) (3)• Uzavrena krivka – spolecny pocatecnı a koncovy bod (4)
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
16/24
Datove typy Simple Features
Point
Bod
Curve
Posloupnost bodu, zpusob interpolace• LineString – linie, lomena cara (linearnı interpolace)• Line – linie s dvema body• LineRing – jednoducha a uzavrena linie
• Jednoducha krivka – sama sebe neprotına (1) (3)• Uzavrena krivka – spolecny pocatecnı a koncovy bod (4)
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
17/24
Datove typy Simple Features
Polygon
• Definovan vnejsımi a vnitrnımi (tvorı tzv. “dıry”) hranicemi• Hranice je objekt typu LineRing
(1) Validnı
(2) Nevalidnı
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
18/24
Datove typy Simple Features
PolyhedralSurface
Mnozina polygonu sdılejıcı spolecne hranicnı linie• TIN - Triangulated Irreguar Network
Poznamka: Nekonzistentnı mnozina polygonu je vyjadrenajako MultiSurface
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
19/24
Datove typy Simple Features
GeometryCollection
Multimnozina geometrickych objektu ruznych typu(muze obsahovat i duplicitnı prvky)
Poznamka
Nektere metody tento datovy typ nepodporujı
Multi*
Mnozina geometrickych objektu stejneho typu• MultiPoint – mnozina bodu• MultiLineString – mnozina lomenych car• MultiPolygon – mnozina polygonu
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
19/24
Datove typy Simple Features
GeometryCollection
Multimnozina geometrickych objektu ruznych typu(muze obsahovat i duplicitnı prvky)
Poznamka
Nektere metody tento datovy typ nepodporujı
Multi*
Mnozina geometrickych objektu stejneho typu• MultiPoint – mnozina bodu• MultiLineString – mnozina lomenych car• MultiPolygon – mnozina polygonu
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
20/24
Prehled metod datovych typu Simple Features
• GeometryCollection• NumGeometries(), GeometryN()
• Point• X(), Y(), Z(), M()
• Curve• Lenght(), StartPoint(), EndPoint(), IsClosed(),IsRing()
• LineString• NumPoints(), PointN()
• MultiCurve• IsClosed(), Length()
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
20/24
Prehled metod datovych typu Simple Features
• GeometryCollection• NumGeometries(), GeometryN()
• Point• X(), Y(), Z(), M()
• Curve• Lenght(), StartPoint(), EndPoint(), IsClosed(),IsRing()
• LineString• NumPoints(), PointN()
• MultiCurve• IsClosed(), Length()
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
20/24
Prehled metod datovych typu Simple Features
• GeometryCollection• NumGeometries(), GeometryN()
• Point• X(), Y(), Z(), M()
• Curve• Lenght(), StartPoint(), EndPoint(), IsClosed(),IsRing()
• LineString• NumPoints(), PointN()
• MultiCurve• IsClosed(), Length()
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
20/24
Prehled metod datovych typu Simple Features
• Surface/MultiSurface• Area(), Centroid(), PointOnSurface()
• Polygon• ExteriorRing(), NumInteriorRing(),InteriorRingN()
• PolyhedralSurface/TIN• NumPatches(), PatchN(), BoundingPolygons(),IsClosed()
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
20/24
Prehled metod datovych typu Simple Features
• Surface/MultiSurface• Area(), Centroid(), PointOnSurface()
• Polygon• ExteriorRing(), NumInteriorRing(),InteriorRingN()
• PolyhedralSurface/TIN• NumPatches(), PatchN(), BoundingPolygons(),IsClosed()
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
21/24
Textova forma zapisu (WKT)
Well Known Text
• Znackovacı jazyk• Pouzıva se pro
1 popis geometrie objektu2 definici prostorovych referencnıch systemu (prıklad
EPSG:5514)
Prıklady
1 POINT (6 10)2 LINESTRING (3 4,10 50,20 25)3 POLYGON ((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2))4 MULTIPOINT (3.5 5.6,4.8 10.5)5 MULTILINESTRING ((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))6 MULTIPOLYGON (((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2)),((3 3,6 2,6 4,3 3)))7 GEOMETRYCOLLECTION (POINT(4 6), LINESTRING(4 6,7 10))8 POINT ZM (1 1 5 60)9 POINT M (1 1 80)
10 POINT EMPTY11 MULTIPOLYGON EMPTY
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
22/24
Binarnı forma zapisu (WKB)
Well Known Binary
• Portovatelny zapis geometrie objektu• Prevod dat, vymena mezi SQL/CLI klientem, . . .
Napr. POINT(1 1) je reprezentovan sekvencı 21 bajtu
0101000000000000000000F03F000000000000F03F
01 Poradı bajtu• 1 bajtovy unsigned integer• 1 pro little-endian (NDR), 0 pro big-endian
(XDR)01000000 Typ geometrie
• 4 bajtovy unsigned integer• Hodnoty 1 az 7 reprezentujı Point,
LineString, Polygon, MultiPoint,MultiLineString, MultiPolygon aGeometryCollection
POINT - Souradnice bodu jsou ulozeny jakodouble-precision
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
22/24
Binarnı forma zapisu (WKB)
Well Known Binary
• Portovatelny zapis geometrie objektu• Prevod dat, vymena mezi SQL/CLI klientem, . . .
• LINESTRING• Pocet bodu (4 bajtovy unsigned integer)• Pole bodu
• POLYGON• Pocet (vcetne vnitrnıch) ringu (4 bajtovy unsigned integer)• Pole liniı (prvnı je externı ring)
• Kolekce prvku• Pocet prvku (4 bajtovy unsigned integer)• Pole bodu, liniı, polygonu a pod.
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
22/24
Binarnı forma zapisu (WKB)
Well Known Binary
• Portovatelny zapis geometrie objektu• Prevod dat, vymena mezi SQL/CLI klientem, . . .
Napr. LINESTRING(1 1, 2 2) je reprezentovan sekvencı41 bajtu
01020000000200000000000000000F03F00000000000F03F00000000000000400000000000000040
01 Poradı bajtu – little-endian02000000 Typ geometrie – LINESTRING02000000 Pocet bodu – 2000000000000F03F Souradnice X prvnıho bodu000000000000F03F Souradnice Y prvnıho bodu0000000000000040 Souradnice X druheho bodu0000000000000040 Souradnice Y druheho bodu
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
23/24
OpenGIS Simple Features for SQL
OpenGIS Simple Features for SQL
• Podpora pro ukladanı, zıskavanı, dotazovanı a aktualizacigeoprvku pres rozhranı SQL/CLI (Call Level Interface)
• V tabulce (”feature table“) muze byt ulozena pouzemnozina prvku stejneho geometrickeho typu
• Geoprvek je reprezentovan zaznamem v tabulce (vesloupcıch jsou ulozeny jeho prostorove a popisnevlastnosti)
Tabulky dle specifikace OpenGIS Simple Features for SQL
• GEOMETRY COLUMNS – seznam dostupnych tabulek sgeoprvky
• SPATIAL REF SYS – definice souradnicovych systemu•
”Feature table“ – mnozina geoprvku jako zaznamyv tabulce
•”Geometry table“ – geometrie prvku ulozena jakostandardnı numericka ci binarnı data
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
23/24
OpenGIS Simple Features for SQL
OpenGIS Simple Features for SQL
• Podpora pro ukladanı, zıskavanı, dotazovanı a aktualizacigeoprvku pres rozhranı SQL/CLI (Call Level Interface)
• V tabulce (”feature table“) muze byt ulozena pouzemnozina prvku stejneho geometrickeho typu
• Geoprvek je reprezentovan zaznamem v tabulce (vesloupcıch jsou ulozeny jeho prostorove a popisnevlastnosti)
Tabulky dle specifikace OpenGIS Simple Features for SQL
• GEOMETRY COLUMNS – seznam dostupnych tabulek sgeoprvky
• SPATIAL REF SYS – definice souradnicovych systemu•
”Feature table“ – mnozina geoprvku jako zaznamyv tabulce
•”Geometry table“ – geometrie prvku ulozena jakostandardnı numericka ci binarnı data
GeodatabazeSimple Features
UvodDatabazove systemy
Prostorova databaze
Geodatabaze
OpenGIS SimpleFeaturesDatovy typ Geometry
Odvozene datove typy
Vlastnosti datovych typu
Forma zapisu
OpenGIS Simple Featuresfor SQL
24/24
SQL schema Simple Features
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
1/12
Prednaska 2
DE-9IM, funkce prostorove analyzyRozsıreny rozmerovy 9-ti prusecıkovy model, operace prekrytı,dalsı prostorove funkce
155UZPD Uvod do zpracovanı prostorovych dat, zimnı semestr 2019-2020
Martin [email protected]
Fakulta stavebnı CVUT v PrazeKatedra geomatiky
http://geo.fsv.cvut.cz/gwiki/155UZPD
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
2/12
Copyright c© 2009-2019 Martin Landa
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation Licence, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts.
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
3/12
Obsah prednasky
1 DE-9IMRozsıreny rozmerovy 9-ti prusecıkovy modelProstorove predikaty
2 Prostorova analyzaOperace prekrytıProstorove funkce
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
4/12
9-Intersection Matrix
Dimensionally Extended Nine-Intersection Model
Rozsıreny rozmerovy 9-ti prusecıkovy model• Objekt a ma tri casti:
1 vnitrnı I(a)2 hranici B(a) a3 vnejsı cast E(a)
• Dimenze objektu a: dim(a) (dimenze prazdneho objektudim(∅) = −1)
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a dim(l(a) ∩ l(b)) dim(l(a) ∩ B(b)) dim(l(a) ∩ E(b))Hranice a dim(B(a) ∩ l(b)) dim(B(a) ∩ B(b)) dim(B(a) ∩ E(b))Vnejsı cast a dim(E(a) ∩ l(b)) dim(E(a) ∩ B(b)) dim(E(a) ∩ E(b))
Prunikem dvou objektu (vnitrnı casti, hranice a vnejsı casti)vznika objekt x o dane dimenzi.
Napr. prunikem dvou polygonu muze vzniknout polygon(y)(dim(x) = 2), linie (dim(x) = 1), bod(y) (dim(x) = 0) a neboprazdny objekt (dim(x) = −1).
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
4/12
9-Intersection Matrix
Dimensionally Extended Nine-Intersection Model
Rozsıreny rozmerovy 9-ti prusecıkovy model• Objekt a ma tri casti:
1 vnitrnı I(a)2 hranici B(a) a3 vnejsı cast E(a)
• Dimenze objektu a: dim(a) (dimenze prazdneho objektudim(∅) = −1)
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a dim(l(a) ∩ l(b)) dim(l(a) ∩ B(b)) dim(l(a) ∩ E(b))Hranice a dim(B(a) ∩ l(b)) dim(B(a) ∩ B(b)) dim(B(a) ∩ E(b))Vnejsı cast a dim(E(a) ∩ l(b)) dim(E(a) ∩ B(b)) dim(E(a) ∩ E(b))
Prunikem dvou objektu (vnitrnı casti, hranice a vnejsı casti)vznika objekt x o dane dimenzi.
Napr. prunikem dvou polygonu muze vzniknout polygon(y)(dim(x) = 2), linie (dim(x) = 1), bod(y) (dim(x) = 0) a neboprazdny objekt (dim(x) = −1).
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
5/12
9-Intersection Matrix
Polygon / Linie / Bod
• Polygon h je definovan mnozinou vnitrnıch bodu I(h)a hranicı B(h) (dim(h) = 2)
• Linie l je definovana jako mnozina (vnitrnıch) bodu l(l),hranice je urcena pocatecnım a koncovym bodem linie(dim(l) = 1)
• Bod p je definovan jednım (vnitrnım) bodem I(p), hraniceje prazdna mnozina (dim(p) = 0)
Objekt Vnitrnı cast Hranice Vnejsı castPolygon h I(h) B(h) E(h)Linie l I(l) koncove body E(l)Bod p I(p) ∅ E(p)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
6/12
9-Intersection Matrix — Polygon × Polygon
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
6/12
9-Intersection Matrix — Polygon × Polygon
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a I(a)× l(b) I(a)× B(b) I(a)× E(b)Hranice a B(a)× l(b) B(a)× B(b) B(a)× E(b)Vnejsı cast a E(a)× l(b) E(a)× B(b) E(a)× E(b)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
6/12
9-Intersection Matrix — Polygon × Polygon
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a I(a)× l(b) I(a)× B(b) I(a)× E(b)Hranice a B(a)× l(b) B(a)× B(b) B(a)× E(b)Vnejsı cast a E(a)× l(b) E(a)× B(b) E(a)× E(b)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
6/12
9-Intersection Matrix — Polygon × Polygon
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a I(a)× l(b) I(a)× B(b) I(a)× E(b)Hranice a B(a)× l(b) B(a)× B(b) B(a)× E(b)Vnejsı cast a E(a)× l(b) E(a)× B(b) E(a)× E(b)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
6/12
9-Intersection Matrix — Polygon × Polygon
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a I(a)× l(b) I(a)× B(b) I(a)× E(b)Hranice a B(a)× l(b) B(a)× B(b) B(a)× E(b)Vnejsı cast a E(a)× l(b) E(a)× B(b) E(a)× E(b)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
6/12
9-Intersection Matrix — Polygon × Polygon
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a I(a)× l(b) I(a)× B(b) I(a)× E(b)Hranice a B(a)× l(b) B(a)× B(b) B(a)× E(b)Vnejsı cast a E(a)× l(b) E(a)× B(b) E(a)× E(b)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
6/12
9-Intersection Matrix — Polygon × Polygon
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a I(a)× l(b) I(a)× B(b) I(a)× E(b)Hranice a B(a)× l(b) B(a)× B(b) B(a)× E(b)Vnejsı cast a E(a)× l(b) E(a)× B(b) E(a)× E(b)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
6/12
9-Intersection Matrix — Polygon × Polygon
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a I(a)× l(b) I(a)× B(b) I(a)× E(b)Hranice a B(a)× l(b) B(a)× B(b) B(a)× E(b)Vnejsı cast a E(a)× l(b) E(a)× B(b) E(a)× E(b)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
6/12
9-Intersection Matrix — Polygon × Polygon
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a I(a)× l(b) I(a)× B(b) I(a)× E(b)Hranice a B(a)× l(b) B(a)× B(b) B(a)× E(b)Vnejsı cast a E(a)× l(b) E(a)× B(b) E(a)× E(b)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
6/12
9-Intersection Matrix — Polygon × Polygon
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a I(a)× l(b) I(a)× B(b) I(a)× E(b)Hranice a B(a)× l(b) B(a)× B(b) B(a)× E(b)Vnejsı cast a E(a)× l(b) E(a)× B(b) E(a)× E(b)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
7/12
9-Intersection Matrix
Prıklad vzorove matice
Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a T * THranice a * * *Vnejsı cast a T * *
kde:
T dimenze ruzna od -1 ⇒ dim(x) ∈ {0,1,2}, tj. x 6= ∅F dimenze -1 ⇒ dim(x) = −1, tj. x = ∅* jakakoliv dimenze ⇒ dim(x) = {−1,0,1,2}0 dimenze rovna nule ⇒ dim(x) = 01 dimenze rovna jedne ⇒ dim(x) = 12 dimenze rovna dvema ⇒ dim(x) = 2
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
8/12
Prıklad
Linie a × Linie b Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a 1 * 1Hranice a * * *Vnejsı cast a 1 * *
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
8/12
Prıklad
Polygon a × Linie b Vnitrnı cast b Hranice b Vnejsı cast bVnitrnı cast a 1 0 2Hranice a * 0 1Vnejsı cast a F F 2
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
9/12
Prostorove vztahy
• Zalozeny na binarnıch prostorovych predikatech(prostorovy vztah mezi dvema objekty)
• Soucast modelu DE-9IM (”named spatial relationships”)
Pojmenovane prostorove vztahy
1 Equals2 Disjoint3 Intersects4 Touches5 Crosses6 Within7 Contains8 Overlaps
http://edndoc.esri.com/arcsde/9.0/general_topics/understand_spatial_relations.htm
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
9/12
Prostorove vztahy
Equals(Topologicky uzavrene) objekty a a b jsou “prostorove shodne” jestlize platı
a ⊆ b ∧ b ⊆ a
V terminologii DE-9IM:
TFFFTFFFT ⇔ (I(a) ∩ I(b) 6= ∅) ∧(I(a) ∩ B(b) = ∅) ∧(I(a) ∩ E(b) = ∅) ∧(B(a) ∩ I(b) = ∅) ∧(B(a) ∩ B(b) 6= ∅) ∧(B(a) ∩ E(b) = ∅) ∧(E(a) ∩ I(b) = ∅) ∧(E(a) ∩ B(b) = ∅) ∧(E(a) ∩ E(b) 6= ∅)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
9/12
Prostorove vztahy
Disjoint
(Topologicky uzavrene) objekty a a b jsou “prostorove ruzne”jestlize platı
a ∩ b = ∅
V terminologii DE-9IM:
FF ∗ FF ∗ ∗ ∗ ∗ ⇔ (I(a) ∩ I(b) = ∅) ∧(I(a) ∩ B(b) = ∅) ∧(B(a) ∩ I(b) = ∅) ∧(B(a) ∩ B(b) = ∅) ∧
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
9/12
Prostorove vztahy
Intersects
Objekt a “prostorove protına” objekt b jestlize platı
a.Intersects(b)⇔ !a.Disjoint(b)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
9/12
Prostorove vztahy
Touches
(Topologicky uzavrene) objekty a a b jsou “prostorove dotykajı”jestlize platı
(I(a) ∩ I(b) = ∅) ∧ (a ∩ b 6= ∅)
Poznamka: vztah nenı definovan pro Bod/Bod.
V terminologii DE-9IM:
FT ∗ ∗ ∗ ∗ ∗ ∗∗ ∨ ⇔ (I(a) ∩ I(b) = ∅) ∧F ∗ ∗T ∗ ∗ ∗ ∗∗ ∨ [(B(a) ∩ I(b) 6= ∅) ∨F ∗ ∗ ∗ T ∗ ∗ ∗ ∗ (I(a) ∩ B(b) 6= ∅) ∨
(B(a) ∩ B(b) 6= ∅)]
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
9/12
Prostorove vztahy
CrossesProstorovy vztah “krızenı” je definovan pro Bod/Linie, Bod/Plocha, Linie/Liniea Linie/Plocha jestlize platı
dim(I(a) ∩ I(b)) < max(dim(I(a)), dim(I(b)))∧(a ∩ b 6= a) ∧ (a ∩ b 6= b)
V terminologii DE-9IM:
Pro Bod/Linie, Bod/Plocha a Linie/Plocha:
T ∗ T ∗ ∗ ∗ ∗ ∗ ∗ ⇔ I(a) ∩ I(b) 6= ∅ ∧I(a) ∩ E(b) 6= ∅
Pro Linie/Linie:0 ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ⇔ dim(I(a) ∩ I(b)) = 0
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
9/12
Prostorove vztahy
Within
Prostorovy vztah “uvnitr” je definovan jako
(a ∩ b = a) ∧ (I(a) ∩ E(b) = ∅)
V terminologii DE-9IM:
T ∗ F ∗ ∗F ∗ ∗∗ ⇔ I(a) ∩ I(b) 6= ∅ ∧I(a) ∩ E(b) = ∅ ∧B(a) ∩ E(b) = ∅
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
9/12
Prostorove vztahy
Contains
Objekt a obsahuje objekt b jestlize platı
a.Contains(b)⇔ b.Within(a)
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
9/12
Prostorove vztahy
OverlapsProstorovy vztah “prekrytı” je definovan pro Plocha/Plocha, Linie/Linie a Bod/Bod.
dim(I(a)) = dim(I(b)) = dim(I(a) ∩ I(b))∧(a ∩ b 6= a) ∧ (a ∩ b 6= b)
V terminologii DE-9IM: Pro Bod/Bod a Plocha/Plocha:
T ∗ T ∗ ∗ ∗ T ∗ ∗ ⇔ I(a) ∩ I(b) 6= ∅ ∧I(a) ∩ E(b) 6= ∅ ∧E(a) ∩ I(b) 6= ∅
Pro Linie/Linie:
1 ∗ T ∗ ∗ ∗ T ∗ ∗ ⇔ dim((I(a) ∩ I(b)) = 1 ∧I(a) ∩ E(b) 6= ∅ ∧E(a) ∩ I(b) 6= ∅
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
10/12
Obsah prednasky
1 DE-9IMRozsıreny rozmerovy 9-ti prusecıkovy modelProstorove predikaty
2 Prostorova analyzaOperace prekrytıProstorove funkce
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
11/12
Prostorova analyza
Operace prekrytı
1 Intersection()Vracı objekt reprezentujıcı prunik objektu a, b
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
11/12
Prostorova analyza
Operace prekrytı
2 Union()Vracı objekt, ktery vznikne spojenım objektu a, b
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
11/12
Prostorova analyza
Operace prekrytı
3 Difference()Vracı cast objektu a, ktera se neprekryva s objektem b
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
11/12
Prostorova analyza
Operace prekrytı
4 SymDifference()Vracı cast objektu a a b, ktere nejsou soucastı jejichpruniku
DE-9IM, funkceprostorove analyzy
DE-9IMRozsıreny rozmerovy 9-tiprusecıkovy model
Prostorove predikaty
Prostorova analyzaOperace prekrytı
Prostorove funkce
12/12
Prostorova analyza
Prostorove funkce
• Distance()Vracı nejkratsı vzdalenost mezi dvema body danychobjektu
• Buffer()Vracı obalovou zonu objektu
• ConvexHull()Vracı konvexnı obalku objektu
• . . .
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
1/27
Prednaska 3
PostGISUvod do geodatabaze PostGIS
155UZPD Uvod do zpracovanı prostorovych dat, zimnı semestr 2019-2020
Martin [email protected]
Fakulta stavebnı CVUT v PrazeKatedra geomatiky
http://geo.fsv.cvut.cz/gwiki/155UZPD
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
2/27
Copyright c© 2009-2019 Martin Landa
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation Licence, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts.
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
3/27
Obsah prednasky
1 UvodPodpurne knihovnyArchitekturaHistorie, podpora
2 Open Simple Features for SQL
3 Geometricke objektyFormy zapisuKonstruktory
4 Prostorovy indexOptimalizace
5 Prostorove operatory
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
4/27
PostGIS — ”PostgreSQL Spatial“
http://www.postgis.net
PostGIS
• Puvodne vyvıjen firmou Refractions Research Inc.• Pozdeji jako komunitnı open source projekt pod hlavickou
OSGeo• Programovacı jazyk C & PL/pgSQL, licence GNU GPL• Rozsırenı pro objektove-relacnı databazovy system
PostgreSQL umoznujıcı ulozenı a spravuprostorovych/geografickych objektu• Nastroje pro analyzu, zpracovanı a spravu geografickych
dat
http://freegis.fsv.cvut.cz/gwiki/PostGIS
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
5/27
Zakladnı charakteristika
PostGIS rozsiruje PostgreSQL
1 Vedle standardnıch datovych typu jako je napr. integer,varchar ci date definuje datovy typ
”geometrie“ (Geometry) a dalsı odvozene datove typyjako je napr. ”bod“ (Point), ”lomena cara“ (LineString),
”polygon“ (Polygon) a pod.2 Implementuje funkce operujıcı nad datovym typem
”geometrie“, napr. urcenı vzdalenosti, delka lomene cary civymera plochy.
3 Implementuje indexovanı geografickych dat urychlujıcıprostorove dotazy, napr. ”najdi vsechny body uvnitrdaneho polygonu“.
viz specifikace OGC Simple Features — prvnı prednaska
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
5/27
Zakladnı charakteristika
PostGIS rozsiruje PostgreSQL
1 Vedle standardnıch datovych typu jako je napr. integer,varchar ci date definuje datovy typ
”geometrie“ (Geometry) a dalsı odvozene datove typyjako je napr. ”bod“ (Point), ”lomena cara“ (LineString),
”polygon“ (Polygon) a pod.2 Implementuje funkce operujıcı nad datovym typem
”geometrie“, napr. urcenı vzdalenosti, delka lomene cary civymera plochy.
3 Implementuje indexovanı geografickych dat urychlujıcıprostorove dotazy, napr. ”najdi vsechny body uvnitrdaneho polygonu“.
viz specifikace OGC Simple Features — prvnı prednaska
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
5/27
Zakladnı charakteristika
PostGIS rozsiruje PostgreSQL
1 Vedle standardnıch datovych typu jako je napr. integer,varchar ci date definuje datovy typ
”geometrie“ (Geometry) a dalsı odvozene datove typyjako je napr. ”bod“ (Point), ”lomena cara“ (LineString),
”polygon“ (Polygon) a pod.2 Implementuje funkce operujıcı nad datovym typem
”geometrie“, napr. urcenı vzdalenosti, delka lomene cary civymera plochy.
3 Implementuje indexovanı geografickych dat urychlujıcıprostorove dotazy, napr. ”najdi vsechny body uvnitrdaneho polygonu“.
viz specifikace OGC Simple Features — prvnı prednaska
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
6/27
Podpurne knihovny – PROJ.4
https://proj4.org
PROJ.4
• Knihovna pro praci s kartografickymi zobrazenımi(podporovano vıce nez 120)
• Transformace mezi ruznymi souradnicovymi systemy• Vznik na pocatku 90-tych let Geraldem Evendenem pod
zastitou USGS, posleze vyvoj prevzat FrankemWarmerdamem a OSGeo
• Programovacı jazyk C• Do verze 4.3 jako “public domain”, posleze pod X/MIT
licencı• Knihovna pouzıvana v softwarech jako je GRASS GIS,
MapServer, PostGIS ci knihovna GDAL
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
7/27
Podpurne knihovny – GEOS
http://trac.osgeo.org/geos
Geometry Engine, Open Source
• C++ port knihovny Java Topology Suite• Implementuje specifikaci OpenGIS Simple Features• Knihovna pouzıvana v dalsıch projektech jako je knihovna
GDAL, geodatabaze PostGIS ci desktopovy GRASS GIS• Funkce pro urcenı prostorovych vztahu
• touches(), contains(), within() atd.• Funkce pro prostorove analyzy
• buffer(), convexHull(), union(), difference(),atd.
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
8/27
Architektura server-klient
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
8/27
Architektura server-klient
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
9/27
Historie projektu PostGIS2001 Prvnı stabilnı verze (0.1), podpora pro
MapServer (0.5)2002 Prostorove indexovanı dat,
podpora pro kartograficka zobrazenı (0.7)2003 Podpora pro knihovnu GEOS (0.8)2004 OpenGIS Simple Features, Lightweight
geometry (0.9)2005 Verze 1.02006 Verze 1.1, vylepsenı vykonu2007 Podpora SQL/MM, krivky (1.2), prefix ST (1.3)2008 Verze 1.42009 Prepared geometry (GEOS 3.1)2010 Verze 1.52011 Zaclenenı nadstavby Raster a Topology do
oficialnı distribuce2012 Verze 2.0, podpora pro rastrova a vektorova data
v topologickem formatu
http://www.refractions.net/products/postgis/history/
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
10/27
Podpora PostGIS v ostatnıch projektech• MapServer, http://mapserver.org• GeoTools
• GeoServer, http://geoserver.org• UDig, http://udig.refractions.net
• FDO• MapGuide, http://mapguide.osgeo.org• Autodesk Map 3D, http://www.autodesk.com
• JUMP• OpenJUMP, http://openjump.org• Kosmo, http://www.opengis.es
• GDAL, http://gdal.org• QGIS, http://qgis.org• GRASS GIS, http://grass.osgeo.org
• FME• ArcGIS Data Interoperability Extension,http://www.esri.com/datainteroperability
• zigGIS, https://code.google.com/p/ziggis/• ESRI ArcGIS 9.3+,http://www.esri.com/software/arcgis
• . . .
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
11/27
Obsah prednasky
1 UvodPodpurne knihovnyArchitekturaHistorie, podpora
2 Open Simple Features for SQL
3 Geometricke objektyFormy zapisuKonstruktory
4 Prostorovy indexOptimalizace
5 Prostorove operatory
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
12/27
OGC Simple Features for SQL
”OGC Simple Features for SQL“ definuje
1 Typy geoprvku2 Funkce pro analyzu a manipulaci s geoprvky3 Metadatove tabulky
1 SPATIAL REF SYS2 GEOMETRY COLUMNS
Tabulka SPATIAL REF SYS
• srid – jednoznacny identifikator SRS (Spatial ReferenceSystem)
• auth name – nazev organizace (napr. “EPSG”)• auth srid – identifikator v ramci uvedene organizace
(napr. kod EPSG)• srtext – definice SRS ve forme Well-Known Text (viz
OGC Coordinate Transformation Services ImplementationSpecification)
• proj4text – definice SRS v zapisu pro knihovnu PROJ.4
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
12/27
OGC Simple Features for SQL
”OGC Simple Features for SQL“ definuje
1 Typy geoprvku2 Funkce pro analyzu a manipulaci s geoprvky3 Metadatove tabulky
1 SPATIAL REF SYS2 GEOMETRY COLUMNS
Tabulka SPATIAL REF SYS
• srid – jednoznacny identifikator SRS (Spatial ReferenceSystem)
• auth name – nazev organizace (napr. “EPSG”)• auth srid – identifikator v ramci uvedene organizace
(napr. kod EPSG)• srtext – definice SRS ve forme Well-Known Text (viz
OGC Coordinate Transformation Services ImplementationSpecification)
• proj4text – definice SRS v zapisu pro knihovnu PROJ.4
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
13/27
Tabulka SPATIAL REF SYS
Definice:
Column | Type | Modifiers-----------+-------------------------+-----------srid | integer | not nullauth_name | character varying(256) |auth_srid | integer |srtext | character varying(2048) |proj4text | character varying(2048) |
Prıklad: (EPSG 4326)1 srid | 43262 auth_name | EPSG3 auth_srid | 43264 srtext | GEOGCS["WGS 84",DATUM["WGS_1984",5 SPHEROID["WGS 84",6378137,298.257223563,6 AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],7 AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,8 AUTHORITY["EPSG","8901"]],9 UNIT["degree",0.01745329251994328,
10 AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]11 proj4text | +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
14/27
OGC Simple Features for SQL
”OGC Simple Features for SQL“ definuje
1 Typy geoprostorovych objektu2 Funkce pro manipulaci s objekty3 Metadatove tabulky
1 SPATIAL REF SYS2 GEOMETRY COLUMNS
Tabulka GEOMETRY COLUMNS
• f table catalog, f table schema, f table name –nazev katalogu (nazev databaze, pojem prevzat z Oracle),databazoveho schematu a tabulky
• f geometry column – nazev sloupce s geometriı• coord dimension – dimenze souradnic (2D, 3D, 4D)• srid – identifikator SRS pro danou tabulku (cizı klıc
tabulky SPATIAL REF SYS)• type – typ geoprvku (bod, lomena cara, polygon, . . . )
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
14/27
OGC Simple Features for SQL
”OGC Simple Features for SQL“ definuje
1 Typy geoprostorovych objektu2 Funkce pro manipulaci s objekty3 Metadatove tabulky
1 SPATIAL REF SYS2 GEOMETRY COLUMNS
Tabulka GEOMETRY COLUMNS
• f table catalog, f table schema, f table name –nazev katalogu (nazev databaze, pojem prevzat z Oracle),databazoveho schematu a tabulky
• f geometry column – nazev sloupce s geometriı• coord dimension – dimenze souradnic (2D, 3D, 4D)• srid – identifikator SRS pro danou tabulku (cizı klıc
tabulky SPATIAL REF SYS)• type – typ geoprvku (bod, lomena cara, polygon, . . . )
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
15/27
Tabulka GEOMETRY COLUMNS
Definice:
Column | Type | Modifiers-------------------+------------------------+-----------f_table_catalog | character varying(256) | not nullf_table_schema | character varying(256) | not nullf_table_name | character varying(256) | not nullf_geometry_column | character varying(256) | not nullcoord_dimension | integer | not nullsrid | integer | not nulltype | character varying(30) | not null
Prıklad:1 f_table_catalog | pgis_student2 f_table_schema | ruian3 f_table_name | obce4 f_geometry_column | geom5 coord_dimension | 26 srid | 55147 type | MULTIPOLYGON
Poznamka: Od verze PostGIS 2.0 je definovanGEOMETRY COLUMNS jako pohled
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
16/27
Obsah prednasky
1 UvodPodpurne knihovnyArchitekturaHistorie, podpora
2 Open Simple Features for SQL
3 Geometricke objektyFormy zapisuKonstruktory
4 Prostorovy indexOptimalizace
5 Prostorove operatory
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
17/27
Geometricke objekty
OGC Simple Features
• Od verze 0.9 PostGIS podporuje vsechny prvky a objektydefinovane specifikacı OpenGIS Simple Features for SQL• POINT, MULTIPOINT• LINE, MULTILINE• POLYGON, MULTIPOLYGON• GEOMETRYCOLLECTIONS
• PostGIS umoznuje ulozenı 3D/4D geoprvku• 3DZ (vyska), 3DM (merenı)• 4D (ZM)
Rozsırenı
1 SQL-MM (interpolovane krivky)• CIRCULARSTRING• COMPOUNDCURVE• CURVEPOLYGON• MULTICURVE, MULTISURFACE
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
17/27
Geometricke objekty
OGC Simple Features
• Od verze 0.9 PostGIS podporuje vsechny prvky a objektydefinovane specifikacı OpenGIS Simple Features for SQL• POINT, MULTIPOINT• LINE, MULTILINE• POLYGON, MULTIPOLYGON• GEOMETRYCOLLECTIONS
• PostGIS umoznuje ulozenı 3D/4D geoprvku• 3DZ (vyska), 3DM (merenı)• 4D (ZM)
Rozsırenı
1 SQL-MM (interpolovane krivky)• CIRCULARSTRING• COMPOUNDCURVE• CURVEPOLYGON• MULTICURVE, MULTISURFACE
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
17/27
Geometricke objekty
OGC Simple Features
• Od verze 0.9 PostGIS podporuje vsechny prvky a objektydefinovane specifikacı OpenGIS Simple Features for SQL• POINT, MULTIPOINT• LINE, MULTILINE• POLYGON, MULTIPOLYGON• GEOMETRYCOLLECTIONS
• PostGIS umoznuje ulozenı 3D/4D geoprvku• 3DZ (vyska), 3DM (merenı)• 4D (ZM)
Rozsırenı
1 SQL-MM (interpolovane krivky)• CIRCULARSTRING• COMPOUNDCURVE• CURVEPOLYGON• MULTICURVE, MULTISURFACE
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
18/27
Definice geometrickych objektu dle OGC
Definice
• Typu objektu (bod, lomena cara, . . . )• Souradnice lomovych bodu objektu
Rozhranı
1 OGC Well-Known Text (WKT)2 OGC Well-Known Binary (WKB)
Konstruktory:• Geometrie
• ST GeomFromWKB(bytea, SRID)→ geometrie• ST GeomFromText(text, SRID)→ geometrie
• WKT/WKB• ST AsBinary(geometrie)→WKB• ST AsText(geometrie)→WKT
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
18/27
Definice geometrickych objektu dle OGC
Definice
• Typu objektu (bod, lomena cara, . . . )• Souradnice lomovych bodu objektu
Rozhranı
1 OGC Well-Known Text (WKT)2 OGC Well-Known Binary (WKB)
Konstruktory:• Geometrie
• ST GeomFromWKB(bytea, SRID)→ geometrie• ST GeomFromText(text, SRID)→ geometrie
• WKT/WKB• ST AsBinary(geometrie)→WKB• ST AsText(geometrie)→WKT
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
19/27
Rozsırena definice geometrickych objektu PostGIS
Definice
• Rozsırenı pro 3D/4D objekty (3DZ, 3DM, 4D)• Vestavena informace o referencnım souradnicovem
systemu
Rozhranı
1 Extended Well-Known Text (EWKT)2 Extended Well-Known Binary (EWKB)
Konstruktory:• Geometrie
• ST GeomFromEWKB(bytea)→ geometrie• ST GeomFromEWKT(text)→ geometrie
• EWKT/EWKB• ST AsEWKB(geometry)→ EWKB• ST AsEWKT(geometry)→ EWKT
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
19/27
Rozsırena definice geometrickych objektu PostGIS
Definice
• Rozsırenı pro 3D/4D objekty (3DZ, 3DM, 4D)• Vestavena informace o referencnım souradnicovem
systemu
Rozhranı
1 Extended Well-Known Text (EWKT)2 Extended Well-Known Binary (EWKB)
Konstruktory:• Geometrie
• ST GeomFromEWKB(bytea)→ geometrie• ST GeomFromEWKT(text)→ geometrie
• EWKT/EWKB• ST AsEWKB(geometry)→ EWKB• ST AsEWKT(geometry)→ EWKT
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
20/27
Geometricke konstruktory
• ST GeomFromWKB(bytea, SRID)
• ST GeomFromText(text, SRID)
• ST MakePoint()
• ST MakeLine()
• ST MakePolygon()
• ST MakeBox2D()
• ST MakeBox3D()
• ST LineFromMultiPoint()
• ST Polygon()
• ST Boundary()
• ST BuildArea()
• . . .
http://postgis.net/docs/manual-2.4/reference.html#Geometry_Constructors
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
21/27
Geometricke konstruktory
1 Bod bez udanı souradnicoveho systemu(ruzne zpusoby, stejny vysledek)
SELECT ST_GeomFromText(’POINT(-686651 -1058147)’);SELECT ’POINT(-686651 -1058147)’::geometry;SELECT ST_Point(-686651, -1058147);
2 Bod v systemu S-JTSK EPSG:5514(ruzne zpusoby, stejny vysledek)
SELECT ST_GeomFromText(’POINT(-686651 -1058147)’,5514);
SELECT ST_GeomFromEWKT(’SRID=5514;POINT(-686651 -1058147)’);
SELECT ’SRID=5514;POINT(-686651 -1058147)’::geometry;SELECT ST_SetSRID(ST_Point(-686651, -1058147),
5514);
3 Vytvorenı lomene cary z bodovych dat (GPS waypoints)
SELECT ST_MakeLine(gps_points.geom) FROM(SELECT geom FROM waypoints ORDER BY name)
AS gps_points;
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
22/27
Obsah prednasky
1 UvodPodpurne knihovnyArchitekturaHistorie, podpora
2 Open Simple Features for SQL
3 Geometricke objektyFormy zapisuKonstruktory
4 Prostorovy indexOptimalizace
5 Prostorove operatory
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
23/27
Prostorovy index
PostgreSQL podporuje
• B-Tree – indexovanı dat podle jedne osy→ nepouzitelne pro prostorova data
• R-Tree – vhodne pro indexovanı multidimenzionalnıch dat,jednotkou minimalnı ohranicujıcı obdelnık
• GiST (Generalized Search Tree)
PostGIS
• PostGIS od verze 0.6 pouzıva GiST (schema“R-tree-over-GiST”)
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
23/27
Prostorovy index
PostgreSQL podporuje
• B-Tree – indexovanı dat podle jedne osy→ nepouzitelne pro prostorova data
• R-Tree – vhodne pro indexovanı multidimenzionalnıch dat,jednotkou minimalnı ohranicujıcı obdelnık
• GiST (Generalized Search Tree)
PostGIS
• PostGIS od verze 0.6 pouzıva GiST (schema“R-tree-over-GiST”)
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
24/27
Vytvorenı prostoroveho indexu
CREATE INDEX ON <tabulka> USING GIST (<geometrie>);
• Prostorovy index je pouzit pouze pro porovnanıminimalnıch ohranicujıcıch obdelnıku geoprvku
→ Proto se uplatnuje dvojity prostorovy dotaz:1 V prvnı fazi se vyhledajı vsechny objekty na zaklade jejich
minimalnıho ohranicujıcıho obdelnıku (MMO) – viz operatorprekrytı “&&”Poznamka: Funkce jako ST Intersect() ciST Contains() tento operator pouzıvajı automaticky,narozdıl od ST Intersect() ci ST Contains(), ktereindex nepouzıvajı
2 V druhe fazi se provede presnejsı dotazovanı pouze napodmnozine objektu vybranych v prvnı fazi
Prıklad:
SELECT COUNT(DISTINCT obce.kod) FROM ruian.obce AS obceJOIN zeleznice AS zelez ONST_Intersects(zelez.geom, obce.geom);
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
24/27
Vytvorenı prostoroveho indexu
CREATE INDEX ON <tabulka> USING GIST (<geometrie>);
• Prostorovy index je pouzit pouze pro porovnanıminimalnıch ohranicujıcıch obdelnıku geoprvku
→ Proto se uplatnuje dvojity prostorovy dotaz:1 V prvnı fazi se vyhledajı vsechny objekty na zaklade jejich
minimalnıho ohranicujıcıho obdelnıku (MMO) – viz operatorprekrytı “&&”Poznamka: Funkce jako ST Intersect() ciST Contains() tento operator pouzıvajı automaticky,narozdıl od ST Intersect() ci ST Contains(), ktereindex nepouzıvajı
2 V druhe fazi se provede presnejsı dotazovanı pouze napodmnozine objektu vybranych v prvnı fazi
Prıklad:
SELECT COUNT(DISTINCT obce.kod) FROM ruian.obce AS obceJOIN zeleznice AS zelez ONST_Intersects(zelez.geom, obce.geom);
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
25/27
Optimalizace dotazu
SELECT COUNT(DISTINCT obce.kod) FROM ruain.obce AS obceJOIN zeleznice AS zelez ONST_Intersects(zelez.geom, obce.geom);
1 S vyuzitım prostoroveho indexu (ST Intersects)1 Aggregate (cost=5446.36..5446.37 rows=1 width=8)2 -> Nested Loop (cost=0.00..5434.30 rows=4822 width=8)3 Join Filter: _st_intersects("outer".geom, "inner".geom)4 -> Seq Scan on zelez (cost=0.00..76.89 rows=889 width=546)5 -> Index Scan using obce_geom_gist on obce (cost=0.00..6.016 rows=1 width=636)7 Index Cond: ("outer".geom && obce.geom)
→ 4,032s
2 Bez vyuzitı prostoroveho indexu ( ST Intersects)1 Aggregate (cost=133012.73..133012.74 rows=1 width=8)2 -> Nested Loop (cost=77.78..128300.29 rows=1884976 width=8)3 Join Filter: _st_intersects("inner".geom, "outer".geom)4 -> Seq Scan on obce (cost=0.00..986.61 rows=6361 width=636)5 -> Materialize (cost=77.78..86.67 rows=889 width=546)6 -> Seq Scan on zelez (cost=0.00..76.89 rows=889 width=546)
→ 20,114s
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
26/27
Obsah prednasky
1 UvodPodpurne knihovnyArchitekturaHistorie, podpora
2 Open Simple Features for SQL
3 Geometricke objektyFormy zapisuKonstruktory
4 Prostorovy indexOptimalizace
5 Prostorove operatory
PostGIS
UvodPodpurne knihovny
Architektura
Historie, podpora
Open Simple Featuresfor SQL
Geometricke objektyFormy zapisu
Konstruktory
Prostorovy indexOptimalizace
Prostorove operatory
27/27
Prostorove BBox (MOO) operatory
A, B . . . minimalnı ohranicujıcı obdelnık prvkuA & < B A prekryva nebo lezı vlevo od BA & > B A prekryva nebo lezı vpravo od BA << B A lezı vlevo od BA >> B A lezı vpravo od B
A & < | B A prekryva nebo lezı pod BA |& > B A prekryva nebo lezı nad BA << | B A lezı pod BA | >> B A lezı nad B
A = B A je totozne s BA @ B A lezı uvnitr BA ˜B A obsahuje B
A && B A a B se prekryvajıA ˜= B A jsou totozne B (geometricky)
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
1/28
Prednaska 4
PostGISUvod do prostoroveho SQL
155UZPD Uvod do zpracovanı prostorovych dat, zimnı semestr 2019-2020
Martin [email protected]
Fakulta stavebnı CVUT v PrazeKatedra geomatiky
http://geo.fsv.cvut.cz/gwiki/155UZPD
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
2/28
Copyright c© 2009-2019 Martin Landa
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation Licence, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts.
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
3/28
Obsah prednasky
1 Prostorove dotazy (DML)Prostorove operatoryProstorove funkceProstorove predikaty
2 Vytvorenı databaze, tabulek (DDL)
3 Datova integrita
4 Import/export dat
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
4/28
Ukazky prostorovych dotazu | Prostorove operatory
Vyhledanı prvku v okolı daneho bodu.
SELECT osm_id, st_astext(geom)FROM pozarni_staniceWHERE geom @ st_expand(st_geomfromtext(’POINT(-768581 -1063422)’, 5514),20000);
×SELECT osm_id, st_astext(geom)FROM pozarni_staniceWHERE geom <#>’SRID=5514;POINT(-768581 -1063422)’::geometry < 20000;
viz. prostorove operatory
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
5/28
Ukazky prostorovych dotazu | Prostorove operatory
Vyhledanı prvku lezıcıch kompletne/castecne uvnitr MOO.
SELECT count(*)FROM silnice AS sJOIN(SELECT geomFROM vuscWHERE nutslau = ’CZ042’) AS uON s.geom @ u.geom;
×SELECT count(*)FROM silnice AS sJOIN(SELECT geomFROM vuscWHERE nutslau = ’CZ042’) AS uON s.geom && u.geom;
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
6/28
Ukazky prostorovych dotazu | Prostorove funkce
Vyhledanı nejjizneji polozeneho zajmoveho bodu.
SELECT osm_id, st_y(geom) AS yFROM pozarni_staniceORDER BY y ASCLIMIT 1;
Plosny prvek s vnitrnı hranicı.
SELECT nazev, st_area(geom)/1e6 AS area_kmFROM vuscWHERE st_nrings(geom) > 1ORDER BY area_km DESC LIMIT 1;
Centroid (referencnı bod) plosneho prvku.
SELECT nazev, st_astext(st_pointonsurface(geom))FROM vusc;
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
7/28
Ukazky prostorovych dotazu | Prostorove funkce
Urcenı vymery plosneho prvku.
SELECT nazev, round(st_area(geom)/1e6) AS area_kmFROM vusc;
Serazenı plosnych prvku podle vymery.
SELECT nazev, st_area(geom) AS plochaFROM vuscORDER BY plocha DESC;
Celkova delka liniovych prvku.
SELECT (sum(st_length(geom))/1000)::int AS dalnice_kmFROM silniceWHERE typ = 1;
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
8/28
Ukazky prostorovych dotazu | Prostorove funkce
Vypsat plosnou zakulacenost prvku (pomer kvadratu obvoduvuci plose).
SELECT nazev, (st_perimeter(geom) * st_perimeter(geom))/ st_area(geom) AS hodnota
FROM kraje;
Najıt zajmove body, ktere se nachazejı do vzdalenosti odplosneho prvku.
SELECT osm_id FROM pozarni_stanice as pJOIN(SELECT geomFROM obceWHERE nazev = ’Kladno’) AS kON st_distance(p.geom, k.geom) < 10000;
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
9/28
Ukazky prostorovych dotazu | Prostorove funkceVybrat zajmove body, ktere se nachazejı ve vzdalenosti odnejdelsıho useku linioveho prvku.SELECT osm_id, st_astext(geom)FROM pozarni_staniceWHERE st_distance((SELECT geomFROM silniceWHERE typ = 1ORDER BY st_length(geom) DESCLIMIT 1), geom) < 10000;
×WITH s AS (SELECT geomFROM silniceWHERE typ = 1ORDER BY st_length(geom) DESCLIMIT 1)SELECT osm_id, st_astext(p.geom)FROM pozarni_stanice as pJOIN sON st_distance(s.geom, p.geom) < 10000;
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
10/28
Ukazky prostorovych dotazu | Prostorove funkce
Urcit vzdalenost mezi zajmovymi bodovymi prvky.
SELECT (st_distance((SELECT geomFROM pozarni_staniceORDER BY st_x(geom) DESCLIMIT 1),(SELECT geomFROM pozarni_staniceORDER BY st_x(geom) ASCLIMIT 1))/1e3)::int as vzdalenost_km;
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
11/28
Ukazky prostorovych dotazu | Prostorove predikaty
Vypsanı sumarnıch udaju.
SELECT k.kod, k.nazev,SUM(st_length(z.geom))/1000 AS zel_kmFROM zeleznice AS zJOIN vusc AS kON st_contains(k.geom, z.geom)GROUP BY k.kod, k.nazevORDER BY zel_km;
×SELECT k.kod, k.nazev,SUM(st_length(z.geom))/1000 AS zel_kmFROM zeleznice AS zJOIN vusc AS kON st_intersects(z.geom, k.geom)GROUP BY k.kod, k.nazevORDER BY zel_km;
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
12/28
Ukazky prostorovych dotazu | Prostorove predikatyNajıt liniove prvky, ktere lezı do vzdalenosti od zajmovychbodovych prvku.SELECT count(DISTINCT s.ogc_fid)FROM silnice AS sJOIN pozarni_stanice AS pON st_dwithin(s.geom, p.geom, 300);
×SELECT count(DISTINCT s.ogc_fid)FROM silnice AS sJOIN pozarni_stanice AS pON p.geom && st_expand(s.geom, 300)AND p.geom <-> s.geom < 300;
×WITH pb AS (SELECT st_buffer(geom, 300, 42) as geomFROM pozarni_stanice)SELECT count(DISTINCT s.ogc_fid)FROM silnice AS sJOIN pbON st_intersects(s.geom, pb.geom);
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
13/28
Ukazky prostorovych dotazu | Prostorove predikaty
Vytvorit liniove prvky, ktere lezı do vzdalenosti od zajmovychbodovych prvku.
WITH pb AS (SELECT st_buffer(geom, 300) as geomFROM pozarni_stanice)SELECT DISTINCT s.ogc_fid,st_intersection(s.geom, pb.geom) as geomFROM silnice AS sJOIN pbON st_intersects(s.geom, pb.geom);
×WITH pb AS (SELECT st_buffer(geom, 300, 42) as geomFROM pozarni_stanice)SELECT DISTINCT s.ogc_fid,st_intersection(s.geom, pb.geom) as geomFROM silnice AS sJOIN pbON st_intersects(s.geom, pb.geom);
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
14/28
Obsah prednasky
1 Prostorove dotazy (DML)Prostorove operatoryProstorove funkceProstorove predikaty
2 Vytvorenı databaze, tabulek (DDL)
3 Datova integrita
4 Import/export dat
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
15/28
Vytvorenı databaze
1 Vytvorenı databaze
createdb <databaze>
2 Nahranı rozsırenı PostGIS (definice datovych typu, funkcı,tabulky geometry columns, spatial ref sys, . . . )
psql -d <databaze> -c "CREATE EXTENSION postgis"
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
16/28
Vytvorenı tabulky a vlozenı zaznamu
Vytvorenı tabulky (id, popisna data, geometrie):
CREATE TABLE poi (cat serial, nazev varchar(100),geom geometry(point, 5514));
Vlozenı POI:
INSERT INTO poi (nazev, geom) VALUES (’FSv CVUT v Praze’,st_transform(’SRID=4326;POINT (50.104021414.3880675)’::geometry, 5514));
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
17/28
Vytvorenı tabulky a vlozenı zaznamu
Overenı:
SELECT * FROM geometry_columns WHERE f_table_name=’poi’;
1 f_table_catalog | pgis_student2 f_table_schema | public3 f_table_name | poi4 f_geometry_column | geom5 coord_dimension | 26 srid | 55147 type | POINT
\d poi
1 Table "public.poi"2 Column | Type | Modifiers3 --------+------------------------+---------------------------------4 fid | integer | not null default nextval(5 ’poi_cat_seq’::regclass)6 nazev | character varying(100) |7 geom | geometry(Point,5514) |
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
18/28
Vytvorenı tabulky z existujıcı geodatVytvorenı nove tabulky (PostGIS vrstvy) jako vysledek dotazu:CREATE TABLE okresy ASSELECT okreskod, st_union(geom) AS geom FROM ruian.obceGROUP BY okreskod;
Pridanı primarnıho klıce:ALTER TABLE okresy ADD COLUMN gid serial;ALTER TABLE okresy ADD PRIMARY KEY (gid);
Sestavenı prostoroveho indexu:CREATE INDEX ON okresy USING gist (geom);
Alternativnı postup:CREATE TABLE okresy1 (gid serial PRIMARY KEY, okreskod int,geom geometry(multipolygon, 5514));
INSERT INTO okresy1 (okreskod, geom)SELECT okreskod, st_multi(st_union(geom)) AS geomFROM ruian.obce GROUP BY okreskod;
CREATE INDEX ON okresy1 USING gist (geom);
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
19/28
Odstranenı atributu geometrie/tabulky
Odstranenı atributu geometrie:
SELECT DropGeometryColumn(’obce’, ’geom’);
nebo (pro PostGIS 2 a vyssı)
ALTER TABLE obce DROP COLUMN geom;
Odstranenı tabulky (vcetne atributu geometrie):
SELECT DropGeometryTable(’obce’);
nebo (pro PostGIS 2 a vyssı)
DROP TABLE obce;
V obou prıpadech jsou odstraneny prıslusne zaznamyz tabulky geometry columns.
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
20/28
Obsah prednasky
1 Prostorove dotazy (DML)Prostorove operatoryProstorove funkceProstorove predikaty
2 Vytvorenı databaze, tabulek (DDL)
3 Datova integrita
4 Import/export dat
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
21/28
Datova integrita
Funkce PostGIS vyzadujı, aby geometrie ulozenych geoprvkusplnovala specifikaci OpenGIS Simple Features (SF).Pro testovanı integrity (“well-formed”) dat slouzı funkceST IsValid().
Prıklad:• Validnı prvek:
SELECT ST_IsValid(’LINESTRING(0 0, 1 1)’);
• Invalidnı prvek:
SELECT ST_IsValid(’LINESTRING(0 0, 0 0)’);
SELECT ST_IsValidReason(’LINESTRING(0 0, 0 0)’);
1 st_isvalidreason2 -------------------------------------------3 Too few points in geometry component[0 0]4 (1 row)
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
22/28
Datova integrita
• Funkce ST IsSimple() testuje, zda prvek splnujepodmınky “jednoduchosti” (napr. krızenı linie).
SELECT ST_IsSimple(’LINESTRING(0 0, 1 1, 1 0, 0 1)’);
• Funkce ST IsClosed() vracı hodnotu TRUE, pokud jelinie uzavrena.
SELECT ST_IsClosed(’LINESTRING(0 0, 1 1, 1 0,0 1, 0 0)’);
• Funkce ST IsRing() testuje, zda je linie “jednoducha”a uzavrena (tj. ma spolecny pocatecnı a koncovy bod).
SELECT ST_IsRing(’LINESTRING(0 0, 1 0, 0 1, 0 0)’);
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
23/28
Prusecık liniı
• ST StartPoint()
• ST EndPoint()
• ST PointN()
SELECT ST_AsText(ST_StartPoint(geom)) FROM gis1.zeleznice;
Najdi prusecıky zeleznic, kde se protınajı presne ctyri linie.
SELECT ST_AsText(point) FROM(SELECT ST_StartPoint(geom) AS point FROM gis1.zelezniceUNION ALLSELECT ST_EndPoint(geom) AS point FROM gis1.zeleznice)
AS a GROUP BY point HAVING COUNT(*) = 4;
Upozornenı
GROUP BY pouzıva minimalnı ohranicujıcı obdelnık geoprvku
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
24/28
Prıklad konverze
Konverze multiprvku (multiparts) na prvek (singleparts).
CREATE TABLE obce_s ASSELECT kod, nazev, ST_GeometryN(geom,generate_series(1, ST_NumGeometries(geom))) AS geomFROM obce;
×CREATE TABLE obce_s1 ASSELECT kod, nazev, (ST_Dump(geom)).geom as geomFROM obce;
Konverze prvku (singleparts) na multiprvek (singleparts).
CREATE TABLE obce_m ASSELECT kod, nazev, ST_Union(geom) AS geomFROM obce_sGROUP BY kod, nazev;
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
25/28
Prıklad konverze
Rozdelenı linie na dany pocet segmentu.
WITH linie AS (SELECT st_boundary(geom) AS geom FROM staty
), a AS (SELECT generate_series(0,999,1) AS a
)SELECT ST_LineMerge(ST_LineSubstring(geom, a * 0.001, (a + 1) * 0.001)
) AS geomFROM a, linie;
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
26/28
Prıklad konverze
Rozdelenı linie na segmenty s danou delkou.
WITH linie AS (SELECT ogc_fid, st_boundary(geom) AS geom FROM staty
)SELECT ST_Line_Substring(geom, 2000 * n / length,CASEWHEN 2000 * (n + 1) < lengthTHEN 2000 * (n + 1) / lengthELSE 1END) AS geom
FROM(SELECT ogc_fid,st_linemerge(geom) AS geom,st_length(geom) AS lengthFROM linie) AS t
CROSS JOIN generate_series(0, 2000) AS nWHERE n * 2000 / length < 1;
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
27/28
Obsah prednasky
1 Prostorove dotazy (DML)Prostorove operatoryProstorove funkceProstorove predikaty
2 Vytvorenı databaze, tabulek (DDL)
3 Datova integrita
4 Import/export dat
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
28/28
Import/export dat
1 SQL
INSERT INTO obce(nazev, geom) VALUES(’Litomerice’,GeomFromText(’POINT(-756371 -991031)’, 2065));
2 ESRI Shapefile• Import dat shp2pgsql
• Konverze ESRI Shapefile vrstev do PostGIS tabulek• Export dat pgsql2shp
• Konverze PostGIS tabulek / dotazu do formatu ESRI Shapefile
shp2pgsql -s 4326 -D -I cr.shp cr | psql pgis_student
3 GDAL – ovladac PostgreSQL
ogr2ogr -f PostgreSQL PG:dbname=pgis_student cr.shp
nebo ovladac PGDump
ogr2ogr -f PGDump cr.sql cr.shppsql pgis_student -f cr.sql
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
28/28
Import/export dat
1 SQL
INSERT INTO obce(nazev, geom) VALUES(’Litomerice’,GeomFromText(’POINT(-756371 -991031)’, 2065));
2 ESRI Shapefile• Import dat shp2pgsql
• Konverze ESRI Shapefile vrstev do PostGIS tabulek• Export dat pgsql2shp
• Konverze PostGIS tabulek / dotazu do formatu ESRI Shapefile
shp2pgsql -s 4326 -D -I cr.shp cr | psql pgis_student
3 GDAL – ovladac PostgreSQL
ogr2ogr -f PostgreSQL PG:dbname=pgis_student cr.shp
nebo ovladac PGDump
ogr2ogr -f PGDump cr.sql cr.shppsql pgis_student -f cr.sql
PostGIS
Prostorove dotazy(DML)Prostorove operatory
Prostorove funkce
Prostorove predikaty
Vytvorenı databaze,tabulek (DDL)
Datova integrita
Import/export dat
28/28
Import/export dat
1 SQL
INSERT INTO obce(nazev, geom) VALUES(’Litomerice’,GeomFromText(’POINT(-756371 -991031)’, 2065));
2 ESRI Shapefile• Import dat shp2pgsql
• Konverze ESRI Shapefile vrstev do PostGIS tabulek• Export dat pgsql2shp
• Konverze PostGIS tabulek / dotazu do formatu ESRI Shapefile
shp2pgsql -s 4326 -D -I cr.shp cr | psql pgis_student
3 GDAL – ovladac PostgreSQL
ogr2ogr -f PostgreSQL PG:dbname=pgis_student cr.shp
nebo ovladac PGDump
ogr2ogr -f PGDump cr.sql cr.shppsql pgis_student -f cr.sql
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
1/19
Prednaska 5
PostGIS TopologyTopologicka sprava vektorovych dat v geodatabazi PostGIS
155UZPD Uvod do zpracovanı prostorovych dat, zimnı semestr 2019-2020
Martin [email protected]
Fakulta stavebnı CVUT v PrazeKatedra geomatiky
http://geo.fsv.cvut.cz/gwiki/155UZPD
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
2/19
Copyright c© 2009-2019 Martin Landa
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation Licence, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts.
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
3/19
Obsah prednasky
1 Simple Features
2 Datove modelyPostGIS Topology
3 Topologicka primitiva
4 Porovnanı s datovym modelem GRASS GIS
5 Datovy typ TopoGeometry
6 Schema topology
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
4/19
Topologicka sprava vektorovych dat | Uvod
Simple Features
• PostGIS implementuje specifikaci OGC Simple Featuresfor SQL
• Modeluje objekty jako jednoduche geoprvky (simplefeatures), tj. bez topologickeho pohledu na vektorova data
Prıklad:
1 polygon | geometrie (WKT)2 ---------+----------------------------------------------3 A | POLYGON((100 0,0 0,0 100,100 100,100 0))4 B | POLYGON((100 0,100 100,200 100,200 0,100 0))
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
5/19
Obsah prednasky
1 Simple Features
2 Datove modelyPostGIS Topology
3 Topologicka primitiva
4 Porovnanı s datovym modelem GRASS GIS
5 Datovy typ TopoGeometry
6 Schema topology
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
6/19
Datove modely pro vektorova data
Prıklad vektoroveho modelu v GIS:reprezentace objektu bodem (A), liniı (B) a polygonem (C)
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
6/19
Datove modely pro vektorova data
Spagetovy model
A, 1 # identifikator bodu, pocet vrcholux1, y1 # souradnice bodu (bod 1)B, 4 # identifikator linie, pocet vrcholux2, y2 # souradnice lomovych bodu linie (2-5)x3, y3, x4, y4, x5, y5C, 6 # identifikator polygonu, pocet vrcholux6, y6 # souradnice lomovych bodu polygonu (6-11)x7, y7, x8, y8, x9, y9, x10, y10, x11, y11
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
6/19
Datove modely pro vektorova data
Seznam lomovych bodu
# seznam vrcholu a jejich souradnic1, x1, y12, x2, y2...11, x11, y11
# seznam vektorovych objektu a jejich vrcholubod A: 1linie B: 2, 3, 4, 5polygon C: 6, 7, 8, 9, 10, 11
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
6/19
Datove modely pro vektorova data
Dual Independent Map Encoding
# seznam lomovych bodu a jejich souradnic1, x1, y12, x2, y2...11, x11, y11
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
6/19
Datove modely pro vektorova data
Dual Independent Map Encoding
# hrana, plocha napravo, plocha nalevo, pocatecnı uzel, koncovy uzela , , , 1 , 2b , , , 2 , 4c , , , 4 , 5d , , C , 6 , 7e , , C , 7 , 8f , , C , 8 , 9g , , C , 9 , 10h , , C , 10 , 11i , , C , 11 , 6
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
6/19
Datove modely pro vektorova data
Dual Independent Map Encoding
# plocha: seznam hran formujıcı hranici plochyC : d, e, f, g, h, i
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
6/19
Datove modely pro vektorova data
Node-Arc-Area
# souradnice lomovych bodu (arcs)arc, pocatecnı uzel, lomove body , koncovy uzel1 , x2 y2 , x3 y3 x4 y4 , x5 y52 , x6 y6 , x7 y7 x8 y8 x9 y9, x10 y103 , x10 y10 , x11 y11 , x6 y6
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
6/19
Datove modely pro vektorova data
Node-Arc-Area
# topologie hranarc, pocatecnı uzel, koncovy uzel, plocha napravo, plocha nalevo1 , 2 , 5 , ,2 , 6 , 10 , C ,3 , 10 , 6 , C ,
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
6/19
Datove modely pro vektorova data
Node-Arc-Area
# topologie plochplocha, seznam hran formujıcı hraniciC , 2 3
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
6/19
Datove modely pro vektorova data
Node-Arc-Area
# topologie uzluuzel, seznam navazujıcıch hran1 , 12 , 13 , 2 34 , 2 3
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
7/19
Datovy model PostGIS Topology
Rozsırenı pro topologickou spravu vektorovych dat
PostGIS Topology – soucastı PostGISu od verze 2.0• Datovy model Topo-Geo z technicke normy SQL/MM (ISO
13249-3:2006, viz koncept)• Topologicka primitiva
• uzly (nodes) — N1, N2• hrany (edges) — E1, E2, E3• steny (faces) — F1, F2
http://postgis.net/docs/Topology.html
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
8/19
Obsah prednasky
1 Simple Features
2 Datove modelyPostGIS Topology
3 Topologicka primitiva
4 Porovnanı s datovym modelem GRASS GIS
5 Datovy typ TopoGeometry
6 Schema topology
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
9/19
Topologicka primitiva
Topologicka primitiva
• Nodes (uzly)• Edges (hrany)• Faces (steny)
Relace ’Node’
• node id integer PRIMARY KEY• containing face integer REFERENCESFace.face id
• geom geometry (Point)
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
9/19
Topologicka primitiva
Topologicka primitiva
• Nodes (uzly)• Edges (hrany)• Faces (steny)
Relace ’Edge’
• edge id integer PRIMARY KEY• start node integer REFERENCES Node.node id
• end node integer REFERENCES Node.node id
• next left edge integer REFERENCES abs(Edge.edge id)• next right edge integer REFERENCES abs(Edge.edge id)• left face integer REFERENCES Face.face id
• right face integer REFERENCES Face.face id
• geom geometry (LineString)
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
9/19
Topologicka primitiva
Topologicka primitiva
• Nodes (uzly)• Edges (hrany)• Faces (steny)
Relace ’Face’
• face id integer PRIMARY KEY• mbr geometry (muze byt prazdna)
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
10/19
Obsah prednasky
1 Simple Features
2 Datove modelyPostGIS Topology
3 Topologicka primitiva
4 Porovnanı s datovym modelem GRASS GIS
5 Datovy typ TopoGeometry
6 Schema topology
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
11/19
Porovnanı topologickych modelu PostGIS × GRASS
Prıklad modelovanı realnych objektu v GIS
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
11/19
Porovnanı topologickych modelu PostGIS × GRASS
15 uzlu (N1..N15)17 hran (E1..E17)6 sten (F0..F5)
Prıklad modelovanı realnych objektu v topologickeho modeluTopo-Geo
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
11/19
Porovnanı topologickych modelu PostGIS × GRASS
14 uzlu (N1..N14)2 linie (L6,L17)1 bod (P18)15 hranic (B1..B5,
B7..B16)5 centroidu (C1..C5)5 ploch (A1..A5)1 ostrov (I1)
Prıklad topologickeho modelu GRASS GIS
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
12/19
Obsah prednasky
1 Simple Features
2 Datove modelyPostGIS Topology
3 Topologicka primitiva
4 Porovnanı s datovym modelem GRASS GIS
5 Datovy typ TopoGeometry
6 Schema topology
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
13/19
Topologicka sprava vektorovych dat
Datovy typ TopoGeometry
Reprezentuje geometrii definovanou topologickymi primitivy1 Objekty definovane topologickymi primitivy (uzel, hrana,
stena)2 Hierarchicke TopoGeometry objekty, ktere jsou tvoreny
dalsımi TopoGeometry objektyAtributy:• topology id integer• layer id integer• id integer• type integer
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
14/19
Topologicka sprava vektorovych dat
Uzly:node id containing face geomN1 POINT(xN1, yN1)N2 POINT(xN2, yN2)N3 POINT(xN3, yN3)N4 POINT(xN4, yN4)N5 POINT(xN5, yN5)
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
14/19
Topologicka sprava vektorovych dat
Hrany:edge id start node end node next left edge next right edge left face right face geom1 N2 N3 -E1 E1 F0 F0 LINESTRING(...)2 N4 N5 -E3 E3 F0 F1 LINESTRING(...)3 N4 N5 -E2 E2 F1 F2 LINESTRING(...)4 N5 N4 E2 -E2 F0 F2 LINESTRING(...)
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
14/19
Topologicka sprava vektorovych dat
Steny:face id geomF0? NULLF1 Box2D(...)F2 Box2D(...)
?. . . ”universal face“
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
14/19
Topologicka sprava vektorovych dat
Objekty TopoGeometry (topology id1,layer id2,id3,type4):fid label topo1 bod (1,1,1,1)2 linie (1,1,1,2)3 polygon (1,1,1,3)4 polygon (1,1,2,3)
1 . . . odkaz na relaci topology2 . . . odkaz na relaci layer3 . . . odkaz na relaci relation4 . . . typ elementu
1 . . . uzel2 . . . hrana3 . . . stena
Relace Relation:topogeo id layer id element id element type1 1 1 11 1 1 21 1 1 32 1 2 3
topogeo id . . . odkaz na TopoGeo objektlayer id . . . odkaz na relace layerelement id . . . odkaz na relaci node, edge nebo faceelement type . . . typ elementu
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
15/19
Obsah prednasky
1 Simple Features
2 Datove modelyPostGIS Topology
3 Topologicka primitiva
4 Porovnanı s datovym modelem GRASS GIS
5 Datovy typ TopoGeometry
6 Schema topology
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
16/19
Schema topology
Nahranı datovych typu a funkcı PostGIS Topology
CREATE EXTENSION postgis_topology;
Relace ve schematu ”topology“
1 Relace topology
2 Relace layer
1 id | 12 name | topo_test3 srid | 04 precision | 05 hasz | f
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
17/19
Schema topology | relace ”layer“
Tabulky ve schematu ”topology“
1 Relace topology
2 Relace layer
1 topology_id | 12 layer_id | 13 schema_name | public4 table_name | topo_test5 feature_column | topo6 feature_type | 37 level | 08 child_id |
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
18/19
Tvorba topologickych dat
• Nove topologicke schema registruje funkceCreateTopology()
• Topologicka vrstva se vytvarı pomocı funkceAddTopoGeometryColumn()
• Pokud nenı specifikovan child layer bude vrstvaobsahovat jednoduche TopoGeometry objekty
• Objekty TopoGeometry se vytvarejı pomocı funkceCreateTopoGeom()
PostGIS Topology
Simple Features
Datove modelyPostGIS Topology
Topologicka primitiva
Porovnanı s datovymmodelem GRASS GIS
Datovy typTopoGeometry
Schema topology
19/19
Zaver
Dalsı informace a prakticke ukazky:• http://freegis.fsv.cvut.cz/gwiki/PostGIS Topology• http://training.gismentors.eu/postgis-
pokrocily/kapitoly/8 topologie.html
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
1/13
Prednaska 6
PostGIS RasterSprava rastrovych dat v geodatabazi PostGIS
155UZPD Uvod do zpracovanı prostorovych dat, zimnı semestr 2019-2020
Martin [email protected]
Fakulta stavebnı CVUT v PrazeKatedra geomatiky
http://geo.fsv.cvut.cz/gwiki/155UZPD
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
2/13
Copyright c© 2009-2019 Martin Landa
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation Licence, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts.
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
3/13
Obsah prednasky
1 Uvod
2 PostGIS RasterCharakteristikaImport/export a konverze datFunkcionalitaPrakticka ukazka
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
4/13
Uvod
Projekty
1 PGRaster2 PostGIS Raster (drıve WKTRaster)
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
4/13
Uvod
Projekty
1 PGRaster2 PostGIS Raster (drıve WKTRaster)
PGRaster
→ http://trac.osgeo.org/postgis/wiki/UsersWikiPgRasterSqlInterface
• PGRaster jako dvoudimenzionalnı pole numerickychhodnot
• LO – PostgreSQL large object• TOAST – PostgreSQL bytea
• Datovy typ bunky rastrove vrstvy – PGRasterCell
• Podporovane externı formaty – knihovna GDAL• Vyvoj ukoncen, viz PostGIS Raster (2009)
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
4/13
Uvod
Projekty
1 PGRaster2 PostGIS Raster (drıve WKTRaster)
PostGIS Raster (drıve WKTRaster)
→ http://trac.osgeo.org/postgis/wiki/WKTRaster
• Vyvıjen od roku 2009 (viz roadmap) – soucastı PostGIS2.0
• Odlisny prıstup od PGRaster a Oracle Spatial GeoRaster• Cılem je implementovat datovy typ pro rastrova data
podobne jako GEOMETRY pro vektorova data• Navrhnout funkce typu ST Intersects(), ktere by
operovaly soucasne nad vektorovymi a rastrovymi daty
http://freegis.fsv.cvut.cz/gwiki/PostGIS_Raster
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
5/13
Obsah prednasky
1 Uvod
2 PostGIS RasterCharakteristikaImport/export a konverze datFunkcionalitaPrakticka ukazka
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
6/13
PostGIS Raster
Zakladnı vlastnosti
• Tabulka (relace) ∼ rastrova vrstva (raster coverage)• Zaznam ∼ dlazdice ci rastrovy objekt• Novy datovy typ RASTER (analogie pro GEOMETRY
vektorovych dat)• Rastrova dlazdice je definovana
• Velikostı bunky (pixelu) – prostorovym rozlisenım• Rozmerem (sırka, vyska) dlazdice• Poctem kanalu• Pro kazdy kanal datovy typ bunky a hodnota no-data
Ulozenı dat
1 Ulozenı rastrovych dat v internım formatu (obdoba WKB)2 Ulozenı dat externe (jako JPEG, TIFF, . . . ) s moznostı
pouzıt rastrove SQL funkce
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
6/13
PostGIS Raster
Zakladnı vlastnosti
• Tabulka (relace) ∼ rastrova vrstva (raster coverage)• Zaznam ∼ dlazdice ci rastrovy objekt• Novy datovy typ RASTER (analogie pro GEOMETRY
vektorovych dat)• Rastrova dlazdice je definovana
• Velikostı bunky (pixelu) – prostorovym rozlisenım• Rozmerem (sırka, vyska) dlazdice• Poctem kanalu• Pro kazdy kanal datovy typ bunky a hodnota no-data
Ulozenı dat
1 Ulozenı rastrovych dat v internım formatu (obdoba WKB)2 Ulozenı dat externe (jako JPEG, TIFF, . . . ) s moznostı
pouzıt rastrove SQL funkce
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
6/13
PostGIS Raster
Zakladnı vlastnosti
• Tabulka (relace) ∼ rastrova vrstva (raster coverage)• Zaznam ∼ dlazdice ci rastrovy objekt• Novy datovy typ RASTER (analogie pro GEOMETRY
vektorovych dat)• Rastrova dlazdice je definovana
• Velikostı bunky (pixelu) – prostorovym rozlisenım• Rozmerem (sırka, vyska) dlazdice• Poctem kanalu• Pro kazdy kanal datovy typ bunky a hodnota no-data
Ulozenı dat
1 Ulozenı rastrovych dat v internım formatu (obdoba WKB)2 Ulozenı dat externe (jako JPEG, TIFF, . . . ) s moznostı
pouzıt rastrove SQL funkce
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
7/13
PostGIS Raster
Hlavnı cıle
1 Jednoduchost, rozsıritelnost, funkcionalita –zapouzdreny datovy typ pro rastrova data srovnatelnys GEOMETRY (vektorova data/Simple Features).Obdobne operatory a funkce, ktere PostGIS nabızı provektorova data.
2 Bezesva integrace s datovym typem GEOMETRY –operace prekrytı nad rastrovymi a vektorovymi daty beznutnosti explicitnı konverze mezi temito reprezentacemi
3 Flexibilita ulozenı dat – ulozenı rastrovych dat v databazi× registrace externıho zdroje rastrovych dat v databazi
4 Interoperabilita – externı datove zdroje lze registrovatpomocı knihovny GDAL (podpora pro vıce nez 140rastrovych GIS formatu)
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
8/13
Import, export dat & konstruktory
Import/Export
Nastroje pro import/export dat• raster2pgsql
• pgsql2raster
Knihovna GDAL podporuje PostGIS Raster od verze 1.6(pouze v rezimu ctenı!)
Konverze dat
Konverze geometry/raster (geograficke objekty jako vektorovepolygony nebo rastrove dlazdice)• ST Polygon(raster)→ geometry• ST AsRaster(geometry)→ raster
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
8/13
Import, export dat & konstruktory
Import/Export
Nastroje pro import/export dat• raster2pgsql
• pgsql2raster
Knihovna GDAL podporuje PostGIS Raster od verze 1.6(pouze v rezimu ctenı!)
Konverze dat
Konverze geometry/raster (geograficke objekty jako vektorovepolygony nebo rastrove dlazdice)• ST Polygon(raster)→ geometry• ST AsRaster(geometry)→ raster
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
9/13
Prehled funkcı
Zakladnı funkce
• ST Resample(raster, pixelsize, method)→ raster
• ST Clip(raster|geometry, geometry)→ typ prvnıho argumentu
• ST Reclass(raster|geometry, string)→ typ prvnıho argumentu
• ST MapAlgebra(raster|geometry, raster),vyraz, "raster"|"geometry")→ raster/geometry
• . . .
http://postgis.net/docs/manual-dev/RT_reference.html
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
9/13
Prehled funkcı
Konstruktory
• ST Intersection(raster|geometry,raster|geometry, "raster"|"geometry")→ raster/geometry
• ST Union(raster|geometry, raster|geometry,"raster"|"geometry")→ raster/geometry
• ST Accum(raster set|geometry set,"raster"|"geometry")→ raster/geometry
• ST Transform(raster|geometry, SRID)→ typ prvnıho argumentu
• . . .
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
10/13
Ukazka PostGIS Raster | Import1 Import rastroveho souboru ve formatu GeoTIFF
raster2pgsql -r -C -I -s 5514 dem.tif > dmt.sqlpsql pgis_student -f dmt.sql
Poznamka: Prepınac -R umoznuje data pripojit jakoexternı zdroj dat
2 Zakladnı metadata rastrove vrstvy
SELECT ST_SRID(rast), ST_NumBands(rast),ST_BandPixelType(rast, 1),ST_Width(rast), ST_Height(rast), ST_PixelWidth(rast),ST_PixelHeight(rast), ST_GeoReference(rast)FROM dem;
1 st_srid | 20652 st_numbands | 13 st_bandpixeltype | 16BUI4 st_width | 78815 st_height | 32466 st_pixelwidth | 59.99993735252137 st_pixelheight | 89.9916274109558 st_georeference | 59.99993735259 : 0.000000000010 : 0.000000000011 : -89.991627410912 : -904259.055839840013 : -935192.9920546100
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
11/13
Metadatova tabulka RASTER COLUMNS
\d raster_columns
1 Column | Type | Modifiers2 ------------------+--------------------+-----------3 r_table_catalog | name |4 r_table_schema | name |5 r_table_name | name |6 r_raster_column | name |7 srid | integer |8 scale_x | double precision |9 scale_y | double precision |
10 blocksize_x | integer |11 blocksize_y | integer |12 same_alignment | boolean |13 regular_blocking | boolean |14 num_bands | integer |15 pixel_types | text[] |16 nodata_values | double precision[] |17 out_db | boolean[] |18 extent | geometry |
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
12/13
Metadatova tabulka RASTER COLUMNS
SELECT * FROM raster_columns;
1 r_table_catalog | pgis_student2 r_table_schema | public3 r_table_name | dem4 r_raster_column | rast5 srid | 20656 scale_x | 59.99993735252137 scale_y | -89.9916274109558 blocksize_x | 78819 blocksize_y | 3246
10 same_alignment | t11 regular_blocking | t12 num_bands | 113 pixel_types | {16BUI}14 nodata_values | {65535}15 out_db | {f}16 extent | ...
PostGIS Raster
Uvod
PostGIS RasterCharakteristika
Import/export a konverzedat
Funkcionalita
Prakticka ukazka
13/13
Ukazka PostGIS Raster | Operace s daty
Vytvorenı konvexnı obalky rastrove vrstvy
CREATE TABLE dem_extent AS SELECTST_ConvexHull(rast) AS geomFROM dem;
Dalsı prıklady: gis2-2.sql a gis2-3.sql
pgRouting
Uvod
FunkcionalitaNejkratsı cesta
1/9
Prednaska 7
pgRoutingSıt’ove analyzy v geodatabazi PostGIS
155UZPD Uvod do zpracovanı prostorovych dat, zimnı semestr 2019-2020
Martin [email protected]
Fakulta stavebnı CVUT v PrazeKatedra geomatiky
http://geo.fsv.cvut.cz/gwiki/155UZPD
pgRouting
Uvod
FunkcionalitaNejkratsı cesta
2/9
Copyright c© 2009-2019 Martin Landa
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation Licence, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts.
pgRouting
Uvod
FunkcionalitaNejkratsı cesta
3/9
Obsah prednasky
1 Uvod
2 FunkcionalitaNejkratsı cesta
pgRouting
Uvod
FunkcionalitaNejkratsı cesta
4/9
pgRouting
http://www.pgrouting.org
pgRouting
• Rozsırenı pro PostGIS zamerene sıt’ove analyzy• Puvodne pgDijkstra (Camptocamp, Kanada), prejmenovan
na pgRouting (Orkney, Japonsko), v soucasnosti je vyvojpodporovan predevsım spolecnostı Georepublic(Nemecko)
• Licence GNU GPLv2• Funkcionalita
1 Vyhledanı nejkratsı cesty (Dijkstra, A-Star, Shooting-Star)2 Problem obchodnıho cestujıcıho (Traveling Salesperson
Problem)3 Dojezdova vzdalenost (Driving Distance)
http://geo.fsv.cvut.cz/freegis/PgRouting
pgRouting
Uvod
FunkcionalitaNejkratsı cesta
5/9
Obsah prednasky
1 Uvod
2 FunkcionalitaNejkratsı cesta
pgRouting
Uvod
FunkcionalitaNejkratsı cesta
6/9
Vyhledanı nejkratsı cesty
Algoritmy
1 Dijkstra – shortest path
2 A-Star – shortest path astar
3 Shooting Star – shortest path shooting star
<nazev>(sql text, -- SQL dotazsource_id integer, -- id pocatecniho uzlutarget_id integer, -- id koncoveho uzludirected BOOLEAN, -- orientovany/neorientovany grafhas_reverse_cost BOOLEAN -- naklady v opacnem smeru
-- definovany/nedefinovany)
pgRouting
Uvod
FunkcionalitaNejkratsı cesta
7/9
Vyhledanı nejkratsı cesty
Dijkstra
Dijkstruv algoritmus• Prvnı implementovany algoritmus pro pgRouting• Bez heuristiky• Orientovane ci neorientovane hrany• Informace o uzlech
SELECT gid, st_astext(geom) AS geomFROM dijkstra_sp(’ways’, 605, 359);
1 gid | geom2 --------+---------------------------------------------------------------3 168 | MULTILINESTRING((2.1633077 41.3802886,2.1637094 41.3803008))4 169 | MULTILINESTRING((2.1637094 41.3803008,2.1638796 41.3803093))5 170 | MULTILINESTRING((2.1638796 41.3803093,2.1640527 41.3803265))6 ... | ...7 5575 | MULTILINESTRING((2.1436976 41.3897581,2.143876 41.3903893))8 (81 rows)
pgRouting
Uvod
FunkcionalitaNejkratsı cesta
8/9
Vyhledanı nejkratsı cesty
A-Star
A-Star algoritmus• Vhodny pro vetsı datasety• Jedna o heuristicky algoritmus• Orientovane ci neorientovane hrany• Informace o uzlech
SELECT gid, st_astext(geom) AS geomFROM astar_sp_delta(’ways’, 605, 359, 0.1);
1 gid | geom2 --------+---------------------------------------------------------------3 2095 | MULTILINESTRING((2.1456208 41.3901317,2.143876 41.3903893))4 1721 | MULTILINESTRING((2.1494579 41.3890058,2.1482992 41.3898429))5 1719 | MULTILINESTRING((2.1517067 41.3873058,2.1505566 41.3881623))6 ... | ...7 3607 | MULTILINESTRING((2.1795052 41.3843643,2.1796184 41.3844328))8 (81 rows)
pgRouting
Uvod
FunkcionalitaNejkratsı cesta
9/9
Vyhledanı nejkratsı cesty
Shooting Star
Shooting-Star algoritmus• Jedna o heuristicky algoritmus• Orientovane ci neorientovane hrany• Na rozdıl od Dijkstrova ci A-Star algoritmu vypocıtava
nejkratsı cestu ze spojnice hran nikoliv z uzlu• Umoznuje zachytit vztahy mezi hranami, rovnobeznost
hran a pod.
SELECT gid, st_astext(geom) AS geomFROM shootingstar_sp(’ways’, 609, 366, 0.1, ’length’,true, true);
1 gid | geom2 --------+---------------------------------------------------------------3 609 | MULTILINESTRING((2.1436976 41.3897581,2.1449097 41.3889929))4 273 | MULTILINESTRING((2.1460685 41.3898043,2.1449097 41.3889929))5 272 | MULTILINESTRING((2.1463431 41.3900361,2.1460685 41.3898043))6 ... | ...7 3607 | MULTILINESTRING((2.1795052 41.3843643,2.1796184 41.3844328))8 (81 rows)
NoSQL
1/1
Prednaska 9
NoSQLNoSQL databaze a geograficka data
155UZPD Uvod do zpracovanı prostorovych dat, zimnı semestr 2019-2020
Martin [email protected]
Fakulta stavebnı CVUT v PrazeKatedra geomatiky
http://geo.fsv.cvut.cz/gwiki/155UZPD
NoSQL
2/1
Copyright c© 2009-2019 Martin Landa
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation Licence, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts.
NoSQL
4/1
NoSQL
•”Nejen“ SQL - i jine prostredky nez tabulkova schematarelacnıho datoveho modelu
+ jednoduchost navrhu+ horizontalnı i vertikalnı skalovatelnost
+/- mensı kontrola konzistence dat, lepsı dostupnost+/- neprıtomnost plnohodnotne podpory transakcnıho modelu
ACID (Atomicity, Consistency, Isolation, Durability)- casto nızka uroven standardizace
NoSQL
4/1
NoSQL
•”Nejen“ SQL - i jine prostredky nez tabulkova schematarelacnıho datoveho modelu
+ jednoduchost navrhu+ horizontalnı i vertikalnı skalovatelnost
+/- mensı kontrola konzistence dat, lepsı dostupnost+/- neprıtomnost plnohodnotne podpory transakcnıho modelu
ACID (Atomicity, Consistency, Isolation, Durability)- casto nızka uroven standardizace
NoSQL
5/1
Nasazenı
• NoSQL databaze nenahrazujı relacnı databaze→ Vhodnost se odvıjı od typu reseneho problemu• Jsou urceny pro nerelacnı data v distribuovanych
prostredıch• Obvykle nasazenı v segmentu ”big data“ (distribuovane
databaze) ci real-time web• Mısto ACID poskytujı BASE (Basically Available,
Soft-state, Eventual consistency)• Ruzne typy NoSQL databazı podle zpusobu ulozenı dat,
viz dale . . .
NoSQL
7/1
Prehled NoSQL databazı
Klıc-hodnota
• Jeden klıc, jedna hodnota• Rychly prıstup pres klıc (hash tabulky)• Hodnota je BLOB (nedelitelna)• Napr. Oracle NoSQL, Dynamo (Amazon)
NoSQL
8/1
Prehled NoSQL databazı
Dokumentove
• Podobne jako klıc-hodnota• Hodnota je ale strukturovana (XML, JSON, objekt)• Umoznuje slozitejsı dotazy• Napr. MongoDB
NoSQL
9/1
Prehled NoSQL databazı
Sloupcove
• Radek je kolekce dvojic klıc-hodnota• Klıc je nazev sloupce• Ruzny pocet sloupcu• Napr. Cassandra (Facebook), BigTable (Google)
NoSQL
10/1
Prehled NoSQL databazı
Grafove
• Graf (uzly, hrany)• Reprezentace sıtı a jejich topologiı• Socialnı, dopravnı, pocıtacove sıte, . . .• Napr. Neo4j, AllegroGraph
NoSQL
12/1
NoSQL a geograficka data
• MongoDB• GeoCouch (CouchDB)• . . .