Arcengine实现创建网络数据集札记(三)
转自:http://www.cnblogs.com/chuzhouGIS/p/3576183.html
后记
下面给出项目中用到的自定义的封装类。
AE许可初始化封装类:
1 public class AELicenseChecker
2
3 {
4
5 private static volatile AELicenseChecker _instance = null;
6
7 private static readonly object lockHelper = new object();
8
9
10
11 //AE许可对象
12
13 private IAoInitialize _aoInitialize = null;
14
15
16
17 private AELicenseChecker()
18
19 {
20
21 ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
22
23 }
24
25
26
27 /// <summary>
28
29 /// 单例对象
30
31 /// </summary>
32
33 /// <returns></returns>
34
35 public static AELicenseChecker CreateInstance()
36
37 {
38
39 if (_instance == null)
40
41 {
42
43 lock (lockHelper)
44
45 {
46
47 if (_instance == null)
48
49 _instance = new AELicenseChecker();
50
51 }
52
53 }
54
55 return _instance;
56
57 }
58
59 /// <summary>
60
61 /// 初始化许可
62
63 /// </summary>
64
65 /// <param name="pruductcode">产品类型</param>
66
67 public void InitApplicationwithProductCode(esriLicenseProductCode pruductcode)
68
69 {
70
71 try
72
73 {
74
75 if (_aoInitialize == null)
76
77 _aoInitialize = new AoInitializeClass();
78
79
80
81 ESRI.ArcGIS.esriSystem.esriLicenseStatus licenseStatus = (ESRI.ArcGIS.esriSystem.esriLicenseStatus)_aoInitialize.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
82
83 if (licenseStatus == esriLicenseStatus.esriLicenseAvailable)
84
85 {
86
87 licenseStatus = (esriLicenseStatus)_aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
88
89 if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut)
90
91 {
92
93 throw new Exception("没有ArcEngine中的GDBEdit许可!");
94
95 }
96
97 }
98
99 else
100
101 {
102
103 throw new Exception("没有ArcEngine中的GDBEdit许可!");
104
105 }
106
107
108
109 _aoInitialize.Initialize(pruductcode);
110
111 }
112
113 catch (Exception ex)
114
115 {
116
117
118
119 throw ex;
120
121 }
122
123
124
125 }
126
127
128
129 /// <summary>
130
131 /// 停止许可对象
132
133 /// </summary>
134
135 /// <param name="ExtensionCode">扩展类型,可选</param>
136
137 public void ShutdownApplication(params esriLicenseExtensionCode[] ExtensionCodes)
138
139 {
140
141 try
142
143 {
144
145 if (_aoInitialize == null) return;
146
147
148
149 if (ExtensionCodes.Length >=1)
150
151 {
152
153 esriLicenseExtensionCode ExtensionCode = ExtensionCodes[0];
154
155 _aoInitialize.CheckInExtension(ExtensionCode);
156
157 }
158
159
160
161 //关闭 AoInitilaize对象
162
163 _aoInitialize.Shutdown();
164
165 _aoInitialize = null;
166
167 }
168
169 catch (Exception ex)
170
171 {
172
173 throw ex;
174
175
176
177 }
178
179 }
180
181
182
183 /// <summary>
184
185 /// 初始化带扩展的许可
186
187 /// </summary>
188
189 /// <param name="pruductcode">产品类型</param>
190
191 /// <param name="ExtensionCode">扩展类型</param>
192
193 public void InitApplicationwithExtensionCode(esriLicenseProductCode pruductcode, esriLicenseExtensionCode ExtensionCode)
194
195 {
196
197 try
198
199 {
200
201 //esriLicenseStatus myLicenseStatus = this.CheckOutLicenses(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
202
203
204
205 esriLicenseStatus myLicenseStatus = this.CheckOutExtensionLicenses(pruductcode, ExtensionCode);
206
207
208
209
210
211 if (myLicenseStatus == esriLicenseStatus.esriLicenseNotLicensed)
212
213 {
214
215 throw new Exception("本机器没有安装ArcEngine扩展认证,请安装!");
216
217 }
218
219
220
221 else if (myLicenseStatus == esriLicenseStatus.esriLicenseUnavailable)
222
223 {
224
225 throw new Exception("本机器上安装的ArcEngine扩展认证不可用,请重新安装!");
226
227 }
228
229
230
231 else if (myLicenseStatus == esriLicenseStatus.esriLicenseFailure)
232
233 {
234
235 throw new Exception("本机器上的ArcEngine扩展认证启动失败,请联系管理员!");
236
237 }
238
239
240
241 else if (myLicenseStatus == esriLicenseStatus.esriLicenseCheckedOut)
242
243 {
244
245 return;
246
247 }
248
249 }
250
251 catch (Exception ex)
252
253 {
254
255
256
257 throw ex;
258
259 }
260
261
262
263 }
264
265
266
267
268
269 /// <summary>
270
271 /// 检测带扩展的证书
272
273 /// </summary>
274
275 /// <param name="pProductCode">esriLicenseProductCode.esriLicenseProductCodeEngine</param>
276
277 /// <param name="ExtensionCode">esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork</param>
278
279 /// <returns></returns>
280
281 private esriLicenseStatus CheckOutExtensionLicenses(esriLicenseProductCode pProductCode, esriLicenseExtensionCode ExtensionCode)
282
283 {
284
285 try
286
287 {
288
289 esriLicenseStatus myLicenseStatus = esriLicenseStatus.esriLicenseUnavailable;
290
291
292
293
294
295 if (this._aoInitialize == null)
296
297 {
298
299 _aoInitialize = new AoInitializeClass();
300
301
302
303 }
304
305
306
307 myLicenseStatus = this._aoInitialize.IsExtensionCodeAvailable(pProductCode, ExtensionCode);
308
309 if (myLicenseStatus == esriLicenseStatus.esriLicenseAvailable)
310
311 {
312
313 myLicenseStatus = this._aoInitialize.Initialize(pProductCode);
314
315 if (myLicenseStatus == esriLicenseStatus.esriLicenseCheckedOut)
316
317 {
318
319 myLicenseStatus = this._aoInitialize.CheckOutExtension(ExtensionCode);
320
321 }
322
323 }
324
325
326
327 return myLicenseStatus;
328
329 }
330
331 catch (Exception ex)
332
333 {
334
335
336
337 throw ex;
338
339 }
340
341 }
342
343
344
345 }
346
347
参考文献:
1 ESRI,网络分析,http://help.arcgis.com/zh-cn/ARCGISDESKTOP/10.0/HELP../index.html#/na/004700000001000000/
2 何宇兵, 网络分析与网络数据集,http://wenku.baidu.com/link?url=z1SUivF9acs6-WfNfSU4SjnyioLJyIHoqlB5_WtLiFEqhq_xDKUpNBbwk2tPzW2NIfkGRus_zao6JuQsC4h0LYZQHJVdcu_X6PKLWBVpj-7
3 ArcGIS的SanFrancisco网络数据集制作(网络分析数据篇),http://virgoooos.iteye.com/blog/340568
4 esri example:How to create a network dataset, http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//0001000000w7000000
5 AO许可问题,http://www.cnblogs.com/qb371/archive/2011/10/12/2366295.html
6 创建网络数据集(How to Create a Geodatabase Network Dataset),http://blog.sina.com.cn/s/blog_5d25ac4e0100uu47.html
7 arcengine创建network dataset,http://www.cnblogs.com/gisoracle/archive/2010/10/09/1846856.html
8 创建network dataset,http://jhlong12345.blog.163.com/blog/static/12306312920137217205787/
9 How to create a multimodal network dataset,http://edndoc.esri.com/arcobjects/9.2/net/de3d1979-ae9f-4e0a-8fba-6dc351e76822.htm
10 扩展许可设置,http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/How_to_use_extensions/00010000033w000000/

浙公网安备 33010602011771号