Topológiai algoritmusok és adatszerkezetek TÉRINFORMATIKAI ÉS TÁVÉRZÉKELÉSI ALKALMAZÁSOK FEJLESZTÉSE Cserép Máté mcserep@caesar.elte.hu 2015. május 5. EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR
BEVEZETŐ Topológia: olyan matematikai tudomány, mely bizonyos geometriai tulajdonságokból kiindulva, azok általánosítása alapján, algebrai törvényszerűségeket határoz meg. Geometriai topológia: a téralakzatok azon tulajdonságait vizsgálja, melyek nem változnak az idomok szakadásmentes torzítása során. Szomszédság Kapcsolódás / Folyamatosság Tartalmazás EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 2
FELHASZNÁLÁSI TERÜLETEK Topológiai relációk lekérdezése Mely megyékkel határos Veszprém megye? EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 3
FELHASZNÁLÁSI TERÜLETEK Topológiai relációk lekérdezése Mely megyékkel határos Veszprém megye? Mely főutakra lehet ráhajtani az M3-as autópályáról? EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 4
FELHASZNÁLÁSI TERÜLETEK Topológiai relációk lekérdezése Mely megyékkel határos Veszprém megye? Mely főutakra lehet ráhajtani az M3-as autópályáról? Mely megyékben található a Balaton? EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 5
FELHASZNÁLÁSI TERÜLETEK Topológiai relációk lekérdezése Mely megyékkel határos Veszprém megye? Mely főutakra lehet ráhajtani az M3-as autópályáról? Mely megyékben található a Balaton? Mely megyéken folyik keresztül a Duna? EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 6
FELHASZNÁLÁSI TERÜLETEK Adatok ellenőrzése: Minden település külterület kizárólag egy megyéhez tartozhat. EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 7
FELHASZNÁLÁSI TERÜLETEK Adatok ellenőrzése: Minden település külterület kizárólag egy megyéhez tartozhat. Minden település külterülethez tartoznia kell legalább egy településnek. EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 8
FELHASZNÁLÁSI TERÜLETEK Adatok ellenőrzése: Minden település külterület kizárólag egy megyéhez tartozhat. Minden település külterülethez tartoznia kell legalább egy településnek. Nem lehetnek rések a külterület határok között. EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 9
TÉRBELI RELÁCIÓK Forrás: wikipedia.org Forrás: oracle.com EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 10
DIMENSIONALLY EXTENDED NINE-INTERSECTION MODEL (DE-9IM) Forrás: opengeo.org EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 11
TÉRBELI RELÁCIÓK NINE-INTERSECTION MODEL HASZNÁLATÁVAL Forrás: www.spatial.cs.umn.edu EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 12
TOPOLOGIKUS ADATSZERKEZETEK A térbeli relációk folytonos és ismételt kiértékelése: túlságosan erőforrás igényes, nem hatékony. A topológiát ezért előfeldolgozási lépésként célszerű a teljes geometriakollekcióra kiszámítani, tárolni, és a továbbiakban azt felhasználva sokkal hatékonyabb lekérdezés-kiértékeléseket végrehajtani. Módosításkor: topologikus modellt kell szerkeszteni vagy a geometriakollekció változásakor a topológia (részét vagy egészét) is frissíteni kell. Milyen adatszerkezetben tároljuk a topológiát? EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 13
TOPOLOGIKUS ADATSZERKEZETEK Általános elvárások: térbeli adatok ismétlődésmentes tárolása, térbeli kapcsolatok (pl. szomszédság, rákövetkezés) tárolása. Elterjedt topologikus adatstruktúrák: Winged-edge data structure Quad-edge data structure Half-edge data structure Doubly connected edge list EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 14
WINGED-EDGE DATA STRUCTURE Élek reprezentációja: Név: a Csúcspontok: kiindulás: X vég: Y Felületek: bal: 1 jobb: 2 Bal felület bejárása: megelőző él: b rákövetkező él: d Jobb felület bejárása: megelőző él: e rákövetkező él: c Csúcspontok reprezentációja: név: X él: d (pozíció: koordináta) Felületek reprezentációja: Név: 1 Él: b EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 15
HALF-EDGE DATA STRUCTURE Fél-élek reprezentációja: vég csúcspont ellentett fél-él rákövetkező fél-él határos felület Élek reprezentációja: egyik fél-él Csúcspontok reprezentációja: egyik kiinduló fél-él (pozíció: koordináta) Felületek reprezentációja: egyik határos fél-él EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 16
ALGORITMUSOK A TOPOLÓGIA KIALAKÍTÁSÁHOZ Pont poligon általi tartalmazása Crossing Number algoritmus Winding Number algoritmus Él-láncok metszése Shamos-Hoey algoritmus (vizsgálat) Bentley-Ottmann algoritmus (meghatározás) Poligonok metszése Sutherland-Hodgman algoritmus (konvex) Vatti algoritmus Greiner-Hormann algoritmus Weiler-Atherton algoritmus EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 17
WINDING NUMBER ALGORITMUS Szabályok: Felfelé keresztező él, óramutató szerinti ellentétes bejárással: wn wn + 1 Lefele keresztező él, óramutató szerinti bejárással: wn wn 1 A pont a poligon kívül van wn = 0 Algoritmikus komplexitás: θ(2n) EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 18
Forrás: geomalgorithms.com BENTLEY-OTTMANN ALGORITMUS Event: 0 EQ: S 1, S 2, S 3, S 4, S 3, S 1, S 2, S 4 SL: Event: 1 (S 1 ) EQ: S 2, S 3, S 4, S 3, S 1, S 2, S 4 SL: S1 Event: 2 (S 2 ) EQ: S 3, S 4, I 12, S 3, S 1, S 2, S 4 SL: S 1, S 2 Event: 3 (S 3 ) EQ: I 13, S 4, I 12, S 3, S 1, S 2, S 4 SL: S 1, S 3, S 2 EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 19
Forrás: geomalgorithms.com BENTLEY-OTTMANN ALGORITMUS Event: 4 (I 13 ) EQ: S 4, I 12, S 3, S 1, S 2, S 4 SL: S 3, S 1, S 2 Event: 5 (S 4 ) EQ: I 12, I 34, S 3, S 1, S 2, S 4 SL: S 4, S 3, S 1, S 2 Event: 6 (I 12 ) EQ: I 34, S 3, S 1, S 2, S 4 SL: S 4, S 3, S 2, S 1 Event: 7 (I 34 ) EQ: S 3, I 24, S 1, S 2, S 4 SL: S 3, S 4, S 2, S 1 EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 20
Forrás: geomalgorithms.com BENTLEY-OTTMANN ALGORITMUS Event: 8 (S 3 ) EQ: I 24, S 1, S 2, S 4 SL: S 4, S 2, S 1 Event: 9 (I 24 ) EQ: S 1, S 2, S 4 SL: S 2, S 4, S 1 Event: 10 (S 1 ) EQ: S 2, S 4 SL: S 2, S 4 Event: 11 (S 2 ) EQ: S 4 SL: S 4 Algoritmikus komplexitás: θ n + k log n EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 21
WEILER-ATHERTON ALGORITMUS Csúcslisták: P: P 0, I 1, I 0, P 1, I 2, I 3, P 2, I 4, P 3, I 5, P 4 Q: Q 0, Q 1, I 0, I 2, Q 2, Q 3, I 5, I 4, I 3, I 1 Belépési pontok: I 1, I 2, I 4 Feldolgozási szabály: 1. Belépési ponttól elindulunk P listán. 2. Metszéspontnál listát váltunk. 3. A kiindulási ponthoz visszaérkezéskor megkaptunk egy metszet poligont. 4. Töröljük az érintett metszéspontokat a belépési pontok közül; újrakezdjük a feldolgozást. EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR 22