31. FEJEZET - A VONALAK HATÉKONY TÁROLÁSA - LÁNCKÓDOK (GIS,térinformatika,térkép,geodézia)


   
 
 

31. FEJEZET - A VONALAK HATÉKONY TÁROLÁSA - LÁNCKÓDOK

 
Tartalom
<<< Előző fejezet               Következő fejezet >>>
 

31. Fejezet - A VONALAK HATÉKONY TÁROLÁSA - LÁNCKÓDOK

Szerkesztette: David H. Douglas, University of Ottawa

Magyar változat: Gross Miklós, Budapesti Geodéziai és Térképészeti Vállalat

 

A. BEVEZETÉS

Fogalmak

B. SZABÁLYTALAN VONALAK ÁBRÁZOLÁSÁNAK TECHNIKÁJA

1. Egyenes vonal szegmensek

2. Körívek

3. Spline-ok

C. LÁNCOK (CHAIN) TÁROLÁSA (ARC-OK)

Előnyök és hátrányok

Freeman-féle lánc kód

Tömörítő kód

Ismétlő sorok

Összefoglalás

D. A LÁNC KÓD ALKALMAZÁSA

Raszter adatok vektorizálása

Scanner output vektorizálása

IRODALOM

ELLENŐRZŐ KÉRDÉSEK

 

 

31. Fejezet - A VONALAK HATÉKONY TÁROLÁSA - LÁNCKÓDOK

Szerkesztette: David H. Douglas, University of Ottawa

Magyar változat: Gross Miklós, Budapesti Geodéziai és Térképészeti Vállalat

 

A. BEVEZETÉS

- az előbbi szakaszban átnéztük azokat a struktúrákat, amelyek a térbeli kapcsolatok bizonyos típusait kódolják

- ebben a szakaszban a vonalak és területek geometriájának a kódolását tekintjük át

31.1. ábra - példák geográfiai vonalakra

- megjegyzendő, hogy ezen vonalak mindegyikének karakterisztikája más és más

- ezen vonalak mindegyike különböző földrajzi alakzatot jelent - tudja-e ön azonosítani azokat?

- legtöbb rendszer a vonalakat és területeket úgy tárolja, mint a pontok sorozatát, amelyeket egyenes vonalak kapcsolnak össze

- egyszerű, de legjobb vonalábrázolás az irányok éles törésével és nem sima görbékkel történik

- pl. egy kanyargó folyót vagy egy vasutat sokkal hatékonyabb kevés simuló görbével ábrázolni, mint nagy számu egyenes vonallal

- ez nagyon leegyszerűsíti a digitalizálást

- igen sok módszer van egy vonal diszkrét ábrázolására

- ez a szakasz áttekint ezek közül néhányat és azokat az alkalmazási területeket, ahol hasznosak

Fogalmak

- mivel a terület objektumokat többnyire egyenes vonalszegmensek sorával ábrázoljuk, ezért azt gyakran poligonként kezeljük

- a fogalmak egész sora használatos egy szabálytalan vonal kódolásának, mint egy egyenes vonal szegmensei sorozatának leírására, különösen akkor, amikor a vonal két terület objektum közös határvonala

- ezek a fogalmak magukban foglalják az ív (arc), szegmens, él (edge) és lánc (chain) fogalmait

- ezek közül a lánc (chain) az amerikai digitális térképkészítés szabvány terminógiája, ott ahol a vonal közös határvonal, de talán sokkal gyakrabban használják az arc-ot

 

B. SZABÁLYTALAN VONALAK ÁBRÁZOLÁSÁNAK TECHNIKÁJA

1. Egyenes vonal szegmensek

- ha a vonal a természetben görbe vonal, pl. folyópart, akkor az egyenes vonal szegmensek a valóságot csak megközelíteni tudják

- a megközelítés pontossága függ az alkalmazott egyenes szegmens hosszától, de a szegmenseknek végtelenül rövideknek kell lenniük, hogy a valódi görbületet ábrázolják

- ekképpen az egyenes vonal szegmensek a folytonos vonal ábrázolásának egyik útja, felhasználva egy véges mennyiségű információt, leginkább a szegmens végpontok koordinátáit

2. Körívek

- néhány rendszert a felmérési adatokra alapoztak, megengedve mind az egyenes vonalakat, mind a köríveket a pontok között

- görbéknél, a rendszernek tárolnia kell a görbület sugarát, valamint kezdő és végpontját

- és azt is pontosan kell azonosítani, hogy mely szegmensek egyenes vonalak és melyek ívek

- ezt a megközelítést használják a Prime System 9 GIS-nél

- ez a műszaki létesítményeknél hasznos, mint pl. az autóutak és vasutak esetében, amelyeket egyenes és görbe vonalakkal terveztek

3. Spline-ok

- használhatók a simuló görbék leírásához, mint pl. a kanyargó folyók esetében

