GISDK培訓(xùn)教材_第1頁
GISDK培訓(xùn)教材_第2頁
GISDK培訓(xùn)教材_第3頁
GISDK培訓(xùn)教材_第4頁
GISDK培訓(xùn)教材_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、gisdk培訓(xùn)教材北京友好創(chuàng)達科技有限公司一、 前言 gisdk全稱為geographic information system developers kit。gisdk包含caliper script,一種功能強大的宏編程語言,用于增強和定制caliper的gis產(chǎn)品。1頻繁使用maptitude、gis+或transcad的用戶 熟悉其中的概念及用法,理解其中的(map,layer)、(dvw, dbf)、(layout)專題圖的概念及關(guān)系,大大有助于二次開發(fā)。2編程基礎(chǔ)basic,vb,c,或其他語言. 3想自動化或定制maptitude、gis+或transcad二、 介紹(共有600

2、多個函數(shù)) 1、三類程序:add-ins, custom application, server application、 add-ins 在其中編寫macros或dialog boxes等,在其他程序中使用,通過加入tools-add ins菜單中。 add-ins可簡可繁 簡:無任何交互界面 繁:加入custom toolboxes、 custom applications包含自己的界面:菜單、工具條、工具盒及對話框啟動方式 :加入add-ins.txt中或 u。ca同樣可簡可繁:如mapt、gis+、transcad就是最復(fù)雜的。、 server applications是為你的程序提供

3、數(shù)據(jù)、地圖、分析函數(shù)的定制的應(yīng)用。client可是vb、c、c+或其他、甚至是宏語言(eg.、execl).server app無界面,后臺運行,通過宏提供功能。使用一個啟動宏來初始化服務(wù)器后等待client請求。通過dde同步或異步方式發(fā)送請求。另外server app通過clipboard、dde或文件方式向client端傳送結(jié)果數(shù)據(jù)。 2、系統(tǒng)要求 maptitude、gis+、transcad平臺。 maptitude不包含編輯器,可使用任何文本編輯器。 3、安裝 安裝 啟動,tools-add ins 選擇gis developers kit面版會出現(xiàn)。三、 快速練習(xí)1. lesso

4、n 1. addin1.rsc*大小寫對宏名敏感。 開始 編輯 運行 2lesson 2. addin2.rsc 3. lesson 3. 安裝add-in gisdk將編譯后的資源文件存入一個特別的庫叫user interface database,ui database。包含 * .1,2,3,4,5,6,.dbd 7個文件中。要發(fā)布定制的要編譯為獨立的ui 別名 database,再用set up 選項來設(shè)置。 創(chuàng)建一個ui database 名為test0001 4lesson 4 創(chuàng)建一個定制應(yīng)用。 xfac1.rsc 含啟動宏和菜單。 xfac2.rcs 含其他宏和對話框。 編譯可

5、使用一個list file,文本文件。xfac.lst 名為testxface的ui庫。 創(chuàng)建啟動圖標 -u testxfac 另一種安裝方法四、 gisdk 結(jié)構(gòu)1平臺和ui庫platform 是gis和 dbms核心集,用于創(chuàng)建地圖和分析ui是菜單、對話框和其他工具 平臺包含exe程序文件(mapt.exe,gisw.exe or tcw.exe)和dlls和其他支持文件。 ui含gis_ui.dbs,1,2,3,4,5,6(中文版為gis_ch.dbd,1,2,3,4,5,6) 兩種方式。ui databaseresource compiler 2編譯資源resource filethe

6、 platform mapt.exe gisw.exe tcw.execompleted application lst / rsc 文件 錯誤:error file(.err) 編譯方法:agisdk toolbox brscc.exe 命令行 cloadresourcefile() 用gisdk toolbox 4種(p23).編譯到test_ui庫中,先清空。執(zhí)行test_ui中的宏或dbox編譯為指定的ui庫中直接執(zhí)行g(shù)isdk中的函數(shù)或語句 rscca rscc -c u uidbname fname1.rsc 不含 c 只替換同名資源。含 c 清空b rscc -c u uidbn

