小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C#+AO中調(diào)用ArcToolbox中自定義的模型

 五行和諧 2014-10-29

 

我們知道,可以通過ArcGIS提供的Geoprocessing工具調(diào)用ArcToolbox中提供的各類工具,然而,如果是調(diào)用自定義的模型該如何設(shè)置?

示例:根據(jù)高程點(diǎn)插值為面,然后進(jìn)行坡度分析,最后以15度為界限進(jìn)行重分類。

在ArcGIS中ArcToolbox中新建模型,然后使用C#調(diào)用該模型。

開發(fā)環(huán)境:VS2010,ArcGIS10.1,ArcObject10.1

1.在ArcGIS中新建模型

首先,在ArcToolbox中新建工具箱,然后在該工具箱新建模型,如圖1所示。

圖1 新建模型

 然后,添加工具到該模型中,搜索IDW,Slope,Reclassify到該模型中,然后進(jìn)行連接及參數(shù)設(shè)置,IDW右鍵,Make Variable,F(xiàn)rom Parammeter,Input point features,即完成添加輸入?yún)?shù)。雙擊Reclassify,在Reclassification中設(shè)置重分類的屬性,如圖2所示。

圖2 Reclassify中Reclassification的設(shè)置

需要注意的事,在輸入Old values時(shí),”-”前后需添加空格,而且最后一行NoData也是要添加的,否則會(huì)出現(xiàn)如圖3所示錯(cuò)誤。

圖3 輸入Old values時(shí)未輸入空格顯示的錯(cuò)誤提示

最后,在Input point features和Output raster(3)分別右鍵選擇Model Parameter命令,右上角出現(xiàn)“p”即為設(shè)置成功。

至此,自定義建模完成,在ArcGIS中運(yùn)行成功無誤后便可進(jìn)入下一步,調(diào)用自定義模型。

 

2.調(diào)用自定義模型

VS2010中,設(shè)計(jì)界面如圖4所示。

圖4 設(shè)計(jì)界面圖

引用命名空間:

ESRI.ArcGIS.AnalysisTools

ESRI.ArcGIS.Geoprocessor

ESRI.ArcGIS.System

ESRI.ArcGIS.Version

代碼中加入:

using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.esriSystem;

 

圖5 錯(cuò)誤一

當(dāng)出現(xiàn)如圖5所示錯(cuò)誤時(shí),解決辦法如下:

復(fù)制代碼
 1     static class Program
 2     {
 3         /// <summary>
 4         /// 應(yīng)用程序的主入口點(diǎn)。
 5         /// </summary>
 6         [STAThread]
 7         static void Main()
 8         {
 9             Application.EnableVisualStyles();
10             Application.SetCompatibleTextRenderingDefault(false);
11             ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
12             Application.Run(new Form1());
13         }
14     }
復(fù)制代碼

即在Program.cs中添加ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);

圖6 錯(cuò)誤二

解決辦法為:Form1中添加License授權(quán)代碼

1 IAoInitialize pAoInitialize = new AoInitializeClass();
2 esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable;
3 licenseStatus = pAoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
4  pAoInitialize.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst);

至此,整個(gè)應(yīng)用程序運(yùn)行成功!效果如圖7所示。

圖7 運(yùn)行結(jié)果圖

最后,附上整個(gè)應(yīng)用程序的代碼:

復(fù)制代碼
 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 
10 using ESRI.ArcGIS.Geoprocessor;
11 using ESRI.ArcGIS.esriSystem;
12 
13 namespace CallModel
14 {
15     public partial class Form1 : Form
16     {
17         public Form1()
18         {
19             IAoInitialize pAoInitialize = new AoInitializeClass();
20             esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable;
21             licenseStatus = pAoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
22             pAoInitialize.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst);
23 
24             InitializeComponent();
25         }
26 
27         private void Form1_Load(object sender, EventArgs e)
28         {
29 
30         }
31 
32         private void button1_Click(object sender, EventArgs e)
33         {
34             OpenFileDialog openFileDialog = new OpenFileDialog();
35             openFileDialog.Title = "打開文件";
36             openFileDialog.Filter = "(shp文件)*.shp|*.shp";
37             if (openFileDialog.ShowDialog() == DialogResult.OK)
38             {
39                 textBox1.Text = openFileDialog.FileName;
40             }
41         }
42 
43         private void button2_Click(object sender, EventArgs e)
44         {
45             SaveFileDialog saveDialog = new SaveFileDialog();
46             saveDialog.Title = "保存文件";
47             saveDialog.Filter = "(tif文件)*.tif|*.tif|(img文件)*.img|*.img";
48             if (saveDialog.ShowDialog() == DialogResult.OK)
49             {
50                 textBox2.Text = saveDialog.FileName;
51             }
52         }
53 
54         private void button3_Click(object sender, EventArgs e)
55         {
56             Geoprocessor gp = new Geoprocessor();
57             gp.OverwriteOutput = true;
58 
59             gp.AddToolbox(@"D:\Program Files\ArcGIS\Desktop10.1\ArcToolbox\Toolboxes\MyToolbar.tbx");
60             IVariantArray parameters = new VarArrayClass();
61             parameters.Add(textBox1.Text.ToString().Trim());
62             parameters.Add(textBox2.Text.ToString().Trim());
63             gp.Execute("Model", parameters, null);
64             MessageBox.Show("調(diào)用成功!", "提示");
65         }
66 
67         private void button4_Click(object sender, EventArgs e)
68         {
69             this.Close();
70             //System.Environment.Exit(System.Environment.ExitCode);終止程序方式二
71             //Application.Exit();終止程序方式三
72         }
73     }
74 }
復(fù)制代碼

 

 

 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多