ArcGIS Server 开发系列(二)--Web ADF 编程
ArcGISServer站点架构-WebAdaptor概要

ArcGIS 10.1 for Server 架构前一段时间在博客中公布了我们的计划,我们采用博客的形式将对ArcGIS10.1 for Server进行全面介绍。
但这种形式有一定的遗憾:缺少互动的空间,所以我们希望广大爱好者能将自己感兴趣的话题在博客的后面提出来,我们一起讨论,一起研究,现在我们言归正传,正式开始我们ArcGIS 10.1 for Server博客系列的第一篇------ArcGIS 10.1 for Server 架构。
一、开篇之言ArcGIS Server的概念,对于我们来说已经不太陌生,在这里用自己的话简单说下ArcGIS Server是什么?ArcGIS Server是一个用于构建集中管理、支持多用户的企业级GIS应用的平台,能将我们的地图,地理处理等资源作为服务发布出去,让用户可以通过浏览器,移动端等形对这些资源进行访问,同时使用ArcGIS Server为我们提供的GIS功能。
不管你是刚接触ArcGIS Server,还是已经熟知ArcGIS Server多年,Server架构都会是一个全新的东西,因为10.1版本中ArcGIS Server采用了全新架构。
一个新的东西,并且这个新的东西要引起人的兴趣,那么了解它的结构是很有必要的。
对于系统管理者来说,知道了其本质,那么就能更好的去管理Server;而对于开发者来说,原则上我们只需要知道这个Server暴露的那些API就可以了,然而现实往往是,开发人员还要兼顾管理者的角色。
因此不论管理人员还是开发人员,知晓Server内部结构都是一个一本万利的事情。
再者说,往往本质的东西更能展示内在的美(小醉名言)二、言归正传架构可以从整体上向我们揭示ArcGIS 10.1 for Server的组成部分,千万言不如一幅图,的确是这个道理,下面就让我们用一幅图来开启本篇的内容。
注:ArcGIS 10.1 for Server是一个纯64位的应用程序,那么也就意味着不能在32为的计算机上安装,这一点需要我们注意。
ArcGIS Server Web ADF框架与FLEX API的比较分析

ArcGIS Server Web ADF框架与FLEX API的比较与分析樊玮(武汉市城市规划信息中心,武汉市三阳路13号,430014)摘要:近年来,Web服务(Web Service)技术广泛的应用于互联网络的资源共享。
随着Web 服务标准与技术的不断成熟,面向服务的体系结构越来越多的应用于GIS行业的应用中,开发方式也越来越丰富。
为了充分利用现有的软硬件资源,构建满足用户需求的GIS应用平台,本文介绍了.Net环境下Web ADF和Flex API的特点及其适用范围,比较了采用这两种方法开发面向服务的地理空间信息公共服务平台的数据访问方法和功能开发方式,并对其效率和性能进行了分析。
关键词:Web Service; Web ADF; Flex API; SOA1 引言Web服务(Web Service)不仅是一种技术,而且还代表了软件产业的新革命,由面向对象的开发方式转为而向服务的开发方式。
面向服务开发的核心思想是重用已有服务,在已有服务的基础上进行再组合,形成新的松耦合分布式软件系统。
随着Web服务标准与技术的不断成熟,Web服务已经成为互联网上一种重要的资源。
ESRI公司提出的ArcGIS Server体系结构采用的就是面向Web Service技术。
ArcGIS Server9.3是一个新的GIS服务器,它主要用于构建集中管理、支持多用户的企业级GIS应用平台。
本文介绍了.Net环境下Web ADF和Flex API的特点及其适用范围,比较了采用这两种方法开发面向服务的地理空间信息公共服务平台的数据访问方法和功能开发方式,并对其效率和性能进行了分析。
2 WebADF与Flex框架ArcGIS Server是一个分布式系统,它由GIS服务器、Web服务器、Web浏览器、桌面产品四个部分组成,可以分别部署在不同的机器,它们分别在进程的管理、启动和关闭以及对象运行的服务器的负载均衡方面起着专门的作用。
WebGIS开发与应用三ArcGIS Server for ADF开发(2)

一、地图的基本操作
只需要简单的配置就可以了,丌需要编写代码
① 添加MapResourseManager控件,添加数据源 ② 添加Map控件,使用MapResourseManager数据源 ③ 添加Toolbar控件,增加地图浏览工具,设置
BuddyControl属性 ④ 添加Toc控件,设置BuddyControl属性
ArcGIS Server Web ADF 中的Ajax
ArcGIS Server Web ADF 中的Ajax
ArcGIS Server的Web ADF为开发人员提供了可
以在AJAX环境中管理客户端与服务器之间传输 的框架。这个框架称之为“callback results framework“,包括服务器端的一些类 (CallbackResultCollection,CallbackResult) 及控件(Web ADF controls)和客户端的 JavaScript库(Web ADF JavaScript)。
双击Button控件,在客户端(页面)添加响应JS函数 : <script language="javascript" type="text/javascript"> function Button1_onclick() { var x = document.getElementById("Text1").value; var y = document.getElementById("Text2").value; var message = "X=" + x + "&Y=" + y; var context = "Map1"; <%=m_ADFCallbackFunctionString%> } </script>
WebGIS开发与应用二—控件介绍

