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

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

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

serverContext = som.CreateServerContext(mapName, "MapServer");
IServerObject serverObject = serverContext.ServerObject;
IMapServer3 mapServer = (IMapServer3)serverObject;

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

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


person Mele Koneya    schedule 23.03.2011    source источник


Ответы (1)


Вот что сработало ...

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();
} 
person Mele Koneya    schedule 23.03.2011
comment
Рад видеть, что вы решили свою проблему! Не забудьте отметить свой ответ как принятый, нажав на галочку слева. - person Jason Plank; 25.03.2011