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 Thu 25 April 2002 23:52

Cyril Curto
Invité

Calcul de X et Y

Bonjour,
il faut creer un bouton de type outil et tu lui applique le script
ci-dessous
ensuite tu selectionne ton champ et clique sur se nouveau bouton
cella va creer 2 colonnes X et Y dans ta table ( tous les champs seront
renseignes automatiquement )
par contre si tu deplace un objet dans ta vue les coordonnee ne se mettent
pas a jour automatiquement

A+
Cyril

' Name: View.AddXYCoordToFTab
'
' Title: Adds X and Y coordinates of features to Attribute Table
'
' Topics: GeoData
'
' Description: Adds two new fields, named X-coord and Y-coord, to the table
' of the first active theme in the TOC and fills the respective fields with
' the X,Y coordinates of the selected points (or all points if no selection
' is defined) in a point theme. If instead the active theme is a polygon
' theme, then the X,Y coordinates of the polygon centroid are calculated. If
' the theme is projected, the output coordinates will also be projected.
'
' Requires: An active point or polygon theme. This script does minimal
' error checking and assumes that there is an active theme.
'
' Self:
'
' Returns:

theView = av.GetActiveDoc
'must be global to work in Calc exp below
_theProjection = theView.GetProjection
project_flag = _theProjection.IsNull.Not 'true if projected
theTheme = theView.GetActiveThemes.Get(0)

'Check if point or polygon theme
if (((theTheme.GetSrcName.GetSubName = point ) or
(theTheme.GetSrcName.GetSubName = polygon )).Not) then
MsgBox.Info( Active theme must be polygon or point theme , )
exit
end

'get the theme table and current edit state
theFTab = theTheme.GetFTab
theFields = theFTab.GetFields
edit_state = theFTab.IsEditable

