Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

Annonce

GEODATA DAYS 2024

#1 Tue 15 July 2008 09:49

othke
Participant occasionnel
Lieu: Saint Denis
Date d'inscription: 8 Nov 2007
Messages: 13
Site web

[ArcGis 9.1] Données attributaire selon l'entête légende

Bonjour à ceux qui ne sont pas encore en vacances.

Je cherche à extraire dans un tableau les données (parcellaires) de la table attribuaire que j'ai classé avec le système des entêtes dans ma légende. Je ne vois pas comment récupérer les valeurs d'entêtes que j'ai définies dans la légende (Particuliers, Copropriétaires, Bailleurs sociaux, etc.).

Si quelqu'un connaît un script ou une méthode, je suis preneur.

Merci.

Hors ligne

 

#2 Fri 18 July 2008 15:02

Tnarbiv
Participant assidu
Lieu: Véretz
Date d'inscription: 5 Sep 2005
Messages: 392

Re: [ArcGis 9.1] Données attributaire selon l'entête légende

sous quelle forme souhaiterais tu récupérer les infos dans le tableau ?


Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.

Hors ligne

 

#3 Fri 18 July 2008 16:02

othke
Participant occasionnel
Lieu: Saint Denis
Date d'inscription: 8 Nov 2007
Messages: 13
Site web

Re: [ArcGis 9.1] Données attributaire selon l'entête légende

Bonjour,

Je voudrais récupérer mes données dans une table, qui trierait mais entités grâce au nom de l'entête.
Je ne pense pas que ce soit possible, puisque le nom de l'entête n'est pas issu d'un champ, il s'agit juste d'une option de mise en forme de la légende.

La solution serait de créer un champ qui ventile ces valeurs, mais je me suis tapé un tri manuel dans l'onglet symbologie, si ça pouvez ne pas être à usage unique ça serait pas mal.

Si tu vois autre chose...

Hors ligne

 

#4 Fri 18 July 2008 16:19

Tnarbiv
Participant assidu
Lieu: Véretz
Date d'inscription: 5 Sep 2005
Messages: 392

Re: [ArcGis 9.1] Données attributaire selon l'entête légende

via une macro vba j'ai reussi à récupérer les entêtes ainsi et le nom des données.
j'ai pris un exemple avec les départements français.
une entete correspond à une région et j'ai ranger chaque departements en fonction de l'entete. (fait manuellement)
à partir de là j'ai créé une table dbf toute simple (cf pieces jointes)

Dernière modification par Tnarbiv (Fri 18 July 2008 16:21)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.

Hors ligne

 

#5 Mon 21 July 2008 11:16

Tnarbiv
Participant assidu
Lieu: Véretz
Date d'inscription: 5 Sep 2005
Messages: 392

Re: [ArcGis 9.1] Données attributaire selon l'entête légende

Voici un début de code :


Code:

Public Sub test()

    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.fileexists("c:\temp\test.dbf") Then fso.deletefile "c:\temp\test.dbf", True
    
    Dim pmxdoc As IMxDocument
    Set pmxdoc = ThisDocument
    Dim pmap As IMap
    Set pmap = pmxdoc.FocusMap
    Dim player As ILayer
    Set player = pmap.Layer(0)
    Dim pfl As IFeatureLayer
    Set pfl = player
    Dim pgfl As IGeoFeatureLayer
    Set pgfl = pfl
    Dim pfr As IFeatureRenderer
    Set pfr = pgfl.Renderer
    Dim i As Integer
    Dim ptable As ITable
    Dim pwsf As IWorkspaceFactory
    Set pwsf = New ShapefileWorkspaceFactory
    Dim pws As IWorkspace
    Set pws = pwsf.OpenFromFile("c:\temp", 0)
    Dim pfldentete As IFieldEdit
    Dim pfldnom As IFieldEdit
    Dim pfieldsedit As IFieldsEdit
    Set pfieldsedit = New Fields
    
    Set pfldentete = New Field
    Set pfldnom = New Field
    
    With pfldentete
        .Name = "EN_TETE"
        .Type = esriFieldTypeString
        .Length = 30
    End With
    
    With pfldnom
        .Name = "NOM"
        .Type = esriFieldTypeString
        .Length = 30
    End With
    
    pfieldsedit.AddField pfldentete
    pfieldsedit.AddField pfldnom
    
    Dim pfields As IFields
    Set pfields = pfieldsedit
    
    Dim pfws As IFeatureWorkspace
    Set pfws = pws
    
    Set ptable = pfws.CreateTable("test", pfields, Nothing, Nothing, "")
    
    'Debug.Print ptable.Fields.FieldCount
    
    Dim pcursor As ICursor
    Set pcursor = ptable.Search(Nothing, True)
    Dim prow As IRow
        
    If TypeOf pfr Is UniqueValueRenderer Then
        Dim puvr As IUniqueValueRenderer
        Set puvr = pfr
        For i = 0 To puvr.ValueCount - 1
            Set prow = ptable.CreateRow
            'Debug.Print puvr.Heading(puvr.Value(i))
            prow.Value(1) = puvr.Heading(puvr.Value(i))
            'Debug.Print puvr.Value(i)
            prow.Value(2) = puvr.Value(i)
            prow.Store
        Next i
    Else
        Exit Sub
    End If
    
    Dim pli As ILegendInfo
    Set pli = pfr
    
    Debug.Print pli.LegendGroupCount
    Dim j As Integer
    
    For i = 0 To pli.LegendGroupCount - 1
        Debug.Print pli.LegendGroup(i).Heading
        Debug.Print pli.LegendGroup(i).ClassCount
        For j = 0 To pli.LegendGroup(i).ClassCount - 1
            Dim plegendclass As ILegendClass
            Set plegendclass = pli.LegendGroup(i).Class(j)
            Debug.Print plegendclass.Label
        Next j
    Next i
    
End Sub

Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.

Hors ligne

 

Pied de page des forums

Powered by FluxBB