Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.14 KB | None | 0 0
  1. using ESRI.ArcGIS.DataManagementTools;
  2. using ESRI.ArcGIS.esriSystem;
  3. using ESRI.ArcGIS.Geodatabase;
  4. using ESRI.ArcGIS.Geoprocessor;
  5. using Neoenergia.ModuloProjetos.Util.Test;
  6. using System;
  7. using System.Runtime.InteropServices;
  8.  
  9. namespace GeoprocessorExemplo
  10. {
  11. internal class Program
  12. {
  13. private static int Main(string[] args)
  14. {
  15. try
  16. {
  17. Console.WriteLine("Iniciando licenca");
  18. IniciaLicenca();
  19.  
  20. Console.WriteLine("Abrindo WS");
  21. var workspace = Testing.AbrirWorkspace("SDE.DEFAULT");
  22.  
  23. var nomeTabela = "NEOSDE.ATeste";
  24. var novoCampo = "NovoCampo";
  25. var campoAntigo = "Campo2";
  26.  
  27. Console.WriteLine("Adicionando campo");
  28.  
  29. AdicionarCampo(workspace, nomeTabela, novoCampo);
  30.  
  31. Console.WriteLine("Calcular campo");
  32. TransferirValorCampo(nomeTabela, campoAntigo, novoCampo);
  33.  
  34. Console.WriteLine("Apagando campo GP");
  35. ApagarCampo(nomeTabela, campoAntigo);
  36.  
  37. Console.WriteLine("Renomeando campo GP");
  38. RenomearCampo(nomeTabela, novoCampo, campoAntigo);
  39. }
  40. catch (Exception ex)
  41. {
  42. Console.WriteLine($">>>>>>>> Erro: {ex}");
  43. Console.Error.WriteLine($">>>>>>>> Erro: {ex}");
  44. }
  45.  
  46. Console.WriteLine("--------------------------------");
  47. Console.WriteLine("Digite uma tecla para finalizar!");
  48. Console.ReadKey();
  49. return 0;
  50. }
  51.  
  52. private static void AdicionarCampo(IWorkspace workspace, string nomeTabela, string nomeCampo)
  53. {
  54. var table2AddField = ((IFeatureWorkspace)workspace).OpenTable(nomeTabela);
  55.  
  56. var schemaLock = (ISchemaLock)table2AddField;
  57. try
  58. {
  59. schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);
  60.  
  61. var newField = new FieldClass();
  62. var field = (IFieldEdit2)newField;
  63. field.Name_2 = nomeCampo;
  64. field.Type_2 = esriFieldType.esriFieldTypeString;
  65. field.Length_2 = 50;
  66. field.DefaultValue_2 = "Teste";
  67.  
  68. table2AddField.AddField(newField);
  69. }
  70. finally
  71. {
  72. schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
  73. }
  74. }
  75.  
  76. private static void ApagarCampo(string nomeTabela, string nomeCampo)
  77. {
  78. var dropField = new DeleteField(nomeTabela, nomeCampo);
  79. ExecutarGP(dropField);
  80. }
  81.  
  82. private static esriJobStatus ExecutarGP(IGPProcess process2Execute)
  83. {
  84. Console.WriteLine($"Executando GP... {process2Execute}");
  85.  
  86. var gp = new Geoprocessor();
  87. gp.SetEnvironmentValue("workspace",
  88. @"C:\Users\bcaimar\AppData\Roaming\ESRI\Desktop10.2\ArcCatalog\neosde@gsecoelba.sde");
  89.  
  90. var retorno = esriJobStatus.esriJobFailed;
  91. EventHandler<ToolExecutedEventArgs> executedEvent = (s, e) =>
  92. {
  93. retorno = e.GPResult.Status;
  94. Console.WriteLine($"\nTEE> {e.GPResult.Status} - {e.GPResult.ResultID}");
  95. };
  96. gp.ToolExecuted += executedEvent;
  97.  
  98. try
  99. {
  100. gp.Execute(process2Execute, null);
  101. }
  102. catch (Exception ex)
  103. {
  104. Console.WriteLine($"Erro: {ex.Message} - {ex.StackTrace}");
  105. if (ex is COMException)
  106. {
  107. Console.WriteLine($"Erro (COM): {(ex as COMException).ErrorCode}");
  108. }
  109. throw;
  110. }
  111. finally
  112. {
  113. if (gp != null)
  114. {
  115. Console.WriteLine($"**********************************");
  116. for (int i = 0; i < gp.MessageCount; i++)
  117. {
  118. var msg = gp.GetMessage(i);
  119. var rc = gp.GetReturnCode(i);
  120. Console.WriteLine($"msg: {rc}-{msg}");
  121. }
  122. Console.WriteLine($"**********************************");
  123. gp.ToolExecuted -= executedEvent;
  124. }
  125. }
  126.  
  127. return retorno;
  128. }
  129.  
  130. private static void IniciaLicenca()
  131. {
  132. Testing.InicializarLicenca();
  133. }
  134.  
  135. private static void RenomearCampo(string nomeTabela, string nomeCampo, string novoNomeCampo)
  136. {
  137. var alterField = new AlterField(nomeTabela, nomeCampo)
  138. {
  139. new_field_name = novoNomeCampo
  140. };
  141.  
  142. var ret = ExecutarGP(alterField);
  143. }
  144.  
  145. private static void TransferirValorCampo(string nomeTabela, string campoAtual, string novoCampo)
  146. {
  147. var expressaoCalculo = $"!{campoAtual}!";
  148. var gpCalculate = new CalculateField(nomeTabela, novoCampo, expressaoCalculo)
  149. {
  150. expression_type = "PYTHON"
  151. };
  152. ExecutarGP(gpCalculate);
  153. }
  154. }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement