版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ArcGIS TOC\o"1-1"\h\z\uArcGIS介 和ArcGISEngine開發(fā)相關(guān)的C#知 使用控件創(chuàng)建第一個(gè)桌面應(yīng)用程 空間數(shù)據(jù) 幾何對(duì)象和空間參 矢量數(shù)據(jù)空間分 符號(hào) 柵格數(shù)據(jù)分 編 地圖輸出 ArcGISEngine實(shí) 安裝部 ArcGISArcGISGIS功能和業(yè)務(wù)邏輯,無(wú)論是在桌面、服務(wù)器、還是在野外。GIS(ArcGISDesktop)—ArcGISGIS軟件產(chǎn)品是用來(lái)編輯、設(shè)計(jì)、共享、管理和發(fā)布地理信息和概念。ArcGISArcReaderArcView、ArcEditorArcInfo。ArcInfoGIS產(chǎn)品。通過(guò)一系列的可選的軟件擴(kuò)展模塊,ArcGISDesktop產(chǎn)GISGIS(ServerGIS)—ArcGISServer、ArcIMSArcSDEGIS應(yīng)用程序,在大型機(jī)構(gòu)和互聯(lián)網(wǎng)上眾多用戶之間共享地理信息。ArcGISServer是一個(gè)中心應(yīng)用服務(wù)器,它包含放的Internet協(xié)議發(fā)布地圖、數(shù)據(jù)和元數(shù)據(jù)的可伸縮的網(wǎng)絡(luò)地圖服務(wù)器。ArcSDE是在各種關(guān)系型數(shù)據(jù)庫(kù)管GIS(MobileGIS)—ArcPadGPS的無(wú)線移動(dòng)設(shè)備,越來(lái)越多地應(yīng)用在野外數(shù)據(jù)采集和信息訪問(wèn)中。ArcGIS桌面和ArcGISEngine可以運(yùn)行在便攜式電腦或平板電腦上,用戶可以在野外進(jìn)行數(shù)據(jù)ArcGISEngineArcGISEngine是一組完備的并且打包的嵌入式GIS組件庫(kù)和工具庫(kù),開發(fā)人員可用來(lái)創(chuàng)建新的或擴(kuò)ArcGISEngineGIS功能嵌入到已有的應(yīng)用軟件中,如自ArcGISEngine由兩個(gè)產(chǎn)品組成:構(gòu)建軟件所用的開發(fā)工具包以及使已完成的應(yīng)用程序能夠運(yùn)行的可Runtime(運(yùn)行時(shí)環(huán)境。ArcGISEngine開發(fā)工具包是一個(gè)基于組件的軟件開發(fā)產(chǎn)品,可用于構(gòu)建自定義GISWindows、UNIX或Linux用戶構(gòu)建基礎(chǔ)制圖和綜合動(dòng)態(tài)GIS應(yīng)用軟件。ArcGISEngineRuntime是一個(gè)使終端用戶軟ArcObjectsArcGISEngineArcGISEngine,GISArcGISEngine面向開發(fā)人員的軟件開發(fā)包(ArcGISEngineDeveloper面向最終用戶的運(yùn)行時(shí)(ArcGISEngineArcGISEngineGIS和制圖應(yīng)用軟件。它并不是一個(gè)終端用戶產(chǎn)品,而是軟件開發(fā)人員的工具包,支持四種開發(fā)環(huán)境(C++,COM,.NET,Java)Windows、UNIX或Linux用戶構(gòu)建基礎(chǔ)制圖和綜合動(dòng)態(tài)GIS應(yīng)用軟件。ArcGISEngineRuntimeArcObjects組件產(chǎn)品,并且將被安裝在每一臺(tái)運(yùn)行ArcGISEngine應(yīng)用程序的計(jì)算機(jī)上。ArcGISEngineBaseArcGISEngineArcObjectsGISGeometryDisplayDataGeoDatabaseMapGISDevelper包含了進(jìn)行快速開發(fā)所需要的全部可視化控件,如MapControl、PageLayoutControl、SceneControl、GlobeControl、TOCControl、ToolbarControl、SymbologyControlLicensenControl控件等,除了這些,該ToolbarControlcommands、tools、Menus,它們可以極大地簡(jiǎn)化二次開發(fā)圖以及數(shù)據(jù)互操作等。ArcGISEngine標(biāo)準(zhǔn)版并不包含這些ArcObjects許可,他們只能作為擴(kuò)展存在,需要特定的License才能運(yùn)行。ArcGISEngineArcGISEngine運(yùn)行時(shí)的級(jí)別上,從標(biāo)準(zhǔn)版本Engine運(yùn)行時(shí)可以操作幾種不同的柵格和矢量格式、進(jìn)行地圖表達(dá)和創(chuàng)建以及通過(guò)執(zhí)行各種空間或?qū)傩圆樵儾檎乙?。這個(gè)級(jí)別的ArcGISEngine運(yùn)行時(shí)還可以進(jìn)行基本數(shù)據(jù)創(chuàng)建、編輯Shapefile和簡(jiǎn)單的個(gè)人地理數(shù)據(jù)庫(kù)(PersonalGeodatabase)GIS分析但是如果遇到企業(yè)級(jí)數(shù)據(jù)庫(kù)(ArcGISSDE)數(shù)據(jù)庫(kù)的編輯以及復(fù)雜數(shù)據(jù)模型的創(chuàng)建(網(wǎng)絡(luò),拓?fù)?就需要EnterpriseGeodatabaseUpdate許可.ArcGISEngine運(yùn)行時(shí)的標(biāo)準(zhǔn)許ArcGISView級(jí)別的功能,而EnterpriseGeodatabaseUpdateArcGIS桌面Editor而他們被物理的防盜bin目錄下的dll中,而邏輯上被分散到不同的命名空間中,下面我們?cè)敿?xì)對(duì)一些類庫(kù)VersionArcGIS10ArcGIS系列產(chǎn)品的函數(shù)和方法,該類庫(kù)是在運(yùn)行Engine的應(yīng)用程序的時(shí)候SystemArcGISArcGIS的其它庫(kù)所使用的服務(wù)的組件。System庫(kù)中定義了許多接口,它們可以由開發(fā)者來(lái)實(shí)現(xiàn)。AoInitializer對(duì)象在System中定義;所有開發(fā)者必須使用該對(duì)象在使用Engine功能的應(yīng)用程序中初始化和uninitializeArcGISEngine。開發(fā)者不擴(kuò)展該ArcGIS系統(tǒng)。SystemUI庫(kù)中包含了可在ArcGISEngine中擴(kuò)展的用戶界面組件的接口定義,包括ICommand、IToolIToolControlUIutility對(duì)象,開發(fā)者可ArcGIS系統(tǒng)。Geometry庫(kù)處理存儲(chǔ)在特征類(featureclasses)或其它圖形要素(graphicalelements)中的特征的geometryshapePoint、MultiPoint、PolylinePolygon。除了這些頂層的Polylines和Polygons構(gòu)建模塊的幾何體(geometries)(primitives)。Segments、PathsRings。PolylinesPolygonsPathSegments組成。一個(gè)Segmentsegments有CircularArcLineEllipticArc和BezierCurveZM和IDs。基本的幾何對(duì)象都支持幾何操作,如Buffer和Clip。開發(fā)者不可以擴(kuò)展幾何基元。GIS中的實(shí)體是指現(xiàn)實(shí)Geometry庫(kù)中。開發(fā)者可以通過(guò)在空間參考間添加新的空間參考和投影來(lái)擴(kuò)展空間DisplayGIS數(shù)據(jù)顯示的對(duì)象。除了負(fù)責(zé)實(shí)際圖像輸出的主要顯示對(duì)象,該庫(kù)中還包含MapPageLayout對(duì)象提供的視圖與顯示交互。該庫(kù)的所有部分都可以被擴(kuò)展,常被擴(kuò)展的有符號(hào)、顏色和顯示反饋(displayfeedbacks)。Output庫(kù)被用于創(chuàng)建圖形輸出到設(shè)備,如打印機(jī)、繪圖儀和硬拷貝格式,如增強(qiáng)型圖元文件(enhancedmetafiles)和柵格影像格式(JPG、BMP等)ArcGIS系統(tǒng)其它部分中的對(duì)象來(lái)創(chuàng)建圖形Display和Carto庫(kù)中的對(duì)象。開發(fā)者可以擴(kuò)展outputGeoDatabasegeodatabaseAPI。Geodatabase是一個(gè)構(gòu)建在標(biāo)準(zhǔn)工業(yè)關(guān)系和對(duì)象ArcGIS支持的所有數(shù)據(jù)源提供了統(tǒng)一的編程模型。GeoDatabasegeodatabase來(lái)支數(shù)據(jù)源。geodatabase支持的native數(shù)據(jù)類型不可以被擴(kuò)展。DataSourcesFileGeoDatabaseAPIshapefile、coverage、TIN、CAD、SDC、ArcGISStreetMapVPFDataSourcesFileDataSourcesGDBGeoDatabaseAPIMicrosoftAccessSDE?RDBMSsDataSourcesGDB庫(kù)。DataSourcesOleDBMicrosoftOLEDBGeoDatabaseAPI的實(shí)現(xiàn)。該庫(kù)只有在MicrosoftWindowsOLEDB支持的數(shù)據(jù)提供者和文本文件DataSourcesOleDB庫(kù)。DataSourcesRaster庫(kù)包含了用于RasterGeoDatabaseAPISDE軟而是擴(kuò)展RDODataSourcesRaste庫(kù)。GeoDatabaseDistributedgeodatabase的工具來(lái)支持到企業(yè)geodatabase的分布式訪問(wèn)。開發(fā)者不擴(kuò)展GeoDatabaseDistributed庫(kù)。Carto庫(kù)支持地圖的創(chuàng)建和顯示;這些地圖可以包含一幅地圖或具有多幅地圖和相關(guān)旁注的頁(yè)中的數(shù)據(jù)。PageLayout對(duì)象是宿主一幅或多幅地圖和相關(guān)旁注(指北針、圖例、比例尺條等)的容器。Map對(duì)象是圖層的容器。Map對(duì)象有操作地圖中所有圖層的屬性:空間參考、地圖比例尺等,還有操作地圖圖層的方矢量特征由FeatureLayerRasterLayer對(duì)象處理,TIN數(shù)據(jù)由TinLayer對(duì)象處理等。象。Renderer對(duì)象的屬性控制數(shù)據(jù)在地圖中怎樣顯示。RenderersDisplaysymbols進(jìn)行實(shí)際繪圖;rendererMapPageLayout可以包含形狀、文本標(biāo)注、復(fù)雜旁注等的要素。Carto庫(kù)也包含對(duì)地圖注記和動(dòng)態(tài)標(biāo)注的支持。Locationroutefullfinegrained對(duì)象訪GeocodeServerAPI。開發(fā)者可以創(chuàng)建他們自己的地理編碼對(duì)NetworkAnalysis庫(kù)提供的對(duì)象在網(wǎng)絡(luò)加載到geodatabase中時(shí),使用網(wǎng)絡(luò)數(shù)據(jù)和對(duì)象populatingageodatabaseutility網(wǎng)絡(luò)的——gaslines、electricitysupplylines等。開發(fā)者使用Controls庫(kù)來(lái)構(gòu)建或擴(kuò)展具有ArcGIS功能的應(yīng)用程序。ArcGISControls通過(guò)封裝ArcObjects和提供一個(gè)coarser-grainedAPI,簡(jiǎn)化了開發(fā)過(guò)程。盡管控件封裝了finegrainedArcObjects,但ArcObjects。MapControlPageLayoutControlCartoMap和PageLayout對(duì)象。ReaderControlMapPageLayoutAPI。以訪問(wèn)Map和PageLayoutTOCControl和宿主與一個(gè)合適控件一起工作的命令和工具的ToolbarControlGeoAnalystArcGISSpatialAnalystArcGIS3D3DAnalyst許可才能使用該庫(kù)中的對(duì)象。3DAnalystCarto庫(kù)中包含的對(duì)象在二維地3DAnalystControls庫(kù)中3DAnalyst許GlobeCoreglobeCarto庫(kù)中包含的對(duì)象在二維地圖中工作。GlobeMap對(duì)象類似,是數(shù)據(jù)的容器。GlobeCamera根據(jù)globeGlobeGlobe介紹完這些,讓我們有個(gè)感性上的認(rèn)識(shí),在以后找某個(gè)對(duì)象的時(shí)候,知道去哪個(gè)dll使用ArcGISEngine,也就意味著使用里面的接口,那么什么是接口呢?在面向?qū)ο蟮木幊讨?,我們都usingusingSystem.Collections.Generic;usingSystem.Linq;usingnamespaceinterfacevoid這個(gè)接口的這個(gè)gender方法,我們不能知道它到底干什么,但是要知道這個(gè)gender到底是干什么用的,那usingusingSystem.Collections.Generic;usingSystem.Linq;usingnamespaceclasspublicvoidConsole.WriteLine("I’mausingusingSystem.Collections.Generic;usingSystem.Linq;usingnamespaceclasspublicvoidConsole.WriteLine("I’mausingusingSystem.Collections.Generic;usingSystem.Linq;usingnamespaceclassstaticvoidMain(string[]IPeoplePersonPersonnewBoyPerson.genderBoy中的genderPersonnewGirlPerson.gender();//這個(gè)調(diào)用的是Gril中的gender方法我們已經(jīng)知道使用ArcGISEngine開發(fā),也就意味著我們要和接口打交道,ArcGISEngine中提供的接口和類加起來(lái)估計(jì)上萬(wàn),但是用過(guò)ArcGISEngine的人,知道這個(gè)數(shù)字不為過(guò)。ArcGISEngine為了幫助我OMD(Objectmodeldiagrams)圖中提供的信息非常多,是對(duì)象瀏覽器中信息的重要補(bǔ)充。VisualBasic,或者其它的開發(fā)環(huán)境,都會(huì)列出ArcInfo組件的理解的!在裝了ArcGISEngine后,可以在安裝目錄下找到很多使用UML來(lái)描述ArcInfo組件的pdf,這些pdf詳細(xì)的描述了ArcObjects,并描述你能夠創(chuàng)建的數(shù)據(jù)模型,以下詳細(xì)說(shuō)明。子類完成。子類繼承其定義的接口。OMD符號(hào)為:二維的內(nèi)部有陰影的矩形。普通類:不能創(chuàng)建,從別的對(duì)象獲得實(shí)例。OMD符號(hào)為:3D組件類:可以直接創(chuàng)建實(shí)例的類,在C#New關(guān)鍵字。OMD3D在抽象類、可創(chuàng)建類和可實(shí)例化類之間,有幾種存在的關(guān)聯(lián)(或稱關(guān)系)0..1M..N——從M到N(正整數(shù)*或者0…*1…*類繼承(typeinheritance)定義了專門的類,它們擁有超類的屬性和方法,并且同時(shí)也有自身的屬性和上圖說(shuō)明primaryline和secondaryline是linepole對(duì)象有一個(gè)方法能夠創(chuàng)建transformer在這個(gè)圖中transformer能和一個(gè)transformerbanktransformerbank3個(gè)transformer。但當(dāng)transformerbank移除以后,transformer依然能夠存在。Pole包含一個(gè)或多個(gè)Crossarm,在這個(gè)圖中當(dāng)pole被移除后,Crossarm控制著CrossarmOMD屬性:?jiǎn)♀彔畹膱D標(biāo),Read(左側(cè)的實(shí)心啞鈴)和write(右側(cè)的實(shí)心啞鈴ArcGISEngline組件庫(kù)的每一個(gè)組件中定義有不同的類,類下面定義了不同接口,接口中包含不同的屬性和方法。類之間有類型繼承(Typelnheritance)關(guān)系,接口之間有互相調(diào)用(Querylnterface)ArcObjcets中有三類class,ArcObjects中接口名稱都以”I”IMapIlayer等。類實(shí)現(xiàn)了接口中的方法。一個(gè)類可以有多個(gè)接口,如FeatureLayerClass類有IFeatureLayer,有IFeatureLayer(Theinterfacedefineswhatanobjectcando,andtheclassdefineshowitisdone.79頁(yè)ExplroingArcObjectsV9.0)AO開發(fā)的時(shí)候,和對(duì)象間的通信是接口查詢(QueryInterface)一個(gè)類可以有多個(gè)接口,聲明了接口變量并且指向一個(gè)對(duì)象的時(shí)候,這IMappMap=New這里會(huì)產(chǎn)生錯(cuò)誤此時(shí)的pMap只能使用IMap接口中定義的方法和屬性,比如獲取圖層的個(gè)數(shù),添加圖層等,但是不能清空視圖上的內(nèi)容(IActiveView中定義的)QueryInterface(QI)很方便pViewpMapQI現(xiàn)在mView就可以使用IActiveView中定義的方法了類類型繼承類型繼承是指類之間的接口類型的繼承,而不是繼承其實(shí)現(xiàn)。繼承過(guò)來(lái)的接口只是名hpfileorkpacecty和cceorkpacacty都繼承orkpaceaty,而他們的打開(penroile)方法卻不一樣,hpfileorkpaceaty(penroile)方法需要一個(gè)AccessWorkspaceFactry的(OpenFromFile)方法需要一個(gè)數(shù)據(jù)庫(kù)(mdb)位置接口繼承如ImapFrame接口和IMapSurroundFrame接口繼承于IFrameElementIFrameElement所具有的方法和屬性對(duì)派生接口ImapFrame和IMapSurroundFrameCOM我們只能通過(guò)接口,通過(guò)接口暴露出來(lái)的方法,COM是一種服務(wù)器端/客戶端架構(gòu),服務(wù)器端定義了操作的方法,客戶端通過(guò)接口調(diào)用這些方法。下面的這幅圖很能說(shuō)明COM的結(jié)構(gòu):QI,QIQIIFavoriteFoodusingusingSystem.Collections.Generic;usingSystem.Linq;usingnamespaceinterfacevoidusingusingSystem.Collections.Generic;usingSystem.Linq;usingnamespaceinterfacevoidCatusingusingSystem.Collections.Generic;usingSystem.Linq;usingnamespaceclassCat:IFavoriteFoodpublicvoidpublicvoidCatusingusingSystem.Collections.Generic;usingSystem.Linq;usingnamespaceclassstaticvoidMain(string[]IVoicepVoice=newCat();pVoice.Food(IVoiceIFavoriteFoodpFavoriteFood=pVoiceasIFavoriteFood;VSArcGISEngine其中,AxMapControlMap地圖控件,AxPageLayouControlAxTOCControl是目錄控件,AxToolbarControlGIS工具欄控件,AxSceneControlScene三維場(chǎng)景控件,axGlobeControl是Globe控件,AxLicenseControl是許可控件,AxSymbologyControlAxArcReaderControl是ArcReaderAxArcReaderGlobeControl是ArcReaderGlobe控件。AxLicenseControlGISTocMapToolbar添加完這幾個(gè)控件后,VSVersionArcGISEngine10ToolbarTocMap控件的關(guān)聯(lián)(BuddyToolbar中進(jìn)行設(shè)置(Toolbar控件-右鍵-屬性-Itmes選項(xiàng)在Toolbarcontrol上右鍵—屬性在items出現(xiàn)這個(gè)問(wèn)題的原因是因?yàn)锳rcGIS10發(fā)生了變化,將下面的語(yǔ)句添加到使用AOMain利用剛才添加的打開文檔的命令打開一個(gè)新的文檔在上面,當(dāng)我們將這些空間拖到窗體中的時(shí)候,會(huì)自動(dòng)加載一些dll,我們知道ArcGISEngine編程,也就意味著和COM對(duì)象接觸。MxdAxMapControl.LoadMxFile(sFilePath)Mxd文檔的路徑傳給OpenFileDialogOpenMXD=newOpenFileDialog();OpenMXD.Title="打開地圖";OpenMXD.InitialDirectory="E:";OpenMXD.Filter"MapDocuments(*.mxd)|*.mxd";if(OpenMXD.ShowDialog()==DialogResult.OK)stringMxdPath=LoadMxFilepublicstringstringMxdPath=OpenFileDialogOpenMXDnewOpenFileDialog();OpenMXD.Title="打開地圖";OpenMXD.InitialDirectory="E:";OpenMXD.Filter="MapDocumentsif(OpenMXD.ShowDialog()==MxdPath=returnAxMapControlAddShapeFile來(lái)說(shuō),它需要兩個(gè)參數(shù),shpshp文件要兩個(gè)參數(shù),所以構(gòu)造一個(gè)數(shù)publicstring[]string[]ShpFile=newOpenFileDialogOpenShpFilenewOpenFileDialog();OpenShpFile.Title="打開Shape文件";OpenShpFile.InitialDirectory="E:";OpenShpFile.Filter="Shape文件(*.shp)|*.shp";if(OpenShpFile.ShowDialog()==stringShapPath=intPosition=stringFilePath=ShapPath.Substring(0,Position);stringShpName=ShapPath.Substring(Position+1);ShpFile[0]=FilePath;ShpFile[1]=returnArcGISEngineArcMapArcGISEngine中的MapControl控件和PageLayoutControlArcMap中的數(shù)據(jù)視圖和布局視圖,MapControl控件主要用于空間數(shù)據(jù)的顯示和分析,它封裝了地圖對(duì)象,而PageLayoutControl控件是用于地圖的修飾和整理,可以用來(lái)生成專題圖等,它封裝了PageLayout對(duì)象。TOCControl控件和ToolbarControlArcMap中的TableofContents控件和工具條控件,這PageLayoutContro,SceneControl或者globeControl控件。ifpMapDocument.Open(path,null);IMappMap;for(inti=0;i<=pMapDocument.MapCount-1;pMap=pMapDocument.get_Map(i);IEnumLayerpEnumLayer=pMap.get_Layers(null,ILayerpLayer=pEnumLayer.Next();while(pLayer!=null)pLayer=MapControlArcMapMap在ArcGISEngine的幫助文件中,我們可以看到MapControl主要實(shí)現(xiàn)了如下接口:MapControlMxdShp文件等。下面我們通過(guò)實(shí)現(xiàn)鷹眼圖這個(gè)功能來(lái)進(jìn)一步學(xué)習(xí)MapControl控件。在實(shí)現(xiàn)鷹眼圖之前,我們需要接口有更深入的了解。COM編程類似客戶端和服務(wù)器端的兩層結(jié)構(gòu),COMInterface“”的機(jī)制來(lái)進(jìn)行通信。在絕稱為入接口InBoundInterfaceOutBoundinterfaceCOM分析:鷹眼圖的操作主要由以下幾個(gè)動(dòng)作,當(dāng)在一個(gè)控件中移動(dòng)一幅圖的時(shí)候另一控件中的圖也發(fā)生變化,當(dāng)在主控件中重新加載一幅圖的時(shí)候,另外一個(gè)控件的圖也發(fā)生相應(yīng)的變化,同時(shí)我們?cè)邙B瞰的控件中加入一紅色邊框,注意這個(gè)其實(shí)是一個(gè)面,只是填充的顏色是透明的而已。通過(guò)分析我們知道,我們apControlaapControl1axapContrl2axaControl1而axapControl2為鳥瞰圖。對(duì)于名稱為axMapControl1的MapControl控件,只需要在axMapControl1的OnExtentUpdatedOnMapReplaced IMapControlEvents2_OnExtentUpdatedEventIEnvelopepEnvelope= IActiveViewpActiveView=pGraphicsContainerasIRectangleElementpRectangleEle=newRectangleElementClass();IElementpElement=pRectangleEleasIElement;pElement.Geometry=pEnvelope;IRgbColorpColor=newRgbColorClass();pColor.Red=255;pColor.Green=pColor.Blue=pColor.Transparency=ILineSymbolpOutline=newSimpleLineSymbolClass();pOutline.Width=3;pOutline.Color=pColor=newRgbColorClass();pColor.Red=255;pColor.Green=pColor.Blue=pColor.Transparency=IFillSymbolpFillSymbol=newSimpleFillSymbolClass();pFillSymbol.Color=pColor;pFillSymbol.Outline=IFillShapeElementpFillShapeEle=pElementasIFillShapeElement;pFillShapeEle.Symbol=pFillSymbol;pGraphicsContainer.AddElement((IElement)pFillShapeEle,0);pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null IMapControlEvents2_OnMapReplacedEventif(axMapControl1.LayerCount>axMapControl2.Map=newfor(inti=0;i<=axMapControl1.Map.LayerCount-1;axMapControl2.Extent=axMapControl1.Extent;對(duì)于名稱為axMapControl2的MapControl控件,只需要在axMapControl2的OnMouseMove和OnMouseDown IMapControlEvents2_OnMouseMoveEventif(e.button==IPointpPoint=newPointClass();pPoint.PutCoords(e.mapX,e.mapY);axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null, IMapControlEvents2_OnMouseDownEventif(axMapControl2.Map.LayerCount>if(e.button==IPointpPoint=newpPoint.PutCoords(e.mapX,e.mapY);axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,elseif(e.button==IEnvelopepEnv=axMapControl2.TrackRectangle();axMapControl1.Extent=pEnv;axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,件在符號(hào)上保持一致,TOCControlTOCControl控件的伙伴控件是MapControl控件,當(dāng)我們將TOCControl控件中圖層刪掉是,MapControl控件中相應(yīng)的圖層也會(huì)被刪掉。我們知 中 有很多功能,如下圖而ArcGISEngine提供的TOCControl控件幾乎沒有提供,那么這些都是需要自己開發(fā)的,在這里我做一個(gè)Form中將選中的這個(gè)圖層Form窗體,在這個(gè)新的窗體上添加GridView控件,并在OnMouseDown事件下添加如下代碼(pGlobalFeatureLayer是我定義的一個(gè)全局變量 if(axMapControl1.LayerCount>esriTOCControlItempItem=newesriTOCControlItem();pGlobalFeatureLayer=newFeatureLayerClass();IBasicMappBasicMap=newMapClass();objectpOther=newobjectpIndex=newaxTOCControl1.HitTest(e.x,e.y,refpItem,refpBasicMap,refpGlobalFeatureLayer,refpOther,refpIndex);if(e.button==context.Show(axTOCControl1,e.x,在上下文菜單的打開屬性表的Clickprivatevoid打開屬性表ToolStripMenuItem_Click(objectsenderEventArgsFormTableFt=newFormTable(pGlobalFeatureLayerasIFeatureLayer);在新的窗體中添加一個(gè)將屬性表顯示到GridViewpublicvoidIFieldspFields=dtGridView.ColumnCount=pFields.FieldCount;for(inti=0;i<pFields.FieldCount;i++stringfldName=pFields.get_Field(i).Name;dtGridView.Columns[i].Name=fldName; IFeatureCursorpFeatureCursor=pFeatureLayer.FeatureClass.Search(null,IFeaturepFeature=pFeatureCursor.NextFeature();while(pFeature!=null)string[]fldValue=newfor(inti=0;i<pFields.FieldCount;stringfldName=if(fldName==pFeatureLayer.FeatureClassfldValue[i]=pFeature=命令,就是當(dāng)用戶單擊時(shí)所產(chǎn)生的操作,比如說(shuō),我們要打開一個(gè)地圖文檔,我們只需要在ToolBarControl控件上使用一個(gè)工具的時(shí)候,我們需要通過(guò)兩ToolBarControlbuddybuddy屬性上。ToolbarControl會(huì)將伙伴控件的CurrentTool屬性設(shè)置為我們用鼠標(biāo)點(diǎn)擊的工具,然后伙伴控件就等著和我們的工具交互。工具控件,這通在ArcGISEngine中,命令是實(shí)現(xiàn)了ICommand接口,在ArcGISEnginICommand使用使用UIDpUID=newpUID.Value=axToolbarControl1.AddItem(pUID -1 0 false -1axEditorToolbar.AddItem("esriControls.ControlsUndoCommand", 0, -1, true, 0,ICommandpUndo=new - ICommandICommand接口中成員實(shí)現(xiàn),因?yàn)檫@個(gè)格式是固定的,Esri提供了相應(yīng)的模板,如下圖:數(shù)hook。publicvoidOnCreateobject這個(gè)hook是一個(gè)object對(duì)象。也就是說(shuō)這兒命令和那個(gè)控件協(xié)作,要看這個(gè)hook傳入的是那種控件。當(dāng)命令對(duì)象宿主到ToolBarControl控件上后就會(huì)立即調(diào)用ICommand.OnCreate方法,同時(shí)會(huì)將ToolBarControlhookToolBarControl控件的伙伴控件協(xié)作。一般要在hookhook協(xié)作,要看這個(gè)命令支不PageLayoutControl控件協(xié)作的,如果我們傳進(jìn)去的是TOCContro控件,那么這個(gè)命令就會(huì)失效,這些話看Esri提usingusingusingSystem.Runtime.InteropServices;usingESRI.ArcGIS.ADF.BaseClasses;usingESRI.ArcGIS.ADF.CATIDs;usingESRI.ArcGIS.Controls;usingESRI.ArcGIS.Carto;usingnamespace//////Summarydescriptionfor///publicsealedclassOpenMxdCommand:BaseCommand#regionCOMRegistrationFunction(s)staticvoidRegisterFunction(Type//RequiredforArcGISComponentCategoryRegistrar//TODO:AddanyCOMregistrationcodestaticvoidUnregisterFunction(Type//RequiredforArcGISComponentCategoryRegistrarsupport//TODO:AddanyCOMunregistrationcode#regionArcGISComponentCategoryRegistrargenerated//////RequiredmethodforArcGISComponentCategoryregistration///Donotmodifythecontentsofthismethodwiththecode///privatestaticvoidArcGISCategoryRegistration(TypestringregKey=string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}"http://////RequiredmethodforArcGISComponentCategoryunregistration///Donotmodifythecontentsofthismethodwiththecode///privatestaticvoidArcGISCategoryUnregistration(TypestringregKey=string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}"IMapControl2pMapControl;publicOpenMxdCommand()//TODO:Definevaluesforthepublicbase.m_category"打開地圖文檔"http://localizabletextbase.m_caption"打開地圖文檔";//localizabletextbase.m_message"打開地圖文檔";//localizabletextbase.m_toolTip"打開地圖文檔";//localizablebase.m_name"打開地圖文檔";//uniqueidnon-localizable(e.g.
//TODO:changebitmapnameifstringbitmapResourceName=GetType().Name+".bmp";base.m_bitmap=newBitmap(GetType(),bitmapResourceName);catch(ExceptionSystem.Diagnostics.Trace.WriteLine(ex.Message,"Invalid#regionOverriddenClass//////Occurswhenthiscommandis//////<paramname="hook">Instanceoftheapplication</param>publicoverridevoidOnCreate(objecthook)if(hook==null)if(hookisIToolbarControlpToolBar=hookasIToolbarControl;pMapControl=pToolBar.BuddyasIMapControl2;elseif(hookisIMapControl2pMapControl=hookas//TODO:Addotherinitialization//////Occurswhenthiscommandis///publicoverridevoid//TODO:AddOpenMxdCommand.OnClick//launchanewOpenFileOpenFileDialogpOpenFileDialog=newOpenFileDialog();pOpenFileDialog.Filter="MapDocuments(*.mxd)|*.mxd";pOpenFileDialog.Multiselect=false;pOpenFileDialog.Title="OpenMapDocument";if(pOpenFileDialog.ShowDialog()==stringdocName=IMapDocumentpMapDoc=new &&pMapControl.LoadMxFile(pOpenFileDialog.FileName,null,//setthefirstmapastheactiveview通過(guò)下面兩句將我們自定義的打開地圖文檔的命令宿主到ToolBarControl上OpenMxdCommandpMxdCommand=newOpenMxdCommand();axToolbarControl1.AddItem(pMxdCommand, -1, 0, false, -1,axToolbarControl1.AddItem(pMxdCommand1,0,false,-1,esriCommandStyles.esriCommandStyleIconOnly);的時(shí)候,OnCreate函數(shù)被執(zhí)行,進(jìn)而對(duì)hookif(hookisIToolbarControlpToolBar=hookasIToolbarControl;pMapControl=pToolBar.BuddyasIMapControl2;ToolbarControlItoolICommand,IToolIToolToolBarControlToolBarControlFormMenueStripprivatevoid文件ToolStripMenuItem_Click(objectsenderEventArgsICommandpMxd=newControlsOpenDocCommandClass();privatevoid查詢ToolStripMenuItem_Click(objectsenderEventArgsICommandpAddData=newControlsAddDataCommandClass();privatevoid空間分析ToolStripMenuItem_Click(objectsenderEventArgsICommandpZoomIn=newControlsMapZoomInToolClass();axMapControl1.CurrentTool=pZoomInasITool;privatevoid縮小ToolStripMenuItem_Click(objectsenderEventArgsICommandpZoomOut=newaxMapControl1.CurrentTool=pZoomOutas通過(guò)運(yùn)行程序,發(fā)現(xiàn)和命令宿主在ToolbarcontrolArcMap中除了在介紹MapControl控件的時(shí)候提到的數(shù)據(jù)視圖,還有另外一種視圖,就是布局視圖ArcMap中的情景,兩個(gè)控件的聯(lián)動(dòng)不僅僅是簡(jiǎn)單切換到MapControl控件,我們應(yīng)該還應(yīng)該能進(jìn)行放大操作而不用重新使用放大這個(gè)工具。當(dāng)存在TOC控件和ToolBar控件的時(shí)候,切換了地圖控件和布局控件,那么這兩個(gè)控件的伙伴控Form中添加TabControlNET中定義一個(gè)類,這個(gè)類用來(lái)實(shí)現(xiàn)這兩個(gè)功能,類的名稱/////////<param///<parampublicControlsSynchronizer(IMapControl3_MapControl ://assigntheclassmemberspMapControl=pPageLayoutControl=//////publicvoidif(pPageLayoutControl==null||pMapControl== MapControlorPageLayoutControlarenotinitialized!");//cachethecurrenttoolofthe //激活MapControlif(pMapActiveTool!=null)pMapControl.CurrentTool=pMapActiveTool;pIsMapControlactive=true;//oneachoftheframeworkcontrols,settheBuddycontroltotheMapControlcatch(Exception //////publicvoidif(pPageLayoutControl==null||pMapControl==thrownewException("ControlsSynchronizer::ActivatePageLayout:\r\nEitherMapControlorPageLayoutControlarenotinitialized!");//cachethecurrenttoolofthe//銷毀MapControl//激活PageLayoutControl pIsMapControlactive=//oneachoftheframeworkcontrols,settheBuddycontroltothecatch(Exception /////////<paramname="buddy">theactivecontrol</param>privatevoidSetBuddies(object_buddy)if(_buddy==thrownewException("ControlsSynchronizer::SetBuddies:\r\nTargetBuddyControlisnotinitialized!");foreach(objectobjinif(objiselseif(objiscatch(Exception/////////<paramname="_NewMap"></param>publicvoidReplaceMap(IMap_NewMap)if(_NewMap== replacementisnotinitialized!");if(pPageLayoutControl==null||pMapControl==thrownewException("ControlsSynchronizer::ReplaceMap:\r\nEitherMapControlorPageLayoutControlarenotinitialized!");//createanewinstanceofIMapscollectionwhichisneededbythePageLayoutIMapspMaps=newMaps();boolbIsMapActive=//callreplacemaponthePageLayoutinordertoreplacethefocus//wemustcallActivatePageLayout,sinceitisthecontrolwecall'ReplaceMaps'//assignthenewmaptotheMapControlpMapControl.Map=_NewMap;//resettheactivetoolspPageLayoutActiveTool=null;pMapActiveTool=null;//makesurethatthelastactivecontrolisactivatedif(bIsMapActive)/////////<paramname="activateMapFirst">trueiftheMapControlsupposedtobeactivatedpublicvoidBindControls(boolif(pPageLayoutControl==null||pMapControl== MapControlorPageLayoutControlarenotinitialized!");IMappNewMap=newMapClass();pNewMap.Name="Map";IMapspMaps=newMaps();//addthenewMapinstancetotheMapscollection//callreplacemaponthePageLayoutinordertoreplacethefocusmap//assignthenewmaptotheMapControlpMapControl.Map=pNewMap;//resettheactivetoolspPageLayoutActiveTool=null;pMapActiveTool=//makesurethatthelastactivecontrolisactivatedif(_ActivateMapFirst)Map控件,這樣的話布局控件是得不到圖的,因此應(yīng)該對(duì)OnClick改動(dòng)下,在這個(gè)里面將map控件和布publicoverridevoid//launchanewOpenFiledialogOpenFileDialogdlg=newOpenFileDialog();dlg.Filter="MapDocuments(*.mxd)|*.mxd";dlg.Multiselect=false;dlg.Title="OpenMapif(dlg.ShowDialog()==stringdocName=IMapDocumentpMapDoc=new &&pMapDoc.Open(docName,//setthefirstmapastheactiveviewIMapmap=pMapDoc.get_Map(0);pControlsSynchronizer.PageLayoutControl.PageLayout=pMapDoc.PageLayout;m_sDocumentPath=在ControlsSynchronizer類中使用的Mapsnamespace//////ImplementationofinterfaceIMapswhichiseventuallyacollectionof///publicclassMaps:IMaps,//classmember-usinginternallyanArrayListtomanagetheMapscollectionprivateArrayListpArray=null;#regionclassconstructorpublicMaps()pArray=new#regionIDisposable//////Disposethe///publicvoidif(pArray!=pArray=null;#regionIMaps//////RemovetheMapatthegiven//////<paramname="Index"></param>publicvoidRemoveAt(intIndex)if(Index>pArray.Count||Index<thrownewException("Maps::RemoveAt:\r\nIndexisoutof//////ResettheMaps///</summary>publicvoidReset()//////GetthenumberofMapsinthe///</summary>publicintCountreturnpublicIMapget_Item(intif(Index>pArray.Count||Index<thrownewException("Maps::get_Item:\r\nIndexisoutofreturnpArray[Index]as//////Removetheinstanceofthegiven//////<paramname="Map"></param>publicvoidRemove(IMapMap)//////CreateanewMap,addittothecollectionandreturnittothe//////publicIMapIMapnewMap=newMapClass();return//////AddthegivenMaptothe//////<paramname="Map"></param>publicvoidAdd(IMapMap)if(Map==thrownewException("Maps::Add:\r\nNewMapismotMap對(duì)象。Map對(duì)象中的圖層對(duì)象,要素選擇集和空間參考等對(duì)象,IMap接口也往往是我IMapMap對(duì)象中的圖層的個(gè)數(shù),可以添加圖層,刪除IMapIMap接口提供了兩個(gè)和查詢相關(guān)的方法IMap.SelectByShape方法和IMap.SelectFeature方法。publicvoidSelectByShapeIGeometryIGeometryShape,ISelectionEnvironmentenv,booljustOneIMap.SelectByShapeMap中的所有圖層中進(jìn)行查詢,這個(gè)方法需要三個(gè)參數(shù),第一個(gè)參數(shù)Geomtry對(duì)象,IMap.SelectByShape在查詢的時(shí)候凡是和我們輸入進(jìn)去的這個(gè)幾何對(duì)象相交的要素都會(huì)查詢出來(lái),但是這有一個(gè)前提就是每一個(gè)要素圖層的Selectabletrue。ISelectionEnvironment,ISelectionEnvironment第三個(gè)參數(shù)是一個(gè)bool我們?cè)贛apControl’IGeometrypGeo=axMapControl1.TrackPolygon();axMapControl1.Map.SelectByShape(pGeo,null,false);publicvoidSelectFeatureILayerIFeature);bool_Bool)IFeatureCursorpFtCursor=_pFeatureLayer.Search(_pQuery,_Bool);IFeaturepFt=pFtCursor.NextFeature();while(pFt!=_pMap.SelectFeature(_pFeatureLayerasILayer,pFt);pFt=pFtCursor.NextFeature();對(duì)象通過(guò)IGraphicsContainer接口來(lái)管理這些元素對(duì)象。ArcGISEngine和PageLayoutIFeatureLayer,IGeoFeatureLayer,ICadFeatureLayer,IRasterLayer。圖層ArcMap將要素類打開后就成為了圖層。IFeatureLayer接口用于管理要素類(Featureclass)IFeatureLayer該接口主要用于控制要素圖層中宇地理相關(guān)的內(nèi)容,如要素類著色和渲染,以及空間范圍等。IGeoFeatureLayer有一個(gè)很重要的屬性IGeoFeatureLayer.Renderer,使用這個(gè)屬性,我們就可以對(duì)空間數(shù)據(jù)Geodatabase是ESRI在ArcInfo8中引入的一種全新的面向?qū)ο蟮目臻g數(shù)據(jù)模型,在物理級(jí)別上空間數(shù)賴于微軟的ACCESS數(shù)據(jù)庫(kù),也只能在windows平臺(tái)上運(yùn)行,除此之外個(gè)人數(shù)據(jù)庫(kù)有容量的限制,最大存SDESDE5中Geodatabase還支持表達(dá)具有不同類型特征的對(duì)象,包括簡(jiǎn)單的物體、地理要素(具有空間信息的對(duì)象類(0bjectclasses)和數(shù)據(jù)集(Featuredatasets)中。ObjectClass可以理解為是一個(gè)在Geodatabase中儲(chǔ)存非空間數(shù)據(jù)的表。而Featureclass是具有相同幾何類型和屬性結(jié)構(gòu)的要素(Feature)的集合。要素?cái)?shù)據(jù)集(Featuredatasets)是共用同一空間參考要素類的集合。要素類(FeatureClass)儲(chǔ)存可以在要素?cái)?shù)據(jù)集(Featuredatasets)內(nèi)部組織簡(jiǎn)單要素,也可以獨(dú)立于要素?cái)?shù)據(jù)集(Featuredatasets)(Featuredatasets)的簡(jiǎn)單的要素類(FeatureClass)稱為獨(dú)立要素類(Featureclass)。存儲(chǔ)拓?fù)湟谾eature的要素類必須在要素?cái)?shù)據(jù)集(Featuredataset)內(nèi),以確保一個(gè)共同的空間參考。在上圖中我們可以看到最頂級(jí)的工作空間。數(shù)據(jù)庫(kù)在ArcGISEngine中被抽象為一個(gè)工作空間工作空間(WokSpace)柵格數(shù)據(jù)集,表等都存儲(chǔ)在這個(gè)工作空間中。工作空間提供了訪問(wèn)內(nèi)部空間和非空間數(shù)據(jù)的方法啊。工作IWorkSpace,IFeatureWorkspace抽象類,也就意味著我們只能使用它的子類來(lái)實(shí)例化一個(gè)對(duì)象,WorkspaceFactory有眾多的子類,我們可OMD圖中獲得,如下圖:在這里說(shuō)明下,shapefileEsri早期的空間數(shù)據(jù)格式,以文件管理,shapefile文件所在的文件夾也被抽象為一個(gè)workspace,相應(yīng)的要的到shapefile,就要用到shapefileworkspacefactory這個(gè)工廠對(duì)象。EnginepublicIWorkspaceGetMDBWorkspace(StringIWorkspaceFactorypWsFac=newAccessWorkspaceFactoryClass();IWorkspacepWs=pWsFac.OpenFromFile(_pGDBName,0);returnpublicIWorkspaceGetFGDBWorkspace(StringIWorkspaceFactorypWsFac=newFileGDBWorkspaceFactoryClass();IWorkspacepWs=pWsFac.OpenFromFile(_pGDBName,0);returnKey-ValueOpen方法中。publicIWorkspaceGetSDEWorkspace(String_pServerIP,String_pInstance,_pUser,String_pPassword,String_pDatabase,String pPropertySet.SetProperty("SERVER",_pServerIP);pPropertySet.SetProperty("INSTANCE",_pInstance);pPropertySet.SetProperty("DATABASE",_pDatabase);pPropertySet.SetProperty("USER",_pUser);pPropertySet.SetProperty("PASSWORD",_pPassword);pPropertySet.SetProperty("VERSION",_pVersion);ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2workspaceFactory; returnworkspaceFactory.Open(pPropertySet,0);SDEArcGISEngine在eodatabae(ataeorkpace中的某一個(gè)要素類,要先獲取數(shù)據(jù)集,然后獲取要素類,其實(shí)通過(guò)工作空間Ieatureorkpac.peneturClasindosabeeatueClasorkpace其實(shí)也是一Iatet這個(gè)接口。在數(shù)據(jù)庫(kù)中一切對(duì)象都可以看做是數(shù)據(jù)集,不管是要素類,還是表,或者柵格數(shù)據(jù),那么怎么區(qū)分我們得到的到底是表,還是要素類?Iatat有一個(gè)很重要的屬性IataeypeIDataset.ype的這個(gè)屬性是一個(gè)枚舉類型的常量,如下圖:publicstringstringOpenFileDialogOpenFilenewOpenFileDialog();OpenFile.Filter="個(gè)人數(shù)據(jù)庫(kù)(MDB)|*.mdb";DialogResultDialogR=OpenFile.ShowDialog();if(DialogR==DialogResult.Cancel)WsFileName=returnprivatevoidbutton2_Click(objectsender,EventArgsstringWsName=if(WsName!=IWorkspaceFactorypWsFt=newAccessWorkspaceFactoryClass();IWorkspacepWs=pWsFt.OpenFromFile(WsName,0); IDatasetpDataset=pEDataset.Next();while(pDataset!=null)if(pDataset.Typeelseif(pDataset.Type==IEnumDatasetpESubDataset=pDataset.Subsets;IDatasetpSubDataset=pESubDataset.Next();while(pSubDataset!=pSubDataset=pDataset=FeatureClassBox.Text=ArcGISEngine提供了一個(gè)IDatasetEdit的接口用來(lái)判斷我們的數(shù)據(jù)是否處于編輯狀態(tài),該接口只有一ArcMap中進(jìn)行編輯的不一定是要素類,或許是表,還可能是幾何網(wǎng)絡(luò),沒關(guān)系,凡ArcMap中進(jìn)行編輯的數(shù)據(jù)都實(shí)現(xiàn)了這個(gè)接口,下圖是實(shí)現(xiàn)該接口的類:publicboolISEdit(IFeatureClassIDatasetEditpDataEdit=pFeatureClassasreturnTableTable存儲(chǔ)在要素?cái)?shù)據(jù)集中(可以嘗試下GeodatasetFullname,用這個(gè)QI到我們要的對(duì)象上。IName對(duì)象是一個(gè)代表性對(duì)象。通過(guò)使用IName對(duì)象,可以訪問(wèn)它所代表的對(duì)象的一些基本屬性,而不用將整個(gè)對(duì)象調(diào)入內(nèi)存。我們用IWorkspace獲得一個(gè)Workspace,那可是會(huì)調(diào)入內(nèi)存的,而IWorkspaceName則不會(huì),除非你用了IWorkspaceName.open.在我看來(lái),那些繼承IName的接口,在數(shù)據(jù)轉(zhuǎn)INameIWorkspaceName也可以打開數(shù)據(jù)庫(kù)。打開一個(gè)數(shù)據(jù)庫(kù),我們要指定它的類型,是個(gè)人數(shù)據(jù)庫(kù),還是文件數(shù)據(jù)庫(kù)。IWorkspaceName的IWorkspaceName.WorkspaceFactoryProgID屬性用于完成這一操作,這個(gè)屬性是一個(gè)枚舉的常量類型publicIWorkspaceGet_Workspace(stringIWorkspaceNamepWorkspaceName=new pWorkspaceName.PathName=_pWorkspacePath;INamepName=pWorkspaceNameasIName;IWorkspacepWorkspace=pName.Open()asIWorkspace;returnpWorkspace;要想刪除一個(gè)要素類,那么必須先得到這個(gè),在得到這個(gè)要素類的時(shí)候,我們要學(xué)習(xí)一個(gè)新的接口IFeatureWorkspaceIFeatureWorkspacePointTestOpenFeatureClassIWorkspaceFactorypWsFt=newAccessWorkspaceFactoryClass();IWorkspacepWs=pWsFt.OpenFromFile(WsName,0);IFeatureWorkspacepFWs=pWsasIFeatureWorkspace;IFeatureClasspFClass=pFWs.OpenFeatureClass("PointTest");privatevoidbutton1_Click(objectsender,EventArgsstringWsName=if(WsNameIWorkspaceFactorypWsFt=newAccessWorkspaceFactoryClass();IWorkspacepWs=pWsFt.OpenFromFile(WsName,0);IFeatureWorkspacepFWs=pWsasIFeatureWorkspace;IFeatureClasspFClass=pFWs.OpenFeatureClass("PointTest");IDatasetpDatset=pFClassasIDataset; Point,如下圖:NET“_2” IGeometryDefEditpGeoDef=newGeometryDefClass();IGeometryDefEditpGeoDefEdit=pGeoDefasIGeometryDefEdit;pGeoDefEdit.GeometryType_2=esriGeometryType.esriGeometryPoint;pGeoDefEdit.SpatialReference_2=pSpatialReference;IFieldspFields=newFieldsClass();IFieldsEditpFieldsEdit=(IFieldsEdit)pFields;IFieldpField=newFieldClass();IFieldEditpFieldEdit=(IFieldEdit)pField;pFieldEdit.Name_2="SHAPE";pFieldEdit.Type_2=esriFieldType.esriFieldTypeGeometry;pFieldEdit.GeometryDef_2=pField=newFieldClass();pFieldEdit=(IFieldEdit)pField;pFieldEdit.Name_2="STCD";pFieldEdit.Type_2=esriFieldType.esriFieldTypeString;pField=newFieldClass();pFieldEdit=(IFieldEdit)pField;pFieldEdit.Name_2="SLM10";pFieldEdit.Type_2=esriFieldType.esriFieldTypeS
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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年智能城市公共交通調(diào)度系統(tǒng)可行性研究報(bào)告
- 2025年即時(shí)配送服務(wù)網(wǎng)絡(luò)建設(shè)項(xiàng)目可行性研究報(bào)告
- 2025年可再生能源研發(fā)項(xiàng)目可行性研究報(bào)告
- 網(wǎng)貸合同解約協(xié)議
- 2025年短視頻平臺(tái)營(yíng)銷效果提升項(xiàng)目可行性研究報(bào)告
- 金蝶數(shù)據(jù)顧問(wèn)崗位面試題集
- 航空公司財(cái)務(wù)主管面試問(wèn)題集
- 市場(chǎng)準(zhǔn)入專員筆試考試題庫(kù)含答案
- 天津港質(zhì)量檢查考核標(biāo)準(zhǔn)
- 2025年關(guān)鍵材料回收與再利用項(xiàng)目可行性研究報(bào)告
- 四川省達(dá)州市達(dá)川中學(xué)2025-2026學(xué)年八年級(jí)上學(xué)期第二次月考數(shù)學(xué)試題(無(wú)答案)
- 2025陜西西安市工會(huì)系統(tǒng)開招聘工會(huì)社會(huì)工作者61人歷年題庫(kù)帶答案解析
- 江蘇省南京市秦淮區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末物理試題
- 外賣平臺(tái)2025年商家協(xié)議
- 2025年高職(鐵道車輛技術(shù))鐵道車輛制動(dòng)試題及答案
- (新教材)2026年人教版八年級(jí)下冊(cè)數(shù)學(xué) 24.4 數(shù)據(jù)的分組 課件
- 2025陜西榆林市榆陽(yáng)區(qū)部分區(qū)屬國(guó)有企業(yè)招聘20人考試筆試模擬試題及答案解析
- 老年慢性病管理及康復(fù)護(hù)理
- 2025廣西自然資源職業(yè)技術(shù)學(xué)院下半年招聘工作人員150人(公共基礎(chǔ)知識(shí))測(cè)試題帶答案解析
- 2026年海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握校ㄓ?jì)算機(jī))考試參考題庫(kù)及答案1套
- 代辦執(zhí)照合同范本
評(píng)論
0/150
提交評(píng)論