当前位置:文档之家› ArcGIS Server开发方式探讨

ArcGIS Server开发方式探讨

ArcGIS Server开发方式探讨
ArcGIS Server开发方式探讨

ArcServer的四种开发方式

ESRI官方给出的SrcServer的开发方式图。

1).Web ADF Web Control 页面ADF框架和页面控件。

2).Web ADF Common Data Source API 页面ADF框架和普通的数据源API

3).Web ADF Common Data Source API-->Data Source Specific APIs 页面ADF框架普通数据源API调用数据源具体API

4).Data Source Specific APIs 直接使用数据源具体API

这四种开发方式难度是有易至难的,但其可定制性也越强,下面就具体分析这四种开发方式。

1.Web ADF Web Control 页面ADF框架和页面控件

这种开发方式主要是使用ESRI提供的例子模板进行开发,包括使用相应的控件,和编写简单的代码来完成整个逻辑。当我们打开vs时(当然是已经安装好ArcServer的开发环境),点击,文件,新建,网站,弹出新建对话框,上面会有一个Web Mapping Application1选择项,那个就是ESRI提供的开发模板。见下图:

点击确定,ESRI给提供的模板就加载到vs编辑器中去了。

下面截图就是加进去的东西,图上包括ArcServer可用的部分控件,声称的例子的界面以及网站文件:

这已经是一个完整的例子了,我们只需要配置一下地图数据源,就可以使用。下面是运行的结果。

其实这样的例子做完不用写一行代码,所有的代码有是模板里面带的,如果我们再做一个属性查询功能,就可是用代码Searchtast控件来做,只需要设置一下相关属性即可。但这样的实际应用性不大,可以作为演示等。很多业务上的逻辑都是不能定制的,所以对于我们开发人员来说,这个例子可以作为一个很好的技术参考,这个例子在安装好ArcServer后例子程序中也存在。安装盘:\Program

Files\ArcGIS\DeveloperKit\SamplesNET\Server\Web_Applications文件夹下最后一个压缩包就是。

Common_WebMappingAppCSharp.zip

这个例子的详细讲解和ArcServer的安装以及地图服务的发布以后会提到。

这就是四种开发方式的第一种开发方式,完全傻瓜式的开发。

下节是第二种开发方式使用Common Data Source API进行开发。这种开发方式多少会让程序员摆脱这种傻瓜式的开发,让程序员多少有点成就感。

2 ArcServer的四种开发方式之Web ADF Common Data Source API(1)

Web ADF Common Data Source API主要是针对数据源进行编程,就是利用各种类型的数据源的functionality来进行功能的实现。在使用这种方式编程时首先要理解几个关系:

Webcontrols, ResouceManager,Resouces,Functionality

能理解好这几个对象的关系也就好办多了。

1.Webcontrols:这里指的就是地图显示控件,如mapControl,TocControl等。

2.ResouceManager:就是资源管理器,通过这个管理器,所有的资源,包括本地的地图服务资源,网络的以及其它的地图数据资源都可以在这个控件的管理下与显示控件结合在一起,地图显示控件如mapControl和Toccontrol直接或是间接和ResouceManager绑定到一块,就是说,在这些显示控件看来,本地的资源,网络的资源,ims数据资源,Graghric资源等没有任何区别,这些区别都在ResouceManager中给其统一化,送给控件一样的接口。可以说ResouceManager是webcontrols和Resouces的桥梁,webcontrols通过ResouceManager来显示各种Resouces。

3.Resouces就是指各种数据资源,其实在在地图数据未被ResouceManager管理之前并不能称其为一个Resouces,他只是一个地图服务或是其它等,但这些各种服务一旦被ResouceManager管理之后,其对外展现的就是一个个Resouces(资源)。Resouces有可以把数据通过不同的形式表现出来,例如,当MapControl控件通过ResouceManager找到该Resouces时,该Resouces就以地图数据的形式显示在mapControl控件上面,当TocControl控件通过ResouceManager找到该Resouces时,该Resouces就以图层名称列表的方式展现给TocControl控件,并把该Resouces 所包含的图层名称列表显示出来。也就是说每个Resouces都有不同的表现形式,即具有不同的功能,或是说能力,这些能力就是我们所说的不同的Functionality。

4.Functionality,就是我们所说的一些功能和能力。

ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality这个就是查询能力。在

ESRI.ArcGIS.ADF.Web.DataSources命名空间下,我们可以看到一下接口。IGeocodeFunctionality,IMapFunctionality,IMapTocFunctionality,IQueryFunctionality,IScaleBarFunctionality,ITileFunctionality等。这些都是一些能力接口,支持相应的接口说明该资源可以完成相应的功能,即具有相应的能力。例如:IMapFunctionality是具有显示地图的能力;IMapTocFunctionality具有把层名称显示成列表的能力;IQueryFunctionality具有查询的能力。等等,再复杂的功能,例如空间拓扑分析,最短路径分析,这种开发方式就完成不了了。

好了,虽然看起来上面的逻辑可能有点乱,但是如果想做好的话上面的关系是必须要理解的,这样做起来才得心应手,介绍完这四个对象的关系以后,下面就看一下代码。看上面的一些能力,IMapFunctionality,IMapTocFunctionality这些都不用说,在控件绑定时就会自动执行,最好还是说一下查询能力吧,IQueryFunctionality。

3 ArcServer的四种开发方式之Web ADF Common Data Source API(2)查询例子

下面就来看一下使用第二种开发方式来实现查询功能的例子。

public DataTable Query(string pQueryText)

{

//获取当前map1控件中第一个资源的functionality

ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionality myGisFunctionality =

Map1.GetFunctionality (0);

//得到该functionality的resource

ESRI.ArcGIS.ADF.Web.DataSources.IGISResource myGisResource = myGisFunctionality.Resource;

//判断该resource是否支持IQueryFunctionality

bool mySupported =

myGisResource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFun ctionality));

if (mySupported)

{

//如果支持,就创建一个该资源的IQueryFunctionality

ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality myQFunc;

myQFunc =

(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)myGisResource.CreateFunctionali ty(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), null);

//获得可以进行查询图层的layerId和layerName,GetQueryableLayers的重载方法可以指定图层类型

string[] lids, lnames;

myQFunc.GetQueryableLayers(null, out lids, out lnames);

//定义查询对象

ESRI.ArcGIS.ADF.Web.SpatialFilter spatialfilter = new

ESRI.ArcGIS.ADF.Web.SpatialFilter();

//设置查询的过滤条件

spatialfilter.ReturnADFGeometries = false;

spatialfilter.MaxRecords = 1000;

spatialfilter.WhereClause = pQueryText;

//对指定的图层进行查询,查询的结果保存为DataTable

System.Data.DataTable myDataTable = myQFunc.Query(null, lids[0], spatialfilter);

return myDataTable;

}

else

{

return null;

}

}

这样就完成了一个属性查询,其实使用这种开发方式的过程基本上都是差不多,只要理解好了这几种关系,知道一共有多少能力即Functionality,就可以知道用这种开发方式可以实现哪些功能,以及如何实现。

其中关键的地方主要有以下几个地方:

1).//获取当前map1控件中第一个资源的functionality

ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionality myGisFunctionality =

Map1.GetFunctionality (0);

按照注释说是获得map1控件的第一个functionality,其实这个方法返回的是IMapFunctionality,我们接受结果类型是IGISFunctionality ,其实IGISFunctionality是一个基类接口,所有的能力接口,例如IMapFunctionality,IMapTocFunctionality接口,以及我们所用到的IQueryFunctionality接口都是继承于此接口。所以二者可以转换。有几个资源,map 控件就会表现出几个IGISFunctionality ,然后有这个IGISFunctionality 得到该资源对象,再

