Pages: 1
- Sujet précédent - [ArcGIS 9.x] Find/replace dans une table attributaire, script python - Sujet suivant
#1 Wed 07 May 2008 14:57
- Loo
- Juste Inscrit !
- Date d'inscription: 17 Apr 2008
- Messages: 8
[ArcGIS 9.x] Find/replace dans une table attributaire, script python
Salut à tou(te)s
J'utilise un script trouvé sur le site officiel d'esri qui me permets de remplacer à la chaîne et automatiquement des valeurs dans une table attributaire, mais cela ne fonctionne que pour les champs de type string.
Auriez-vous une idée sur comment modifier tout ça pour l'utiliser dans les champs double, short, long, etc... ??
Code:
#Parameters:
#Display Name #Data Type #Type #Direction Multi Value Dependency
# Select Feature argv [1] Feature Layer Required Input No
# Select the Field argv [2] Field Required Input No Select_Feature
# Find What argv [3] String Required Input No
# Replace With argv [4] String Required Input No
# Expression argv [5] SQL Expression Optional Input No
#
# Import System Modules
#
import sys, string, os, win32com.client
# Create the Geoprocessor Object
#
gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")
# Create Variables
#
Layer1 = sys.argv[1]
theField = sys.argv[2]
ToReplace = sys.argv[3]
ReplaceWith = sys.argv[4]
theExpress = sys.argv[5]
gp.AddMessage("Input layer: " + Layer1)
gp.AddMessage("Input field: " + theField)
gp.AddMessage("Replace Value: " + ToReplace)
gp.AddMessage("New Value: " + ReplaceWith)
#Replace word(s) on only entities that result in SQL Expression
#
if theExpress != "#":
rows = gp.UpdateCursor (Layer1,theExpress)
row = rows.Next()
gp.AddMessage("Expression used to select rows: " + theExpress)
while row:
row.SetValue(theField,
row.GetValue(theField).replace(ToReplace,ReplaceWith))
rows.UpdateRow(row)
row = rows.Next()
#Replace word(s) on all entities if no entities are selected in the SQL Expression
#
else:
rows = gp.UpdateCursor (Layer1,"")
row = rows.Next()
while row:
row.SetValue(theField,
row.GetValue(theField).replace(ToReplace,ReplaceWith))
rows.UpdateRow(row)
row = rows.Next()Hors ligne
#2 Wed 07 May 2008 15:17
- Tnarbiv
- Participant assidu
- Lieu: Véretz
- Date d'inscription: 5 Sep 2005
- Messages: 392
Re: [ArcGIS 9.x] Find/replace dans une table attributaire, script python
Et si essaies ça
Code:
#Parameters:
#Display Name #Data Type #Type #Direction Multi Value Dependency
# Select Feature argv [1] Feature Layer Required Input No
# Select the Field argv [2] Field Required Input No Select_Feature
# Find What argv [3] String Required Input No
# Replace With argv [4] String Required Input No
# Expression argv [5] SQL Expression Optional Input No
#
# Import System Modules
#
#Pour 9.0 et 9.1
import sys, string, os, win32com.client
#Pour 9.2
import sys, string, os, arcgisscripting
#Pour 9.0 et 9.1
# Create the Geoprocessor Object
#
gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")
#Pour 9.2
gp = arcgiscripting.create()
# Create Variables
#
Layer1 = sys.argv[1]
theField = sys.argv[2]
ToReplace = sys.argv[3]
ReplaceWith = sys.argv[4]
theExpress = sys.argv[5]
gp.AddMessage("Input layer: " + Layer1)
gp.AddMessage("Input field: " + theField)
gp.AddMessage("Replace Value: " + str(ToReplace))
gp.AddMessage("New Value: " + str(ReplaceWith))
#Replace word(s) on only entities that result in SQL Expression
#
if str(theExpress) != "#":
rows = gp.UpdateCursor (Layer1,str(theExpress))
row = rows.Next()
gp.AddMessage("Expression used to select rows: " + str(theExpress))
while row:
row.SetValue(theField,row.GetValue(theField).replace(str(ToReplace),str(ReplaceWith)))
rows.UpdateRow(row)
row = rows.Next()
#Replace word(s) on all entities if no entities are selected in the SQL Expression
#
else:
rows = gp.UpdateCursor (Layer1,"")
row = rows.Next()
while row:
row.SetValue(theField,row.GetValue(theField).replace(str(ToReplace),str(ReplaceWith)))
rows.UpdateRow(row)
row = rows.Next()Est ce que le fait de rajouter d'utilise str() devant ToReplace, ReplaceWith et theExpress ça change quelque chose ?
Dernière modification par Tnarbiv (Wed 07 May 2008 15:21)
Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.
Hors ligne
#3 Wed 07 May 2008 15:52
- Loo
- Juste Inscrit !
- Date d'inscription: 17 Apr 2008
- Messages: 8
Re: [ArcGIS 9.x] Find/replace dans une table attributaire, script python
Hum, je vois pas de différence... ![]()
Je pense qu'il me faut changer les type de données dans les paramètre, il ne doit pas être possible de duper facilement arcMap
Bien essayé ![]()
Hors ligne
Pages: 1
- Sujet précédent - [ArcGIS 9.x] Find/replace dans une table attributaire, script python - Sujet suivant


