You are on page 1of 153

Lm cc bi tp: 1,3,4/66;1/86;1,3,4/90 MC LC Chng 1 ....................................................................................................................................5 GII THIU NGN NG AVENUE.......................................................................................5 1.GII THIU NGN NG AVENUE................................................................................5 2.CC C IM CA NGN NG AVENUE...............................................................

5 3.GIAO DIN LP TRNH AVENUE..................................................................................5 Chng 2 ....................................................................................................................................7 LP V I TNG...............................................................................................................7 1.I TNG.......................................................................................................................7 2.LP......................................................................................................................................7 3.YU CU V CCH GI YU CU TRONG AVENUE............................................10 Chng 3 ..................................................................................................................................13 CU TRC NGN NG AVENUE.......................................................................................13 1.CC KIU I TNG D LIU TRONG AVENUE ...............................................13 Kiu i tng s..............................................................................................................13 Kiu i tng String........................................................................................................14 Kiu i tng Pattern......................................................................................................15 Kiu i tng lun l......................................................................................................16 Kiu i tng Nil...........................................................................................................16 Danh sch..........................................................................................................................17 Stack..................................................................................................................................19 Dictionary.........................................................................................................................19 Bitmap...............................................................................................................................20 2.CC TON T TRONG AVENUE................................................................................20 3.BIN V TM VC CA BIN....................................................................................22 4.CC PHT BIU..............................................................................................................22 Pht biu gn.....................................................................................................................22 Pht biu iu kin............................................................................................................23 Pht biu lp......................................................................................................................24 5.IU KHIN GIA CC SCRIPT..................................................................................26 6.I TNG AV V T KHO SELF..........................................................................26 i tng av.....................................................................................................................26 T kho self......................................................................................................................27 7.LP MSGBOX V DIALOG...........................................................................................28 Lp MsgBox.....................................................................................................................28 Dialog................................................................................................................................30 8.V D.................................................................................................................................31 Chng 4 ..................................................................................................................................35 TO NG DNG TU BIN................................................................................................35 1.THAY I GIAO DIN AVENUE.................................................................................35 Gii thiu..........................................................................................................................35 To giao din mi.............................................................................................................36 To mi mt Menu.......................................................................................................36 To mi mt Button......................................................................................................38 To mi mt ToolMenu................................................................................................40

Lp trnh Avenue To mi mt Popup Menu............................................................................................42 2.GIAO DIN TI LIU NGI DNG DocGUI............................................................45 3.CC LP I TNG IU KHIN ..........................................................................46 3.1Lp MenuBar...............................................................................................................46 3.2Lp ButtonBar.............................................................................................................48 3.3Lp Toolbar.................................................................................................................49 3.4Lp PopupSet...............................................................................................................51 4V D..................................................................................................................................52 Chng 5 KHUNG NHN V LP CH ........................................................................54 1.LC M HNH I TNG CA KHUNG NHN (VIEW) V LP CH (THEME)..............................................................................................................................54 2.KHUNG NHN V LP CH ..................................................................................54 To mi mt khung nhn...................................................................................................54 Tm kim mt khung nhn ................................................................................................55 Gn n v bn v n v thc o cho khung nhn....................................................55 Thm lp ch (theme) vo khung nhn ......................................................................55 Tm mt lp ch trong khung nhn..............................................................................57 Thay i th t ca lp ch trong bng ni dung (TOC) ca khung nhn...................57 Thay i biu tng ca lp ch ..................................................................................58 Xo cc lp ch khi khung nhn.................................................................................59 Chn i tng khng gian ca lp ch bng chut....................................................59 Chn i tng khng gian ca lp ch bng cc hnh ha...................................61 Chn i tng khng gian lp ch bng mt lp ch khc..................................62 3.V D.................................................................................................................................64 Chng 6...................................................................................................................................68 CC I TNG HA V BIU TNG.................................................................68 1.CC I TNG HO (Graphics).........................................................................68 M hnh lc i tng ca cc i tng ho (Graphics)...................................68 ..........................................................................................................................................68 To cc i tng ho trn khung nhn v Layout......................................................68 Gn cc i tng ho vo lp ch .........................................................................69 Hin th nhn cho lp ch ............................................................................................70 Nhm v tch nhm cc i tng ho.......................................................................70 Di chuyn v sp thng hng cc i tng ho..........................................................71 2.CC BIU TNG (Symbols)........................................................................................72 M hnh lc i tng ca cc biu tng................................................................72 To mi mt biu tng....................................................................................................72 Thay i thuc tnh ca biu tng..................................................................................73 3.V D.................................................................................................................................74 Chng 7...................................................................................................................................77 LAYOUT.................................................................................................................................77 1.LC M HNH I TNG CA LAYOUT.....................................................77 2.THAO TC TRN LAYOUT...........................................................................................77 To Layout........................................................................................................................77 Thm khung nhn vo Layout...........................................................................................78 Thm bng v biu vo Layout....................................................................................79 Thm thc t l vo Layout............................................................................................79 Thm Legend vo Layout.................................................................................................80 2
Trung tam GIS NG DNG MI

Lp trnh Avenue Thm mi tn hng Bc vo Layout...............................................................................80 Thm mt hnh nh vo Layout.......................................................................................81 Thm cc k t vo Layout...............................................................................................81 Thm khung vin vo Layout.........................................................................................81 In Layout...........................................................................................................................82 3.V D.................................................................................................................................85 Chng 8...................................................................................................................................88 BNG......................................................................................................................................88 1.M HNH LC I TNG BNG....................................................................88 2.THAO TC TRN BNG................................................................................................89 To mi bng....................................................................................................................89 Sp xp cc bn ghi trong bng........................................................................................90 La chn cc thuc tnh thng qua biu thc...................................................................90 Lm vic vi cc bn ghi c chn............................................................................91 Lin kt cc bng bng thuc tnh....................................................................................92 Lm vic vi bng ca lp ch ....................................................................................93 Lin kt cc bng bng khng gian...................................................................................94 3.V D.................................................................................................................................96 Chng 9 ..................................................................................................................................98 BIU ..................................................................................................................................98 1.LC M HNH BIU ......................................................................................98 2.THAO TC TRN BIU ...........................................................................................98 To biu .......................................................................................................................98 Thay i cc trng xut hin trong biu ..................................................................100 Thay i mu sc ca dy d liu...................................................................................100 Thay i hnh dng biu ............................................................................................100 Thit lp cc trc ca biu .........................................................................................102 Thm tiu cho biu ................................................................................................103 Thay i ch gii trn biu ........................................................................................103 In biu ........................................................................................................................103 3.V D...............................................................................................................................104 Chng 10...............................................................................................................................107 FILE.......................................................................................................................................107 1.M HNH LC I TNG FILE....................................................................107 2.THAO TC TRN FILE.................................................................................................107 Lp File...........................................................................................................................107 LineFile...........................................................................................................................108 TextFile...........................................................................................................................109 ODB................................................................................................................................111 Chng 11...............................................................................................................................112 LU TR V PHN PHI NG DNG..........................................................................112 1.LU TR NG DNG TU BIN TRONG EXTENSION........................................112 To mi mt extension............................................................................................112 Vit cc Script to extension..................................................................................112 Vit cc Script ci t v b ci t extension.......................................................113 Chy th extension......................................................................................................114 Tch hp mt extension vi cc extension khc.............................................................114 1.M HO SCRIPT...........................................................................................................115 3
Trung tam GIS NG DNG MI

Lp trnh Avenue Chng 12...............................................................................................................................117 LP TRNH GIAO DIN.....................................................................................................117 1.GII THIU DIALOG....................................................................................................117 2.CCH LM VIC CA DIALOG................................................................................118 3.CC IU KHIN TRONG DIALOG..........................................................................119 4.TO MT DIALOG V THM CC IU KHIN TRN N.................................120 5.PHN PHI DIALOG VO EXTENSION...................................................................126 6.CC THUC TNH CA CC IU KHIN.............................................................128 Button..............................................................................................................................128 Check box ......................................................................................................................128 Combo box .....................................................................................................................128 Control Panel .................................................................................................................129 Dialog .............................................................................................................................129 Icon box .........................................................................................................................130 Label button....................................................................................................................130 List box ..........................................................................................................................131 Radio button....................................................................................................................131 Slider...............................................................................................................................131 Textbox..........................................................................................................................132 Text label ......................................................................................................................132 Text line.........................................................................................................................133 Tool ................................................................................................................................133 7.V D...............................................................................................................................134 Chng 13...............................................................................................................................137 LIN KT NG DNG.......................................................................................................137 1.TRAO I D LIU NG.........................................................................................137 2.THM CHC NNG VO AVENUE THNG QUA TH VIN LIN KT NG DLL.....................................................................................................................................142 Chng 14...............................................................................................................................148 KT NI D LIU...............................................................................................................148 1.KT NI D LIU DNG HP THOI KT NI.....................................................148 2.KT NI D LIU THNG QUA AVENUE..............................................................150 3.V D...............................................................................................................................152

Trung tam GIS NG DNG MI

Lp trnh Avenue

Chng 1 GII THIU NGN NG AVENUE


1. GII THIU NGN NG AVENUE Cng vi s ra i ca phn mm ArcView, cc nh pht trin phn mm ArcView tch hp trong n mt ngn ng lp trnh Avenue i km. Tuy nn tng pht trin u da trn cc thnh phn xy dng sn bn trong ArcView, nhng vi s h tr ca ngn ng lp trnh Avenue, nhng ngi khai thc phn mm ArcView khng cn l thuc hon ton vo cc cng c c sn trong phn mm ArcView na, Avenue cho php em cc thnh phn c sn ny xy dng nn cc cng c h tr khc nhau. Nhng ngi khai thc phn mm ArcView c th p dng n trong cc lnh vc khc nhau, cc quc gia khc nhau. Vi cc thnh phn c sn, khi ta lm vic vi ngn ng lp trnh Avenue trong ArcView ta khng cn bit bng cch no ngi ta xy dng v hin thc nn cc thnh phn c sn trong ArcView, m ch cn bit cc thnh phn ny c nhng chc nng g, hot ng nh th no l c th em cc thnh phn ny lp rp li vi nhau to nn mt ng dng theo mun. Ngn ng lp trnh Avenue d hc v d s dng, nhng ngi c kin thc cn bn v tin hc v bit s dng ArcView u c th tip cn c ngn ng lp trnh ny. 2. CC C IM CA NGN NG AVENUE Ngn ng lp trnh Avenue l ngn ng kch bn (script) hng i tng Ngn ng lp trnh Avenue khng c tnh nhy cm. Ngn ng lp trnh Avenue l ngn ng bin dch. Ngn ng lp trnh Avenue khng h tr quy. Ngn ng lp trnh Avenue khng cho php to mi hay sa i cc lp c sn trong ArcView. Cc kch bn Avenue khng th thc thi bn ngoi ArcView. Cc biu thc trong Avenue thc thi theo chiu t tri qua phi v khng c u tin ton t. 3. GIAO DIN LP TRNH AVENUE Giao din lp trnh Avenue nm trong Project ca ArcView. m giao din ny, ta theo cc bc sau. M ArcView -> Chn Script -> Nhn vo nt New to mi mt Script. Script mi to c tn ngu nhin l script1. Mun i tn ca Script ny ta vo menu Script, trong hp thoi ny g vo tn script mi trong trng name. Trong mt project ta c th to ra nhiu script khc nhau.

Trung tam GIS NG DNG MI

Lp trnh Avenue

Nt lu Project

Cc nt h tr son tho

Nt dch script

Nt chy script

Nt Nt chy chy tng script bc

Nt t im ngt

Nt xem script h thng Hai nt tr gip

Nt xo im ngt

Nt m mt script

Nt lu script xung file

Trung tam GIS NG DNG MI

Lp trnh Avenue

Chng 2 LP V I TNG
1. I TNG i tng c xem nh s vt hay hin tng m n gm c thuc tnh, cc hnh ng (hay cn gi l hnh vi) v trng thi hin thi ca n. Trong th gii xung quanh ta tn ti rt nhiu i tng khc nhau, v d, mt chic xe hi l mt i tng m cc thuc tnh ca n bao gm: nhn hiu, mu m, mu sc, s lng ca..., chic xe hi ny cng c cc hnh ng hay cc tc ng m ta c th tc ng ln n: khi ng, dng, quay tri, quay phi..., trng thi hin thi ca xe c th l: ang khi ng, ang i hay ang dng.

i tng Xe hi

Thuc tnh Nhn hiu Mu m Mu sc S lng ca

Hnh ng Khi ng Dng Quay tri Quay phi

Trng thi ang khi ng ang di chuyn ang dng

Thng th mt i tng c cc mi quan h vi cc i tng khc. Mt i tng c th l s kt hp ca nhiu i tng: Chng hn, chic xe gm c nhiu i tng gp bn trong n nh mt chic radio, mt bnh li, mt s ch ngi, ... Mt i tng c th s dng cc i tng khc: Xe hi s dng nhin liu di chuyn. Mt i tng c th kt hp vi cc i tng khc: Xe hi i dc theo i l.

Trong ArcView, mi th u c xem l i tng, khi ta m mt khung nhn (view), khung nhn c gi l i tng khung nhn, khi ta thm mt theme mi vo khung nhn, theme c gi l i tng theme. 2. LP Cc i tng c chung cc c tnh c nhm chung li vi nhau ta gi l lp. Mt lp xc nh cc thuc tnh v hnh vi cho mt kiu i tng xc nh. Tt c cc i tng trong cng mt lp u c cng cc thuc tnh. Cc i tng c to ra t cng mt lp c gi l thc th ca lp .

Trung tam GIS NG DNG MI

Lp trnh Avenue Lp xe hi Lp khung nhn

Toyota

Benz

Khung nhn 1

Khung nhn 2

Khung nhn 3

Trong hnh trn, xe Toyota v xe Benz l cc thc th ca lp xe hi, hai chic xe hi ny c thuc tnh (s bnh xe, s cnh ca , ... ). Trong ArcView, khung nhn 1, khung nhn 2, khung nhn 3 l cc thc th ca lp khung nhn. Gia cc lp c mi quan h vi nhau. C 3 mi quan h chnh. Mi quan h tha k (inheritance) Mi quan h gp (aggregation) Mi quan h kt hp (association)

Trong ArcView mi quan h gia cc lp c biu din thng qua lc m hnh i tng. c th lp trnh tt, ngi lp trnh phi bit cch c v hiu c cc lc m hnh i tng ny. Mi quan h tha k Mi quan h tha k l mi quan h dng l mt loi ca. hnh di, xe Sedan l mt loi ca xe hi. Lp xe hi c gi l lp cha, cc lp Sedan, Convertible, Wagon c gi l cc lp con, lp cha nh ngha tt c cc thuc tnh chung m cc xe hi u c. Lp cha cho php cc lp con tha k li cc thuc tnh ca n. lp con, bn thn mi lp con cng c thuc tnh ring ca n, chng hn lp xe Sandan c thuc tnh m lp xe Wagon khng c. Trong lc m hnh i tng, mi quan h tha k c k hiu bng mi tn c du tam gic trng rng: Xe hi

Sedan Mi quan h gp

Convertiblle

Wagon

Mi quan h gp l mi quan h dng l kt hp ca. hnh di, mt chic xe hi l kt hp ca mt ng c, bn bnh xe, mt radio, v mt s ch ngi... Mi quan 8

Trung tam GIS NG DNG MI

Lp trnh Avenue h gp l mi quan h mt chiu. Mt radio l mt thnh phn ca mt chic xe hi, khng c trng hp mt chic xe hi l mt thnh phn ca radio. Trong lc m hnh i tng, mi quan h gp c biu din bng mi tn c u hnh thoi trng rng.

Xe hi

ng c Mi quan h kt hp

Bnh xe

Radio

Ch ngi

Mi quan h kt hp din t v mt vt l hay nim gia cc lp. V d: Xe hi chy trn i l, xe hi c li bi ngi li xe. Xe hi Xe hi Chy trn Li bi i l Ngi

Lc m hnh i tng cng th hin s lng thc th trong lp ny lin quan ti s lng thc th trong lp khc. ng n c ngha ch c mt, hnh trn t en c ngha khng hoc nhiu, hnh trn rng trng c ngh khng hoc mt.

Xe hi

ng c

Bnh xe

Radio

Ch ngi

V d v mt lc m hnh i tng trong ArcView

Trung tam GIS NG DNG MI

Lp trnh Avenue

Ta c lc ny nh sau: Lp View l lp con ca lp Doc, do lp View s tha k c nhng thuc tnh t lp Doc. Lp View c quan h kt hp vi lp Prj, mt lp MapDisplay, lp GraphicList, lp DocumentExtension v lp TOC. Lp View c quan h gp vi lp Theme hay ni cch khc lp View l kt hp ca lp Theme, mt View c nhiu hoc khng c Theme no. Lp GraphicList kt hp vi lp Graphic, GraphicSet. Lp GraphicList kt hp vi khng hay nhiu lp GraphicSet. Lp Theme kt hp vi lp GraphicSet, lp Legend, lp Threshold. Cc lp FTheme, ITheme, DBTheme, GTheme l cc lp con ca lp Theme. Cc lp FTheme, ITheme, DBTheme, GTheme tha k cc thun tnh t lp Theme. Lp Legend l kt hp ca lp TOC, mt TOC c khng hay nhiu Legend. Lp Legend kt hp vi lp LegendExtension. 3. YU CU V CCH GI YU CU TRONG AVENUE Mi th din ra trong ArcView u thng qua yu cu. Khi ta thm mi mt theme vo khung nhn ta gi mt yu cu to mi theme, khi ta ly thng tin t mt i tng chng hn ly tn ca khung nhn, ta gi mt yu cu ly tn ca khung nhn, khi ta i tn ca khung nhn ta gi mt yu cu i tn ca khung nhn. Trong ArcView c hai dng yu cu:
Trung tam GIS NG DNG MI

10

Lp trnh Avenue Yu cu thc th: l loi yu cu ny c gi ti thc th ca lp, v d ta gi mt yu cu ti i tng theme hin th hay che du theme ny. Yu cu lp: L loi yu cu ta gi trc tip ti lp, v d ta gi mt yu cu to mi theme ti lp theme to mi mt theme. Cc lp khc nhau cung cp cc yu cu khc nhau. V d ta c th gi yu cu phng to ti i tng khung nhn, nhng khi gi yu cu phng to ti i tng bng th s b bo li, l do l lp bng khng c yu cu ny. i khi vi cc lp khc nhau nhng c cc yu cu cng tn, hin tng ny trong lp trnh hng i tng ta gi l tnh a hnh. V bn cht th cc yu cu cng tn nhng cc lp khc nhau th chng c x khc nhau. V d, i vi lp theme ta c yu cu Make to mi mt i tng theme, lp Table ta cng c yu cu Make to mi mt i tng bng, nhng kt qu tr v ca hai yu cu ny l khc nhau, mt bn tr v mt theme mi, mt bn tr v mt bng mi. Trong ArcView tn ca yu cu thng bt u l mt ng t, ch ci u c vit hoa. V d: GetProject, FindScript, AddDoc, SetValue, trong Get, Find, Add, Set ch cc hnh ng, Project, Script, Doc, Value nhn cc hnh ng ny. Cc ng t bt u ca cc yu cu dng trong ngn ng Avenue c trnh by trong bng sau.

ng t bt u Add As Can Find Get Has Is Make Return Set

ngha Thm mt i tng khc vo nhm i tng Chuyn i mt i tng thuc lp ny sang mt i tng thuc lp khc Kim tra xem mt i tng c th thc hin c mt chc nng no Tm mt i tng xc nh v tr v tham kho ti n Tr v tham kho ti mt i tng Ch ra nu mt i tng c trng thi xc nh Tr v True hay False To thc th mi To mi mt i tng v tr v tham chiu ti n Gn thuc tnh vo mt i tng

Trung tam GIS NG DNG MI

11

Lp trnh Avenue Gi yu cu ti mt i tng thc hin mt hnh ng no ta vit nh sau. Object.Request Trong Object l i tng m ta cn gi yu cu ti, Request l yu cu m ta cn gi ti i tng Object. V d: To mi mt khung nhn View.Make Cng c th kt qu tr v ca mt yu cu l mt i tng, vi i tng va tr v ta cng c th gi yu cu ti n V d av.GetActiveDoc.GetGUI V d ta cn tm theme c tn l dgt.shp trong khung nhn c tn l Ban do Dong Thap ta phi vit nh sau: av.FindDoc(Ban do Dong Thap).FindTheme(dgt.shp) Vit c cu lnh ny l do ta hiu c s phn cp lp trong ArcView, mun tm mt Theme th ta phi bit theme nm trong khung nhn(view) no, do n nm trong khung nhn l Ban do Dong Thap nn ta tm khung nhn c tn Ban do Dong Thap, sau mi i tm theme dgt.shp trong khung nhn ny. Trong Avenue c hng ngn lp v yu cu khc nhau, ngi lp trnh khng cn phi nh ht tt c cc lp v yu cu, iu quan trng l ngi lp trnh tm ng n lp v yu cu cn dng. Trong khun kh cun sch ny chng ti cng khng trnh by ht tt c cc lp v yu cu trong ArcView m ch trnh by nhng lp v yu cu quan trng hay dng, cn cc lp v cc yu cu khc ngi lp trnh c th tm kim d dng trong phn tr gip ca ArcView.

Trung tam GIS NG DNG MI

12

Lp trnh Avenue

Chng 3 CU TRC NGN NG AVENUE


1. CC KIU I TNG D LIU TRONG AVENUE Kiu i tng s Avenue gom chung s nguyn, thc vo mt lp chung qun l gi l lp s hc. Avenue h tr khi nim s Null, Null l mt i tng kiu s v c gi tr l Null. Gi tr Null sinh ra khi ta thc hin mt tc v s hc khng ng. V d: -4.sqrt s tr v mt gi tr Null Gi tr Null tham gia trong biu thc th biu thc tr v kt qu l Null V d: 2.5*3 + <Null Number> nh dng s Lp s hc, Script v i tng s trong Avenue cung cp thuc tnh Format cho php ta iu khin u ra ca chui dng s. Avenue dng ch d quy c s lng ch s trong chui ra. V d: aNumber.SetFormat(d.dd ): nh dng chui ra cho cho i tng s aNumber t nht mt ch s bn tri v ch c ng hai ch s bn phi. Number.SetDefFormat(d.dd): nh dng chui s ra cho tt c cc i tng s trong project c dng d.dd aScript.SetNumberFormat(d.dd): nh dng chui s ra cho tt c cc i tng s trong script c dng d.dd Khi thc thi, i tng s kim tra nh dng ca chnh n, sau ti script cha n, project cha n, cui cng l dng ca h thng. b nh dng s cho mt i tng s ta truyn vo chui format l rng V d aNumber.SetFormat() Mt s yu cu trn lp s hc c tm tt trong bng sau.

Tn yu cu AsString

Kiu tr v String

ngha Chuyn mt s sang chui Ly mt s bt k trong khong t min ti max 13

MakeRandom(min,max) Number

Trung tam GIS NG DNG MI

Lp trnh Avenue Round Sqrt Number Number Lm trn v dng s nguyn Ly cn bc hai ca mt s

V d: 1234.56.AsString: Kt qu tr v l chui 1234.56 Round(123.34): Kt qu tr v l 123 Sqrt(9): Kt qu tr v l 3 Kiu i tng String Avenue qun l cc chui thng qua lp String. Mt chui c t trong du . V d: abc mua xuan lai den Mt chui cng c th c k t c bit nh k t xung hng nl, du tab tab, cr. V d: Hello world + nl + have a nice day m k t trong chui Ta c th dng yu cu Count xc nh s lng k t trong mt chui V d: T=hello world.Count: T s c gi tr l 11 Php kt ni chui ni hai chui ta dng tc v + hay ++ V d: st = mua xuan + lai den kt qu cho ta chui st l mua xuan lai den Php so snh chui Ta c th dng cc ton t =, <, >, <=, >= so snh hai chui. Trong Avenue khng phn bit ch hoa v ch thng. V d: if (no = NO) then s thc hin on lnh ny end Pht biu if ( iu kin) then ... End L mt pht biu c iu kin trong Avenue, pht biu ny ta s c tm hiu k trong phn cc pht biu trong Avenue.
Trung tam GIS NG DNG MI

14

Lp trnh Avenue Yu cu Contains cho php ta kim tra mt chui c nm trong chui cho trc V d: T=abc cd ef.Contains(cd): T s tr v true v chui cd l chui con ca abc cd ef Php chuyn i chui Yu cu AsNumber cho php ta chuyn mt chui sang s, thc hin c yu cu ny ta phi thc hin yu cu IsNumber trc n, ch khi yu cu IsNumber tr v true th yu cu AsNumber mi c thc hin. V d: S=123.34 If (S.IsNumber) then T=S.AsNumber End Yu cu AsList tr v danh sch cc t trong mt chui. V d: S= This is the world alist=S.AsList Cc php thc thi trn chui Yu cu st.Left(n) tr v mt chui c s lng k t l n k t bn tri chui st. Yu cu st.Right(n) tr v mt chui c s lng l n k t bn phi chui st. Yu cu st.Middle(Offset,nCh) tr v mt chui c nCh k t bt u t v tr Offset. Yu cu st.UCase, st.LCase s chuyn chui st sang dng in hoa hay in thng V d: T=hello world.Left(5) T=hello world.UCase Kiu i tng Pattern Patten l mt String c dng thm cc k t rt ngn biu din, k t * v k t ?. k t * biu din cho khng hay nhiu k t, k t ? biu din cho mt k t. V d: P=Yes*.AsPattern S=Yes, I say Php so snh P=S s cho kt qu l true Dng du \ nu ta ch biu din cho mt k t * V d
Trung tam GIS NG DNG MI

kt qu T=123.34

kt qu S={This,is,the,world}

T l hello T l HELLO WORLD

15

Lp trnh Avenue \* S1=* S2=a Php so snh P=S1 c gi tr l true Php so snh P=S2 c gi tr l false Kiu i tng lun l Lp lun l Boolean ch c hai thc th thuc v n: true v false Mt s yu cu trn lp Boolean c tm tt trong bng sau. chui ny c mt du *

P=\*.AsPattern

Tn yu cu AsString And Not Or Xor

Kiu tr v String Boolean Boolean Boolean Boolean

ngha Chuyn gi tr true hay false sang chui Php And hai gi tr kiu Boolean Php Not mt gi tr kiu Boolean Php Or hai gi tr kiu Boolean Php Xor hai gi tr kiu Boolean

V d: T=true.Astring P=True S=False T=P And S T=P Or S Kiu i tng Nil Lp Nil ch c mt thc th duy nht thuc v n l i tng nil. Trong Avenue ta hay dng gi tr nil ch mt s yu cu khng tr v gi tr no c.
Trung tam GIS NG DNG MI

T =true

T=false T=true

16

Lp trnh Avenue V d: t=av.FindDoc(View1) if (t=nil) then msgbox.info(khong tim thay doi tuong khung nhin View1,Thong bao) end on chng trnh trn s in ra thng ip khong tim thay doi tuong khung nhin View1 nu trong project hin thi ca ta khng c khung nhn c tn l View1. av l i tng ca ng dng ArcView, i tng ny ta s tm hiu trong phn mt s lp v i tng ca Avenue. Msgbox l lp cho php ta thc hin hin th cc thng ip ln mn hnh, lp ny ta s tm hiu trong phn mt s lp v i tng ca Avenue Danh sch Danh sch l tp hp c th t ca cc i tng cha trong n. Cc i tng cha trong sanh sch c th bt k dng no. Mi i tng trong danh sch c gi l mt phn t, v tr ca phn t c xc nh thng qua ch s. Ch s u tin ca danh sch lun lun l 0. Ch s cui cng ca danh sch l List.Count -1. V d: alist={1, 5, a, hello world} danh sch alist c 4 phn t blist={6 , alist, nice } danh sch blist c 3 phn t m phn t th hai l mt danh sch. f = alist.Get(0) ly phn t u tin ca danh sch alist, f c gi tr l 1 l = alist.Get(alist.Count-1) ly phn t cui cng ca danh sch alist, l c gi tr l hello world duyt tng phn t trong danh sch ta hay dng vng lp for V d: For each i in alist Msgbox.info(i.AsString, Phan tu) End hoc For i=0 to alist.Count-1 Msgbox.info(alist.Get(i).AsString,Phan tu) End Pht biu for l mt dng pht biu lp trong Avenue, ta s tm hiu pht biu ny trong phn cc pht biu ca Avenue.
Trung tam GIS NG DNG MI

17

Lp trnh Avenue Ta cng c th thc hin cc php +, - trn danh sch V d: alist={1 ,2 , 4, 5} blist={3, 4, 6, 7} clist=alist + blist dlist=alist- blist clist={1,2,4,5,3,4,6,7} dlist={1 ,2 ,5}

V d sau thc hin vic in ra cc phn t trong mt danh sch alist={pen, ruler, ink, table, chair} for each i in alist msgbox.info(i,Phan tu) end Mt s yu cu trn danh sch c tm tt trong bng sau Tn yu cu Make Add Insert RemoveObj(Obj) Set(i,Obj) Sort(asce) Kiu tr v List List ngha To mi mt danh sch Thm mi mt phn t vo danh sch Chn mt phn t vo u danh sch B phn t Obj trong danh sch Thay th phn t v tr th i bng phn t Obj Sp xp cc phn t trong danh sch, asce l true th sp xp tng dn v ngc li Number Number Object Ly s lng phn t trong danh sch Tm kim phn t Obj trong danh sch Ly phn t v tr th i Xo ht tt c cc phn t trong danh sch 18