7、ame listfile1 listfile2c rscc -c u uidbname menu.rsc macro.rsc rsc_list.txt 用函數(shù)leadresourcefile()在自己定制的應(yīng)用中可以使用leadresourcefile()函數(shù)來編譯資源文件,但不能使用listfile文件來指定資源文件,可以非常容易地編寫一個循環(huán)來調(diào)入多個資源文件。可以用如下的兩個宏,直接掛在兩個菜單項上來編譯資源文件。 macro load a resource file (filename) shared rsc_file_name if filename = null then do/

8、ask the user which file to compile.on escape do return() endrsc_file_name = choosefile(resource,*.rsc, compile resource, readonly box, no)on escape default end else rsc_file_name=filename setcursor(hourglass) / do some basic error trapping. on notfound doresetcursor()return() end on error doresetcur

9、sor()showmessage(compilation failed.)return()end / compile the resource file into the current ui database loadresourcefile(,rsc_file_name,) resetcursor()endmacromacro reload a resource fileshared rsc_file_name/ see if something has already been compiled.if rsc_file_name = null then showmessage(no re

10、source file was previously loaded.)else / compile it again.runmacro(load a resource file, rsc_file_name)endmacro 用戶定義的標志。(26個) noneab 可編譯出不同的版本ab3安裝gisdk應(yīng)用 安裝gisdk應(yīng)用實際實在add-ins.txt文件中加入不同的行來表示。每一行由四項,每一項的意義如下: a表明是什麼: dbox,macro或interface. bui庫名 c宏或?qū)υ捒虻膶嶋H名,用于啟動 d描述 下面是一個簡單的例子:macro,test_ui,my first

11、macro,try this add-indbox, test_ui, my first dbox,try it! youll like it!interface, myapp1,go,sales information centerm, testui, my second macro,heres another add-in macrod, testui, my first dbox,heres another add-in dialog boxi, myapp1,go,sales information center 安裝運行 add-ins。 安裝運行 custon app所有的定制應(yīng)用

12、都有一個啟動宏。一般情況他們執(zhí)行以下一至四種工作: 顯示程序標題:showbitmap(),showsnapshot()初始化全程或共享變量:設(shè)置狀態(tài)條:setstatusbar(),setstatus()設(shè)置缺省菜單和工具條:setdefaults()mapt -u uidbname-i xfacmacroname n 窗口名稱 4gisdk toolbox介紹 立即運行showmessage()setlayer()destroyprogressbar()setmapscale()runmacro() *exit() 退出mapt *賦值僅對全程變量有效 *return() 無效僅是從運行宏

13、退出。五、 資源可含多個資源可一起編譯為add-lis 或應(yīng)用/為注釋1 宏macros類似子過程,包含一系列描述語言,宏的運行。菜單按鈕runmacro()函數(shù) macro“name”(arg1,) 大小寫敏感 a最多8個參數(shù) b參數(shù)只有是數(shù)組或&前導(dǎo)才可改變,其他為傳值。d 用return返回值無則為null。2 dialog boxes選menu點擊button調(diào)用rundbox函數(shù) 當對話框出現(xiàn)時,其它操作無法進行。 dbox“name”(arg1) hpos,vpos,width,height option enddbox 參數(shù) 8個以下,不足為null。含初始化 init do e

14、nditem return() 返回,可有一任意類型的單值。 position hpos (x,left,right,center) vpos (x,top,bottom,center)以字符為單位 width height optionstitle 標題help f1的幫助 對話框條目push button,edit item,check box,radio list,frame,text item,scroll list,popdown menu,sample.type“item name” position-info optionsdo enditem名稱不必需,除非用 disablei

