#1 Mon 21 July 2008 17:36
- Fos4
- Participant occasionnel
- Date d'inscription: 7 May 2008
- Messages: 12
[ArcMap 8.3] aligner symbole sur polyligne
Bonjour,
je souhaiterais placer des symboles représentant des sens d'écoulement sur des polylignes formant
un réseau de canalisations.
J'arrive à placer un symbole flèche au milieu des polylignes, mais je n'arrive pas à l'aligner sur celles-ci.
Comment peut on s'y prendre pour créer une symbolique linéaire, qui placerait une fléche au milieu
de chaque polyligne. Les symbolique linéaires existantes permettent seulement de placer un symbole en bout de polyligne
et cela cache le regard suivant ....
Merci d'avance pour votre aide
Hors ligne
#2 Mon 21 July 2008 17:48
- Tnarbiv
- Participant assidu
- Lieu: Véretz
- Date d'inscription: 5 Sep 2005
- Messages: 392
Re: [ArcMap 8.3] aligner symbole sur polyligne
En créant un symbole multi-couches peut être que tu pourrais trouver ton bonheur.
Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.
Hors ligne
#3 Mon 21 July 2008 18:11
- Fos4
- Participant occasionnel
- Date d'inscription: 7 May 2008
- Messages: 12
Re: [ArcMap 8.3] aligner symbole sur polyligne
Malheureusement, les symboles multi-couches sont apparemment essentiellement là pour
habiller l'origine et la fin des polylignes, ce qui ne peut m'aider, en tatonnant il est impossible d'arriver
à un habillage correct dés lors que l'on joue sur les espacement / taille décalage et autres ....
Cela me semble étrange qu'un SIG ne permette pas de dessiner des sens d'écoulement
convenablement ...
Hors ligne
#4 Mon 21 July 2008 19:11
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: [ArcMap 8.3] aligner symbole sur polyligne
Salut
J'ai réussi à faire des polylignes avec des flèches sur la ligne sans qu'il y en ait au début et à la fin et de la bonne orientation. Je crois que Tnarbiv a la solution.
Daniel
De retour à la géomatique
Hors ligne
#5 Mon 21 July 2008 19:59
Re: [ArcMap 8.3] aligner symbole sur polyligne
Daniel, pourrais-tu donner ta méthode ?
Car j'ai trouvé aussi une manière de faire des lignes avec des flèches sur la ligne mais pas aux extrémités, mais je trouve ça un peu compliqué : Je crée un symbole de flèche composite, dont un symbole invisible décalé du décalage que je veux avoir aux extrémités.
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#6 Mon 21 July 2008 20:28
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: [ArcMap 8.3] aligner symbole sur polyligne
Bonjour
La recette du bonheur!!!!! Lorsque l'on va dans les propriétés d'une couche ligne, SYMBOLOGIE - PROPRIÉTÉS, on ajoute une ligne avec le +. On clique sur cette nouvelle ligne, et on choisi Marker line symbol dans le type en haut. On clique sur symbole, propriétés, et en haut dans le type, on choisi arrow marker. On choisi la grosseur, et les autres paramètres de la flèche. On clique 2 fois sur OK pour revenir aux paramêtres de Marker Line Symbol. Dans l'onglet TEMPLATE, on déplace sur la ligne le point d'arrivée un peu plus loin et on déplace aussi le point de départ. La flèche ne commencera donc pas au début et ne terminera pas à la fin. Le tout dépend de l'échelle à laquelle on travail. Mais pour un réseau urbain, je crois que ça devrait bien fonctionner.
Faite une tentative et tenez-moi au courant.
Daniel
Dernière modification par Daniel (Mon 21 July 2008 20:35)
De retour à la géomatique
Hors ligne
#7 Tue 22 July 2008 09:10
- ancien
- Participant actif
- Lieu: Hautes-Pyrénées
- Date d'inscription: 28 Oct 2006
- Messages: 60
Re: [ArcMap 8.3] aligner symbole sur polyligne
Bonjour,
Je peux me tromper mais l'extension arcHydroTools le fait automatiquement, non? (flêches dans le sens de la digitalisation)
Bonne journée
Olivier Billard
Hors ligne
#8 Tue 22 July 2008 10:12
- Fos4
- Participant occasionnel
- Date d'inscription: 7 May 2008
- Messages: 12
Re: [ArcMap 8.3] aligner symbole sur polyligne
Bonjour,
en réponse Daniel :
la solution proposée marche pas trop mal, peut-être
que je chipote un peu aussi, enfin le problème vient que mes polylignes
sont de longueur trés inégale donc trouver une configuration de symbolique
en jouant sur les espacement et autre de la symbolique ponctuelle pour trouver
un arrangement qui convienne à toutes mes polylignes est trés hazardeux, le problème d'une
fléche "jointant" un regard et me masquant partiellement celui-ci, survient tôt ou tard.
Enfin cela donne déjà un rendu plus compréhensible qu'un réseau sans sens d'écoulement,
c'est déjà bien.
L'ancien :
je vais tacher de me renseigner sur le module indiqué, il me semble tout
désigné dans le cadre de mon travail.
Solution envisageable :
1- placer des points au milieu des polylignes
2- récupérer les angles des polylignes
3- insérer un symbole type fléche avec pour coordonnées le milieu et l'angle de la polyligne
4- Problèmes
- je ne sais pas récupérer l'angle des polylignes
- je ne sais pas insérer de symbole en fonction d'un angle
Merci à tous de vos contributions, je vous tiens au courant de l'avancement de mes recherches.
Hors ligne
#9 Tue 22 July 2008 14:38
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: [ArcMap 8.3] aligner symbole sur polyligne
Bonjour
Pour ce qui est de récupérer l'angle d'une polyligne, là je ne peux pas t'aider. Cependant, si tu fais une recherche sur le forum, peut-être que tu pourras trouver une réponse. Pour ce qui est d'insérer un symbole en fonction d'un angle, là c'est plus facile. Il suffit de mettre, dans la base de données du point (qui est probablement un shape), une colonne ANGLE et d'insérer l'angle que le point devra prendre. Dans les propriétés du symbole, dans l'onglet symbologie,, il y a un bouton avancé (advanced) et là il y a rotation. Tu choisi à partir de la colonne angle et le tour est joué. Important, bien comprendre comme ArcMAP place les angles. Je crois que tu peux utiliser deux types: géographique et arithmétique. Il y a une différence entre les deux de 90°.
Daniel
De retour à la géomatique
Hors ligne
#10 Tue 22 July 2008 18:47
Re: [ArcMap 8.3] aligner symbole sur polyligne
Daniel, il y a plus qu'une différence de 90°, il y a aussi le sens qui est différent. Ces mathématiciens font tout pas comme les autres, ils lisent un angle à partir de 15H (l'heure de la sieste), et ils remontent le temps (ils ont loupé le déjeuner), alors qu'un angle normal se lit à partir de 12H et vers 16H (le gouter ).
Récupérer l'angle d'une polyligne, je vois mal ce que cela signifie, à moins qu'aucune polyligne ne soit vraiment tordue, là il suffit de s'amuser avec les coordonnées des points extrêmes.
Par contre, si tu as des longueurs différentes, la solution est d'avoir une symbologie par ordre de grandeur des longueurs. Ça s'appelle une symbologie par valeur. Si le champ longueur n'est pas disponible, tu peux toujours le créer et le remplir automatiquement.
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#11 Tue 22 July 2008 20:15
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: [ArcMap 8.3] aligner symbole sur polyligne
Daniel, il y a plus qu'une différence de 90°, il y a aussi le sens qui est différent. Ces mathématiciens font tout pas comme les autres, ils lisent un angle à partir de 15H (l'heure de la sieste), et ils remontent le temps (ils ont loupé le déjeuner), alors qu'un angle normal se lit à partir de 12H et vers 16H (le gouter ).
Récupérer l'angle d'une polyligne, je vois mal ce que cela signifie, à moins qu'aucune polyligne ne soit vraiment tordue, là il suffit de s'amuser avec les coordonnées des points extrêmes.
Par contre, si tu as des longueurs différentes, la solution est d'avoir une symbologie par ordre de grandeur des longueurs. Ça s'appelle une symbologie par valeur. Si le champ longueur n'est pas disponible, tu peux toujours le créer et le remplir automatiquement.
Bonjour
J'aime bien l'analogie des heures de repas!!!
Pour ce qui est de l'angle, j'avais en tête des lignes simples, avec une paire de coordonnées au départ et une paire à l'arrivée. Mais oui, Jérôme a raison. À partir de FME, nous avons fait une procédure qui est capable de trouver l'orientation en degré d'un polygone. Ça doit être assez facile de transformer le calcul pour une polyligne mais dans ArcGIS.....
Je continue à vous suivre pour en savoir plus...
Daniel
De retour à la géomatique
Hors ligne
#12 Wed 23 July 2008 09:45
- Tnarbiv
- Participant assidu
- Lieu: Véretz
- Date d'inscription: 5 Sep 2005
- Messages: 392
Re: [ArcMap 8.3] aligner symbole sur polyligne
j'ai trouvé ça sur http://arcscripts.esri.com/details.asp?dbid=14234
Code:
'This script will select the first layer in the TOC, if it is a polyline and has at least 'one line/record selected, it will add two fields called AriAngle (Arithmetic Rotation aka Polar) 'and GeoAngle (Geographic Rotation aka North Azimuth) and populate the fields with angles for each 'selected line/record based upon its from to direction. 'CREATED BY: James Zazula, GIS Analyst, City of Barrie, Barrie, Ontario, Canada 'CREATED BY: James Zazula, GIS Consultant, GIS North, Barrie, Ontario, Canada 'Assistance provided by Kirsten Lowerey, Planning Technician, City of Barrie, Ontario, Canada 'If you would like to make improvements to the script, feel free to do so and send me the new script :) 'Created in ArcGIS 8.3, not tested in 9.x 'Portion of script based upon ESRI ILINE Example 'Portion of script based upon DOUGLAS R. GUESS - LANCASTER COUNTY ASSESSOR/REGISTER OF DEEDS OFFICE 'NOTES: 'A least one polyline must be selected 'The script will only work if the polyline layer is the first layer on the TOC 'To calculate the value of PI = 4 * Atn(1) 'To convert Angles to Radians (Radians = Angle in Degrees * (PI/180)) 'To convert Radians to Angles (Angles in Degrees = Radians * (180/PI)) ' Calculated Angle Arithmetic Angle Geographic Angle ' 90 90 0 ' | | | ' | | | ' 180 | | | ' -180 ----------- 0 180 ---------- 0 270 ----------- 90 ' | | | ' | | | ' | | | ' -90 270 180 'This script will choose the first layer in the TOC and makes sure that it is a polyline 'This script will make sure at least on polyline/record is selected 'You do not have to be in edit mode for this script to work, just run the macro FindPolylineAngle Public Sub FindAngle() Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument Dim pMap As IMap Set pMap = pMxDoc.FocusMap If pMxDoc.FocusMap.LayerCount = 0 Then MsgBox "Must have at least one layer.", vbExclamation Exit Sub End If Dim pFeatSelection As IFeatureSelection Set pFeatSelection = pMxDoc.FocusMap.Layer(0) Dim lCache As Long lCache = pMxDoc.ActiveView.ScreenCacheID(esriViewGeoSelection, Nothing) Dim FromPt1 As IPoint, ToPt1 As IPoint Dim pGeometry1 As IGeometry Dim pPolyline1 As IPolyline Dim pFeatureLayer As IFeatureLayer Set pFeatureLayer = pFeatSelection Dim pFeatClass As IFeatureClass Set pFeatClass = pFeatureLayer.FeatureClass Dim pFeat1 As IFeature Set pFLayer = pMxDoc.SelectedLayer If pFeatClass.ShapeType <> esriGeometryPolyline Then MsgBox "You must have a polyline layer as the first item on the TOC." Exit Sub End If Dim pEnumIDS As IEnumIDs Set pEnumIDS = pFeatSelection.SelectionSet.IDs Dim lOID1 As Variant Dim pLine As ILine Dim getRadian As Double Dim getAngle As Integer, iAriAngle As Integer, iGeoAngle As Integer 'Could be changed to double Dim PI As Double PI = 4 * Atn(1) Dim lCount As Long Dim indexA As Long Dim indexG As Long Dim nTotal As Long nTotal = pFeatSelection.SelectionSet.Count Dim sTotal As String Dim pPointFrom As IPoint, pPointTo As IPoint Set pPointFrom = New Point Set pPointTo = New Point Set pLine = New Line If nTotal = 0 Then MsgBox "Please select at least one line" Else 'Add a new field called AriAngle (Arithmetic Angle) indexA = pFeatClass.FindField("ARIANGLE") If indexA < 0 Then Dim pFieldAri As IFieldEdit Set pFieldAri = New Field With pFieldAri .Type = esriFieldTypeInteger .Name = "ARIANGLE" End With pFeatClass.AddField pFieldAri End If indexA = pFeatClass.FindField("ARIANGLE") 'Add a new field called GeoAngle (Geographic Angle) indexG = pFeatClass.FindField("GEOANGLE") If indexG < 0 Then Dim pFieldGeo As IFieldEdit Set pFieldGeo = New Field With pFieldGeo .Type = esriFieldTypeInteger .Name = "GEOANGLE" End With pFeatClass.AddField pFieldGeo End If indexG = pFeatClass.FindField("GEOANGLE") End If Do While Not pFeatureLayer Is Nothing lOID1 = pEnumIDS.Next lCount = lCount + 1 If lCount > nTotal Then sTotal = Str(nTotal) If nTotal <> 0 Then MsgBox "Script complete" & vbNewLine & Trim(sTotal) & " lines now have angles" End If Exit Sub End If Set pFeat1 = pFeatClass.GetFeature(lOID1) Set FromPt1 = New Point Set ToPt1 = New Point Set pGeometry1 = pFeat1.Shape Set pPolyline1 = pGeometry1 pPolyline1.QueryFromPoint FromPt1 pPolyline1.QueryToPoint ToPt1 pPointFrom.PutCoords FromPt1.x, FromPt1.y pPointTo.PutCoords ToPt1.x, ToPt1.y pLine.PutCoords pPointFrom, pPointTo getRadian = pLine.Angle 'This section will change the polyline to an Arithmetic Rotational Angle (aka Polar) If getRadian < 0 Then iAriAngle = 360 - (((getRadian * 360) * -1) / (2 * PI)) Else iAriAngle = (getRadian * 360) / (2 * PI) End If pFeat1.Value(indexA) = iAriAngle pFeat1.Store 'This section with change the polyline to a Geographic Rotational Angle (aka North Azimuth) getAngle = 45 - (iAriAngle - 45) If getAngle < 0 Then iGeoAngle = getAngle + 360 Else iGeoAngle = getAngle End If pFeat1.Value(indexG) = iGeoAngle pFeat1.Store Loop Errorhandler: MsgBox Err.Number & "..." & Err.Description Exit Sub End Sub
Dernière modification par Tnarbiv (Wed 23 July 2008 10:00)
Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.
Hors ligne
#13 Wed 23 July 2008 10:55
- freesnowpetrel
- Participant assidu
- Lieu: Pretoria, Afrique du Sud
- Date d'inscription: 1 Mar 2007
- Messages: 222
Re: [ArcMap 8.3] aligner symbole sur polyligne
Bonjour,
Sinon tu dois aussi pouvoir utiliser l'outil "calculate movement parameters" de la barre d'outil "Hawths Analysis Tools" apres avoir convertis tes polylignes en points.
http://www.spatialecology.com/htools/mo … simple.php
Cet outil a pour but de reconstituer les mouvements d'animaux suivis par balises. Il ajoute pour chaque point plusieurs colonnes: distance entre 2 points, angle de rotation, cap, distance totale.
Attention tes points doivent etres classes dans l'ordre correspondant au sens de parcours de ton reseau.
Rodolphe
Hors ligne
#14 Mon 28 July 2008 15:58
- Fos4
- Participant occasionnel
- Date d'inscription: 7 May 2008
- Messages: 12
Re: [ArcMap 8.3] aligner symbole sur polyligne
Bonjour,
j'ai bien réussi à récupérer l'angle ou plutôt l'orientation de mes polylignes.
Enfait ma solution ne collait pas à mon problème, je suis bon à 180°prés,
La pente n'étant pas orientée toujours dans le même sens, la symbolique suit
bien la polyligne mais pas forcément dans le bon sens (sens de la numérisation)
Je vais me contenter des symboliques linéaires, c'est déjà pas si mal.
Merci à tous.
Hors ligne