Count Find(Obj) Get(i) Empty

Trung tam GIS NG DNG MI

Lp trnh Avenue Stack Ging nh danh sch, Stack cng l tp hp cc i tng c th t nhng Stack c im khc bit l cch thc truy xut cc phn t. Vi Stack ta truy xut cc phn t theo th t Last in, First out (LILO), tc l phn t vo sau cng c ly ra u tin. Lp Stack h tr hai yu cu chnh l push v pop, push dng cho mt phn t vo Stack, pop dng ly mt phn t ra khi Stack. Dictionary Dictionary l mt loi tp hp m ta truy xut vo cc phn t ca n khng theo th t, khc vi danh sch dng ch s l kiu s truy xut vo mt phn t, Dictionary dng kho (key) c kiu bt k xc nh mt phn t trong n. Khi khi to mt Dictionary, ta cn xc nh kch thc ban u cho n, trong lc chy ta c th thm vo Dictionary s lng phn t ln hn kch thc ca n, tuy nhin iu ny s lm tn thi gian truy xut mt phn t. Cc yu cu ca lp Dictionary

Tn yu cu Make(size) Add(key,Value)

Kiu tr v Dictionary Boolean

ngha Khi to mt Dictionary c kch thc l size. Thm vo Dictionary mt phn t c gi tr l Value, kho l key. Nu kho ny tn ti th tr v false v phn t khng thm c vo Dictionary Ly phn t c kho l key trong Dictionary Xo phn t c kho l key trong Dictionary

Get(key) Remove(key) Count

Object

Number

Ly v s Dictionary

phn

trong

V d: d = Dictionary.Make(11) d.Add("List 1", {"a", "b", "d"}) to Dictionary c kch thc l 11 Thm vo d mt danh sch c kho l List 1 Thm vo d mt danh sch c kho l 19

d.Add("List 2", {"What", "Is", "This?"}) List 2


Trung tam GIS NG DNG MI

Lp trnh Avenue d.Add("List 3", {"Goodnight", "Night", "John", "Boy"}) sch c kho l List 3 aList = d.Get("List 1") Bitmap Mt bitmap l mt tp hp c th t v c kch thc c nh ca cc gi tr lun l c gi l cc bit. Gi tr mi bit cho ta bit bit c thit lp hay khng (ngha l true hay l false). Bitmap thng c s dng la chn cc record trong mt bng, vi mi record c chn bit tng ng vi record ny c thit lp gi tr true. Bitmap cn c s dng iu khin cch hin th ca theme, chng hn trong lp ng giao thng ta ch mun hin th cc con ng cao tc, lc ta thit lp mt bitmap ch chn cc con ng cao tc trong lp ng giao thng. Mt s yu cu ca lp bitmap aList ={a,b,d} Thm vo d mt danh

Tn yu cu Make Count Get(i) Clear(i) Set(i) ClearAll

Kiu tr v Bitmap Number Boolean

ngha To mi mt bitmap Ly s lng bit c thit lp trong mt bitmap Tr v true nu bit v tr i c thit lp v ngc li Xo thit lp bit v tr th i Thit lp bit v tr th i Xo tt c cc bit thit lp

V d: abitmap=BitMap.make(5) abitmap.Set(3) t=abitmap.Get(3) Ton t s hc Trong Avenue cc ton t +, -, *, /, mod, div u c xem l cc yu cu.
Trung tam GIS NG DNG MI

to ra mt bitmap c 5 bit thit lp bit v tr th 3 l true t c gi tr l true v bit 3 c thit lp

2. CC TON T TRONG AVENUE

20

Lp trnh Avenue Khi ta vit 3 + 4 c ngha l ta gi mt yu cu + ti i tng 3 yu cu i tng ny thc hin php cng vi i tng 4. Trong Avenue th t u tin ca cc ton t l nh nhau. Trong mt biu thc trnh t thc hin t tri qua phi. V d: 3 + 4* 2 kt qu s cho ta l 14 thay v 11 nh cc ngn ng khc. 3 + (4*2) cho ta kt qu l 11 Ton t logic (lun l) Cc ton t Logic bao gm cc ton t Not, And, Or, Xor gi tr tr v ca cc php ton ny ch l true hoc false. Bng kt qu ca cc php ton nh sau: T: true F: false Php ton And A T T F F B T F T F A And B T F F F

Php ton Or A T T F F B T F T F A Or B T T T F

Php ton Xor A T B T A Xor B F 21

Trung tam GIS NG DNG MI

Lp trnh Avenue T F F F T F T T F

Php ton Not A T F Not A F T

3. BIN V TM VC CA BIN Tn bin trong Avenue c th c k t ch v k t s nhng khng c c cc k t c bit. V d: a, b, myList, myView, _aDoc ... Trong Avenue c 2 loi bin, bin cc b v bin ton cc. Bin cc b l bin ch c tm vc hot ng trong mt script. Bin ton cc l bin c tm vc hot ng trong tt c cc script, tn bin ny c vit bt u bng u _, v d: _alist, _aname. Khi ta khng mun lu li gi tr ca cc bin ton cc na ta gi yu cu ClearGlobals xo i gi tr ca cc bin ton cc. V d: av.ClearGlobals Trong Avenue ta khng cn phi khai bo bin, mt bin khi c gn cho mt i tng no th Avenue t ng hiu bin c kiu l kiu ca i tng c gn. V d: a=nil bin a c kiu l nil a=List.make bin a by gi c kiu l List v a c gn cho mt i tng danh sch mi to. 4. CC PHT BIU Pht biu gn Pht biu gn c dng: bin = i tng Mt bin c gn cho mt i tng no . V d: a=5
Trung tam GIS NG DNG MI

gn cho bin a gi tr 5 22

Lp trnh Avenue myView=av.FindDoc(View1) myView. Pht biu iu kin Pht biu iu kin c ba dng Dng 1 if (biu thc lun l 1) then khi pht biu end V d: if ( i<5) then i=i+1 end Dng 2 if (biu thc lun l 1) then khi pht biu 1 else khi pht biu 2 end V d: if (i<5) then i=i+1 else i=i+2 end Dng 3 if (biu thc lun l 1) then khi pht biu 1 elseif (biu thc lun l 2) then khi pht biu 2 else khi pht biu 3 end
Trung tam GIS NG DNG MI

gn i tng khung nhn View1 cho bin

23

Lp trnh Avenue V d: if (i<5) then i=i+1 elseif(i<10) then i=i+2 else i=i +3 end Pht biu lp Pht biu lp c 2 dng Lp c iu kin while (Biu thc lun l) khi pht biu end Php biu while thc thi khi pht biu lp i lp li nu biu thc lun l l true, khi pht biu c th c thc thi 0 ln, 1 ln hay nhiu ln. Vi pht biu while ta phi xc nh iu kin dng, pht biu while dng khi gi tr ca biu thc lun l l false, nu khng c iu kin dng vng lp s b lp v tn, lc thot khi vng lp ch bng cch l thot khi ArcView. V d i=0 while (i<100) i = i+1 end Trng hp ny vng lp while s thc thi 99 ln. i=1 while (i >0) i=i+1 end Trng hp ny vng lp while s lp v tn do biu thc lun l (i>0) lun tr v gi tr true, thot khi vng lp ta phi ng ArcView. Lp khng c iu kin for each ele in Col khi pht biu
Trung tam GIS NG DNG MI

24

Lp trnh Avenue end Vng lp for duyt qua cc phn t trong tp hp Col, tp hp Col c th l mt khong nhy, mt danh sch, mt bitmap, mt dictionary hay mt tp lp bt k. Nu cc phn t c th t, th vng for duyt theo th t , ngc li for duyt theo mt th t bt k. V d: for each i in 0..10 by 2 msgbox.info(i.AsString,) end for each i in alist msgbox.info(i.AsString,) end iu khin bn trong vng lp Avenue cung cp hai pht biu Break v Continue cho php ta iu khin bn trong vng lp. Pht biu Break cho php thot ra khi vng lp for hay vng lp while. V d i=0 while (true) if (i>5) then Break end i=i+1 end Vng lp while s kt thc ngay khi i c gi tr l 5. Pht biu Continue b qua vng lp hin thi v chuyn sang vng lp k tip. V d: for each i in 1..100 if ((i mod 5)=0) then continue end msgbox.info(i khong chia het cho 5, thong bao) end 25

Trung tam GIS NG DNG MI

Lp trnh Avenue 5. IU KHIN GIA CC SCRIPT Avenue cung cp hai pht biu cho ta iu khin gia cc script: Pht biu Return v pht biu Exit Pht biu return Pht biu return c dng return <anObject> . Pht biu return tr v mt i tng cho Script gi. Pht biu return lun c i s. V d Script gi re=av.run(getAction,Xanh) msgbox.info(re, chi dan chay xe) script getAction if (self=do) then return dung elseif (self=xanh) then return di else return coi chung end Pht biu exit Pht biu exit kt thc s thc thi ca script ang chy. V d theView=av.getActiveDoc for each t in theView.GetThemes if (t.IsVisible=false) then exit end end 6. I TNG AV V T KHO SELF i tng av Khi ta m ArcView, ta to mt i tng ng dng ArcView, i tng ny cha mt project, trong project ny cha tt c cc i tng m ta c th lm vic vi chng. Trong phn cp lp ca ArcView, i tng ng dng l i tng phn lp cao nht, i tng ny gi l av.
Trung tam GIS NG DNG MI

26

Lp trnh Avenue V d: Ly v i tng project hin thi theProject=av.getProject Ly v ca s lm vic hin hnh theView=av.getActiveDoc av cn dng gi mt script trong script khc. C 2 cch gi script dng av. Dng av.run V d: av.run(myscript,{}) rng av.run(ascript,{1,5,7}) Dng av.delayedRun gi mt Script sau mt khong thi gian no ta dng av.delayedRun V d: script c tn l Annoy status = MsgBox.YesNo( "Is this annoying?", "ANNOY", FALSE ) if (NOT status) then av.DelayedRun( "annoy", "", 10 ) end Vi script ny c 10 giy li hin th thng ip nh sau c 10 giy li gi chnh n gi script c tn myscript cung cp i s l danh sch gi script c tn script vi i s l danh sch {1,5,7}

Nu ta kch vo nt No th 10 giy tip theo ta li thy thng ip ny hin th ln, nu ta kch vo nt Yes th on script annoy kt thc thc thi. T kho self Self thng dng tham kho ti i tng gy ra s kin chy script, khi nhn chut vo mt button th ta c th dng self tham kho n button ny. Self cn dng ly v tham s truyn t script khc gi n. 27

Trung tam GIS NG DNG MI

Lp trnh Avenue V d: script1 c ni dung nh sau tinh tong cua 2 so a, b a=10 b=20 tong=av.run(script2,{a,b}) script2 c ni dung nh sau a=self.get(0) b=self.get(1) c=a+b return c Khi chy script1, gi tr ca tng tr v l 30 7. LP MSGBOX V DIALOG Lp MsgBox Lp Msgbox cung cp cc yu cu cho php hin th cc hp thoi ln mn hnh, hp thoi c th l mt thng ip, mt cu cnh bo, mt hp thoi nhp chui, hp thoi chn cc phn t ... hin th mt thng ip ln mn hnh. Ta dng Msgbox.info(msg,title), trong msg l thng ip ta cn hin th, title l tiu ca hp thoi V d: Msgbox.info(Hello world, Thong bao) Hp thoi s xut hin nh sau

hin th mt banner ln mn hnh, ta dng hp thoi Msgbox.banner( anImageFileName, duration, title ), trong anImageFileName l ng dn ti file hnh nh cn hin th c dng .tif, .im, .rs, .xbm, .bmp, and .gif, duration l thi gian hin th tnh bng giy, title l tiu ca hp thoi. V d: Msgbox.Banner(c: \GISLogof.GIF.AsFileName,5,Logo)
Trung tam GIS NG DNG MI

28

Lp trnh Avenue Hp thoi xut hin nh sau trong vng 5 giy

hin th hp thoi c 2 nt Yes v No, ta dng hp thoi Msgbox.YesNo ( aMsg, aTitle, defaultIsYes ), trong aMsg l thng ip ca hp thoi, aTitle l tiu ca hp thoi, defaultIsYes l true th button yes c chn. V d: a=Msgbox.YesNo(Chon Yes hay No, Yes & No, true) a c gi tr l true nu ta click vo nt Yes, false nu ta click vo nt No

hin th hp thoi cho php ngi s dng chn mt phn t trong danh sch, ta dng hp thoi Msgbox.ChoiceAsString(alist,aMsg,aTitle), trong alist l danh sch cc phn t, aMsg l thng ip ca hp thoi, aTitle l tiu ca hp thoi. V d: alist= {a,b,c,d} a= Msgbox.ChoiceAsString(alist,Chon mot phan tu,Chon)

a tr v tn ca phn t trong danh sch c chn nu ta click vo nt OK, ngc li a c gi tr l nil.

Trung tam GIS NG DNG MI

29

Lp trnh Avenue Ngoi ra cn mt s cc hp thoi thng ip sau. Tn ngha

Msgbox.Input (aMsg, aTitle, Hp thoi cho php nhp vo mt chui defaultString)

