diff --git a/Helper/HelperGdb.cs b/Helper/HelperGdb.cs index e76b531..1f40727 100644 --- a/Helper/HelperGdb.cs +++ b/Helper/HelperGdb.cs @@ -2281,8 +2281,9 @@ namespace OliviaAddInPro.Helper /** * Abre en el mapa la capa seleccionada, con los parámetros seleccionados */ - public static bool OpenLayerUniqueValue(string ftclasspath, string campValUniq, bool visible=true) + public static Respuesta OpenLayerUniqueValue(string ftclasspath, string campValUniq, bool visible = true) { + var res = new Respuesta { Value = false }; var mapView = MapView.Active; int indexNumber = mapView.Map.Layers.Count; string ftclassname = System.IO.Path.GetFileNameWithoutExtension(ftclasspath); @@ -2294,15 +2295,17 @@ namespace OliviaAddInPro.Helper //mira el tipo de geometría GeometryType tipo = GetGeomType(ftclasspath); if (tipo == GeometryType.Unknown) - return false; + { + res.Error.Add("Tipo de geometría desconocido en la capa a importar"); + return res; + } var task = QueuedTask.Run(() => { Layer layer = null; FeatureLayer selectedLayer = null; try { - layer = mapView.Map.FindLayer(ftclass_uri.ToString()); - selectedLayer = layer as FeatureLayer; + layer = mapView.Map.FindLayers(ftclassname).FirstOrDefault(); } catch { @@ -2310,9 +2313,10 @@ namespace OliviaAddInPro.Helper } if (layer == null) { - layer = LayerFactory.Instance.CreateLayer(ftclass_uri, mapView.Map, indexNumber, ftclassname); - selectedLayer = mapView.GetSelectedLayers()[0] as FeatureLayer; + layer = LayerFactory.Instance.CreateLayer(ftclass_uri, mapView.Map, indexNumber, ftclassname); + //selectedLayer = mapView.GetSelectedLayers()[0] as FeatureLayer; } + selectedLayer = layer as FeatureLayer; //Do something with selected layer SetSimpleRendererPoint(selectedLayer, campValUniq, tipo); selectedLayer.SetVisibility(visible); @@ -2321,10 +2325,12 @@ namespace OliviaAddInPro.Helper } catch { - return false; + res.Error.Add("Errores en creación de renderer para valor único"); + return res; } } - return true; + res.Value = true; + return res; } /* * Crea el renderer para la capa, dado un campo en el que fijarse y una simbología diff --git a/Model/TratamientoComun.cs b/Model/TratamientoComun.cs index 65fd014..c902b02 100644 --- a/Model/TratamientoComun.cs +++ b/Model/TratamientoComun.cs @@ -26,6 +26,10 @@ namespace OliviaAddInPro.Model * Capa de ámbitos */ public string CapaElems { get; set; } = string.Empty; + /** + * Capa de ámbitos después de haber planificado + */ + public string CapaPlanif { get; set; } = string.Empty; /** * Nombre dle shp exportado de datos */ diff --git a/Services/EjecServ.cs b/Services/EjecServ.cs index 5548b77..3565cff 100644 --- a/Services/EjecServ.cs +++ b/Services/EjecServ.cs @@ -118,6 +118,18 @@ namespace OliviaAddInPro.Services //Guarda el nombre OliviaGlob.Paths.PathData = OliviaGlob.Paths.DirData + com.NombreShpExport; + /////////////////////////////////////////////////////////////////////// + //ahora si está en modo planificación y la capa no tiene esa columna, exporta la sectorización + if (modo==ModosEjec.Planifica && !string.IsNullOrEmpty(com.CapaPlanif)) + { + if (!ActualizaSecto(OliviaGlob.Paths.PathData, com.CapaPlanif)) + { + ErrStr = "Error al exportar campos de SECTOR y/o SECUENCIA de la capa " + com.CapaPlanif; + return false; + } + } + /////////////////////////////////////////////////////////////////////// + /// com.ProgrSrc.IncMessage(10, "Preparando exportación de red navegable");//50% //hace intersecciones espaciales en caso de ámbitos lineales para quitar los que tienen más parte fuera de la zona que dentro @@ -263,6 +275,13 @@ namespace OliviaAddInPro.Services } return true; } + /** + * Actualiza la capa dada añadiendo una columna de sector y una de secuencia + */ + public bool ActualizaSecto(string path_shp, string path_secto) + { + return false; + } /** * Prepara la geometría para exportar los ámbitos @@ -362,12 +381,16 @@ namespace OliviaAddInPro.Services */ public bool CompruebaPlanif() { - //si ha importado no hace falta que compruebe, seguro que las tiene - if (OliviaGlob.IsConfig2()) - return true; - //no ha importado, comprueba capa + //comprueba capa if (ComprCamposPlanif(com.CapaElems)) + { + com.CapaPlanif = string.Empty;//reinicia para que coja la secto de la capa original return true; + } + + //si ha importado seguro que las tiene + if (OliviaGlob.IsConfig2() && !string.IsNullOrEmpty(com.CapaPlanif)) + return true; return false; } @@ -381,15 +404,17 @@ namespace OliviaAddInPro.Services if (res.HasError || string.IsNullOrEmpty(res.Value)) { return res; - } + } ////////////////////////////////////////////////// //abre las capas, pintando los sectores bool mal = false; string path_import = res.Value; + //abre con valor único string path_lyr = path_import; - if(HelperGdb.OpenLayerUniqueValue(path_lyr, LimpiezaDef.Campos.consulta_sector)) + var resb = HelperGdb.OpenLayerUniqueValue(path_lyr, LimpiezaDef.Campos.consulta_sector); + if (!resb.Value) { - res.Error.Add("Error al abrir capa "+ path_lyr + " con Valor único."); + res.Error.Add("Error al abrir capa "+ path_lyr + " con Valor único. " + resb.Error.FirstOrDefault()); res.Value = string.Empty; mal = true; } @@ -397,6 +422,56 @@ namespace OliviaAddInPro.Services res.Value = path_import; return res; } + /** + * Realiza las funciones de importación de la planificación + */ + public Respuesta ImportPlanif(string GdbFileName) + { + var res = Import(GdbFileName, 1); + if (res.HasError || string.IsNullOrEmpty(res.Value)) + { + res.Value = string.Empty; + return res; + } + ////////////////////////////////////////////////// + //abre las capas, pintando los sectores + string path_import = res.Value; + int NOPEN = 6; + string[] path_lyr_arr = new string[NOPEN]; + //la primera capa que se añade es la de ruta, se le quita la visualización porque lo que interesa + //de esa capa es poder acceder si fuera necesario a la tabla de atributos. shape + name_ruta_out + path_lyr_arr[0]= path_import + NAME_RUTA_OUT; + //la siguiente es la de ruta2, se le quita la visualización porque lo que interesa + //de esa capa es poder acceder si fuera necesario a la tabla de atributos. shape + name_ruta2_out + path_lyr_arr[1] = path_import + NAME_RUTA2_OUT; + //se añade la capa de ruta_aux y se pinta por sectores - shape + name_ruta_out + name_aux + path_lyr_arr[2] = path_import + NAME_RUTA_OUT + NAME_AUX; + //se añade la capa de ambitos original con la secto, y se pinta por sectores - shape + path_lyr_arr[3] = path_import; + //se añade la capa de la ruta a las instalaciones, comprueba si hay configurada coordenadas de la instalación - shape + name_inst_out + path_lyr_arr[4] = path_import + NAME_INSTAL_OUT; + //se abre la capa de puntos de control y se pintan por el sector al que pertenecen - shape + name_control_out + path_lyr_arr[5] = path_import + NAME_CONTROL_OUT; + bool[] visible_arr = {false,false,true,true,false,false }; + int i; + var resb = new Respuesta(); + for(i =0;i ImportPlanif(string GdbFileName) - { - var res = Import(GdbFileName, 1); - if (res.HasError || string.IsNullOrEmpty(res.Value)) - { - res.Value = string.Empty; - return res; - } - ////////////////////////////////////////////////// - //abre las capas, pintando los sectores - string path_import = res.Value; - ///////////////////////////////////////////////////// - //la primera capa que se añade es la de ruta, se le quita la visualización porque lo que interesa - //de esa capa es poder acceder si fuera necesario a la tabla de atributos. shape + name_ruta_out - bool mal = false; - string path_lyr = path_import + NAME_RUTA_OUT; - if (!HelperGdb.OpenLayerUniqueValue(path_lyr, LimpiezaDef.Campos.consulta_sector,false)) - mal = true; - ///////////////////////////////////////////////////// - //la siguiente es la de ruta2, se le quita la visualización porque lo que interesa - //de esa capa es poder acceder si fuera necesario a la tabla de atributos. shape + name_ruta2_out - if (!mal) - { - path_lyr = path_import + NAME_RUTA2_OUT; - if (!HelperGdb.OpenLayerUniqueValue(path_lyr, LimpiezaDef.Campos.consulta_sector, false)) - mal = true; - } - ///////////////////////////////////////////////////// - //se añade la capa de ruta_aux y se pinta por sectores - shape + name_ruta_out + name_aux - if (!mal) - { - path_lyr = path_import + NAME_RUTA_OUT + NAME_AUX; - if (!HelperGdb.OpenLayerUniqueValue(path_lyr, LimpiezaDef.Campos.consulta_sector, false)) - mal = true; - } - ///////////////////////////////////////////////////// - //se añade la capa de ambitos original con la secto, y se pinta por sectores - shape - if (!mal) - { - path_lyr = path_import; - if (!HelperGdb.OpenLayerUniqueValue(path_lyr, LimpiezaDef.Campos.consulta_sector, false)) - mal = true; - } - ///////////////////////////////////////////////////// - //se añade la capa de la ruta a las instalaciones, comprueba si hay configurada coordenadas de la instalación - shape + name_inst_out - if (!mal) - { - path_lyr = path_import + NAME_INSTAL_OUT; - if (!HelperGdb.OpenLayerUniqueValue(path_lyr, LimpiezaDef.Campos.consulta_sector, false)) - mal = true; - } - //se abre la capa de puntos de control y se pintan por el sector al que pertenecen - shape + name_control_out - if (!mal) - { - path_lyr = path_import + NAME_CONTROL_OUT; - if (!HelperGdb.OpenLayerUniqueValue(path_lyr, LimpiezaDef.Campos.consulta_sector, false)) - mal = true; - } - ///////////////////////////////////////////////////// - if (mal) - { - res.Value = string.Empty; - res.Error.Add("Error al abrir capa " + path_lyr + " con Valor único."); - } - else - { - res.Value = path_import; - } - return res; - } + } /** * Cierra del mapa las capas de trabajo después de la exportación diff --git a/Services/FinProcServ.cs b/Services/FinProcServ.cs index 4050831..52154c3 100644 --- a/Services/FinProcServ.cs +++ b/Services/FinProcServ.cs @@ -14,53 +14,6 @@ namespace OliviaAddInPro.Services { public void finEjecuta(Respuesta res, TratamientoComun inst) { - //REVISAR CUANDO ACABA, SE CAMBIE EL MARCHANDO PARA QUE SE LE DE A FINALIZAR Y TERMINA OK - - /*String msg=string.Empty; - //gestiona los flags, el estado de finok o finnok va en res.Vale - if (res.HasError) - { - msg = res.Error.First(); - //actualiza los flags - OliviaGlob.RemoveFlagTipEjec(TiposEjecucion.FinEjecNOk); - } - else - { - //actualiza los flags - OliviaGlob.RemoveFlagTipEjec(TiposEjecucion.FinEjecOk); - //importa resultados - var resp = IniImport(); - if (resp.HasError) - msg = resp.Error.First(); - else - { - string GdbFileName = resp.Value; - var resp2 = new Respuesta { Value=false}; - if (OliviaGlob.HasFlagTipEjec(TiposEjecucion.EjecSecto)) //Ha terminado bien la sectorización - { - resp2 = inst.ServCom.ImportSecto(GdbFileName); - } - else if (OliviaGlob.HasFlagTipEjec(TiposEjecucion.EjecPlanif)) //Ha terminado bien la planificación - { - GuardaCsv(inst); - resp2 = inst.ServCom.ImportPlanif(GdbFileName); - } - if (!resp2.Value) - { - msg = resp2.Error.First(); - } - else - { - msg = Resource1.String_exito; - //pone modo config2 - OliviaGlob.AddFlagTipEjec(TiposEjecucion.Config2); - } - } - } - //borra los archivos que le toca borrar - BorraFiles(); - HelperGlobal.ponMsg(msg); - //Application.Current.Dispatcher.Invoke(new Action, TratamientoComun>(((p, v)) => { finEjecuta2(p, v); }));*/ Application.Current.Dispatcher.BeginInvoke(new Action, TratamientoComun>((p, v) => finEjecuta2(p, v)),res,inst); //borra los archivos que le toca borrar @@ -172,8 +125,6 @@ namespace OliviaAddInPro.Services bool mal = false; try { - - //gestiona los flags, el estado de finok o finnok va en res.Vale if (res.HasError) { @@ -270,7 +221,7 @@ namespace OliviaAddInPro.Services //pone modo config2 OliviaGlob.AddFlagTipEjec(TiposEjecucion.Config2); //actualiza la capa de la que tiene que leer ahora para planificar - inst.CapaElems = resp.Value; + inst.CapaPlanif = resp2.Value; } } catch (Exception ex) @@ -297,9 +248,6 @@ namespace OliviaAddInPro.Services //borra los archivos que le toca borrar BorraFiles(); }); - //task.Wait(); - //borra los archivos que le toca borrar - //BorraFiles(); } /** * Borra los archivos exportados para el proceso diff --git a/Services/LimpiezaServ.cs b/Services/LimpiezaServ.cs index 9b4e01a..ade0939 100644 --- a/Services/LimpiezaServ.cs +++ b/Services/LimpiezaServ.cs @@ -109,7 +109,7 @@ namespace OliviaAddInPro.Services { //NO SE USA AQUÍ, ESTÁ EN EJECSERV //si ha importado no hace falta que compruebe, seguro que las tiene - if (OliviaGlob.IsConfig2()) + if (OliviaGlob.IsConfig2() && ComprCamposPlanif(limp.CapaPlanif)) return true; //no ha importado, comprueba capa if (ComprCamposPlanif(limp.CapaElems))