判断是否支持其它在IGISFunctionality 之上的能力接口。但我觉得这样表现出来IGISFunctionality 不是太合理,很容易让读者误解,以为从map中得到的Functionality是所有资源所支持的Functionality的集合,其实不然,经笔者测试IGISFunctionality是和资源的数量一致的,就是说IGISFunctionality基接口是和资源一一对应的。

2).//判断该resource是否支持IQueryFunctionality

bool mySupported =

myGisResource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFun ctionality));

获得IGISFunctionality以后,就可以得到和该IGISFunctionality一一对象的资源对象,然后可以判断该资源是否支持某种能力,即有没有这种功能。

3).//如果支持,就创建一个该资源的IQueryFunctionality

ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality myQFunc;

myQFunc =

(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)myGisResource.CreateFunctionali ty(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), null);

得到某种能力对象的方式,得到这种能力对象以后就是进行相关的操作,具体操作具体分析,下面的就不多说了,和AO中的查询差不多,就是一个过滤器。

其实第二种的开发方式的步骤就是这样,先得到IGISFunctionality,然后再得到相应的资源,然后再判断该资源时候支持某种能力或是说有没有某种功能,有的话就得到这种能力或是功能对象,然后进行相关的操作即可。

4 ArcServer的四种开发方式之Web ADF Common Data Source API-->Data Source Specific A PIs

这是ArcServer的第三种开发方式。

Web ADF Common Data Source API WEB ADF框架普通数据源API

Data Source Specific APIs 数据源具体API

第三种开发方式就是前者的API调用后者的API。在描述之前先得明白Common API和Specific API之间的关系,以及com object和value object之间的关系。

现在可以看一下ArcServer ADF的体系结构:

Web controls:

ESRI.ArcGIS.ADF.Tasks

ESRI.ArcGIS.ADF.Web

ESRI.ArcGIS.ADF.Web.UI.WebControls

Common data source API:

ESRI.ArcGIS.ADF.Web.DataSources

ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer

ESRI.ArcGIS.ADF.Web.DataSources.ArcWebService

ESRI.ArcGIS.ADF.Web.DataSources.Graphics

ESRI.ArcGIS.ADF.Web.DataSources.IMS

ESRI.ArcGIS.ADF.Web.OGCWMSService

Data source-specific APIs:

ESRI.ArcGIS.ADF.ArcGISServer

ESRI.ArcGIS.ADF.ArcWebService

ESRI.ArcGIS.ADF.IMS

本来看着例子程序中接口来回的转换,一会用到ESRI.ArcGIS.ADF.Web.DataSources

,一会又用到ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer,那么多的东西安功能来分可以分为三类,就是上面所提到的Web controls(web 控件),Common data source API(通用数据源API),以及Data source-specific APIs(指定数据源APIs)。1.Web controls(web 控件)主要定义了一些用户的可视化控件以及自定义工作流Tasks的定义,以及支持这些控件的功能类和接口。

https://www.doczj.com/doc/c73248587.html,mon data source API(普通数据源API),主要定义了普通数据源的通用功能,主要是各种数据源Functionality的定义,例如显示地图能力,显示地图层列表能力,查询能力等,这些功能基本上是每种数据源都有的,所以把他们归结到commom data source API里面,意为是基本上所有的数据源都具有的功能和能力,所以在完成一般的通用功能时可以调用。包括各种资源的实现。例如ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer就是针对ArcServer 数据源的。ESRI.ArcGIS.ADF.Web.DataSources.Graphics就是针对Graphics数据源。等。。。。

3.Data source-specific APIs(指定数据源API)是对指定数据源的操作,就是说一些特殊数据源的特殊操作,例如Ims数据源没有编辑功能,ArcServer数据源就有编辑功能,如果要实现ArcServer数据源的编辑功能,在Commom datasource API中是完成不了的,只有调用data source specific API中的ESRI.ArcGIS.ADF.ArcGISServer来完成对特殊数据源的特殊操作。而data source specific API中的一些集合类型等就可以完成value object和AO中的远程com

Object之间的转换,就可以使用AO进行操作了。

介绍完上面三种大类之后,ADF中还有一种分法,就是安数据源进行分,例如不管在commom data source API中还是在data source specific API中,又有ArcServer的定义,这也说明ArcServer数据源的功能之多。在data source specific API中有ESRI.ArcGIS.ADF.ArcGISServer

ESRI.ArcGIS.ADF.ArcWebService

ESRI.ArcGIS.ADF.IMS三种数据源的定义,在commom data source API中也有三者的定义,就说明这三种数据源不仅具有普通数据源的一些功能,也分别具有自己特殊的功能。而像Graphics数据源就只具有普通数据源的功能或是能力,没有自己的特殊的API。

接下来就就要介绍一下value object 和com object的区别:

其实两者的区别很好区分,value object是属于ADF中的类型,com object属于AO中的类型,ADF中有的复杂功能不能实现的话可以通过value object 和com object 之间的转换来解决。

使用https://www.doczj.com/doc/c73248587.html,ObjectToValueObject()函数来相互转换。

5 ArcServer的四种开发方式之Data Source Specific APIs(ADF-->AO)(1)

接下来就是ArcServer开发的第四种方式就是使用Data Source Specific APIs来调用Ao对象,来实现我们相应的功能,因为缓冲分析是我们经常要用到的例子,而且这个例子比较有代表性。能够很好的所用使用ADF如何调用AO的功能,以及Com Object 和value object之间如何如转换。

我们的思路是先使用ADF得到我们在地图上点击的点对象(value object),然后把该点转换成com object,转换以后,再对其进行缓冲区分析,在分析

的时候,所使用的AO对象都要通过资源的上下文对象IServerContext来创建,在ADF中使用Ao对象的时候不能使用new关键字,因为在使用Ao 的对象,是远程com对象,所以使用上下文的create()方法来创建要使用的AO对象。

下面就分析一下这种开发方式的一般步骤。

第一步:先得到用户在地图上点击的点对象。我们通过在自定义工具中或是其它方式得到桌面坐标,然后转换成地图坐标。

//创建ADF点对象

ESRI.ArcGIS.ADF.ArcGISServer.PointN myADFPoint =new ESRI.ArcGIS.ADF.ArcGISServer.PointN(); myADFPoint.X=x;

myADFPoint.Y=y;

//创建到地图服务器的连接,通过这个连接才能创建远程com对象,以及进行Com object和value object之间的转换。包括用户名,密码,以及机器名称,用户名和密码必须是ArcServer管理组,即SOM组,这样才能针对远程的在地图服务器进行创建com object操作。

ESRI.ArcGIS.ADF.Identity myIdentity =new ESRI.ArcGIS.ADF.Identity("userName", "password", "localhost");

ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection myAgsconnection =

new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection("localhost", myIdentity )

//连接,并得到SOM对象,通过SOM对象,得到该资源的ServerContext对象。

myAgsconnection .Connect();

ESRI.ArcGIS.Server.IServerObjectManager mySom = myAgsconnection .ServerObjectManager;

ESRI.ArcGIS.Server.IServerContext myServerContext = mySom .CreateServerContext("China", "MapServer");

//定义好连接和上下文对象以后,就可以进行com object和value object之间的转换。

ESRI.ArcGIS.Geometry.IPoint myComPoint= (ESRI.ArcGIS.Geometry.IPoint)ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.Converter.ValueObjectT oComObject(myADFPoint , serverContext);

//下面就是我们在AO中使用的缓冲区分析代码

ESRI.ArcGIS.Geometry.ITopologicalOperator myTopop = (ESRI.ArcGIS.Geometry.ITopologicalOperator)myComPoint;

double myBufferDistance =0.1;

ESRI.ArcGIS.Geometry.IPolygon myComPolygon = (ESRI.ArcGIS.Geometry.IPolygon)myTopop .Buffer(myBufferDistance );

但是我们得到的是一个com类型的Polygon对象,我们还要把它转换成value object才能把他显示在地图上面。// 进行comobject到valueobject之间的转换,得到ADF类型的面对象

