GIS二次開發(fā)(B)實(shí)驗(yàn)報告_第1頁
GIS二次開發(fā)(B)實(shí)驗(yàn)報告_第2頁
GIS二次開發(fā)(B)實(shí)驗(yàn)報告_第3頁
GIS二次開發(fā)(B)實(shí)驗(yàn)報告_第4頁
GIS二次開發(fā)(B)實(shí)驗(yàn)報告_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

GIS二次開發(fā)(B)實(shí)驗(yàn)報告二〇一五年11月3日目錄1 實(shí)驗(yàn)一:AOI書簽開發(fā) 11.1 實(shí)驗(yàn)?zāi)康?11.2 實(shí)驗(yàn)內(nèi)容 11.3 實(shí)驗(yàn)步驟與結(jié)果 12 實(shí)驗(yàn)二:地圖數(shù)據(jù)組織與訪問 82.1 實(shí)驗(yàn)?zāi)康?82.2 實(shí)驗(yàn)內(nèi)容 82.3 實(shí)驗(yàn)步驟與結(jié)果 83 實(shí)驗(yàn)三:地圖渲染與制圖輸出 163.1 實(shí)驗(yàn)?zāi)康?163.2 實(shí)驗(yàn)內(nèi)容 163.3 實(shí)驗(yàn)步驟結(jié)果 164 實(shí)驗(yàn)總結(jié) 23PAGE2/23實(shí)驗(yàn)一:AOI書簽開發(fā)實(shí)驗(yàn)?zāi)康恼莆誂OI書簽程序開發(fā)實(shí)驗(yàn)內(nèi)容實(shí)現(xiàn)AOI書簽的創(chuàng)建實(shí)現(xiàn)AOI書簽的調(diào)用實(shí)驗(yàn)步驟與結(jié)果publicvoidcreatebookmark(stringsbookmarkname)//參數(shù)為書簽名{//通過iaolbookmark接口創(chuàng)建一個變量,其類型為aoibookmark,保存當(dāng)前地圖范圍。IAOIBookmarkaoibookmark=newAOIBookmarkClass();if(aoibookmark!=null){aoibookmark.Location=axMapControl1.ActiveView.Extent;aoibookmark.Name=sbookmarkname;}//通過imapbookmarks接口訪問當(dāng)前地圖,并向地圖中加入新建書簽IMapBookmarksbookmarks=axMapControl1.MapasIMapBookmarks;if(bookmarks!=null){bookmarks.AddBookmark(aoibookmark);}cbbookmarklist.Items.Add(aoibookmark.Name);}}}namespacexy{publicpartialclassAdmitBookmarkName:Form{publicMainFormm_frmMain;publicAdmitBookmarkName(){InitializeComponent();}publicAdmitBookmarkName(MainFormfrm){InitializeComponent();if(frm!=null){m_frmMain=frm;}}//“確認(rèn)”按鈕的“點(diǎn)擊”事件響應(yīng)函數(shù),用于創(chuàng)建書簽privatevoidbtnAdmit_Click(objectsender,EventArgse){if(m_frmMain!=null&&tbBookmarkName.Text==""){m_frmMain.createbookmark(tbBookmarkName.Text);}this.Close();}}}

