arcserver开发小结(二)

一、关于服务器上下文

1,服务器上下文(ServerContext)本质上是一个GIS服务器上的进程,它是服务器端编程的起点。

2,只有本地资源才能得到服务器上下文,通常得到服务器上下文的主线是:

MapResourceLocal——>ServerContextInfo——>ServerContext

3,在gis服务器上创建对象,只能通过ServerContext的CreateObject方法,而不能用new关键字,new关键字创建的是在本机上创建,而非gis服务器上。

4,CreateObject方法中的参数“类ID”不能写错,否则提示“无效的类别字符串”,当初很多时候由于写错了,被系统提示了不少次。

二、关于回调刷新

1,如果只刷新普通的html控件的内容,并把回调结果返回给此html控件,或者只是执行一段JavaScript代码

//回调结果实例
CallbackResult cr = new CallbackResult("div", "layerListDiv", "innercontent", returnString);//普通html控件
CallbackResult cr = new CallbackResult(null, null, "javascript", returnString);//js代码

//把回调结果实例增加到地图的回调结果集中
Map1.CallbackResults.Add(cr);

//以字符串的形式返回地图的回调结果集
return Map1.CallbackResults.ToString();

2,只刷新Map控件

return Map1.CallbackResults.ToString();

3,刷新Toc控件

//将Toc1控件的回调结果集添加到Map1中的回调结果集中 Map1.CallbackResults.CopyFrom(Toc1.CallbackResults);
//返回Map1的回调结果集 return Map1.CallbackResults.ToString();

回调刷新小结:从上面我们可以知道无论是怎样的回调刷新,最后的回调结果集都要添加到map控件的回调结果集中,这是因为ESRI为我们写好的回调函数processCallbackResult()中对返回的字符串进行了解析,从解析中我们可以看到回调结果都是针对map的。。。

三、关于MapServer对象

在实际的开发过程中,我们经常要在gis服务器端编程,从而操作细粒度的AO,其入口是IMapServer对象,通过这个对象,我们可以得到IMapServerObject对象,进一步获取地图文档的核心对象。

ArcGIS Server 本地资源访问ArcObjects的IMapServer对象有两种方式

第一种方式

//直接通过本地资源得到地图服务对象 ImapServer mapServer = mapResourceLocal.MapServer;

第二种方式

//得到本地资源的服务上下文
IserverContext serverContext = mapResourceLocal.ServerContextInfo.ServerContext;
//通过服务器上下文得到服务对象(IServerObject),并把该服务对象强制转换为地图服务对象(IMapServer)
IMapServer mapServer = serverContext.ServerObject as IMapServer

在得到IMapServer对象之后 ,就可以得到IMapServerObject对象了。

由于MapServerClass类实现了IMapServer接口和IMapServerObject接口,故可对IMapServer进行接口查询(QI)得到IMapServerObject对象了,方法只是进行一次强制转换。

IMapServerObject mapServerObject = mapServer as IMapServerObject;

四、关于对 com 组件的调用

实际arcserver开发过程中,我遇到了很多次弹出内容为“对 com 组件的调用返回了错误 hresult e_fail”的网页警告框,刚开始真是头疼,google了下,也没找到合适自己的内容。后来仔细检查、调试,发现是函数传入参数时发生错误了。比如我们想要传入的参数是一个图层的ID,但是由于不小心,传入的是一个空值null或者空字符串,导致前面的结果。这个故事告诉我,以后一定要小心,小心,再小心啊。。。

arcserver开发小结(二)

时间: 2024-10-19 14:22:23

arcserver开发小结(二)的相关文章

arcserver开发小结(三)

一.关于网络数据集的制作 由于要做实现网络分析的功能,而手中却没有网络数据集,关于网络数据集的制作,网上也有不少的资料.我参考的是ESRI为我们提供的帮助文档(Network_Analyst_Tutorial.pdf,该文档位于C:\Program Files\ArcGIS\Documentation,当然这个路径会随着ArcGIS安装路径的不同而有所不同),参照里面的做了下,我觉得最重要的是当你一步步NEXT后生成了.ND文件(网络数据集network dataset)之后,这里还没完,务必要

arcserver开发小结(一)

一.关于属性查询 由于要做属性查询,又重新玩起了arcmap中的select by attribute,有很多自己当初玩弄arcmap多年还不是很清楚的东西 1,字段名 (1)file geodatabase, shapefile, dBase table, coverage, INFO table-- "AREA" (2)personal geodatabase--[AREA] (3)ArcSDE geodatabase--AREA (4)Excel file (.xls file)