15、tem(),enableitem(),hideitem(),showitem. 相關(guān)函數(shù) 3工具盒 toolboxes dbox “dbox name” tool box end dbox * 含no keyboard 不保持鍵盤集點。 tool itemstool “item name” hpos , vpos options icons: list-of-icons do enditem交互調(diào)用有 clickcood() , clickline() update item 當updatedbox() 被調(diào)用時使用。 close item 無此項 toolbox 無法關(guān)閉4 toolbars

16、一次只能顯示一個,但可有多個用 showdbox() hidedbox() 操作,與toolbox不同的只是沒有位置。5 menusmenu“menu name”options endmenu* options windows 窗口列表* separator * 四種方式定義l caliper 菜單名后有 表明有對話框六、語言要素常量 數(shù)字, 字符, null 變量 不需先定義,大小寫敏感,隨賦值類型可變*保留字 do, if, return, null, runmacro, rundbox,大小寫無關(guān)類型 integer: -2147482648-2147482647 real : +-3.

17、4e-38-3.4e+38 string : 512長度 array : compound: 組合,復(fù)合 boolean null 數(shù)組 dim定義 x=“boston”, 元素類型可不同 多維數(shù)組 號相加 函數(shù) compound, variables復(fù)合變量 coord, color, circle, scope, fillstyle, linestyle, file handle, sample point, sample line, sample area 變量作用范圍(三種)local, global, shared global 定義全程變量 shared 共享5. 函數(shù)調(diào)用 參數(shù)

18、一個數(shù)略即為null或缺省 redrawmap() (null) ( “my map”) 多個,分隔“ ,”號不能省,最好一定是空時使用null.6.表達式 數(shù)值. 關(guān)系., 邏輯.1. string, array 時合并語句行 分行,多行, / 賦值 含數(shù)調(diào)用 goto if then else其中多行要加doend. for to step do end. while do endreturn(expression)或return( ).8.錯誤控制(p73) 4種語句 種錯誤七管理窗口 類型:map, editor, figure, layout 格式:“window type | wi

19、ndow name”.1. 創(chuàng)建窗口 函數(shù):createmap(string map_name, array options) 選項:menu, toolbar, position, size, active macro, close macro, createmap()creates a new, empty map window createeditor()creates a new editor window createeditorbyquery()creates an editor displaying the results of an sql query createfigure

20、()creates a new figure window createlayout()creates a new layout window openmap()opens a map file and displays it in a map window openmapfromannotation()creates a new map window from a map that appears in a layout openeditor()creates an editor from a file openeditorfromannotation()creates a new edit

21、or window from an editor that appears in a layout openfigure()creates a figure from a file openfigurefromannotation()creates a new figure window from a figure that appears in a layout openlayout()creates a layout from a file2.windows相關(guān)操作函數(shù).3.關(guān)閉窗口4.控制窗口大小和位置5.關(guān)聯(lián)菜單和工具條 setdefaults( )6.窗口宏 active macro

22、s close macros scale-change macros hightlight macros7.保存和打開窗口八地圖和圖層1. 創(chuàng)建地圖 使用函數(shù)createmap() 可以創(chuàng)建新的,空圖. 創(chuàng)建時需要給出scope地圖范圍. 地圖重名時將在新建的地圖名稱后加:1,:2, 創(chuàng)建新的地圖后, 可以在其中加入地理圖層, 圖像層或各種裝飾對象. 地圖的比例尺scale,范圍scope,單位unit,投影projection. 它們都有函數(shù)獲取和設(shè)置. 其中scope是一個復(fù)合變量, 包含center,width,height,projection.2. 地圖和圖層 gisdk支持不同類型

23、的圖層,包括標準格式,壓縮格式和一些圖像層.主要的函數(shù)有addlayer(),addcdflayer(),addimagelayer(),droplayer().有時需要一些圖層而又不想在任何地圖窗中出現(xiàn), 可以將它放入一個虛擬的工作空間,函數(shù)是addlayertoworkspace(),droplayerfromworkspace().在maptitude和gisdk中, 和當前view一樣, 要有當前圖層的概念, 有很多的操作都是針對當前圖層進行的.3. 圖層顯示風(fēng)格和設(shè)置gisdk提供了很多的函數(shù)來控制地圖的顯示. 可以控制圖層的可視,不可視, 顯示的風(fēng)格, 以及自動比例尺等.在地圖中加

