版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
環(huán)境GIS的應(yīng)用模式可以分為三種:eq\o\ac(○,1)作為環(huán)境科學(xué)研究工具的應(yīng)用模式;eq\o\ac(○,2)作為環(huán)境管理的應(yīng)用模式eq\o\ac(○,3)作為公眾服務(wù)的應(yīng)用模式;我國的環(huán)保機構(gòu)分為四級管理機制:國家環(huán)??偩帧⑹〖壄h(huán)保局、市級環(huán)保局和縣級環(huán)保局。相應(yīng)地信息系統(tǒng)也分為四個層次:eq\o\ac(○,1)國家級;eq\o\ac(○,2)省級;eq\o\ac(○,3)市級;eq\o\ac(○,4)縣級。環(huán)境GIS涉及的空間信息主要有三大類:eq\o\ac(○,1)污染源空間信息eq\o\ac(○,2)環(huán)境質(zhì)量空間信息eq\o\ac(○,3)自然生態(tài)空間信息。大氣環(huán)境污染數(shù)據(jù)來源有兩類:eq\o\ac(○,1)固定污染源和eq\o\ac(○,2)移動污染源。GIS從總體功能上劃分,大致可分為:數(shù)據(jù)輸入模塊、數(shù)據(jù)處理模塊、空間數(shù)據(jù)庫管理模塊、圖像操作模塊、控件分析模塊、數(shù)字地形模型、制圖輸出模塊、用戶模型工具模塊、應(yīng)用界面模塊等9大功能模塊。應(yīng)用型GIS開發(fā)又可分為獨立開發(fā)、單獨二次開發(fā)和集成二次開發(fā)三種實現(xiàn)方式??諝赓|(zhì)量空間信息系統(tǒng)功能包括:污染源調(diào)查;模型計算;成果表現(xiàn)。 環(huán)境數(shù)據(jù)分類:eq\o\ac(○,1)環(huán)境監(jiān)測數(shù)據(jù);eq\o\ac(○,2)工業(yè)污染與防治數(shù)據(jù);eq\o\ac(○,3)生活及其他污染與防治數(shù)據(jù);eq\o\ac(○,4)自然生態(tài)環(huán)境保護數(shù)據(jù);eq\o\ac(○,5)環(huán)境管理數(shù)據(jù)。環(huán)境監(jiān)測數(shù)據(jù)是環(huán)境GIS的主要數(shù)據(jù)源,而其獲得的主要途徑是通過環(huán)境監(jiān)測體系。目前環(huán)境監(jiān)測大體分為三個類型:eq\o\ac(○,1)要素型;eq\o\ac(○,2)管理型;eq\o\ac(○,3)混合型。GIS與面源模型集成的方法總的來說有兩種,eq\o\ac(○,1)松散集成和eq\o\ac(○,2)緊密集成。軟件生存期的階段劃分:eq\o\ac(○,1)可行性研究與計劃、eq\o\ac(○,2)用戶需求分析、eq\o\ac(○,3)總體設(shè)計、=4\*GB3④詳細(xì)設(shè)計、=5\*GB3⑤實現(xiàn)、=6\*GB3⑥集成測試=7\*GB3⑦確認(rèn)測試和=8\*GB3⑧使用和維護。GIS中常用的數(shù)據(jù)模型有eq\o\ac(○,1)混合模型;eq\o\ac(○,2)擴展模型;eq\o\ac(○,3)面向?qū)ο竽P?。環(huán)境地理信息系統(tǒng)的總體框架14.AE搭建系統(tǒng)框架步驟、重要代碼模型結(jié)構(gòu)地圖顯示模型結(jié)構(gòu)地圖顯示空間查詢分析模塊地圖編輯地圖輸出TOC圖層顯示鷹眼屬性查詢距離查詢空間查詢緩沖區(qū)分析專題圖分析路徑分析圖形編輯屬性編輯打印輸出轉(zhuǎn)換輸出地圖開關(guān)地圖標(biāo)注地圖提示添加控件、設(shè)置控件屬性及設(shè)置控件間關(guān)聯(lián);選擇相關(guān)控件,拖到窗體中相關(guān)位置,1)菜單控件MenuStrip。2)工具條控件ToolbarControl,3)TOCContro,4)MapControl,5)LicenseControl;6)SpitContainer控件添加引用;編譯運行;15、幾個重要接口:屬性、方法1、IMap接口:概念及功能:該接口主要用于管理Map對象中的圖層對象、要素選擇集和空間參考等對象。使用IMap接口,我們可以獲取這個Map對象中的圖層的個數(shù),可以添加圖層,刪除圖層,還可以利用IMap實現(xiàn)查詢的高亮顯示。方法1:IMap.SelectByShape方法:對地圖中的要素進行查詢。PublicvoidSelectByShape(IGeometryShape,ISelectionEnvironmentenv,booljustOne);第一個參數(shù)是一個Geomtry對象,IMap.SelectByShape在查詢的時候凡是和我們輸入進去的這個幾何對象相交的要素都會查詢出來,但是這有一個前提就是每一個要素圖層的Selectable屬性是true。第二個參數(shù)ISelectionEnvironment,該參數(shù)控制著構(gòu)造選擇集的結(jié)果和顯示的方法等。第三個參數(shù)是一個bool值。我們在MapControl’控件中畫一個多邊形的面,查找出和我們這個多邊形面相交的所有圖層中的要素例子:IGeometrypGeo=axMapControl1.TrackPolygon();axMapControl1.Map.SelectByShape(pGeo,null,false);axMapControl1.ActiveView.Refresh();方法2:IMap.SelectFeature方法:將在Map中獲得的一個要素放到這個要素的圖層選擇集中,這個方法有一個很重要的用途就是這個方法能使獲取的要素高亮顯示。PublicvoidSelectFeature(IlayerLayer,IFeatureFeature);舉例:voidSearchHightlight(IMap_pMap,IFeatureLayer_pFeatureLayer,IQueryFilter_pQuery,bool_Bool){IFeatureCursorpFtCursor=_pFeatureLayer.Search(_pQuery,_Bool);IFeaturepFt=pFtCursor.NextFeature();while(pFt!=null){_pMap.SelectFeature(_pFeatureLayerasILayer,pFt);pFt=pFtCursor.NextFeature();}}方法3:
publicvoidAddLayer(IlayerLayer)
AddLayer方法向地圖中添加圖層。使用LayerCount屬性獲得地圖中圖層的總數(shù)。如果map沒有設(shè)置坐標(biāo)系統(tǒng),AddLayer自動設(shè)置地圖的SpatialReference屬性。當(dāng)?shù)貓D的空間參考屬性設(shè)置后,地圖的MapUnits和DistanceUnits屬性也就設(shè)置了。AddLayer同時也設(shè)置layer的空間參考。IMap接口的成員
ActiveGraphicsLayer:活動圖形圖層,如果沒有將創(chuàng)建一個基本memorygraphicslayer。
AddLayer:向地圖中添加單個圖層。
AddLayers:向地圖中添加多個圖層。
AddMapSurround:向地圖中添加mapsurround。
AnnotationEngine:地圖使用的注記(標(biāo)簽)引擎。
AreaOfInterest:地圖的感興趣區(qū)域。
Barriers:barriers列表和標(biāo)簽權(quán)重。
BasicGraphicsLayer:基本圖形層。
ClearLayers:從地圖中移除所有圖層。
ClearMapSurrounds:從地圖中移除所有旁注。
ClearSelection:清除地圖選擇。
ClipBorder:ClipGeometry周圍一個可選邊界。
ClipGeometry:地圖圖層中一個要剪切的形狀。
ComputeDistance:計算地圖上兩個點的距離并返回結(jié)果。
CreateMapSurround:創(chuàng)建并初始化一個mapsurround。從樣式集中指定一個可選樣式。
DelayDrawing:暫停繪制。
DelayEvents:將操作按批組合來減少通知。
DeletLayer:從map中刪除圖層。
DeleteMapSurround:從地圖中刪除mapsurround。
Description:地圖描述。
DistanceUnits:地圖的距離單位。
Expanded:指出地圖是否可以擴張。
FeatureSelection:地圖中選擇的要素。
GetPageSize:獲得地圖的頁面大小。
IsFramed:指出地圖是否在一個框架內(nèi)而不是在整個窗口中繪制。
Layer:給定序號的layer。
LayerCount:地圖中圖層的數(shù)目。
Layers:以uid表明類型的地圖圖層。如果recursive是true,將以layers的形式返回layers。
MapScale:數(shù)字形式的地圖比例尺。
MapSurroundCount:與地圖相關(guān)的旁注數(shù)量。
MapUnits:地圖單位。
MoveLayer:將一個圖層移到其他位置。
Name:地圖名稱。
RecalcFullExtent:重新計算全幅范圍。
ReferenceScale:分?jǐn)?shù)形式的地圖參考比例尺。
SelectByShape:用一個幾何形狀和選擇環(huán)境(可選)在地圖中選擇要素。
SelectFeature:選擇一個要素。
SelectionCount:選擇的要素的數(shù)目。
SetPageSize:設(shè)置地圖(可選)的頁面大小。
SpatialReference:地圖的空間參考。
SpatialReferenceLocked:指出是否允許改變空間參考。
UseSymbolLevels:指出是否使用symbollevels繪制地圖。
AnnotationEngine:map使用的annotion(label)引擎。
AreaOfInterest:地圖的感興趣區(qū)域。2、IGraphicsContainer接口:管理數(shù)據(jù)和地圖元素、對象。AddElementAddanewgraphicelementtothelayer.AddElementsAddnewgraphicelementstothelayer.DeleteAllElementsDeletealltheelements.DeleteElementDeletethegivenelement.UpdateElementThegraphicelement'spropertieshavechanged.3、IActiveView接口IActiveView接口定義了Map對象的數(shù)據(jù)顯示功能,這個接口管理著繪制圖形的顯示范圍。方法PartialRefresh,該方法可以讓視圖對象使用不同的方式來局部刷新以便重新繪制。PublicvoidPartialRefresh(esriViewDrawPhasephase.objectData,IEnvelopeenvelope);ActivateGivesthisviewcontrolofthespecifiedwindow.ClearEmptiestheviewcontents.ContentsChangedCalledbyclientswhenviewobjectsaremodified.DrawDrawstheviewtothespecifieddevicecontext.ExportFrameThedevicerectangletoexport.ExtentThevisibleextentrectangle.FullExtentThefullextentrectangle.GraphicsContainerTheactivegraphicscontainer.HitTestMapReturnsanymapspresentintheviewatthegivenlocation.Returnvaluemaybezeroiftherearenomapsorthecoordinateisnotoveramap.OutputRenderstheviewtothespecifiedDC.PartialRefreshDrawsthespecifiedviewphase.Useanenvelopeofzerotodrawtheentirephase.PrinterChangedCalledbyapplicationwhenprinterchanges.RefreshCausestheentireviewtodraw.ScreenDisplayThescreendisplayusedbytheview.SelectionTheselection.ShowSelectionIndicatesifselectionisvisible.4、ILayer接口:是被圖層(Layer)對象實現(xiàn)的,圖層對象是用來在地圖中顯示空間信息,注意,圖層不含有空間數(shù)據(jù),它只是獲取數(shù)據(jù)的一個引用層而已。圖層對象是一個抽象對象,它定義了所有圖層的公共方法和屬性,它擁有很多子類,如IFeatureLayer,IGeoFeatureLayer,ICadFeatureLayer,IRasterLayer。圖層相當(dāng)于要素的載體,當(dāng)用ArcMap將要素類打開后就成為了圖層。AreaOfInterest
layer的默認(rèn)興趣區(qū)域。
Cached
指出layer是否需要顯示緩存。
Draw
按照drawphase向指定的的display繪制圖層。
MaximumScale
圖層顯示的最大比例尺。
MinimumScale
圖層顯示的最小比例尺。
Name
圖層名字。
ShowTips
指出圖層是否顯示maptips。
SpatialReference
圖層的空間參考。
SupportedDrawPhases
支持drawphases。
TipText
特定位置的地圖提示內(nèi)容。
Valid
指出圖層當(dāng)前是否有效。
Visible
指出圖層是否可視。5、IFeatureLayer接口:用于管理要素類(Featureclass)圖層的信息。方法IFeatureLayer.Search,用于對要素圖層中符合要求的數(shù)據(jù)進行查詢。PublicIFeatureCursorSearch(IQueryFilterqueryFilter,boolrecycling);
如果圖層定義了一個查詢設(shè)置,搜索方法將在滿足條件的要素子集中搜索??梢灾付ㄒ粋€IQueryFilter對象作為參數(shù)進行查詢。
這個Search方法在連接字段上不起作用。如果要素圖層有連接,使用IGeoFeatureLayer::SearchDisplayFeatures方法代替。
不能使用IFeatureLayer::Search來更新要素,而應(yīng)使用IFeatureClass::Update代替。
Recycling指定結(jié)果要素cursor是recycling或non-recycling。True代表recyclingcursor,F(xiàn)alse代表non-recyclingcursor。AreaOfInterest
圖層的默認(rèn)興趣區(qū)域。
Cached
指出圖層是否需要其自己的顯示緩存。
DataSourceType
數(shù)據(jù)源類型。
DisplayField
主要的顯示字段。
Draw
按照給定的phase將layer繪制到特定的display上。
FeatureClass圖層的featureclass。
MaximumScale
圖層顯示的最大比例尺。
MinimumScale
圖層顯示的最小比例尺。
Name
圖層名稱。
ScaleSymbols指出符號是否隨圖層比例尺變化。
Selectable
指出圖層是否可選。
ShowTips
指出圖層是否顯示maptips。
SpatialReference
圖層的空間參考。
SupportedDrawPhase
支持的繪制模式。
TipText
指定位置的Maptiptext。
Valid
指出是否有效。
Visible
指出圖層是否可視。
繼承的接口
ILayer
訪問所有圖層的成員
實現(xiàn)IFeatureLayer的類
CadAnnotationLayer
ESRICadannotation圖層。
CadFeatureLayer
ESRICAD要素圖層類
CoverageAnnotationLayer
ESRIcoverageannotation圖層。
DimensionLayer
dimension圖層的屬性集合。
FDOGraphicsLayer
annotation圖層的屬性集合(要素數(shù)據(jù)對象graphics圖層)
FeatureLayer
要素集合和它們的可視化表達。
GdbRasterCatalogLayer
GeodatabaseRasterCatalog數(shù)據(jù)源和顯示選項。
IMSSubFeatureLayer
IMSSub-FeatureLayer類。
MADtedLayer()
用來控制MADTED目錄顯示的圖層。
MARasterLayer()
用來控制MARPF目錄顯示的圖層。
TmporalFeatureLayer(TrackingAnalyst)
定義TemporalFeatureLayerCOM對象的組件類IDL參數(shù)和屬性。6、IGeoFeaturelayer接口:該接口主要用于控制要素圖層中宇地理相關(guān)的內(nèi)容,如要素類著色和渲染,以及空間范圍等。屬性IGeoFeatureLayer.Renderer,使用這個屬性,我們就可以對空間數(shù)據(jù)符號化。PublicIFeatureRendererRenderer{get;set;}AnnotationPropertiesAnnotationproperties.AnnotationPropertiesIDTheUIDusedforannotationproperties.AreaOfInterestThedefaultareaofinterestforthelayer.CachedIndicatesifthelayerneedsitsowndisplaycache.CurrentMapLevelCurrentmaplevelfordrawingsymbols.DataSourceTypeDatasourcetype.DisplayAnnotationIndicatesifthelayerdisplaysannotation.DisplayFeatureClassFeatureclassusedfordisplayoperations(mayincludejoinedfields).DisplayFieldPrimarydisplayfield.DrawDrawsthelayertothespecifieddisplayforthegivendrawphase.ExclusionSetThesetoffeaturesthatareexcludedfromdrawing.FeatureClassThelayer'sfeatureclass.MaximumScaleMaximumscale(representativefraction)atwhichthelayerwilldisplay.MinimumScaleMinimumscale(representativefraction)atwhichthelayerwilldisplay.NameLayername.RendererRendererusedtodrawthelayer.RendererPropertyPageClassIDClassidofthepropertypagefortherenderer.ScaleSymbolsIndicatesifsymbolsarescaledforthelayer.SearchCreatesacursorbaseduponthesearchcriteria.SearchDisplayFeaturesCreatesacursorfromthedisplayfeatureclassbaseduponthesearchcriteria.SelectableIndicatesiflayerisselectable.ShowTipsIndicatesifthelayershowsmaptips.SpatialReferenceSpatialreferenceforthelayer.SupportedDrawPhasesSupporteddrawphases.TipTextMaptiptextatthespecifiedlocation.ValidIndicatesifthelayeriscurrentlyvalid.VisibleIndicatesifthelayeriscurrentlyvisible.例子://利用IGeoFeatureLayer接口進行相關(guān)設(shè)置IGeoFeatureLayergFeaLayer=this.axMapControl1.Map.get_Layer(0)asIGeoFeatureLayer;if(gFeaLayer==null){return;}//將FeatureLayer對應(yīng)表中的某一字段設(shè)為顯示字段gFeaLayer.DisplayField="Name";//將是否顯示Tip設(shè)置為truegFeaLayer.ShowTips=true;16.ADO.NET數(shù)據(jù)庫查詢步驟、涉及的類,重要代碼步驟:c#利用進行數(shù)據(jù)庫開發(fā)的基本步驟:
1、創(chuàng)建和數(shù)據(jù)庫連接的connection對象。
2、配置DataAdapter對象并創(chuàng)建和操作數(shù)據(jù)集DataSet。
3、將數(shù)據(jù)庫中的表添加到DataSet中。
4、把數(shù)據(jù)集DataSet綁定到DataGrid上。利用DataAdapter的Fill方法把數(shù)據(jù)填充到DataSet,最終的數(shù)據(jù)庫中的數(shù)據(jù)顯示在用戶界面的DataGrid中。1)指定數(shù)據(jù)庫連接:使用連接對象來:選擇連接類型;指定數(shù)據(jù)源;連接到數(shù)據(jù)源,使用ConnectionString屬性指定。stringconnectionStr="DataSource”=localhost;IntegratedSecurity=SSPI;InitialCatalog=northwind";2)指定Command1.
創(chuàng)建數(shù)據(jù)庫連接SqlConnectionconn=newSqlConnection(connString);打開與數(shù)據(jù)庫的連接:conn.Open();2.
定義SQL語句Stringsql=“”;3.
創(chuàng)建Command語句SqlCommandcmd=newSqlCommand(sql,conn);3)創(chuàng)建DataAdapter對象SqlDataAdapter對象名=newSqlDataAdapter(查詢用sql語句,數(shù)據(jù)庫連接);4)創(chuàng)建DataSet對象DataSetdataSet=newDataSet(“可選可不填”);5)將DataSet綁定到DataGridDataGriddataGrid1=newDataGrid();sqlDataAdapter1.Fill(dataSet1,"Customers");sqlDataAdapter2.Fill(dataSet1,"Orders");dataGrid1.DataSource=dataSet1;6)在VisualStudio.NET中使用數(shù)據(jù)向?qū)?)執(zhí)行查詢:下面的示例程序完成的功能是訪問sqlserver數(shù)據(jù)庫,并使用datareader從northwind數(shù)據(jù)中讀取記錄,并將查詢結(jié)果通過控制臺輸出。程序代碼
代碼
usingSystem;usingSystem.Data;usingSystem.Data.SqlClient;namespaceReadDataFromDB{classClass1{staticvoidMain(string[]args){stringmyconn="DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=Northwind";//需要執(zhí)行的SQL語句stringmysql="selectorderID,CustomerIDfromorderswhereCustomerID='CHOPS'";//打開數(shù)據(jù)庫連接。
SqlConnectionmyconnection=newSqlConnection(myconn);
myconnection.Open();
//創(chuàng)建SqlCommand對象
SqlCommandmycommand=new(mysql,myconnection);
//通過SqlCommand的ExecuteReader()方法構(gòu)造DataReader對象。
SqlDataReadermyreader=mycommand.ExecuteReader();while(myreader.read()){Console.WriteLine(myreader.GetInt32(0)+","+myreader.GetString(1));}myreader.Close();myconnection.Close();}}}使用DataReader檢索數(shù)據(jù)的步驟:1、創(chuàng)建Command對象2、調(diào)用ExecuteReader()創(chuàng)建DataReader對象3、使用DataReader的Read()方法逐行讀取數(shù)據(jù)4、讀取某列的數(shù)據(jù),(type)dataReader[]5、關(guān)閉DataReader對象stringsql="SELECTStudentNameFROMStudentWHEREStudentNameLIKE'李%'";SqlCommandcommand=newSqlCommand(sql,connection);connection.Open();SqlDataReaderdataReader=command.ExecuteReader();Console.WriteLine("查詢結(jié)果:");while(dataReader.Read()){Console.WriteLine((string)dataReader["StudentName"]);}dataReader.Close();對數(shù)據(jù)庫中的數(shù)據(jù)增刪改(使用Command對象的ExecuteNonQuery()方法)ExecuteNonQuery()方法用于執(zhí)行指定的SQL語句,如:update、insert、delete,它返回的是受SQL語句影響的行數(shù)使用Command對象的ExecuteNonQuery()方法的步驟如下:1.
創(chuàng)建Connection對象2.
定義要執(zhí)行的SQL語句3.
創(chuàng)建Command對象4.
執(zhí)行ExecuteNonQuery()方法5.
根據(jù)返回結(jié)果,進行后續(xù)處理ADO.NET的數(shù)據(jù)訪問對象是以下幾個:
1、Connection對象:與數(shù)據(jù)源建立連接,連接sqlserver7.0或更新版本數(shù)據(jù)庫用SqlConnection,連接OLEDB數(shù)據(jù)源使用OledbConnection.
2、Command對象:對數(shù)據(jù)源執(zhí)行SQL命令并返回結(jié)果,SQLServer7.0或更新版本用SqlCommand,OLEDB數(shù)據(jù)源使用OledbCommand.
3、DataReader對象:讀取數(shù)據(jù)源的數(shù)據(jù),只能將數(shù)據(jù)源的數(shù)據(jù)從頭到尾依次讀出,Sqlserver7.0或以上版本使用SqlDataReader,Oledb數(shù)據(jù)源使用OledbReader
4、DataAdapter對象:對數(shù)據(jù)源執(zhí)行操作并返回結(jié)果,在DataSet與數(shù)據(jù)源之間建立通信,將數(shù)據(jù)源中的數(shù)據(jù)寫入DataSet,或根據(jù)DataSet中的數(shù)據(jù)必定數(shù)據(jù)源。Sqlserver7.0或以上版本使用SqlDataAdapter,Oledb數(shù)據(jù)源使用OledbAdpater.
5、DataSet對象:服務(wù)器內(nèi)存中的數(shù)據(jù)庫
6、DataView對象:用于顯示DataSet中的數(shù)據(jù)#region菜單欄打開地圖文檔IMapDocumentpMapDoc;privatevoid打開ToolStripMenuItem_Click(objectsender,EventArgse){System.Windows.Forms.OpenFileDialogopenFileDialog1;openFileDialog1=newOpenFileDialog();openFileDialog1.Title="OpenMapDocument";openFileDialog1.Filter="MapDocuments(*.mxd)|*.mxd";openFileDialog1.ShowDialog();stringsFilePath=openFileDialog1.FileName;if(axMapControl1.CheckMxFile(sFilePath)){pMapDoc=newMapDocumentClass();axMapControl1.MousePointer=esriControlsMousePointer.esriPointerHourglass;if(sFilePath=="")return;//將數(shù)據(jù)載入pMapDocument并與map控件聯(lián)系起來pMapDoc.Open(sFilePath,"");//IMapDocument對象中可能有多個Map對象,遍歷每個map對象for(inti=0;i<pMapDoc.MapCount;i++){axMapControl1.Map=pMapDoc.get_Map(i);}axMapControl1.MousePointer=esriControlsMousePointer.esriPointerDefault;}else{MessageBox.Show(sFilePath+"不是有效的地圖文檔");return;}//刷新地圖axMapControl1.Refresh();}#endregion#region菜單欄保存地圖文檔privatevoid保存ToolStripMenuItem_Click(objectsender,EventArgse){try{//判斷pMapDocument是否為空,否則將取消保存if(pMapDoc==null){//判斷pMapDocument是否為空,//獲取pMapDocument對象IMxdContentspMxdC;pMxdC=axMapControl1.MapasIMxdContents;IMapDocumentpMapDocument=newMapDocumentClass();//獲取保存路徑System.Windows.Forms.SaveFileDialogsaveFileDialog1;saveFileDialog1=newSaveFileDialog();saveFileDialog1.Filter="mxd文件(*.mxd)|*.mxd";saveFileDialog1.Title="保存";DialogResultpDialogResult=saveFileDialog1.ShowDialog();if(pDialogResult!=DialogResult.OK)return;pMapDocument.New(saveFileDialog1.FileName);pMapDocument.ReplaceContents(pMxdC);//保存地圖文檔pMapDocument.Save(true,true);MessageBox.Show("地圖文檔保存成功!");}else//檢查地圖文檔是否是只讀{if(pMapDoc.get_IsReadOnly(pMapDoc.DocumentFilename)==true){MessageBox.Show("本地圖文檔是只讀的,不能保存!");return;}}pMapDoc.Save(pMapDoc.UsesRelativePaths,true);MessageBox.Show("地圖文檔保存成功!");}catch(Exceptionex){MessageBox.Show(ex.Message);}}#endregionprivatevoidaxMapControl1_OnMouseDown(objectsender,IMapControlEvents2_OnMouseDownEvente){if(bool_圖查屬性){ILayerpLayer;IFeatureLayerpFL;IFeatureSelectionpFeatureSelection;IEnvelopepEnv;IGeometrypGeometry;ISpatialFilterpSpatialFilter;ISelectionSetpSelectionSet;IEnumIDspEnumIDs;IFeaturepFeature;pEnv=newEnvelopeClass();doubleext=0;IEnvelopemapExt=this.axMapControl1.Extent;intmapWidth=this.axMapControl1.Right-this.axMapControl1.Left;ext=5*(mapExt.XMax-mapExt.XMin)/mapWidth;pEnv.PutCoords(e.mapX-ext,e.mapY-ext,e.mapX+ext,e.mapY+ext);pGeometry=pEnvasIGeometry;pSpatialFilter=newSpatialFilterClass();pSpatialFilter.Geometry=pGeometry;pSpatialFilter.SpatialRel=esriSpatialRelEnum.esriSpatialRelIntersects;stringmess="";for(inti=0;i<this.axMapControl1.LayerCount;i++){pLayer=this.axMapControl1.get_Layer(i);pFL=(IFeatureLayer)pLayer;if(pFL.Visible&&pFL.Selectable){pFeatureSelection=pFLasIFeatureSelection;pFeatureSelection.Clear();pFeatureSelection.SelectFeatures(pSpatialFilter,esriSelectionResultEnum.esriSelectionResultNew,true);pSelectionSet=pFeatureSelection.SelectionSet;if(pSelectionSet.Count>0){mess+=""+pFL.Name+"\r\n";pEnumIDs=pSelectionSet.IDs;longid=pEnumIDs.Next();while(id!=-1){pFeature=pFL.FeatureClass.GetFeature((int)id);for(intj=0;j<pFeature.Fields.FieldCount;j++){mess+=""+pFeature.Fields.get_Field(j).Name+":"+pFeature.get_Value(j).ToString()+"\r\n";}id=pEnumIDs.Next();}}}}axMapControl1.MousePointer=esriControlsMousePointer.esriPointerDefault;MessageBox.Show(mess);bool_圖查屬性=false;}}#endregionForm1:publicILayergetLayer=null;privatevoidaxTOCControl1_OnMouseDown(objectsender,ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouseDownEvente){esriTOCControlItemitem=esriTOCControlItem.esriTOCControlItemNone;IBasicMapmap=null;ILayerlayer=null;objectother=null;objectindex=null;axTOCControl1.HitTest(e.x,e.y,refitem,refmap,reflayer,refother,refindex);if(e.button==2){switch(item){caseesriTOCControlItem.esriTOCControlItemLayer:{this.getLayer=layer;TOC右鍵菜單.Show(this.axTOCControl1,e.x,e.y);break;}}}}privatevoid屬性表ToolStripMenuItem_Click(objectsender,EventArgse){new屬性表(this).ShowDialog();}屬性表:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingESRI.ArcGIS.Carto;usingESRI.ArcGIS.Controls;usingESRI.ArcGIS.Geodatabase;usingESRI.ArcGIS.Geometry;namespace項目設(shè)計{publicpartialclass屬性表:Form{privateForm1mainform=null;public屬性表(Form1mainform)
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 唐詩《墨梅》課件
- 經(jīng)營杠桿 課件
- 西京學(xué)院《數(shù)字邏輯與數(shù)字電路》2022-2023學(xué)年期末試卷
- 幼兒園小班音樂 《大魚和小魚》課件
- 西京學(xué)院《建設(shè)法規(guī)》2022-2023學(xué)年第一學(xué)期期末試卷
- HF均相離子交換膜
- 西京學(xué)院《廣告攝影與攝像》2023-2024學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《房地產(chǎn)開發(fā)經(jīng)營與管理》2022-2023學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《中國社會生活史》2023-2024學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《土建基礎(chǔ)》2022-2023學(xué)年第一學(xué)期期末試卷
- 安全交底模板(完整版)
- WS-T 390-2012 醫(yī)院急診科規(guī)范化流程
- 心源性卒中診斷和治療
- 鋼棧橋及平臺檢查驗收標(biāo)準(zhǔn)
- 污水處理工程監(jiān)理大綱(附多圖)
- 人教版八年級上冊英語全冊教案(完整版)教學(xué)設(shè)計含教學(xué)反思
- 保潔服務(wù)技能比武方案
- 醫(yī)療機構(gòu)腸道門診工作自查用表參考范本
- T∕CGMA 033001-2018 壓縮空氣站能效分級指南
- 《汽車維護》教案全套 課程單元設(shè)計
- 有創(chuàng)呼吸機講義PPT通用課件
評論
0/150
提交評論