ESRI.ArcGIS.ADF.ArcGISServer.PolygonN myADFBufferPolygon= (https://www.doczj.com/doc/c73248587.html, ObjectToValueObject(bufferPolygon, serverContext, typeof(ESRI.ArcGIS.ADF.ArcGISServer.PolygonN));

//得到几何体以后,我们就定义一种渲染方式,把其转换成Elment,添加到地图上面,因为我们操作的是ArcServer数据,使用的date source specofic APIs,所以基本上使用的都是ESRI.ArcGIS.ADF.ArcGISServer中的对象,这个里面是针对ArcServer数据源的specific的相关操作。

ESRI.ArcGIS.ADF.ArcGISServer.RgbColor myRgb =new ESRI.ArcGIS.ADF.ArcGISServer.RgbColor(); myRgb .Red =200;

myRgb .Green =200;

myRgb .Blue =20;

// 设置区的填充色

ESRI.ArcGIS.ADF.ArcGISServer.SimpleFillSymbol mySimpleFillSymbol =new ESRI.ArcGIS.ADF.ArcGISServer.SimpleFillSymbol(); mySimpleFillSymbol1.Style = ESRI.ArcGIS.ADF.ArcGISServer.esriSimpleFillStyle.esriSFSHorizontal;

mySimpleFillSymbol1.Color = myRgb ;

ESRI.ArcGIS.ADF.ArcGISServer.PolygonElement myPolygonElement =new ESRI.ArcGIS.ADF.ArcGISServer.PolygonElement();

myPolygonElement .Symbol = mySimpleFillSymbol ;

myPolygonElement .Polygon = myADFBufferPolygon;

下面就把得到的OplygonElment添加到地图的Graphics资源的层上面,没有的话就新建一个层。

以后会介绍如何进行Graphics资源的操作以及如何上下文对象来创建AO对象。

5 .1 ArcServer的四种开发方式之Data Source Specific APIs(ADF-->AO)(2)深入解析

我们已经介绍完了ArcServer的四种开发方式,第一种方式也就是special API 调用AO来开发其可定制性以及功能都是其它三种开发方式所不可比的。但是其难度也是最大的,我们不仅要知道如何使用Adf中的special API,还要理解ADF如何和AO远程com对象通信以及AO的开发知识。这样的话,我们就可以使用AO中的功能来完成我们Server 中所需要的功能。

完成第四种开发我们需要使用ADF和AO,我们所称的special API就包括部分ADF和AO。ADF中的对象我们就称之为value object,AO中的对象我们就称之为com object。

那value object和com object是怎么样完成通信的?com object为什么有被称之为远程com对象?等等一些问题都是我们需要搞明白的。

首先,我们要了解这种开发方式开发出来的程序的工作机制。首先,这些value object是运行在web服务器上面的,所以对于web服务器来说可以称之为本地对象。但ArcServer地图服务是一个分布式的服务,地图服务并不需要和web服务放置到一台服务器上面,所以我们Web服务器上面运行时只需要安装ADF即可,AO必须安装在地图服务器上面,地图服务器的地图服务又SOM来管理,那些远程com AO object是运行在地图服务器上面处理地图的,其产生,使用,销毁等都是由SOM来管理。所以我们在创建AO对象时不能使用new关键字,只能通过ADF和AO的远程通信协议来创建它。

通信协议,因为远程的com object需要SOM来管理,所以我们在创建时肯定要有一个协议来保证ADF有创建指定的SOM对象的权限,这样创建以后才能把创建的对象才有人管理。这就是协议。要用这个协议来完成通信需要了解以下几个类的关系:

AGSServerConnection,IServerObjectManager,IServerContext

(注:因为我们主要操作的是ArcServer数据,所以在此列出的是AGSServerConnection)

AGSServerConnection:The connection to a Server Object Manager on an ArcGIS Server(用于和ArcServer

服务上的Server Object Manager进行连接),这里的Server Object Manager就是我们前面所说的SOM。

IServerObjectManager: Provides access to properties and members of the ArcGIS server's server object manager.(提供了使用ArcServer服务上面的Server Object Manager的通道)其实这个接口就是模拟了一个SOM,使用这个对象可以得到SOM的一些信息和使用SOM提供的一些功能,例如对远程AO com object的控制等。实现此接口的就是ServerObjectManager类。

IServerContext:Provides access to members for managing a server context, and the objects running within that server context.(提供了管理一个Server Context服务上下文对象以及运行在它上面的对象)运行在他上面的对象就是指AO对象。

从上图我们可以看出,ArcGIS Server是一个典型的分布式的系统,WEB服务器和地图服务器分离,而且地图服务也可以分布式部署,并统一管理。

从上图看来,在我看来1处相当于AGSServerConnection,负责web服务即ADF等和地图服务的联系。2处代表IServerObjectManager,管理着多个SOC对象,是地图整体的管理者,包含有多个地图服务。而IServerContext更像是一个Server Object Containers(服务对象容器),他是一个单独的地图服务,而一个IServerContext便是对一个Server Object Containers的描述,其在逻辑层次上就相当于一个Server Object Containers管理的地图服务。

上面是ArcCatalog工具中地图服务发布的树状结构,笔者认为,其中1处,即mytudousi(admin)处相当于一个Server Object Manager即SOM,而2处的两个MapServer就相当于一个Server Object Container即SOC。一台安装SOM的机器上只能创建一个SOM服务,但作为ArcCatalog,他其实可以说也是一个SOM的管理工具,也可以管理局域网内其它机器上的SOM服务,但在本地创建的只有一个。至于SOM和SOC怎么完成分布式部署以及其中的工作原理,笔者也不是太清除,曾经实验过几次,只要把ArcSOM和ArcSOC账户密码一改,本地创建的SOM服务就启动不起来,改成和局域网其它机器一致的密码(那台机器也装有SOM和SOC),那它机器就可以发布我本地的资源。对于这些疑问笔者这几天一直想不明白,希望理解这块地方的兄弟告诉一声。

好了,现在我们已经把上述的几个关键的类和接口介绍完以后,我们就看怎么使用他们。因为我们最终的目的是为了调用AO中的资源,所以创建远程的AO com对象,我们要使用到IServerContext对象,所以我们下面代码的目的就是为了创建这个接口的对象。

ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection myAGSServerConnection = new

ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection();

myAGSServerConnection.Host = "mytudousi";

myAGSServerConnection.Connect();

IServerObjectManager myServerObjectManager = myAGSServerConnection.ServerObjectManager;

IServerContext myServerContext = myServerObjectManager.CreateServerContext("MapServer1", "MapServer");

以上就是关键代码,下面我们就来一句一句的分析,上面代码其实很简单,分析它的目的主要是为了对应ArcServer 服务框架上的模块,便于我们更深的理解。

1.其中第一句话就是声明我们的AGSServerConnection对象,我们在帮助里面打开ADF Connection看一下。

其中1处主要是定义的连接基类,2处和3处都是继承和实现1处而来,知识两者操作的数据不同,2处主要操作的是ArcServer数据,3处主要操作的是ArcIMS数据,因为我们现在主要操作的都是ArcServer数据,不涉及到ArcIMS 数据,所以我们在定义连接类是用的是2中的。

2.创建完连接类以后(连接ArcServer数据服务),要指定连接到服务器名称,myAGSServerConnection.Host = "mytudousi";指定的就是连接的是主机名为"mytudousi"的机器。

3.连接好以后下面就要声明SOM对象,就对应框架中的Server Object Manager对象。因为已经连接到服务器上了,而且一个服务器上面只能指定一个ArcServer的SOM,所以我们不用传入任何参数,通过连接对象,就可以得到

IserverObjectManager对象。IServerObjectManager myServerObjectManager =

myAGSServerConnection.ServerObjectManager;

4.下面就要通过SOM得到SOC,才能得到真正的地图服务。一个SOM要管理多个SOC对象,每个地图服务都有相应的名称以及类型(5种),所以我们在得到IServerContext层次上相当于SOC时就要指定要得到的服务名称和服务类型。

IServerContext myServerContext = myServerObjectManager.CreateServerContext("MapServer1", "MapServer");

这样我们就完成了对本地连接。得到了ServerContext(服务上下文)对象,我们就可以用它来创建远程的AO com 对象,其中,这些远程的AO com对象就是运行在其SOC上面的。

ArcGisChapter02(可编辑修改word版)

第二章距离和时间的测量19 本章介绍空间分析中经常遇到的一个问题:测量距离和时间。空间分析归根结底是考察自 然和人类活动在空间分布上的变化,换言之,即考察这些活动相对于参照位置随距离的变化。 很多时候,一旦通过GIS 测定了距离或时间,我们就可以在GIS 环境之外开展进一步的研究 。GIS 技术的不断进步和广泛应用使得相关研究工作变得越来越容易。 距离和时间的估算贯穿全书。例如,在第三章的空间平滑和空间插值中使用距离测量来确 定纳入计算的对象及其对计算影响的程度。在第四章服务区分析中,商店与消费者之间的距离 (或时间)确定了距离消费者最近的商店以及居民到商店购物的频率。第五章可达性测量中, 距离或时间是构建移动搜寻法或引力法的基础。第六章考察的就是人口密度或土地利用强度从 城市或区域中心向外随距离衰减的态势。在本书其他各章中也都会用到距离或时间的测量。 本章的结构如下。第2.1 节概略介绍各种距离度量。第 2.2 节介绍如何计算网络的最短距 离(时间)及其如何用ArcGIS 来实现。第2.3 节为方法示例,计算了中国东北地区各县与几 大中心城市间的欧式距离和路网距离(Find/Replace all)。第 2.4 节是本章的简要小结。 2.1距离的测量 日常用到的距离包括欧式距离(直线距离)、曼哈顿距离和网络距离。欧式距离是两点之 间的直线距离。除非特别说明,本章提到的距离都是欧式距离。 在有GIS 之前,我们全靠用数学公式来计算距离,计算的准确性有限, 也受收集到的数据 精度和所用和计算公式的复杂性影想。如果研究区的地理范围较小(如一个城市或一个县域单元),直角坐标系下两个结点(x1, y1) 、(x2, y2)之间的欧式距离可以近似地表作 d 12 = [(x 1 -x 2 )2+ ( y-y 2 )2 ]1 / 2 (2.1) 如果研究区范围较大(如一个州或一个国家),则需要计算大地距离,要考虑到地球的曲20面。两点之间的大地距离是假设地球为球形时两点之间的最大圆弧的长度。已知两点的地理经 1

ArcGIS Server地图发布详解

ArcGIS Server地图发布详解 1地图服务发布 ArcGIS Server可以支持多种服务类型,用户通过ArcGIS Server发布的这些服务可以享用GIS功能。ArcGIS Server10.0支持的多种服务类型如下: Map Service 是使用最多的一种ArcGIS Server服务。该服务可以支持发布二维地图,支持建模,支持OGC WMS和KML,支持在线编辑空间数据等。本章主要介绍Map Service。 Geocode Service指的是地址编码服务,该服务可以把一个文本描述的地址转化为一个地理坐标。 Geoprocessing服务是一个基于Web的地理处理工具,客户端提交处理请求,服务器执行空间分析和建模,然后把执行结果展现在客户端。 Geodata Service提供了访问Geodatabase数据库内容的功能,支持在线的数据查询,数据提取,数据更新等。该服务在管理分布式的Geodatabase时非常方便。 Globe Service是ArcGIS Server提供的3D服务。首先在ArcGlobe中创建3dd文档,然后通过ArcGIS Server发布即可。用户可以使用免费的ArcGIS Explorer来访问ArcGIS Server发布的3D服务。 ArcGIS Explorer的下载网址: https://www.doczj.com/doc/c73248587.html,/ArcGISExplorer/Build450/ArcGISExplorerDownload.exe 下面几个小节内容主要介绍如何发布一个Map Service。 1.1 制作地图文档 1.从开始菜单启动ArcMap,新建一个空文档。 2.点击Add Data按钮,定位到数据位置,选中.shp文件,点击Add按钮。这样就把shp数据加载到ArcMap中。 3.右键点击图层,选中Properties菜单。 4.编辑渲染方式。点击Add All Values按钮,点击确定按钮。 5.设置符号化方式后,地图信息更丰富。 6.从File菜单中选择保存菜单。定位到某文件夹,在文件名输入框中输入:*.mxd,点击保存按钮。此文档将作为ArcGIS Server地图服务发布的文档。 7. 关闭ArcMap。 1.2 用户权限设置

ARCGIS基本操作(修改)

Arcgis基本操作 目录 一、Arcgis的简介 (2) 二、Arcmap的界面介绍及功能讲解 (2) 2.1启动ArcMap (2) 2.2界面的工具栏介绍 (3) 2.3几个常用编辑工具介绍 (3) 2.4属性列表 (6) 三、ArcToolbox的界面介绍及功能讲解 (10) 3.1重叠检查 (11) 3.2数据合并 (12) 3.3数据的融合 (13) 3.4橡皮擦 (14) 四、ArcCatalog的界面介绍及功能讲解 (14) 4.1新建shapefile (15) 4.2新建Geodatebase (16) 4.3新建拓扑 (16) 4.4常用拓扑规则介绍 (18) A 面层 (18) B线层 (19) 五、操作实例 (21) 5.1 面与边线一致性检查 (21) 5.2 重点检查 (23) 5.3面压盖修改 (24) 5.4 面不能有缝隙 (25) 5.5批量填空洞 (28) 5.6 多部分要素修改 (29)

一、Arcgis的简介 Arcgis是ESRI(美国环境系统研究所即Environment System Research Institute)在全面整合了GIS与数据库、软件工程、人工智能、网络技术及其他多方面的计算机主流技术之后,成功的推出了代表GIS最高技术水平的全系列GIS产品。ArcGIS是一个全面的,可伸缩的GIS 平台,为用户构建一个完善的GIS系统提供完整的解决方案。 所有的ArcGIS桌面软件都是由Arcmap、ArcToolbox和ArcCatalog三个应用环境组成。 二、Arcmap的界面介绍及功能讲解 ArcMap是ArcGIS的桌面版,是ArcGIS桌面系统的核心应用。它把传统的空间数据编辑、查询、显示、分析、报表和制图等GIS功能集成到一个简单的可扩展的应用框架上。 2.1启动ArcMap 点开桌面图标(或者从程序中点开ArcMap),即可直接打开ArcMap界面。

ArcGIS Server常见问题及解决方案

1.是否可以在同一台计算机上安装ArcGIS Server for the Microsoft .NET Framework 和ArcGIS Server for the Java platform? ArcGIS Server 的.NET 和Java 版本可以共存于同一台计算机上。若要将两者一起安装,则需要遵循以下步骤,以确保服务器目录能够正确地映射到IIS 或Apache Web 服务器的虚拟目录: 1.安装.NET 版本或Java 版本的ArcGIS Server。 2.使用管理器或ArcCatalog 删除默认的服务器目录(arcgiscache、arcgisjobs、 arcgisindex、arcgisinput、arcgisoutput)及其相关联的虚拟目录。 3.安装其他版本的ArcGIS Server。您可以保留此版本的默认服务器目录和虚拟目录。 4.使用文件系统工具为步骤1 中安装的ArcGIS Server 版本创建其他服务器目录。 5.使用ArcCatalog 或管理器,为在步骤1 中安装的ArcGIS Server 注册新服务器目 录及其相关的虚拟目录。 2.应当对SOM 和SOC 帐户使用何种帐户? 服务器对象管理器(SOM) 和服务器对象容器(SOC) 帐户供GIS 服务器进行内部使用,仅需要对计算机拥有有限的权限。仅当您在其他计算机上安装ArcGIS Server 时,或者仅当您授予GIS 服务器访问您的数据的权限时,您才会用到这些帐户。大多数情况下,使用安装后配置(ArcGISSOM 和ArcGISSOC)所建议的默认帐户名称并让向导为您创建帐户即可。出于安全原因,安装后配置将创建较之域帐户更加推荐的本地帐户。 3.计算机名称在安装后配置过程中被截断。 ArcGIS Server 名称不能超过15 个字符;如果超出该长度,则会在安装后配置期间及尝试连接到服务器时遇到错误。这是与活动目录名称的Microsoft 规范相关的已知限制。 4.是否对安装日志或摘要进行存储以供今后查看? 即使从命令行运行安装程序,也不会自动记录安装过程,但是您可以添加用于创建日志文件的参数。要了解有关从命令行进行安装的详细信息,请参阅ArcGIS Server 安装指南。

实习指导书-第八章-ArcGIS-Engine三维开发

第八章ArcGIS Engine的三维开发 8.1ArcGIS三维分析及其控件简介 8.1.1 ArcGIS三维分析简介 ArcGIS三维分析提供了对表面数据有效的可视化和分析。使用三维分析,可以从多个角度来浏览表面数据,查询表面,从表面上一选定的位置来确定什么对象可见,以及通过叠加栅格和矢量数据来创建一幅逼真的透视图。 三维分析(3D Analyst)添加了两个专用的三维可视化应用程序:ArcScene和ArcGlobe,它们扩展了ArcGIS Desktop的功能,并且扩展了ArcCatalog和ArcMap的三维功能。 ArcScene允许用户制作具有透视效果的场景,在这个场景中可以对地理信息系统数据进行浏览和交互。用户可以在表面上叠加栅格和矢量数据,并从矢量数据源创建线、面和体。用户也可以使用ArcScene 中的三维分析工具创建和分析表面。 ArcGlobe提供在标准计算机硬件上对巨型三维栅格、地形和矢量数据集进行实时漫游和缩放,在此过程中基本不会感觉到速度上的问题。这主要是依靠一种新引入的索引和快速检索数据的方法实现的。 利用三维分析扩展ArcCatalog,从而实现对三维数据的管理并且创建具有三维视觉属性的图层。用户可以在ArcCatalog中使用与ArcScene中相同的浏览工具预览三维场景和数据。 利用三维分析扩展ArcMap,从而可以由GIS数据生成新的表面,以及分析表面、查询表面某一位置的属性值和分析表面不同位置的可见性。用户还可以计算表面面积和表面之上或者表面之下的体积,并沿表面上的三维线生成剖面。 1

8.2ArcGIS三维显示简介 ArcGIS Desktop中,可用于三维场景展示的程序为ArcGlobe和ArcScene,由于两者的差别,在三维场景展示中适用的情况有所不同。由于Engine与Desktop底层技术都是基于AO的,因此该比较结果在功能性和整体效率方面同样适用与GlobeControl和SceneControl。 ArcScene简介: ArcScene是一个适合于展示三维透视场景的平台,可以在三维场景中漫游并与三维矢量与栅格数据进行交互。ArcScene是基于OpenGL 的,支持TIN数据显示。显示场景时,ArcScene会将所有数据加载到场景中,矢量数据以矢量形式显示,栅格数据默认会降低分辨率来显示以提高效率。 图1 ArcScene界面 ArcGlobe简介: ArcGlobe是ArcGIS9.0之后出现的新产品,设计用于展示大数据量的场景,支持对栅格和矢量数据无缝的显示。ArcGlobe基于全球视 2

Arcgis中62个常用技巧

一、计算面积( 可以帮我们计算小班面积 ) 添加 AREA 字段,然后右键点击字段列,然后点击CALCULATE VALUES; ---> 选择 ADVANCED --》把下面的代码输入,然后在最下面 = 处写 OUTPUT 点击 OK 就 OK 了。Dim Output as doubleDim pArea as IareaSet pArea = [shape]Output = pArea.area 二、计算长度( 可以帮我们计算林带长度 ) 同上添加 LENGTH 字段,然后右键点击字段列,然后点击CALCULATE VALUES; ---> 选择 ADVANCED --》把下面的代码输入,然后在最下面 = 处写 OUTPUT 。点击 OK 就 OK 了。Dim Output as doubleDim pCurve as ICurveSet pCurve = [shape]Output = pCurve.Length 三、小班升序排列: 同上添加小班号字段,然后右键点击字段列,然后点击CALCULATE VALUES; ---> 选择 ADVANCED --》把下面的代码输入,然后在最下面 = 处写 OUTPUT 。点击 OK 就 OK 了。Static i as longDim Output as stringi=i+1Output =i 四、村界切割小班

选择 -> 根据位置选择 , 小班 are are crossed by the outline of 村面 , 然后选择 -> 设置可选择图层为村面。用追踪工具,任务为切割多边形要素,进行切割 五、字段赋值 选择 -> 根据位置选择 , 小班 are within 村面。打开属性表显示选中的,选择一整列计算字段值对整个字段赋一个常量或,勾选高级加求变量代码。 六、拓扑检查 ArcCatalog 选要进行拓扑检查的文件夹右键 -> 新建个人 geodatabase-> 新建要素集 -> 导入要素类 -> 新建拓扑(导入要拓扑的图层)。ArcMap 中打开由拓扑规则产生的文件,编辑状态下利用 topolopy 工具条中给出的错误记录信息进行修改。搜索要修改的错误 -> 右键 ( 平移到 ) 选融合或新建等等。( 用 P+ENTER 组合键加快修改速度 ) , 修改完后右键图层名 -> 选导出数据。 七、投影和投影转换 ArcToolbox-> 数据管理 -> 投影和投影转换 ->project , batch project 。更多干货敬请关注:GIS前沿(地理变换中加入之前创建自定义地理变换文件)。

ArcGISServer安装与破解图文教程

A r c G I S S e r v e r安装与破 解图文教程 The latest revision on November 22, 2020

A r c G I S S e r v e r10.2安装与破解图文教程 ArcGISServer是ESRI公司的ArcGIS系列产品家族中的服务端产品,基于ArcGISServer可以构建Web地图服务,开发WebGIS系统。 通过万能地图下载器下载的ArcGISServer瓦片服务,可以用ArcGISServer进行发布。 你可以通过以下地址下载安装包: 下载解压之后,用虚拟光盘打开ISO文件(Win10系统直接双击打开),然后双击ESRI.exe 开始安装。 进入安装界面后,点击“Setup”安装ArcGISforServer开始安装。 点击“Next”按钮,进入下一步安装界面。 选择同接受许可协议后,点击“Next”按钮,进入下一步安装界面。 点击“Next”按钮,进入下一步安装界面。 点击“Next”按钮,进入下一步安装界面。 设置一个能记住的帐户和密码,点击“Next”按钮,进入下一步安装界面。 点击“Next”按钮,进入下一步安装界面。 点击“Install”按钮,开始安装软件。 正在安装软件,速度根据电脑运行效率不同而不现,一般大概需要几分钟左右。 点击“Finish”按钮,完成安装。 选择立即用许可文件认片,然后点击“Browse...”按钮。 选择压缩包中的许可文件并点击“打开”按钮。 点击“下一步”按钮开始授权。 授权成功之后,点击“完成”按钮。 安装完成后会自动打开一个Web页面,在该页面中可以创建一个站点,设置一个能记住的管理员帐户。 点击“下一步”按钮进行站点配置。 点击“完成”按钮,进行站点配置。 正在进行站点创建。 创建完成后,用设置的帐号登录。 站点创建完成。

ArcGIS_Engine二次开发——基础篇

ArcGIS_Engine二次开发——基础篇 ArcGIS Engine二次开发 ——基础篇

1ArcGIS Engine二次开发——基础篇 1.1第一个简单的A rcGIS Engine地图显示程序 这个例子将引导您创建第一个简单的地图显示程序,并添加基本的缩放和漫游功能。如果您之前没有接触过ArcGIS Engine的开发,那么这个例子是您迈入ArcGIS Engine二次开发大门的极好例子,将从零开始引导您一步一步完成任务。 1.1.1创建一个新的工程 首先打开Microsoft Visual Studio 2005,点击菜单栏中的“文件”—>“新建”—>“项目”,在弹出的对话框中选择新建一个Visual C#的Windows应用程序,之后更改项目名称为“地图浏览”,更改文件的路径为个人实习文件夹,点击“确定”即可。 图1新建项目对话框 选中项目“地图浏览”中的窗体“Form1”,修改其Name属性为“MainForm”,Text 属性为“地图浏览”,

图2窗体命名 1.1.2添加控件及引用 点击编译器最左侧的“工具箱”(不存在时可通过“视图”“工具箱”打开),在弹出的选择项中找到“ArcGIS Windows Forms”项,单击其中的MapControl,之后在Form1的空白处单击鼠标左键不放并拖拽鼠标,直到调整MapControl到合适的大小再松开鼠标(您也可以直接在工具箱中双击MapControl,该控件则会自动加入到Form1中)。用同样的方法,再将LicenseControl添加到Form1中。 图 3 打开工具箱

图4工具箱 如果您在工具箱中找不到MapControl,则请依次尝试以下两种解决方案。首先单击工具栏,待工具箱弹出之后,在工具箱的任意位置上单击鼠标右键,从弹出菜单中选择“重置工具箱”。如果这一步操作之后仍然无法看到MapControl,则在工具箱的任意位置上单击鼠标右键,找到“常规”选项卡,然后在“常规”选项卡上单击鼠标右键,在弹出菜单中单击“选择项(I)…”,在弹出的对话框中选择“.NET Framework组件”,找到“LicenseControl”和“MapControl”,将这两项前的复选框打上勾,最后点击确定即可(如果在“.NET Framework 组件”这个面板中找不到这两项,则选择“COM 组件”面板,在“ESRI LicenseControl”和“ESRI MapControl”前面打勾)。

ArcGIS符号库制作方法

ArcGIS符号制作 1二维符号库制作方法 ArcGIS中制作二维符号库的方法可归结为以下四种: 1)基于ArcMap中已有符号制作符号库 2)基于图片制作符号库 3)基于TrueType字体制作符号库 4)多种方式组合制作符号 不论采用上述何种方法进行符号制作准备,最终都需要在ArcMap中Style Manager进行符号制作。您可以打开ArcMap,从菜单Tools-〉Style Manager 进入,如下图所示。 1.1 基于ArcMap中已有符号制作符号库 ArcMap中最常用的符号有点符号(Marker Symbol)、线符号(Line Symbol)、面符号(Fill Symbol)、文本符号(Text Symbol)。在Style manager中创建新的符号库文件,或打开已经存在的符号库,然后分别选择点、线、面的Simple 等如下符号类型进行符号制作和组合,即可完成基于ArcMap中已有符号库的。