24、入圖層后,必須設(shè)置圖層的現(xiàn)實風(fēng)格style, 不同種的圖層有不同的設(shè)置參數(shù),如下:layer typestyle elementto set the styleto get the styleareaborder stylesetborderstyle()getborderstyle()areaborder widthsetborderwidth()getborderwidth()areaborder colorsetbordercolor()getbordercolor()areafill colorsetfillcolor()getfillcolor()areafill stylesetf

25、illstyle()getfillstyle()areatransparencysetfillstyletransparency() getfillstyletransparency()linestyle setlinestyle()getlinestyle()linewidth setlinewidth()getlinewidth()linecolorsetlinecolor()getlinecolor()pointicon seticon()geticon()pointicon colorseticoncolor()geticoncolor()maptitude使用的點的符號類型是wind

26、ows的系統(tǒng)turetype的字體. 可以用專用軟件制作.maptitude使用的線形可以用函數(shù)linestyle() 定義.maptitude 使用的填充類型用函數(shù)fillstyle() 定義, 要先定義一個8*8的類型.選擇集可以有自己的顯示風(fēng)格style, 和設(shè)置圖層一樣. 也可以設(shè)置為null, 表示繼承圖層的顯示風(fēng)格.4. 用戶交互函數(shù)clickcircle(),clickcoord(),clickdragandshow(),clickellipse(),lickellipsescope(),clicklayout(),clickanddraglayout(),clickline()

27、,clickpolyline(),clickcurve(),clickrect(),clickrectscope(),clickscope(),clickshape(),clicktext(),getclickshift(),getclickcontrol() 5.專題圖 6.手繪條目 7.選擇集2. 圖例 九表、視圖和數(shù)據(jù)1. 表table和視圖view table是包含一些被按行列組織的信息的一個磁盤文件. view 是一個虛擬表,有行列信息. 來自單獨的表, 一個地理文件或不同來源并聯(lián)的. 用view來read,write,display表或地理文件中的信息. 作為一個程序員可以將vie

28、w看作一個表,地理文件或并聯(lián)視圖的句柄”handle”. view如同名,則在名稱后加:1,:2 view有些類似數(shù)據(jù)庫中的記錄集recordset2. 編輯器editormaptitude中的數(shù)據(jù)窗dataview, 實際上包含了view和editor兩個部分.editor是用來顯示view的, 當保存一個editor時, 不存儲實際數(shù)據(jù), 而是保存了怎樣顯示view的信息. 顯示的數(shù)據(jù)還是取自view.3. 視圖、層和join視圖每個地圖圖層都有一個相應(yīng)的包含表格信息的view.每個view不一定有相關(guān)的地圖圖層.一個地理圖層可能有幾個相關(guān)的view. 主要是來自join.平臺將drop

29、a view,當它不在任何窗口中顯示. 如當關(guān)閉一個editor時, 此editor關(guān)聯(lián)的view即不在任一個editor中, 也沒有和任何其他地圖圖層關(guān)聯(lián), 此view將被關(guān)閉.當撤銷一個圖層時, 與圖層關(guān)聯(lián)的每個view都將關(guān)閉.4. 讀,寫數(shù)據(jù)訪問表格數(shù)據(jù)是通過view, 表達方式簡單靈活. gisdk用record handle表示一個view中的一條記錄取值表達式:x = view_name.field_name, view_name必須是一個字符串變量, 如:/ neither will = states.name/ this, on the other han

30、d, works just fine.vw = states name = vw.name字段名如要使用變量要如下表達:/ here are two ways to read the state name.vw = statesfld = name/ these two statements do the same = vw.namename = vw.(fld)/ i am going to read the values of three fields.fld_names = name, population, incomevw = states/ read the

