`
izuoyan
  • 浏览: 9220307 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ArcGIS Server Java ADF 案例教程 41

阅读更多

第一章 扩展ArcGIS Server

这一章其实和ADF已经没有太大关系了,在ArcGIS的帮助里也是在ArcGIS Server开发章节里。考虑到使用ADF开发的一般对功能要求比较多一点,所以对于怎么扩展ArcGIS Server可能比较关心,反正ADF差不多也讲完了,这一章就算是一个结束吧。

从9.3.1开始,ArcGIS Server提供了Java开发者更多的可扩展性。通过扩展ArcGIS Server可以使某些自定义的功能更加完善和强大、使你的某些工作可以更加模块化并和ArcGIS Server很好地结合在一起。下面让我们来看看ArcGIS Server可以通过什么样的途径进行扩展。

一 Utility Objects

Utility Objects主要是为了提升ArcGIS Server在Local方式连接下某些操作的性能而准备的。在此之前,让我们首先去了解一些ADF调用服务器端AO对象的过程和特点。

image

29 ADF调用服务器端对象的过程

如图 29所示,当用户发生请求的时候,ADF首先会和SOM交互(图中1);SOM将根据服务器情况分配一个SO用以处理这个用户的请求,同时返回这个SO的代理(proxy)给ADF(图中2);然后,ADF就会通过这个代理和服务器的SO进行交互(图中3,注意,这是ADF应用和GIS服务器之间的交互,是跨进程的);当请求完成后,ADF释放相应的资源供其它用户使用(图中4)。

跨进程的调用会消耗比较多的系统资源,响应速度较慢;当ADF应用和GIS服务器分开部署的时候,还有相应的网络开销。因此,当你的ADF应用中有大量细粒度操作,频繁地对服务器端AO对象进行调用的时候,性能会非常低下。Utility Objects就是为了解决这个问题而诞生的。

Utility Objects的原理就是把上述分别属于ADF和GIS服务器两个进程中的操作合并到一起,都放到ArcGIS Server中执行,这样可以极大地减小进程间通讯的开销。在实现上Utility Objects也并不复杂,你只需要把原来直接在ADF中实现的功能,封装到一个实现了自定义接口的类中,然后在ADF中调用这个自定义的功能类就可以了。下面让我们看一下这个大体的流程,在ArcGIS Server帮助中有这样一个例子:把计算一个FeatureLayer中所有多边形面积总和的功能封装成一个Utility Object。

首先,我们需要定义一个接口ICalculateArea,并使用CalcAreaUtil类来实现这个接口,注意,Utility Object的接口和类都需要使用“@ArcGISExtension”注记来声明:

@ArcGISExtension

public interface ICalculateArea

{

public double calculateArea(IFeatureLayer featureLayer)

throws IOException, AutomationException;

}

@ArcGISExtension

public class CalcAreaUtil implements ICalculateArea

{

public double calculateArea(IFeatureLayer featureLayer)

{

double totalArea = 0;

IFeatureClass featureClass = featureLayer.getFeatureClass();

int numFeatures = featureClass.featureCount(null );

IFeatureCursor featureCursor = featureLayer.search(null , true );

IFeature feature = null ;

Polygon polygon = null ;

for (int i = 0; i < numFeatures; i++)

{

feature = featureCursor.nextFeature();

polygon = (Polygon)feature.getShape();

totalArea += polygon.getArea();

}

return totalArea;

}

}

有两种方法可以部署这个Utility Object,当然,作为一个懒人我比较倾向于选择相对简单、绿色的方法:将上面实现的这个类编译成jar包,再将这个jar包复制到服务器上的 %ARCGISHOME%/java/lib/ext 目录下。另外一种复杂一些,而且让我觉得有点脏兮兮的方法,有兴趣的可以到帮助文档中寻觅一下。

好,下面我们就可以使用这个Utility Object了:

IFeatureLayer featureLayer = mapServer.getLayer(" ", 2);

ICalculateArea calArea = (ICalculateArea)

com.esri.arcgis.server.ServerContext.createObject(CalcAreaUtil.class );

double totalArea = calArea.calculateArea(featureLayer);

在这段代码中我们看到,调用“计算一个FeatureLayer中多边形总面积”的功能全部由一个GIS服务器端的CalcAreaUtil类实现,ADF中只需要使用IServerContext来实例化这个类,再调用它相应的方法即可。

分享到:
评论

相关推荐

    arcgis server java adf案例教程

    《ArcGIS Server Java ADF案例教程》是一本深入探讨地理信息系统(GIS)技术的专业书籍,主要聚焦于Esri公司的ArcGIS Server平台与Java Application Development Framework(ADF)的结合应用。ArcGIS Server是Esri的...

    arcgis server java adf 案例教程

    【ArcGIS Server Java ADF案例教程】是一份深入讲解如何使用ArcGIS Server与Java Application Development Framework(ADF)进行地理信息系统开发的教程。本教程旨在帮助IT专业人士,特别是那些在地理信息科学领域...

    ArcGIS Server Java ADF案例教程

    ### ArcGIS Server Java ADF案例教程:深入解析与实践指南 #### 1. 引言:探索ArcGIS Server Java ADF的世界 ArcGIS Server Java ADF(Application Development Framework)为地理信息系统(GIS)开发者提供了一个...

    ArcGIS Server JAVA ADF

    ### ArcGIS Server Java ADF 相关知识点 #### 一、概述 在2004年的第六届ArcGIS暨ERDAS中国用户大会上,林青(Cherry Lin)介绍了如何通过Java ADF(Application Development Framework)来开发和部署ArcGIS ...

    ArcGIS Server Java ADF 案例教程.pdf

    ### ArcGIS Server Java ADF 案例教程 #### 前言与背景介绍 《ArcGIS Server Java ADF 案例教程》是一本针对地理信息系统(GIS)开发人员的专业指南,旨在帮助读者深入了解如何使用Java应用程序开发框架(ADF)...

    ArcGIS_Server_Java_ADF_案例教程

    ArcGIS Server Java ADF案例教程提供了一个非常有价值的资源,对于那些希望深入学习和使用ArcGIS Server进行WebGIS开发的Java开发者来说,了解ADF选择JSF框架的原因以及JSF框架的特性是非常重要的。虽然参考资料有限...

    ArcGIS Server轻松入门.pdf ArcGIS_Server_Java_ADF_案例教程.pdf .NET构建和部署ArcGIS+Server+Web应用.pdf

    接下来,《ArcGIS_Server_Java_ADF_案例教程》聚焦于使用Java Application Development Framework (ADF)开发GIS应用。ADF是Esri提供的一个基于Java的开发工具包,用于构建桌面和Web GIS应用。此教程可能包括: 1. ...

    ArcGIS Server Java讲座

    在Java环境下使用ArcGIS Server,我们可以利用ArcGIS Server for Java ADF(ArcObjects for Java Application Development Framework)进行开发,这是一种专门为构建GIS应用程序而设计的Java库。ADF提供了丰富的API...

    ArcGIS_Server_Java_ADF_case.rar_Arcgis java

    《ArcGIS_Server_Java_ADF_案例教程》是针对地理信息系统开发的专业教程,主要关注如何使用ArcGIS Server的Java API(ADF,ArcGIS Data Framework)进行应用开发。ArcGIS Server是一款强大的地理信息处理平台,它...

    ArcGIS Server 9.2帮助文档翻译(1)Simple ArcGIS Server Web ADF Java Platform Application

    ArcGIS Server 9.2相关的Web ADF Java Platform应用程序都是基于JavaServer Faces (JSF)框架构建的,用于创建互动式、地图驱动的Web应用程序。JSF是一个标准的Java EE组件模型,它允许开发者构建用户界面并与后端...

    ArcGIS Server Java讲座.doc

    【ArcGIS Server Java 讲座】是一系列关于使用Java技术进行ArcGIS Server开发的文档,主要针对的是ArcGIS Server 9.2版本。这个讲座涵盖了多个主题,旨在帮助开发者理解和应用Java Server Faces (JSF) 技术以及...

    gisserver adf java教程

    这个“ArcGIS Server Java ADF 开发培训”教程将引导你逐步深入GISServer ADF Java的世界,通过理论学习和实践操作,提升你的GIS开发技能,使你能更好地利用Esri的平台构建高效、稳定的GIS应用程序。在学习过程中,...

    ArcGIS_Server_Java_ADF_案例教程.rar_ADF_ADF软件全称_arcgis server

    ADF全称是Arcgis java Web Application Developer FrameWork,是为了开发web应用而生的一套开发框架,开发人员可以在ADF的基础上相对容易的开发出WEBGIS应用。

    ArcGis_Server10_for_java创建Web_Adf实例

    ### ArcGIS Server 10 for Java 创建 Web ADF 实例详解 #### 一、概述 在当前电力行业的配网自动化项目中,为了更好地展现电网结构、进行停电模拟以及实时显示电网设备状态等功能,通常需要集成地理信息系统(GIS)...

    arcgis server10 for java在myeclipse创建Web实例

    在本文中,我们将探讨如何在MyEclipse中使用ArcGIS Server 10 for Java创建一个Web ADF实例。ArcGIS Server是一种强大的地理信息系统(GIS)平台,它允许开发者构建地图服务和应用程序,以便在Web环境下提供地理信息...

    定制Java Arcgis server 9.2Web Tasks WebADF(幻灯片)

    标题与描述均提到了“定制Java Arcgis server 9.2 Web Tasks WebADF”,这表明内容将围绕在ArcGIS Server 9.2环境下,利用Java技术进行WebADF(Web Application Development Framework)的自定义Web任务开发展开。...

    building_java_applications_using_the_arcgis_server_web_adf_and_ajax

    ### 构建基于ArcGIS Server Web ADF与Ajax的Java应用程序 #### 一、课程概述与目标 在本次由ESRI Developer Summit 2008提供的培训课程中,主题为“构建基于ArcGIS Server Web ADF与Ajax的Java应用程序”,旨在...

    arcgis server

    《ArcGis_Server10_for_java创建Web_Adf实例.doc》可能是关于如何使用ArcGIS Server 10与Java Web ADF创建实例的详细教程。这份文档可能涵盖了如下内容: 1. **环境配置**: 如Java SDK、ArcGIS Server SDK for Java...

    用java开发Arcgis server 9.2 web application

    本篇文章将基于提供的文件信息,深入解析如何使用Java进行ArcGIS Server 9.2 Web应用开发的关键知识点,包括工作坊资料获取、演示文稿大纲、Web ADF任务框架及其配置,以及定制任务的实现。 ### 获取工作坊资料 ...

Global site tag (gtag.js) - Google Analytics