1.1.1点符号 (1)从上图的分类中可以看到,二维的标记符号主要分为四种: 简单标记符号:由一组具有可选轮廓的快速绘制基本字形模式组成的标记符号。 (2)字符符号:通过任何文本中的字形或系统字体文件夹中的显示字体创建而成的标记符号。此种标记符号最为常用,也最为有效,字体标记符号可以制作出比较符合真实情况的点符号,常用于POI(兴趣点)符号的制作。它是基于字体库文件(.ttf)的基础进行制作、编辑。后面将讲到字体库文件的制作。 (3)箭头:具有可调尺寸和图形属性的简单三角形符号。若要获得较复杂的

箭头标记,可使用ESRI 箭头字体中的任一字形创建字符标记符号。 (4)图片:由单个Windows 位图(.bmp) 或Windows 增强型图元文件(.emf) 图形组成的标记符号。Windows 增强型图元文件与栅格格式的Windows 位图不同,属于矢量格式,因此,其清晰度更高且缩放功能更强。 1.1.2线符号 线状符号是表示呈线状或带状分布的物体。对于长度依比例线状符号,符号沿着某个方向延伸且长度与地图比例尺发生关系。例如,单线河流、渠道、水涯线、道路、航线等符号。制作线状符号时要特别注意数字化采集的方向,如陡坎

