- 浏览: 1763011 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (520)
- Oracle (10)
- Oracle错误集 (8)
- Oracle安装升级 (15)
- Oracle日常管理 (51)
- Oracle字符集 (7)
- Oracle备份恢复 (24)
- Oracle优化 (4)
- Oracle编程 (52)
- Oracle导入导出 (19)
- Oracle体系结构 (15)
- Oracle网络 (2)
- Oracle安全 (2)
- Oracle权限 (3)
- Oracle数据字典和性能视图 (2)
- Oracle常用地址 (5)
- SQLPLUS专栏 (7)
- SqlServer (13)
- SqlServer2005编程 (27)
- SqlServer2005管理 (15)
- MySQL (20)
- Dorado应用 (1)
- C# (24)
- Arcgis Server开发 (20)
- ArcSDE技术 (19)
- UML学习 (2)
- 设计模式 (2)
- JAVA EE (4)
- JavaScript (3)
- OFBIZ (27)
- JAVA WEB开发 (22)
- Linux&Unix (34)
- SHELL编程 (14)
- C语言 (11)
- 网络协议 (14)
- FREEMARKER (2)
- GROOVY (2)
- JAVA语言 (3)
- 防火墙 (0)
- PHP (2)
- Apache (2)
- Loader Runner (1)
- Nginx (3)
- 数据库理论 (2)
- maven (1)
最新评论
-
怼怼怼怼:
oracle的timestamp类型使用 -
怼怼怼怼:
oracle的timestamp类型使用 -
怼怼怼怼:
oracle的timestamp类型使用 -
pg_guo:
感谢
oracle中查看用户权限 -
xu234234:
5、MapResourceManager控件中添加了两个服务, ...
北京ArcGis Server应用基础培训笔记1
前段时间到北京去参加了ArcGis Server应用开发的培训,发现基本上的例子都和Flyingis上面的Arcgsi Server 开发系列的文章一样,只有最后两个例子没有。由于培训方不提供源代码,所有在培训时做的试验例子都无法拷出来。唉,没有办法,只有培训完回来以后,重新整理一下放上来,以备查!
整理的例子包括
1、Web ADF 编程——查询功能的实现
2、Graphics data sources——高亮功能的实现
3、ArcGIS Server data sources——Buffer功能的实现
4、自定义Tool
5、自定义Task
6、扩展Arcgis Server
由于前面5个例子在Flyingis的博客里都作了详细的介绍,我这里就不作介绍了,这里主要介绍最后一个例子,扩展Arcgis Server。
目标:
扩展Arcgis Server,根据省份名称,得到省份面积
当然这里只是一个例子,大家可以做很复杂的扩展
试验前准备:
1、准备一个全国各省的地图数据
2、创建一个province的地图文档
3、通过province的地图文档发布一个地图服务
试验步骤:
1、编写实现IServerObjectExtension的类,也就是你想添加的功能,新建DAANSOE项目,添加一个class文件,改名为GetArea.cs,代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.EnterpriseServices;
using ESRI.ArcGIS.ADF.ArcGISServer;
using ESRI.ArcGIS.Server;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
namespace DAANSOE
{
[Guid("560680E2-1DFB-438c-BA66-27A144BECE55")]
public interface IActcArea
{
double GetArea(string sql);
}
[AutomationProxy(true), ClassInterface(ClassInterfaceType.AutoDual), Guid("68F301BC-7A2F-44ea-A8B1-042431321719")]
public class SOEServer : ServicedComponent, IActcArea, IServerObjectExtension
{
private IServerObjectHelper m_SOH;
#region IActcArea 成员
/*次方法为测试时候的方法
public double GetArea(double x, double y)
{
return x + y;
}
*/
public double GetArea(string sql)
{
IMapServer mapServer = m_SOH.ServerObject as IMapServer;
IMapServerObjects mapServerObjs = mapServer as IMapServerObjects;
IMap map = mapServerObjs.get_Map(mapServer.DefaultMapName);
IFeatureLayer pflayer = map.get_Layer(0) as IFeatureLayer;
IFeatureClass pfc = pflayer.FeatureClass;
ISpatialFilter psf = new SpatialFilterClass();
psf.WhereClause = sql;
psf.SpatialRel = ESRI.ArcGIS.Geodatabase.esriSpatialRelEnum.esriSpatialRelIntersects;
IFeatureCursor pfCursor = pfc.Search(psf as IQueryFilter, false);
IFeature pfeature = pfCursor.NextFeature();
if (pfeature == null)
return -2;
IPolygon polygon = pfeature.Shape as IPolygon;
IArea pArea = polygon as IArea;
return pArea.Area;
}
#endregion
#region IServerObjectExtension 成员
void IServerObjectExtension.Init(IServerObjectHelper pSOH)
{
m_SOH = pSOH;
}
void IServerObjectExtension.Shutdown()
{
m_SOH = null;
}
#endregion
}
}
2、使用Regasm注册Server Object Extension
进入vs2005的命令提示框:
E:\Program Files\Microsoft Visual Studio 8\VC>
将当前目录切换到你上面那个dll所在的目录:
E:\project\北京培训\BeiJingTraining\Exercise11\DAANSOE\bin\Debug>
执行如下命令进行注册:
regasm /tlb:DAANSOE.tlb /codebase DAANSOE.dll
执行完成后可以到dll目录下验证相应的.tlb是否生成
(如果要注销注册,使用 regasm /u DAANSOE.dll /tlb DAANSOE.tlb /codebase 命令)
3、注册Server Object Extension到Gis Server
我们将通过一段代码将Server Object Extension注册到Gis Server中。
新建一个Console项目,命令为RegisterToGisServer,在Main方法里添加如下代码:
Identity identity = new Identity("username", "888888", "domain");
AGSServerConnection connection = new AGSServerConnection("fmc-pca187", identity);
connection.Connect();
IServerObjectAdmin2 soa = connection.ServerObjectAdmin as IServerObjectAdmin2;
IServerObjectExtensionType soe = soa.CreateExtensionType();
soe.CLSID = "DAANSOE.SOEServer";
soe.Name = "SOEServer";
soe.Description = "Test Application";
soa.AddExtensionType("MapServer", soe);
运行这段代码,执行完后可以到<ArcGIS Server Install Location>\server\system folder 打开ServerTypesExt.dat进行验证
4、停止province服务,右键切换到Service Properties的Capabilities,将SOEServer打上钩,重新启动province服务
5、使用Server Object Extension
新建一个web应用,新建一个aspx页面,改名为UseExtensionGisServer.aspx,加入相应控件,在button的click事件里实现如下代码:
Identity identity = new Identity("username", "888888", "domain");
AGSServerConnection connection = new AGSServerConnection("fmc-pca187", identity);
connection.Connect();
IServerObjectManager som = connection.ServerObjectManager as IServerObjectManager;
IServerContext serverContext = som.CreateServerContext("province", "MapServer");
IServerObjectExtensionManager soem = serverContext.ServerObject as IServerObjectExtensionManager;
IServerObjectExtension soe = soem.FindExtensionByTypeName("SOEServer");
IActcArea pAear = soe as IActcArea;
double area = pAear.GetArea(TextBox1.Text.ToString());
serverContext.ReleaseContext();
Response.Write("<script>alert(" + area.ToString() + ");</script>");
预览效果如下:
至此,如果上面一切顺利的话,整个功能就完成了,单击确定 ,就可以弹出四川省的面积。
注意事项:
如果Server Object Extension注册到Arcgis Server以后,又启动了province服务,这个时候要重新生成DAANSOE的话,需要把province停掉,不然会抱错,然后重新使用regasm工具注册修改后的dll。
最后,我把以上几个例子的整个项目作为附件上传上来,这些例子都是我在本机调试通过的,大家下载以后需要对identity的参数作相应的修改,大家有什么问题可以在这里提出来!
- BeiJingTraining.rar (605.9 KB)
- 下载次数: 422
- Province.rar (2.2 MB)
- 下载次数: 379
评论
在vs10中只需要勾上为com互操作注册就能生成.tlb文件.
为何我的提示以下错误:
[img]
C:\Users\lenovo\Desktop\12.jpg
[/img]
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 33: IActcArea pAear = soe as IActcArea;
行 34:
行 35: double area = pAear.GetArea(TextBox1.Text.ToString());
行 36:
行 37: serverContext.ReleaseContext();
源文件: e:\BeiJingTraining\BeiJingTraining\UseExtensionGisServer.aspx.cs 行: 35
是不是还需要修改什么?
还有这一步中(4、停止province服务,右键切换到Service Properties的Capabilities,将SOEServer打上钩),我怎么找不到SOEServer?
发表评论
-
FileGDB的要素编辑
2008-09-19 10:46 5004这段时间在做FileGDB的要素编辑,以前做过shp的编辑,以 ... -
远程上传shp文件后添加到SDE已有的FeatureClass里
2008-09-18 17:07 4168功能:远程web上传shp文件,然后添加到指定的SDE已经存在 ... -
利用JavaScript实现图片标注——SearchMapIdentityTask
2008-09-16 16:04 7902功能:功能实现了现在网络流行的定位后在地图上画一个图标,点击图 ... -
Arcgis Server发布WMS服务时URL样式
2008-09-08 15:50 6858http://192.168.1.102/ArcGIS/ser ... -
关于处理Maptips的技巧和方法总结
2008-09-02 17:20 2568为了处理adf中关于Maptips的各种棘手问题,我前段时间没 ... -
ArcGIS Server概述
2008-09-02 16:32 31341、概述 ArcGIS Server——基于AO的对象服务器, ... -
用Data source-specific APIs 编程
2008-08-06 16:21 2318ArcGIS Server APIsSOAP1)XML-str ... -
Data source-specific APIs 编程中的常用概念
2008-08-06 15:23 1598首先介绍几个概念: Server Objects 一个服务器对 ... -
Web ADF编程
2008-08-06 14:11 1987通用步骤:1. 从Web controls 开始2. 访问re ... -
北京ArcGis Server应用基础培训笔记2
2008-08-04 17:43 309717、ArcGIS Server Internet连接方式和A ... -
北京ArcGis Server应用基础培训笔记1
2008-08-04 14:25 36661 用户名问题在GIS Server PostInstall过 ... -
Arcgis Server常用类库分类
2008-07-29 11:34 2821Web controls----ESRI.ArcGIS.ADF ... -
北京ArcGis Server开发培训笔记
2008-07-28 15:57 29631、以local方式连接arcgis server 时需要设置 ... -
如何采用Local方式连接到ArcGIS Server
2008-06-20 22:05 2990在使用ArcGIS Server ArcObjects API ... -
ArcGISServer 开发问题集
2008-06-13 08:35 2431Map resource "MapResou ... -
ArcGIS Server几个基本概念
2008-06-12 17:06 31321 gis server 简单的说,gis ... -
ArcGIS Server开发调试中经常遇到的问题
2008-06-10 13:21 2958在对.net开发ArcGIS Server 的web 应用程序 ... -
ArcGIS Server开发——控制图层是否可见
2008-06-10 13:18 2351当需要控制图层的可见性时,可以使用 IMapDescripti ... -
在ArcGIS Server中不能直接用New来创建ArcObjects对象,而应该用serverC
2008-06-10 13:15 20181 web应用调用的是远程的AO组件,这些AO对象都运行在服务 ...
相关推荐
《ArcGIS Server开发中文培训资料》是一份专为学习和掌握ArcGIS Server开发技术而设计的综合教程。ArcGIS Server是Esri公司推出的地理信息系统(GIS)服务器产品,它允许开发者将地理信息和分析功能集成到各种应用...
ArcGIS Server应用开发培训主要针对使用Microsoft .NET框架开发Web应用程序的专业人士,由ESRI中国(北京)有限公司提供。此教程旨在帮助开发者深入理解和实践如何利用ArcGIS Server创建高效的GIS解决方案。 ArcGIS...
### ArcGIS Server 开发平台介绍 #### 一、概述 ArcGIS Server 是一款由 Esri 公司开发的企业级地理信息系统(GIS)应用服务平台。它支持多种操作系统环境,包括 Red Hat Enterprise Linux AS/ES 3.0、SUSE Linux ...
ArcGIS Server开发指南基于Flex和.Net数据随书光盘内容.分两个文件上传。
"ArcGis Server开发Web GIS入门教程" ArcGIS Server 是一款功能强大且灵活的 GIS 服务器软件,支持多种类型的服务,通过发布这些应用,可以开发定制功能,基于服务的 Web GIS 应用。在本文中,我们将介绍 ArcGIS ...
使用ArcGIS Server(.NET)来开发应用 ArcGIS Server 配置 开发ArcGIS Server应用的基础 使用ADF Web 控件开发 扩展ADF 模板 ArcGIS Server Web services
在ArcCatalog中发布地图服务时,需要以agsadmin组的用户身份登录计算机,然后添加ArcGISServer服务。在ArcGIS Server Manager中发布地图服务时,需要通过登录页面输入用户名和密码进行访问。 接下来是WebADF Ajax...
《ArcGIS Server开发从入门到精通》第三篇主要聚焦于如何高效地利用ArcGIS Server进行地理信息系统(GIS)的开发和应用。ArcGIS Server是Esri公司提供的一个强大的GIS服务发布和管理平台,它允许开发者将地理数据和...
ArcGIS Server开发指南--基于Flex和.NET源码每一部分
在ArcGIS Server培训课程中,学习者将深入了解ArcGIS Server Web应用程序开发框架(ADF),这是构建可利用多种GIS服务的Web应用程序的开发框架。ADF提供了丰富的类库和API,通过这些API可以有效地访问GIS服务。培训...
ArcGIS Server开发指南--基于Flex和.NET源码第二部分
《ArcGIS Server开发.pdf》是关于地理信息系统(GIS)领域中的一个重要组件——ArcGIS Server的详细指南。ArcGIS Server是Esri公司推出的一款强大的地图服务发布和管理平台,它允许开发者将地理数据转换为可在线访问...
【ArcGIS Server开发商培训】 ArcGIS Server是一款由Esri公司开发的强大地理信息系统(GIS)服务器,它允许开发者和GIS专业人员在Web环境下发布、管理和共享地理空间数据与服务。此"ArcGIS Server开发商培训"专注于...
《ArcGIS Server for Java开发入门》是一份宝贵的资源,它为初学者提供了全面而深入的指导,帮助他们踏入GIS(地理信息系统)与Java技术相结合的世界。ArcGIS Server是Esri公司的一款强大的地理空间服务平台,它允许...
arcgis server 10.3 开发服务器授权文件。 arcgis server 10.3 的授权文件,可视为没有时间限制的授权。虽然这个版本挺古老的,但功能上基本可以满足日常开发了。 必须吐槽一下esri,他们对开发者实在太不友好了,...
解决arcgis server跨域问题: 1、停掉ArcGIS Server的服务。 2、 打开<ArcGIS Server> \framework\runtime\tomcat\conf\web.xml,注册跨域bean 3、lib下拷贝 cors-filter-2.5.jar java-property-utils-1.9.1.jar包 4...
### ArcGIS Server开发知识点概述 #### 一、ArcGIS Server简介 - **定义与功能**:ArcGIS Server 是一款由 ESRI 公司开发的企业级地理信息系统 (GIS) 平台,主要用于发布、管理和访问地理空间数据和服务。该平台...
【ArcGIS Server——WebGIS开发新手体验】 ArcGIS Server是一款由Esri公司推出的强大的地理信息系统(GIS)服务器软件,主要用于构建和部署地理空间服务。它允许开发者将地图、地理处理功能以及空间数据集通过网络...