属性设置:设置Toolbar控件的BuddyControl属性,编辑 Toolbar控件的ToolbarItems属性。
Toc
列表地图图层 支持多数据源 和Map或Pagelayout关联
GeocodeResourceManager
地理编码资源管理控件:FindAddressTask就
是利用GeocodeResourceManager提供的地理 编码资源服务的控件。
2
地图显示相关控件
• 关联到一个MapResourceManager 支持多个map resource(可以来自不同的数据源) dynamic、cache • 影像的融合 web层和浏览器(web层,单个resource不能刷新,浏览器, 单个resource可以被刷新) • 游戏风格的导航 无缝漫游和缩放
开发基础
ArcGIS Server控件介绍 ArcGIS Server开发初步
ArcGIS Server控件介绍
1 2 3 4
资源管理控件
地图显示相关控件 任务控件 其它控件
Web Controls
29 Web Controls,全部支持AJAX
1
资源管理控件
MapResourceManager
SearchAttributesTask
SearchAttributesTask控件提供用户输入字段的
属性值来查找几何元素,待查找的图层只能是 MapResourceManager中的图层,查选结果由 DataSet返回到TaskResults中
arcgis的adf格式

arcgis的adf格式
ArcGIS Data Interoperability 是 ArcGIS 平台的一个扩展,它提供了用于读取、写入和转换多种 GIS 数据格式的工具。
ADF格式是ArcGIS Data Interoperability支持的一种格式,它通常用于存储栅格数据。
ADF格式(Arc/Info Binary Grid Format)是由Esri (Environmental Systems Research Institute)开发的一种栅格数据存储格式。
它通常用于存储地理空间信息的栅格数据,如高程模型、遥感影像等。
ADF格式的数据通常以一组二进制文件的形式存储在磁盘上,其中包括头文件、统计文件、索引文件等。
这些文件以特定的方式组织和存储栅格数据,以便在ArcGIS平台上进行读取、分析和处理。
在ArcGIS中,通过ArcGIS Data Interoperability扩展,用户可以使用ADF格式的数据进行读取、写入和转换。
这意味着用户可以将ADF格式的数据集成到ArcGIS平台中,与其他GIS数据进行交互和分析。
通过ArcGIS Data Interoperability提供的工具和功能,用户可以轻松地将ADF格式的数据转换为其他常见的GIS数据格式,以满足不同的数据需求和应用场景。
总的来说,ADF格式是ArcGIS Data Interoperability支持的一种栅格数据存储格式,它在ArcGIS平台上具有重要的作用,能够帮助用户进行栅格数据的读取、写入和转换,从而实现对地理空间信息的全面分析和应用。
运用ArcGISServer开发WebGIS系统主要几种途径及发展趋势

运用ArcGISServer开发WebGIS系统主要几种途径及发展趋势ArcGIS En使用ArcGIS Server开发WebGIS一般可以有以下几种途径1、使用ESRI ADF for java或for .NetADF是ESRI开发的一套用于WebGIS开发的框架,功能非常强大。
偶使用过for Java的版本。
他使用JSF构建,提供了很多控件,开发简单的WebGIS系统可以直接使用甚至不需要编码。
支持瓦片式地图,支持BS系统下的GIS空间数据编辑,内建了测距、测面积、查询、定位、实体高亮显示等等功能。
可以同时访问多个GIS服务并叠加结果。
ADF框架可以使用SOAP或者COM+的方式访问ArcGIS Serve r,特别是后者,可以在ArcGIS Server中创建几乎所有ArcEngine对象,可以实现比较高层次的功能。
但是COM+的形式也使服务器部署遇到一定困难。
ADF使用JSF1.1构建,目前的ArcGIS Server 9.3版本带的ADF 框架还不能运行在其他版本的JSF实现中。
给开发带来了一些不良影响。
ADF包办了几乎所有的WebGIS操作,而很多操作又包的比较严实,使得某些细粒度的操作使用起来比较麻烦。
浏览器的调用先是由ADF处理,然后在转交ArcGIS Server,结果一本也要经ADF转一次手,因此有时候性能是个问题。
2、使用ArcGIS Engine最笨,但也是100%可以被我们掌控的方式。
不会受制于WebGI S框架,但是需要自己实现的功能太多,比如客户端脚本,地图状态保持,图片输出,分析运算等等,而且要求在Web服务器上要安装Arc GIS Engine。
但当团队对Web和ArcEngine有较多积累的时候,确实是实现WebGIS最方便的一种方式。
3、使用ArcGIS Server Rest ServiceRest服务调用简便,相应速度快,网络压力小,对网络环境要求低等等,并且所有处理都在服务器端客户端甚至仅仅是JS就可以实现高水平的WebGIS系统。
arcgis的adf格式 -回复

