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é ?

#1 Tue 07 October 2008 11:49

Fabien.Krzewinski
Participant occasionnel
Date d'inscription: 19 Aug 2008
Messages: 18

[ArcGIS 9.x] [VBA] Requête spatiale avec sélection préalable

Bonjour à tous,

J'aimerais pouvoir programmer en VBA une requête spatiale en ayant au préalable sélectionné des éléments (par une requête d'attribut). J'ai joint l'image de l'interface depuis ArcMap de ce que j'aimerai créer.

Si quelqu'un avait un exemple concret, ça m'aiderait beaucoup !

Merci !

Fabien


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

Hors ligne

 

#2 Tue 07 October 2008 18:58

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: [ArcGIS 9.x] [VBA] Requête spatiale avec sélection préalable


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#3 Wed 08 October 2008 12:01

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

Re: [ArcGIS 9.x] [VBA] Requête spatiale avec sélection préalable

Bonjour,

voici un bout de code qui fonctionne chez moi, à toi de l'adapter :

Code:

Option Explicit

Sub test()
    Dim pMxDoc As IMxDocument
    Set pMxDoc = ThisDocument
    Dim pMap As IMap
    Set pMap = pMxDoc.FocusMap
    Dim pLayer_Point As ILayer
    Set pLayer_Point = pMap.Layer(0)
    Dim pLayer_Polygon As ILayer
    Set pLayer_Polygon = pMap.Layer(1)
    Dim pFL_Point As IFeatureLayer
    Set pFL_Point = pLayer_Point
    Dim pFL_Polygon As IFeatureLayer
    Set pFL_Polygon = pLayer_Polygon
    
    Dim pQueryFilter As IQueryFilter
    Set pQueryFilter = New QueryFilter
    pQueryFilter.WhereClause = "CODE_DEPT ='77' OR CODE_DEPT='51'"
    
    Dim pPolyFCursor As IFeatureCursor
    Set pPolyFCursor = pFL_Polygon.FeatureClass.Search(pQueryFilter, True)
    
    Dim pFSel As IFeatureSelection
    Set pFSel = pFL_Polygon
    Dim pFeature As IFeature
    Set pFeature = pPolyFCursor.NextFeature
    
    Dim pSFilter As ISpatialFilter
    Set pSFilter = New SpatialFilter
    
    While Not pFeature Is Nothing
        
        Set pSFilter.Geometry = pFeature.Shape
        pSFilter.SpatialRel = esriSpatialRelIntersects
        Dim pPointCursor As IFeatureCursor
        Set pPointCursor = pFL_Point.FeatureClass.Search(pSFilter, True)
    
        Dim pSFSel As IFeatureSelection
        Set pSFSel = pFL_Point
        Dim pSFeature As IFeature
        Set pSFeature = pPointCursor.NextFeature
    
        While Not pSFeature Is Nothing
            pSFSel.Add pSFeature
            Set pSFeature = pPointCursor.NextFeature
        Wend
        
        pFSel.Add pFeature
        Set pFeature = pPolyFCursor.NextFeature
    Wend
    pMxDoc.ActiveView.Refresh
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