Question

Je voudrais ajouter un Ilayer créé à partir d'un service de carte ArcGIS Server à un IMAP avec Arcobjects, mais ne voyez pas comment le faire.

Je reçois un iMapServer3 avec le code suivant, où mapname = le service map:

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

Il semble que je puisse obtenir un ILayer d'un iMapserverGrouplayer, mais il semble que l'imapserverGrouplayer recherche un type de connexion différent de celui que j'utilise.

Si vous avez un exemple d'obtention d'un ILayer à partir d'un service de carte, votre aide est appréciée.

Était-ce utile?

La solution

C'est ce qui a fonctionné ...

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();
} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top