Msgbox.Report ( aLongMsg, Hp thoi cho php xut ra report gm nhiu hng aTitle ) Msgbox.List ( aList, aMsg, Hp thoi cho php chn mt phn t trong danh aTitle ) sch Msgbox.YesNoCancel Hp thoi gm 3 nt Yes, No v Cancel ( aMsg, aTitle, defaultIsYes ) Msgbox.ListAsString ( aList, Hp thoi cho php ngi s dng chn mt phn aMsg, aTitle ) t trong danh sch MsgBox.MultiList aMsg, aTitle) (aList, Hp thoi cho php ngi s dng chn nhiu phn t trong danh sch

Dialog Dialog chn file: FileDialog Dialog chn file cung cp ta hp thoi cho php chn mt file trn a. hin th hp thoi chn File ta vit f =FileName.Show ( aPattern, aPatternLabel, FileWinTitle ) Trong aPattern l mt chui ch dng m rng ca file cn m v d *.ave, *.gif aPatternLabel ch tn ca loi file FileWinTitle l tiu ca hp thoi to mt file mi ta vit FileDialog.Put (defaultFileName, aPattern, FileWinTitle) Trong : defaultFileName: tn file cn to aPattern: chui ch ui m rng ca file cn to FileWinTitle: tiu ca hp thoi

Trung tam GIS NG DNG MI

30

Lp trnh Avenue V d: M mt file avenue, gn file ny vo f f=FileDialog.Show ( *.ave,Avenue,Mo file ) if (f<> nil) then msgbox.info(f.AsString,Thong bao) end To mi mt file f=FileDialog.Put ( *.ave.AsFileName,Avenue,Tao file ) if (f<> nil) then msgbox.info(f.AsString,Thong bao) end Mt s yu cu ca FileDialog

Tn yu cu

Kiu tr v

ngha M hp thoi FileDialog, sn ln Dialog c tn l defaultFileName, trng hp ny ta thng m lu file M hp thoi FileDialog, trng hp ny ta thng dng m nhiu file M hp thoi FileDialog, trng hp ny ta thng to mi mt File

Put (defaultFileName, FileName aPattern, FileWinTitle )

ReturnFiles (Patterns, List Labels, aTitle, defaultPatternIndex ) Show ( aPattern, aPatternLabel, FileTitle ) FileName

8. V D V d 1: Vit script tnh tng ca cc phn t trong mt danh sch gm cc i tng kiu s. Hng dn: script tinhtong alist={1,3,5,6,3,2,25,30} tong=0 for each i in alist tong=tong + i
Trung tam GIS NG DNG MI

31

Lp trnh Avenue end msgbox.info(tong cac phan tu trong danh sach + tong.AsString, Tong) V d 2: Vit script tm s ln nht ca 3 s Hng dn: script timmax a=4 b=5 c=7 m=a if ((a>=b) and (a>=c)) then m =a elseif ((b>=a) and (b>=c)) then m=b elseif ((c>=a) and (c>=b)) then m=c end V d 3: Cho mt danh sch bt k, tm cc phn t c kiu s. V d: alist={123, 45, cd, ef, 6,55} blist={123,45,6} Hng dn: alist={123,45,cd,ef,6} blist={} for each i in alist if (i.getClass.getClassName=Number) then blist.add(i) end end Yu cu getClass ly v lp ca mt i tng, yu cu getClassName tr v tn ca mt lp. V d 4: Vit script nhp vo mt chui v m cc ch s trong chui. V d: st=co non 123 xanh ron 22 chan troi 89 canh le 671 trang diem 45 mot vai 609 bong hoa , th s lng s 0 l 1 s, s lng s 1 l 2 s, ... Hng dn: st=msgbox.input("Nhap vao mot chuoi","Nhap chuoi","") sokhong = 0 somot = 0 sohai = 0 soba=0 sobon=0 sonam=0 sosau=0 sobay=0 sotam=0 32

Trung tam GIS NG DNG MI

Lp trnh Avenue sochin=0 i=0 while (i<st.count) ch= st.Middle(i,1) if (ch="0") then sokhong=sokhong + 1 elseif (ch="1") then somot=somot + 1 elseif (ch="2") then sohai=sohai + 1 elseif (ch="3") then soba=soba + 1 elseif (ch="4") then sobon=sobon + 1 elseif (ch="5") then sonam=sonam + 1 elseif (ch="6") then sosau= sosau + 1 elseif (ch="7") then sobay=sobay + 1 elseif (ch="8") then sotam=sotam + 1 elseif (ch="9") then sochin=sochin + 1 end i = i+1 end Bi tp phn 3 Bi tp 1: Vit script tm s ln nht ca mt danh sch cc phn t kiu s. Bi tp 2: Vit script sp xp tng dn cc phn t kiu s trong mt danh sch (cc phn t trong danh sch kiu s). Bi tp 3: Vit script dng Msgbox.input nhp vo n phn t, sau in ra message gi tr trung bnh ca n phn t ny. Bi tp 4: Vit Script i mt chui c cc ch ci u thnh ch hoa VD: truong dai hoc bach khoa s c i thnh Truong Dai Hoc Bach Khoa Bi tp 5:
Trung tam GIS NG DNG MI

33

Lp trnh Avenue Vit script gii phng trnh bc 2 Bi tp 6: Vit script tnh phng sai ca mt tp im.

Trung tam GIS NG DNG MI

34

Lp trnh Avenue

Chng 4 TO NG DNG TU BIN


1. THAY I GIAO DIN AVENUE Gii thiu To ng dng tu bin l cch thay i giao din ArcView theo ca ngi s dng, ArcView cho php ta thm mi, xo, chnh sa menu, button, tool thm ch c th thay i giao din ArcView thnh giao din ngn ng no phc v cho nhu cu ring ca tng lnh vc, tng vng. thm mi, xo, chnh sa mt menu, button, tool . Kch i vo ca s giao din ArcView nh hnh.

Kch i vo y thay i cc menu, button, tool, Popup menu Hp thoi chnh sa nh hnh sau

Trung tam GIS NG DNG MI

35

Lp trnh Avenue

Trong hp thoi chnh sa ny ta c th thc hin cc thao tc thm mi, chnh sa, xo cc iu kin trn giao din. To giao din mi To mi mt Menu to mi mt Menu ta lm nh sau: M hp thoi chnh sa. Chn Menus trong Caterogy Nhn vo nt New Menu. Mt Menu c tn ngu nhin l Menu mi c to ra. Kch i vo mc Label i tn ca Menu, i tn ca menu l Thong diep to mi mt menu con cho menu ny ta nhn vo nt New Item. Mt menu con c tn l Item c to ra. Doube click vo mc Label i tn ca Item ny, i tn menu l Thong diep 1 ng hp thoi chnh sa giao din, ta thy xut hin trn menu ca ArcView mt menu c tn l Thong diep

Trung tam GIS NG DNG MI

36

Lp trnh Avenue

Khi ta chn vo menu con Thong diep 1 ta khng thy c s kin no xy ra, iu ny do ta cha gn mt script no cho s kin chn menu con ny. By gi ta tin hnh gn mt script cho s kin chn Menu con ny. M hp thoi chnh sa giao din Chn memu con Thong diep 1 Kch i vo mc Click

Kch i vo y gn Script cho s kin kch

Kch i vo y to tooltip Kch i vo y t nhn

Hp thoi yu cu xc nh script cho menu ny xut hin.

Trung tam GIS NG DNG MI

37

Lp trnh Avenue

Trong hp thoi ny ta chn Script cho c sn hoc nhn vo nt New to mi mt script cho menu ny. Nhn vo nt New trong hp thoi Script Manager to mi mt script. t tn cho script ny l Menu1 Trong giao din son tho script, ta g vo script sau.

tenMenu=self.getLabel msgbox.info(Ban vua chon vao menu + tenMenu ,Thong bao) ng giao din son tho script, quay v ca s giao din khung nhn, ta chn vo menu con Thong diep 1, lc mn hnh xut hin hp thoi thng ip nh sau.

xo Menu Thong diep ta vo hp thoi chnh sa giao din, chn Menu ny v nhn vo nt Delete.

To mi mt Button
to mi mt button ta lm nh sau M hp thoi chnh sa giao din Chn Buttons trong Caterogy Nhn vo nt New. Mt Button mi c to ra, button ny cha c Icon. Kch i vo mc Icon chn Icon cho button ny.

Trung tam GIS NG DNG MI

38

Lp trnh Avenue

Double click vo y gn Icon

Hp thoi chn Icon hin ra nh hnh.

Chn Icon c tn l Star, nhn vo nt OK t Tooltip cho Button bng cch Kch i vo mc Help, g vo dng Day la mot button//y l mt button ng hp thoi chnh sa giao din, ta thy xut hin trn Buttonbar ca ArcView mt Button mi.

Trung tam GIS NG DNG MI

39

Lp trnh Avenue

Khi ta nhn vo button mi ny ta khng thy c s kin no xy ra, iu ny do ta cha gn mt script no cho s kin click ca button ny. By gi ta tin hnh gn mt script cho s kin click button ny. M hp thoi chnh sa giao din Chn button mi to Kch i vo mc Click, hp thoi yu cu xc nh script cho menu ny xut hin. Nhn vo nt New trong hp thoi Script Manager to mi mt script. t tn cho script ny l Button1 Trong giao din son tho script, ta g vo script sau. msgbox.info(Wow, Ban vua click vao toi ,Thong bao) ng giao din son tho script, quay v ca s giao din khung nhn, ta click vo Button mi to, lc mn hnh xut hin hp thoi thng ip nh sau.

xo button mi to ta vo hp thoi chnh sa giao din, chn Button va to v nhn vo nt Delete.

To mi mt ToolMenu
to mi mt ToolMenu ta lm nh sau M hp thoi chnh sa giao din Chn Tools trong Caterogy Nhn vo nt Tool. Mt Tool mi c to ra, Tool ny cha c Icon. Kch i vo mc Icon chn Icon cho Tool ny. Hp thoi chn Icon hin ra nh hnh. 40

Trung tam GIS NG DNG MI

Lp trnh Avenue

Chn Icon c tn l Index, click vo nt OK t Tooltip cho Tool bng cch Kch i vo mc Help, g vo dng Day la mot Tool//y l mt Tool Vi Tool ta c th xt hnh dng ca con tr chut sau khi chn Tool, xt hnh dng con tr chut ta Kch i v Cursor. Hp thoi Picker xut hin nh sau:

Ta chn vo Cursors.Bullseye v nhn vo nt OK ng hp thoi chnh sa giao din, ta thy xut hin trn Toolbar ca ArcView mt Tool mi.

Tool mi to
Trung tam GIS NG DNG MI

41

Lp trnh Avenue Khi ta nhn vo Tool mi ny sau a tr chut vo khung nhn ta tht tr chut i sang dng vng trn trong rng, nhn vo mt v tr bt k trn khung nhn ta khng thy c s kin no xy ra, iu ny do ta cha gn mt script no cho s kin Apply ca Tool ny. By gi ta tin hnh gn mt script cho s kin Apply Tool ny. M hp thoi chnh sa giao din Chn Tool mi to Kch i vo mc Apply, hp thoi yu cu xc nh script cho menu ny xut hin. Nhn vo nt New trong hp thoi Script Manager to mi mt script. t tn cho script ny l Tool1 Trong giao din son tho script, ta g vo script sau. msgbox.info(Wow, Ban vua click vao khung nhin ,Thong bao) ng giao din son tho script, quay v ca s giao din khung nhn, ta nhn vo Tool mi to, a tr chut vo khung nhn v nhn ta thy hp thoi thng ip xut hin nh sau:

xo Tool va to ta vo hp thoi chnh sa giao din chn Tool ny v nhn vo nt Delete. Tool cng c s kin click nhng s kin ny ta t dng, s kin click ca Tool ch xy ra khi ta nhn vo Tool, cn s kin Apply xy ra khi ta chn Tool v nhn vo khung nhn.

To mi mt Popup Menu
to mi mt popup menu ta lm nh sau: M hp thoi chnh sa giao din Chn Popups trong Caterogy Trong hp thoi chnh sa giao din ta thy c sn mt Popup Memu c tn l Menu, ta chn n v xo n bng Click vo nt Delete. Nhn vo nt New Popup. Mt Popup Menu mi c to ra. 42

Trung tam GIS NG DNG MI

Lp trnh Avenue Nhn vo nt New Item to mi mt menu con cho Popup menu ny. Vo mc Label t tn cho menu con ny l Popup1 ng hp thoi chnh sa, ra khung nhn, kch chut phi vo khung nhn ta thy xut hin nh sau

Khi ta nhn vo Popup1 ta khng thy c s kin no xy ra, iu ny do ta cha gn mt script no cho s kin click ca Popup1. By gi ta tin hnh gn mt script cho s kin click ca Popup1. M hp thoi chnh sa giao din Chn Popup1 Kch i vo mc Click, hp thoi yu cu xc nh script cho menu ny xut hin. Nhn vo nt New trong hp thoi Script Manager to mi mt script. t tn cho script ny l Popup1 Trong giao din son tho script, ta g vo script sau. ng giao din son tho script, quay v ca s giao din khung nhn, nhn phi chut vo khung nhn, click vo Popup1, lc mn hnh xut hin hp thoi thng ip nh sau. 43

msgbox.info(Wow, Ban vua click vao toi ,Thong bao)

Trung tam GIS NG DNG MI

Lp trnh Avenue

xo Popup menu mi to ta vo hp thoi chnh sa giao din, chn Popup menu ny v nhn vo nt Delete. Ngoi ra cc Menu, Button, Tool, Popup Menu cn cc thuc tnh sau: Disabled: Xt tnh kch hot hay khng kch hot cho i tng Help Topic: Ni dung gip Invisible: Hin th hay khng hin th i tng ny Tag: Mt chui c gn vo i tng phn bit vi i tng khc Update: Update l s kin xy ra khi ta thc hin mt thao tc no , c s kin ny ta phi gn Script vo s kin ny cho i tng.

Xt kch hot hay khng

t help

t tag

S kin Update 44

Trung tam GIS NG DNG MI

Lp trnh Avenue

2. GIAO DIN TI LIU NGI DNG DocGUI Mt giao din ti liu ngi dng (DocGUI) l mt tp cc iu khin trn giao din ca mt loi ti liu c th. V d loi ti liu khung nhn c chung mt giao din ti liu ngi dng m ti liu giao din ngi dng ny gm c cc Menu, cc Button, cc Tool v cc PopupMenu. Avenue dng i tng av hay i tng project qun l tt c cc ti liu giao din ngi dng. V d: Ly v tn ca tt c cc loi ti liu giao din ngi dng trong mt Project alist=av.getProject.GetGUIs MsgBox.MultiList (alist, Tai lieu giao dien nguoi dung,Tai lieu giao dien nguoi dung) Kt qu chy script ny nh sau:

Vy trong mt Project ca ArcView c tt c 7 loi ti liu giao din ngi dng: View, Table, Chart, LayOut, Script, Project, Appl Ch mt ti liu giao din ngi dng c nhiu ti liu ng vi n.V d ti liu giao din khung nhn (View) c rt nhiu khung nhn ng vi n, l tt c cc khung nhn ta to ra trong Project. V d sau ly v thanh ToolBar trong ti liu giao din ngi dng View theView=av.FindGUI(view) theToolBar=theView.getToolBar (view) tm ti liu giao din ngi dng view ly v thanh ToolBar trong ca s khung nhn

V d tm ti liu khung nhn c tn l Ban do tinh dong thap myView=av.FindDoc(ban do tinh dong thap)
Trung tam GIS NG DNG MI

45

Lp trnh Avenue if (myView <>nil) then nu c ... end V d tm giao din ti liu khung nhn ng vi ti liu c tn l Ban do tinh dong thap myGui=av.FindGUI(Ban do tinh dong thap) 3. CC LP I TNG IU KHIN Giao din ti liu ngi dng (DocGUI) l tp tt c cc iu khin m ta c th s dng tng tc vi ti liu . Chng hn trong ca s khung nhn (View) ta c cc loi iu khin l Menubar, Buttonbar, Toolbar v Popup Menu. Avenue dng cc lp qun l cc iu khin ny, ngoi cch ta dng hp thoi chnh sa giao din thm mi, xo, sa mt iu khin ta cn c th vit lnh iu khin cc i tng ny. 3.1 Lp MenuBar Lp MenuBar qun l tt c cc Menu trn thanh MenuBar (v d menu File, menu Edit, menu View... trong ca s khung nhn). to mi mt menu con trong Menu (v d to mi menu con Cut Themes, Copy Themes trong menu Edit) ta dng lp Menu con l Choice.

Du cch Menu Menu con

Bn thn Menu l mt danh sch, n xem cc Menu con, cc du cch l cc phn t ca n. V d sau hin th tt c cc menu con trong menu Theme ca s khung nhn. aMenu = av.GetActiveGUI.GetMenuBar.FindByLabel (Theme) for each c in aMenu if (c.getClass.getClassname=Choice) then msgbox.info(c.getLabel,SubMenu)
Trung tam GIS NG DNG MI

46

Lp trnh Avenue end end V d sau thc hin vic to mi mt Menu c tn l Khung nhin, trong menu Khung nhin c cc menu con l Phong to v Thu nho theMenuBar = av.GetActiveGUI.GetMenuBar aMenu=Menu.Make aMenu.setLabel("Khung nhin") ' gan menu nay vao thanh menubar theMenuBar.Add(aMenu,theMenuBar.getControls.count) aChoice=Choice.Make aChoice.setLabel("Phong to") aChoice.setClick(Phongto) gn script c tn l phng to vo menu con ny aMenu.Add(aChoice,aMenu.getControls.count) aChoice=Choice.make aChoice.setLabel("Thu to") aChoice.setClick(Thunho) gn script c tn l thu nh vo menu con ny aMenu.Add(aChoice,aMenu.getControls.count) xo mt menu trn thanh MenuBar ta dng yu cu theMenubar.Remove(aMenu) trong aMenu l Menu cn xo. xo mt menu con trong menu ta dng yu cu aMenu.Remove(aChoice), trong aChoice l Menu con trong aMenu. Cc yu cu ca lp Menu

Tn yu cu Make GetLabel SetLabel(aLabel) FindByLabel(aLabel)

Kiu tr v Menu String

ngha To mi mt Menu Tr v nhn ca Menu Thit lp nhn cho Menu

Choice

Tm kim Menu con theo tn nhn

Cc yu cu ca lp Menu con (Choice) 47

Trung tam GIS NG DNG MI

Lp trnh Avenue Tn yu cu Make GetClick Kiu tr v Choice String ngha To mi mt menu con (Choice) Tr v tn ca Script m gn vo s kin Click ca Menu con (Choice) Tr v nhn ca Menu con (Choice) Gn script c tn l aScript v s kin Click ca Menu con (Choice)

GetLabel SetClick(aScript)

String

3.2 Lp ButtonBar Lp ButtonBar qun l tt c cc Button trn thanh ButtonBar. Ta dng lp Button to mi mt Button trc khi gn Button ny vo thanh Buttonbar V d m s lng Button trn thanh ButtonBar trong ca s hin hnh. theButtonBar = av.GetActiveGUI.GetButtonBar msgbox.info(So luong button tren thanh ButtonBar: + theButtonBar.getControls.count.Asstring , So luong Button) V d thm mi mt Button vo thanh ButtonBar trong ca s hin hnh. theView = av.GetActiveGUI theButtonBar=theView.getButtonBar aButton=Button.Make ly Icon c tn l Down gn vo Button for each ico in IConMgr.GetIcons if (ico.getName=Down) then tmp=ico end end aButton.SetIcon(tmp) aButton.setClick(test) gn script test vo s kin click ca button theButtonBar.Add(aButton,theButtonbar.getControls.count) ly v giao din ti liu khung nhn ly v thanh ButtonBar to mi mt Button

Trung tam GIS NG DNG MI

48

Lp trnh Avenue xo mt Button trn thanh ButtonBar ta dng yu cu theButtonBar.remove(aButton), trong aButton l Button m ta cn xo i. Cc yu cu ca lp Button

Tn yu cu Make GetClick

Kiu tr v Button String

ngha To mi mt Button Tr v tn ca Script m gn vo s kin Click ca Button Tr v Icon ca Button Gn Icon aIcon cho Button

GetIcon SetIcon(aIcon)

Icon

3.3 Lp Toolbar Lp ToolBar qun l tt c cc Tool, ToolMenu. ToolMenu l mt danh sch cc Tool.

Tool

ToolMenu

V d thm mi mt ToolMenu vo thanh ToolBar. aToolMenu=ToolMenu.make controls=aToolMenu.getControls numTools=msgbox.input(Nhap vao so luong Tool: ,ToolMenu, 2) if ((numTools=nil) or (numTools.IsNumber.Not)) then exit else
Trung tam GIS NG DNG MI

49

Lp trnh Avenue numTools=numTools.AsNumber end for each i in 1..numTools controls.Add(Tool.make) end theGui=av.getActiveGUI theGUI.getToolBar.add(aToolMenu,-1) xo mt Tool trong thanh ToolBar ta dng yu cu theToolBar.Remove(aTool), trong aTool l Tool m ta cn xo. Cc yu cu ca lp Tool

Tn yu cu Make GetApply SetApply(aScript) GetClick SetClick(aScript) GetIcon SetIcon(aIcon) Select IsSelected

Kiu tr v Tool String

ngha To mi mt Tool Tr v tn ca script gn vo s kin Apply ca Tool Gn script aScript vo s kin Apply ca Tool

String

Tr v tn ca Script gn vo s kin Click ca Tool Gn script aScript vo s kin Click ca Tool

Icon

Tr v Icon ca Tool Gn Icon aIcon vo Tool Chn Tool ny

Boolean

Kim tra xem Tool c c chn khng

Cc yu cu ca lp ToolMenu

Trung tam GIS NG DNG MI

50

Lp trnh Avenue Tn yu cu Make FindByScript (aScript) Kiu tr v ToolMenu Tool ngha To mi mt ToolMenu Tm mt Tool trong ToolMenu c Script trong s kin Apply l aScript Gn Script aScript vo s kin Apply ca Tool c chn trong ToolMenu Gn Script aScript vo s kin Click ca Tool c chn trong ToolMenu Gn Icon aIcon vo Tool c chn trong ToolMenu Thm mt Tool vo ToolMenu c v tr nm sau afterIndex Xo aTool trong ToolMenu List Tr v danh sch cc Tool trong ToolMenu

SetApply (aScript)

SetClick (aScript)

SetIcon (aIcon) Add (aTool,afterIndex)

Remove ( aTool ) GetControls

3.4 Lp PopupSet Lp Popupset qun l tt c cc Popup menu trong mt giao din ti liu ngi dng no . Mi Popup Menu c cc Menu con qun l bi lp Choice. V d ly v ton b cc Popup menu trong ca s khung nhn theView=av.FindGui(View) thePopupset=theView.GetPopups for each pop in thePopupset msgbox.info(Ten: + pop.getLabel, Popup menu) end xo mt Popup menu ta dng yu cu thePopupset.remove(aMenu), trong aMenu l PopupMenu m ta cn xo. xo mt Menu con trong Popup menu ta dng yu cu aMenu.remove(aChoice), trong aChoice l Popup menu con ta cn xo.
Trung tam GIS NG DNG MI

51

Lp trnh Avenue Cc yu cu ca lp PopupMenu

Tn yu cu FindByLabel (aLabel)

Kiu tr v Popup Menu

ngha Tm mt Popup Menu c nhn l aLabel trong PopupSet Tr v Popup Menu tch cc trong PopupSet Thit lp tch cc cho Popup Menu aPopup

GetActive SetActive(aPopup)

Popup Menu

V D V d 1: To mi mt Menu gm cc menu con nh sau

Khi ta chn vo mc Phong to th khung nhn s phng to, khi ta chn vo mc Thu nho th khung nhn s thu nh. Hng dn: Dng hp thoi chnh sa giao din to ra Menu Khung nhn c 2 menu con l Phong to v Thu nho. Gn script sau vo s kin Click trong menu Phong to theView = av.GetActiveDoc theView.GetDisplay.ZoomIn(125) theView = av.GetActiveDoc theView.GetDisplay.ZoomOut(125) GetDisplay tr v khu vc hin th trn khung nhn, ZoomIn v ZoomOut thc hin thao tc phng to hay thu nh vng hin th. V d 2: To mi mt Tool, Tool ny cho php xc nh to trn khung nhn Hng dn: Dng hp thoi chnh sa to ra mt Tool mi, gn script sau vo s kin Apply ca Tool ny. theView = av.GetActiveDoc
Trung tam GIS NG DNG MI

ly v khung nhn ang xt thc hin thao tc phng to

Gn script sau vo s kin click trong menu Thu nho

52

Lp trnh Avenue ly v im trn khung nhn p=theView.GetDisplay.ReturnUserPoint Hin th to ca im ny msgbox.info(Toa do X: p.GetY.Asstring ,Toa do) + p.GetX.AsString + Toa do Y: +

V d 3: Thm mt menu con c tn l GUI vo menu View trong giao din khung nhn, khi chn menu ny th s xut hin cu thng bo ang lm vic giao din ti liu ngi dng no. Gii bng hai cch dng hp thoi chnh sa giao din v bng vit lnh. Hng dn: Dng hp thoi chnh sa giao din Thm vo Menu View mt menu con GUI. Trong s kin click ca menu ny ta gn vo script c tn ViewGUI vi ni dung nh sau. Msgbox.info(GUI hien tai: + av.GetActiveGUI.GetType ,GUI) Dng cch vit lnh To mt script c tn MakeMenu c ni dung nh sau: theGui=av.FindGui(View) theMenuBar=theGui.GetMenuBar theMenu=theMenuBar.FindByLabel(view) aChoice=Choice.Make aChoice.setLabel(GUI) aChoice.setClick(ViewGUI) theMenu.Add(aChoice, theMenu.getControls.count) Bi tp chng 4 Bi tp 1: Trong ca s ti liu khung nhn to mi 3 Button nh sau . Khi nhn vo Button c nhn l 1 th mt Button c nhn l 2, Khi nhn vo Button c nhn l 2 th mt Button c nhn l 1, Khi nhn vo Button c nhn l 3 th xut hin c hai Button c nhn l 1 v 2. Bi tp 2. Vit script thm mt Menu con c tn l NumRow vo Menu Table trong ti liu giao din ngi dng Table. Bi tp 3. Vit Script xut ra tn ca tt c cc khung nhn trong Project hin ti. 53

Trung tam GIS NG DNG MI

Lp trnh Avenue

Chng 5 KHUNG NHN V LP CH


1. LC M HNH I TNG CA KHUNG NHN (VIEW) V LP CH (THEME)

Nhn vo m hnh i tng bn trn, ta thy rng View l mt loi ca document (DOC). N c cha ng bn trong mt ca s m ta c th m, ng, thay i kch c hoc di chuyn n. Mt View c th cha ng khng hoc nhiu Theme, n cng c bng ni dung (TOC) hin th ch gii cho mi Theme, c vng hin th bn (Map Display) v n cng cha ng mt tp cc i tng ho (graphics) nh vng trn, hnh ch nht, ng thng, nhn m ta c th v trn vng bn lm ni bt cc i tng khng gian trn bn . 2. KHUNG NHN V LP CH To mi mt khung nhn to mi mt View ta s dng yu cu Make v gi yu cu Make n lp View myView=View.Make Khi to ra View, ta cn t tn cho n. Yu cu SetName cho php ta t tn cho View, s dng yu cu ny, cn truyn vo mt i s c kiu String. i s ny chnh l tn View cn t. myView.SetName(Khung nhn bi tp chng 6) Lc ny ta to c mt View mi c tn l Khung nhn bi tp chng 6 trong n, by gi ta cn m View ny ln c th nhn v thao tc trn View. m
Trung tam GIS NG DNG MI

54

Lp trnh Avenue View, ta cn phi ly c ca s ca View. Yu cu GetWin s tr v ca s ca View. theWindow = myView.GetWin Yu cu Open s cho php m ca s View theWindow.Open Nu mun ca s View ny hin th ln trn tt c cc ca s khc ca n, hy s dng yu cu Activate. theWindow.Activate Tm kim mt khung nhn Tng tng ta cn tm n mt View vi tn bit trc nh Khung nhn bi tp chng 6. lm c iu ny trong ArcView, trc tin m ca s n (Project) v sau tm tn Khung nhn bi tp chng 6 trong GUI View. Tng t nh vy, vit cc lnh tm View trong Avenue, u tin phi tm n n (Project) bng yu cu GetProject theProject = av.GetProject V View l mt hin thc ca lp document (DOC) nn tip theo ta cn s dng yu cu FindDoc tm n View myView = theProject.FindDoc(Khung nhn bi tp chng 6) Gn n v bn v n v thc o cho khung nhn bit c t l ca bn ang hin th trn View, ta cn phi gn n v bn cho View. S dng yu cu SetUnits cng vi i s l n v bn cn gn, v d nh Meters , i s ny thuc kiu hng s do ArcView cung cp, ta s gn n v bn cho View myView = theProject.FindDoc(Khung nhn bi tp chng 6) if (myView <> nil) then myView.SetUnits(#UNITS_LINEAR_METERS) end #UNITS_LINEAR_METERS l hng s n v do ArcView cung cp. C th tm thy danh sch cc n v ny bng cch m Help ca ArcView v g vo UnitsLinearEnum trong mc Index. Tng t, gn n v thc o cho View, ta s dng yu cu .SetDistanceUnits vi i s l n v cn gn. myView.SetDistanceUnits(#UNITS_LINEAR_METERS) Thm lp ch (theme) vo khung nhn Mt khi c i tng View, ta cn phi thm mt vi lp ch vo n c th hin th c cc i tng khng gian. Cc lp ch ny c th l shapefile, Image, Acad hoc Arc/info coverage, nhng loi ny c nhm li thnh hai loi data source l feature data source v image data source. Mi loi data source ny li c phn thnh cc lp trong Avenue, nhng lp l FTheme (ch dng feature), ITheme (ch dng Image), DBTheme (ch dng Database), v GTheme (ch dng Grid)
Trung tam GIS NG DNG MI

55

Lp trnh Avenue Khi thm mt lp ch vo mt View, trc ht ta cn tm n View. S dng yu cu tm View trn myView=av.GetProject.FindDoc(Khung nhn bi tp chng 6) Tip theo cn to ra Theme. c th to ra Theme, s dng yu cu Make v gi n lp SourceName to ra i tng Sourcename. SourceName l mt i tng ca Avenue dng ch n v tr vt l ca tp tin cn to nn Theme. theSrcName=SrcName.Make(C: \Ditagis\Avenue\Data\hchinh.shp) C: \Ditagis\Avenue\Data\hchinh.shp: v tr tp tin cn to thnh Theme if (theSrcName=nil) then Msgbox.Info(Khng tn ti tp tin, Thng bo) exit end Dng yu cu Make to Theme vi i s l theSrcName theTheme = Theme.Make(theSrcName) Khi c Theme, dng yu cu AddTheme thm mi to vo View myView.AddTheme(theTheme) n lc ny, Theme mi c thm vo View, tuy nhin n vn cha hin th trn vng bn v ta cha c gn thuc tnh hin th cho Theme. Dng yu cu SetVisible vi i s l true gn thuc tnh hin th cho Theme. Nu mun Theme khng hin th th dng yu cu SetVisible vi i s l false. theTheme.SetVisible (true) Nu mun cho Theme trng thi kch hot, dng yu cu SetActive vi i s l true, ngc li th dng i s l false. theTheme.SetActive (true) Nu mun cm ngi dng khng c php thay i hai thuc tnh hin th v kch hot, dng yu cu kho khng cho hin th Theme l SetVisibleLocked(true) v yu cu kho khng cho kch hot l SetActiveLocked(true). theTheme.SetVisibleLocked(true) theTheme.SetActiveLocked(true) Ta c th kt ni nhiu ngun d liu khc nhau nh l mt ch n khung nhn. Sau y l mt s v d: i vi tp tin hnh nh TheSrcName = SrcName.Make($AVDATA/ myimage.bmp) i vi ArcView Shapefile TheSrcName = SrcName.Make($AVDATA/ myshapefile.shp)
Trung tam GIS NG DNG MI

56

Lp trnh Avenue i vi CAD drawings TheSrcName = SrcName.Make($AVDATA/ drawings/pacels.dwg line) Arc/Info Librarian layer TheSrcName = SrcName.Make(mylibrary.layer polygon) Arc/Info ArcStorm layer TheSrcName = SrcName.Make(mylibrary. mylibrary. layer polygon) Ngoi ra chng ta cn c th to i tng SrcName t bng d liu cha ta x,y. V d ta c bng to c tn coords.txt, cha hai trng l xcoord v ycoord. Ta tin hnh to Theme nh sau: TheView = av.GetActiveDoc TheVtab = av.GetProject.FindDoc(C: \Ditagis\Dulieu\Bang\qtrac_kk.dbf).GetVTab xField = theVTab.FindField(toadoX) yField = theVTab.FindField(toadoY) xySrc = XYName.Make(theVTab, xField, yField) theTheme = Theme.make(xySrc) theView.AddTheme(theTheme) Tm mt lp ch trong khung nhn Theme c cha trong View, v vy tm mt Theme vi mt tn no , chng hn hchinh.shp, trc tin phi tm n View v sau dng yu cu FindTheme vi i s thuc kiu String l tn ca Theme cn tm myView = av.GetProject..FindDoc(Khung nhn bi tp chng 6) hchanhTheme = myView.FindTheme(hchanh.shp) Thay i th t ca lp ch trong bng ni dung (TOC) ca khung nhn Khi thm cc Theme vo View, th t ca Theme trong View s nh hng n kt qu hin th trn vng bn . Nu nh Theme thuc dng im (Point) nm di Theme thuc dng vng (Polygon), th cc i tng ca Theme thuc dng im s b che khut khng nhn thy trn vng bn . thay i th t ca cc Theme, trc ht ta phi c danh sch cc Theme v dng yu cu Shuffle thay i v tr ca Theme Ly danh sch Theme trong View bng yu cu GetThemes theView = av.GetProject.FindDoc(Khung nhn bi tp chng 6) theThemeList = theView.GetThemes Gi s ta cn i ch ca Theme u tin n v tr cui themeDau=theThemeList.Get(0) vitricuoi=theThemeList.Count theThemeList.Shuffle(themeDau,vitricuoi)
Trung tam GIS NG DNG MI

57

Lp trnh Avenue Yu cu Shuffle cn hai i s, i s u l i tng cn thay i v tr, i s th hai l v tr s chuyn i tng n trong danh sch. Sau khi thc hin lnh ny, Theme u tin s c dch chuyn n v tr cui trong danh sch. Tuy nhin v tr ca Theme trong bng ni dung ca View vn cha t ng dch chuyn v bn vn cha thay i. hin th kt qu trn vng bn cn phi thc thi yu cu v li bn (refresh) v bng ni dung. theView.InvalidateTOC (nil) theDisplay=theView.GetDisplay theView.Invalidate(true) ly vng hin th bn v li

Sau khi thay i th t ca cc Theme, nu mun cm ngi dng khng c php thay i th t v tr ca cc Theme, c th kho cc Theme bng yu cu SetOrderLocked aTOC = aView.GetTOC aTOC.SetOrderLocked Thay i biu tng ca lp ch Biu tng l thnh phn c bn ca i tng ha khi hin th trn khung nhn. Ta s dng cc biu tng khc nhau phn bit cc i tng ring bit trong ch . V d: s dng cc kiu biu tng dng ng (line symbols) th hin cc loi ng khc nhau. ly c cc biu tng ca Theme, cn phi lm vic vi Legend ca Theme. Legend cha ng cc biu tng m Theme ang s dng. Vi yu cu GetLegend gi cho i tng Theme, s ly c Legend ca Theme. theView = av.GetActiveDoc theTheme = theView.GetThemes.Get(0) ly Theme u tin theLegend = theTheme.GetLegend ly Legend ca Theme ly c biu tng, trc tin phi ly danh sch cc biu tng cha trong Legend bng yu cu GetSymbols theListSymbol=theLegend.GetSymbols Gi s, ly biu tng u tin v thay i mu sc ca n thnh mu xanh theSymbol=theListSymbol.Get(0) theBlueColor=color.GetBlue ly mu xanh theSymbol.SetColor(theBlueColor) gn mu symbol thnh mu xanh bn th hin c s thay i ca biu tng, cn tc ng ln s thay i ca Theme bng yu cu UpdateLegend theTheme.UpdateLegend

Trung tam GIS NG DNG MI

58

Lp trnh Avenue Xo cc lp ch khi khung nhn Nu khng mun mt Theme no tip tc tn ti trong View, c th xo n bng yu cu DeleteTheme vi i s l Theme cn xo v gi n i tng View myView = av.GetProject.FindDoc(Khung nhn bi tp chng 6) theTheme = myView.FindTheme(hchanh.shp) Tuy nhin vic xo Theme l vic cn phi cn nhc, v vy trc khi xo cn phi xc nhn c thc s xo khng, nu ng th lc mi xo, nu khng ng th khng xo. xacnhan = Msgbox.YesNo( thc s mun xo Theme + theTheme + ?, Xo theme, true) if (xacnhan=true) then myView.DeleteTheme(theTheme) end By gi nu mun xo cc Theme ang trng thi kch hot, u tin phi gi yu cu GetActiveThemes n i tng View cha cc Theme ly danh sch cc Theme cn xo. myView = av.GetProject.FindDoc(Khung nhn bi tp chng 6) listTheme=myView.GetActiveThemes Sau dng vng lp i ht danh sch Theme ny ln lt xo cc Theme For each theTheme in listTheme xacnhan = Msgbox.YesNo( thc s mun xo Theme + theTheme + ?, Xo theme, true) if (xacnhan=true) then myView.DeleteTheme(theTheme) end end Tng t, nu mun xo ht cc Theme trong View th dng yu cu GetThemes ly danh sch Theme v sau dng vng lp duyt qua danh sch Theme v xo n ra khi View. Chn i tng khng gian ca lp ch bng chut Nu nh tng s dng qua cng c Select Feature trn thanh Toolbar ca View trong ArcView, chc hn s thy cng c trn cho php ta chn cc i tng khng gian ca cc Theme ang kch hot bng chut vi 2 cch: chn bng im v chn bng hnh ch nht. c th chn c cc i tng khng gian ca cc Theme ang kch hot, trc ht phi ly danh sch cc Theme ang c kch hot trong View, tip theo ly v
Trung tam GIS NG DNG MI

59

Lp trnh Avenue im chn hoc vng chn v sau dng im chn hoc vng chn ny chn cc i tng trn cc Theme ang kch hot. Ly danh sch cc Theme ang kch hot myView = av.GetProject.FindDoc(Khung nhn bi tp chng 6) listActiveThemes=myView.GetActiveThemes Ly vng chn bng cch gi yu cu ReturnUserRect n View theRect = myView.GetDisplay.ReturnUserRect Chn cc i tng trn cc Theme ang kch hot For each theTheme in listActiveThemes theTheme.SelectByRect(theRect, #VTAB_SELTYPE_NEW) end #VTAB_SELTYPE_NEW: hng s kiu chn i tng do ArcView cung cp Bng hng s cc kiu chn: Kiu chn #VTAB_SELTYPE_NEW #VTAB_SELTYPE_AND #VTAB_SELTYPE_OR ngha Chn cc i tng tho iu kin trong tp ton b i tng ca Theme chn cc i tng t tp c chn ca Theme Chn cc i tng tho iu kin trong tp ton b i tng ca Theme, sau thm tp ny vo tp chn trc ca Theme Chn cc i tng tho iu kin trong tp ton b i tng ca Theme, sau XOR tp ny vi tp chn trc ca Theme

#VTAB_SELTYPE_XOR

Bn trn l on lnh chn i tng bng cch dng hnh ch nht. c th va dng im va dng hnh ch nht nh cng c Select Feature ca ArcView, thm yu cu ReturnUserPoint vo on lnh trn nu nh kim tra thy hnh ch nht tr v bng Null myView = av.GetProject.FindDoc(Khung nhn bi tp chng 6) theRect = myView.ReturnUserRect if ( theRect.IsNull) then thePoint=myView.GetDisplay.ReturnUserPoint listActiveThemes=myView.GetActiveThemes For each theTheme in listActiveThemes theTheme.SelectByPoint(thePoint, #VTAB_SELTYPE_NEW)
Trung tam GIS NG DNG MI

60

Lp trnh Avenue end else For each theTheme in listActiveThemes theTheme.SelectByRect(theRect, #VTAB_SELTYPE_NEW) end end chy c Script ny, cn phi gn n vo s kin Apply ca cng c Tool trong ca s View. Chn i tng khng gian ca lp ch bng cc hnh ha C mt cch khc chn cc i tng trn Theme l s dng hnh ho nh vng trn, a gic hoc ng thng. V d mun chn cc trng hc trong phm vi c bn knh 10 km t trung tm ca th trn. u tin phi v ra mt vng trn c tm l trung tm ca th trn v c bn knh 10km. Tip theo dng vng trn ny chn cc trng hc trong lp ch trng hc. Gi s ta v vng trn trn View bng cng c v vng trn ca ArcView v n ang trng thi kch hot (c chn). V cch to ra graphics, s c hc trong chng k. By gi mun dng vng trn ny chn cc i tng ca lp trng hc. lm vic ny, trc tin phi c c View hin hnh v lp ch trng hc myView = av.GetProject.FindDoc(Khung nhn bi tp chng 6) truongTheme=myView.FindTheme(truong.shp) Tip theo, cn phi c c vng trn. V vng trn thuc lp Shape v c qun l trong danh sch Graphics ca View nn cn phi c danh sch Graphics ca View c th ly c vng trn. Gi yu cu GetGraphics n View, s nhn li danh sch cc Graphics listGraphics = myView.GetGraphics v vi yu cu GetSelected, s c c danh sch cc graphics ang trng thi kch hot. listSelGrp = listGraphics.GetSelected ly c vng trn, gi yu cu Get(0).GetShape n listSelGrp theCircle = listSelGrp.Get(0).GetShape By gi, c th chn cc i tng trn Theme nm trong phm vi ca vng trn bng cch gi yu cu SelectByShapes n Theme trng hc vi 2 i s l danh sch cc Shapes v kiu chn. to ra danh sch cha cc shapes (trong trng hp ny c mt Shape l theCircle), cn khi to danh sch v thm theCircle vo n. listShapes={} listShapes.Add(theCircle) Gi yu cu SelectByShapes n Theme trng hc TruongTheme.SelectByShapes(listShapes, #VTAB_SELTYPE_NEW)
Trung tam GIS NG DNG MI

61

Lp trnh Avenue Chn i tng khng gian lp ch bng mt lp ch khc Gi s c vi trung tm th trn, tm cc trng hc cch cc trung tm th trn trn mt bn knh 10km. Thay v phi v tng vng trn cho cc th trn ri dng cc vng trn ny chn cc trng hc, vn c mt cch khc thc hin iu ny, bng cch s dng phng php chn i tng trn mt Theme nh vo cc i tng ca mt Theme khc qua yu cu SelectByTheme. Gi s c hai Theme tn ti trn View l Theme trung tm th trn (thitran.shp) v Theme trng hc (truong.shp) myView = av.GetProject.FindDoc(Khung nhn bi tp chng 6) thitranTheme = myView.FindTheme(thitran.shp) truongTheme = myView.FindTheme(truong.shp) gi yu cu SelectByTheme n Theme trng hc vi 4 i s l theme th trn, kiu quan h khng gian, khong cch quan h v kiu chn. truongTheme.SelectByTheme(thitranTheme, #FTAB_RELTYPE_ISWITHINDISTANCEOF, 10, #VTAB_SELTYPE_NEW) Cc hng s kiu quan h khng gian gia 2 Theme: Kiu quan h
#FTAB_RELTYPE_INTERSECTS

#FTAB_RELTYPE_COMPLETELYCONTAINS

#FTAB_RELTYPE_CONTAINSTHECENTEROF

#FTAB_RELTYPE_ISCOMPLETELYWITHIN

#FTAB_RELTYPE_HASCENTERWITHIN

#FTAB_RELTYPE_ISWITHINDISTANCEOF

ngha Chn cc i tng trn Theme cn chn sao cho cc i tng ny giao nhau vi cc i tng trn Theme chn Chn cc i tng trn Theme cn chn sao cho cc i tng ny cha mt hoc nhiu i tng c chn trn Theme chn Chn cc i tng trn Theme cn chn sao cho cc i tng ny cha trung im ca mt hoc nhiu i tng c chn trn Theme chn Chn cc i tng trn Theme cn chn sao cho cc i tng ny nm hon ton trong mt hoc nhiu i tng c chn trn Theme chn Chn cc i tng trn Theme cn chn sao cho cc i tng ny c trung im nm trong cc i tng c chn trn Theme chn Chn cc i tng trn Theme cn chn sao cho cc i tng ny nm trong phm vi bn knh tnh t cc i tng c chn trn Theme chn mt khong cho trc.

Cc yu cu thng c s dng vi View


Trung tam GIS NG DNG MI

62

Lp trnh Avenue

Yu cu View.Make aView.AddTheme (aTheme) aView.DeleteTheme (aTheme) aView.FindTheme (aName) aView.GetActiveThemes aView.GetDisplay aView.GetGraphics aView.GetThemes aView.GetUnits aView.ReturnScale aView.ReturnUserCircle

Kt qu View

ngha To mi mt i tng View Thm mi mt Theme vo View Xo Theme khi View Tm mt Theme trong View theo tn ca Theme Tr v danh sch cc Theme ang trng thi kch hot Tr v Display ca View Tr v danh sch cc graphics ang c trn View Tr v danh sch cc Theme trong View Tr v n v bn ang c s dng trong View Tr v t l ca bn Tr v vng trn do ngi dng v ln trn View, yu cu ny phi c s dng vi mt Tool Tr v ng thng do ngi dng v trn View Tr v vng khp kn do ngi dng v trn View Tr v cc ng thng do ngi dng v trn View Tr v hnh ch nht do ngi dng v trn View Cho php ngi dng kch hot mt i tng graphic trn View

Theme List GetDisplay List List UnitsLinearEnum Number Circle

aView.ReturnUserLine aView.ReturnUserPolygon aView.ReturnUserPolyLine aView.ReturnUserRect aView.Select

Line Polygon PolyLine Rect

Cc yu cu thng c s dng vi Theme Yu cu Theme.Make (aSrcName) aTheme.ClearSelection aTheme.ExportToFTab (aFileName) aTheme.SelectByTheme ( anotherTheme, aRelType,
Trung tam GIS NG DNG MI

Kt qu Theme

Ftab

ngha To mi mt Theme t mt SourceName Xo cc i tng ang c chn (kch hot) trong Theme To mi mt Ftab Chn cc i tng trn Theme da vo quan h khng 63

Lp trnh Avenue aDistance, aSelType) aTheme.GetLabelField aTheme.SetLabelField (aField) aTheme.GetName aTheme.SetName aTheme.GetGraphics aTheme.GetLegend aTheme.SetLegend aTheme.SetVisible (isVisible) aTheme.SetActive (isActive) 3. V D V d 1: Thc hin thay i Legend cho lp Huyen Tn ch Loi ch gii Tn trng Field gian ca cc i tng trn Theme khc Tr v trng hin th ni dung nhn Gn trng cha ni dung hin th nhn Tr v tn ca Theme Gn tn cho Theme Tr v tp danh sch cc graphics kt hp vi Theme Tr v Legend ca Theme Gn Legend cho Theme Thit lp trng thi hin th cho Theme Thit lp trng thi kch hot cho Theme

GraphicSet Obj

Scheme

Script c vit nh sau


Trung tam GIS NG DNG MI

64

Lp trnh Avenue theView = av.GetActiveDoc theTheme = theView.FindTheme(huyen) ly v theme theLegend = theTheme.GetLegend ly v Legend hin thi ca huyn thit lp kiu Legend l Unique Value theLegend.SetLegendType(#LEGEND_TYPE_UNIQUE) theLegend.Unique(theTheme,"Ten_huyen") ' B i nhng gi tr Null nu c theLegend.SetNullValue("Ten_huyen","") ' Ly danh sch Scheme mu sc theColorSchemes SymbolList.GetPreDefined(#SYMLIST_TYPE_COLORSCHEME) tm Scheme mu c tn l Cool Tones for each scheme in theColorSchemes if (scheme.GetName = "Cool Tones") then theColorScheme = scheme end end thit lp Scheme mu cho Legend theLegend.GetSymbols.RandomSavedSymbols(theColorScheme) ' Cp nht li bng TOC theTheme.UpdateLegend V d 2: V d sau thit lp Font cho TOC to b qun l danh sch cc Font theFM = FontManager.The Ly v danh sch cc Font theFontlist = theFM.ReturnFamilies Dng mt hp danh sch lit k cc Font cho ngi s dng c th chn theFont = msgbox.ListAsString (theFontlist,"Select a Font", "Set TOC Font") if (theFont = nil) then trng hp khng chn Font no exit end ly v danh sch cc kiu ca Font theStyles = theFM.ReturnStyles (theFont) Dng mt hp danh sch lit k cc kiu ca Font cho ngi dng chn theStyle = msgbox.ListAsString (theStyles,"Select a Font Style","Set TOC Font") if (theStyle = nil) then exit end khng chn kiu no chn kch thc Font theSize = msgbox.input("Enter a Font Size","Set TOC Font","12") 65 =

Trung tam GIS NG DNG MI

Lp trnh Avenue if (theSize = nil) then exit end trng hp khng chn kch thc thit lp Font cho TOC TOCFont = TextSymbol.Make TOCFont.SetFont (NFont.Make(TheFont.AsString,TheStyle.AsString)) TOCFont.SetSize( theSize.AsNumber) TOC.SetDefaultSymbol(TOCFont) Cp nht li cc View ang m allDocs = av.GetProject.GetDocs for each v in allDocs if (v.is(View) and (v.GetWin.IsOpen)) then 'only open views already open or iconized v.GetWin.Close v.GetWin.Open end end V d 3: Sp xp cc theme trong TOC theo th t. aView = av.GetActiveDoc ' Ly v View hin hnh theThemes = aView.GetThemes ' Ly tt c cc Theme trong view if (theThemes = NIL) then Trng hp khng c theme no exit end Cc loi theme c th c trong view theTypes = {"point","multipoint","labelpoint","node","annotation","arc", "multiline","route","polygon","poly","region"} ' S dng Dictionary lu li cc loi theme ' aDictionary = Dictionary.Make(theTypes.Count + 1) for each type in theTypes aDictionary.Add (type,{}) end aDictionary.Add("other",{}) ' Trng hp kiu nm ngoi cc kiu lit k ' Sp xp cc theme theo kiu ' for each thm in theThemes aKey = thm.GetSrcName.GetSubName if (theTypes.FindByValue(aKey) >= 0) then ' thm theme vo danh sch aValue = aDictionary.Get(aKey) + {thm} aDictionary.Set(aKey,aValue) else ' trng hp kiu c cha region v route . type = "other" khng th gn cho n kiu l other
Trung tam GIS NG DNG MI

66

Lp trnh Avenue if (aKey.Contains("region")) then type = "region" end 'if if (aKey.Contains("route")) then type = "route" end 'if aValue = aDictionary.Get(type) + {thm} aDictionary.Set(type, aValue) end 'else end 'for ' sp xp li cc theme ' theThemes.Empty for each type in theTypes theThemes.Merge(aDictionary.Get(type)) end theThemes.Merge(aDictionary.Get("other")) aView.InvalidateTOC(nil) aView.Invalidate Bi tp phn 5 Bi tp 1: Vit script to mt View mi c tn l DongThap1, trong View ny thm vo cc theme lp huyen, truong v lp dgt Bi tp 2: Vi cc trng hc trong View DongThap1, i biu tng cho theme truonghoc.shp sang mu . Bi tp 3: Vit Script cho bit trong th x Sa c c bao nhiu trng hc. Bi tp 4: Vit Script hin th cc trng hc nm cch quc l 1A l 500 m.

Trung tam GIS NG DNG MI

67

Lp trnh Avenue

Chng 6 CC I TNG HA V BIU TNG


1. CC I TNG HO (Graphics) M hnh lc i tng ca cc i tng ho (Graphics)

c th to ra mt i tng Graphic trn khung nhn View hoc trn Display ca View v cng c th to ra mt i tng Graphic trn Layout hoc trn Display ca Layout. Tuy nhin cn ch v n v ca hai loi Display ny. Display ca View s dng n v ca bn , cn Display ca Layout s dng n v ca trang Layout. View v Layout u c mt danh sch cc Graphic gi l GraphicList. Danh sch ny cha ng tt c Graphics trong ti liu ngi dng (Document). Mi Theme trong View li cha mt tp cc Graphic gi l GraphicSet, tp ny l tp con ca GraphicList v chng c gn vo Theme. Mi Graphic c hp thnh t mt GraphicShape, GraphicShape c to ra t cc i tng Shape nh Rects, Lines v Circles. To cc i tng ho trn khung nhn v Layout Gi s mun vit mt Script to ra mt vng trn c bn knh 5 km vi tm l mt im chn trn vng bn ca View. Trc tin, cn phi to ra mt Shape l
Trung tam GIS NG DNG MI

68

Lp trnh Avenue Circle, tip theo to ra mt Graphic t Shape v sau thm n vo danh sch cc Graphic ca View hoc Layout m mun v. Dng yu cu GetDisplay gi n i tng View ly v Vng bn ca View theView = av.GetActiveDoc theDisplay = theView.GetDisplay Dng yu cu ReturnUserPoint gi n i tng Display ly tm im theDisplay.ReturnUserPoint To Shape Circle bng cch gi yu cu Make n lp Circle vi 2 i s l tm im v bn knh theCircle = Circle.Make(thePoint, 5) To Graphic t shape Circle bng cch gi yu cu Make n lp GraphicShape theGraphicCircle=GraphicShpae.Make(theCircle) Gi yu cu GetGraphics n i tng View ly v danh sch cc Graphics theGraphicList = theView.GetGraphics Thm theGraphicCircle vo danh sch cc Graphics n hin th trn View theGraphicList.Add(theGraphicCircle) Script ny thc thi c, cn phi gn n vo s kin Apply ca mt Tool trn thanh Toolbar ca ca s View. Lu rng Graphic m to ra trn s tn ti vi View, c th thay i kch c, dch chuyn v lu n vi View. Khi bn trn View c v li, Graphic ny vn tn ti. Nu mun to ra mt Graphic m sau ny n s mt i khi bn ca View c v li, hon ton c th lm c bng cch v trc tip Shape trn Display. theView = av.GetActiveDoc theDisplay = theView.GetDisplay thePoint = theDisplay.ReturnUserPoint theCircle = Circle.Make(thePoint, 5) theSym = Symbol.Make(#SYMBOL_PEN) theDisplay.BeginClip theDisplay.DrawCircle(theCircle,theSym) theDisplay.EndClip Yu cu DrawCircle c dng v ra mt vng trn trn View. S dng yu cu BeginClip v EndClip cho Display bit l ch v duy nht vng ph bng vng trn. Vng trn s khng xut hin khi View c v li. Gn cc i tng ho vo lp ch Khi c cc Graphics trn View, c th gn cc Graphics trn vo Theme. Mt khi gn cc Graphics vo Theme th vic hin th cc Graphics ny trn View s ph thuc vo vic hin th ca Theme. Khi cho Theme hin th, cc Graphics ny cng s c hin th theo, nu tt khng cho Theme hin th th cc Graphics ny cng s khng xut hin trn View. Khi gn cc Graphics ny vo Theme, cc Graphics ny s c lu trong tp Graphics gi l GraphicSet. GraphicSet l mt tp con ca GraphicList, nu xo cc Graphics t GraphicList th cc Graphics s c xo khi GraphicSet. Tuy nhin nu xo cc Graphics t GraphicSet th cc Graphics vn tn ti trong GraphicList.
Trung tam GIS NG DNG MI

69

Lp trnh Avenue gn cc Graphics vo Theme, cn phi c tp Graphics ca Theme, s dng yu cu GetGraphics v gi n i tng Theme, s nhn c tp ny. theView = av.GetActiveDoc theTheme = theView.FindTheme(truong.shp) myGraphicSet = theTheme.GetGraphics S dng vng lp a cc Graphics ang c chn trn View vo tp cc Graphics ca Theme for each g in theView.GetGraphics.GetSelected myGraphicSet.Add(g) end Tc ng n thuc tnh hin th ca tp Graphics n hin th trn View myGraphicSet.SetVisible(true) Hin th nhn cho lp ch hin th nhn cho Theme, trc ht cn phi xc nh trng cha ni dung lm nhn gn cho LabelField ca Theme. S dng yu cu FindField vi i s l tn Field v gi cho i tng FTab ca Theme ly v Field theView = av.GetActiveDoc theTheme = theView.FindTheme(truong.shp) theField=theTheme.GetFtab.FindField(ten) Gn theField cho LabelField ca Theme theTheme.SetLabelField (theField) Tip theo cn khi to i tng Labeler v thit lp cc thuc tnh cho n aLabeler = Labeler.Make(aExt) Thit lp thuc tnh cn tr v i tng khng gian ca nhn l khng aLabeler.SetfeatureWeight(#LABEL_WEIGHT_NO) Thit lp thuc tnh cn tr v cc nhn l c aLabeler.SetlabelWeight(#LABEL_WEIGHT_HIGH) Bo cho i tng nhn ca Theme khng s dng cc gi tr lp trong trng LabelField aLabeler.RemoveDuplicates(true) Np cc i tng khng gian v cc nhn ca Theme vo i tng Labeler aLabeler.Load(theTheme) T ng gn cc nhn vo View aView.GetAutoLabels(aLabeler,false) Nhm v tch nhm cc i tng ho nhm cc Graphics, trc tin phi chn (Select) cc Graphics cn nhm. Sau gi yu cu GroupSelected n danh sch Graphics thc hin nhm cc Graphics ang c chn. theLayout = av.GetActiveDoc theGraphicList = theLayout.GetGraphics theGraphicList.GroupSelected Nu mun tch cc Graphics ri ra t cc Graphics c nhm, dng yu cu UnGroupSelected v gi n danh sch Graphics theLayout = av.GetActiveDoc 70

Trung tam GIS NG DNG MI

Lp trnh Avenue theGraphicList = theLayout.GetGraphics theGraphicList.UnGroupSelected Nu mun nhm cc Graphics m khng cn phi chn n trc, vn c th lm c thng qua vic ly tn ca chng hoc thng qua Object tag ca cc Graphics. Gi s mun nhm mt View Frame c Object tag l View Frame vi mt Legend Frame c Object tag l Legend Frame. on script sau s thc hin iu ny theLayout = av.GetActive.Doc theGraphicList = theLayout.GetGraphics for each aGraphic in theGraphicList If (aGraphic.GetOjectTag = View Frame) or (aGraphic.GetOjectTag = Legend Frame) then aGraphic.Select end end theGraphicList.GroupSelected Di chuyn v sp thng hng cc i tng ho Khi c nhiu Graphics trn View, c th mun dch chuyn hoc sp xp cho chng thng hng. Chng hn mun sp xp thng hng cc Graphics c chn theo bin bn di ca chng. lm c vic ny, trc tin cn ly phm vi ca ton b cc Graphics ang c chn, sau ly to bn di ca phm vi v thit lp li to gc ca mi Graphic. theView = av.GetActiveDoc theGraphicList = theView.GetGraphics extent = theGraphicList.ReturnSelectedExtent bottom = extent.GetBottom for each aGraphic in theGraphicList.GetSelected orig = aGraphic.GetOrigin x = orig.GetX aGraphic.SetOrigin (x@bottom) end

Trung tam GIS NG DNG MI

71

Lp trnh Avenue 2. CC BIU TNG (Symbols) M hnh lc i tng ca cc biu tng

Nhn li lc m hnh i tng v Graphics trn, ta s thy tt c cc Graphics u c Symbol. Symbol cho php th hin s khc nhau ca Graphics. Nu thay i thuc tnh ca Symbol gn vi Graphics th Graphics s thay i theo. Mi Symbol ca ArcView u l lp con ca lp Symbol. Lp Fill c dng cho cc Shape c hnh dng nh a gic, vng trn. Lp Pen dng cho cc shape dng ng. Lp Marker dng cho cc shape dng Point v lp TextSymbol dng v k t. Cc lp con ny cng c nhng lp con khc dng to ra nhng Symbol khc v Fill, Pen, Marker. To mi mt biu tng c th to mi mt Symbol bng cch gi yu cu Make n lp Symbol. Tu thuc vo i s i km m c th to ra cc Symbol nh: Raster Fill, Basic Pen, Pattern Maker, Text To BasicPen symbol ASym = Symbol.Make(#SYMBOL_PEN) To BasicMarker symbol mu #BASICMARKER_STYLE_PATTERN ASym = Symbol.Make(#SYMBOL_MARKER) To RasterFill symbol mu RASTERFILL_STYLE_SOLID ASym = Symbol.Make(#SYMBOL_FILL)
Trung tam GIS NG DNG MI

72

Lp trnh Avenue

To Text Symbol s dng Font mc nh ASym = Symbol.Make(#SYMBOL_TEXT) Mt khi c i tng Symbol, c th thay i cc thuc tnh ca n nh mu sc, kch c, ... V d sau s to ra mt Symbol rng c mu l mu xanh, c kch c l 2 v s p dng cho tt c cc Graphics ng thng trn View theView = av.GetActiveDoc theDisplay = theViewGetDisplay theGraphicList = theView.Graphics theSymbol = VectorPenHollow.Make theSymbol.SetAltSize(2) theSymbol.SetColor(Color.GetBlue) for each thegraphic in theGraphicList.FindByClass(GraphicShape) theshape = thegraphic.GetShape if (theShape.Is(Line)or theShape.Is(PolyLine)) then theGraphic.SetSymbol(theSymbol) end end theDisplay.Invalidate(true) Thay i thuc tnh ca biu tng Nu c mt Graphic v mun thay i Symbol ca n, c th s dng lp Symbol hoc cc lp con ca n to ra Symbol mi. Gi s c mt Graphic l vng trn (theGraphicCircle) ang c kch hot, by gi mun thay i symbol ca n c mt vng trn c bng nghing 45 , nn mu v ng vin mu xanh. on Script sau s thc hin iu ny: theGraphicCircle = av.GetActiveDoc.GetGraphicList.GetSelected.get(0) TheSymbol= theGraphicCirle.GetSymbol TheSymbol=VecterFill.Make TheSymbol.SetStyle(#VECTORFILL_STYLE_HATCH) TheSymbol.SetColor(Color.GetRed) TheSymbol.SetAngle(45) TheSymbol.SetOLColor(color.GetGreen) TheGraphicCircle.Invalidate

Trung tam GIS NG DNG MI

73

Lp trnh Avenue

Cc yu cu thng c s dng vi Graphics Yu cu aGraphic.GetBounds aGraphic.GetOrigin aGraphic.GetShape aGraphic.GetSymbol aGraphic.IsHit (aRect) aGraphic.IsVisible aGraphic.Select aGraphic.SetBounds (aRect) SetOrigin ( aPoint ) aGraphic.SetSymbol (aSymbol) aGraphic.SetVisible (isVisible) Cc yu cu thng c s dng vi Symbol Yu cu Symbol.Make (aSymbolType) aSymbol.GetBgColor aSymbol.GetColor aSymbol.GetOlColor aSymbol.GetType aSymbol.SetBgColor (aColor) aSymbol.SetColor (aColor) aSymbol.SetOlColor (aColor) aSymbol.UnHook Kt qu Symbol Color Color Color SymbolEnum ngha To mi mt Symbol Tr v mu nn ca Symbol Tr v mu ca Symbol Tr v mu ca ng vin ca Symbol Tr v kiu ca Symbol Gn mu nn cho Symbol Gn mu cho Symbol Gn mu ca ng vin cho Symbol Xo b ch hin th theo t l bn cho Symbol Kt qu Rect Point Shape Symbol Boolean Boolean ngha Tr v khung vin ca Graphic Tr v im gc ca Graphic Tr v Shape ca Graphic Tr v Symbol ca Graphic Kim tra Graphic c giao vi hnh ch nht (aRect) khng Kim tra Graphic c ang trng thi hin th khng Kch hot Graphic Gn khung vin cho Graphic Thit lp im gc cho Graphic Gn Symbol cho Graphic Thit lp trng thi hin th cho Graphic

3. V D V d 1: Thay i biu tng dng im ca nh my sang dng theView = av.GetActiveDoc theTheme = theView.FindTheme(Nhamay) theLegend = theTheme.GetLegend
Trung tam GIS NG DNG MI

74

Lp trnh Avenue theLegend.SingleSymbol theSymWin = av.GetSymbolWin aPaletteList = theSymWin.GetPalette.GetList( #PALETTE_LIST_MARKER ) theSymWin.SelectSymbol( aPaletteList.Get( 38 )) theLegend.GetSymbols.Insert(theSymWin.ReturnCurrentSymbol (#SYMBOL_MARKER)) theTheme.UpdateLegend V d 2: V d sau to ra mt Graphic hnh trn, 2 Graphic hnh vung, mt ng thng v mt im trn View hin hnh theView = av.GetActiveDoc theDisplay = theView.GetDisplay ' Ly v danh sch Graphic ca View theGraphics = theView.GetGraphics ' Ly v vng view hin th theExtent = theDisplay.ReturnExtent theCenter = theExtent.ReturnCenter theLowerLeft = theExtent.ReturnOrigin w = (theExtent.GetWidth) * 0.25 h = (theExtent.GetHeight) * 0.25 theUpperRight = (theLowerLeft.Getx + theExtent.GetWidth)@ (theLowerLeft.Gety + theExtent.GetHeight) offsetPoint = Point.Make(h, w) ' to vng trn c tm gia View bn knh l w aCircle = Circle.Make(theCenter, w) gCircle = GraphicShape.Make(aCircle) aSymbol = VectorFill.Make aSymbol.SetStyle(#VECTORFILL_STYLE_HATCH) aSymbol.SetAngle(45) aSymbol.SetColor(Color.GetYellow) aSymbol.SetOLColor(Color.GetRed) gCircle.SetSymbol(aSymbol) theGraphics.Add(gCircle) ' V cc hnh vung aBox = Rect.Make(theCenter, offsetPoint) gBox = GraphicShape.Make(aBox)
Trung tam GIS NG DNG MI

75

Lp trnh Avenue

aSymbol = RasterFill.Make aSymbol.SetOLColor(Color.GetGreen) aSymbol.setcolor(Color.GetBlue) gBox.SetSymbol(aSymbol) gBox2 = gBox.Clone gBox2.GetSymbol.SetColor(Color.GetRed) gBox2.SetOrigin(theLowerLeft) theGraphics.Add(gBox) theGraphics.Add(gBox2) ' v ng thng aLine = Line.Make(theLowerLeft, theUpperRight) gLine = GraphicShape.Make(aLine) theSymbol = gLine.Getsymbol thesymbol.SetSize(2) theSymbol.SetColor(Color.GetMagenta) theGraphics.Add(gLine) ' v mt im chnh gia view aPoint = Point.Make(theCenter.GetX, theCenter.GetY) gPoint = GraphicShape.Make(aPoint) theSymbol = gPoint.GetSymbol theSymbol.SetColor(Color.GetRed) theSymbol.SetSize(8) theGraphics.Add(gPoint) Bi tp phn 6 Bi tp 1: Vit cng c cho php ngi s dng v cc hnh trn Bi tp 2: Vit cng c cho php ngi s dng v cc hnh ch nht Bi tp 3: Vit cng c cho php ngi s dng v cc hnh a gic Bi tp 4: Vit cng c cho php ngi s dng v cc polyline
Trung tam GIS NG DNG MI

76

Lp trnh Avenue

Chng 7 LAYOUT
1. LC M HNH I TNG CA LAYOUT

Mt Layout v c bn l mt tp cc Graphics biu din cc thnh phn to nn bn . Cc thnh phn thm vo Layout nh khung nhn (View), biu (Chart), Shape hoc k t (Text) c lu trong danh sch Graphics ca Layout. M hnh trn cho bit cch ArcView t chc cc Graphics trn Layout. Mi mt lp con ca lp Graphic cho bit cc thnh phn th hin ca n trn Layout. Vi ViewFrame, c th th hin ni dung ca View ra Layout. Vi Legend Frame, c th th hin bng ch gii ca cc Theme trong View, tng t cho cc thnh phn khc nh thc t l, mi tn ch hng, ... 2. THAO TC TRN LAYOUT To Layout Tng t nh cc i tng khc ca Avenue, to trang Layout gi yu cu Make n lp Layout. theLayout = Layout.Make cng c th thit lp cc thuc tnh ca Layout thng qua vic gi cc yu cu cng cc i s n i tng Display ca Layout.
Trung tam GIS NG DNG MI

77

Lp trnh Avenue thit lp n v ca trang Layout, gi yu cu SetUnits cng vi i s l kiu n v n Display ca Layout theLayout.GetDisplay.SetUnits(#UNITS_LINEAR_CENTIMETERS) Yu cu SetPageSize vi hai i s l chiu rng v chiu cao cho php thit lp kh trang in, lu l hng ca trang in ph thuc vo hai i s ny. Nu chiu rng nh hn chiu cao th trang in s c hng thng ng, ngc li trang in s c hng ngang. theLayout.GetDisplay.SetPageSize(21@29.7) thit lp kh giy A4 c hng ng theLayout.GetDisplay.SetPageSize(29.7@21) hng ngang Yu cu SetGridActive vi i s l true s cho php hin th li trn Layout, vi i s l false th s khng cho hin th. theLayout.GetDisplay.SetGridActive(true) Yu cu SetUsingPrinterMargins vi i s l true thng bo cho Layout s dng l (Margin) ca my in. theLayout.GetDisplay.SetUsingMargin(true) Yu cu SetMarginVisible vi i s false bo cho Layout bit l khng hin th l ca Layout theLayout.GetDisplay.SetMarginVisible(false) Thm khung nhn vo Layout ArcView thm cc Graphics nh Views, Charts, v Tables vo Layout bng cch t chng vo cc Frame, nh ViewFrame, DocFrame. c th thm View vo Frame, trc tin ta cn phi xc nh v tr gc ca ViewFrame cn t so vi v tr gc ca trang Layout. Tip theo to ra ViewFrame c v tr gc v thit lp cc thuc tnh ca View Frame n hin th c View mong mun. To Layout mi c kh A4 theLayout = Layout.Make theLayout.GetWin.Open theDisplay = theLayout.GetDisplay theDisplay.SetpageSize(21@29.7) Ly phm vi khung vin ca Layout thePageExtent = theDisplay.ReturnPageExtent Ly im gc ca Layout thePageOrigin = thePageExtent.ReturnOrigin To im gc ca ViewFrame cch im gc ca trang Layout mt khong b ngang l 2 cm v b ng l 2 cm theRectOrigin = thePageOrigin + (2@2) To hnh ch nht cha ViewFrame c hai i s l im gc v chiu rng cng chiu di ca ViewFrame aRect = Rect. Make(theRectOrigin, (8@10)) To mi ViewFrame theVFrame = ViewFrame.Make(aRect) Thm View vo theVFrame theVFrame.SetView(av.GetProject.FindDoc(View1), true) 78

Trung tam GIS NG DNG MI

Lp trnh Avenue i s true cho bit c s lin kt ng gia theVFrame v View1. Khi View1 thay i th ni dung ca theVFrame cng c thay i theo. Nu i thnh false th theVFrame s ch hin th ni dung hin thi ca View1, nu ni dung ca View1 thay i th ni dung ca theVFrame vn khng thay i. V theVFrame ra Layout theLayout.GetGraphics.Add(theVFrame) theLayout.Invalidate Thm bng v biu vo Layout Tng t nh thm View vo Layout, trc tin phi to ra mt Frame t mt hnh ch nht xc nh b rng v b cao ca Frame, sau thit lp thuc tnh thm i tng bng (Table) hoc biu (Chart) vo Frame. Thay v s dng yu cu Make gi n lpViewFrame to Frame, y s dng yu cu Make v gi n lp DocFrame, km thm i s th hai l table hoc chart. theDocFrame = DocFrame.Make(aRect, table) thm table1.dbf vo theDocFrame theDocFrame.SetFrameDoc(av.GetProject.FindDoc(table1.dbf)) Lu theDocFrame hin th c ni dung table1.dbf th bng ny cn phi ang trng thi m. cng c th thm chart1 vo theDocFrame vi on Script sau theDocFrame = DocFrame.Make(aRect, chart) theDocFrame.SetFrameDoc(av.GetProject.FindDoc(chart1)) Thm thc t l vo Layout Khi to ra khung thc t l, nn lin kt vi khung nhn t l trong khung nhn c din gii bng thc t l. Nu ViewFrame c lin kt ng v t l ca View thay i bng cch phng to hoc thu nh, t l thc cng c thay i ph hp. Ta to khung nh dng t l thc tng t nh cch to ViewFrame. Do , trong Avenue kt ni t l thc th trc tin ta to khung nh dng hnh ch nht v sau to thc t l t khung nh dng ny. theSbFrame = ScaleBarFrame.Make(aRect) Lin kt theSbFrame vi ViewFrame theSbFrame.SetViewFrame(theVFrame) Thit lp cc thuc tnh v kiu v n v o cho thuc theSbFrame.SetStyle(#Scalebarframe_style_hollow) theSbFrame.SetUnits(#Units_linear_miles) theSbFrame.SetIntervals(5) theSbFrame.SetInterval(20) theSbFrame.SetDivisions(4) V thc ra Layout theLayout.GetGraphics.Add(thesbFrame)

Trung tam GIS NG DNG MI

79

Lp trnh Avenue Thm Legend vo Layout Thm Legend vo Layout cng tng t nh thm thc t l vo Layout. u tin cn to ra mt LegendFrame v sau kt hp n vi mt ViewFrame ly ni dung Legend. theLegendFrame = LegendFrame.Make(aRect) Kt hp vi ViewFrame theLegendFrame.SetViewFrame(theVFrame) V theLegendFrame ra Layout theLayout.GetGraphics.Add(theLegendFrame) Thm mi tn hng Bc vo Layout Khi thm mi tn hng Bc vo Layout, ta cn phi ch nh mt hnh ch nht cha n. Tuy nhin mi tn hng Bc khng c to ra bng cch nh ngha Frame nh ViewFrame hay DocFrame m n c to ra bng cch khi to t lp NorthArrow. theNArrow = NorthArrow.Make(aRect) S dng yu cu Edit vi i s l mt danh sch rng gi n i tng NorthArrow hin th hp thoi chn mi tn hng Bc. okToAdd = theNArrow.Edit({}) V mi tn hng Bc ra Layout if (okToAdd) then theLayout.GetGraphics.Add(theNArrow) end Khi thm mi tn hng Bc vo mt trang layout, ArcView s to ra mt tp tin north.def trong th mc $HOME. Tp tin ny l mt i tng kiu data base file (ODB) ca ArcView, n lu tr cc mi tn hng Bc kt hp vi trang Layout. Thng thng, khi ci t ArcView, tp tin north.def c lu ti th mc ETC trong th mc ci t ArcView. Nu bit r mi tn hng Bc no c s dng, khng cn hin th hp thoi chn mi tn hng Bc vn c th ly c mi tn hng bc t tp tin north.def S dng yu cu Open v gi n lp ODB m tp tin north.def theNArrODB=ODB.Open(C: \ESRI\AV_GIS30\ARCVIEW\ETC\north.def.AsFileName) Ly danh sch cc mi tn hng Bc thelist = theNArrODB.Get(0) Ly Graphic mi tn hng Bc, gi s ly Graphic c th t s 2 trong danh sch theNArrowGraphic = thelist.Get(1) To mi tn hng Bc theNArrow = NorthArrow.Make(aRect) Gn theNArrowGraphic cho theNArrow theNArrow.SetArrow(theNArrowGraphic) V theNArrow ra Layout theLayout.GetGraphics.Add(theNArrow) Nu c mt Graphic v mt mi tn hng Bc do ta to ra, mun thm vo danh sch cc mi tn hng Bc. Ta thc hin on Script nh sau:
Trung tam GIS NG DNG MI

80

Lp trnh Avenue theLayout = av.GetActiveDoc theSelectedGraphics = theLayout.GetGraphics.GetSelected if (theSelectedGraphics <> nil) then NorthArrowMgr.Merge(theSelectedGrahics) end Thm mt hnh nh vo Layout Thm mt hnh nh cng tng t nh thm mt ViewFrame vo Layout. Dng yu cu Make v gi n lp PictureFrame cng vi i s l mt hnh ch nht, s c c mt PictureFrame. Gn ng dn ca hnh nh mun thm vo Layout cho PictureFrame va to v v n ln Layout, s thm c hnh nh vo Layout thePicFrame= PictureFrame.Make(aRect) myPicture = C: \Ditagis\Dulieu\Hinhanh\hinh1.bmp.AsFileName thePicFrame.SetFileName(myPicture) theLayout.GetGraphics.Add(thePicFrame) Thm cc k t vo Layout Ta c th thm cc k t vo Layout bng cch lm vic vi GraphicText. Cng nh cc Graphics khc bng cch gi yu cu Make n lp GraphicText cng vi hai i s l chui k t v to gc ca GraphicText trn Layout, thm chui k t vo Layout theLayout = Layout.Make theLayout.GetWin.Open theDisplay = theLayout.GetDisplay theDisplay.SetpageSize(21@29.7) thePageExtent = theDisplay.ReturnPageExtent Ly im gia ca Layout thePageCenter = thePageExtent.ReturnCenter To GraphicText ti im gia Layout theGText = GraphicText.Make (V du ve GraphicText, thePageCenter) Thit lp mt s thuc tnh cho GraphicText theGText.SetAlignment(#TEXTCOMPOSER_JUST_CENTER) Thit lp Symbol ca GraphicText theTextSymbol = theGText.ReturnSymbol.Get(0) theTextSymbol.SetSize (42) Thit lp Font cho Symbol newFont = Font.Make(.VnTime, Normal) theTextSymbol.SetFont(newFont) Thit lp hng xoay cho GraphicText l 25 theGText.SetAngle(25) V GraphicText ra Layout theLayout.getGraphics.Add(theGText) Thm khung vin vo Layout Khung vin l mt hnh ch nht thng dng bao quanh cc i tng nh ViewFrame, Layout, ...
Trung tam GIS NG DNG MI

81

Lp trnh Avenue to ra khung vin cho mt i tng, cn phi ly hnh bin ca i tng to ra khung vin. V d to khung vin cho mt ViewFrame, gi yu cu GetBounds n i tng ny ly hnh vin aRect = theVFrame.GetBounds To khung vin theNeatline = GraphicShape.Make(aRect) V khung vin ra Layout theLayout.GetGraphics.Add(theNeatLine) In Layout in Layout, s dng yu cu Print v gi n i tng Layout. theLayout.Print Khi in ArcView s s dng my in mc nh m thit lp trn my tnh. c th in mt phn ca Layout bng cch thit lp cc tham s Top, Bottom, Left, Right ca mc Margin trong hp thoi PageSetup ca Layout trn menu. hon ton c th vit lnh Avenue thc hin cng vic ny. Gi s mun in mt phn t gc bn tri pha di trang Layout theLayout = av.GetActiveDoc theDisplay = theLayout.GetDisplay thePageExtent = theDisplay.ReturnPageExtent Ly im gia ca Layout thePageCenter = thePageExtent.ReturnCenter Ly im gc ca Layout thePageOrigin = thePageExtent.ReturnOrigin theHeight = thePageExtent.GetHeight theWidth = thePageExtent.GetWidth aHRect = theHeight/2 aWRect = theWidth/2 To hnh ch nht c gc trng vi gc trang Layout, c chiu di v rng bng Layout aRect = Rect.Make(thePageOrigin, aWRect@aHRect) Thit lp Margin cho Layout theDisplay.SetMargin(aRect) In Layout theLayout.Print Cc yu cu thng c s dng vi Layout Yu cu Layout.Make aLayout.GetDisplay aLayout.GetGraphics aLayout.ReturnUserCircle Kt qu Layout Display List Circle ngha To mi mt Layout Tr v Display ca Layout Tr v danh sch cc graphics Tr v vng trn do ngi dng v ln trn Layout, yu cu ny phi c s dng vi mt Tool 82

Trung tam GIS NG DNG MI

Lp trnh Avenue aLayout.ReturnUserLine aLayout.ReturnUserPolygon aLayout.ReturnUserPolyLin e aLayout.ReturnUserRect aLayout.Select Line Polygon PolyLine Rect Tr v ng thng do ngi dng v trn Layout Tr v vng khp kn do ngi dng v trn Layout Tr v cc ng thng do ngi dng v trn Layout Tr v hnh ch nht do ngi dng v trn Layout Kch hot cc graphic c trn Layout

Cc yu cu thng c s dng vi ViewFrame Yu cu ViewFrame.Make (aRect) ViewFrame.GetViewName (aView) aViewFrame.GetMapDisplay aViewFrame.GetUserScale aViewFrame.GetView aViewFrame.ReturnScale aViewFrame.SetUserScale (aScale) aViewFrame.SetView (aView, isLiveLink) aViewFrame.IsLiveLinked Kt qu ViewFrame String Display Number View Number ngha To mi mt ViewFrame Tr v tn ca ViewFrame Tr v t l bn trong ViewFrame c ngi dng thit lp Tr v View c gn cho ViewFrame Tr v t l bn trong ViewFrame Gn t l bn trong ViewFrame Gn View cho ViewFrame Kim tra c tn ti lin kt ng gia View v ViewFrame

Boolean

Cc yu cu thng c s dng vi DocFrame Yu cu DocFrame.Make (aRect, aDocClass) aDocFrame.GetFramedDoc aDocFrame.GetFramedDocClass aDocFrame.SetFramedDoc(aDocument) aDocFrame.SetFramedDocClass(aDocClass)
Trung tam GIS NG DNG MI

Kt qu DocFrame Doc Classes

ngha To mi mt DocFrame kt hp vi Table hoc Chart Tr v Table hoc Chart kt hp vi DocFrame Tr v lp kt hp vi DocFrame Gn Table hoc Chart cho DocFrame Gn lp Table hoc lp Chart cho DocFrame 83

Lp trnh Avenue

Cc yu cu thng c s dng vi PictureFrame Yu cu PictureFrame.Make (aRect) aPictureFrame.Draw aPictureFrame.GetFileName aPictureFrame.SetFileName(aFileName) Cc yu cu thng c s dng vi ScalebarFrame Yu cu ScaleBarFrame.Make (aRect) aScaleBarFrame.Draw aScaleBarFrame.GetDivisions aScaleBarFrame.GetInterval aScaleBarFrame.GetIntervals aScaleBarFrame.GetStyle aScaleBarFrame.GetTextRatio aScaleBarFrame.GetUnits Number Number Number ScaleBarFrameStyle Enum Number UnitsLinearEnum Kt qu ScaleBarFrame ngha To mi mt ScaleBarFrame V ScaleBarFrame trn Display Tr v s lng cc khong chia nh trong mt khong chia ca thc t l Tr v rng ca mt khong chia trn thc t l Tr v s lng cc khong chia trn thc t l Tr v kiu ca thc t l Tr v t l k t ca thc t l Tr v n v ang s dng ca thc t l Tr v ViewFrame kt hp vi thc t l Gn khung vin cho thc t l Gn cc khong chia cho mt khong chia ca thc t l Gn rng cho mt khong chia trn thc t l Gn s lng cc khong chia cho thc t l Gn kiu cho thc t l 84 FileName Kt qu PictureFrame ngha To mi mt PictureFrame V PictureFrame ra Display Tr v FileName ca hnh kt hp vi PictureFrame Gn FileName ca hnh cho PictureFrame

aScaleBarFrame.GetViewFram ViewFrame e aScalebarFrame.SetBounds (aRect) aScaleBarFrame.SetDivisions (aNumber) aScaleBarFrame.SetInterval (aNumber) aScaleBarFrame.SetIntervals (aNumber) aScaleBarFrame.SetStyle
Trung tam GIS NG DNG MI

Lp trnh Avenue (aGSBarStyle) aScaleBarFrame.SetTextRatio (aRatio) aScaleBarFrame.SetUnits (aMeasEnum) aScaleBarFrame.SetViewFram e (aViewFrame) 3. V D V d sau trnh by cch xut ra Layout bng bo co thng tin ca cc nh my trong tnh ng Thp theView=av.GetActiveDoc if (theView.is(View).not) then return nil end tb=theView.FindTheme(Nhamay).GetFtab if (tb=nil) then return nil end adoc = av.GetProject.FindDoc("Chi tiet nha may") Tm Layout c tn l Chi tit nh my if (adoc=nil) then trng hp cha c Layout ny hoc Layout ny b xo aLayOut = Layout.Make To layout aLayOut.SetName("Chi tiet nha may") aDisplay=aLayOut.GetDisplay adisUnits = aDisplay.GetUnits aLayOut.getGraphics.Empty xo ton b cc Graphic nu c trn n thit lp kch thc ca mt trang A4 aWidth = Units.Convert(20.9,#UNITS_LINEAR_CENTIMETERS,adisUnits) aHeight = Units.Convert(32,#UNITS_LINEAR_CENTIMETERS,adisUnits) aDisplay.SetPageSize(aWidth@aHeight) aRe=aDisplay.ReturnPageExtent aoriPage=aRe.ReturnOrigin Ly v to gc tri trn cng aT=aRe.gettop aL=aRe.getleft aDisplay.SetMargin (aRe) aDisplay.SetMarginVisible(true) aDisplay.SetGridVisible (false) x = Units.Convert(2,#UNITS_LINEAR_CENTIMETERS,adisUnits) x=aL + Units.Convert(6,#UNITS_LINEAR_CENTIMETERS,adisUnits) y=aT-Units.Convert(3,#UNITS_LINEAR_CENTIMETERS,adisUnits) thePoint = point.make(x,y) txtSet = {}
Trung tam GIS NG DNG MI

Gn t l k t cho thc t l Gn n v cho thc t l Gn ViewFrame kt hp vi thc t l

85

Lp trnh Avenue txtSymbol = TextSymbol.Make aFont = Font.Make(".VnTimeH","NORMAL") txtSymbol.SetFont(aFont) txtSymbol.SetSize(16) gl = GraphicLabel.MakeWithSym(" Thong tin chi tiet nha may", thePoint, txtSymbol, txtSet) aRectTxt=gl.GetBounds aLayOut.GetGraphics.Add(gl) adoc= aLayOut else ' Trng hp c Layout sn trong Project txt= adoc.getgraphics.FindByName("chitiet") if (txt<>nil) then txt.select adoc.getgraphics.clearSelected end end aDisplay=adoc.GetDisplay aRe=aDisplay.ReturnPageExtent aoriPage=aRe.ReturnOrigin aT=aRe.GetTop aL=aRe.GetLeft adisUnits = adoc.GetDisplay.GetUnits dx = Units.Convert(0.05,#UNITS_LINEAR_CENTIMETERS,adisUnits) dy = Units.Convert(0,#UNITS_LINEAR_CENTIMETERS,adisUnits) x=aL + Units.Convert(3,#UNITS_LINEAR_CENTIMETERS,adisUnits) ly thng tin t bng nh my st= ften=tb.FindField(ten) fDiachi=tb.FindField(diachi) fSanPham=tb.FindField(sanpham) fNamsx=tb.FindField(Namsx) for each r in tb if (tb.ReturnValue(ften,r)<>) then st=st + tb.ReturnValue(ften,r) + | + tb.ReturnValue(fDiachi,r) + | + tb.ReturnValue(fSanpham,r) + NL end end st=st.AsTokens (NL) count=alist.count y=aT -Units.Convert((0.5*count+14),#UNITS_LINEAR_CENTIMETERS,adisUnits) thePoint = point.make(x,y) txtSet = {} txtSymbol = TextSymbol.Make aFont = Font.Make(".VnTime","ITalic") txtSymbol.SetFont(aFont)
Trung tam GIS NG DNG MI

86

Lp trnh Avenue txtSymbol.SetSize(15) gl = GraphicLabel.MakeWithSym(st, thePoint, txtSymbol, txtSet) gl.setname("chitiet") gl.setAlignment(#TEXTCOMPOSER_JUST_LEFT ) aRectTxt=gl.GetBounds adoc.GetGraphics.Add(gl) adoc.Invalidate adoc.GetWin.Open Bi tp phn 7 Bi tp 1: Vit Avenue to mt Layout c kch thc l mt trang A4, layout ny xut ra bn th hin v tr cc nh my trong tnh ng Thp Bi tp 2: Vit Avenue to Layout trnh by bng d liu ca lp truonghoc.shp

Trung tam GIS NG DNG MI

87

Lp trnh Avenue

Chng 8 BNG
1. M HNH LC I TNG BNG

Bng (Table) s dng trong ArcView l mt giao din ngi dng ca bng o Vtab (Virtual Table), ta c th thc hin mt s thao tc trn Table nh sp xp hoc tng cp cc mu tin, tuy nhin phn ln cc thao tc c thc hin vi Vtab. Vtab c xy dng t mt hoc nhiu bng vt l nh INFO files, dBASE files hoc Text files, cc trng ca Vtab s tham chiu n cc ct trong cc bng vt l. Thng qua Vtab c th thay i cc gi tr ca bng, m rng bng bng cch lin kt nhiu bng khc v c th thc hin truy vn cc gi tr trong bng thng qua biu thc truy vn. Mi Vtab c hai Bitmap, mt Bitmap la chn v mt Bitmap nh ngha. Bitmap la chn t sng cc mu tin trong mt Table. Bitmap la chn ny thng c dng xc nh cc mu tin no s c s dng trong cc thao tc ca bng. thay i la chn, ta s dng yu cu UpdateSelection v gi n i tng Bitmap thay i. ly bn sao ca Bitmap s dng yu cu Clone v gi n i tng Bitmap. Bitmap nh ngha xc nh nhng mu tin no c cha trong Vtab, c th s dng Bitmap nh ngha cha mt tp con cc mu tin da trn mt tiu chun no . Ftab l mt bng cha cc thuc tnh ca cc i tng khng gian thuc lp ch . N tha k t Vtab, v vy cc thao tc trn Table u s dng c trn Ftab.

Trung tam GIS NG DNG MI

88

Lp trnh Avenue 2. THAO TC TRN BNG To mi bng thm mt Table vo n trong Avenue, cn phi to ra mt i tng Table. c th to ra i tng Table t mt tp tin tn ti trong a cng hoc c th to mt Table mi hon ton lu d liu. Gi s c mt tp tin lu tr cc gi tr to x,y trn a cng. to mi i tng Table t tp tin ny, trc ht cn c i tng FileName tham chiu n ng dn ca tp tin ny. theFileName = C: \Ditagis\Dulieu\coords.txt.AsFileName Yu cu AsFileName trn dng chuyn i chui cha ng dn thnh i tng FileName S dng yu cu Make v gi n lp Vtab to mi i tng Vtab vi i s l i tng theFileName trn theVtab = Vtab.make(theFileName, false, false) S dng yu cu Make v gi n lp Table to mi i tng Table theTable = Table.Make(theVtab) M ca s Table theTable.GetWin.Open to mi mt Table hon ton khng t mt tp tin tn ti trn a cng, trc tin cn hin th hp thoi FileDialog ngi dng nh v ni lu tp tin mi. myFile = FileDialog.Put(xyz.dbf.AsFileName, *.*, nh v tp tin) Yu cu FileDialog.Put s to ra mt i tng FileName. By gi cn to mi mt i tng Vtab bng cch s dng yu cu MakeNew vi i s l i tng FileName trn. theVtab= Vtab.MakeNew(myFile, dbase) To mi Table t i tng Vtab theTable = Table.Make(theVtab) Table to mi, tuy nhin hin gi l Table rng, cha c to cc trng v cha c d liu. To mi cc trng bng cch gi yu cu Make n lp Field vi cc i s km theo: tn trng, kiu trng, rng cng vi s ch s thp phn. f1 = Field.Make(ID, #FIELD_SHORT, 5, 0) f2 = Field.Make(Name, #FIELD_CHAR, 20, 0) S dng yu cu AddFields vi i s l danh sch cc trng thm vo bng Vtab theVtab.AddFields({f1,f2}) Thm cc mu tin cng d liu vo Vtab for each i in 1..5 rec = theVtab.AddRecord theVtab.SetValue(f1, rec, i) theVtab.SetValue(f2, rec, Name + i.Asstring) end Yu cu AddRecord to mi mt mu tin v tr v ch s ca mu tin trong Vtab. Yu cu SetValue s gn d liu vo trng cng mu tin tng ng. Gi yu cu SetEditable vi i s l false thit lp thuc tnh tnh trng cp nht gi tr ca Vtab l khng. theVtab.SetEditable(false) 89

Trung tam GIS NG DNG MI

Lp trnh Avenue Sp xp cc bn ghi trong bng Nu Table c cc bn ghi (reccord) c chn, mun a cc bn ghi ny ln phn trn cng ca Table (tng cp), hon ton lm c iu ny bng cch gi yu cu PromoteSelection n i tng Table. theTable.PromoteSelection Nu mun sp xp cc bn ghi ca Table theo mt trng no vi th t tng hoc gim dn, ch cn gi yu cu Sort n i tng Table vi hai i s l trng v kiu tng hoc gim theTable.Sort(f1, Desc) hoc theTable.Sort(f1, Asc) Do thao tc trn Table ch khng phi Vtab nn d liu lu di a cng s khng chu s tc ng ca cc thao tc sp xp hay tng cp ny. La chn cc thuc tnh thng qua biu thc Vi cc bn ghi c chn trc trong Table, ta c th thc hin mt s cc thao tc trn chng: gi hin th hp thoi Query Builder xy dng biu thc Query v thc hin vic chn cc bn ghi trong Table tho biu thc ny. theTable = av.GetProject.FindDoc(Table1) Gi hin th hp thoi Query theTable.BuildQuery

Nu nh c biu thc truy vn ring , ta c th t chn cc bn ghi tho biu thc truy vn nh vo yu cu Query gi n i tng Vtab theTable = av.GetActiveDoc theVtab=theTable.GetVtab thebitmap = theTable.GetSelection theExpr = ([Name]=Name1) theVtab.Query(theExpr, theBitmap, #VTAB_SELTYPE_NEW) theVtab.UpdateSelection

Trung tam GIS NG DNG MI

90

Lp trnh Avenue Lu vi biu thc truy vn trn, phi xy dng ng c php do Avenue yu cu. Tn trng phi t trong cp ngoc vung [] nh [Name], gi tr thuc kiu chui phi t trong bn du nhy i nh Name1. Vi yu cu Query, cn phi gi ba i s cho n l chui truy vn, mt i tng Bitmap n thc hin truy vn v tr gi tr v, v mt kiu truy vn. C th ly c chui truy vn t ngi dng bng cch gi yu cu ReturnQuery n lp QueryWin ca Avenue. Yu cu ny s xut hin hp thoi cho ngi dng xy dng biu thc truy vn hoc xy dng trc mt biu thc truy vn mc nh hp thoi hin th n khi yu cu ReturnQuery c gi n. aDefaultExpr = ([Name]=Name1) theExpr = QueryWin.ReturnQuery(theVtab, aDefaultExpr) Lm vic vi cc bn ghi c chn Thng thng hay lm vic vi cc bn ghi c chn thng qua vng lp For Each trn Bitmap. Tuy nhin cng c th thao tc trc tip trn cc bit ca Bitmap nh thit lp cho tng bit, xo thit lp cho mt bit, ly s lng cc bit c chn, ... V d tnh tng din tch ca cc mu tin c chn trc, ta dng vng lp duyt qua cc mu tin ly gi tr ca trng din tch tng ng v sau cng dn li nh sau: theTable = av.GetActiveDoc theVtab = theTable.GetVtab theAreaField = theVtab.FindField(Area) sum = 0 for each rec in theVtab.GetSelection val = theVtab.ReturnValue(theField, rec) sum = sum + val end Msgbox.Info(Tong dien tich la: ++ sum.Asstring) Yu cu GetSelection gi n i tng Vtab tr v cho mt i tng Bitmap cha cc bn ghi c chn trc. Yu cu ReturnValue tr v gi tr ca trng cn ly trong bn ghi tng ng. Ta c th duyt qua tt c cc bn ghi ca bng bng cch dng vng lp For each vi i tng Table hoc cng c th cp nht li gi tr thuc tnh cho mt bn ghi no . V d sau s duyt qua cc bn ghi ca bng v thay th cc bn ghi c s ID = 5 vi tn mi Name = New Name. theTable = av.GetActiveDoc theVtab = theTable.GetVtab theIDField = theVtab.FindField(ID) theNameField = theVtab.FindField(Name) theVtab.SetEditable(true) for each rec in theVtab if (theVtab.ReturnValue(theIDField, rec)=5) then theVtab.SetValue(theNameField, rec, New Name) end end theVtab.SetEditable(false) 91

Trung tam GIS NG DNG MI

Lp trnh Avenue theVtab.Refresh Thay v phi duyt qua cc bn ghi ca bng, ta c th dng biu thc truy vn cc bn ghi c gi tr ID = 5, sau dng yu cu Calculate gn gi tr New Name cho trng Name ca cc bn ghi . theTable = av.GetActiveDoc theVtab = theTable.GetVtab theIDField = theVtab.FindField(ID) theNameField = theVtab.FindField(Name) theBitmap= theVtab.GetSelection expr= [ID]=5 theVtab.Query(expr, theBitmap, #VTAB_SELTYPE_NEW) theVtab.Calculate(New Name, theNameField) theBitmap.ClearAll theVtab.Refresh Lin kt cc bng bng thuc tnh Join hoc Link cc bng trong Avenue, phi cung cp hai bng v mt trng thuc tnh chung. Gi s c 2 bng d liu: hnh chnh huyn (Huyen) cha m v tn n v hnh chnh, dn s (Danso) cha dn s ca cc huyn . Trng d liu dng chung lin kt hai bng l trng Ma_DVHC. Trc ht cn xc nh bng ngun v bng ch toTable=av.GetProject.FindDoc(Huyen) fromTable = av.GetProject.FindDoc(Danso) toVt = toTable.GetVTab fromVt = fromTable.GetVTab Xc nh trng dng chung lin kt toField = toVt.FindField(Ma_DVHC) fromField = fromVt.FindField(Ma_DVHC) Lin kt cc bng bng yu cu Joint toVt.Join(toField, fromVt, fromField) Nu mun lin kt bng yu cu Link, thay cu lnh trn bng cu lnh di fromVt.Link(fromField, toVt, toField)

Trung tam GIS NG DNG MI

92

Lp trnh Avenue Lm vic vi bng ca lp ch

Trung tam GIS NG DNG MI

FTab i din cho cc bng d liu c lin kt vi mt ch i tng. Th d, khi thao tc trn bng Attributes of Huyen, bng ny l bng thuc tnh ca lp i tng Huyen v nh th ang thao tc vi mt FTab thay v mt VTab. FTab l duy nht bi v n bao gm mt trng Shape, trng Shape cha c tnh qui nh hnh dng ca i tng. c th truy cp n trng Shape bng cch ch nh trng Shape khi s dng lnh ReturnValue trn FTab. V FTab l mt lp con ca VTab, nn tt c cc yu cu s dng c trn VTab cng thao tc c trn FTab. Ngoi ra, cc php ton phn tch khng gian c th thc hin bng cch s dng cc yu cu Contains, Intersects v Merge trn cc i tng khng gian c th c gi ra t FTab bng ReturnValue. Khi to ra cc i tng khng gian v thm chng vo trng Shape ca mt Table ang trng thi cho php chnh sa, tc l nh ngha mt i tng khng gian trong lp ch . V d sau s to ra mt lp ch dng im. Trc tin cn to mi mt i tng Ftab c dng im n lu d liu trn a cng. anFTab = Ftab.Make(C: \Ditagis\Sample.shp.AsFileName, Point) i s Point cho bit lp ch thuc dng im, nu mun to ra lp ch thuc dng ng hoc vng th thay i s Point thnh Poly hoc Polygon. Mc nh khi to mi Ftab, Avenue thm trng Shape vo Ftab. By gi to mt trng mi c tn l ID v thm vo i tng Ftab. Lu khi to mi mt Ftab, cn phi to mi mt trng v thm vo Ftab, y l bt buc ca Avenue n c th lu c d liu khng gian. idField = Field.Make(ID, #FIELD_DECIMAL, 8, 0) anFTab.AddFields({idField}) To mi mt i tng im aP = Point.Make(10,15) Tm n trng Shape ca Ftab shapeField = anFtab.FindField(Shape) 93

Lp trnh Avenue Thm mi mt bn ghi v gi ch s ca bng ghi recNum = anFtab.AddRecord Gn im vo trng Shape anFtab.Setvalue(shapeField, recNum, aP) Gn ch s vo trng ID anFtab.Setvalue(idField, recNum, 1) Thit lp thuc tnh chnh sa cho Ftab v trng thi khng cho php anFtab.SetEditable(false) To mi Theme t Ftab theTheme = FTheme.Make(anFtab) Thm theTheme vo ca s View hin hnh theView = av.GetActiveDoc theView.Add(theTheme) Thit lp thuc tnh hin th cho lp ch theTheme.SetVisible(true) Lin kt cc bng bng khng gian Tng t nh lin kt cc bng bng trng thuc tnh, lin kt khng gian cng s dng hai trng ca hai bng lin kt. Tuy nhin hai trng y l hai trng Shape. Lin kt khng gian da vo mi quan h khng gian ca cc i tng gia hai lp ch . Sau khi lin kt, cc trng thuc tnh ca bng d liu ngun s c thm vo bng d liu ch. Mi quan h khng gian gia cc bng d liu: Point Line Polygon Point gn nht (nearest) gn nht (nearest) Khng Line gn nht (nearest) mt phn (part of) Khng Polygon nm trong (inside) nm trong (inside) nm trong (inside)

Khi lin kt da vo quan h khng gian c mi quan h gn nht, lc by gi ArcView s t ng thm mt trng khong cch Distance vo bng ch. Trng ny s cha cc gi tr tnh ton v khong cch gn nht ca cc i tng trn bng ch v bng ngun. n v khong cch y c tnh theo n v ca bn ca View. Khi lin kt da vo quan h khng gian c mi quan h mt phn, ArcView s t ng so snh quan h khng gian ca cc ng trn bng ch nu n l mt phn ca cc ng trn bng ngun th n s thm cc trng thuc tnh ca bng ngun vo bng ch. V d sau s lin kt khng gian gia lp trng hc (truong) v lp hnh chnh (hchinh) theView=av.GetActiveDoc truongTheme= theView.FindTheme(truong) truongShpField = truongTheme.GetFtab.FindField(Shape) hchanhTheme=theView.FindTheme(hchanh) hchanhShpField = hchanhTheme.GetFtab.FindField(Shape) truongTheme.Joint(truongShpField, hchanhTheme, hchanhShpField)
Trung tam GIS NG DNG MI

94

Lp trnh Avenue Cc yu cu thng c s dng vi Table Yu cu Table.Make (aVTab) aTable.GetActiveField aTable.GetVTab aTable.SetActiveField (aField) aTable.Select aTable.BlinkRow (aRowNumber) aTable.BuildQuery aTable.Find (aString) aTable.MakeField aTable.PromoteSelection aTable.Sort (aField, isDescending) Kt qu Table Field VTab ngha To mi mt Table t mt Vtab Tr v trng ang c kch hot Tr v Vtab ca Table Kch hot trng Kch hot mt mu tin T sng mu tin c s aRowNumber Hin th hp thoi truy vn Tm mt chui k t trong Table, kt qu tr v s th t ca mu tin trong Table Hin th hp thoi nh ngha trng v tr v mt trng Tng cp cc mu tin ang c t sng Sp xp theo th t tng hoc gim ca cc gi tr trong mt trng.

Number

Cc yu cu thng c s dng vi Vtab Yu cu VTab.Make (aFileName, forWrite, skipFirst) VTab.MakeNew (aFileName, aClass) VTab.MakeSQL (anSQLCon, aQueryString) aVTab.Export (aFileName, aClass, SelectedRecordsOnly) aVTab.FindField (aFieldName) aVTab.GetFields aVTab.GetNumRecords aVTab.GetNumSelRecords aVTab.GetSelection
Trung tam GIS NG DNG MI

Kt qu VTab VTab VTab VTab Field List Number Number Bitmap

ngha To mt Vtab t mt tp tin tn ti To mi mt Vtab v to mi tp tin To mt Vtab bng cu lnh truy vn trn mt SQLCon To mi mt Vtab t mt Vtab khc vi cc mu tin ang c chn Tm trng theo tn trng Tr v danh sch trng Tr v s lng cc mu tin trong Vtab Tr v s lng cc mu tin ang c chn trong Vtab Tr v Bitmap cha cc 95

Lp trnh Avenue mu tin ag c chn Gn cc mu tin c chn trong Bitmap cho Vtab Lm ti li Vtab Gn cc gi tr cho mt trng theo mt biu thc cho trc Chn cc mu tin tho iu kin truy vn. Kt qu tr v trn Bitmap Thm danh sch cc trng vo Vtab Thm mt mu tin vo Vtab, tr v ch s ca mu tin trong Vtab Xo danh sch cc trng khi Vtab Xo mt mu tin Thit lp thuc tnh cho php chnh sa Vtab Tr v gi tr ca trng tng ng vi ch s ca mu tin Gn gi tr vo trng tng ng vi ch s ca mu tin Kt ni hai Vtab vi nhau theo kiu vt l Kt ni hai Vtab vi nhau theo kiu lun l Hu kt ni vt l Hu kt ni lun l

aVTab.SetSelection (aBitmap) aVTab.UpdateSelection aVTab.Calculate (aCalculateString, aField) aVTab.Query (aQueryString, aBitmap, aSelType) aVTab.AddFields (Fields) aVTab.AddRecord aVTab.RemoveFields (Fields) aVTab.RemoveRecord (aRecordNumber) aVTab.SetEditable (isEditable) aVTab.ReturnValue (aField, aRecordNumber) aVTab.SetValue (aField, aRecordNumber, anObj) aVTab.Join (aToField, aFromVTab, aFromField) aVTab.Link (aFromField, aToVTab, aToField) aVTab.UnjoinAll aVTab.UnlinkAll 3. V D Obj

V d sau thc hin truy vn tt c cc con ng giao thng cp 2 tnh ng Thp v lu thnh mt theme ring c tn l dgtcap2.shp Hng dn: theView=av.GetActiveDoc if (theView.is(View).not) then return nil end thetheme=theView.FindTheme("dgt") if (thetheme=nil) then return nil
Trung tam GIS NG DNG MI

96

Lp trnh Avenue end theVtb=theTheme.GetFtab theBitMap=theVtb.getSelection theQr="[Cap_dgt]= 2" theVtb.Query(theQr, theBitmap, #VTAB_SELTYPE_NEW) theFName="E: \Dulieu\dgtcap2.shp".AsFileName tb = FTab.MakeNew(theFName, POLYLINE) f1 = Field.Make( "Ten_dgt",#FIELD_CHAR, 15, 0 ) f2 = Field.Make( "Chieudai",#FIELD_SHORT, 5, 0 ) tb.addFields({f1,f2}) sf1=theVtb.FindField("shape") sf2=tb.FindField("shape") sten1=theVtb.FindField("ten_dgt") sten2=tb.FindField("ten_dgt") slen1=theVtb.FindField("chieudai") slen2=tb.FindField("chieudai") tb.SetEditable(true) for each r in theVtb.GetSelection theR=tb.AddRecord tb.SetValue(sf2,theR,theVtb.ReturnValue(sf1,r)) tb.SetValue(sten2,theR,theVtb.ReturnValue(sten1,r)) tb.SetValue(slen2,theR,theVtb.ReturnValue(slen1,r)) end tb.SetEditable(false) theSrc=SrcName.Make("E: \Dulieu\dgtcap2.shp") newTheme=Theme.Make(theSrc) theView.AddTheme(newTheme) newTheme.SetVisible (true ) Bi tp phn 8 Bi tp 1: Vit cng c cho php thm mi mt trng hc trn bn ng Thp Bi tp 2: Vit cng c cho php thm mi mt im nh my trn bn ng Thp. Bi tp 3: Vit cng c tm kim nh my theo tn. Bi tp 4: Vit cng c cho bit dn s ton tnh ng Thp, dn s ca huyn ng nht Bi tp 5: Vit cng c cho bit s dn n, s dn nam trong tnh Bi tp 6: Vit cng c thng k din tch rng loi 1, loi 2, loi 3 ca tnh ng Thp
Trung tam GIS NG DNG MI

97

Lp trnh Avenue

Chng 9 BIU
1. LC M HNH BIU

Thng qua giao din ArcView, c th to cc biu t cc bng. T mt bng d liu, cn xc nh cc bn ghi s dng v cc trng mun hin th. Khi mun thay i cc thnh phn ca mt biu , v d nh tiu , c th thay i chnh n ngay trn biu . Trong m hnh ca Avenue, mt biu c kt hp vi mt Vtab v mt hoc nhiu trng. Vtab cha cc gi tr tht th hin biu . ChartDisplay s quyt nh kiu biu nh dng trn hay dng ct v ChartPart s quyt nh cch t nhn cho biu . 2. THAO TC TRN BIU To biu To biu t mt bng ca Theme hoc mt bng c thm vo n thng qua hp thoi c sn ca ArcView, v cng c th to ra biu mi t mt tp tin dBASE trn a. on Script sau s to ra mt biu t mt bng tn ti trong n. theTable = av.GetActiveDoc theVtab = theTable.GetVtab theChart = Chart. MakeUsingDialog(theVtab, Chart) if (theChart <> nil) then theChart.GetWin.Open end 98

Trung tam GIS NG DNG MI

Lp trnh Avenue on Script trn gi hp thoi to biu ca ArcView v cho php chn cc trng hin th cng nh kiu biu cn chn. Nu khng mun to biu thng qua hp thoi ca ArcView, ta c th thc hin thng qua on Script sau. To i tng Ftab tr n d liu lu trong tp tin dBASE trn a cng. theVtab = Vtab.Make(C: \Ditagis\Dulieu\ds.dbf.AsFileName, false, false) i s th hai l false ch cho bit to Vtab m khng cho php trng thi hiu chnh d liu hot ng. i s th hai l false ch cho bit to Vtab v thm mu tin u tin ca tp tin vo Vtab. Nu i s ny l true th Vtab c to ra s khng thm mu tin u tin vo. Chn cc trng s hin th trn biu v to danh sch cc trng field1 = theVtab.FindField(Danso) field2 = theVtab.FindField(DsNu) field3 = theVtab.FindField(DsNam) fieldlist = {field1, field2, field3} To biu theChart = Chart.Make(theVtab, fieldlist) Thit lp tp d liu t cc mu tin v s dng trng Ma_Dvhc lm nhn theChart.SetSeriesFromRecords(true) field4 = theVtab.FindField(Name) theChart.SetRecordLabelField(field4) theChart.GetWin.Open Kt qu chng trnh to ra biu nh sau:

Trung tam GIS NG DNG MI

99

Lp trnh Avenue Thay i cc trng xut hin trong biu Thay i cc trng xut hin trong biu bng cch s dng hp thoi ca ArcView hoc s dng yu cu ca Avenue khng thng qua hp thoi. thay i thng qua hp thoi, ta s dng yu cu Edit v gi n i tng biu . theChart = av.GetActiveDoc theChart.Edit Yu cu Edit s m hp thoi cho php thay i cc trng xut hin trong biu . Ta cng c th khng thng qua hp thoi m thao tc trc tip trn biu bng cch gi cc yu cu ca Avenue nh trong on Script sau theChart = av.GetActiveDoc theFields = theChart.GetFields theFields.Remove(1) theChart.GetVtab.Refresh on Script trn ly danh sch cc trng ca biu v xo trng th hai trong danh sch. Bi v biu c lin kt vi Vtab cho nn lm ti li Vtab s cp nht li d liu trn biu . Thay i mu sc ca dy d liu Nu khng mun hin th mu mc nh ca ArcView dnh cho dy d liu, ta c th thay i mu cho dy d liu bng cch s dng yu cu SetSeriesColor v gi n i tng ChartDisplay. theChart = av.GetActiveDoc theChart.GetChartDisplay.SetSeriesColor(0, Color.GetWhile) Nu mun bit mu ca mt d liu no trong dy d liu, ta nh vo yu cu GetSeriesColor theColor = theChart.GetChartDisplay.GetSeriesColor.Get(0) Thay i hnh dng biu Arcview cung cp 6 loi biu : Area, Bar, Column, Line, Pie v XY scatter hin th cc loi thng tin khc nhau. Ta d dng thay i loi biu bng cch s dng yu cu ShowGallery. on chng trnh sau hin th loi biu hnh trn (Pie chart): theChart = av.GetActiveDoc theChart.ShowGallery(#CHARTDISPLAY_PIE) thay i loi biu m khng s dng ShowGallery, c th thao tc vi ChartDisplay. Th d, ch nh hin th biu dng ct nh sau: theChart.GetChartDisplay.SetType(#CHARTDISPLAY_COLUMN) i vi mi loi biu , c cc kiu khc nhau chn; c 3 kiu c th p dng c cho hu ht cc biu l cc ct cnh nhau, ly tch v quan h: Biu cc ct cnh nhau hin th cc gi tr d liu gn st nhau, biu ly tch tng kt cc gi tr bn trong mi nhm d liu (hin th hnh sau).

Trung tam GIS NG DNG MI

100

Lp trnh Avenue

Biu quan h tng t nh biu ly tch, nhng mi gi tr c biu din bng s phn trm t 0% n 100%

on m sau to mt biu dng ct vi cc nhm d liu c hin th theo kiu cc ct cnh nhau: theChart.GetChartDisplay.SetType(#CHARTDISPLAY_COLUMN) theChart.GetChartDisplay.SetStyle(#CHARTDISPLAY_VIEW_SIDEBYSIDE) Vi cc biu dng ng (Line) v XY scatter, ta c th ci t vch du (marker) im d liu cho cc kiu khc nhau. Cc kiu gm hnh vung nh, trung bnh hoc ln, du gch cho v du chm. on chng trnh sau a ra cch to lp vch du dng du gch cho cho biu ng. theChart.GetChartDisplay.SetMark(#CHARTDISPLAY_MARK_CROSS) theChart.GetChartDisplay.SetPlotMarks(true)

Trung tam GIS NG DNG MI

101

Lp trnh Avenue

Thit lp cc trc ca biu Mc nh, Arcview to lp cc trc x, y ph thuc vo loi biu . Phn ln cc biu hin th thng tin v cc nhm d liu trn trc x v c lng cc gi tr s trn trc y, v th c tnh ca trc x khc trc y. Do vy, khi thao tc cn phi xc nh cng vic m thao tc nm trn trc x hay trc y. on chng trnh sau a ra cch thc hin cc thay i trn trc y ca biu . theChart = av.GetActiveDoc theYAxis = theChart.GetYAxis theYAxis.SetAxisVisible(true) theYAxis.SetBoundsUsed(true) theYAxis.SetBoundsMax(2000000) theYAxis.SetBoundsMin(100000) theYAxis.SetMajorGridVisible(true) thay i v tr v mu sc theYAxis.SetLeft(false) theYAxis.SetColor(Color.GetBlue) Script ny nhn c trc y, lm cho n hin r v thit lp gii hn trn l 2.000.000 v gii hn di l 100.000. Script cng v ra mt ng khung li t cc v tr ca trc y v gn cho n mu xanh. Tng t, thay i cch hin th trn trc x, cch lm nh sau: theChart = av.GetActiveDoc theXAxis = theChart.GetXAxis theXAxis.SetAxisVisible(true) theXAxis.SetLabelVisible(true) theXAxis.SetName(Danso) theXAxis.SetTickLabelVisible(true) thay i v tr v mu sc theXAxis.SetBottom(true) theXAxis.SetColor(Color.GetGreen)
Trung tam GIS NG DNG MI

102

Lp trnh Avenue Thm tiu cho biu Thm tiu cho biu m t ni dung biu v loi quan h gia d liu. Khi to biu , Arcview to ra mt tiu mc nh. Ta c th d dng thay i v tr ca tiu , ni dung tiu v mu sc thng qua Avenue. theChart = av.GetActiveDoc theTitle = theChart.GetTitle theTitle.SetVisible(true) t tn tiu theTitle.SetName(Ban do co cau gioi tinh) v tr ca tiu trn d liu theTitle.SetLocation(#CHARTDISPLAY_LOC_TOP) theTitle.SetColor(Color.GetMagenta) Script ny nhn tiu ca biu , lm cho n hin r, to lp mt tiu mi, di chuyn tiu mi ln pha trn biu v i mu ca tiu thnh mu ti. Thay i ch gii trn biu Ch gii biu l vng hin th tn v mu sc ca dy d liu. Chng ta c th thay i v tr ca ch gii v mu sc ca ch trong ch gii. theChart = av.GetActiveDoc theLegend = theChart.GetChartLegend theLegend.SetLocation(#CHARTDISPLAY_LOC_RIGHT) theLegend.SetColor(Color.GetRed) Script ny chuyn ch gii n bn phi ca biu v thay i mu ch thnh mu . In biu in biu , s dng yu cu Print v gi n i tng biu cn in. theChart = av.GetActiveDoc theChart.Print Cc yu cu thng c s dng vi Chart Yu cu Chart.Make (aVTab, aFieldList) Chart.MakeUsingDialog (aVTab, aGUIName) Chart.MakeWithGUI (aVTab, aFieldList, aGUIName) aChart.GetChartDisplay aChart.GetChartLegend aChart.GetFields Kt qu Chart Chart Chart Display Legend List ngha To Chart t Vtab v danh sch cc trng Gi hin th hp thoi to Chart To Chart t Vtab, danh sch cc trng v tn GUI Tr v Display ca Chart Tr v Legend ca Chart Tr v danh sch trng kt hp vi Chart 103

Trung tam GIS NG DNG MI

Lp trnh Avenue aChart.GetGroupLabel (aGroup) aChart.GetRecordLabelField aChart.GetSeriesLabel (aSeries) aChart.GetTitle aChart.GetVTab aChart.GetXAxis aChart.GetYAxis aChart.SetGroupLabel (aGroup, aString) aChart.SetRecordLabelField (aField) aChart.SetSeriesFromRecords (isfromrecords) aChart.SetSeriesLabel (aSeries, aString) aChart.Edit aChart.ShowGallery (aGalleryName) aChart.Print 3. V D V d 1: V d sau v mt Chart cho mt theme ang tch cc, theme c Legend phi dng Unique Value, Graduated Color hay dng Graduated Symbol. theView=av.GetActiveDoc theTheme=theView.GetActiveThemes.Get(0) theLegend=theTheme.GetLegend theSymbols=theLegend.GetSymbols theClasses=theLegend.GetClassifications theFieldName=theLegend.GetFieldNames.Get(0) theVTab=theTheme.GetFTab theField = theVTab.FindField(theFieldName) ' to file d liu cho biu ' outFName = av.GetProject.MakeFileName( theTheme.GetName, "dbf") outFName = FileDialog.Put( outFName, "*.dbf", "Output Histogram File" ) if (outFName = Nil) then exit end
Trung tam GIS NG DNG MI

String Field String ChartPart Vtab ChartPart ChartPart

Tr v nhn ca mt nhm trong Chart Tr v trng cha ni dung nhn Tr v nhn ca mt Series Tr v tiu ca Chart Tr v Vtab kt hp vi Chart Tr v trc X Tr v trc Y Gn nhn cho mt nhm ca Chart Gn trng cha ni dung t nhn cho cc mu tin Thit lp Series t cc mu tin Gn nhn cho Series Gi hin th hp thoi chnh sa Chart Gi hin th hp thoi hin th cc loi Chart theo mt kiu no In Chart

104

Lp trnh Avenue

newVTab=VTab.MakeNew( outFName, dBASE ) labelf=Field.Make( "Label", #FIELD_CHAR, 20, 0 ) countf=Field.Make( "Count", #FIELD_DECIMAL, 10, 0) newVTab.AddFields( {labelf, countf} ) s Range trong Legend countlist = {} for each c in theClasses countlist.Add(0) end numClasses = theClasses.Count ' ly v s lng Record tng ng vi mi Range trong Legend for each rec in theVTab v = theVTab.ReturnValue(theField,rec) for each i in 0..(numClasses - 1) if (theClasses.Get(i).Contains(v)) then countlist.Set(i,countlist.Get(i)+1) break end end end ' Ghi xung file tm ' maxcount=0 for each i in 0..(numClasses-1) rec=newVTab.AddRecord newVTab.SetValue(labelf,rec,theClasses.Get(i).GetLabel) newVTab.SetValue(countf,rec,countlist.Get(i)) maxcount=maxcount max countlist.Get(i) end ' To Chart newChart=Chart.Make(newVTab,{countf}) newChart.SetRecordLabelField(labelf) for each i in 0..(numClasses-1) newChart.GetChartDisplay.SetSeriesColor(i,theSymbols.Get(i).GetColor) end newChart.GetTitle.SetName("Histogram of"++theTheme.GetName) newChart.GetYAxis.SetBoundsUsed(true) newChart.GetYAxis.SetBoundsMin(0)
Trung tam GIS NG DNG MI

105

Lp trnh Avenue newChart.GetYAxis.SetBoundsMax(maxcount) newChart.GetWin.Open V d 2: To Pie Chart dn s gia t l nam v n cc huyn ca tnh ng Thp trong view ang xt c theme Danso trng thi Active theView = av.GetActiveDoc theTheme = theView.GetActiveThemes.Get(0) theLegend = theTheme.GetLegend ' Xc nh trng cn to Pie Chart. tb=theTheme.GetFtab af=tb.FindField("Nam") bf=tb.FindField("Nu") theChart= Chart.Make(tb, {af,bf}) theChart.SetSeriesFromRecords(false) field4 = tb.FindField("ten_huyen") theChart.SetRecordLabelField(field4) theChart.GetChartDisplay.SetStyle (#CHARTDISPLAY_VIEW_CUMULATIVE) theChart.GetChartDisplay.SetType(#CHARTDISPLAY_PIE) theChart.GetWin.Open Bi tp phn 9 Bi tp 1: V biu hnh Pie th hin t l nam v n ca tnh ng Thp Bi tp 2: Vit Script to Layout xut ra biu bi 1

Trung tam GIS NG DNG MI

106

Lp trnh Avenue

Chng 10 FILE
1. M HNH LC I TNG FILE

Lp File c hai lp con thuc v n, l LineFile v TextFile. Mi i tng File c mt tn File tng ng vi n. FileDialog cha cc FileName. ODB khng phi l mt i tng ca lp File n l mt dng File c bit. 2. THAO TC TRN FILE Lp File Lp File l mt lp tru tng (lp tru tng l lp khng c thc th thuc v n). Lp File cho php ta m, ng, xo, hay copy mt file t v tr ny n v tr khc trn a. Lp File qun l c v ghi cc file ASCII, lp File c 2 lp con l lp LineFile v lp TextFile. Cc yu cu ca lp File Tn yu cu GetFileName GetName GetSize ReadElt Close CanDelete(aFileName) Boolean Kiu tr v FileName String Number Object ngha Tr v FileName i tng

Tr v ng dn y ti File Tr v kch thc File c mt i tng trong File ng file Kim tra xem file c xo c khng 107

Trung tam GIS NG DNG MI

Lp trnh Avenue Copy(sFileName,dFileName) Delete Exists(aFileName) IsWritable(aFileName) LineFile Lp LineFile xem mi hng trong file l mt phn t. D , mi ln c hay ghi vo file ny ta phi thao tc vi tng hng. V d sau trnh by c mt text file v hin th ln msgbox f=FileDialog.Show(*.txt,Text file,Doc text field) if (f=nil) then return nil end str= afile=TextFile.Make(f,#FILE_PERM_READ) if (afile=nil) then return nil end while (afile.IsAtEnd.Not) str=str + afile.ReadElt end msgbox.info(str,Noi dung File) Cu lnh afile=TextFile.Make(f,#FILE_PERM_READ) cho php ta to ra mt TextFile c thng s truyn vo l ng dn ca file v tc v tng ng s thc hin trn file ny. Vng lp while (afile.IsAtEnd.not) Str=str + afile.ReadElt End s c cc k t trong file cho ti khi gp k t kt thc file. Mt s yu cu trn lp TextFile 108 Boolean Boolean Copy file t v tr sFileName ti aFileName Xo file Kim tra xem file c tn ti khng Kim tra xem file cho php ghi khng

Trung tam GIS NG DNG MI

Lp trnh Avenue Tn yu cu Kiu tr v ngha To mt TextFile c nChar k t trong TextFile B c dng hin ti Ghi nChar k t trong chui aString voTextFile, v tr ghi bt u ti v tr con tr Ghi mt k t vo TextFile ti v tr con tr

Make(aFile,aFilePerm) TextFile Read(nChar) SkipLine Write(aString,nChar) String

WriteElt(aChar)

Khi to mt TextFile ta phi cho bit file c, ghi hay va c va ghi. Thng s aFilePerm trong yu cu Make ni ln iu ny Gi tr ca aFilePerm nh sau: #FILE_PERM_READ #FILE_PERM_WRITE M mt file c sn c To mi mt file v ghi vo file ny

#FILE_PERM_MODIFY M mt file c sn v c hay ghi trn file ny, ghi ch cho php ghi ln mt k t c sn, hay ghi tip vo cui file, khng cho php chn k t vo gia file. #FILE_PERM_APPEND Cho php ghi tip vo file c sn hay to mi TextFile Lp TextFile xem mi k t trong file l mt phn t. Do , mi ln c hay ghi vo file ny ta phi thao tc vi tng k t mt. V d sau cho php ghi tip vo mt text file c sn trn a, nu file ny cha c trn a th to mi v ghi vo n. theLabels={City,State, Quanlity, Population} theInput={Redlands,California,Good,7000} theFN=FindDialog.Show(*.txt,Text File,Specify File) if (File.Exists(theFN)) then nu file tn ti trn a m file v cho php ghi tip vo file theWriteFile=FileLine.Make(theFN,#FILE_PERM_APPEND) if (theWriteFile=nil) then msgbox.info(Khong the mo file nay,Thong bao) exit
Trung tam GIS NG DNG MI

109

Lp trnh Avenue end else to mi file ny theWriteFile=LineFile.Make(theFN,#FILE_PERM_WRITE) if (theWrite=nil) then msgbox.info(Khong the tao file nay,Thong bao) exit end tin hnh ghi vo file theWriteFile.WritElt(theLabels.Get(0) + , ++ theLabels.Get(1) + , ++ theLabels.Get(2) + , ++ theLabels.Get(3)) theWriteFile.WritElt(theInput.Get(0)+ , theInput.Get(2) + ,++ theInput.Get(3)) ++ theInput.Get(1)+ , ++ trng hp cha c file ny trn a

while (msgbox.YesNo(Ban ghi tiep khong,true)) theInput=Msgbox.MultiInput(Customer name, Data,theLabels,theInput) if (theInput.count=0) then break end theWriteFile.writElt(theInput.Get(0) +, ++ theInput.Get(1)+ , ++ theInput.Get(2) + , ++ theInput.Get(3)) end theWriteFile.close Mt s yu cu ca lp LineFile Tn yu cu Make(aFile,aFilePerm) Read(aLineList,numLines) Kiu tr v LineFile ngha To mt LineFile c numLines LineFile v lu aLineList String c dng tip theo Ghi numLines trong trong aLineList vo LineFile 110 trong trong

ReadElt Write(aLineList,numLines)

Trung tam GIS NG DNG MI

Lp trnh Avenue WriteElt(aLine) GetSize ODB ODB (Object Database File) khng phi lp con ca lp File, n l mt loi file c bit. Thng qua ODB file ta c th ghi cc thuc tnh ca bt k i tng no trong ArcView xung file ny. File project .apr l mt loi ca file ny. V d sau dng file ODB lu project hin ti xung file c tn l project.apr myODB=ODB.Make(project.apr.AsFileName) myODB.Add(av.GetProject) myODB.Commit file Bi tp phn 10 Bi tp 1: c mt file, thay tt c cc k t du ! trong file bng k t du ?. Bi tp 2: m s dng trong mt File Bi tp 3: c d liu t mt file c sn to x, y lu vo mt bng V d file a.txt c ni dung nh sau 123.45 4535.54 9785.22 Bi tp 3: Lu tt c cc script c chn trong project hin hnh vo mt th mc trn a Bi tp 4: Ly tt c cc script trong mt th mc vo project hin hnh 674.45 675.67 564.33 ghi ton b tt c cc i tng trong project hin ti xung Mumber Ghi mt dng vo LineFile ti v tr con tr Tr v LineFile s dng trong

Ct u c t vo trng x, ct 2 c t vo trng y.

Trung tam GIS NG DNG MI

111

Lp trnh Avenue

Chng 11 LU TR V PHN PHI NG DNG


1. LU TR NG DNG TU BIN TRONG EXTENSION ArcView cung cp mt phng thc khc cho php tu bin gi l extension. Extension cung cp mt cch thc tin li cho php phn phi tp cc cng c cng vi cc thnh phn cn thit khc. Li ch ca extension l c th load khi cn cc cng c m rng. Trong ArcView c mt s extension c sn nh CAD Reader, Digitizer, Network Analyst, Spatial Analyst. Cc extension ny thm mi cc button v menu vo giao din ArcView hay cho php ArcView hin th thm cc dng format d liu nh l CAD. To mi mt extension Vit cc Script to extension n gin ta xem nh extension l mt vt cha cc i tng (lp Extension l lp con ca lp ODB). to mt extension, ly cc i tng m ta mun t project nh cc menu, cc button, cc script, hay cc view em chng vo extension. Di y l mt script ch cch to mt extension cha mt view, mt button mi trn thanh Menubar ca view. theProject=av.getProject tm script ci t v b ci t extension theInstallScript=theProject.FindDoc(SampleInstallScript).GetScript theUninstallScript=theProject.FindDoc(SampleUninstallScript).GetScript kim tra xem c script ci t v b ci t cha if ((theInstallScript=nil) or (theUninstall=nil)) then Msgbox.info(cha c script ci t v b ci t,Thng bo) Return nil End to file extension, file extension thng c ui .avx myExtension=Extension.Make($HOME/myext.avx.asFileName, Sample extension, theInstallscript, theUninstallscript,{}) ly menu mi to v b vo extension theViewMenubar=theProject.FindGui(View).GetMenuBar theMenuItem=theViewMenuBar.FindByLabel(New Menu) myExtension.Add(theMenuItem) ly view c tn l ban do tinh Dong Thap v b vo extension myExtension.Add(theProject.FindDoc(Ban do tinh Dong Thap)) b cc script cn thit vo extension ny, gi s tt c cc Script trong project ny u cn thit b vo extension for each d in av.GetProject.GetDocs if (d.Is(SEd)) then myExtension.add(d.GetScript) end 112

Trung tam GIS NG DNG MI

Lp trnh Avenue end thm vo mt cu m t v extension ny, cu ny xut hin trong dialog xut hin extension myExtension.SetAbout(y l mt extension) chc rng ghi tt c cc i tng xung file extension myExtension.Commit Vit cc Script ci t v b ci t extension Extension khi c load vo mt project s thm cc i tng (menu, button, view...) trong project hin ti. lm c iu ny, ta to mt script ci t (install script) chy khi load script ny vo project. Script ci t cha cc lnh Avenue ly ra cc i tng t extension v t chng vo v tr tng ng trn project hin thi. Chng hn, t menu mi vo thanh Menubar ca View v thm view vo project. Khi vit script ci t, nn nh v tr cc i tng a vo extension trc c th t chng ng v tr trong project. if (av.GetProject=nil) then return nil end thm menu vo menu file trong project theMenuBar=av.GetProject.FindGui(View).GtMnuBar theMenu=theMenuBar.FindByLabel(File) if (theMenu<>nil) then theMenubar.add(self.Get(0), theMenuBar.GetControls.Find(theMenu)) else theMenuBar.Add(self.Get(0),999) end thm menu vo project av.GetProject.AddDoc(self.get(1)) Script ci t thm cc i tng lu trong extension vo project hin ti. Nh vy, iu u tin script ci t lm l kim tra c project khng. Nu c, script ci t tip tc thc hin, trong trng hp ny n s ly thanh MenuBar ca View v gn vo menu mi trong menu File. Nu menu File khng tn ti (b xo hay i tn), menu mi s c t vo cui ca thanh MenuBar. iu cui cng script ci t lm l thm vo mt view mi. Ch l script ci t khng ci t vo script hin ti script no. ArcView s t ng tm kim tt c cc extension khi tm mt script cn thc thi. Nh vy, cc script kt hp vi mt extension ch cn thm vo extension khi ta to ra n. Khi b mt extension ra khi project, khng cn s dng n trong project th cng cn b tt c cc i tng km theo n. Script sau b menu mi v view khi project. if (av.GetProject=nil) then return nil end
Trung tam GIS NG DNG MI

113

Lp trnh Avenue if (av.GetProject.IsClosing) then return nil end b menu theMenuBar =av.GetProject.FindGui(View).GetMenuBar theMenuBar.Remove(self.Get(0)) b view av.GetProject.RemoveDoc(self.Get(1)) Ging nh script install, c th s dng extension tham kho trc tip cc i tng b n khi project hin hin ti. Theo cch ny, khng phi lo nu cc i tng b thay i bi ngi s dng (v d nh nhn ca menu). Cc script ci t v b ci t ta phi c dch trc, dch cc script ny s gip ta loi b cc li nu c trc khi xy dng extension. Chy th extension By gi c tt c cc script cn thit to mt extension. Chy script to extension to file extension .avx, copy file ny vo mt trong hai v tr sau: th mc ext32 nm trong th mc ci t ca ArcView hay vo th mc xc nh bi bin mi trng $USEREXT ( v tr mc nh cho $USEREXT l $HOME). Extension va to by gi xut hin trong hp thoi Extension Dialog. Tch hp mt extension vi cc extension khc Trong ArcView, nhiu extension c load vo cng mt lc. iu ny c ngha c th ph thuc vo cc extension khc cung cp cc chc nng ph cho extension ca ta. Chng hn, xy dng mt extension cha vi cng c chuyn bit h tr cho extension Network Analyst. Khi s dng extension ny, mun ArcView load extension ca ng thi load lun extension Network Analyst. Script sau l v d cho php to ra mt extension m n ph thuc vo extension Network Analyst v extension Spatial Analyst theProject =av.GetProject ly script ci t v b ci t theInstallScript=theProject.FindDoc(SampleInstallScript).GetScript theUninstallScript=theProject.FindDoc(SampleUninstallScript).GetScript ch ra v tr ca cc extension m extension ca mnh ph thuc vo aExt=$HOME/ext32/network.avx.AsFileName bExt=$HOME/ext32/spatial.avx.AsFileName tao danh sch cc extension ph thuc theDepend={aExt,bExt} To file extension myExtension=Extension.Make($HOME/myext.avx.AsFileName, Sample extension, theInstallScript,theUninstallScrip,theDepend} Mt s yu cu ca lp Extension Tn yu cu Find(aNameorFileName Kiu tr v Extension ngha Tm mt extension c 114

Trung tam GIS NG DNG MI

Lp trnh Avenue ) load vo project, i s truyn vo l tn ca extension hay tn file ca extension M mt extension c ng dn l aFileName Kim tra xem mt extension load c khng Kim tra xem mt Extension c Unload c khng Tr v chui m t extension Thit lp chui m t extension Tr v true nu extension c ph thuc vo cc extension khc

Open(aFileName) CanLoad CanUnLoad GetAbout SetAbout(aString) IsDependency

Extension Boolean Boolean String

Boolean

1. M HO SCRIPT Khi xy dng hon chnh ng dng, mun phn phi ng dng ca mnh cho khch hng nhng li khng mun khch hng truy cp vo cc Script vit. Vy th phi lm bng cch no? ArcView cung cp cho mt lp m ho cc Script vit gi l EncryptedScript. Cc Script sau khi c m ho s thc thi nhim v ging nh cc Script cha m ho, tuy nhin khng th xem c m ngun ca chng. V khi mt Script c m ho th khng th gii m li c, v vy trc khi m ho cn phi sao lu cc Script trc. on m sau s tm v duyt qua danh sch cc Script, sau hi c mun m ho cc Script khng ? theDocs=av.GetProject.GetDocs theSEds = {} ly danh sch cc Script for each theDoc in theDocs if (theDOC.GetGUI = "Script") then theSEds.Add(theDoc) end end thc hin lp m ho cc Script for each i in theSEds xc nhn m ho Script sure = MsgBox.YesNo(" c mun m ho Script "++i.GetName+"?","M ho", False) if ( Not sure) then Continue
Trung tam GIS NG DNG MI

115

Lp trnh Avenue end To Script c m ho theScript = EncryptedScript.MakeFromScript(i.GetScript) gn tn cho Script m ho trng vi tn Script cha m ho theScript.SetName(i.GetName) thm Script m ho vo n av.GetProject.AddScript(theScript) xo Script cha m ho av.GetProject.RemoveDoc(i) end Cc yu cu c s dng vi EncryptedScript Yu cu EncryptedScript.Make (someAvenueSourceCode) EncryptedScript.MakeFromScript (aScript) Kt qu EncryptedScript EncryptedScript ngha To mt Script mi c m ho vi on m Avenue. To mt Script c m ho t mt Script c sn.

Trung tam GIS NG DNG MI

116

Lp trnh Avenue

Chng 12 LP TRNH GIAO DIN


1. GII THIU DIALOG Dialog l mt giao din xy dng cc ng dng trong ArcView. Dialog cho php t chc cc nhim v n hoc mt tp cc nhim v quan h trn cc ca s ring, ging nh cch t chc cc nhim v c quan h vi nhau trong cng mt menu hoc trn thanh button. Dialog Designer l mt Extension do ArcView cung cp, vi Dialog Designer ta c th: To ca s nhp ring cho .

Dng dialog iu khin trc tip vic hin th d liu.

T chc cc iu khin c quan h vi nhau trn trn cc ca s ring.

Trung tam GIS NG DNG MI

117

Lp trnh Avenue

Thm trc tip cc button vo View hoc Layout

Dialog Designer ch h tr xy dng cc nhim v trn cc Dialog mi ch khng cho php sa i cc dialog sn c ca ArcView. Li ch ca vic dng Dialog Designer l cho php to ra cc hp thoi giao tip vi ngi dng theo thit k ring ca . 2. CCH LM VIC CA DIALOG s dng Dialog Designer, cn phi np n t hp thoi Extension do ArcView cung cp.

Trung tam GIS NG DNG MI

118

Lp trnh Avenue

Khi c np vo trong n s xut hin mt DocGUI mi gi l Dialogs. Kch i vo biu tng Dialogs, s to ra mt Dialog Editor sn sng cho php to ra cc thnh phn giao din hay cn gi l cc iu khin trong hp thoi mi nh buttons, checkboxs, listboxs, v.v.

Controls

DialoDialog Editor

Control Properties

Tt c cc thnh phn giao din (iu khin) c th thm vo dialog u nm trn thanh toolbar. Ch cn chn chng v ko th vo dialog. Mi iu khin u lun c mt tp cc thuc tnh cn phi thit lp cho chng. Mt khi thm tp cc iu khin vo dialog, cn phi vit cc script gn vo chng, cc script ny s c thc hin khi s dng n cc iu khin. 3. CC IU KHIN TRONG DIALOG

Trung tam GIS NG DNG MI

119

Lp trnh Avenue Label button Button Tool Text line Text box List box Combo box Text Label Check box Radio button Slider Icon box Control panel Cho php thc hin mt nhim v khi kch n. Dng ch trn n thng m t hnh ng m n thc hin. Cng cho php thc hin mt nhim v khi kch ln n nhng y dng ch c thay bng biu tng (icon) Thc hin mt nhim v khi tng tc vi mt document nh View. Tool trn Dialog cng lm vic ging nh tool trn thanh toolbar Cho php nhp vo mt dng thng tin Cho php nhp vo nhiu dng thng tin Hin th mt hoc nhiu ct danh sch cho ngi dng chn Hin th mt hoc nhiu ct danh sch cho ngi dng chn, nhng ch s xung khi kch vo n Cho php hin th dng ch c nh Cho php ngi dng bt/tt la chn Kt hp vi cc radio button khc cung cp mt tp cc la chn cho ngi dng Cho php thit lp mt gi tr ring nm trong mt dy cc gi tr gii hn. Slider c th t nm theo phng ngang hoc phng ng. Cho php hin th mt hnh nh tnh trn dialog, v d nh logo cng ty. Hnh nh y c cc dng nh GIF, BMP, TIFF Nhm cc iu khin c quan h vi nhau trn dialog.

4. TO MT DIALOG V THM CC IU KHIN TRN N Khi pht trin mt ng dng, s lng cc dialog, cc iu khin trn cc dialog v cc script kt hp vi cc dialog l rt ln. V vy vic theo di chng s rt l kh khn nu nh khng c mt phng php qun l ph hp. Sau y l vi gi c th d qun l chng. i vi tn ca Dialog chc chn tn ca dialog do ta xy dng khng b xung t (trng tn) vi cc Dialog ca ArcView cng nh ca cc Extension khc, nn t mt thnh phn m rng trc tn ca dialog. Thnh phn m rng ny c th dng tn ca ng dng hoc c th dng tn t chc t cho n. <tn ng dng>.<tn ca dialog> V d: <Dlieudongthap>.<Nhapdulieunha> i vi tn ca Script
Trung tam GIS NG DNG MI

120

Lp trnh Avenue nn t tn ca Script sao cho sau ny ta c th d tham chiu n n. Sau y l gi gip t tn cho cc script kt hp vi danh sch cc dialog trong n v cho php nhanh chng tm ra n khi mun chnh sa. s dng tn dialog, theo sau l tn iu khin v thuc tnh ca n. <tn dialog>.<tn iu khin>.<tn thuc tnh> V d: <MyDialog.lbt_Done.Click> i vi tn ca cc iu khin Nn dng thnh phn m rng nhn din loi iu khin m ta ang s dng trc tn ca chng. Chng hn nh vi nt OK nn t tn l lbt_OK . Tn ca cc iu khin trong mt dialog l duy nht, ngha l khng c c hai iu khin trng tn trong cng mt dialog. Tuy nhin, ta c th s dng cng tn cho cc iu khin trn cc dialog khc nhau. Sau y l bng gi v cch t thnh phn m rng cho cc iu khin Phn m rng Lbt Bnt Tol Txl Txb Lbx Cbx txt cbx rad sld ibx cpa Kiu iu khin Label button Button Tool Text line Text box List box Combo box Text Label Check box Radio button Slider Icon box Control panel

V d: To Dialog cho php hin th danh sch Theme trong View hin hnh. Khi kch chn Theme trong danh sch, trng hp Theme ang ch hin th th cho tt ch hin th, trng hp Theme ang ch tt hin th th cho m ch hin th. B1: M n ArcView -> to mt View mi -> thm cc Theme (lp d liu) vo View.

Trung tam GIS NG DNG MI

121

Lp trnh Avenue

B2: T menu File trong ca s Project, chn mc Extension..., Kch chn Dialog Designer thm Extension ny vo n.

B3: Kch i vo DocGUI Dialogs m ca s Dialog Editor. B4: Kch phi chut vo Dialog m ca s thuc tnh (Properties) v t tn cho n l Thietlaphienthi, thit lp cc thuc tnh nh hnh di

Trung tam GIS NG DNG MI

122

Lp trnh Avenue

B5: Kch vo biu tng Listbox trn thanh Tooalbar v ko th n vo ca s Dialog, kch phi chut trn hp listbox v t tn cho n l lbx_Danhsach

Trung tam GIS NG DNG MI

123

Lp trnh Avenue B6: Kch vo biu tng Label Button trn thanh Tooalbar v ko th n vo ca s Dialog, kch phi chut trn button va ko th, trong ca s Properties t tn cho n l lbt_Thoat, kch i vo hp thoi bn phi trng Label, v nhp vo Thot

B7: Kch vo biu tng Text Label trn thanh Tooalbar v ko th n vo ca s Dialog, kch phi chut trn button va ko th, trong ca s Properties kch i vo hp thoi bn phi trng Label, v nhp vo Chn Theme Sp xp v tr cc thnh phn trong Dialog nh hnh di.

B8: Vit lnh cho cc iu khin. mun khi kch vo mt button trn thanh button bar th s xut hin hp thoi Dialog .V vy, ta cn vit mt Script gn vo s kin Click ca button ny. Script ny c tn Thietlaphienthi.Open_Dialog.
Trung tam GIS NG DNG MI

124

Lp trnh Avenue aDlog = av.FindDialog(Thietlaphienthi) if (aDlog <> nil) then aDlog.Open else Msgbox.info(Khong tim thay Dialog Thietlaphienthi ,Thong bao) end khi Dialog xut hin th n s hin th danh sch cc Theme ca View trong hp listbox, cn vit Script ly danh sch cc Theme v gn vo s kin Open ca Dialog, Script c tn Thietlaphienthi.Dialog.Open. nm gi Dialog aDlog = self tm n i tng listbox lbx_Danhsach = aDlog.FindByName(lbx_Danhsach) nm gi View theView = av.GetActiveDoc ly danh sch Theme lstThemes = theView.GetThemes gn danh sch Theme vo hp listbox lbx_Danhsach.DefineFromList(lstThemes) cn phi vit mt Script gn vo s kin Select ca i tng listbox, khi ngi dng kch chn Theme trong hp listbox, chng trnh s thit lp ch hin th cho Theme tng ng. Script c t tn l Thietlaphienthi.lbx_danhsach.Select theTheme = self.GetSelection.Get(0) theTheme.SetVisible(theTheme.IsVisible.Not) cng cn vit Script ng Dialog khi ngi dng kch vo nt Thot. Script c t tn l Thietlaphienthi.lbt_Thoat.Click v gn vo s kin Click ca label button Thoat. self.GetDialog.Close By gi c y cc Script cng nh c Dialog cha cc thnh phn thc hin c nhim v ca ta. Tuy nhin, hon thin hn chng trnh, nn vit Script gn cho s kin Update iu khin trn thanh button bar ca View, Script ny kim tra xem c Theme no trong View tn ti khng? nu c tn ti th s cho button ch kch hot, ngc li th cho khng kch hot. Script t tn l Thietlaphienthi.button.OpenDialog.Update theView = av.GetActiveDoc self.SetEnabled(theView.GetThemes.Count > 0) Gn cc Script vo v tr ca cc iu khin, thc hin chng trnh s thy c kt qu t chng trnh.
Trung tam GIS NG DNG MI

125

Lp trnh Avenue

5. PHN PHI DIALOG VO EXTENSION Tu thuc vo ng dng m c cc cch phn phi khc nhau n ngi dng. Nu cc dialog thuc loi ring bit, ch dng cho mt n th nn lu cc dialog cng vi n ny. Nu mun s dng cc dialog cho cc n khc hoc c k hoch phn phi chng cho ngi khc th nn to Extension. Chng ta s to ra Extension t v d trn. Trc khi to Extension ny, cn phi c n cha v d thc hin trong phn trn, cng cn c qua chng 11 bit cc bc to ra Extension. 1. Vit script to Extension, t tn cho Script ny l ThietlaphienthiExt.Make InstallScript=av.FindScript(ThietlaphienthiExt.Install) UninstallScript=av.FindScript(ThietlaphienthiExt.Uninstall) ThietlaphienthiExt=Extension.Make(C: \Thietlaphienthi.avx.AsFileName,Thiet lap hien thi, InstallScript , UninstallScript, {$AVBIN/avdlog.dll.AsFileName}) ThietlaphienthiExt.SetExtVersion(1) ThietlaphienthiExt.SetAbout(Thiet lap che do hien thi cho Theme) tm n Dialog v hu b kt ni n Server aDialog = av.FindDialog(Thietlaphienthi) aDialog.SetServer(nil)
Trung tam GIS NG DNG MI

126

Lp trnh Avenue tm thnh phn trong Dialog v hu b cc tham chiu n cc Theme aDialog.FindByName(lbx_Danhsach).Empty Thm Dialog vo Extension ThietlaphienthiExt.Add(aDialog) Tm n nt trn thanh button bar ca View c nhim v m Dialog v gn n vo Extension controls = av.FindGUI(View).GetButtonbar.GetControls aButton = controls.Get(controls.Count-1) ThietlaphienthiExt.Add(aButton) Thm cc Script lin quan n Dialog vo Extension for each aDoc in av.GetProject.GetDocs if(aDoc.Is(SEd)) then if (aDoc.Getname.Contains(Thietlaphienthi.)) then if (aDoc.IsCompiled.Not) then aDoc.Compile end ThietlaphienthiExt.Add(av.FindScript(aDoc.GetName)) end end end Ghi Extension ra tp tin ThietlaphienthiExt.Commit

2. Vit script ThietlaphienthiExt.Install if (av.GetProject = nil) then return nil end tm n button trong Extension m ta thm trong script Thietlaphienthi.Make myButton = self.Get(1) viewGUI = av.GetProject.FindGUI(View) viewGUI.getButtonbar.Add(myButton,999) viewGUI.SetModified(true) 3. Vit script ThietlaphienthiExt.Uninstall if (av.GetProject = nil) then return nil end if (av.GetProject.IsClosing) then return nil end theButtonbar = av.GetProject.FindGUI(View).GetButtonbar theButtonbar.Remove(self.Get(1))
Trung tam GIS NG DNG MI

127

Lp trnh Avenue

4. To tp tin Extension Thc hin script Thietlaphienthi.Make, ta s c c tp tin Extension C: \thietlaphienthi.avx Chp tp tin ny vo th mc EXT32 trong th mc gc ca ArcView, v d: C: \ESRI_32\AV_GIS30\ARCVIEW\EXT32 M ca s n v np Extension ny vo, ta s c c nt iu khin trn thanh button bar ca View v dialog Thietlaphienthi nh v d trn. 6. CC THUC TNH CA CC IU KHIN Button S dng button bt u, kt thc hoc ct ngang mt tin trnh cng vic. Button thng th hin bng icon nhn din hnh ng m n s thc hin. Nu cn hin th chui th dng Label button. Cc thuc tnh - Click: cha tn ca script cn thc hin khi kch vo button - Disabled: ch nh tnh trng kch hot ca iu khin - Help: hin th dng ch gip thanh trng thi v tooltip. Khi nhp cho thuc tnh ny cn phn cch hai chui bng du // - HelpTopic: cha dng Topic trong tp tin Help c thit lp trong thuc tnh Help topic ca Dialog. - Icon: tn ca Icon hin th - Invisible: ch nh tnh trng hin th ca iu khin - Tag: lu tr chui kt hp vi iu khin - Update: tn ca Script s thc thi khi s kin Update xy ra. Check box Dng checkbox cung cp cc la chn true/false hoc yes/no trn Dialog. Khi chn hp check box s hin th du check. Cc thuc tnh - Click: cha tn ca script cn thc hin khi kch vo check box - Disabled: ch nh tnh trng kch hot ca iu khin - Help: hin th dng ch gip thanh trng thi v tooltip. Khi nhp cho thuc tnh ny cn phn cch hai chui bng du // - Label: dng ch xut hin bn cnh check box - Invisible: ch nh tnh trng hin th ca iu khin - Selected: trng thi ca check box khi xut hin trn dialog ln u - Tag: lu tr chui kt hp vi iu khin - Update: tn ca Script s thc thi khi s kin Update xy ra. Combo box

Trung tam GIS NG DNG MI

128

Lp trnh Avenue S dng combo box cung cp mt danh sch cc chn la khi mun tit kim khng gian. Danh sch ny s c x xung khi ngi dng kch vo iu khin. Cc thuc tnh - Disabled: ch nh tnh trng kch hot ca iu khin - Help: hin th dng ch gip thanh trng thi v tooltip. Khi nhp cho thuc tnh ny cn phn cch hai chui bng du // - Invisible: ch nh tnh trng hin th ca iu khin - Label: dng ch xut hin bn cnh combo box - NextControl: iu khin tip theo s c ch nh khi ngi dng bm phm tab - Select: tn ca Script s thc thi khi ngi dng chn i tng trong danh sch - Tag: lu tr chui kt hp vi iu khin - Update: tn ca Script s thc thi khi s kin Update xy ra. Control Panel S dng control panel t chc cc iu khin c quan h vi nhau thnh nhm. Cc thuc tnh - Disabled: ch nh tnh trng kch hot ca control panel v cc iu khin m n cha. - Help: hin th dng ch gip thanh trng thi. Tooltip th khng xut hin di control panel - Invisible: ch nh tnh trng hin th ca iu khin - Label: dng ch xut hin bn trn control panel - Tag: lu tr chui kt hp vi iu khin - Update: tn ca Script s thc thi khi s kin Update xy ra. - VisibleBorder: cho php control panel c hay khng c khung vin. Dialog S dng Dialog t chc cc nhim v n hoc tp cc nhim v c lin quan trn cc ca s ring. Cc thuc tnh - Activate: tn ca Script s thc thi khi dialog c kch hot - AlwaysOntop: ch nh Dialog s trn tt c cc ca s ca ArcView - Close: tn ca Script s thc thi khi ng Dialog - Closeable: - DefaulButton: ch nh mt Label button trn Dialog thc thi script Click khi phm Enter c nhn - DocActivate: tn ca script s thc thi khi mt Document c kch hot - EscapeEnable: cho php ng ca s Dialog bng phm Esc - HasTitleBar: cho php Dialog c th hin thanh tiu hay khng - HelpTopic: ch ca tp tin hng dn s xut hin khi nhn F1 - Modal: cho php Dialog ch lun ni, ngn cn cc thao tc vi ArcView, ch c th thao tc vi Dialog ny m thi. - Open: tn ca script s thc thi khi dialog c m - Resizable: cho php thay i kch thc ca dialog hay khng
Trung tam GIS NG DNG MI

129

Lp trnh Avenue ServerActivated: tn ca script s thc thi khi document server ca dialog trng thi kch hot ServerClosed: tn ca script s thc thi khi document server ca dialog ng ServerDeactived: tn ca script s thc thi khi document server ca dialog khng trng thi kch hot ServerDefinitionChanged: tn ca script s thc thi khi Vtab server ca dialog thay i nh ngha. ServerOpened: tn ca script s thc thi khi document server ca dialog m ServerRecordsAdded: tn ca script s thc thi khi cc bng ghi c thm vo Vtab server ca dialog ServerRecordsDeleted: tn ca script s thc thi khi cc bng ghi c xo khi Vtab server ca dialog ServerSelectionChanged: tn ca script s thc thi khi thay i la chn trn Vtab server ca dialog Title: dng ch xut hin trn thanh tiu ca Dialog Update: tn ca Script s thc thi khi s kin Update xy ra.

Icon box S dng Icon box hin th mt hnh nh trn dialog. Cc loi hnh nh c th s dng nh: .bmp, .gif, .tiff, ... Cc thuc tnh - Icon: tn icon cn hin th - Invisible: ch nh tnh trng hin th ca iu khin - Tag: lu tr chui kt hp vi iu khin - Update: tn ca Script s thc thi khi s kin Update xy ra. Label button S dng Label button bt u, kt thc hoc ct ngang mt tin trnh cng vic. Label Button c mt dng ch dng nhn din hnh ng m n s thc hin. Nu cn hin th bng hnh nh th dng button. Cc thuc tnh - Click: cha tn ca script cn thc hin khi kch vo label button - Disabled: ch nh tnh trng kch hot ca iu khin - Help: hin th dng ch gip thanh trng thi v tooltip. Khi nhp cho thuc tnh ny cn phn cch hai chui bng du // - Invisible: ch nh tnh trng hin th iu khin - Label: dng ch xut hin trn label button m t hnh ng m n thc hin - Tag: lu tr chui kt hp vi iu khin - Update: tn ca Script s thc thi khi s kin Update xy ra.
Trung tam GIS NG DNG MI

130

Lp trnh Avenue List box S dng list box cung cp mt danh sch cc chn la. List box c th cha nhiu hng v ct v c th cha d liu ca mt danh sch i tng hoc mt Vtab Cc thuc tnh - Apply: tn ca script s thc thi khi mt no trong list box c kch i. - Disabled: ch nh tnh trng kch hot iu khin - Help: hin th dng ch gip thanh trng thi v tooltip. Khi nhp cho thuc tnh ny cn phn cch hai chui bng du // - HorizontalScroll: ch nh c hay khng thanh ko ngang trong list box. - Invisible: ch nh tnh trng hin th ca iu khin - NextControl: iu khin tip theo s c ch nh khi ngi dng bm phm tab - Select: tn Script s thc thi khi ngi dng chn i tng trong danh sch - SelectionStyle: nh ngha cch la chn cho list box nh: chn mt , chn nhiu , chn mt hng, chn nhiu hng, chn mt ct hoc chn nhiu ct. - Tag: lu tr chui kt hp vi iu khin - Update: tn Script s thc thi khi s kin Update xy ra. - VerticalScroll: ch nh c hay khng thanh ko dc trong list box. Radio button S dng radio button hin th mt tp cc kin. Nhm mt tp cc radio button bng cch v chng trong mt control panel . Ngi dng ch c php chn mt trong cc radio button. Cc thuc tnh - Click: cha tn script cn thc hin khi kch vo radio button - Disabled: ch nh tnh trng kch hot ca iu khin - Help: hin th dng ch gip thanh trng thi v tooltip. Khi nhp cho thuc tnh ny cn phn cch hai chui bng du // - Invisible: ch nh tnh trng hin th ca iu khin - Label: dng ch xut hin bn cnh radio button - Tag: lu tr chui kt hp vi iu khin - Update: tn ca Script s thc thi khi s kin Update xy ra. Slider S dng Slider thit lp mt gi tr t mt dy cc gi tr lin tc ring r. Cc thuc tnh - AuxIncrement:: thm cc im nh du dc theo bn trn hoc bn tri ca slider. - Click: cha tn script cn thc hin khi kch vo slider - Disabled: ch nh tnh trng kch hot ca iu khin - Drag: cha tn ca script cn thc hin khi ngi dng ko slider - Help: hin th dng ch gip thanh trng thi v tooltip. Khi nhp cho thuc tnh ny cn phn cch hai chui bng du // - Horizontal: to slider theo chiu ngang hoc chiu ng
Trung tam GIS NG DNG MI

131

Lp trnh Avenue Invisible: ch nh tnh trng hin th ca iu khin Lower: t gii hn di ca slider MainIncrement: thm cc im nh du dc theo bn di hoc bn phi ca slider. NextControl: iu khin tip theo s c ch nh khi ngi dng bm phm tab ReadOnly: to mt slider ch c StepButtons: thm hoc xo cc nt trn slider khi tng gi tr ca slider Tag: lu tr chui kt hp vi iu khin Update: tn Script s thc thi khi s kin Update xy ra. Upper: t gii hn trn ca slider Value: gi tr khi to ban u ca slider ValueIncrement: gii hn cc gi tr m slider c th chp nhn, v d nh ch l nhng s l.

Textbox S dng text box khi mun ngi dng nhp hoc hin th nhiu dng thng tin. Nu ch mun hin th mt dng th dng Text line. Cc thuc tnh - Change: tn ca script s thc thi khi s kin thay i chui xy ra. - Click: tn ca script s thc thi khi kch vo hp text - Disabled: ch nh tnh trng kch hot ca iu khin - Help: hin th dng ch gip thanh trng thi v tooltip. Khi nhp cho thuc tnh ny cn phn cch hai chui bng du // - HorizontalScroll: ch nh c hay khng thanh ko ngang trong list box. - Invisible: ch nh tnh trng hin th ca iu khin - Label: dng ch xut hin bn cnh combo box - NextControl: iu khin tip theo s c ch nh khi ngi dng bm phm tab - ReadOnly: to ra hp text ch c, khng cho php nhp. - Size: thit lp s k t ti a m ngi dng nhp vo. - Selection Style: cho php chn nhiu , chn mt hng, chn nhiu hng, chn mt ct hoc chn nhiu ct. - Tag: lu tr chui kt hp vi iu khin - Text: dng ch xut hin trong hp text - Update: tn ca Script s thc thi khi s kin Update xy ra. - VerticalScroll: ch nh c hay khng thanh ko dc trong text box. Text label S dng Text label ch thch dialog, ngi dng khng th tng tc vi dng ch trn label, n ch th hin chui tnh. Cc thuc tnh - Disabled: ch nh tnh trng kch hot ca iu khin - Invisible: ch nh tnh trng hin th ca iu khin - Label: dng ch xut hin trn iu khin - Tag: lu tr chui kt hp vi iu khin - Update: tn ca Script s thc thi khi s kin Update xy ra 132

Trung tam GIS NG DNG MI

Lp trnh Avenue Text line S dng text line khi mun ngi dng nhp hoc hin th mt dng thng tin. Nu ch mun hin th nhiu dng th dng Text box. Cc thuc tnh - Apply: tn ca script s thc thi khi phm Enter c nhn - Change: tn ca script s thc thi khi s kin thay i chui xy ra. - Click: tn ca script s thc thi khi kch vo hp text - Disabled: ch nh tnh trng kch hot ca iu khin - Empty: tn ca script s thc thi khi tt c cc k t trong text line b xo. - ForcusLost: tn script s thc thi khi phm tab c nhn hoc khi di chuyn chut ra khi text line - Help: hin th dng ch gip thanh trng thi v tooltip. Khi nhp cho thuc tnh ny cn phn cch hai chui bng du // - HiddenText: thay th tt c cc k t bng du sao * - Invisible: ch nh tnh trng hin th ca iu khin - Label: dng ch xut hin ch thch Text line - LabelSize: thit lp rng cho label - NextControl: iu khin tip theo s c ch nh khi ngi dng bm phm tab - ReadOnly: to ra hp text ch c, khng cho php nhp. - Size: thit lp s k t ti a m ngi dng nhp vo. - Tag: lu tr chui kt hp vi iu khin - Text: dng ch xut hin trong hp text - TextType: nh ngha kiu k t m text line c th chp nhn: kiu k t Alpha, kiu s nguyn (Integer) hoc kiu s thc (Real). - Update: tn ca Script s thc thi khi s kin Update xy ra. Tool S dng Tool khi mun tng tc vi mt Document. Mt tool bnh thng s trng thi ln xung khi kch vo n, nhng thng s khng c iu g xy ra cho n khi tng tc trn document ang kch hot. Cc thuc tnh - Apply: tn ca script s thc thi khi ngi dng kch trn document - Click: tn ca script s thc thi khi kch vo tool - Cursor: tn ca con tr s dng khi tool c kch - Disabled: ch nh tnh trng kch hot ca iu khin - Help: hin th dng ch gip thanh trng thi v tooltip. Khi nhp cho thuc tnh ny cn phn cch hai chui bng du // - HelpTopic: cha dng Topic trong tp tin Help c thit lp trong thuc tnh Help topic ca Dialog. - Invisible: ch nh tnh trng hin th ca iu khin - Tag: lu tr chui kt hp vi iu khin - Update: tn ca Script s thc thi khi s kin Update xy ra.

Trung tam GIS NG DNG MI

133

Lp trnh Avenue 7. V D To mt cng c h tr nh sau - Thm mi mt im trng hc, ngi s dng chn cng c thm mi v chn vo mt v tr trn bn , hp thoi nhp thng tin thuc tnh cho trng hc ny hin ra ngi s dng c th nhp vo. Gii: Thit k giao din nhp thng tin thuc tnh cho trng hc nh sau: Dialog - Name: DlgThemtruong - Title: Thng tin thuc tnh ca trng - Closeable: False Cc textbox: Nhp tn trng - Name: txtTenTruong Nhp loi trng - Name: txtLoai Nhp m trng - Name: txtTruongid - TextType: TextLine_Type_Integer Cc TextLabel: tn mc nh, c cc thuc tnh Label l Tn trng, Loi trng, M trng. Cc LabelButton: Chp nhn - Name: lbtChapnhan Hu b - Name: lbtHuybo

To mt Tool mi trn thanh ToolBar ca View. Gn script sau vo s kin Apply theView=av.ActiveDoc theDisplay=theView.GetDisplay p=theDisplay.ReturnUserPoint ly v theme trng hc
Trung tam GIS NG DNG MI

134

Lp trnh Avenue theTheme=theView.FindTheme(truong.shp) if (theTheme=nil) then return nil end lu li theme ny _theTheme=theTheme theView.setEditableTheme(theTheme) ly bng Vtab ca trng hc tb=theTheme.getFtab kim tra xem c th thm mi c trng hc khng if (tb.CanEdit.not) then return nil end ly v trng khng gian sf=tb.FindField(shape) bt u thm mi tb.SetEditable(true) tb.BeginTransaction re=th.AddRecord tb.SetValue(sf,re,p) tb.EndTransaction lu li record mi thm _re=re theTheme.GetFTab.GetSelection.ClearAll theTheme.GetFTab.GetSelection.Set(rec) theTheme.GetFTab.UpdateSelection av.GetProject.SetModified(true) dng bin ton cc gi li record va mi to av.finddialog(dlgthemtruong).open Trong s kin click ca button Thc hin ta gn vo script sau tb=_theTheme.GetFtab ' cc tru?ng khc fname=tb.FindField("ten") floai=tb.FindField("Loai") fid=tb.FindField("truong_id") ' thm cc gi tr? thu?c tnh tb.SetValue(fname,_re,_txtTentruong.GetText) tb.SetValue(floai,_re,_txtLoai.GetText) if (_txttruongid.GetText<>"") then tb.SetValue(fid,_re,_txttruongid.GetText.asNumber) end av.GetActiveDoc.SetEditableTheme(NIL) av.finddialog("dlgThemtruong").close 135

Trung tam GIS NG DNG MI

Lp trnh Avenue Trong s kin Click ca button Hu b ta gn vo script sau _theTheme.StopEditing(false) khng lu li trng hp thm mi trng hc av.FindDialog(dlgThemtruong).Close ng hp thoi cn lu li Bi tp phn 12 Bi tp 1: Vit cng c tm kim nh my trong d liu tnh ng Thp c giao din nh sau: - Cho php nhp tn ca nh my. - Nt tm kim. Nu tm thy a vt trn khung nhn th di chuyn khung nhn n v tr nh my v lm sng v tr nh my ny ln. Bi tp 2: Vit cng c xem thng tin ca x trong d liu tnh ng Thp - Danh sch lit k cc x trong tnh, mi hng trong danh sch gm c cc thng tin Tn x, din tch, dn s - Khi chn mt x trong danh sch khung nhn chuyn n v tr x v thay i mu ca x ny Bi tp 3: Vit cng c thng k din tch rng trong tnh ng Thp c giao din nh sau - Cc Radio Button chn thng k din tch rng ton tnh - Radio chn thng k din tch rng loi 1 - Radio chn thng k din tch rng loi 2 - Radio chn thng k din tch rng loi 3 - Radio chn thng k din tch rng loi 4 - Radio chn thng k din tch rng loi 5 Bi tp 4: Vit cng c xc nh vng m xung quanh mt trng hc bt k - Chn trng hc trong danh sch - Nhp vo bn knh vng m - Vng m s hin ln quanh trng hc c chn

Trung tam GIS NG DNG MI

136

Lp trnh Avenue

Chng 13 LIN KT NG DNG


ArcView cung cp mt s gii php c th tng tc n cc ng dng khc ngoi ng dng ArcView nh Visual Basic, Excel, Access, Word. Ta cng c th gi cc hm ca cc th vin lin kt ng DLL thc thi trong ng dng ArcView. Hai trong s cc gii php s hc trong chng ny l: Gii php trao i d liu ng (Dynamic Data Exchange - DDE) v gii php gi hm trong cc th vin lin kt ng (Dynamic Link Libraries - DLL). 1. TRAO I D LIU NG Microsoft h tr mt k thut client/server gi l trao i d liu ng (DDE). c h tr trn h iu hnh Microsoft Windows, DDE c kh nng cho php hai ng dng ni chuyn vi nhau bng cch trao i d liu mt cch lin tc v t ng . ArcView cng h tr DDE v c kh nng giao tip vi cc ng dng khc cng h tr DDE nh Visual basic, Excel, Access v Lotus. DDE c mt gii hn l cc ng dng trao i d liu vi nhau phi chy trn cng mt my, DDE khng h tr mng. Khi hai ng dng tng tc vi nhau n c gi l mt hi thoi. Mt ng dng l Server v ng dng cn li l Client. Cuc hi thoi s c nhn din bng hai thng tin: tn ng dng ca Server (application name) v tn ch (topic name). Nu mun thit lp mt cuc hi thoi vi ng dng ArcView, ta s phi ch nh tn ca ng dng l ArcView v tn ch l System. ArcView ch c duy nht mt tn ch v n c gi l system. Nu mun thit lp cuc hi thoi vi Excel chng hn, th Excel c rt nhiu tn ch bao gm c tn ch l System v cc tn ch khc cho cc spreadsheet. Nu mun thit lp cuc hi thoi vi Form ca Visual Basic th Form phi cung cp tn ca ng dng v tn ca ch . Mt cuc hi thoi DDE i khi cn c gi l mt lin kt, bi v hai ng dng c lin kt vi nhau trao i d liu gia chng. DDE h tr ba kiu lin kt: t ng (automatic), th cng (manual) v thng bo (notify). Lin kt t ng (Automatic Link): ng dng Server s t ng cp nht bt c khi no d liu ngun trn server thay i. V d khi lin kt gia mt iu khin ca Visual Basic nh Textbox vi mt hng hoc ct trn mt trang Excel, DDE s t ng cp nht Textbox bt c khi no d liu trn ca Excel thay i. Lin kt thng bo (Notify Link): ng dng Server s thng bo cho Client bit khi d liu thay i, nhng Client cn phi yu cu d liu mi t Server. Lin kt th cng (Manual Link): d liu s khng thay i mt cch t ng, Client phi yu cu d liu mi t Server. ArcView ch h tr duy nht kiu lin kt ny, do nn nh ngha chnh xc trong ng dng mun lin kt vi ArcView nh Visual basic chng hn thuc tnh LinkMode iu khin lin kt l Manual. C ba cch tng tc vi mt cuc hi thoi DDE l: execute, request v poke. Vi yu cu execute, client yu cu server thc hin mt s chc nng thng qua chui k t m n gi n server. Chui k t m client gi cho server l chun trong ngn ng lnh ca server. Nu c mt kt ni n ArcView Server, lnh c gi s
Trung tam GIS NG DNG MI

137

Lp trnh Avenue theo nh dng chun ca Avenue. Vi yu cu request, client s yu cu server tr v gi tr ca mt i tng. Vi yu cu poke, client gi thng tin n mt i tng ca server. Vi nhng server khc nhau cng nh vi nhng topic khc nhau th c nhng phng thc khc nhau ch nh mt i tng. Trong Excel, nu c mt client ni chuyn vi spreadsheet, ta c th ch nh cc i tng s dng phng thc Row/Column. Nu c mt client ni chuyn vi ArcView ch nh i tng l mt Avenue script. Xy dng tng tc gia ArcView v Visual Basic To mt ng dng tng tc gia ArcView v Visual Basic. Trong ArcView s thc hin nhng vic sau: Gi ng dng Visual Basic xut hin. Thit lp cuc hi thoi gia ArcView v Visual Basic trong ArcView l client v Visual Basic l server. Chuyn danh sch cc tn trng trong bng ang kch hot sang listbox ca Visual Basic. Kt thc hi thoi. Visual Basic s thc hin cc vic sau khi ngi dng chn mt trng trong listbox: Thit lp cuc hi thoi gia Visual Basic v ArcView, by gi ArcView l server v Visual Basic l client. Gi mt yu cu Avenue ly kiu, rng, b danh v trng thi hin th ca trng. Nu bm nt OK, cc gi tr trong form Visual Basic s c thit lp ngc tr li cho trng ca ArcView. u tin cn vit mt Script m form ca Visual Basic v chuyn tn cc trng sang listbox. t tn n l Lien ket Visual Basic Khi to hi thoi aDDE = DDEClient.Make(FIELDDEF, transfer) Trong : FIELDDEF l tn ca ng dng Visual Basic, transfer l tn ch . Tn ny c gn trong thuc tnh LinkTopic ca Form Visual Basic. Thc hin kim tra vic thit lp hi thoi c thnh cng hay khng, nu khng thnh cng th gi thc thi ng dng Visual Basic v sau th thit lp li. if (aDDE.HasError) then system.Execute(C: \Ditagis\VB\FIELDDEF.exe) aDDE = DDEClient.Make(FIELDDEF, transfer) if (aDDE.HasError) then aDDE = DDEClient.Make(FIELDDEF, transfer) end end Nu vic thit lp hi thoi khng thnh cng th thng bo li v thot. if (aDDE.HasError ) then Msgbox.Info(Loi ket noi, Thong bao) Return nil
Trung tam GIS NG DNG MI

138

Lp trnh Avenue end Ngc li ly tn cc trng v chuyn cho Visual Basic theVtab = av.GetActiveDoc.GetVtab lu Doc hin hnh l Table cn ly tn cc trng theFields = theVtab.GetFields if (theFields.Count = 0) then Msgbox.Info(Khng tn ti trng trong bng, Thong bao) else for each f in theFields aDDE.Execute(f.GetName) end end Gn Script ny vo s kin Click ca mt button no trn giao din ca bng. Tip theo cn to Form cho Visual Basic. Trn Form c cc i tng trong bng sau, hy t tn v gn cc thuc tnh cho ng nh bng bn di. Thm dng khai bo cc hng sau vo phn General Declarations Const NONE = 0, MANUAL = 2 i tng Form Thuc tnh Caption LinkMode LinkTopic MultiSelect Name Caption Name LinkTimeout Caption Name LinkTimeout Name Name LinkTimeout Visible Caption Name Caption Name Caption Name Gi tr Field Definiton 1 - Source Transfer 0 None lstFields (Empty) lblFldType 500 (Empty) lblFldWidth 500 txtFldAlias txtFldVisible 500 false Visible cbxFldVisible OK cmdOK Cancel cmdCancel 139

List Box Label 1 Label 2

Text1 Text2

CheckBox1 Command Button Command Button


Trung tam GIS NG DNG MI

Lp trnh Avenue

Thm on m sau vo s kin LinkExecute ca Form. on m ny s thm cc tn trng c gi bng lnh Execute ca ArcView trn vo list box ca Form. Bin CmdStr cha chui d liu m ArcView gi qua. Private Sub Fiorm_LinkExecute(CmdStr As String, Cancel As Integer) lstFields.AddItem CmdStr End Sub Thm on m sau vo s kin Click ca Listbox. Khi chn mt trng, Visual Basic s ly cc gi tr v kiu, rng, b danh v trng thi hin th ca trng tng ng bn ArcView. Lnh LinkRequest s t kt qu ny vo cc i tng tng ng ca Visual Basic. Lu l check box khng c thuc tnh Link v vy n c thay th bng mt label n v gi tr ca Label s tham chiu n check box. Private Sub lstFields_Click() if lblFldType.LinkMode = NONE then lblFldType.LinkTopic = ArcView|System lblFldType.LinkMode = MANUAL lblFldWidth.LinkTopic = ArcView|System lblFldWidth.LinkMode = MANUAL txtFldAlias.LinkTopic = ArcView|System txtFldAlias.LinkMode = MANUAL txtFldVisible.LinkTopic = ArcView|System txtFldVisible.LinkMode = MANUAL end if lblFldType.LinkItem = av.GetactiveDoc.GetVtab.FindField( & lstFields & ).GetType lblFldType.LinkRequest lblFldWidth.LinkItem = av.GetactiveDoc.GetVtab.FindField( & lstFields & ).GetWidth
Trung tam GIS NG DNG MI

140

Lp trnh Avenue lblFldWidth.LinkRequest txtFldAlias.LinkItem = av.GetactiveDoc.GetVtab.FindField( & lstFields & ).GetAlias txtFldAlias.LinkRequest txtFldVisible.LinkItem = if (av.GetactiveDoc.GetVtab.FindField( & lstFields & ).IsVisible) then return 1 else return 0 end txtFldVisible.LinkRequest cbxFldVisible.Value = txtFldVisible.Text if lblFldType.Caption= nil then bng bn ArcView ng Unload Form1 End end if End Sub Thm on m sau vo s kin Click ca nt OK, Khi kch chut trn nt OK, Form Visual Basic s gi cho ArcView mt Script cp nht li b danh v trng thi hin th ca trng c chn da trn gi tr trong hp thoi Alias v check box Visible ca Visual Basic. Private Sub cmdOK_Click() Dim state as string if txtFldAlias.LinkMode = NONE then txtFldAlias.LinkTopic = ArcView|System txtFldAlias.LinkMode = MANUAL end if cmd = av.GetActiveDoc.GetVtab.FindField( & lstFields & ).SetAlias( & txtFldAlias & ) if cbxFldVisible.Value = 0 then state = false else state = true end if cmd = cmd & av.GetActiveDoc.GetVtab.FindField( & lstFields & ).SetVisible( & state & ) txtFld.Alias.LinkExecute cmd End Sub Thm on m sau vo s kin Unload ca Form. on m ny c tc dng ng kt ni DDE Private Sub Form_Unload (Cancel As Integer) lblFldType.LinkMode = NONE lblFldWidth.LinkMode = NONE
Trung tam GIS NG DNG MI

141

Lp trnh Avenue txtFldAlias.LinkMode = NONE txtFldVisible.LinkMode = NONE End Sub Thm on m ng Form vo s kin Click ca nt Cancel Private Sub cmdCancel_Click() Unload Form1 End End Sub 2. THM CHC NNG VO AVENUE THNG QUA TH VIN LIN KT NG DLL Avenue cung cp rt nhiu lp v nhiu yu cu cho lp trnh, tuy nhin nu ng dng i hi mt s hm m Avenue khng c, th vic s dng th vin lin kt ng DLL s gip thm c cc hm cn thit vo ng dng ArcView. Th vin lin kt ng l mt modul thc thi cha cc hm ca cc ng dng khc c th thc thi mt nhim v no . DLL c lin kt nh mt ng dng trong thi gian thc thi chng trnh ch khng phi trong thi gian bin dch nh cc th vin tnh. DLL c cung cp t nhiu ngun khc nhau, dng cc DLL c sn trong h iu hnh Windows hoc cng c th t vit mt DLL bng ngn ng C chng hn v dng n cng vi ArcView. Tuy nhin do DLL c cung cp t nhiu ngun khc nhau nn c mt s DLL s khng dng c vi ArcView. Cc hm trong DLL c gi trc tip t Avenue. Hai lp DLL v DLLProc trong Avenue h tr vic np mt DLL v gi cc hm chc nng ca DLL. Cc hm chc nng DLL c gi bng cch to ra mt hin thc ca lp DLL, sau to ra mt hin thc ca DLLProc cho mi hm hoc th tc trong DLL mun gi. Khi i tng DLL c to ra, cc hm trong DLL s c np vo trong b nh v trng thi sn sng s dng. Khi i tng DLL b hu, cc hm trong DLL s c xo khi b nh. Cc hm gi trong DLL c th yu cu nhiu kiu i s khc nhau v tr v cc kiu khc nhau. Cc i s vo v ra c ch nh khi to hin thc DLLProc. ArcView h tr mt vi kiu i s to hin thc DLLProc. Tng ng vi tng yu cu ca hm m ta c th gi cc i s theo gi tr hoc theo tham chiu. Vi cc i s gi tr, ArcView cung cp cc hng kiu sau: DLLPROC_TYPE_INT16 DLLPROC_TYPE_INT32 DLLPROC_TYPE_FLOAT DLLPROC_TYPE_POINTER Vi cc i s tham chiu, ArcView cung cp cc hng kiu sau: DLLPROC_TYPE_PINT16, DLLPROC_TYPE_PINT32, DLLPROC_TYPE_PFLOAT DLLPROC_TYPE_STR

Trung tam GIS NG DNG MI

142

Lp trnh Avenue Gi s xy dng nn mt th vin lin kt ng DLL c tn l math.dll, th vin ny cha cc hm tnh ton s hc v t ti C: \Ditagis\math.dll. on script sau s gip gi hm cng hai s trong th vin ng math.dll trn. Trc tin phi khi to mt hin thc ca lp DLL mathDLL = DLL.Make(C: \Ditagis\math.dll.AsFileName) Tip theo to mt hin thc ca lp DLLProc np hm cn thc hin, trong trng hp ny s dng hm AddLongs c trong th vin trn. add = DLLProc.Make(mathDLL, AddLongs, #DLLPROC_TYPE_INT32, {#DLLPROC_TYPE_INT32, #DLLPROC_TYPE_INT32}) Yu cu Make s dng bn i s, i s th nht l i tng DLL, i s th hai l tn hm cn to. Lu , phi nhp tn hm AddLongs ging nh tn hm trong DLL v ch hoa ln ch thng. i s th ba l hng kiu ca kt qu tr v, i s th t l danh sch cc hng kiu tng ng ca cc i s thuc hm cn to ra yu cu. Gi yu cu Call n i tng DLLProc l add gi hm thc thi, cng hai s 300 v 200. x = add.Call({300, 200}) In kt qu ra mn hnh Msgbox.Info(Kt qu l: x.Asstring, Kt qu) To DLL bng Microsoft Visual C++ V d sau s to ra mt th vin lin kt ng math.dll s dng trn. to mt DLL bng Microsoft Visual C++, cn phi to ra 3 tp tin sau: math.def, math.h v math.cpp. Ni dung ca tp tin math.def EXPORTS AddLongs Ni dung ca tp tin math.h #ifndef _FUNDLL_ long _FUNDLLLIB_ addLongs(long a, long b); #endif Ni dung ca math.cpp #define _FUNDLL_ #include "t.h" #include <windows.h> long AddLongs(long a, long b) { return a+b; } Tip theo khi ng chng trnh Microsoft Visual C++ 143

Trung tam GIS NG DNG MI

Lp trnh Avenue

Chn mc New trong menu File trn trnh thc n.

Chn tab Projects v chn mc Win32 Dynamic-Link Library, nhp tn math vo hp thoi Project Name v ch nh v tr th mc cn lu trong hp thoi Location, y ta chn C: \WinNT\Temp. Bm OK tip tc.

Trung tam GIS NG DNG MI

144

Lp trnh Avenue

nh du chn vo mc An empty DLL project v bm nt Finish. T menu Project, chn mc Add To Project v chn mc Files

Ch nh n v tr lu 3 tp tin math.def, math.h v math.cpp. Thm 3 tp tin ny vo Project. Bm phm F7 bin dch tp tin math.dll. Tp tin ny c lu trong th mc Debug. Tng ng vi ng dn trn l C: \WinNT\Temp\math\debug\math.dll. By gi, hon ton c th chp tp tin ny n v tr mong mun v dng cc lnh Avenue trn gi cc hm chc nng do ta xy dng trong DLL ny.

Trung tam GIS NG DNG MI

145

Lp trnh Avenue Cc yu cu thng s dng vi lp DLLProc Tn yu cu Make C php DLLProc.Make (aDLL, aProcName, returnType, argumentList) ngha To mi mt i tng DLLProc vi 4 i s. i s th nht l i tng DLL, i s th hai l tn hm cn to. Lu , ta phi nhp tn hm ging nh tn hm trong DLL v ch hoa ln ch thng. i s th ba l hng kiu ca kt qu tr v, i s th t l danh sch cc hng kiu tng ng ca cc i s thuc hm cn to ra yu cu. Gi thc thi hm chc nng vi danh sch cc i s

Call

aDLLProc.Call (argumentList)

Cc yu cu thng s dng vi lp DLL Tn yu cu Make FindProc GetFileName GetProcs C php DLL.Make (aFileName) aDLL.FindProc (functionName) aDLL.GetFileName aDLL.GetProcs ngha To mi mt i tng DLL vi i s l mt FileName Tm i tng DLLProc c tn hm l functionName Tr v FileName ca mt i tng DLL Tr v danh sch cc DLLProc to ra t mt DLL

Cc yu cu thng c s dng vi DDEClient Yu cu DDEClient.Make (ServerName, TopicName) aDDEClient.Execute (aTask) aDDEClient.Poke (anItem, data) Kt qu ngha Thit lp mt cuc hi thoi Yu cu Server thc thi cu lnh Yu cu Server cp nht d liu cho i tng c ch nh (anItem) Yu cu Server tr d liu cha trong i tng c ch nh 146

aDDEClient.Request (anItem)

String

Trung tam GIS NG DNG MI

Lp trnh Avenue aDDEClient.Close aDDEClient.GetErrorMsg aDDEClient.HasError aDDEClient.GetTopic aDDEClient.IsTopic (aTopicName) aDDEClient.GetTimeout aDDEClient.SetTimeout (numSeconds) ng hi thoi Tr v thng bo li Kim tra hi thoi c li khng Tr v tn tiu ca hi thoi Kim tra tn tiu ca hi thoi Tr v thi gian gii hn ca cuc hi thoi Thit lp thi gian cho cuc hi thoi. Tnh bng giy.

String Boolean String Boolean Number

Trung tam GIS NG DNG MI

147

Lp trnh Avenue

Chng 14 KT NI D LIU
1. KT NI D LIU DNG HP THOI KT NI ArcView cho php ta kt ni vi cc loi d liu SQL nh MS Access, MS SQL Server, Oracle, FoxPro... Trn h iu hnh Window v WinNT, ArcView s dng cu ni ODBC (Open Database Connectivety) kt ni vo vo c s d liu SQL. By gi ta dng hp thoi kt ni to kt ni n mt file d liu Access c sn trn a. File d liu c tn l DONGTHAP.mdb t v tr e: \dulieu\ - Trong ArcView chn Tables - Trn menu Project chn SQL Connect..., hp thoi kt ni nh hnh sau

Chn mc MS Access Database trong Connection Nhn vo nt Connect... Hp thoi yu cu ng dn n file d liu Access hin ra nh hnh sau

Trung tam GIS NG DNG MI

148

Lp trnh Avenue

Chn ng dn n v tr t file Access E: \dulieu\DongThap.mdb. v nhn OK

Chn bng DANSO trong tables, chn <All Culumns> trong culumn. Trong Output Table ta g vo DANSO Nhn nt Query Bng d liu dn s c a vo trong ArcView.

Trung tam GIS NG DNG MI

149

Lp trnh Avenue Trong bng d liu ny ta ch xem thng tin m khng th thc hin c cc thao tc thm, xo, sa trn n. thc hin c cc thao tc thm, xo, sa ta phi vit lnh thng qua Avenue 2. KT NI D LIU THNG QUA AVENUE Avenue dng i tng SQLCon thit lp kt ni n mt c s d. SQLCon kt ni n c s d liu thng qua cu ni ODBC. Dng SQLCon kt ni n file d liu Access DongThap.mdb ta lm nh sau To ODBC cho file d liu ny. - Trong Windown v Control Pannel - Chn DataSource (ODBC). Hp thoi ODBC Data Source xut hin nh sau

Chn vo Tab System DSN, v nhn vo nt Add. Hp thoi yu cu chn ngun d liu nh hnh

Trung tam GIS NG DNG MI

150

Lp trnh Avenue

Chn vo mc Microsoft Access Driver (*.mdb) v nhn Finish

G vo tn Data Source Name l DongThap Nhn vo nt Select ch n ng dn n file d liu. Nhn OK, trong ca s ODBC Data Source lc ny ta thy xut hin mt DSN l DongThap. Nhn OK ng hp thoi li. Dng SQLCon kt ni n ngun d liu qua ODBC - Trong giao din ti liu ngi dng khung nhn ta to mi mt Button. - Trong s kin Click ca Button ny ta gn vo Script c ni dung nh sau. theSQL=SQLCon.Find("DONGTHAP") to kt ni
Trung tam GIS NG DNG MI

151

Lp trnh Avenue theSQL.Login("/") astring="Select * from DANSO" theVTab=VTab.MakeSQL(theSQL, astring) myTable=Table.Make(theVtab) av.GetProject.AddDoc(mytable) mytable.GetWin.Open tn ng nhp v mt khu cu truy vn SQL to bng a bng vo project m bng ny ra

Trong on chng trnh trn SQLCon.Find(aName) dng tm ra kt ni n ngun d liu tng ng, mi mt loi ngun d liu ta c tn mt kt ni ring. bit c tn c th ca kt ni ta vo Data Source (ODBC ) trong Control Pannel ca Window. theSQL.Login(/) dng ng nhp vo ngun d liu thng qua tn ngi dng v mt m, tn ngi dng v mt m c vit di dng user/password. Trong trng hp trn v c s d liu ca ta khng c user v password nn ta vit l /. VTab.MakeSQL(theSQL,astring) dng to ra mt bng o da vo cu lnh SQL astring truyn vo, ngi lp trnh vit c cc lnh SQL th phi bit qua ngn ng SQL. Cc yu cu ca lp SQLCon GetConnections Yu cu ny tr v danh sch cc kt ni hin c ExecuteSQL ( aString ) Yu cu ny thc thi mt cu lnh SQL aString, nu thc thi thnh cng th kt qu tr v l true Logout thot ra khi kt ni IsLogin tr v true nu login vo kt ni HasError tr v true nu kt ni b li, dng yu cu ny kim tra kt ni c b li khng. 3. V D V d sau thc hin chnh sa d liu trong bng DANSO, cp nht tng s dn trong huyn Lai Vung l 20000 trong s n l 11000 s dn nam l 9000 theSQL=SQLCon.Find("DONGTHAP") to kt ni theSQL.Login("/") tn ng nhp v mt khu astring="update DANSO set TongDan=20000, Nu=11000, Nam=9000 where ID=10" theSQL.ExecuteSQL(astring) cp nht astring=select * from DANSO cu truy vn SQL theVTab=VTab.MakeSQL(theSQL, astring) myTable=Table.Make(theVtab) to bng av.GetProject.AddDoc(mytable) a bng vo project mytable.GetWin.Open

Trung tam GIS NG DNG MI

152

Lp trnh Avenue Bi tp phn 14 Bi tp 1: Vit script kt ni n bng d liu FoxPro tn l DS.dbf trong th mc E: \Dulieu\Dongthap Bi tp 2: To mt c s d liu trong MS SQL Server, sau vit script trong truy xut n cc bng trong c c d liu ny.

Trung tam GIS NG DNG MI

153

You might also like