六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 101|回复: 0

用Data source-specific APIs 编程

[复制链接]

升级  65.33%

124

主题

124

主题

124

主题

举人

Rank: 3Rank: 3

积分
396
 楼主| 发表于 2013-1-29 23:31:28 | 显示全部楼层 |阅读模式
ArcGIS Server APIs
SOAP
1)XML-structured 语言。
2)对server objects和server object extensions可用。
3)设计用作stateless 交互。
4)Catalog 请求由IServerCatalogAdmin 接口处理。
5)Service 请求由IRequestHandler 接口处理。
ArcObjects
1)远程与GIS Server上的ArcObjects 交互。
2)使用客户端的Primary Interop Assemblies (PIA) 和object libraries。
3)通过SOM访问获得ArcGIS Server services。
4)设计用作stateless 和stateful 交互。

ArcGIS Server MapResource 类型

AMapResourceInternet – 连接到Web service endpoint
BMapResourceLocal – 连接到Server Object Manager
1)访问ServerContext
2)使用ArcObjects
 
ArcGIS Server Internet: SOAP编程

1)MapResourceInternet
MapServerProxy, 访问value objects
2)通讯是stateless
3)使用pooled objects
Dim mapRes as ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceInternet
mapRes = gisFunc.Resource
Dim mapsProxy as ArcGISServer.MapServerProxy = mapRes.MapServerProxy
Dim mapInfo as ArcGISServer.MapServerInfo =
mapsProxy.GetServerInfo(mapsProxy.GetDefaultMapName())
Dim mapDesc as ArcGISServer.MapDescription = mapInfo.DefaultMapDescription
Dim mLayerInfo as ArcGIServer.MapLayerInfo()
mLayerInfo = mapRes.MapServerInfo.MapLayerInfos
Dim layerDescs as ArcGISServer.LayerDescription()
layerDescs = mapDesc.LayerDescriptions
 

ArcGIS Server Local: ArcObjects 编程

1)远程访问ArcObjects
2)MapServerLocal
MapServer > IMapServer (COM) >IMapServerObjects (COM)
3)通过.NET部件访问高级的functionality
 
Dim mapFunc as IMapFunctionality = Map1.GetFunctionality(0)
Dim ags_mr as ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal
ags_mr =
CType(mapFunc.Resource,ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal)
' Access the ArcObjects COM ServerObject directly
Dim mapServer as ESRI.ArcGIS.Carto. IMapServer = CType(ags_mr.MapServer,IMapServer)
Dim mapServerObjs as ESRI.ArcGIS.Carto.IMapServerObjects
mapServerObjs = CType(mapServer,IMapServerObjects)
Dim map as ESRI.ArcGIS.Carto.IMap = mapServerObjs.Map
' Now perform more ArcObjects operations
Dim featClass as IFeatureClass = CType(map.Layers(0)).FeatureClass,
 
 
深入ArcGIS Server Local API

1)MapResourceLocal
通过DCOM访问server上的ArcObjects
ServerContext
2)所有的过程在远程完成<strong style="" />
 
 

 
ArcObjects 远程编程

1)能在服务器上创建新的对象<strong style="" />
2)MapServerLocal
ServerContextInfo
ServerContext
3)不需要release servercontext
Dim ags_mr as ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal
ags_mr =
CType(qfunc.Resource,ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal)
' Create a new ArcObjects COM objects
Dim context as ESRI.ArcGIS.Server.IServerContext = ags_mr.ServerContextInfo.ServerContext
Dim pnt as ESRI.ArcGIS.Geometry.IPoint = context.CreateObject("esriGeometry.Point")
pnt.X = 60
pnt.Y = 100
Dim topo as ESRI.ArcGIS.Geometry.ITopologicalOperator = CType(pnt, Itopological)
<span style="font-size: 9pt;" /> 
常用开发模式

--首先建立连接Identity identity = new Identity("username", "pwd", "domain");AGSServerConnection connection = new AGSServerConnection("fmc-pca187", identity);connection.Connect();--获得服务器对象IServerObjectManager m_pSOM = connection. ServerObjectManager ;IServerContext m_pServerContext = m_pSOM. CreateServerContext (" testMap" , "MapServer" ) ;IMapServer pMapServer = m_pServerContext . ServerObject  as IMapServer ;--使用服务器对象IMapServerObject s pMapServerObject s = ( IMapServerObject s) pMapServer ;IMap pMap = pMapServerObject s. get_Map (pMapServer .DefaultMapName) ;IFeatureLayer p FLayer = ( IFeatureLayer) pMap. get_Layer(0) ;IFeatureClass p FeatureClass = p FLayer . FeatureClass ;int i = p FeatureClass. FeatureCount (null) ; --释放服务器对象m_pServerContext . ReleaseContext () ;  
 

 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表