ArcGIS Engine9.2 + C#实例开发详细教程

第一讲桌面GIS应用程序框架的建立 本讲主要是使用MapControl、PageLayoutControl、ToolbarControl、TOCControl四个控件建立起基本的桌面GIS应用程序框架。最终成果预览如下: 1、新建项目 启动VS2005,选择“文件|新建|项目”,在项目类型中选择Visual C#,再选择Windows应用程序模板,输入名称“3sdnMap”,点击确定。 在解决方案管理器中将“Form1.cs”重命名为“3sdnMap.cs”,在设计视图中,选中窗体,将其属性中的“Text”改为“3sdnMap”。 2、添加控件 选择工具箱中的“菜单和工具栏|MenuStrip”,将其拖入窗体。 选择工具箱中的“ArcGIS Windows Forms”节,将“ToolbarControl”控件拖入窗体,并将其属性中的Dock设置为Top。 选择工具箱中的“菜单和工具栏|StatusStrip”,将其拖入到窗体。 选择工具箱中的“容器|SplitContainer”容器拖入窗体,并将其属性中的Dock设置为Fill。 将TabControl控件拖入Panel1,将Alignment属性设置为Bottom,Dock属性设置为Fill。点击TabPages属性右边的按钮,弹出TabPage 集合编辑器,将tabPage1的Name设置为tabPageLayer,Text设置为图层,将tabPage2的Name设置为tabPageProperty,Text设置为属性。如下所示。

