#1 Thu 23 December 2004 09:46
- Atilio FRANCOIS
- Invité
AV8 Selectionner par entites par programme
ArcGis ArcView 8.3
J'essaye de realiser une selection spatiale a l'interieur d'un programme VB.
J'ai trouve comment faire l'equivalent de selectionner par attributs
(QueryFilter) et de selection par elements graphiques (SelectbyShape),
mais je n'arrive pas a trouver le mecanisme pour faire l'equivalent de
selectionner par entites .
Si quelqu'un a une piste...
Merci d'avance
Atilio FRANCOIS
#2 Thu 23 December 2004 09:46
- MEAR Laurent
- Invité
Re: AV8 Selectionner par entites par programme
Bonjour,
Voici une fonction qui fait un croisement spatial entre une couche et un element d'une autre couche.
Code:
Private Sub Intersect(ByVal pOverlayFClass As IFeatureClass, ByVal pIntersectFClass As IFeatureClass, ByVal pIntersectFeature As IFeature) ' pOverlayFClass : a initialiser avec la couche de base ' pIntersectFClass : a initialiser avec la couche qui l'intersecte ' pIntersectFeature : l'entite de la couche qui va recouvrir l'autre (un polygone le plus souvent) Dim pSpatialFilter As ISpatialFilter = New SpatialFilter pSpatialFilter.GeometryField = pIntersectFClass.ShapeFieldName pSpatialFilter.Geometry = pIntersectFeature.Shape pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects Dim pOverlayFCursor As IFeatureCursor = pOverlayFClass.Search(pSpatialFilter, False) 'croisement spatial ' parcourir les entites intersectees Dim pOverlayFeature As IFeature = pOverlayFCursor.NextFeature While Not pOverlayFeature Is Nothing ' Mettre ici le traitement a faire pour chaque entite pOverlayFeature = pOverlayFCursor.NextFeature End While End Sub
Laurent