ArcIMS 连接器--.NET Link 使用方法
发布日期:2021-10-01 08:44:37
浏览次数:2
分类:技术文章
本文共 2483 字,大约阅读时间需要 8 分钟。
作者: 前几天马维峰写了一篇关于ArcIMS文章——《》,主要分析了ArcIMS的基本体系结构和几种二次开发模式的简单对比,比笔者之前的《》分析的透彻许多。 ArcIMS二次开发,关注最多的无非是它的连接器(connector)和ArcXML。在这些连接器中,Servlet Connector通过纯粹的ArcXML文件来传输请求和响应,ColdFusion Connector在其自身的运行环境中使用自定义tags来产生ArcXML请求和响应,Java Connector和ActiveX Connector比较类似,通过一组API(Java Connector还有标签库)来产生ArcXML请求和响应,它们是面向对象的开发方式,比较符合一般程序员的思维习惯。.NET Link比较特殊,最初我认为它和Java Connector、ActiveX Connector一样,通过一系列API来定义、生成ArcXML文件中的节点与属性,但事实上并非如此,简单来说,它仅仅是对XML文件的一种搭配与组装,使用.NET Framework中对XML文件的操纵方式拼装出所需的ArcXML请求,并接受ArcIMS应用服务器的响应,其参考手册中只有服务连接和AxlRequest相关的几个类的说明,也难怪ESRI为什么要给它要取名为.NET Link,而不是.NET Connector。 离ArcGIS 9.2正式发布已经没有多长时间,.NET Link能否得到改进至少像它的前辈ArctiveX Connector一样还不清楚。.NET Link的这种开发方式使得开发人员需要更多的关注ArcXML_reference,下面将简单说明.NET Link的使用方法。 首先,需要将.NET Link的程序集引用到开发环境中,我使用的是Visual Studio 2005,需要说明的是ArcIMS 9/9.1 的.NET Link在VS2003和VS2005中都能工作的很好,兼容性不错。这样ESRI.ArcIMS.Server.dll就加入了项目中。 第二步,建立到ArcIMS应用服务器的连接。 using ESRI.ArcIMS.Server……ServerConnection connection = new ServerConnection();connection.Host = "localhost";connection.AppServerPort = 5300;connection.Scheme = Scheme.TCP;
如果需要建立一个HTTP连接,端口为80,可以将以上语句改为 connection.Scheme = Scheme.HTTP; connection.Host = "http://www.yourdomain.com";connection.URIPort = 80;
第三步,发送一个ArcXML请求。在.NET Link中发送ArcXML请求,其实质就是对ArcXML文件的一种拼装。 // 获取默认的地图服务connection.ServiceName = "ServerSample";// 建立一个 XML String,即 axlstring sAXLText;// 在 sAXLText 中写入定制的 axl 文件sAXLText = ""1.0\" encoding=\"UTF-8\"?>"1.1\">";sAXLText = sAXLText + "<request><get_image> <properties></properties> </get_image></request>";sAXLText = sAXLText + ""300\" height=\"250\"/>";sAXLText = sAXLText + ""-132.0\" miny=\"25.0\" maxx=\"-57.0\" maxy=\"50.0\" />";sAXLText = sAXLText + ""false\" />";sAXLText = sAXLText + "";string response = conArcIMS.Send(sAXLText);
最后,需要处理ArcXML响应。 System.Xml.XmlDocument axlResponse = new System.Xml.XmlDocument();axlResponse.LoadXml(response); if (axlResponse.GetElementsByTagName("OUTPUT").Count == 1){ // 从 ArcIMS 应用服务器响应中获取 "OUTPUT" XmlNode 节点的集合,并且节点只有一个 System.Xml.XmlNodeList nodeOutput = axlResponse.GetElementsByTagName("OUTPUT"); // 获取这个节点的 url 属性值 imageURL = nodeOutput[0].Attributes["url"].Value;}
最后获得的imageURL就是之前客户端用户发送请求需要服务器返回的图片地址,用户每次对地图操作后看到的结果,其本质就是一张张图片。 现在思路比较清晰了,ArcIMS地图服务发布后,其展现的内容主要是由开发中所定制的ArcXML文件的内容所决定,开发人员需要面对大量ArcXML中的子元素及其属性设置,对于面向对象的开发而言显然是笨了一些,但从原理上来说,还是比较简单的,关键就是要看开发人员对ArcXML文档的熟悉程度了。 使用.NET Link进行ArcIMS二次开发的过程中,对ArcXML的子元素和属性进行操纵与设置不是一件令人愉快的事,但其中真正的困难还要数客户端大量javascript脚本的应用和数据传递,有机会拿一两个简单例子讨论一下。 转载地址:https://blog.csdn.net/iteye_263/article/details/81379548 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月25日 12时51分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
戳破针对「木兰」编程语言的拙劣谣言
2021-06-29
为「木兰」编程语言添加对中文命名标识符的支持
2021-06-29
悬赏万元,重现「木兰」编程语言编译器
2021-06-29
跳出编程语言本身看中文编程语言设计
2021-06-29
RPLY 入门例程中文化
2021-06-29
木兰编程语言入门教程之一——浅介
2021-06-29
木兰编程语言入门教程之二——控制走向
2021-06-29
基于「木兰」编译器,加十行代码实现 ∈ (属于集合)语法
2021-06-29
创建安卓键盘演示——“好不”
2021-06-29
木兰编程语言入门教程之三——函数和类型
2021-06-29
基于「木兰」逆向工程用 pyinstaller 生成可执行文件
2021-06-29
从微盟事件看商业数据公开化的必然趋势
2021-06-29
为新语言编写Visual Studio Code语法高亮插件
2021-06-29
手机编程环境初尝试-用AIDE开发Android应用
2021-06-29
Java关键字的汉化用词探讨
2021-06-29
程序员面试时用中文命名写白板代码的好处
2021-06-29
1992年日本对母语编程的可读性比较实验
2021-06-29
[转] 用python编写控制网络设备的自动化脚本3:启动
2021-06-29
扩展Python控制台实现中文反馈信息
2021-06-29
扩展Python控制台实现中文反馈信息之二-正则替换
2021-06-29