- a görbét "spline" funkció modellezi, ez egy matematiaki funkció, ami a meghatározott pontokon megy keresztül, de minimális görbülete van

- a spline-okat gyakran használják a görbe vonalak "simítására" plotteren történő kirajzoláskor, mint a szintvonal operációk egy részét

- sokkal általánosabban használt a CAD-ban, mint a GIS-ben

 

C. LÁNCOK (CHAIN) TÁROLÁSA (ARC-OK)

- gyakran jelentős redundancia alakul ki, amikor egy vonalat úgy tárolunk, mint koordináta párok sorozatát

- pl. egy görbe utca négy ponttal van ábrázolva Columbiában, MO a következő koordinátákkal

(38.9519 92.3503)

(38.9519 92.3510)

(38.9522 92.3511)

(38.9522 92.3527)

- vegyük figyelembe, hogy a koordináták az első 4 számjegye (szélesség, hosszúság) minden pontnál ugyanaz

- nagyon gazdaságosan lehet tárolni, ha az előző ponttól való koordináta eltéréseket (növekményeket) tárolják 0.0001 egységgel

(38.9519, 92.3503) (+00,+07) (+03,+01) (+00,+16)

- ez az eljárás minden következő pontnál, lehetővé teszi, hogy négy decimális számjegyet használjunk 12 helyett, vagy megközelítően 12 bit-et, 36 helyett

- egy bit szükséges mindegyik szélesség és hosszúság változás előjelének tárolásához (+,-)

- ezzel összesen 14 bit

- ez határt szab a maximális változásnak 0.0099 egységig a szélesség vagy hosszúság bármelyik pontpárja között

Előnyök és hátrányok

- az előny a tárolási volumen csökkenésében,

- a hátrány a generalitás elvesztésében van

- adott egy fix térbeli felbontás (0.0001 egység) és a pontok közötti maximális távolság (0.0099 egység szélességben vagy hosszúságban)

- ez akkor okoz problámát, amikor földrajzi koordinátarendszert használunk és koordináta átalakítást végzünk

- ez a technika és változatai különösen jól alkalmazhatók scanner és digitalizált adatok előállítására

- ezeknek az eszközöknek fix felbontásuk, van

- a scannereknek van egy felbontásuk, ami az adott scanner pixel (képelem) nagyságával egyenlő és a pontok között minden távolság a köztük levő pixelek számával fejezhető ki

- a digitalizálók szintén diszkrét egységekkel dolgoznak

 

Freeman-féle lánc kód

- vannak rendszerek, amelyekben koordináta párok adatlánca helyett, erősen bízva a scanner inputban, gyakran úgy kódolnak vonalakat, mint a mozgások növekményeinek listáját

- fix számú mozgásirányt határoznak meg, szokásosan ez 8, kijelölik ezekhez az egész számokat 0-tól 7-ig

- a négy mozgás sorozatát lehet úgy kódolni, mint négy 0-t

- a "01012" string használható a következő görbe kódolásához

- a vonal mentén minden lépést egy számjegy fejez ki 0 és 7 között, vagy három (bináris) számjegy 000 és 111 között

- a vonalak vagy láncok kódjánál ezt a folyamatos kódolási technikát általánosan Herbert Freeman alkalmazta

- habár ezt sokkal korábban a 19. sz-ban már Francis Galton úgy írta le, mint egy információ átvitelt, ami egy billentyűnyomást jelent a távírón

- lásd Freeman (1961) számos algoritmus leírását, amelyek a lánc kódon alapulnak

Tömörítő kód

- bizonyos kódpárok sokkal valószínűbb, hogy lánc kódként bukkannak fel, mint más formában

- vonalak általában "simán" fordulnak és az éles kanyarok sok földrajzi adatban szokatlanok

- nagyon valószínű, hogy a következő elmozdulás ugyanolyan, mint a megelőző volt

- a következő nagyon valószínű, hogy jobbra vagy balra 45 fok

- a legkisebb valószínűséggel 180 fok a következő elmozdulás

- eképpen, ha egy kód 4, nagyon valószínű, hogy egy másik 4 követi, vagy 3, vagy 5 és a legkisebb valószínűséggel 0, 1 vagy 7

- ezt ki lehet fejezni egy kóddal, aminek a hossza a fordulat szögének élességétől függ

1 előre

01 45° jobbra

001 45° balra

0001 90° jobbra

00001 90° balra

000001 135° jobbra

0000001 135° balra

- ilyen módon egy vonal ábrázolásához szükséges bináris számjegyek teljes számát tudjuk redukálni

31.2. ábra - tömörítő kód

Ismétlő sorok

- ha a vonalakat hosszú egyenes szakaszokkal kódolták, lánc kód sorok fognak ismétlődni

31.3. ábra - ismétlő sorok

- például egyik ponttól egy másikig haladva 6 mozdulatot kell megtenni kelet felé és hármat északkelet felé (3 1-es és 6 2-es)

