Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 18 April 2016 16:25

MatChevalier
Participant occasionnel
Date d'inscription: 28 Feb 2015
Messages: 12

Nombre considéré comme string

Re bonjour,

Nouvelle question :

J'ai une table attributaire composée de 7 champs de type "Long".
J'essaie d'y appliquer la (très moche) formule dans le script ci-joint, et IDLE me renvoi :

Code:

Traceback (most recent call last):
  File "D:\00_LR_MC\Scripts_travail\Field_calc_xy.py", line 11, in <module>
    fld1 = int(y)
ValueError: invalid literal for int() with base 10: 'y

'

J'ai essayé Variable = int(variable), également avec float, avec les 2, et je reste face à ce problème. Il y a pas mal de postes déjà sur le sujet, mais je tourne en rond...

Code:

import arcpy, math, cmath, sys

arcpy.env.overwriteOutput = True
infc = arcpy.env.workspace = "D:\\00_LR_MC\\MN_03_16.gdb\\Points1"
y = "y"
yint = "yint"
yref = "yref"
x = "x"
xref = "xref"
Buf = "Buf"
fld1 = int(y)
fld2 = int(yint)
fld3 = int(yref)
fld4 = int(x)
fld5 = int(xref)
buf = int(Buf)

rows = arcpy.UpdateCursor(infc, [fld1, fld2])

for row in rows:
     row.setValue(fld2, row.getValue((fld1))+((((fld3)-(fld1))/(abs((fld3)-(fld1))))*((((fld3)-(fld1))*(buf))/(cmath.sqrt(abs(((fld5)-(fld4))**2)+abs(((fld3)-(fld1))**2))))))
     rows.updateRow(row)

del row
del rows

Si vous avez une piste, je vous en serais reconnaissant!

Hors ligne

 

#2 Tue 19 April 2016 07:57

Franck B
Membre
Lieu: PACA
Date d'inscription: 6 Sep 2005
Messages: 1382
Site web

Re: Nombre considéré comme string

Bonjour,

Ben...

Code:

y = "y"
fld1 = int(y)

tu essayes bien de convertir "y" en nombre entier... c'est un peu compliqué pour l'interpréteur Python
smile

A+

Franck

Hors ligne

 

#3 Tue 19 April 2016 08:24

MatChevalier
Participant occasionnel
Date d'inscription: 28 Feb 2015
Messages: 12

Re: Nombre considéré comme string

Autant pour moi,

"y" c'est le nom du champ de ma table contenant des coordonnées y, x des coordonnées x etc.

Dans ma première version, c'était plus simple :

Code:

infc = classe d'entité (=points)

fld1 = "y" (champ y etc...)

Le but de ce script étant de ramener un point ("x", "y") vers un autre ("xref", "yref") en fonction de la distance Buf (=buffer autour de mes points de départ)

J'espère que c'est un peu plu clair...

Hors ligne

 

#4 Tue 19 April 2016 10:08

MatChevalier
Participant occasionnel
Date d'inscription: 28 Feb 2015
Messages: 12

Re: Nombre considéré comme string

Heu... désolé, je ne peux pas supprimer ce message...

Dernière modification par MatChevalier (Tue 19 April 2016 10:10)

Hors ligne

 

Pied de page des forums

Powered by FluxBB