选择“图层”选项卡,拖入TOCControl控件,设置Dock属性为Fill。 选择“属性”选项卡,拖入DataGridView控件,设置Dock属性为Fill。 拖入TabControl控件到Panel2,设置Dock属性为Fill。并上述类似的方法,将两个选项卡的Name和Text分别设置为:(tabPageMap、地图),(tabPageLayout,制版)。 选择“地图”选项卡,拖入MapControl控件,设置Dock属性为Fill。 选择“制版”选项卡,拖入PageLayoutControl控件,设置Dock属性为Fill。 最后将LicenseControl控件拖入到窗体的任意地方。 按F5编译运行,可以看到刚才布局好的程序界面了。 3、控件绑定 通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进行控件绑定。 分别右击ToolbarControl、TOCControl控件,将Buddy设置为axMapControl1,如下图所示。 这样,工具条和图层控件就与地图控件关联了。 4、添加工具 此时,工具条中还没有任何工具,添加的方法也很简单。右击ToolbarControl,选择“属性|Items”,点击Add,选择Commands选项卡中的Generic,双击Open、SaveAs、Redo、Undo即可将相应工具添加到工具条。 常见的工具有:

ARCGIS的使用技巧

1. 要素的剪切与延伸 实用工具TASK 任务栏Extend/Trim feature 剪切所得内容与你画线的方向有关。 2. 自动捕捉跟踪工具 点击Editor工具栏中Snapping来打开Snapping Environment对话框 捕捉设置中有3个选项,vertex edge end 分别是节点、终点、和边,选择end应该会捕捉端点 3. 图斑面积计算及长度计算 应用工具CALCULATEAREA 或者使用VBA代码实现新建字段并开启Advanced 写入代码,面积计算: DimOutput as double Dim pArea as Iarea Set pArea = [shape] 在最后的一个空格里面写入代码(即:字段名)pArea.area 长度计算: Dim Output as double Dim pCurve as ICurve Set pCurve = [shape] Output = pCurve.Length 4. 剪切图斑 Task任务栏cut polygon feature工具,需要sketch工具画线辅助完成 5. 配准工具 Spatial Adjustment 工具需要注意先要set adjustment data 然后配准 6. 影像校正

