HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Paikkatiedon käsittely 4. Diskreettiä geometriaa Antti Leino antti.leino@cs.helsinki.fi 25.1.2007 Tietojenkäsittelytieteen laitos
Laskentatarkkuuden ongelma Perusongelma: Avaruus on jatkuva-arvoinen Tietokone-esityksen laskentatarkkuus äärellinen Ei ongelma, jos laskentatarkkuus»riittävä» Mielenkiintoisia seurauksia Skaalaus voi muuttaa topologiaa Viivojen leikkauspiste ei välttämättä viivalla Muunnos ja sen käänteismuunnos peräkkäin voivat tuottaa eri tuloksen kuin lähtötilanne Tämä otettava huomioon paikkatiedon approksimoinnissa
Kuvaustavan vaatimuksia Yleispätevyys Sulkeumaominaisuudet unionin, leikkauksen ja erotuksen suhteen Edellytyksenä tietokantaoperaatioille Formaali määriteltävyys Äärellinen resoluutio Ristiriidattomuus Vierekkäisillä alueilla on yhteinen raja Toteuttamiskelpoisuus Voitava käyttää tietokannan rakentamisessa
Maailmat Yksi mahdollinen ratkaisu diskreetin geometrian ongelmaan: maailma (realm) Pohjana hila, jonka resoluutio on äärellinen Koko tarkasteltavan geometrian tyhjentävä kuvaus
Maailman määritelmä Äärellinen joukko hilaan sijoitettuja pisteitä ja janoja, jossa Kukin piste ja janan päätepiste on hilapiste Kukin janan päätepiste on myös maailman piste Maailman piste voi olla janalla vain päätepisteenä Kaksi janaa ei voi leikata toisiaan tai mennä päällekäin, paitsi päätepisteissään
Diskreetti hila Laskennallisesti näppärä Esitettävissä kokonaislukuina Resoluutio käyttötarkoituksen mukaan Hyödyllinen Takaa geometrisen ristiriidattomuuden Hyvät sulkeumaominaisuudet Suojaa geometrista tarkastelua laskentatarkkuuden rajallisuudelta Käytettävissä myös tietokannan indeksinä Ei kattavasti toteutettu PostGIS: topologialaajennos tekeillä
Olioiden muuntaminen maailmaan Perusongelma: viivojen leikkauspisteet eivät osu hilapisteisiin Esitetään leikkauspiste hilapisteenä? Ei hyvä: Leikkauspiste ei ole kummallakaan janalla Leikkauspiste on janojen rajaamalla alueella Leikkauspiste on sinisen janan väärällä puolella
Janasta murtoviivaksi Muutetaankin janat murtoviivoiksi, jotka kulkevat leikkauspisteen kautta Nytpä jana saattaakin vaeltaa mielivaltaisen kauas oikealta paikaltaan!
Janan kuori Ratkaisu: Määritellään janalle kuori (envelope): ne hilapisteet, jotka ovat lähinnä janan ylä- tai alapuolella (tai itse janalla) Jana voidaan piirtää uudelleen, mutta vain kuorensa sisällä Jana ei voi siirtyä (hila)pisteen toiselle puolelle Se voi siirtyä kulkemana läheisen pisteen kautta
Paikkatietotyyppien toteuttaminen Paikkatietotyypit voidaan toteuttaa maailma-approksimaation avulla Neljä kerrosta 1. Hila ja sen geometriset primitiivit 2. Hilaan määritelty maailma 3. Maailmaperustaiset rakenteet 4. Näiden avulla määritellyt paikkatietotyypit
Geometriset primitiivit Tarvitaan Äärellinen diskreetti avaruus Sen pisteet ja janat Niitä koskevat yksinkertaiset suhteet ja operaatiot Määritellään N-avaruus: N N, missä N = {0,1,...,n 1} N
Pisteet ja janat N-piste: pari (x,y) N N N-jana: kaksi N-pistettä (p, q) (ja niiden välinen viiva) Kaikkien N-pisteiden joukko P N Kaikkien N-janojen joukko S N
N-janojen väliset suhteet Samat Leikkaavat Yhdensuuntaiset Päällekkäin (equal) (intersect) (parallel) (overlap) Linjassa Kohtaavat Koskettavat Erilliset (aligned) (meet) (touch) (disjoint)
N-avaruuden primitiivejä Kaksi pistettä voivat olla samat Piste voi olla janalla (on), janan sisällä (in) tai janan ulkopuolella (out): ensimmäisessä tapauksessa piste on joko sisä- tai päätepiste, toisessa tapauksessa nimenomaan sisäpiste Kahden janan leikkaus tuottaa tuloksenaan janojen leikkauskohtaa lähinnä olevan N-pisteen
Maailman luominen N-avaruuden muodostamaan hilaan voidaan määritellä N-maailma (N-realm, realm over N): Joukko R = P S R-pisteitä (R-point), P R-janoja (R-segment), S Käytössä on vain hilapisteitä ja niiden välisiä janoja P P N S S N Toisin sanoen N-avaruuden osajoukko Muutama lisärajoitus
Maailman lisärajoituksia Janojen päätepisteet ovat maailman pisteitä (p,q) S : (p P) (q P) Maailmaan kuulumattomien hilapisteiden välinen jana ei siis kelpaa Maailman pisteinä ei ole janojen sisäpisteitä p P s S : (p in s) Piste voi siis sijaita janalla vain sen päässä Janat koskevat toisiaan korkeintaan päätepisteissään s,t S : (s equal t) (s intersect t) (s overlap t) (s touch t)
Maailman operaatiot Määriteltävä paikkatieto-olioiden käsittelyyn tarvittavat operaatiot N-pisteen ja N-janan lisäys maailmaan R-pisteen ja R-janan poisto Näissä otettava huomioon Maailman eheysrajoitteet Paikkatieto-olioiden ja maailman kohteiden väliset riippuvuudet Kullakin maailman oliolla tunniste (realm object identifier, ROID) Kullakin paikkatietokanta-alkion sijaintitiedolla samoin tunniste (spatial component identifier, SCID)
Topologinen eheys Topologian säilyvyydestä huolehditaan kuori-käsitteen avulla Hyvin lähekkäisiä kohteita varten tarvitaan lisäksi Janan s aito kuori (proper envelope): kuori lukuun ottamatta janan päätepisteitä R-janan aidossa kuoressa ei saa olla R-pisteitä Jana voidaan piirtää uudelleen kulkemaan kuoripisteidensä kautta aidossa kuoressa olevan pisteen»on tarkoitus» olla janalla Pisteen lisäys aitoon kuoreen aiheuttaa janan uudelleenpiirtämisen
Pisteen lisäys maailmaan Lisää piste p Piirrä uudelleen kaikki janat s i, joiden aitoon kuoreen piste kuuluu Piirrä jana s i :n lähtöpisteestä p:hen Piirrä jana p:stä s i :n päätepisteeseen Poista s i Janan sijasta murtoviiva, jos alkuperäisen janan kuori niin vaatii
Janan lisäys maailmaan Tarkista, että janan s päätepisteet p 1 ja p 2 kuuluvat maailmaan ja tarvittaessa lisää ne Käy läpi pisteet p i, jotka ovat s:n kuoressa Lisää koukku lähimmästä s:n pisteestä p i :hin Käy läpi janat t i, jotka leikkaavat s:n Lisää koukku leikkauskohdasta lähimpään hilapisteeseen Käy läpi janat, jotka jokin koukuista leikkaa lisää koukku leikkauskohdasta lähimpään hilapisteeseen Lisää kaikkien koukkujen päätepisteet p j Piirrä uudelleen kaikki koukutetut janat t j
Janan uudelleenpiirtäminen Määritellään kuoren pisteet, joiden kautta murtoviiva kulkisi Kiinnitetään ne janaan koukuilla (hook), lyhyillä suunnatuilla janoilla Jokainen koukun ja janan leikkaus synnyttää uuden koukun Piirretään uudelleen kaikki koukutetut janat
Maailmaperustaiset rakenteet Maailmassa 0- ja 1-ulotteiset kohteet Tarvitaan vielä 2-ulotteiset. R-sykli (R-cycle): R-janojen joukko S(c) = {s 1,...,s n } i {1,...,n} : s i meet s (i+1) mod n Muut janat eivät kohtaa
R-syklin osat Sykli jakaa hilapisteet kolmeen osajoukkoon Syklin sisäpuolella olevat pisteet P in (c) Syklillä olevat pisteet P on (c) Syklin ulkopuolella olevat pisteet P out (c) Näiden avulla voi määritellä vielä syklin pisteet P(c) = P in (c) P on (c) Syklien väliset suhteet voidaan määritellä näiden joukkojen sekä syklin janojen muodostaman joukon S(c) avulla
Pisteen ja syklin suhteet N-piste on syklillä, jos se on jollakin sen janalla: p on c s S(c) : p on s Loput suhteet (sisällä, ulkona) eivät johdettavissa vastaavista janan ja pisteen suhteista
Onko piste syklin sisällä? Ensiksi tarkistetaan, ettei p ole syklillä c Vedetään apujana pisteestä suoraan ylös hilan reunaan: s p = ((x p,y p ),(x p,n 1)) Lasketaan ne c:n osajanat, joiden oikeanmuttei vasemmanpuoleinen päätepiste on apujanalla tai jotka leikkaavat sen Jos tällaisia osajanoja on pariton määrä, p in c Jos taas näitä on parillinen määrä, p out c
R-syklien sisäkkäisyys Syklien c 1 (musta) ja c 2 (sininen) suhteet c 2 on sisustaltaan c 1 :n sisällä (area-inside, 1 3): P(c 2 ) P(C 1 ) c 2 on reunaa myöten c 1 :n sisällä (edge-inside, 2 3): (c 2 area inside c 1 ) (S(c 1 ) S(c 2 ) = ) c 2 on kärkipisteitä myöten c 1 :n sisällä (vertex-inside, 3): (c 2 edge inside c 1 ) (P on (c 1 ) P on (c 2 ) = )
R-syklien erillisyys Syklien c 1 (musta) ja c 2 (punainen) suhteet sisustoiltaan erilliset (area-disjoint, 4 6): (P in (c 1 ) P(c 2 ) = ) (P(c 1 ) P in (c 2 ) = ) reunoja myöten erilliset (edge-disjoint, 5 6): (c 1 area disjoint c 2 ) (S(c 1 ) S(c 2 ) = ) kärkipisteitä myöten erilliset (vertex-disjoint, 5 6): (c 1 edge disjoint c 2 ) (P on (c 1 ) P on (c 2 ) = ) eli lyhyesti P(c 1 ) P(c 2 ) =
Syklit, janat ja pisteet R-jana voi olla R-syklin sisällä sisustaltaan (1 3) reunaa myöten (2 3) kärkipisteitä myöten (3) R-jana ja R-sykli erilliset reunaa myöten kärkipisteitä myöten R-piste voi olla R-syklin sisällä sisustaltaan (1 2) kärkipisteitä myöten (2) R-piste ja R-sykli erilliset kärkipisteitä myöten
Reiälliset alueet R-sykli ei vielä riitä aluekoheiden esittämiseen: pitää voida esittää myös reiät R-tahko (R-face): pari f = (c,h), missä c on R-sykli, H = {h 1,...,h n } joukko R-syklejä ja 1. i {1,...,n} : h i edge inside c 2. i,j {1,...,n},i j : h i edge disjoint h j 3. f:n osajanoista ei voi muodostaa muita syklejä kuin c ja H:hon kuuluvat
R-tahkon yksikäsitteisyys R-tahkon vaatimusten kohta 3 sen yksikäsitteisyyden Niinpä tämä on tulkittava kahdeksi reunojaan myöten erilliseksi tahkoksi
R-tahkojen topologiset suhteet R-syklejä koskevat topologiset suhteet ovat yleistettävissä R-tahkoille Perusperiaate: kohde on R-tahkon sisällä, jos se on tahkon ulkoreunaa kuvaavan syklin sisällä muttei reiässä Eri sisäkkäisyys- ja erillisyysasteiden avulla määriteltävissä myös sivuaminen: kohteet erillisiä sisustoiltaan mutteivät reunojaan myöten (ts. vähintään yksi yhteinen jana) kohtaaminen: kohteet erillisiä reunojaan mutteivät kärkipisteitään myöten (ts. vähintään yksi yhteinen kärkipiste)
Paikkatietokohteiden esittäminen Pistekohde: R-pisteiden joukko Viivakohde: erillisten R-lohkojen joukko R-lohko (R-block): R-janoista muodostuva yhtenäinen verkko Aluekohde: erillisten R-tahkojen joukko
Muita esitystapoja R-tahkoihin perustuva esitys ei ole ainoa mahdollisuus topologian säilyttäväksi paikkatiedon esitykseksi Muita esimerkiksi R-yksiköt: R-tahko, jossa lisärajoituksena minimaalisuus, so. yksikön sisällä ei voi olla pienempää tahkoa Simpleksiset kompleksit: rakennetaan geometria minimaalisen kokoisista osista (piste, jana, kolmio,... ), jotka eivät leikkaa toisiaan kuin reunoiltaan Näissä ei 1:1-vastavuutta kuvausyksikön ja paikkatietokannan kohteen välillä
Entä sitten? Topologian säilyttävä approksimointi on tarpeen joskus Usein riittää, että tiedot esitetään»tarpeeksi» tarkasti Laskentatarkkus niin paljon käytettyä resoluutiota suurempi, että ongelmia ei ole Ääritapauksessa ei silti takeita topologian säilymisestä Yksinkertaista toteuttaa Vähimmäisvaatimus: valinta näiden kahden välillä tehtävä tietoisesti