arcgis的adf格式-回复ArcGIS的ADF格式是一种矢量数据格式,广泛用于ArcGIS软件中的数据交换和数据存储。
本文将解释ADF格式的概念、结构、存储方式以及如何使用ADF格式的可能用途。
ArcGIS(地理信息系统软件)是全球领先的地理信息及空间分析平台,可以处理各种地理数据以及相关属性信息。
ADF(ArcInfo二进制格式)是ArcGIS软件的一个重要组成部分,用于存储和管理矢量数据和图层。
ADF格式是一种二进制文件格式,存储了地理和空间信息。
它通过将数据以二进制方式写入文件来实现高效的存储和访问。
ADF格式具有紧凑、快速访问和安全存储等特点,使得它成为处理大型矢量数据集的理想选择。
ADF文件由两个主要部分组成:头文件和数据文件。
头文件存储了有关文件格式、坐标系统以及其他元数据的信息。
数据文件存储了实际的地理数据。
ADF格式使用基于多栅格(raster-based)的空间索引机制来组织数据。
这种索引机制能够高效地存储和检索空间数据,提供快速的空间查询和空间分析功能。
使用ADF格式的主要用途之一是存储和管理矢量数据。
矢量数据包括点、线和面等几何要素,以及与这些要素相关联的属性信息。
ADF格式可以有效地存储和检索大规模的矢量数据集,提供高效的空间查询和分析功能。
ADF格式还广泛用于地图制图和空间分析。
ArcGIS软件可以利用ADF格式的空间索引机制,快速可视化和分析地理数据。
通过使用ADF格式,用户可以轻松创建地图、显示空间关系、执行空间查询和分析以及生成专题图等。
ADF格式还支持多个地理坐标系和投影坐标系,使得它可以在不同的地理环境中使用。
用户可以根据需要选择适当的坐标系统,并在ADF文件中存储和管理相关信息。
当然,ADF格式也有一些限制和注意事项。
由于是二进制文件格式,ADF 文件不能直接编辑和修改。
使用ArcGIS软件可以对ADF文件进行读取和写入操作,但对于修改和编辑数据需要使用其他工具或方法。
ArcGIS+Server

