Как создать слой ArcMap из картографического сервиса ArcGIS

StackOverflow https://stackoverflow.com/questions/5407018

Вопрос

Я хотел бы добавить слой ILayer, созданный из сервиса карт ArcGIS Server, в IMap с помощью ArcObjects, но не знаю, как это сделать.

Я получаю IMapServer3 со следующим кодом, где mapName= картографический сервис:

родовое слово

Похоже, я могу получить ILayer из IMapServerGroupLayer, но похоже, что IMapServerGroupLayer ищет другой тип подключения, чем я использую.

Если у вас есть пример получения ILayer из картографического сервиса, мы будем признательны за вашу помощь.

Это было полезно?

Решение

Это то, что работало ...

private static void GetLayerFromMapServerLayer()
{

IAGSServerConnectionName servConnName = new AGSServerConnectionNameClass();
IPropertySet props = new PropertySetClass();
props.SetProperty("machine", "server");
servConnName.ConnectionProperties = props;



IAGSServerConnectionFactory pAGSServerConnectionFactory = new AGSServerConnectionFactoryClass();
IAGSServerConnection pAGSConnection = pAGSServerConnectionFactory.Open(props, 0);



IAGSEnumServerObjectName pEnumSOName = pAGSConnection.ServerObjectNames;

IAGSServerObjectName pSOName = pEnumSOName.Next();

while (pSOName != null)
{
if (pSOName.Name == "Base_Map")
break;
pSOName = pEnumSOName.Next();
}

IName pName = (IName)pSOName;
IMapServer mapServer = (IMapServer)pName.Open();

IMapServerLayer msLyr = new MapServerLayerClass();
msLyr.ServerConnect(pSOName, mapServer.DefaultMapName);

IMapServerGroupLayer group = (IMapServerGroupLayer)msLyr;

ILayer msLayer = (ILayer)msLyr;

//return msLayer;
MapDocument mapDoc = new MapDocumentClass();
mapDoc.Open(@"F:\~mkoneya~2011_82_13_58_30.mxd");
IMap myMap = mapDoc.get_Map(0);
myMap.AddLayer(msLayer);
mapDoc.Save();
} 
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top