#1 Wed 18 August 2004 11:43
- Nicolasvalls
- Invité
Outil de selection par polyligne
bonjour,
N'ayant pas obtenu de reponse resolvant mon probleme, je reitere ma question.
En programmation, je souhaiterai selectionner des points a l'aide d'une polyligne. La polyligne est bien tracee mais je n'arrive pas a selectionner les points. Le probleme vient du fait que la polyligne ne passe pas exactement (ce qui est impossible) sur les points.
Je pense qu'il faudrait construire un buffer (zone tampon) sur la polyligne ce qui permettrai de selectionner les points contenus dans ma polyligne. Je ne sais pas qu'elle methode utiliser ni quel type d'objet. Voici mon code pour la creation de la polyligne :
Code:
Sub selection_polylignes() Dim mondoc As IMxDocument, macarte As IMap, monenv As ISelectionEnvironment Dim monelastik As IRubberBand, maligne As IPolyline Set mondoc = ThisDocument Set monenv = New SelectionEnvironment monenv.AreaSelectionMethod = esriSpatialRelContains Set macarte = mondoc.Maps.Item(0) Set monelastik = New RubberLine Set maligne = monelastik.TrackNew(mondoc.ActivatedView.ScreenDisplay, Nothing) If maligne Is Nothing Then Exit Sub macarte.SelectByShape maligne, monenv, False mondoc.ActiveView.Refresh End Sub
PS: Je n'ai pas a ma disposition les CD de documentation Arcview
Merci de vos reponses.
www.nicolasvalls.fr.fm
#2 Wed 18 August 2004 14:21
- Olivier GUYOT-DE-LA-POMMERAYE
- Invité
Re: Outil de selection par polyligne
Bonjour,
Vous allez effectivement etre oblige de passer par un buffer; voila comment je procederais:
1 - vous allez creer un buffer sur la base de votre Polyline d'entree
2 - vous allez faire une selection spatiale sur votre couche de point a partir du Polygone Buffer
3 - et ajouter les entites a la selection de votre couche de points
En pratique voila ce que cela pourrait donner:
ATTENTION il s'agit de "pistes" pas d'un bout de code pret a l'emploi, il n'a pas ete teste, et encore moins debugge.
Code:
'Instanciation de l'Objet permettant de generer un polygone a partir d'un Arc Dim oITopologicalOperator As ITopologicalOperator Set oITopologicalOperator = VOTRE_OBJET_POLYLINE 'Instanciation de l'Objet qui va recevoir le Buffer Dim oGeom As IGeometry 'Bufferisation a 1 metre Set oGeom = oITopologicalOperator.Buffer(1) 'Preparation du Filtre Spatial avec le Polygone Buffer Dim oSpatialFilter As ISpatialFilter Set oSpatialFilter = New SpatialFilter Set oSpatialFilter.Geometry = oGeom oSpatialFilter.GeometryField = "SHAPE" oSpatialFilter.SpatialRel = esriSpatialRelIntersects 'La on fait l'intersection avec vos POINTS Dim oIntersectFeatureCursor As IFeatureCursor Set oIntersectFeatureCursor = VOTRE_FEATURECLASS_DE_POINTS.Search(oSpatialFilter, False) Dim oIntersectFeature As IFeature Dim oIntersectIFeatureSelection As IFeatureSelection Set oIntersectIFeatureSelection = VOTRE_ILAYER_DE_POINT 'Parcours des POINTS Impactes Set oIntersectFeature = oIntersectFeatureCursor.NextFeature Do While Not oIntersectFeature Is Nothing 'Ajout a la FeatureSelection oIntersectIFeatureSelection.Add oIntersectFeature Set oIntersectFeature = oIntersectFeatureCursor.NextFeature Loop 'Instanciation des Objets ArcMap Dim oMxDoc As IMxDocument Set oMxDoc = Application.Document Dim oMap As IMap Set oMap = oMxDoc.FocusMap Dim oActiveView As IActiveView Set oActiveView = oMap 'Rafraichissement de la selection oActiveView.PartialRefresh esriViewGeoSelection, Nothing, Nothing
Pour ce qui est de l'aide ArcObject, si celle ci n'est pas installe sur votre machine, une version "UpToDate" est presente a l'adresse suivante : http://arcobjectsonline.esri.com/
Bonne continuation,
Cordialement,
Olivier Guyot de La Pommeraye
#3 Wed 18 August 2004 16:21
- Honza
- Invité
Re: Outil de selection par polyligne
De: Honza
juste un conseil, visitez le site et le forum US d'ESRI plus a meme de vous aider sur les questions de programmation (but in english of course)
http://support.esri.com/
http://arcobjectsonline.esri.com/
par ex, vous devriez y arriver en adaptant le code suivant
http://forums.esri.com/Thread.asp?c=93& … 538#237177