31、three field = vw.(fld_names1)pop = vw.(fld_names2)inc = vw.(fld_names3) 5.增加,刪除記錄 6.編輯,創(chuàng)建表結(jié)構(gòu)3. odbc表十其它geographic data and geographic filesuser interface programmingmath, string, and array manipulationtimers and stopwatchesslide shows & snapshotsprinting & layouts interprocess communicat

32、ion十一server applicatiens.嵌入地圖使用地理或空間查詢結(jié)果提供空間分析1. 概述包括startup macro dde service macros 啟動2. 要求服務(wù)格式3. 傳遞結(jié)果 保存到文件 保存到clipboard dde(a single string)4. 使用結(jié)果在client程序中bitmapmetafileole object十二gis二次開發(fā)和ole automation 1、 四種:二次開發(fā)工具 (gisdk、mapbasic) 底層dll調(diào)用開發(fā) (mapgis、泰坦) dde、ole automation activex控件開發(fā)2、 the m

33、aptitude object maptitude.automationserver,如vb中: dim mapt as object set mapt = createobject(maptitude.automationserver)方法methods: runmacro() calls a gisdk function. runuimacro() calls a macro in a compiled gisdk ui database. coord(long longitude, long latitude) scope(macroval center, double width, d

34、ouble height, double angle) circle(macroval center, double radius) 注:coord、scope、circle返回macroval類型的對象例如: map_name=mapt.runmacro(openmap, c:maptitudemymap.map, null)3、 the macroval objectmethods: copy() isequal(macroval compare)properties: propertytyperelevant caliper script compound types lat longc

35、oord lon longcoord center coordscope, circle width doublescope height doublescope angle doublescope projection arrayscope radius doublecircle red longcolor green longcolor blue longcolor十三函數(shù)參考 公共調(diào)用約定:1、 傳遞null表示一個默認值。 例如,很多函數(shù)都使用一個地圖名稱作為一個參數(shù),null代表當前地圖。類似的有editor數(shù)據(jù)窗名稱、layout布局名稱、layer圖層名稱等。對于用于定義地圖顯示

36、的函數(shù)用null表示“沒有改變”,如函數(shù)seticoncolor()在設(shè)置一個選擇集的顏色時,表示沒有變化仍使用圖層的顏色。2、 確定地圖、圖層和選擇集a、改變圖層顯示風(fēng)格的函數(shù)用幾種類型的字符串來確定被改變的是地圖、圖層或選擇集:mapname|layername|setname 指定地圖的指定圖層的指定選擇集layername|setname 當前地圖的指定圖層的指定選擇集setname 當前地圖的當前圖層的指定選擇集layername| 當前地圖的指定層null 當前地圖的當前圖層 b、類似的情況是設(shè)置專題地圖: layername|themename|class_id 修改指定圖層、專

37、題圖和類id themename|class_id 修改當前圖層、專題圖和類id c、有一些函數(shù)只能影響整個圖層,而對選擇集無效: mapname|layername layername null3、 確定view和sets很多函數(shù)是用于views和sets的,如getfirstrecord()在特定的view中的特定set獲取第一條記錄。views和sets有四種格式:viewname|setname 特定名稱的view中特定名稱的setsetname 當前view中指定setviewname| 指定名稱的view中的所有記錄null 當前view中的所有記錄4、 確定字體對字體的指定有4種

38、格式:font_family|font_sizefont_family|bold|font_sizefont_family|italic|font_sizefont_family| bold| italic|font_size字體的大小以點數(shù)表示,可以是實數(shù),如:”times new roman|bold|17.5”5、 確定窗口當你使用一些可以對所有窗口可用的函數(shù)時(minimizewindow()),必須指定窗口類型和窗口名稱,如:”map|my first map” 或 “editor|sales data”。一個特別的類型”frame|”特指maptitude主窗口。6、 確定表的字段

