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

 

Pied de page des forums

Powered by FluxBB