- a 222222111 sorozat egy egyenes vonal veszedelmes torzulása lenne

- az egyenes vonalat a 221221221 sorozattal lehet legjobban megközelíteni

- ismételje meg a 221 mintát háromszor

- az egyenest a legjobban megközelíteni mindig a kódok homogén keverékével lehet

- a vonalak kódolása hosszu egyenes szakaszokkal az ábrázolás egy utja lehet, amihez a minták futtatása szükséges

- pl. 3(221) jelezheti a 221 sorozatnak négy ismétlését

Összefoglalás

31.1. melléklet - Hasonlítsa össze a különböző kódolási sémákat

 

D. A LÁNC KÓD ALKALMAZÁSA

- a lánc kódok két különleges alkalmazása lehet hasznos

Raszter adatok vektorizálása

- raszter adat outputja az A és B zónát végig elkülönítő határ a következőképpen jelenik meg

AAAB

AABB

ABBB

BBBB

- egy vonalat tételezzünk fel a pixel élek mentén, ami elválasztja az A-t a B-től

- a vonal ábrázolását vektor- (a 202020 lánc-) kóddal lehet kódolni

Scanner output vektorizálása

- amikor egy vonalat scanner olvas le, ez valami olyasmi, mint:

000111

001110

011100

111000

- 1-ek jelölik, hogy hol "látta" a vonalat a scanner és a 0-ák jelölik, hogy a vonal körül hol volt üres terület

- az első lépés egy vonal vektor ábrázolásának levezetésében pixelek levékonyítása, egy szabvány algoritmussal

- sokféle algoritmus alkalmas erre

- jó forrás ehhez Pavlidis (1982) cikke

- a "levékonyítás" eredménye lesz:

000010

000100

001000

010000

- a vonal ekkor a megmaradó 1-ek vázából származhat

- a lánc kóddal ábrázolva 111 (3 elmozdulás északkeletnek)

- általában a vonal a lánc kóddal követett (x,y) koordinátával tárolt

- lánc-kód alkalmazása leghasznosabb ott, ahol raszter formátumból ered a vektor adat, egy scannerből vagy képből

- miután mind a távolság, mind az irány szét van választva (mindkettőnek van a lehetséges értékekből egy lehatárolt sorozata), így az általánosabb alkalmazásra nem különösen jó

 

IRODALOM

Freeman, H.,1961. "On the encoding of arbitrary geometric configurations", Institute of Radio Engineers,

Transactions on Electronic Computers, EC 10:260-8

Pavlidis, T. 1982. "Algorithms for Graphics and Image Processing", Springer-Verlag, Berlin

 

ELLENŐRZŐ KÉRDÉSEK

1. Rajzoljunk egy vonalat, írja ki:

a. A vonal ábrázolásának a Freeman lánc-kódját egyszerű számokkal 0-tól 7-ig

b. Bináris kóddal történő ábrázolását, törés szögek alapján

c. Ábrázolását a lánc-kód futtatás használatával

Melyik adat nyújt nagyobb adattömörítést? Fejezze ki mindegyik kód hasznát bit-ekben és emlékezzen, hogy 0 és 7 közötti szám 3 bit-et igényel. Egy példa rajzot is szükséges csatolni.

2. A válasz az előző kérdésre függ a kódolt vonal típusától. Beszéljük meg a karaktereket, amelyek a legnagyobb adattömörítést adják mindhárom feltételnek és írjon le vonal példákat ezekkel a karakterekkel.

3. A pontosság, amellyel egy vonalat ábrázolni lehet, mint egyenes vonal szegmensek sorozata, függ az eljárástól, amit a digitalizálásnál a pontok kiválasztásához használtunk. Beszéljük meg a feltételt, amelyet a pontok kiválasztásánál írunk elő abból a célból, hogy a vonalnak pontos ábrázolását kapjuk meg. Hogyan változhatnának ezek a feltételek a vonal természetétől függően?

4. Egy egyszerű osztályozó rasztert alkalmazva írjon ki egy vektorizált ábrázolást arc-t és Freeman féle lánc-kódot használva. Beleértve a jobb és bal poligonokat és mutatókat a szomszédos ívekhez, mint mindegyik arc attribútumát és az osztályát, mint mindegyik poligon attribútumát. Mutassa meg mindegyik vonalat a kezdőpont koordinátáival, kötve a lánc-kóddal, a számjegyeket 0-tól 7-ig felhasználva.

5. A 32. Fejezet előkészítéséhez találja ki, hogyan állítana fel egy programot annak meghatározására, hogy hol fogja két vonal keresztezni egymást, ha végpontjaikkal vannak megadva. Induljon egy ábrával! Milyen feltételek mellett fog a programja hibázni?

 
Tartalom
<<< Előző fejezet               Következő fejezet >>>
 



 
 


©GIS Figyelő