Georeferncing工具 7. 要素变形 Task 工具条中的reshape feature 配合sketch工具 8. 添加节点 Modify feature 在需要加点的地方右键单击insert vertex 也可单击右键选择properties打开edit sketchproperties对话框,在坐标点位置右键插入节点 9. 共享多边形生成 Auto-complete polygon 工具生成共享边的多边形,配合snapping environment更好。 10. 画岛图 1).使用任务栏中的sketch工具,当画完外面的一圈时,右键选择finish part 然后画中间的部分再右键finish sketch 2).分别画连个图斑然后应用Editor工具栏中的工具先intersect(图斑重叠的地方创建一个新的图斑)然后Clip(剪切)即可。(补充其他工具:Union,把多个图斑联合起来并形成一个新的连接在一起的图斑,原图斑无变化,联合后的图斑不继承原任何图斑的属性;Merge,把多个图斑合并到其中一个图斑上并继承它的属性,原图斑变化;Split用于间断线段,但得知道具体的长度,如果不知道那么长度或者没必要那么精确就直接用Eeitor工具栏的Split tool 工具) 11. 连接外界属性数据(如:.xsl文件等) 利用JOIN 工具可以方便的实现与外界属性数据的关联,但这种关联是依赖于外界数据库本身的,需经过重新导出之后即完全保存在相应图层属性页。在做外联如EXCEL等的时候对数据有一些要求,确保第一行包含字段名,这些字段名不能超过十个字母,不能出现特殊字符。最好把EXCEL保存为.csv文件去除一些不兼容的内容再连接。 转载ESRI论坛Lucy1114帖子说明: 12. 导出Shape格式为其他软件识别的打印格式如JEPG等格式 FILE/EXPORT MAP 然后选择相应的图片格式,此时也可设置答应的分辨率pdi 13. 建立注记层

ArcgisServer发布服务时错误

ARCGIS Server 发布服务时出现的问题解决 前言:这类问题解决第一步,看出现问题时提示的错误提示,若没有错误提示,去server 的log中找到产生问题时的日志,看里面这类问题产生的原因。 一、Access to output directory is denied(原创) 一、问题 Access to output directory is denied 二、问题描述 无法启动服务,Access to output directory is denied 三、问题原因 当前用户、SOM、SOC用户没有写权限 四、解决方法 赋予对这些用户对临时文件的写权限 二、Probable cause: The network path is inaccessible to ArcGIS Server Object Container account. 问题描述 arcgisserver发布服务时无法启动服务,没有任何外在的错误提示 问题原因 某些指定路径不存在 解决方法 找到arcgisserver发布服务需要对应的文件夹,若没有,则按照指定路径创建,详情可参考第三条。 三、ArcGIS常见问题解决之Server Object instance creation failed on machine xxx 1.1 问题症状 在客户现场进行开发测试的时候发现,无法在ArcGIS Server上发布新的地图服务,但是可以发布影像服务、GP服务,已经发布的地图服务都可以运行。发布服务时具体的错误信息是:Server Object instance creation failed on machine xxx。 1.2 日志信息 查看日志信息,记录如下: Attempt to start configuration nmdis/topic_binhaishidi of type MapServer. Container 5296 is successfully created on machine IBM3850X5. Thread 18088 is successfully created on container 5296 of machine IBM3850X5.

VB+ArcGis Engine 开发零基础GIS程序框架教程

VB+ArcGis Engine开发零基础GIS程序框架教程 第一步配置环境和设计界面 环境:ArcGisEngine 9.1 + Microsoft Visual Basic 6.0 使用Engine控件:ESRI ToolbarControl, ESRITOCControl 、ESRILicenseControl、ESRIMapControl。 (按Ctrl+T调出部件面板,选中以下控件) 再从[工程]-[引用]添加一下引用:

界面布局(右侧大的MapcControl命名为MapControl1,为显示地图主界面。左下角的MapcControl命名为MapControl2,作为地图鹰眼。在工具栏里添加如图的几个按钮即可。其它再添加一个CommonDialog1和状态栏):

在ESRI ToccControl和 ESRIToolbarControl属性里绑定控件EsriMapControl (buddy选择MapControl1)。 这样基本界面就布置好了。 第二步加载地图 代码为: '打开地图文档 On Error Resume Next Dim sFileName As String With CommonDialog1 .DialogTitle = "Open Map Document" .Filter = "Map Documents (*.mxd;*.pmf)|*.mxd;*.pmf" .ShowOpen If .FileName = "" Then Exit Sub sFileName = .FileName End With If MapControl1.CheckMxFile(sFileName) Then MapControl1.LoadMxFile sFileName

ArcGIS Server 10安装及破解(亲测通过)

Win7 下ArcGIS Server 10.0的安装 1、插入安装盘,运行,如下图: 与ArcGIS Desktop 10.0的安装一样,如果安装过旧的版本,要首先冲突检测,卸载历史版本,否则会导致安装失败。 2、点击ArcGIS Server for the Java Platform Setup安装,如下图:

按照提示一路下一步,开始进行安装。 4、安装完成,如下图: 5、接下来进入配置阶段,弹出GIS Server Post Install,如下图:

6、下一步,进入SOC和SOM账户的配置,如下图: 7,输入密码后下一步,进入GIS Server Manager Account配置界面,如下图:

8、接下来一路下一步,确认安装,如下图: 9,这里会弹出授权界面,在这里进行破解,如下图:

10、选择第三项,将下面的内容复制到新建文本文档,然后改文本文档的后缀名为ecp,浏览此ecp文件完成授权 3dengine,100,ecp.arcgis.server,none,KGE784S1MGRMMBKYZ161 3dserver,100,ecp.arcgis.server,none,VPH4ENBJ3Y831R1DF089 arcgisserver,100,ecp.arcgis.server,none,D7MFFAZ8THZTPJR67072 bingmapseng,100,ecp.arcgis.server,none,QH1N8J6BZM7PGTJ89232 bingmapssvr,100,ecp.arcgis.server,none,OLPF80PYJCNJJ7GPE158 businessvr,100,ecp.arcgis.server,none,UTE4AE2CXR2XYNEBB205 defenseintleng,100,ecp.arcgis.server,none,TRCZY4S1MGRMMBKYZ067 defenseintlsvr,100,ecp.arcgis.server,none,LHH9HK9J5ZA46EDPN164 defenseuseng,100,ecp.arcgis.server,none,UTF457E50KE00FH23148 defenseussvr,100,ecp.arcgis.server,none,LHH30H4CE00LTJT46024 designer,100,ecp.arcgis.server,none,TRBZMD18RMLSPF002054 gdbedit,100,ecp.arcgis.server,none,WEJFRRF0C6JCE3MXE079 geostatserver,100,ecp.arcgis.server,none,UTF654S1MGRMMBKYZ201 imageextserver,100,ecp.arcgis.server,none,HC4RTXLPE9JEE3CPR167 interopengine,100,ecp.arcgis.server,none,MJJAFH5G1E612RZFF118 interopserver,100,ecp.arcgis.server,none,VPF0TRFN61B75E5HJ074 jtxserver,100,ecp.arcgis.server,none,JFB157E50KE00FH23053 maplexengine,100,ecp.arcgis.server,none,LHH40XLPE9JEE3CPR159 networkengine,100,ecp.arcgis.server,none,YYPMSNCN82E8AZJTR206 networkserver,100,ecp.arcgis.server,none,PMYHHAY5RHHMF5KHT131 schematicengine,100,ecp.arcgis.server,none,YYPDCAZ8THZTPJR67200 schematicsvr,100,ecp.arcgis.server,none,PM0L8NAF20BTKXNCD158 spatialengine,100,ecp.arcgis.server,none,B5JA84S1MGRMMBKYZ159 spatialserver,100,ecp.arcgis.server,none,JFBXLD18RMLSPF002237 standardengine,100,ecp.arcgis.server,none,UTF750PYJCNJJ7GPE061 svradvanced,100,ecp.arcgis.server,none,UTE0RNBJ3Y831R1DF145 svrenterprise,100,ecp.arcgis.server,none,TRB6A7E50KE00FH23206 svrstandard,100,ecp.arcgis.server,none,A3C0LPJ0A5FBAZ8LN139 trackingengine,100,ecp.arcgis.server,none,VPF1RK8GZP4ZXNX8A052 virtualearthsvr,100,ecp.arcgis.server,none,FA0N5C04SE0H9KB10133

