banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Thu 07 September 2006 15:41

Yann LE JUNTER
Invité

Récupérer Définition d'un layer

Bonjour,

Quelqu'un sait-il comment récupérer par programmation la définition d'un
layer, càd ce qui est inscrit comme définition de l'onglet général de la
fenêtre de propriétés d'une couche [sans faire apparaître cette fenêtre]

merci

yann

 

#2 Fri 08 September 2006 09:35

Frédéric Prally
Participant occasionnel
Date d'inscription: 25 Oct 2005
Messages: 16

Re: Récupérer Définition d'un layer

Bonjour,

Voici un exemple de code qui va te permettre de savoir si ta couche sélectionnée possède ou non un ensemble de définition; et si c'est le cas une boite de dialogue affiche l'expression de la requete.

Code:

Public Sub Test()
'Description : Permet d'afficher l'ensemble de définition de la couche sélectionnée dans la TOC
'Date : septembre 2006

    Dim pMxDoc As IMxDocument
    Set pMxDoc = ThisDocument
    
    Dim pLayer As ILayer
    Set pLayer = pMxDoc.SelectedLayer
    
    'Vérifie que la couche sélectionné est bien de type FeatureLayer
    If TypeOf pLayer Is IFeatureLayer Then
        
        Dim pFLDEF As IFeatureLayerDefinition
        Set pFLDEF = pLayer
        
        If pFLDEF.DefinitionExpression = "" Then
            MsgBox "La couche " & pLayer.Name & " ne possède pas un ensemble de définition."
        Else
            MsgBox "La couche " & pLayer.Name & " possède un ensemble de définition :" _
                    & vbNewLine & pFLDEF.DefinitionExpression
        End If
        
    Else
        'Sinon message + sortie
        MsgBox "Veuillez sélectionner une classe d'entités.", vbInformation
        Exit Sub
    End If
    
End Sub

En espérant que cela t'aide.

Hors ligne

 

#3 Fri 08 September 2006 11:11

nasca
Participant occasionnel
Date d'inscription: 5 Sep 2005
Messages: 23

Re: Récupérer Définition d'un layer

Ma question ne concerne pas l'ensemble de définition "DefinitionExpression"
mais la définition associée au layer (tab général). Le seul moyen que je
connaisse consiste à avoir le layer dans la map. Si le layer est dans la
map, il est possible de récupérer la définition associée au layer via
l'interface IMapLayerInfo. Cependant je cherche à obtenir cette info sans
avoir à afficher ce layer dans la map et là....je suis coincé.....

Hors ligne

 

#4 Fri 08 September 2006 14:02

Frédéric Prally
Participant occasionnel
Date d'inscription: 25 Oct 2005
Messages: 16

Re: Récupérer Définition d'un layer

Bonjour,

Voici un exemple qui va te permettre de récupérer le texte de description de la couche via ArcCatalog cela peu peut-être te donner une piste pour éviter de charger la couche (macouche.lyr) dans Arcmap.

Toutefois, comme je pense que tu utilises MapServer (?) je ne suis pas certain que cela puisse t'aider.

Code:

Public Sub Test01()
'Description : Affiche la description de la couche d'un fichier *.lyr
'              à partir d'ArcCatalog
'Date : septembre 2006
'Version : ArcView 9.0

    Dim pGxApp As IGxApplication
    Set pGxApp = Application
    
    'Récupére l'objet sélectionné
    Dim pGxSel As IGxSelection
    Set pGxSel = pGxApp.Selection
    
    Dim pGxObjet As IGxObject
    Set pGxObjet = pGxSel.FirstObject
    
    'Récupère l'emplacement du chier
    Dim pGxLayer As IGxLayer
    Set pGxLayer = New GxLayer
    
    Dim pGxFile As IGxFile
    Set pGxFile = pGxLayer
        pGxFile.Path = pGxObjet.FullName
        
   Dim pLayer As ILayer
   Set pLayer = pGxLayer.Layer
   
   'Affiche la description de la couche
   Dim pLGenPro As ILayerGeneralProperties
   Set pLGenPro = pLayer
   If Not pLGenPro.LayerDescription = "" Then
        MsgBox pLGenPro.LayerDescription
    Else
        MsgBox "Pas de description associée à " & pLayer.Name
   End If
End Sub

Hors ligne

 

#5 Sat 09 September 2006 17:08

nasca
Participant occasionnel
Date d'inscription: 5 Sep 2005
Messages: 23

Re: Récupérer Définition d'un layer

merci bcp pour cette réponse qui répond à mon problème. En effet je ne
connaissais pas l'interface "ILayerGeneralProperties".
C'est elle qui me manquait.

merci

yann

Hors ligne

 

Pied de page des forums

Powered by FluxBB