'make sure table is editable and that fields can be added
if (theFtab.CanEdit) then
theFTab.SetEditable(true)
if ((theFTab.CanAddFields).Not) then
MsgBox.Info( Can't add fields to the table. +NL+ Check write
permission. ,
Can't add X,Y coordinates )
exit
end
else
MsgBox.Info( Can't modify the feature table. +NL+
Check write permission. , Can't add X,Y coordinates )
exit
end

'Check if fields named X-coord and Y-coord exist
x_exists = (theFTab.FindField( X-coord ) = NIL).Not
y_exists = (theFtab.FindField( Y-coord ) = NIL).Not

if (x_exists or y_exists) then
if (MsgBox.YesNo( Overwrite existing fields? ,
X-coord, Y-coord fields already exist , false)) then
'if ok to overwrite, delete the fields as they may not be defined
'as required by this script (eg., created from another script).
if (x_exists) then
theFTab.RemoveFields({theFTab.FindField( X-coord )})
end
if (y_exists) then
theFTab.RemoveFields({theFTab.FindField( Y-coord )})
end
else
exit
end 'if (MsgBox...)
end 'if

x = Field.Make ( X-coord ,#FIELD_DECIMAL,18,5)
y = Field.Make ( Y-coord ,#FIELD_DECIMAL,18,5)
theFTab.AddFields({x,y})

'Get point coordinates or polygon centroid coordinates
if (theTheme.GetSrcName.GetSubName = point ) then
if (project_flag) then
'Projection defined
theFTab.Calculate( [Shape].ReturnProjected(_theProjection).GetX , x)
theFTab.Calculate( [Shape].ReturnProjected(_theProjection).GetY , y)
else
'No projection defined
theFTab.Calculate( [Shape].GetX , x)
theFTab.Calculate( [Shape].GetY , y)
end 'if
else 'polygon case
if (project_flag) then

theFTab.Calculate( [Shape].ReturnCenter.ReturnProjected(_theProjection).GetX
, x)

theFTab.Calculate( [Shape].ReturnCenter.ReturnProjected(_theProjection).GetY
, y)
else
theFTab.Calculate( [Shape].ReturnCenter.GetX , x)
theFTab.Calculate( [Shape].ReturnCenter.GetY , y)
end ' if
end

'Return editing state to pre-script running state
theFTab.SetEditable(edit_state)

----- Original Message -----
From: Eugenie DUMAS
To:
Sent: Thursday, April 25, 2002 3:57 PM
Subject: calcul de X et Y

> Bonjour,
>
> Quelqu'un pourrait-il me rappeler comment obtenir les coordonnees des
> points d'un theme dans sa table attributaire (je ne retrouve plus la
> formule, du genre shape.Get(X) ...)
> Merci !
> E.D.
>
> _____________________________________________
> Eugenie DUMAS - Equipe PARIS - UMR 8504 CNRS
> 13 rue du Four - 75006 Paris
> Tel. (33) 01.40.46.40.08
> Fax. (33) 01.40.46.40.09
> E-mail : e.dumas@texte-a-enlever.parisgeo.cnrs.fr
> _____________________________________________

 

#2 Wed 18 January 2006 11:23

deroot
Juste Inscrit !
Date d'inscription: 18 Jan 2006
Messages: 4

Re: Calcul de X et Y

Bonjour,
sur une couche polygon créée à partir d'une zone tampon de points, je désire récuperer dans ma table les coordonnées X et Y des centroids des zones tampons.
J'ai téléchargé chez ESRI les script qui permettent cette manip (ec50 et centroidX.cal et centroidY.cal) mais je me retrouve toujours avec la mêrme erreur lors du calcul dans la table à savoir :"Erreur lors de l'execution du code VBA : Interruption par l'utilisateur" alors que je viens juste de cliquer sur OK
Ce qui m'enerve c'est que des fois ça marche et d'autre fois ça ne marche pas.
Avez vous un début d'explication ?

Hors ligne

 

#3 Wed 18 January 2006 12:05

chabirand
Juste Inscrit !
Date d'inscription: 16 Dec 2005
Messages: 9

Re: Calcul de X et Y

Sinon tu peux créer deux champs X et Y.
Tu vas dans la calculatrice de valeur tu selestionne ton champs X, clic dans avancé.
Et dans la fenêtre vb tu tapes:

Dim Output As Double
Dim pArea As IArea
Set pArea = [Shape]

Output = pArea.Centroid.X
Idem pour Y sauf que
Dim Output As Double
Dim pArea As IArea
Set pArea = [Shape]

Output = pArea.Centroid.Y

Il me semble que ça marche bien...
Sinon regarde les propriété de ton champ, y a peut-être quelque chose qui ne colle pas.
Mais sinon regarde dans l'aide de arcmap c'est bien expliqué.
J'espère que ça a pu t'aider.
Bonne chance

Hors ligne

 

#4 Wed 18 January 2006 14:26

deroot
Juste Inscrit !
Date d'inscription: 18 Jan 2006
Messages: 4

Re: Calcul de X et Y

Ben euuuh!! non, toujours la même erreur :-(
J'y comprend plus rien.

Hors ligne

 

#5 Thu 19 January 2006 13:43

herve remy
Participant occasionnel
Lieu: PNRBSN - ND de Bliquetuit
Date d'inscription: 5 Sep 2005
Messages: 11

Re: Calcul de X et Y

Bonjour,

Essayez peut-être cette formule :

dim pArea as IArea
dim pPointCenter as IPoint
set pArea= [Shape]
set pPointCenter = pArea.centroid

X =
pPointCenter.X

Pour Y, idem en remplaçant X par Y.

Attention aux types de données, les champs X et Y doivent être en numérique
(entier ou réel).

Bon courage,
Hervé REMY

Hors ligne

 

#6 Mon 30 January 2006 18:06

deroot
Juste Inscrit !
Date d'inscription: 18 Jan 2006
Messages: 4

Re: Calcul de X et Y

Je pense que j'ai un Pb de config car sur un autre poste ça fonctionne bien. J'ai désinstallé et reinstallé ArcGIS et ça na marche toujours pas. Je laisse tomber.
Merci pour votre aide

Hors ligne

 

#7 Tue 31 January 2006 15:40

DrassCentreSSE
Participant occasionnel
Date d'inscription: 17 Nov 2005
Messages: 13

Re: Calcul de X et Y

si cela peut provenir de la config, cela pourrait-il être du au type d'indicateur décimal (virgule ou point) ?

Hors ligne

 

#8 Tue 02 May 2006 12:17

Jeffbends
Participant occasionnel
Lieu: Toulouse
Date d'inscription: 28 Mar 2006
Messages: 12

Re: Calcul de X et Y

Bonjour, et comment récupérer les coordonnées x et y dans la table d'attributs, de points créés sur un raster gféoréférencé. J'ai créé mes deux colonnes X et Y mais je me demande s'il existe une fonction qui les retranscrit automatiquement ou s'il faut que je remplisse les champs manuellement.
MErci !

Hors ligne

 

Pied de page des forums

Powered by FluxBB