OneDrive模块开发小结(二)--- 性能及其他问题解决方案

继上篇OneDrive模块开发小结(一)--- 获取登陆时email http://blog.csdn.net/vic_fang/article/details/23282311 之后,再做一个阶段性小结 1. 关于同步方法和异步方法 onedrive的demon项目中提供了两种方式的api,以获取文件详细信息为例:get(String id), getAsync(String id, LiveOperationListener listener).get(String id)方式是纯异步的, 

PHP服务器文件管理器开发小结(总结):总结、索引和源代码

PHP服务器文件管理器的开发经过前一阶段的介绍基本完成了功能搭建,包括目录的检索.增加.删除.重命名,文件的增加.浏览.修改.重命名.移动,以及文件的上传和下载等功能.本文对前一阶段工作的相关博文进行索引,并提供源代码供有兴趣的同学一同讨论. PHP服务器文件管理器开发小结(一):功能规划 本节讨论了文件管理器的目标功能和运行环境. PHP服务器文件管理器开发小结(二):版面设计和css 本节讨论了页面布局所需的css内容,并介绍了引入jQuery和jQueryUI的方法. PHP服务器文件管理

XXX系统开发小结(SSH+Jquery EasyUI)

一.项目总体介绍 前一段时间的工作中,笔者大概用了两三个月开发了一个Web管理信息系统,使用的框架集为Struts2.3.1+Spring3.0+Hibernate3+Jquery EasyUI1.3.5,系统业务逻辑并不复杂,完成数据的采集(以问卷的形式).计算处理和形成报告发布.EasyUI是一个很优秀的JS UI框架,使用简单方便,效果也还可以,是UI效果和带宽速度之间的一个折中之选.系统中还有新闻发布模块,用到了富文本编辑器,在比较了很多插件之后,选择了kindeditor,原因很简单,

QT开发(二十二)——QMainWindow主窗口

QT开发(二十二)--QMainWindow主窗口 一.主窗口简介 应用程序中的主窗口是与用户进行长时间交互的顶层窗口,提供了应用程序的大部分功能,通常是应用程序启动后的第一个窗口,应用程序一般由一个主窗口和多个对话框组成. QT中直接支持主窗口,QMainWindow是QT中主窗口的基类,是继承于QWidget类的容器型组件. QMainWindow内部封装了菜单栏.工具栏.中心组件.停靠组件.状态栏等. QMainWindow内置了布局管理器,基本的组件布局如下: 二.菜单栏 QT中提供了预

QT开发(二十)——QT对话框

QT开发(二十)--QT对话框 一.对话框简介 对话框是与用户进行简短交互的顶层窗口 QDialog是QT中所有对话框窗口的基类,QDialog继承于QWidget,是一种容器型的组件,是定制了窗口样式的特殊QWidget. QDialog作为一种专用的交互窗口,不能作为子部件嵌入其他容器中. 二.对话框类型 对话框类型分为模态对话框和非模态对话框. 1.模态对话框 模态对话框显示后无法与父窗口进行交互,是一种阻塞式的对话框,使用QDialog::exec()函数调用. 模态对话框一般在栈上创建

QT开发(二十七)——QT常用类(一)

QT开发(二十七)--QT常用类(一) 一.QString 1.QString简介 QString提供了Unicode编码的字符串,使用隐式共享技术来节省内存和不必要的数据拷贝,不必考虑跨平台的兼容性. QString类成员函数中除了 ascii().latin1().utf8().local8Bit()函数,其他所有的函数都是可重入的. 2.QString成员函数 QString::QString ( const QChar * unicode, int size ) QString::QSt

QT开发(二十一)——QT布局管理器

QT开发(二十一)--QT布局管理器 一.布局管理器简介 QT中使用绝对定位的布局方式无法自适应窗口的变化. QT中提供了对界面组件进行布局管理的类,用于对界面组件进行管理,能够自动排列窗口中的界面组件,窗口大小变化后自动更新界面组件的大小. QLayout是QT中布局管理器的抽象基类,通过对QLayout的继承,实现了功能各异且互补的布局管理器. 布局管理器不是界面组件,而是界面组件的定位策略. 任意容器类型的组件都可以指定布局管理器. 同一个布局管理器管理中的组件拥有相同的父组件,在设置布局