使用AE获取ArcService服务
在ArcGIS上有获取ArcService服务的功能,通过这个功能我们可以很方便的获取一些别人在ArcService上发布的服务而不需要对数据进行繁琐的拷贝,对于一些需要运用数据量很大的使用者来说是一个很方便的基本功能。
在实现通过AE获取ArcService服务的功能前,必须对ArcService所能发布的服务以及服务的类型有一个大致的了解,这里简单介绍几种常见的服务类型:ArcService的基本服务类型MapService、OGC订立的标准地图服务WMS和标准切片地图服务WMTS。这三种不同服务使用AE。
1、获取ArcService服务:
//设置连接参数
IPropertySet2 pPropertySet = new PropertySetClass();
pPropertySet.SetProperty("url", serverUrl);
pPropertySet.SetProperty("ConnectionMode", esriAGSConnectionMode.esriAGSConnectionModeConsumer);
pPropertySet.SetProperty("user", user);
pPropertySet.SetProperty("password", password);
IAGSServerConnectionName3 pConnectionName = new AGSServerConnectionNameClass() as IAGSServerConnectionName3;
pConnectionName.ConnectionProperties = pPropertySet;
IAGSServerConnection4 pServerConnection = ((IName)pConnectionName).Open() as IAGSServerConnection4;
//获取ArcService的服务资源
IAGSEnumServerObjectName pEnumServerObjectName = pServerConnection.ServerObjectNames;
pEnumServerObjectName.Reset();
IAGSServerObjectName pServerObjectName = pEnumServerObjectName.Next();
while (pServerObjectName != null )
{
if (pServerObjectName.Type == "MapServer")
{
IName pName = (IName)pServerObjectName;
IAGSServerObject pServerObject = (IAGSServerObject)pName.Open();
IMapServer pMapServer = (IMapServer)pServerObject;
IMapServerLayer layer = new MapServerLayerClass();
layer.ServerConnect(pServerObjectName, pMapServer.DefaultMapName);
GetServerLayer.MainForm.pMapControl.AddLayer((ILayer)layer);
}
pServerObjectName = pEnumServerObjectName.Next();
}
2、获取WMS服务
//输入WMS服务的url加载图层资源
private void OpenWms(string pURL)
{
IPropertySet pPropertyset = new PropertySetClass();
pPropertyset.SetProperty("url", pURL);
IWMSConnectionFactory pWmsFac = new WMSConnectionFactory();
IWMSConnection pWmsC = pWmsFac.Open(pPropertyset, 0, null);
IWMSConnectionName pWmsConnectionName = pWmsC.FullName as IWMSConnectionName;
//下面的也可以
//IWMSConnectionName pWmsConnectionName = new WMSConnectionNameClass();
//pWmsConnectionName.ConnectionProperties = pPropertyset;
ILayerFactory pLayerFactory = new EngineWMSMapLayerFactoryClass();
if (pLayerFactory.get_CanCreate(pWmsConnectionName))
{
IEnumLayer pEnumLayer = pLayerFactory.Create(pWmsConnectionName);
pEnumLayer.Reset();
ILayer pLayer = pEnumLayer.Next();
while (pLayer != null)
{
if (pLayer is IWMSMapLayer)
{
IWMSMapLayer pWmsMapLayer = pLayer as IWMSMapLayer;
IWMSGroupLayer pWmsGroupLayer = pWmsMapLayer as IWMSGroupLayer;
IGroupLayer pGroupLayer = new GroupLayerClass();
pGroupLayer.Add(pLayer);
GetServerLayer.MainForm.pMapControl.AddLayer(pGroupLayer as ILayer);
}
pLayer = pEnumLayer.Next();
}
}
}
3、获取WMTS服务
//输入WMTS服务的url加载图层资源
private void OpenWMTS(string pURL)
{
IPropertySet pPropertyset = new PropertySetClass();
pPropertyset.SetProperty("url", pURL);
IWMTSConnectionFactory pWMTSFac = new WMTSConnectionFactoryClass
();
IWMTSConnection pWMTS = pWMTSFac.Open(pPropertyset, 0, null);
IWMTSConnectionName pWmtsConnectionName = pWMTS.FullName as IWMTSConnectionName;
//下面的也可以
//IWMSConnectionName pWmsConnectionName = new WMSConnectionNameClass();
//pWmsConnectionName.ConnectionProperties = pPropertyset;
ILayerFactory pLayerFactory = new WMTSLayerFactoryClass();
if (pLayerFactory.get_CanCreate(pWmtsConnectionName))
{
IEnumLayer pEnumLayer = pLayerFactory.Create(pWmtsConnectionName);
pEnumLayer.Reset();
ILayer pLayer = pEnumLayer.Next();
while (pLayer != null)
{
if (pLayer is IWMTSLayer)
{
IWMTSLayer pWmsMapLayer = pLayer as IWMTSLayer;
GetServerLayer.MainForm.pMapControl.AddLayer(pWmsMapLayer as ILayer);
}
pLayer = pEnumLayer.Next();
}
}
}
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用(三)
- UniqueService(解决事务时获取服务地址后直接使用)
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android中获取正在运行的服务:ActivityManager.RunningServiceInfo的使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android 获取正在运行的服务 ActivityManager.RunningServiceInfo使用
- 线程池ExecutorService和完成服务CompletionService的使用获取线程的返回结果
- Android中获取正在运行的服务 ActivityManager RunningServiceInfo的使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
- 如何在 Web 服务中使用 Service Data Objects 2.1 的动态数据 API
- 苹果信息推送服务(Apple Push Notification Service)使用总结 .
- Sharepoint2010使用AJAx 获取 OData Service (实现客户端获取sharepoint2010的数据)---第一篇
- 如何使用Exchange Web Service获取日历(包含循环会议)