(完整版)Mapgis图形编辑技巧

1、Mapgis图形编辑技巧 造线或矢量化时常用功能键 F8键(加点):用来控制在输入线或矢量跟踪过程中需要加点的操作。按一次F8键,就在当前光标处加一点。 F9键(退点):用来控制在造线或矢量跟踪过程中需要退点的操作,每按一次F9键,就退一点。 F11键(改向):用来控制在造线或矢量跟踪过程中改变跟踪方向的操作。按一次F11键,就转到矢量线的另一端进行跟踪。 F12键(抓线上点):在输入或矢量化一条线开始或结束时,可用F12功能键来捕捉需相连接的线头或线上点或靠近线。 Shift键(抓线上最近点):在输入或矢量化一条线开始或结束时,按住Shift键用鼠标来捕捉需相连接的线上最近点。 Ctrl键(封闭线):在输入或矢量化一条封闭线结束时,按住Ctrl键右击鼠标可使该线的首尾封闭。 2、如何进行符号库之间符号的拷贝? 第一步:进"系统设置",把系统库目录设置为源符号库所在的目录。 第二步:进入"输入编辑",选择"系统库"菜单下的拷贝符号库。 第三步:系统要求选择目的符号库。系统会弹出显示两个符号的对话框。

第四步:在对话框的左边,选择要拷贝的符号,在右边给这个符号选择一个合适的位置,最好将此符号放置目的符号库的尾部。然后,选择红色的箭头,这样就实现了符号库之间的拷贝。用插入、删除的操作来实现符号库的编辑。按确定按钮后,退出操作。 3、几个MAPGIS 图形编辑技巧 1、数字“0”的巧用 1.1做图时经常遇到铁路、公路、高速公路交织穿插在一起。按一般的制图原则,有上下关系之分,高速公路在最上层,可压盖其它线状地物,高级道路可压盖低级道路,道路又可以压盖河流。而作业者操作时往往容易忽视先后顺序,把应该是上层的内容绘到了下层,如果 删除重绘,显然比较费工,在此介绍一种简单易行的操作方法: (1)单击“线编辑”菜单,点击“造平行线”命令。 (2)选择要移到上层的那条线,系统会提示你输入产生的平行线距离,你可设定为“0”,这时这条线自然移到了上层。 1.2为了美化图面,增加地图的艺术性,设置不同颜色花构边的 标题和字,具体作法如下: (1) 先输入一个字,点“编辑”对话框中“汉字字体”一项,只要在选定的字体参数前加上“ - ”号,这个字就变成了空心字。 (2) 然后再点“编辑”对话框,在下拉菜单中,选择“复制点”,在“阵列复制”对话框中行或列数任选一项,参数设置为“2”,另一项为“0”,再按系统提示将x、y 方向的距离,设置为“0”,这时在同一位置就生成了两个同样的字。

ArcGIS空间数据编辑

专题2 ArcGIS空间数据编辑 一、实验目的 1、掌握点、线、多边形要素的生成方法; 2、掌握点、线、多边形要素的编辑方法; 3、了解线、多边形的高级编辑功能; 4、掌握地图注记的输入和编辑方法; 二、实验准备 实验数据位置:Training Material | 空间数据编辑 预备知识: 1、地物类是存放地物的直接位置,首先必须生成地物类; 2、地物类的几何类型分为点、线和多边形,各有不同的编辑工具; 3、Editor工具栏是主要编辑工具的容器,本次使用对象; 4、设置捕捉功能用于提高定点精度,帮助准确捕捉点和线; 5、快捷键是提高编辑速度和能力的关键。 三、实验内容与步骤 第1部分生成点、线和多边形的地物类和创建地物要素 利用ArcCatalog在空间数据编辑\实例1\temp文件夹中新建Road(Polyline)、Town(Point)和County(Polygon)三个shapefile地物类,打开地图文档--编辑.mxd。加载新建图层:[Road、Town和County]。

1、数字化[Town]点状要素 1)在ArcMap标准工具栏中点击按钮,调用Editor工具条; 2)在工具栏[Target:]中选择Town图层; 3)选择,精确定位图象上的城镇标志,并点击鼠标左键,从而生成一个点状要素; 4)将图中所有城镇数字化为点状要素,为点状要素配置符号。 2、数字化[Road]线状要素 1)在ArcMap标准工具栏中点击按钮,调用Editor工具条; 2)在工具栏[Target:]中选择Road图层; 3)选择,精确定位图象上的道路标志中心线,在拐点处点击鼠标左键,到终点 时鼠标右键,选择,生成一个线状要素; 4)将图中所有道路数字化为线状要素,为线状要素配置符号。 3、数字化[County]面状要素 1)在ArcMap标准工具栏中点击按钮,调用Editor工具条; 2)在工具栏[Target:]中选择County图层; 3)选择,精确定位图象上的县域的边界,并点击鼠标左键,到终点时鼠标右键,

基于ArcGIS+Server的WebGIS开发

基于ArcGISserver的webGIS开发 摘要:胁GISsemr是一个用来构建企业级webGIs的平台.首重研究了A稍IsServer的基本知识和系统架构后,并在.Net平台下结合实际进行了开发应用,同时指出了在开发中的若干注意事项。 关键词:ArcGlsSew%WebGIs;开发 l概述 we嘲s作为GIs新的发展方向,近几年来取得了巨大的发展,但无论是初期采用CGI技术、Plug-III技术,以及之后的采用JavaAp_pleI、Activex作为解决方案,在数据请求方面其始终遵循的是一种请求,响应模式【l】,用户体验差,严重阻碍了WebGIS的进一步发展。典型的解决方案是EsIu提供的AIcGISServ口。妣GIsserver支持GML3.0相关规范以及 OGC的wMS和wFs接口,通过其webAp-pHcati佣和webServiee构架,在8,s模式下,可在普通IE浏览器环境中获得类似ArcInfo的专业空间数据管理和GIs分析功能,使GIs应用系统在分布式环境下的数据共享和互操作 成为可能,还提供后台服务功能扩展机制。着重研究ArcGIsServer中的体系结构及在.№t平台下基于ArcGIsSer"r9.2的应用开发。 2ArcGIsSe竹er体系研究 2.1系统简介 AJeGIsserv日是一个发布企业级Gls应用程序的综合平台,提供了创建和配置GIS应用程序和服务的框架,并实现空问数据管理,空间可视化,空间分析的功能隅。 2.2关键概念 2.2.1服务器对象管理器CsoM)soM是运行在GISServer上的window“Ulli)【服务,管理分布于一个或多个容器服务器中的服务器对象或服务器对象组。当web应用通过LAN或wAN直接连接到GIsserver时,实际是建立—个与soM的连接,连接参数是运行SoM的服务器名称或Ⅲ地址。 2.2.2服务器对象容教Salc)SOC是一个运行一个或多个服务器对象的进程。SOC进程由s0M启动和终止。SOC进程运行于GISServef的容器服务器之上,每一个容器服务器可以宿主多个soc进程。 2.2.3服务器上下文 一个服务器上下文是运行一组服务器对象的服务器上的保留空间。可以将服务器上下文想象成一个进程,由运行服务器对象的服务器管理。服务器上下文提供了一种在相同空间和“进程”中创建对象的方法。并作为一个运行的服

相关主题
文本预览
相关文档 最新文档