實(shí)驗(yàn)二:地圖數(shù)據(jù)組織與訪問實(shí)驗(yàn)?zāi)康牧私釧rcGISEngine中地圖數(shù)據(jù)的組織結(jié)構(gòu)掌握ArcGISEngine地圖數(shù)據(jù)訪問方法實(shí)驗(yàn)內(nèi)容編寫“數(shù)據(jù)操作”類利用DataGridView控件展示Continents圖層的序號和名稱字段實(shí)驗(yàn)步驟與結(jié)果初始化窗口usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceMapControlApplication1{publicpartialclassDataboard:Form{publicDataboard(){InitializeComponent();}publicDataboard(stringsDataName,DataTabledataTable){//初始化窗體及控件。InitializeComponent();//設(shè)置文本框中的文本和數(shù)據(jù)網(wǎng)格視圖的數(shù)據(jù)源。tbDataName.Text=sDataName;dataGridView1.DataSource=dataTable;}privatevoidDataboard_Load(objectsender,EventArgse){}privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse){}}}引用一個各種類usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data;usingESRI.ArcGIS.Carto;usingESRI.ArcGIS.Geometry;usingESRI.ArcGIS.Geodatabase;usingESRI.ArcGIS.DataSourcesFile;namespaceMapControlApplication1{classDataOperator{//保存當(dāng)前地圖對象publicIMapm_map;//用于傳入當(dāng)前地圖對象publicDataOperator(IMapmap){m_map=map;}publicILayerGetLaybyName(stringsLayerName){//判斷圖層名或地圖對象是否為空。若為空,函數(shù)返回空。if(sLayerName==""&&m_map==null){returnnull;}//對地圖對象中的所有圖層進(jìn)行遍歷。若某一圖層的名稱與指定圖層名相同,則返//回圖層。for(inti=0;i<m_map.LayerCount;i++){if(m_map.get_Layer(i).Name==sLayerName){returnm_map.get_Layer(i);}}//若地圖對象中的所有圖層名均與指定圖層名不匹配,函數(shù)返回值為空。returnnull;}publicDataTableGetContinentsNames(){//獲取Continents圖層,利用IFeatureLayer接口訪問,并判斷是否成功,若失敗函數(shù)返回空ILayerlayer=GetLaybyName("Continents");IFeatureLayerfeatureLayer=layerasIFeatureLayer;if(featureLayer==null){returnnull;}//調(diào)用IFeatureLayer接口的seach方法,獲取是否成功獲取第一個要素。若失敗,函數(shù)返回空。IFeaturefeature;IFeatureCursorfeatureCursor=featureLayer.Search(null,false);feature=featureCursor.NextFeature();if(feature==null){returnnull;}//新建DataTable類型對象,用于函數(shù)返回。DataTabledataTable=newDataTable();//新建DataColumn類型對象,分別保存各個州的序號的名稱。設(shè)置完畢后,加入datatable的列集合DataColumndataColumn=newDataColumn();dataColumn.ColumnName="序號";dataColumn.DataType=System.Type.GetType("System.Int32");dataTable.Columns.Add(dataColumn);dataColumn=newDataColumn();dataColumn.ColumnName="名稱";dataColumn.DataType=System.Type.GetType("System.String");dataTable.Columns.Add(dataColumn);//對圖層中的要素進(jìn)行遍歷。每獲取一個要素,就關(guān)聯(lián)datatable的下一個datarow,DataRowdataRow;while(feature!=null){dataRow=dataTable.NewRow();dataRow[0]=feature.get_Value(0);dataRow[1]=feature.get_Value(2);dataTable.Rows.Add(dataRow);feature=featureCursor.NextFeature();}//返回設(shè)置好的數(shù)據(jù)表。returndataTable;}}}在主窗體中加入代碼,并運(yùn)行privatevoidmiAccessData_Click(objectsender,EventArgse){DataOperatordataOperator=newDataOperator(axMapControl1.Map);DataboarddataBord=newDataboard("各大洲名",dataOperator.GetContinentsNames());//運(yùn)行載有數(shù)據(jù)的“數(shù)據(jù)展示臺”窗體對象。dataBord.Show();}

實(shí)驗(yàn)三:地圖渲染與制圖輸出實(shí)驗(yàn)?zāi)康牧私獾貓D符號的分類與可視化過程掌握地圖符號的渲染方法實(shí)驗(yàn)內(nèi)容編寫“地圖編制”類,添加成員函數(shù)實(shí)現(xiàn)獲取地圖渲染器信息功能實(shí)現(xiàn)地圖的簡單符號渲染實(shí)驗(yàn)步驟結(jié)果

C#Code

private

void

簡單渲染圖層ToolStripMenuItem1_Click(object

sender,

EventArgs

e)

{

dataoperator

dataOperator

=

new

dataoperator(axMapControl1.Map);

ILayer

layer

=

dataOperator.getlayerbyname("World

Cities");

IRgbColor

rgbColor

=

new

RgbColorClass();

rgbColor.Blue

=

0;

rgbColor.Red

=

255;

rgbColor.Green

=

0;

IColor

color

=

rgbColor

as

IColor;

ISymbol

symbol

=

MapComposer.getsymbolfromlayer(layer);

bool

res

=

MapComposer.RenderSimply(layer,

color);

if(res)

{

axMapControl1.ActiveView.ContentsChanged();

axMapControl1.ActiveView.Refresh();

簡單渲染圖層ToolStripMenuItem.Enabled

=

false;

}

else

{

MessageBox.Show("簡單渲染圖層失敗");

}

}主窗體新建渲染圖層菜單,并新建子菜單

C#Code

private

void

獲取渲染器信息ToolStripMenuItem_Click(object

sender,

EventArgs

e)

{

dataoperator

dataOperator

=

new

dataoperator(axMapControl1.Map);

ILayer

layer

=

dataOperator.getlayerbyname("World

Cities");

MessageBox.Show(MapComposer.getrendertypebylayer(layer));

}新建MapComposer類并輸入以下代碼

C#Code

using

System;

using

System.Collections.Generic;

using

System.Linq;

using

System.Text;

using

ESRI.ArcGIS.esriSystem;

using

ESRI.ArcGIS.Carto;

using

ESRI.ArcGIS.Controls;

using

ESRI.ArcGIS.ADF;

using

ESRI.ArcGIS.SystemUI;

using

ESRI.ArcGIS.Geometry;

using

ESRI.ArcGIS.Display;

using

ESRI.ArcGIS.Geodatabase;

namespace

MapControlApplication1

{

class

MapComposer

{

public

static

string

getrendertypebylayer(ILayer

layer)

{

if(layer

==

null)

return

"獲取失敗";

IFeatureLayer

ftly

=

(IFeatureLayer)layer;

IGeoFeatureLayer

gftly

=

(IGeoFeatureLayer)layer;

IFeatureRenderer

ftren

=

gftly.Renderer;

if(ftren

is

ISimpleRenderer)

return

"ISimpleRenderer";

else

if(ftren

is

IUniqueValueRenderer)

return

"IUniqueValueRenderer";

else

if(ftren

is

IDotDensityRenderer)

return

"IDotDensityRenderer";

else

if(ftren

is

IChartRenderer)

return

"IChartRenderer";

else

if(ftren

is

IProportionalSymbolRenderer)

return

"IProportionalSymbolRenderer";

return

"未知或者獲取渲染器失敗";

}

public

static

ISymbol

getsymbolfromlayer(ILayer

layer)

{

if(layer

==

null)

return

null;

IFeatureLayer

ftly

=

(IFeatureLayer)layer;

IFeatureCursor

ftcs

=

ftly.Search(null,

false);

IFeature

ft

=

ftcs.NextFeature();

if(ft

==

null)

return

null;

IGeoFeatureLayer

gftly

=

ftly

as

IGeoFeatureLayer;

IFeatureRenderer

ftren

=

gftly.Renderer;

if(ftren

==

null)

return

null;

ISymbol

syb

=

ftren.get_SymbolByFeature(ft);

return

syb;

}

public

static

bool

RenderSimply(ILayer

layer,

IColor

color)

{

if(layer

==

null

||

color

==

null)

return

false;

ISymbol

symbol

=

getsymbolfromlayer(layer);

if(symbol

==

null)

return

false;

IFeatureLayer

featureLayer

=

layer

as

IFeatureLayer;

IFeatureClass

featureClass

=

featureLayer.FeatureClass;

if(featureClass

==

null)

return

false;

esriGeometryType

geoType

=

featureClass.ShapeType;

switch(geoType)

{

case

esriGeometryType.esriGeometryPoint:

{

IMarkerSymbol

markerSymbol

=

symbol

as

IMarkerSymbol;

markerSymbol.Color

=

color;

break;

}

case

esriGeometryType.esriGeometryMultipoint:

{

IMarkerSymbol

markerSymbol

=

symbol

as

IMarkerSymbol;

break;

}

case

esriGeometryType.esriGeometryPolyline:

{

ISimpleLineSymbol

simpleLineSymbol

=

symbol

as

ISimpleLineSymbol;

simpleLineSymbol.Color

=

color;

break;

}

case

esriGeometryType.esriGeometryPolygon:

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論