which is the fastest way to mass update data of field in arcgis pro sdk add ins

567
3
10-13-2023 08:12 AM
Ruben_DarioCalero_Clavijo
New Contributor II

Hi, good day

Esri and Esri Community

 

I´m trying to create a button that mass update data of a field in arcgis pro sdk (like the Field Calculator do).

I found many ways to solve it but I don’t know which is the fastest for mass update data; ¿anyone can help me to identify the best solution?

 

Solutions:

  • Geoprocessing Tool (CalculateField_management)
  • Inspector
  • EditOperation
 

Actually I’m using Geoprocessing Tool (CalculateField_management).

Have a nice day.
 
 
0 Kudos
3 Replies
ViktorSafar
Occasional Contributor II

Can you explain what do you mean by "mass update"? What is your data saved in?

I do not think you can use Search/Cursor to update data.

EditOperation is the recommended way to update data.

The fastest way is likely a direct database call but you are exposing yourself to breaking something if you are not 100% sure what you're doing.

0 Kudos
Ruben_DarioCalero_Clavijo
New Contributor II

Hi ViktorSafar

Thanks for answer.

Right now i'am trying to standardize addresses that are store in standalone table inside a filegeodatabase (testing.gdb).

For example, massive change the address (New York 10032 United States America) or (New Y 10032 United States) or (NYork 10032 United America) to standart adress (NY 10032 USA) for throusands of records (like 30.000 or more).

Here some code of my app when i clic the button "Normalizar".

 

List<string> listaConsultas = new List<string>();


private async void Button_Click(object sender, RoutedEventArgs e)
{
	var mvp = MapView.Active.Map;			
	string NameTablaIngreso = this.MiComboBox1.Text.ToString();
	string NameCampoDireccion = this.MiComboBox2.Text.ToString();
	var tablaIngreso = mvp.GetStandaloneTablesAsFlattenedList().OfType<StandaloneTable>().Where(lyrd => lyrd.Name == NameTablaIngreso).FirstOrDefault();
	
	listaConsultas.Add("!" + NameCampoDireccion + "!.replace(\"New York\", \"NY\")");
	listaConsultas.Add("!" + NameCampoDireccion + "!.replace(\"New Y\", \"NY\")");
	listaConsultas.Add("!" + NameCampoDireccion + "!.replace(\"N York\", \"NY\")");

	var comotabla = tablaIngreso as StandaloneTable;

	await QueuedTask.Run(() =>
		{
			for (int rdc = 0; rdc < listaConsultas.Count; rdc++)
					{				
					var args = Geoprocessing.MakeValueArray(comotabla, NameCampoDireccion, listaConsultas[rdc], "PYTHON3");
					var gp_result = Geoprocessing.ExecuteToolAsync("CalculateField_management", Geoprocessing.MakeValueArray(args.ToArray()));
					comotabla.ClearSelection();
					}						
		}
		MessageBox.Show("End.");					
							
}					

 

Here my interface.

Ruben_DarioCalero_Clavijo_0-1697640577081.png

 

 

0 Kudos
Kevin_Andras
New Contributor III
0 Kudos