




已閱讀5頁,還剩132頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
137第一章 了解MapObjects MapObjects是一套制圖軟件集,它使程序員能夠把地圖加到應(yīng)用程序中去。 通過MapObjects你可靈活地建立適合用戶的地圖接口。在小內(nèi)存空間中,你能用多種工業(yè)標(biāo)準(zhǔn)程序環(huán)境之一去建立應(yīng)用程序,你能夠聯(lián)合使用MapObjects與其它軟件去實(shí)現(xiàn)地圖與用戶信息的聯(lián)系。1.1 元素軟件 大部分商業(yè)軟件在最近的版本中極度壯大,諸如字處理及報(bào)表等程序,其最初僅有幾兆,目前卻嚴(yán)重消耗磁盤空間。這就要看最新的計(jì)算機(jī)能否快速執(zhí)行最新版本軟件以至于不落后于舊機(jī)器使用老軟件的效率。 由于操作系統(tǒng)變得越來越復(fù)雜及用戶對(duì)更多功能的要求也日趨強(qiáng)烈,程序也隨之壯大了。然而典型用戶也僅充分使用了這些大軟件的10%-20%。那些沒有用到的功能象一個(gè)大包袱,嚴(yán)重消耗了系統(tǒng)資源和磁盤空間。 如何打破這種惡性循環(huán)?元素軟件(Component software)是一技術(shù)上的重大突破。它提供了一種解決辦法。 元素軟件的原理是把大的桌面應(yīng)用軟件的功能打碎成部件。開發(fā)人員可跟據(jù)需要恰當(dāng)?shù)貙⒁恍┎考M合成工具箱,用它建立專用軟件。這種部件叫目標(biāo)(objects)。所用平臺(tái)就是可視化程序語言。其結(jié)果就是精煉地程序快速經(jīng)濟(jì)地運(yùn)行并且對(duì)特定的市場(chǎng)有很強(qiáng)的適應(yīng)性。1.2 MapObjects的功能通過MapObjects你可完成以下甚至更多功能: 顯示一張多圖層地圖(道路,河流,邊界)。 放大,縮小,漫游。 生成圖形元素,如點(diǎn),線,圓,多邊形。 說明注記 識(shí)別地圖上被選中的元素。 通過線,方框,區(qū)域,多邊形,圓來拾取物體。 拾取距某參照物特定范圍內(nèi)的物體。 通過SQL描述來選擇物體。 對(duì)選取物體進(jìn)行基本統(tǒng)計(jì)。 對(duì)所選地圖元素的屬性進(jìn)行更新,查詢。 繪制專題圖。 標(biāo)注地圖元素。 從航片或衛(wèi)星圖片上截取圖像。 動(dòng)態(tài)顯示實(shí)時(shí)或系列時(shí)間組數(shù)據(jù)。 在圖上標(biāo)注地址或定位。 本書開發(fā)了一系列通過VB,OLE,WinAPI擴(kuò)展MapObjects的辦法。 MapObjects可執(zhí)行許多基礎(chǔ)制圖功能。但它不能執(zhí)行某些高級(jí)功能。如,高質(zhì)量地圖輸出,地圖坐標(biāo)系投影,表面模型或網(wǎng)絡(luò)分析等高級(jí)空間分析。以及拓?fù)渚庉嫛D憧衫肊SRI的其它產(chǎn)品如ARC/INFO,ArcView來實(shí)現(xiàn)高級(jí)功能。1.3 MapObjects簡(jiǎn)介 MapObjects包括一個(gè)OLE控件(OCX)叫做地圖控件(Map control)和一組(三十多個(gè))OLE目標(biāo)(objects)。它適用于工業(yè)標(biāo)準(zhǔn)程序環(huán)境。如VB4.0,Delphi2.0,PowerBuilder,MS Access等。 MapObjects不適用于最終用戶。它是為程序開發(fā)者設(shè)計(jì)的。程序開發(fā)者可利用MapObjects開發(fā)應(yīng)用程序并把這些程序提供給下一級(jí)用戶使用。 MapObjects運(yùn)行于Win95或Win NT3.51或更高。 最近,Mierosoft開始把OLE controls稱作ActiveX controls。本書將元素稱為控件(OLE controls 或 OCXs),但這些術(shù)語可與新術(shù)語ActiveX互換。MapObjects和OLE containers OLE Automation object 是一種可編程目標(biāo),它可通過OLE Automation server來通訊。OLE custom control是一種軟件元件,它可通過OLE container實(shí)現(xiàn)特定功能。OLE container和 OLE Avtomation Server就是VB,Delphi,Access,VFro。 OLE custom control有事件,屬性和方法。 OLE Automation objects有屬性和方法。 在OLE Container中(如VB),你能聯(lián)合使用Map Objects的目標(biāo)和其它Custom controls,及利用別的程序中的OLE Automation objects(如 office)去建立應(yīng)用程序。 部件軟件的優(yōu)勢(shì) Map Objects(通常叫OCXs)可容易地用OCXs建立程序而免去C+ 冗長(zhǎng)的代碼,你可發(fā)揮專長(zhǎng)于設(shè)計(jì),工程,制圖,而不是軟件。 你的Map Objects 應(yīng)用軟件不多占用內(nèi)存空間。 比其它 Win 支持的制圖軟件速度更快,MapObjects 直接建立在MFC 庫上且優(yōu)化執(zhí)行。 你有極大的靈活性去建立用戶接口。你可在應(yīng)用程序上建立幾乎所有在Win95上見過的接口。 MapObjects的另一特點(diǎn)是,地圖可以是程序中的主要元素也可是附屬品。因此MapObjects尤其適合vertical應(yīng)用軟件。例如, 你的軟件可能主要是商用數(shù)據(jù)庫,當(dāng)查詢時(shí)可在表單上高亮度顯示與查詢內(nèi)容相關(guān)的地圖。1.4 使用MapObjects 把一張地圖加到VB的表單上十分容易,如圖*用 MapObjects編寫程序的步驟: 從CD-ROM裝入MapObjects。 啟動(dòng)VB在工具菜單下打開Custom controls對(duì)話框。如果安裝成功你將看到ESRI MapObjects的全稱。用鼠標(biāo)點(diǎn)check box (選 MapObjects 可用)。你會(huì)看到MapObjects圖標(biāo)被加到VB工具欄內(nèi)。選地圖控件,把鼠標(biāo)移到表單中,拖動(dòng)十字絲把矩形框尺寸調(diào)到適當(dāng)大小,釋放鼠標(biāo),你的表單上就會(huì)有一個(gè)地圖控件。 通過地圖控件屬性框或通過對(duì)Data connection和圖層目標(biāo)的編程,你可向地圖控件中增加地圖數(shù)據(jù)。 你還可以繼續(xù)添加其它控件,如命令按鈕和工具條,或編寫代碼來調(diào)用屬性,事件和方法。 編寫,調(diào)試,編譯。安裝 MapObjects 一旦從CD-ROM中成功裝入,下一步就是向VB工程中增加MapObjects* 當(dāng)你打開一個(gè)VB的工程,工具檔中包含了一部份你已購買的 VB控件。但并不是全部。你會(huì)發(fā)現(xiàn)制定缺省控件裝入從而把MapObjects 包括進(jìn)去是十分方便的。 為達(dá)到上述目的,你可向C:Program FilesMicrosoft Visral BasicAvto 32 ld.vbp中加入所需控件。一但你把MapObjects加入,在每次開始新工程時(shí),地圖控件將被自動(dòng)裝入。 你可自己制定一次裝入控件的數(shù)量。按需要決定控件的數(shù)量是一個(gè)好習(xí)慣。這樣會(huì)使你的工程裝入的快點(diǎn)且節(jié)省內(nèi)存。加入一地圖控件 你可向任意VB表單中加入一個(gè)或多個(gè)地圖控件。* 當(dāng)你向表單中加入一地圖控件,最初它就象VB的圖片框控件, 然而它的資源并不是位圖而是矢量或柵格數(shù)據(jù)的圖層。加入一圖層 你可通過地圖控件的屬性窗或通過寫代碼來加入圖層。* 你可通過地圖控件屬性窗口增加圖層也可采用在圖層屬性窗口中對(duì)圖層目標(biāo)賦屬性的辦法加如圖層。 地圖控件屬性窗和圖層屬性窗是連接地圖控件和圖層目標(biāo)的某些屬性的通道。 在實(shí)踐中你可通過寫代碼來增加圖層,因?yàn)槟阃ǔ2荒茴A(yù)言你的下級(jí)用戶新需接的圖層在哪里。下面是加入圖層的例子:Dim dCON As New MapObjects.DataConnectionDim curLayer As New MapObjects.MapLayerdCON.Database = c:DatacurLayer.GeoDataset = dCON.FindGeoDataset(Counties)map1.Layers.Add curLayer 這是一段通用程序,下一章我們將進(jìn)一步討論MapObjects的數(shù)據(jù)通道(data access)目標(biāo),將介紹更多的增加圖層的程序。編寫代碼和增加屬性 以下是如何使用VB代碼編輯器和設(shè)置屬性: * 象其它所有控件一樣,當(dāng)在地圖控件上打開VB代碼窗時(shí),你就會(huì)看到關(guān)于地圖控件的所有事件的代碼結(jié)構(gòu)。 在最后一部分,你會(huì)看到在地圖控件屬性表中可快捷設(shè)置地圖控件的屬性。 注意,在標(biāo)準(zhǔn)屬性窗口中,地圖控件的一些屬性是不可見的。這些屬性是只讀的。我們?cè)诤竺鏁?huì)涉及。取得MapObjects的幫助 MapObjects具有在線幫助系統(tǒng),它包括MapObjects每一目標(biāo)的屬性,方法和事件,以及常量的詳細(xì)說明。 大多數(shù)幫助的主題下都有一小段程序例子,它可在VB下執(zhí)行。下面有三種辦法可得到幫助: 你可點(diǎn)工具欄中地圖控件并按F1。 可通過VB的目標(biāo)瀏覽器與MapObjects的幫助建立聯(lián)系。 可把VB編輯窗口的文本游標(biāo)移到MapObjects的某一目標(biāo),屬性或事件上按F1。 一種最好的學(xué)習(xí)MapObjects的方法就是學(xué)習(xí)例子。以下是使用例子的步驟: 在幫助的主題下點(diǎn)例子。 打開一新VB工程并加上一地圖控件。 當(dāng)表單是活動(dòng)狀態(tài)時(shí)按F7打開代碼編輯器。 讀例子的結(jié)構(gòu),并向表單中加入特定控件。 從例子中粘貼代碼到代碼編輯器中。 按F5或選擇RUN。你的例子將被運(yùn)行。運(yùn)行工程 你可編寫一小段應(yīng)用程序。加入地圖控制并加入一個(gè)或多個(gè)圖層。在編寫時(shí)你不會(huì)看到任何圖層顯示出來。但當(dāng)程序運(yùn)行時(shí),你就會(huì)看到圖層將掌滿顯示區(qū)域,如果沒制定符號(hào)屬性(顏色、大小 、型),則缺省設(shè)置將自動(dòng)啟用。1.5 使用OLE Automation objects 除了地圖控件以外,MapObjects包括三十多個(gè)OLE Automation objects,這些目標(biāo)是MapObjects區(qū)別于同類產(chǎn)品的制圖軟件部件,它們提供了靈活性和多功能。OLE Automation objects是編寫交互的高效應(yīng)用軟件的關(guān)鍵。使用目標(biāo)瀏覽器OLE Automation objects在打開VB之初并沒有呈現(xiàn)出來。但可在目標(biāo)瀏覽中看到它們,點(diǎn)View菜單中object Browser,在庫/工程下拉框中選Mapobjects-ESRI Mapobjects你就會(huì)在類/組件列表框中看到MapObjects的constants和目標(biāo)。 點(diǎn)任意目標(biāo),在方法/屬性列表框中就會(huì)有增加。 點(diǎn)任意方法或?qū)傩?,你就?huì)在目標(biāo)瀏覽器底部看到一小段描述。 點(diǎn)question按鈕,就會(huì)得到on line幫助。引用OLE Avtomation objects 大多情況,用MapObjects就要用地圖控件。地圖控件是一種可視化元素,然而有一些用MapObjects編制的應(yīng)用程序并不需要地圖控件。你可以在VB的Reference窗口選中MapObjects OLE Automation objects而不用增加地圖控件。在VB工具 注意,如果你把MapObjects加到VB的工具欄中,也就自動(dòng)地引用了OLE Automation objects。聲明目標(biāo)當(dāng)你聲明或建立一新目標(biāo)時(shí),最好寫全名,例:Dim rSet As New Mapobjects.Recordset而不是Dim rSet As New Recordset 這不僅可提高運(yùn)行效率,也避免了潛在的命名矛盾。如 MapObjects的Recordset目標(biāo)和VB的Recordset目標(biāo)。使用常量 本書涉及了所有MapObjects可用的常量,在設(shè)置變量或?qū)傩詴r(shí)可使用常量而不是數(shù)值。常量代表的具體數(shù)值請(qǐng)參閱參考手冊(cè)和在線幫助。明確變量類型 如果你還沒有做準(zhǔn)備,你就應(yīng)該在VB的工程中聲明變量和目標(biāo)的類型。從Tools 單中選Options項(xiàng),在Options對(duì)話框中點(diǎn)中 Require Variable Declaration,在任何一個(gè)新表或模塊中都會(huì)具有這個(gè)設(shè)置。 在聲明段,你的微不足道的變量和目標(biāo)聲明工作將換來少測(cè)試和高效的表。1.6 MapObjects的數(shù)據(jù)源 你可通過MapObjects使用形文件,圖像文件,屬性表或通過ESRI的專用數(shù)據(jù)庫引擎連接的專用數(shù)據(jù)庫。形文件是地圖數(shù)據(jù)的矢量形式,圖像文件是柵格圖像或尤指航空或衛(wèi)量的畸變圖像的糾正照片,屬性表是可用ODBC裝入的任意格式。 專用數(shù)據(jù)庫是網(wǎng)絡(luò)上通過ESRI專用數(shù)據(jù)庫引擎連接的UNIX服務(wù)器。 形文件適用于中小型地圖數(shù)據(jù)。而大型數(shù)據(jù)(省,國(guó)家道路網(wǎng)),你就需使用專用數(shù)據(jù)庫。 用MapObjects編寫的軟件是可伸縮的。最初你可用形文件。當(dāng)用戶需要與大型數(shù)據(jù)庫連接時(shí),幾乎所有代碼都可被移到與專用數(shù)據(jù)庫連接后的工作中,你僅需修改打開數(shù)據(jù)源的幾行代碼。形文件 形文件是ESRI提供的存儲(chǔ)地理數(shù)據(jù)的矢量格式。這就意味著地圖元素以X,Y形式出現(xiàn)。其坐標(biāo)系是笛卡爾坐標(biāo)。注意,笛卡爾坐標(biāo)與屏幕坐標(biāo)有所不同。 每一元素的幾何形狀以包括一組矢量坐標(biāo)的形的形式存儲(chǔ)。其屬性存放在與形文件相連的dBASE的記錄中。以下是得到形文件的不同方法。 購賣商業(yè)地圖數(shù)據(jù)。 MapObjects提供的光盤。 ARcView,ARC/INFO 等 ESRI 產(chǎn)品的數(shù)據(jù)。 編寫程序從其它格式中轉(zhuǎn)換。 一個(gè)形文件由三種文件組成,主文件(*.shp)包含幾何形狀。索引文件(*.shx)包含數(shù)據(jù)的索引。數(shù)據(jù)庫文件(*.dbf)包含形的屬性,你可以修改字段的定義。每一個(gè)形文件包含一種類型(點(diǎn) 弧 多邊形) 點(diǎn)有一個(gè)(X,Y)坐標(biāo)和一個(gè)屬性。 弧段包含一條或一組(可連,可不連)的多義線。一條多義線是一組有序結(jié)點(diǎn)。每一弧段有一個(gè)屬性記錄。 多邊形包括一個(gè)或多個(gè)邊界,一個(gè)邊界是一個(gè)無交叉點(diǎn)的閉合環(huán),一個(gè)邊界可嵌于一多邊形中而形成環(huán)形。邊界的方向決定它是否代表區(qū)域內(nèi)的面積。每一多邊形有一屬性記錄。 形文件通過ODBC讀入,ODBC在裝MapObjects的同時(shí)被裝入并注冊(cè)。 ARC/INFO用戶應(yīng)注意形文件中弧,多邊形的定義不同于 ARC/INFO coverage中的定義。形文件無拓?fù)?,因此,形文件允許你集合簡(jiǎn)單元素來合成元素。如,把幾條polyoline會(huì)成arc。通過形文件,你可快速顯示圖形并具有一簡(jiǎn)單數(shù)據(jù)模型; 以簡(jiǎn)單數(shù)據(jù)模型換取快速顯示,這使得對(duì)形文件進(jìn)行拓?fù)渚庉嫽蚋呒?jí)分析變得十分困難。 形文件是一種通用格式,如果你想編寫程序直接讀寫形文件,你可以從ESRI網(wǎng)點(diǎn) 上下載ArcView V 2.0形文件描述。圖像(Image)文件 你可通過MapObjects編寫應(yīng)用程序來顯示多種圖像文件。在地圖中圖像多來自航空照片和衛(wèi)星圖像。 圖像文件依靠帶有灰度值或色標(biāo)的一組像元來表示圖片,這些像元無屬性連接,其坐標(biāo)系統(tǒng)與形文件不同。 你可把圖像文件精確重疊于大地坐標(biāo)的形文件。MapObjects (或其它 ESRI 軟件)用world files來配準(zhǔn)圖像。 一個(gè)world文件是一個(gè)簡(jiǎn)單的文本文件,它包括數(shù)學(xué)參數(shù)來定義轉(zhuǎn)換關(guān)系,其公式為:x = Ax + By + Cy = Dx + Ey + Fx 像元在地圖上的計(jì)算坐標(biāo)值X。y 像元在地圖上的計(jì)算坐標(biāo)值 Y。x 像元列數(shù)。y 像元行數(shù)。A X軸上像元的尺寸。B,D 旋轉(zhuǎn)關(guān)系項(xiàng)。E 負(fù)的Y軸上像元的尺寸。C,F 左上角像元中心的X Y地圖坐標(biāo)。 注意 E 為負(fù)值,因?yàn)?,形文件坐?biāo)與圖像坐標(biāo)Y方向正向反。 world文件是包含A,B,C,D,E,F(xiàn)值的連續(xù)行文本文件。 注意 MapObjects不支持圖像旋轉(zhuǎn)。這樣 B,D的值在 world 文件中是被忽略的。為果需要旋轉(zhuǎn),你可用 ESRI的ARC GRID。以下是MapObjects支持的圖像文件格式。名稱 描述 擴(kuò)展名 World file擴(kuò)展名BMP Windows bitmap *.bmp *.bpwTIFF Tag image file *.tif *.tfwSUN Sun raster file *.sun *.snwERDAS ERDAS GIS or LAN *.gis *.gswIMPELL IMPELL bitmap *.rls *.rlwBIL Band interleaved by line *.bil *.blwBIP Band interleaved by pixel *.bip *.bpwBSQ Band sequential *.bsq *.bqw屬性表用MapObjects編寫的應(yīng)用程序,可通過一種關(guān)系與外部屬性表相連。關(guān)系是連接元素表(元素表可是形文件的dBASE表,也可是從SDE層中得到的表)與屬性表的表。為了這種連接,可安裝 ODBC。這種關(guān)系留存于應(yīng)用程序運(yùn)行期間,它不會(huì)被寫入文件中。 要建立這種關(guān)系。你要確認(rèn)一個(gè)元素表的某一字段,一個(gè)要與之建立關(guān)系的屬性表和該屬性表的一個(gè)字段。屬性表的相關(guān)字段必須是primary key或允許在其上建立一獨(dú)一無二的索引。有一例外,在少于100個(gè)記錄的小型元素表上可建立無特殊字段的關(guān)系。 一旦建立了關(guān)系,它就在元素表上建立了一種紐帶,你可通過屬性表的字段查詢屬性,但你不能在MapObjects中通過SQL表達(dá)式向里面增加數(shù)據(jù)??臻g數(shù)據(jù)引擎 如果你采用大規(guī)模地圖數(shù)據(jù)組來組織工作,見意考慮使用空間數(shù)據(jù)引擎(SDE),一種高性能制圖數(shù)據(jù)服務(wù)器。 通過SDE,空間數(shù)據(jù)可存放于UNIX服務(wù)器上。用戶的SDE應(yīng)用程序可基于UNIX或WIN環(huán)境被編寫,SDE提供軟件開發(fā)和數(shù)據(jù)管理能力: 管理大規(guī)模地理數(shù)據(jù),提供地圖無縫顯示。 通過某種商業(yè)關(guān)系數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)。 通過一組高效的尖端空間數(shù)據(jù)操作來查詢空間數(shù)據(jù)。 SDE包括一個(gè)C語言應(yīng)用程序接口(API),它提供最大能力的執(zhí)行效率和極大的靈活性。下一章,我們將詳細(xì)解紹與SDE的連接。1.7 縱覽MapObjects MapObjects包含一組具有屬性,事件和方法的目標(biāo)。 你已經(jīng)看到你可通過地圖控件快速建立一簡(jiǎn)單應(yīng)用程序,但實(shí)際的應(yīng)用中,需要使用OLE Automation objects。當(dāng)你初次使用MapObjects你應(yīng)了解這些目標(biāo)、屬性和方法。這些對(duì)于MapObjects的全部組織是非常有用的。MapObjects的目標(biāo)分為四組: 數(shù)據(jù)通道目標(biāo)組 地圖顯示目標(biāo)組 幾何圖形目標(biāo)組 地址匹配目標(biāo)組數(shù)據(jù)通道目標(biāo)組 通過數(shù)據(jù)通道目標(biāo)組,你能建立與地圖數(shù)據(jù)的聯(lián)系。增加屬性值,從地圖元素上反饋屬性信息。數(shù)據(jù)通道目標(biāo)組由以下部件組成: 數(shù)據(jù)連接(Data Connection)目標(biāo)是MapObjects通向地圖數(shù)據(jù)的通道。它包括屬性和方法來建立與地理數(shù)據(jù)集合(GeoDatasets)的聯(lián)系。 地理數(shù)據(jù)集合( GeoDataset)目標(biāo)代表制圖數(shù)據(jù)并可引用圖層。它可引用形文件或SDE layer的數(shù)據(jù)。 地理數(shù)據(jù)集合是對(duì)于一個(gè)數(shù)據(jù)連接的所有地理數(shù)據(jù)集合目標(biāo)的總合。它是一特定文件夾中所有形文件或SDE數(shù)據(jù)庫中所有SDE層。 記錄集合(Record set)目標(biāo)代表一個(gè)圖層的記錄。如果你做了一個(gè)選擇集,它就代表所選記錄。它類似于數(shù)據(jù)庫指針。 TableDesc目標(biāo)給你關(guān)于與記錄集相連的表的字段的信息。 表(Table)目標(biāo)是一個(gè)只讀數(shù)據(jù)通道目標(biāo)。它代表來自O(shè)DBC 數(shù)據(jù)源的一個(gè)表單。你可增加一表作為與圖層目標(biāo)的關(guān)聯(lián)或?yàn)榱舜笈刂菲ヅ洹?字段集合包括記錄集目標(biāo)的字段目標(biāo)。 統(tǒng)計(jì)目標(biāo)代表關(guān)于一個(gè)記錄集的簡(jiǎn)單統(tǒng)計(jì)信息。你首先應(yīng)用一方法計(jì)算關(guān)于記錄集的統(tǒng)計(jì)值,然后可在統(tǒng)計(jì)目標(biāo)中檢查結(jié)果。 字串集合是一組標(biāo)準(zhǔn)字符串?dāng)?shù)據(jù)類型集合。你可通過它從其它目標(biāo)中取值來自接口控件(如列表框)中增加數(shù)據(jù)。地圖顯示目標(biāo)組 通過地圖顯示目標(biāo)組,你能用符號(hào)或?qū)n}描述畫一張地圖。你也可加入圖像做為背景,在地圖上顯示動(dòng)態(tài)數(shù)據(jù)。地圖顯示目標(biāo)組由以下部件組成: 地圖控件使你能顯示圖層、圖像層,和動(dòng)態(tài)跟蹤圖層目標(biāo),你可編寫代碼來控制鼠標(biāo)驅(qū)動(dòng)繪圖事件,設(shè)置顯示參數(shù),用方法可畫元素,閃爍選擇的元素,計(jì)算點(diǎn)與元素的距離,輸入線,圓,三角。 層(Layer)集合是服務(wù)于地圖控件的圖層目標(biāo)和影像層目標(biāo)的集合。 圖層目標(biāo)代表帶有一些顯示屬性的地理數(shù)據(jù)集合目標(biāo)。它可讓你處理專題地圖,此目標(biāo)有幾個(gè)方法來查找和選擇地理元素。 圖像層目標(biāo)代表一作為地圖控件上的背景的影像文件。 動(dòng)態(tài)跟蹤圖層(Tracking Layer)目標(biāo)讓你能動(dòng)態(tài)拖拽元素而無需重顯。這對(duì)實(shí)時(shí)數(shù)據(jù)獲取是十分理想的(如GPS)。它也可用于顯示基本幾何形狀(如三角、圓)和描述性文本。它們都不是地圖數(shù)據(jù)的一部分。 Geo Event目標(biāo)代表可加到Tracking Layer目標(biāo)上的點(diǎn)元素。 符號(hào)(symbol)目標(biāo)是廣泛使用的目標(biāo),它影響如何在地圖上顯示元素的許多方面。其屬性包括:顏色、字形、大小、形狀。 文本(Textsymbol) 目標(biāo)代表文本的某些屬性(如準(zhǔn)線、字型) ClassBreaksRenderer目標(biāo)使你能在圖層目標(biāo)中通過分類的辦法依數(shù)值字段顯示元素。 ValueMapRender目標(biāo)使你在圖層目標(biāo)中通過特殊字段中單獨(dú)的值,用符號(hào)來顯示元素。 LableRenderer目標(biāo)使你在圖層目標(biāo)中,依元素的某一字段的屬性標(biāo)注文本。幾何圖形目標(biāo)組 幾何圖形目標(biāo)組提供幾種功效:依從圖層中選擇的元素反饋幾何信息;向圖層添加幾何目標(biāo);向地圖中畫幾何目標(biāo)而不更新圖層。幾何圖形目標(biāo)組由以下部件組成: 矩形(Rectangle)目標(biāo)經(jīng)常用來設(shè)置和反饋地圖范圍,也用來畫矩形。 點(diǎn)集合存貯線和多邊形目標(biāo)的坐標(biāo)。 點(diǎn)目標(biāo)代表具有X、Y坐標(biāo)的點(diǎn)。 線目標(biāo)代表地圖上的一條線。多邊形目標(biāo)代表多邊形。它的頭一個(gè)點(diǎn)和最后一個(gè)點(diǎn)在它的點(diǎn)集合上是相同的。 橢圓目標(biāo)代表橢圓和圓。地址匹配目標(biāo)組 地址匹配目標(biāo)組讓你進(jìn)入一圖層上的某個(gè)地址,該地址具有街道和地址范圍并返回一個(gè)位置,你也可發(fā)現(xiàn)十字路口的位置和地名。地址匹配目標(biāo)組由以下部件組成: 地址匹配(Address Matcher)目標(biāo)讓你列出含有地址范圍的道路中心線的地理數(shù)據(jù)集合,并具有為單個(gè)或一批地址匹配的方法。 地址目標(biāo)代表關(guān)于Address Matcher目標(biāo)的方法中標(biāo)準(zhǔn)化地址。 定位目標(biāo)(Place Locator)讓你列出帶有地名的地理數(shù)據(jù)集并通過一個(gè)方法找出地名的位置。 地址位置(Address Location)目標(biāo)包含一段代碼指示是否(或如何) 一個(gè)地址被解決如果已被解決指出與地址匹配的圖型位置。1.8 moView 應(yīng)用程序 我們提供一種叫作moView的應(yīng)用程序來展示MapObjects許多功能的優(yōu)點(diǎn)并提供模板,在這本書的許多章節(jié)將通過代碼片段和來自于 moView 及其它例子的應(yīng)用來揭示MapObjects。 你可在MapObjects光盤的例子目錄中找到moView,如要學(xué)習(xí)只需考貝moView文件夾到你的系統(tǒng)目錄中。 moView是一種普通簡(jiǎn)單的制圖應(yīng)用程序。它的接口圍繞著地圖控件而調(diào)整,這種類型叫作地圖中樞(map ceneric),也許在你的應(yīng)用程序中地圖很象是一個(gè)附件而不是核心。 在應(yīng)用程序中,沒有硬編譯代碼(Hard coded)的數(shù)據(jù)源,你可使用任何MapObjects可接受的數(shù)據(jù)。moView展示了許多事件、屬性和方法。并提供一個(gè)框架使你在開發(fā)程序時(shí)可踴躍前進(jìn)。 你可為某特定市場(chǎng)建立縱向應(yīng)用程序。這時(shí)你可使用moView片段,它給你的應(yīng)用程序做向?qū)?。并可擴(kuò)展為特定應(yīng)用程序所設(shè)計(jì)的接口。運(yùn)行 moView 一但在VB內(nèi)裝入moView,你可按F5或點(diǎn)Run菜單中的 Start。 當(dāng)你打開moView你就會(huì)看到一個(gè)主表和一個(gè)空地圖顯示區(qū),你可點(diǎn)工具條中第二個(gè)按鈕(地圖目錄)來引入圖層,地圖目錄表很象VB中地圖控件屬性表單。moView 命令集moView的主要命令被裝在主表的工具條中。打印,向缺省打印機(jī)輸出地圖控件上的當(dāng)前顯示。查找,可產(chǎn)生一元素查找表,通過它你可根據(jù)屬性來定位元素。空間選擇(Spatial select),將產(chǎn)生空間選擇表,通過它可實(shí)行MapObjects的所有空間尋找方法。地址匹配(Adress matching),可產(chǎn)生地址匹配表,通過它可執(zhí)行基礎(chǔ)地址匹配。撐滿(Full extent),在地圖控件中撐滿地圖包括所有圖層中的所有元素。放大( Zoom in ),開窗放大??s小(Zoom out ),以鼠標(biāo)點(diǎn)為中心降低地圖比例二倍。漫游(Pan)標(biāo)注(Edeneify),標(biāo)注鼠標(biāo)點(diǎn)或附近。圖形(Graphics),激活圖形工具條可畫幾何圖形。框架開發(fā) 用VB建立一地圖應(yīng)用程序的用戶接口是一項(xiàng)特殊的要求。因?yàn)閂B提供的控件最適合交互式文本和表,對(duì)于圖形僅為邊緣插圖功能象地圖的圖式。moView的一個(gè)重要的中心任務(wù)是解決建立地圖用戶接口問題。 我們不選用第三方控件,因?yàn)槲覀儾荒茴A(yù)言或假設(shè)你除了VB提供的控件以外使用什么控件。為建立地圖應(yīng)用程序的用戶接口。 你可選擇任何一個(gè)廠商提供的控件。 對(duì)于moView 應(yīng)用程序的源代碼和表你都有通道與連接,無論你有無VB經(jīng)驗(yàn),moView 的代碼對(duì)你都是有價(jià)值的。moView 的方針 你會(huì)發(fā)現(xiàn) moView 應(yīng)用程序在VB下安裝了一些程序標(biāo)準(zhǔn),這些應(yīng)用程序提高了應(yīng)用程序的健壯性、可讀性和可靠性。你的選擇是由你和應(yīng)用程序的大小和特性決定的。對(duì)于一成功的應(yīng)用程序開發(fā)來說。程序標(biāo)準(zhǔn)是一個(gè)基本部份。 在moView中使用的一些程序方法:用控件的標(biāo)準(zhǔn)前綴的命名約定。整個(gè)代碼中大量的描述性注釋。變量范圍限制和全局變量限制。在開始階段裝入并隱藏表來優(yōu)化執(zhí)行。向標(biāo)準(zhǔn)模型中壓縮數(shù)據(jù)和方法。第二章使用地圖和圖層使用MapObjects的起點(diǎn)就是向應(yīng)用程序中加入地圖并向地圖中加入數(shù)據(jù)。向應(yīng)用程序中加入地圖十分簡(jiǎn)單,只需把工具箱中的地圖控件加道VB的表單中,象其它控件一樣,你可調(diào)整它的大小和位置,并可同過VB的屬性窗口或地圖控件屬性窗口來改變屬性。通過地圖控件屬性窗口加入形文件十分方便,當(dāng)你在應(yīng)用程序中使用MapObjects時(shí),還會(huì)發(fā)現(xiàn)使用圖層是十分必要的。最初,你會(huì)對(duì)向地圖中加入圖層感到不適應(yīng),你不得不研究大量的OLE Automatiion objects、SDE層和影像文件。但漸漸你會(huì)發(fā)現(xiàn)MapObjects的數(shù)據(jù)通道和地圖顯示目標(biāo)具有極大的靈活性和多功能性。本章將涉及以下內(nèi)容: 如何在地圖上表示層。 層的次序。 向地圖中加入形文件。 向地圖中加入圖像文件。 建立地圖用戶接口。 設(shè)置地圖屬性。 數(shù)據(jù)連接。 修改圖層。 動(dòng)態(tài)跟蹤層。本章將涉及以下目標(biāo):GeoDatasets集、DataConnection目標(biāo)、GeoDataset目標(biāo)、地圖控件、圖層集、圖層目標(biāo)、影像層目標(biāo)、動(dòng)態(tài)跟蹤層目標(biāo)、GeoEvent目標(biāo)。使用MapObjects向地圖中添加數(shù)據(jù)有三種方式: 通過建立DataConnection、GeoDataset和圖層目標(biāo)及向地圖目標(biāo)的層集中添加數(shù)據(jù)的方法加入矢量地圖數(shù)據(jù)。 通過建立影像層目標(biāo)及向地圖目標(biāo)的層集中影像層的方法顯示影像地圖數(shù)據(jù)以作背景。 通過使用動(dòng)態(tài)跟蹤層目標(biāo)和添加GeoEvent目標(biāo)的方法實(shí)現(xiàn)動(dòng)態(tài)跟蹤。在地圖上畫層地圖包含許多層?,F(xiàn)在我們要討論MapObjects的各種層目標(biāo)和如何在地圖控件中管理圖層。用戶眼中的圖層地圖的最上方是動(dòng)態(tài)跟蹤層,最下方為地圖控件,中間為層集。層集中圖層目標(biāo)和影像層目標(biāo)可以任意順序排放,但通常影像層顯示在最底層作為背景。以層方式工作十分有意,因?yàn)樗愫苋菀椎倪x取同類地物。程序員眼中的層以下是影響顯示地圖數(shù)據(jù)的關(guān)鍵目標(biāo): 地圖控件是顯示圖層的平臺(tái),它有兩個(gè)重要的屬性:層集和動(dòng)態(tài)跟蹤層目標(biāo)。 層集包含圖層目標(biāo)和動(dòng)態(tài)跟蹤層目標(biāo)。它們的順序決定在地圖控件中的相互覆蓋關(guān)系。 圖層目標(biāo)代表矢量數(shù)據(jù)。 影響層目標(biāo)代表柵格數(shù)據(jù)。 動(dòng)態(tài)跟蹤層目標(biāo)顯示實(shí)時(shí)數(shù)據(jù)。地圖控件的關(guān)鍵屬性是層和跟蹤層。當(dāng)你向表單中假如一地圖控件,你也同時(shí)建立了一個(gè)空層和空跟蹤層。另一重要屬性是Extent。它決定地圖的顯示范圍。用Refresh方法在地圖控件上畫層。當(dāng)你執(zhí)行下列操作時(shí)Refresh方法將自動(dòng)執(zhí)行: 向?qū)蛹屑尤雸D層或影像層。 使用Pan和CenterAt方法。 更新地圖控件的Extent屬性。 使用Clear或Remove方法。注意,有些操作不會(huì)引發(fā)Refresh方法,在編寫程序時(shí)應(yīng)在這些操作后加上Refresh方法一使操作更新顯示。標(biāo)準(zhǔn)控件的屬性和方法如果你是VB的用戶,你應(yīng)了解一些標(biāo)準(zhǔn)屬性和方法:Container、DragIcon、Index、Left、Height、Drag、Setfocus等,這里我們還將介紹一些Mapobjects的專門屬性。層集層集是地圖控件的重要屬性,包含圖層和影像層。使用Add方法可向?qū)蛹屑尤雸D層或影像層,無論增加了圖層還是影像層,F(xiàn)ullExtent屬性都會(huì)使地圖撐滿。如果你想使全圖重新顯示,可設(shè)置Extent屬性為FullExtent。Set map1.Extent = map1.FullExtentClear和Remove方法可刪除層集中某層。例如:Map1.Layers.Remove (4)MoveTo、MoveToBottom和MoveToTop方法可改變層集中側(cè)的順序。層的表示可以有層名和索引兩種方式。例如,下面的例子中索引號(hào)為2,層名名叫Hydrography:Map1.Layers.Item(2).Symbol.Color = vbBlueMap1.Layers(2).Symbol.Color = vbBlueMap1.Layers.Item(Hydrography).Symbol.Color = vbBlueMap1.Layers(Hydrography).Symbol.Color = vbBlue圖層目標(biāo)圖層目標(biāo)代表矢量數(shù)據(jù)。你可以下面的方式建立新層:Dim mLayer As New MapObjects。MapLayer當(dāng)你通過DataConnection目標(biāo)的FindGeoDataset方法把圖層加到GeoDataset目標(biāo)中時(shí),以下操作將自動(dòng)執(zhí)行: Extent屬性被更新為地圖的最大范圍。 Records屬性被分配了一Recordset目標(biāo)。 ShapeType屬性將依據(jù)形文件類型被設(shè)成moPoint、moLine、moPolygon。 Symbol設(shè)為缺省,并隨即賦予顏色。 如果FindGeoDataset方法成功,Valid屬性將被設(shè)成True。 Visible屬性設(shè)成True。Renderer屬性將設(shè)為Nothing,等待你設(shè)定其中的一個(gè)Rerderer目標(biāo):ClassBreaksRenderer、ValueMapRenderer、DotDensityRenderer或LableRenderer。Maplayer給你提供了一些強(qiáng)有力的方法以改變Maplayer的屬性數(shù)據(jù)。這些將在第五章里講述。影像層目標(biāo)影像層目標(biāo)表示你的層集中的一個(gè)圖象文件。象圖層目標(biāo)一樣,可以如此創(chuàng)立一個(gè)新影像層目標(biāo):Dim iLayer As New Mapobjects ImageLayer然后,你可在層集里用Add方法往你的地圖畫面里加入圖象文件。你可能還要使用層集里的MoveToBottom方法,這樣圖象就不會(huì)擋住其它的層。當(dāng)你將影像層附加圖象文件時(shí),Extent屬性就會(huì)被更新,最大限度地反映地理范圍。在同一地理坐標(biāo)上,如果你想使用其它圖層,圖象文件應(yīng)有一個(gè)相關(guān)的配準(zhǔn)文件。反饋圖層類型在層集里用Add方法加入圖層或影像層,如方法成功,就會(huì)反回True。一旦層集里包括了一些層目標(biāo),你必須隨時(shí)掌握各種層的類型。下面是在層集中返回層類型的例子:Dim Layer As objectsFor Each Layer In Map1.LayersIf Layer.LayerType = moMapLayer ThenMsgBook layer & Layer.Name & is a map layerElseIf Layer.LayerType = moImageLayer ThenMsgBook layer & Layer.Name & is a image layerEnd IfNext Layer注意,我們必須將層聲明為目標(biāo),這樣Visual Basic可在運(yùn)行時(shí)接受此定義。在上面例子中,還用到兩個(gè)常量:moMaplayer和moImagelayer,這增加了程序的可讀性。你可在MapObjects幫助屏上或在MapObjects程序員手冊(cè)上查到所有常量的值。全面檢查圖層在上面例子的基礎(chǔ)上,使用層集索引全面檢查圖層屬性:Dim i As IntegerFor i = 0 To Map1.Layers.Count - 1If Map1.Layer(i).LayerType = moMapLayer ThenIf Map1.Layer(i).shapeType = moPoint ThenMsgBook Layer number & i & is a map layer and contains points.ElseIf Map1.Layer(i).shapeType = moLine ThenMsgBook Layer number & i & is a map layer and contains lines.ElseIf Map1.Layer(i).shapeType = moPolygon ThenMsgBook Layer number & i & is a map layer and contains polygons.End IfElseIf Map1.Layer(i).LayerType = moImageLayer ThenMsgBook Layer number & i & is a image layer.End IfNext i圖層顯示圖層在地圖控件中的顯示順序與其在層集中索引的順序相反。新增圖層的索引號(hào)總是0,以有圖層的索引號(hào)按順序遞增。這與VB的一些集合有所不同。在地圖控制單中,Layers 是按 Layers 集里索引值的例序排列來調(diào)用的.Drawing事件當(dāng)你在地圖上調(diào)出圖層后,一系列事件就會(huì)起動(dòng)。你可將程序放到這些事件后面,并可讓用戶取消調(diào)出的大的地圖層。當(dāng)你在地圖控件中使用Refresh方法,就會(huì)出現(xiàn)如下情況:1. BeforeLayerDraw事件起動(dòng)。2. 層集按索引相反順序調(diào)出。3. AfterLayerDraw事件起動(dòng)。4. BeforeTrackingLayerDraw事件起動(dòng)。5. 如果任何GeoEvents加入到TrackingLayer中,他們就被畫出。6. AfterTrackingLayerDrow事件啟動(dòng)。這些Drawing事件的一個(gè)使用方法是往地圖上畫一些幾何圖形,如線、圓和在地圖上說明注記,另一使用方法是調(diào)出層集或TrackingLayer之前來檢驗(yàn)狀態(tài)。如果你的用戶在地圖上已啟動(dòng)了一種方法,而它又占用了太長(zhǎng)的時(shí)間,你可按Escape鍵取消操作。你可賦予地圖控件的CancelAction屬性以下三種值。 moCancelNone是說按Escape鍵將被忽略。 moCancelMap將停止所有層的調(diào)出。 moCancelLayer將停止當(dāng)前層的調(diào)出。按Escape鍵啟動(dòng)DrawingCancelled事件。將程序放到事件后,以便應(yīng)用程序可通過恰當(dāng)?shù)姆椒ㄌ幚砝L圖過程的末端。在你的應(yīng)用程序中控制地圖的調(diào)出速度的方法是在地圖控件中設(shè)置RefreshCount屬性。Mapobjects在緩沖器里調(diào)出地圖,當(dāng)達(dá)到一定矢量數(shù)目時(shí)更新地圖顯示。缺省情況下,此屬性為10,000。降低這種特性在較慢的計(jì)算機(jī)上可能會(huì)明顯提高效率,增加這種特性將加快一些地圖控件的調(diào)出。利用Win API擴(kuò)充MapObjects應(yīng)用程序MapObjects提供了一種方法來使用經(jīng)常出現(xiàn)在Window應(yīng)用程序接口程序中的兩個(gè)變量 hDC和hWND。hDC是一句柄,一個(gè)唯一Windows分配給表面設(shè)備的ID號(hào),如屏幕或打印機(jī),通過它你的應(yīng)用程序可產(chǎn)生可視操作。你可通過Windows API GetDC函數(shù)可以得到自己的hDC,但使用完,一定要用ReleaseDC功能退出。一旦你有了device context,你可用適合你的應(yīng)用程序的Windows API圖表來使用它。例如,在一個(gè)應(yīng)用程序里,這個(gè)應(yīng)用程序能夠在地圖點(diǎn)位上提供圖符設(shè)制,你就可以象如下程序:Private Sub mapMain_BeforeLayerDraw(ByVal index As Integer, ByVal hdc As Long)If index = 0 ThenRenderIconicMarkers hdc, mapMain.Layers(index), picLogoEnd IfPrivate Sub RenderIconicMarkers(hdc As Long, layer As MapLayer, pic As PictureBox)Dim recs As MapObjects.RecordsetSet recs = layer.RecordsDim shpfield As MapObjects.FieldSet shpfield = recs.Fields(Shape)Do While Not recs.EOFDim pt As MapObjects.PointSet pt = shpfield.ValueDrawIconicMarker pt, pic, hdcrecs.MoveNextLoopEnd SubPrivate Sub DrawIconicMarker(pt As MapObjects.Point, pic As PictureBox, hdc As Long)Dim x As Single, y As SinglemapMain.FromMapPoint pt, x, yDim xPixels As Integer, yPixels As IntegerxPixels = Me.ScaleX(x, vbTwips, vbPixels)xPixels = Me.ScaleX(y, vbTwips, vbPixels)BitBlt hdc, xPixels - 16, yPixels - 16, 32, 32, pic, hdc, 0, 0, SRCCOPYEnd Sub另一方面,hWnd是Map的真正的句柄。它存在于較大的hDC中,盡管它設(shè)計(jì)成為地圖的屬性,實(shí)際上hwnd是windows變量,不能夠改變,只有運(yùn)用API子程序,才能通過它。在下面的例子中,當(dāng)用戶在地圖上拖動(dòng)鼠標(biāo),就會(huì)出現(xiàn)一個(gè)矩形,依據(jù)矩形的大小顯示地圖。程序得到了地圖的hwnd屬性,用來設(shè)置顯示設(shè)備。Private Declare Function Rectangle Lib gdi32 (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Declare Function GetDC Lib user32 (ByVal hwnd As Long) As LongPrivate Declare Function ReleaseDC Lib user32 (ByVal hwnd As Long, ByVal hdc As Long) As LongPrivate Declare Function SetROP2 Lib gdi32 (ByVal hdc As Long, ByVal nDrawMode As Long) As LongPrivate Const R2_NOTXORPEN = 10Private Const R2_NOT = 6Dim g_hdc As LongDim g_hwnd As LongDim dragging As BooleanDim xs As Integer, ys As IntegerEnd SubPrivate Sub F
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026學(xué)年洛陽市老城區(qū)三年級(jí)數(shù)學(xué)第一學(xué)期期末試題含解析
- 2025-2026學(xué)年遼寧省丹東市東港市三年級(jí)數(shù)學(xué)第一學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 2025-2026學(xué)年安徽省蕪湖市數(shù)學(xué)三上期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 2024年加查縣三上數(shù)學(xué)期末學(xué)業(yè)水平測(cè)試模擬試題含解析
- 公共營(yíng)養(yǎng)師課件
- 前沿視角下的經(jīng)濟(jì)法概論考試試題與答案
- 護(hù)士面臨的挑戰(zhàn)試題及答案
- 2025年行政管理企業(yè)文化試題及答案
- 2025年執(zhí)業(yè)護(hù)士考試為護(hù)士職業(yè)生涯鋪路試題及答案
- 簡(jiǎn)化版中國(guó)文化概論考試試題及答案
- 2024年自治區(qū)文化和旅游廳所屬事業(yè)單位招聘工作人員考試真題
- (二模)臨沂市2025年高三高考模擬考試歷史試題卷(含答案)
- 雇保姆看孩子合同協(xié)議
- 2025年小學(xué)語文教師實(shí)習(xí)工作總結(jié)模版
- 景區(qū)安全生產(chǎn)管理規(guī)章制度大全
- 消防司機(jī)交通安全課件
- 災(zāi)害風(fēng)險(xiǎn)評(píng)估模型-第5篇-全面剖析
- 廣東2025年03月資本市場(chǎng)學(xué)院(廣東)招考工作人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025云南省安全員《A證》考試題庫及答案
- 腦出血手術(shù)護(hù)理查房
- 面食節(jié)活動(dòng)方案
評(píng)論
0/150
提交評(píng)論