39、有時使用字段名稱(getfirstrecord()),有時使用字段表達式(createtheme())。7、 使用布爾值caliper script 使用字符串”true”和”false”來表示布爾值,但有時也會返回象”on”和”off”這樣的值,請參考文檔。8、 使用選項數(shù)組很多函數(shù)使用可選的數(shù)組作為參數(shù),其中的每一個元素都是由兩個或更多的元素構(gòu)成,第一個是選項的名稱,第二個是它的值,如下:options_array=“l(fā)ayer name”, ”counties”“l(fā)abel”, “counties of the northeast” 如不需要一些選項,可用null。 下述的兩個函數(shù)用于查

40、找特定選項和選項的值: findoption() findoptionvalue() gisdk全稱為geographic information system developers kit,是一種強大的宏編程語言,用于增強和定制caliper公司的gis產(chǎn)品。gis大家庭的后起之秀maptitude具有迄今為止最好的性能價格比,而其增值開發(fā)語言gisdk 更使其如虎添翼。gisdk由三部分組成:caliper script程序開發(fā)語言,用于應(yīng)用程序編譯和測試的交互開發(fā)工具以及客戶服務(wù)器功能。 caliper script 程序語言是開發(fā)基于maptitude應(yīng)用程序的關(guān)鍵。由于其一組由命令組

41、成的程序流,隱含變量說明,靈活的數(shù)組處理,結(jié)構(gòu)化的函數(shù)調(diào)用等等而使得類似basic語言的 gisdk別有特色。caliper script可以建立和管理諸如表、地圖、地圖要素、窗口、選擇集以及工具、對話框、工具條等用戶界面。此外, caliper script還包含多達 600個函數(shù)的函數(shù)庫。高級函數(shù)調(diào)用充分調(diào)用maptitude的功能 。1、 gisdk功能強大使用簡單。即使具有很少程序經(jīng)驗的人都能很快掌握。2、 gisdk共有600多個函數(shù)和200多條語句。高級函數(shù)的應(yīng)用可充分調(diào)用maptitude的功能。3、 gisdk提供靈活的add-ins的方式。add-ins可以使用戶很方便地獲取

42、現(xiàn)有軟件的功能,增強新的功能,add-ins可繁可簡,簡單的是一個當被點中即可運行的宏,而復(fù)雜的則可顯示對話框,并能通過宏的運行選擇系統(tǒng)配置。4、 gisdk可開發(fā)自己所需要的用戶界面。象菜單、工具條、對話框等,用戶還可以開發(fā)出滿足特殊需要的應(yīng)用程序以增強gisdk的功能,自行開發(fā)的程序的執(zhí)行與在其它windows上運行的程序無異,設(shè)定自己的圖標雙擊之即可運行。5、 用戶還可用gisdk開發(fā)基于服務(wù)器上的應(yīng)用程序。即該程序可將服務(wù)器上的數(shù)據(jù),地理分析功能等傳給網(wǎng)上終端或客戶,而客戶端上的程序可以有vb、vc、c+或其它任何程序組成,由于服務(wù)器在后臺運行因此不存在用戶界面,它只對客戶端的要求作出

43、應(yīng)答。6、 gisdk開發(fā)后的產(chǎn)品可含有多個資源。這樣可方便用戶編寫程序,用戶可單個編寫資源文件,編譯時,可編譯到同一資源庫中。7、 語言要素使用比較方便,隱含變量說明,靈活的數(shù)組處理使gisdk別具特色。gisdk變量不需要先定義,隨賦值類型可變,這就避免了用戶對多個變量的混淆。 應(yīng)用舉例 菜單的制作。 用戶只要把自己的菜單如下面的例子一樣編寫即可,若有分級菜單,還是象寫主菜單一樣,當菜單完成后,在菜單中就可編寫自己的功能了。例: / the interface macro is the one that bootstraps the application. macro interface

44、 / the follwing statement identifies the main system menu to load when the application starts setdefaults(menu, main menu) endmacro/ there are two main menus in our application: file and mapmenu main menumenuitem file menutext: filemenu file menumenuitem map menu text: mapmenu map menuendmenu/ the file menu has thr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論