14429398体系结构ArcGIS Server是一个发布企业级GIS应用程序的综合平台,提供了创建和配置GIS应用程序和服务的框架,可以满足各种客户端的各种需求,这是对ArcGIS Server一个抽象的描述,那么ArcGIS Server在GIS应用中具体扮演什么样的角色呢?使用过ArcGIS 桌面应用软件的人知道,在桌面环境中存在各种GIS工具可以供使用,如展现GIS数据可以用ArcMap、ArcGlobe,根据位置寻址可以使用address locator,对数据进行分析操作可使用ArcToolbox的Geoprocessing工具,这些包含了不同级别的GIS功能,从底层来看,都是通过ArcObjects来实现这些的。
站在ArcGIS Server的角度上,我们不再考虑要处理的数据是ArcMap的mxd文档、ArcGlobe的3dd文档、还是address locators等,相应地,我们用服务的概念来对它们进行描述,这些服务可以是map services、globe services、geocode services,GIS资源依托这些服务存在,当需要在GIS Server上共享一个地图时,就使用该地图的mxd来定义一个Map Service。
可以看出,ArcGIS Server的目的就是宿主各种服务,并为客户端应用提供这些服务资源,另外,ArcGIS Server提供了一个管理程序来对服务进行控制与管理。
ArcGIS Server体系结构可以用下图来描述:GIS Server宿主各种GIS资源,例如maps、globes、address locators,并将它们封装为服务提供给客户端应用。
GIS Server本身包括两部分:Server Ojbect Manager(SOM)和Server Object Containers(SOCs)。
通过命名可以看出,是一个SOM和一个或多个SOC,客户端发送请求到SOM,SOM将分配的资源提供给客户端,通过SOM对SOC进行调度与管理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ArcGIS Server 开发系列(二)--Web ADF 编程
2007-08-14 10:01 by Flyingis, 12454 visits, 作者:Flyingis
Web ADF全名是Web Application Develope Framework,是ArcGIS Server专用的开发框架,9.2版本的ArcIMS也开始提供ADF的封装。
完全使用Web控件编程几乎不能解决我们实际项目中的问题,因此我们从《ArcGIS Server 开发系列(一)--编程框架总览》中提到的途径二开始,即web controls + common datasource apis。
目标:
根据查询语句实现图层信息查询
准备工作:
1.Windows XP sp2中/英文版
2.V isual Studio 2005中/英文版
3.ArcGIS Server 9.2(我打上了sp2补丁),创建一个ArcGIS Server服务,Map Server属性中更改Pooling,使用池化连接方式,Progresses选择“In a seperate process for each instance(high isolat ion)”,我的服务为“World”
4.利用vs2005创建一个模板server应用--Web Mapping Application,并更改MapResourceManager属性
这样我们可以测试程序看是否能够正常运行,启动调试看到如下结果:
代码实现:
我们要完成的工作是对图层属性信息的查询,首先在页面左侧添加一个新的panel,左侧的Tasks、Results等都是放置在panel之中,在这个新的panel中分别添加TreeViewPlus、TextBox、Button三个控件,TextBox输入查询条件,Button确定查询,TreeViewPlus显示结果,在设计试图中浏览效果如下:
双击“Query”Button,编写点击事件。
protected void cmdQuery_Click(object sender, EventArgs e)
{
Query(Map1.Extent);
}
Query方法实现了对图层属性信息的查询。
protected void Query(ESRI.ArcGIS.ADF.Web.Geometry.Geometry geometry) {
IEnumerable func_enum = null;
//获取当前map1控件中所有的functionality
func_enum = Map1.GetFunctionalities();
System.Data.DataTable datatable;
//对所有的functionality进行遍历
foreach (ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionality gisfunctionality in func_e num)
{
ESRI.ArcGIS.ADF.Web.DataSources.IGISResource gisresource = null;
//得到该functionality的resource
gisresource = gisfunctionality.Resource;
//判断该resource是否支持IQueryFunctionality
bool supported = false;
supported = gisresource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSour ces.IQueryFunctionality));
if (supported)
{
ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality qfunc;
qfunc = (ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)gisresource.Creat eFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), null);
string[] lids;
string[] lnames;
//获得图层的layerId和layerName,GetQueryableLayers的重载方法可以指定图层类型
qfunc.GetQueryableLayers(null, out lids, out lnames);
ESRI.ArcGIS.ADF.Web.SpatialFilter spatialfilter = new ESRI.ArcGIS.ADF.Web.Spat ialFilter();
//设置过滤器的过滤条件,txtQuery就是panel中text box的ID
spatialfilter.ReturnADFGeometries = false;
spatialfilter.MaxRecords = 1000;
spatialfilter.WhereClause = txtQuery.Text;
spatialfilter.Geometry = geometry;
//对指定的图层进行查询,查询的结果保存为DataTable
datatable = qfunc.Query(null, lids[0], spatialfilter);
TreeV iewPlus1.Nodes.Clear();
if (datatable != null)
{
System.Data.DataSet ds = new System.Data.DataSet();
ds.Tables.Add(datatable);
TreeV iewPlus1.ShowClearAllButton = false;
//将结果绑定到TreeViewPlus控件上
TreeV iewPlus1.BindToDataSet(ds);
TreeV iewPlus1.Nodes[0].Expanded = true;
}
}
}
}
运行程序,text box中输入“CNTRY_NAME LIKE 'A%'”,查询结果:
这样这个小程序就完成了,在server中实现了对图层属性信息的查询,现在我们需要进行更多的考虑:
第一,考虑web控件、functionality、datasource、resource、resourcemamager之间的关系,代码中多次对它们的关系进行了描述,用文档中的一幅图可以概括整个框架,这篇文章对此进行了阐述--《ArcGIS Server .Net Web ADF体系结构》。
第二,程序中使用的mxd仅仅包含一个world图层,因此对图层进行遍历的过程中只需获得第一图层的ID,如果指定图层名,可以在lnames得到所需的图层进行查询。
第三,程序实现的查询方式相当简单,在text box中输入原始的sql来完成where语句,只仅仅是一个测试,一般我们会屏蔽掉sql相关的关键字,提供多个text box或dropdownlist 供用户选择进行字段查询。
第四,如果查询信息量不大,返回结果数量不多,完全可以考虑ajax来完成页面请求,不论是速度还是用户体验都会得到提高。
第五,通过程序可以看到,查询结果保存在一个datatable中,这极大的方便了server查询和.net的无缝连接,直接将结果和TreeViewPlus绑定,换成其他的visual studio控件也没问题。
只要整个框架思路清晰了,查询功能的实现其实很简单,这也是途径2开发方式的一个例子,可以看出ArcGIS Server ADF给开发提供了很多便利,和ArcIMS相比开发难度相当,多看看文档和ADF OMD图可以让我们对ArcGIS Server ADF开发有更多的了解,记住,这只是server开发的起步。