#1 Tue 12 February 2008 15:21
- leo09
- Juste Inscrit !
- Date d'inscription: 8 Feb 2008
- Messages: 4
Easy Calculate sous ArcGis
Bonjour,
J'aurai besoin d'un petit coup de main sur " Easy Calculate "
Dans le Script : draw_PointSquareBuffer
Il faut :
-renseigner dBufferDistance X et Y : Ok
-renseigner dAngle : Ok
-Enlever « ' » pour que ça puisse tourner : Ok
-Mais par contre, je ne vois pas comment (où) mettre le nom du champ (adjust the field name) ??
Quelqu’un pourrait m’aider ??
Merci !
Hors ligne
#2 Tue 12 February 2008 15:27
- Marc Ruffie
- Participant actif
- Lieu: Schilik
- Date d'inscription: 31 Jul 2007
- Messages: 64
- Site web
Re: Easy Calculate sous ArcGis
Bonjour,
Voici le code si je ne m'abuse.
Code:
'========================= 'create_Rectangles_FromPoints.cal 'Author: Ianko Tchoukanski 'http://www.ian-ko.com '========================= Dim pMxDoc As IMxDocument Dim pMap As IMap Dim pPoint As IPoint Dim pEnv As IEnvelope Dim pTransform As ITransform2D Dim pContainer As IGraphicsContainer Dim pElement As IElement Dim dBufferDistanceX As Double Dim dBufferDistanceY As Double Dim dAngle As Double Dim pSegColl As ISegmentCollection Dim Pi As Double Dim pFeatcls As IFeatureClass Dim pFeatLayer As IFeatureLayer Dim iLayerOrder As Integer Dim pFCursor As IFeatureCursor Dim pFBuffer As IFeatureBuffer '========================== 'adjust the parameters below dBufferDistanceX = 30 dBufferDistanceY = 30 'dAngle = -9,4 iLayerOrder = 2 'Unremark the line below, remove quotes 'and adjust the field name 'if angle values from a field are to be used dAngle = "[Angle]" '========================== Pi = 4 * Atn(1) Set pMxDoc = ThisDocument Set pMap = pMxDoc.FocusMap Set pFeatLayer = pMap.Layer(iLayerOrder) Set pFeatcls = pFeatLayer.FeatureClass Set pFBuffer = pFeatcls.CreateFeatureBuffer Set pFCursor = pFeatcls.Insert(True) If (Not IsNull([Shape])) Then Set pPoint = [Shape] If (Not pPoint.IsEmpty) Then dAngle = dAngle * Pi / 180 Set pEnv = pPoint.Envelope pEnv.Expand dBufferDistanceX, dBufferDistanceY, False Set pSegColl = New Polygon pSegColl.SetRectangle pEnv Set pTransform = pSegColl pTransform.Rotate pPoint, dAngle Set pFBuffer.Shape = pSegColl pFCursor.InsertFeature pFBuffer End If End If
Je vous ai décalé qui doit être changé.
Vous devez mettre en commentaire la ligne
dAngle = -9,4
A l'aide d'une cote
Et vous devez activer la ligne
dAngle = "[Angle]"
En enlevant la cote...
Ainsi, la valeur de l'angle sera recherché dans le champ, et ne sera une valeur fixe. Cette modification n'est pas a faire si la valeur d'angle est fixe.
En espérant que j'ai compris votre question, et que j'ai su y répondre,
cordialement
Marc
Dernière modification par Marc Ruffie (Tue 12 February 2008 15:30)
Sauvez un arbre, mangez un castor!
Hors ligne
#3 Tue 12 February 2008 16:03
- leo09
- Juste Inscrit !
- Date d'inscription: 8 Feb 2008
- Messages: 4
Re: Easy Calculate sous ArcGis
Bonjour et merci pour cette réponse..
En faite, je n'arrive pas à faire tourner ce script.. je ne connais pas la programmation sous Arcgis et ne sais comment m'en sortir..
Je souhaite créer des polygone carrés en ayant les centroïdes, voilà comment je procède:
- Je clic droit sur le champ "Nom" de la table attributaire de la couche "Points" (couche de type points pour laquelle je souhaite créer un polygone carré pour chaque enregistrement).
- Calculate values puis je coche "advanced" (PreLogic Script Code)
- Là, je "load" le script "draw_PointSquareBuffer"
- Je mets les valeurs que je souhaite pour "dBufferDistanceX et Y", de même pour dAngle,
- j'enlève les "quotes" avant la ligne (comme demandé : Unremark the line below and adjust the field name")
Quand je fais Ok, le message d'erreur suivant apparait : A field name was not found or there were unbalanced quotation marks"
Je pense que l'erreur vient du fait que je n'ai pas "ajuster le nom du champ", mais je ne sais pas comment faire??
Merci pour votre aide
Hors ligne
#4 Tue 12 February 2008 16:13
- Marc Ruffie
- Participant actif
- Lieu: Schilik
- Date d'inscription: 31 Jul 2007
- Messages: 64
- Site web
Re: Easy Calculate sous ArcGis
Voici un exemple factice:
ou je veux des polygones qui font 62 mètres de coté, et une inclinaison de 45 degré:
Dans un premier temps, il faut créer la couche de polygone qui recevra les carrés. Disons qu'on la place en 2ème dans l'arborescence des shapes ouverts
Code:
'========================= 'create_Rectangles_FromPoints.cal 'Author: Ianko Tchoukanski 'http://www.ian-ko.com '========================= Dim pMxDoc As IMxDocument Dim pMap As IMap Dim pPoint As IPoint Dim pEnv As IEnvelope Dim pTransform As ITransform2D Dim pContainer As IGraphicsContainer Dim pElement As IElement Dim dBufferDistanceX As Double Dim dBufferDistanceY As Double Dim dAngle As Double Dim pSegColl As ISegmentCollection Dim Pi As Double Dim pFeatcls As IFeatureClass Dim pFeatLayer As IFeatureLayer Dim iLayerOrder As Integer Dim pFCursor As IFeatureCursor Dim pFBuffer As IFeatureBuffer '========================== 'adjust the parameters below dBufferDistanceX = 31 dBufferDistanceY = 31 dAngle = 45 iLayerOrder = 1 'Unremark the line below, remove quotes 'and adjust the field name 'if angle values from a field are to be used 'dAngle = "[Angle]" '========================== Pi = 4 * Atn(1) Set pMxDoc = ThisDocument Set pMap = pMxDoc.FocusMap Set pFeatLayer = pMap.Layer(iLayerOrder) Set pFeatcls = pFeatLayer.FeatureClass Set pFBuffer = pFeatcls.CreateFeatureBuffer Set pFCursor = pFeatcls.Insert(True) If (Not IsNull([Shape])) Then Set pPoint = [Shape] If (Not pPoint.IsEmpty) Then dAngle = dAngle * Pi / 180 Set pEnv = pPoint.Envelope pEnv.Expand dBufferDistanceX, dBufferDistanceY, False Set pSegColl = New Polygon pSegColl.SetRectangle pEnv Set pTransform = pSegColl pTransform.Rotate pPoint, dAngle Set pFBuffer.Shape = pSegColl pFCursor.InsertFeature pFBuffer End If End If
J'ai décalé les valeurs a changer:
le
ilayerorder correspond au numéro d'index de la couche de polygone. Il est égal a la place de la couche -1
C'est a dire que la, la couche se trouvait au deuxième plan, la valeur est donc égale à 1.
J'espère ne pas avoir été trop obscur. Si vous comprenez pas, dites exactement quelle opération vous voulez faire, avec les valeurs voulues.
Cordialement
Marc
Sauvez un arbre, mangez un castor!
Hors ligne
#5 Tue 12 February 2008 16:50
- leo09
- Juste Inscrit !
- Date d'inscription: 8 Feb 2008
- Messages: 4
Re: Easy Calculate sous ArcGis
Merci,
mais je rame..
Pour reprendre le problème:
J'ai un shape de type points avec 24 enregistrements. Ces points sont les centroïdes de carré de 5000m de coté que j'aimerai tracer.
En faisant des recherches sur les forums, j'ai trouvé le script que vous avez cité dans les messages mais je n'arrive pas à l'utiliser..
Tout d'abord, vous dites qu'il faut créer un shape polygone qui recevra les carrés : comment faite vous ? Créer un shape vide (0 lignes): comment fait t'on pour créer un shape vide?, ou utiliser par exemple le shape "buffer" que j'ai réalisé dans un premier temps en effaçant les informations contenues dedans (histoire d'avoir 24 lignes)
ensuite, je pense quand faisant un copier/coller de votre dernier script en mettant les valeurs qu'il me faut (X=2500, Y=2500, Angle=0), ça devrait marcher?
Merci encore pour votre aide..
Hors ligne
#6 Tue 12 February 2008 17:04
- Marc Ruffie
- Participant actif
- Lieu: Schilik
- Date d'inscription: 31 Jul 2007
- Messages: 64
- Site web
Re: Easy Calculate sous ArcGis
Pour créer une nouvelle couche de polygones, je vous laisse chercher, ça a été demandé plusieurs fois (sinon, utilisez la couche "buffer" que vous avez déjà créé.
Ensuite, je viens de vérifier, il faut créer un nouveau champ dans votre couche de ponctuels, de type réel double. (10,10)
Mettez votre fichier de ponctuel en premier plan, et votre fichier de polygone en second plan.
Ouvrez la table attributaire de votre fichier de point, et faites clic droit sur le champ que vous venez de créer, puis faites calculer les valeurs.
Dans la fenêtre qui s'ouvre, cochez la case "avancé".
Dans la zone de texte du haut, collez ce code
Code:
'========================= 'create_Rectangles_FromPoints.cal 'Author: Ianko Tchoukanski 'http://www.ian-ko.com '========================= Dim pMxDoc As IMxDocument Dim pMap As IMap Dim pPoint As IPoint Dim pEnv As IEnvelope Dim pTransform As ITransform2D Dim pContainer As IGraphicsContainer Dim pElement As IElement Dim dBufferDistanceX As Double Dim dBufferDistanceY As Double Dim dAngle As Double Dim pSegColl As ISegmentCollection Dim Pi As Double Dim pFeatcls As IFeatureClass Dim pFeatLayer As IFeatureLayer Dim iLayerOrder As Integer Dim pFCursor As IFeatureCursor Dim pFBuffer As IFeatureBuffer '========================== 'adjust the parameters below dBufferDistanceX = 2500 dBufferDistanceY = 2500 dAngle = 0 iLayerOrder = 1 'Unremark the line below, remove quotes 'and adjust the field name 'if angle values from a field are to be used 'dAngle = "[Angle]" '========================== Pi = 4 * Atn(1) Set pMxDoc = ThisDocument Set pMap = pMxDoc.FocusMap Set pFeatLayer = pMap.Layer(iLayerOrder) Set pFeatcls = pFeatLayer.FeatureClass Set pFBuffer = pFeatcls.CreateFeatureBuffer Set pFCursor = pFeatcls.Insert(True) If (Not IsNull([Shape])) Then Set pPoint = [Shape] If (Not pPoint.IsEmpty) Then dAngle = dAngle * Pi / 180 Set pEnv = pPoint.Envelope pEnv.Expand dBufferDistanceX, dBufferDistanceY, False Set pSegColl = New Polygon pSegColl.SetRectangle pEnv Set pTransform = pSegColl pTransform.Rotate pPoint, dAngle Set pFBuffer.Shape = pSegColl pFCursor.InsertFeature pFBuffer End If End If
Et dans la zone de texte du bas, saisissez
1
Normallement, cela devrait marcher... (en tout cas, chez moi, c'est le cas )
En espérant que ca marchera, cordialement
Marc
Dernière modification par Marc Ruffie (Tue 12 February 2008 17:04)
Sauvez un arbre, mangez un castor!
Hors ligne
#7 Tue 12 February 2008 17:16
- leo09
- Juste Inscrit !
- Date d'inscription: 8 Feb 2008
- Messages: 4
Re: Easy Calculate sous ArcGis
Merci beaucoup : ça marche !!
J'ai enfin pu créer de beaux petits carrés autour des mes points..
Merci encore et bonne fin de journée!
Hors ligne
#8 Wed 13 February 2008 16:14
- 203alb
- Invité
Re: Easy Calculate sous ArcGis
Une piste ?
Et pourquoi pas utiliser les outils de grilles comme celui de Hawth's tools?
Tu définis tes emprises en lat-lon / à tes extrémités et ton pas ....