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