Avances exportación, pruebas ventana de progreso y exportación recogida

ConfiguracionSimplificada
Elena 2022-02-09 00:18:59 +01:00
parent 84f012ad6c
commit 986ea7bc33
15 changed files with 170 additions and 118 deletions

View File

@ -25,10 +25,8 @@ namespace OliviaAddInPro
{ {
protected override void OnClick() protected override void OnClick()
{ {
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
OliviaGlob.progrDialog= new ProgressDialog(
"Procesando", "Canceled", 100, false);
if (OliviaGlob.TipoEjec == TiposEjecucion.Ninguno) if (OliviaGlob.TipoEjec == TiposEjecucion.Ninguno)
{ {
///Comprueba que existe la red navegable configurada ///Comprueba que existe la red navegable configurada

View File

@ -25,8 +25,6 @@ namespace OliviaAddInPro
{ {
protected override void OnClick() protected override void OnClick()
{ {
OliviaGlob.progrDialog = new ProgressDialog(
"Procesando", "Canceled", 100, false);
if (OliviaGlob.TipoEjec==TiposEjecucion.Ninguno) if (OliviaGlob.TipoEjec==TiposEjecucion.Ninguno)
{ {
///Comprueba que existe la red navegable configurada ///Comprueba que existe la red navegable configurada

View File

@ -779,7 +779,7 @@ namespace OliviaAddInPro.Helper
return res; return res;
} }
public static bool ExportShp2(string pathLayerIn, SpatialQueryFilter filter, string nameShp, string outpath, CancelableProgressorSource cps) public static bool ExportShp2(string pathLayerIn, SpatialQueryFilter filter, string nameShp, string outpath, CancelableProgressorSource cps, int incmax=100)
{ {
if (!System.IO.Directory.Exists(outpath)) if (!System.IO.Directory.Exists(outpath))
System.IO.Directory.CreateDirectory(outpath); System.IO.Directory.CreateDirectory(outpath);
@ -796,7 +796,7 @@ namespace OliviaAddInPro.Helper
return false; return false;
} }
List<long> ids = new List<long>(); List<long> ids = new List<long>();
cps.Status = "Aplicando filtro espacial a exportación";
//Añade a la lista los ids que cumplen el filtro espacial //Añade a la lista los ids que cumplen el filtro espacial
using (RowCursor cursor = fc.Search(filter)) using (RowCursor cursor = fc.Search(filter))
{ {
@ -818,10 +818,10 @@ namespace OliviaAddInPro.Helper
string whereClause = GetWhereClauseFromIds(ids); string whereClause = GetWhereClauseFromIds(ids);
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
///Exporta ///Exporta
cps.Status = "Exportando datos";
string[] args = { pathLayerIn, outpath, nameShp, whereClause }; string[] args = { pathLayerIn, outpath, nameShp, whereClause };
// execute the tool // execute the tool
uint valini = cps.Value;
IGPResult gpResult = Geoprocessing.ExecuteToolAsync("FeatureClassToFeatureClass_conversion", args, IGPResult gpResult = Geoprocessing.ExecuteToolAsync("FeatureClassToFeatureClass_conversion", args,
null, cps.CancellationTokenSource.Token, null, cps.CancellationTokenSource.Token,
@ -837,10 +837,7 @@ namespace OliviaAddInPro.Helper
case "OnProgressMessage": case "OnProgressMessage":
{ {
string msg = string.Format("{0}: {1}", new object[] { event_name, (string)o }); string msg = string.Format("{0}: {1}", new object[] { event_name, (string)o });
Debug.WriteLine(msg); Debug.WriteLine(msg); ;
;
//System.Windows.MessageBox.Show(msg);
//_cts.Cancel();
} }
break; break;
@ -848,11 +845,11 @@ namespace OliviaAddInPro.Helper
{ {
string msg2 = string.Format("{0}: {1} %", new object[] { event_name, (int)o }); string msg2 = string.Format("{0}: {1} %", new object[] { event_name, (int)o });
Debug.WriteLine(msg2); Debug.WriteLine(msg2);
var av = (int)0; var av = (int)o;
if (av > 0) if (av > 0)
{ {
cps.Value = (uint)(80 * av * 0.2); cps.Value += (uint)((float)av/100*Math.Min(incmax, cps.Max-valini));
} }
// if ((int)o < 0) // if ((int)o < 0)
//System.Windows.MessageBox.Show(msg2); //System.Windows.MessageBox.Show(msg2);
//_cts.Cancel(); //_cts.Cancel();
@ -860,8 +857,22 @@ namespace OliviaAddInPro.Helper
} }
} }
}).Result; }).Result;
cps.Status = "Finalizando exportacion";
if (gpResult.IsCanceled)
{
cps.CancellationTokenSource.Cancel();
return false;
}
if(gpResult.IsFailed)
{
string msg;
if (gpResult.ErrorMessages != null)
msg = gpResult.ErrorMessages.First().Text;
else
msg = "Errores en la exportación";
OutStr = "Error: " + msg;
return false;
}
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -946,7 +957,6 @@ namespace OliviaAddInPro.Helper
*/ */
cps.Status = "Guardando geometria a shp"; cps.Status = "Guardando geometria a shp";
//var progSrc = new CancelableProgressorSource();
string[] args = { pathLayerIn, outpath }; string[] args = { pathLayerIn, outpath };
// execute the tool // execute the tool
IGPResult gpResult = Geoprocessing.ExecuteToolAsync("FeatureClassToShapefile_conversion", args, IGPResult gpResult = Geoprocessing.ExecuteToolAsync("FeatureClassToShapefile_conversion", args,

View File

@ -8,6 +8,7 @@ using ArcGIS.Desktop.Internal.Framework.Controls;
using ArcGIS.Desktop.Framework.Dialogs; using ArcGIS.Desktop.Framework.Dialogs;
using System.Windows; using System.Windows;
using System.IO; using System.IO;
using ArcGIS.Desktop.Framework.Threading.Tasks;
namespace OliviaAddInPro.Helper namespace OliviaAddInPro.Helper
{ {
@ -79,5 +80,28 @@ namespace OliviaAddInPro.Helper
} }
} }
}
public class MyCancelableProgressorSource
{
public CancelableProgressorSource _ProgrSrc;
public MyCancelableProgressorSource(ProgressDialog prodlg)
{
_ProgrSrc = new CancelableProgressorSource(prodlg);
_ProgrSrc.Max = 100;
}
public void Init(string stat)
{
_ProgrSrc.Value = 0;
_ProgrSrc.Status = stat;
}
public void IncMessage(uint inc, string mes)
{
if ((_ProgrSrc.Value + inc) < _ProgrSrc.Max)
_ProgrSrc.Value += inc;
_ProgrSrc.Message = mes;
}
} }
} }

View File

@ -47,24 +47,22 @@ namespace OliviaAddInPro.Model
public Limpieza() public Limpieza()
{ {
Serv = new LimpiezaServ(this); Serv = new LimpiezaServ(this);
ProgrSrc = new MyCancelableProgressorSource(OliviaGlob.progrDialog);
} }
public TareaRes Ejecuta(ModosEjec modo, CancelableProgressorSource cps) public TareaRes Ejecuta(ModosEjec modo)
{ {
TareaRes res = null; TareaRes res = null;
res = Serv.Ejecuta(modo, cps); res = Serv.Ejecuta(modo);
return res; return res;
} }
public async void EjecutaAsync(ModosEjec modo, CancelableProgressorSource cps, Action<TareaRes> ffin) public async void EjecutaAsync(ModosEjec modo, Action<TareaRes> ffin)
{ {
await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() => await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
{ {
cps.Status = "Procesando"; var res = Ejecuta(modo);
cps.Value = 0;
var res = Ejecuta(modo, cps);
ffin(res); ffin(res);
return res; return res;
}); });
} }

View File

@ -74,9 +74,9 @@ namespace OliviaAddInPro.Model
public static string ftclass_ejes; //<Nombre de la capa de ejes de carretera public static string ftclass_ejes; //<Nombre de la capa de ejes de carretera
public static string ftclass_muni; //<Nombre de la capa de municipios de TOMTOM public static string ftclass_muni; //<Nombre de la capa de municipios de TOMTOM
}; };
private static TiposEjecucion tipoEjec = TiposEjecucion.Ninguno; private static TiposEjecucion tipoEjec;
public static Limpieza limp = new Limpieza(); public static Limpieza limp;
private static Recogida reco = new Recogida(); private static Recogida reco;
#region Properties #region Properties
public static TiposEjecucion TipoEjec public static TiposEjecucion TipoEjec
@ -101,9 +101,11 @@ namespace OliviaAddInPro.Model
public static void Inicia() public static void Inicia()
{ {
tipoEjec = TiposEjecucion.Ninguno;
IniDefault(); IniDefault();
LimpiezaDef.iniciaLimpDef(); LimpiezaDef.iniciaLimpDef();
RecogidaDef.iniciaRecoDef(); RecogidaDef.iniciaRecoDef();
progrDialog = new ProgressDialog("Procesando", Resource1.String_cancel_progreso, 100, false);
limp = new Limpieza(); limp = new Limpieza();
reco = new Recogida(); reco = new Recogida();
SpatRef = ArcGIS.Core.Geometry.SpatialReferenceBuilder.CreateSpatialReference(GeneralDef.SpatRefDef); SpatRef = ArcGIS.Core.Geometry.SpatialReferenceBuilder.CreateSpatialReference(GeneralDef.SpatRefDef);

View File

@ -58,11 +58,7 @@ namespace OliviaAddInPro.Model
/** /**
* grados en º de giro del vehículo * grados en º de giro del vehículo
*/ */
public int GiroVehic { get; set; } = 0; public int GiroVehic { get; set; } = 0;
/**
* Coordenadas de la planta de descarga
*/
public Coordinate2D CoordsPlanta { get; set; } = new Coordinate2D(0, 0);
/* /*
* *
@ -76,23 +72,22 @@ namespace OliviaAddInPro.Model
public Recogida() public Recogida()
{ {
Serv = new RecogidaServ(this); Serv = new RecogidaServ(this);
ProgrSrc = new MyCancelableProgressorSource(OliviaGlob.progrDialog);
} }
public TareaRes Ejecuta(ModosEjec modo, CancelableProgressorSource cps) public TareaRes Ejecuta(ModosEjec modo)
{ {
TareaRes res = null; TareaRes res = null;
res = Serv.Ejecuta(modo, cps); res = Serv.Ejecuta(modo);
return res; return res;
} }
public async void EjecutaAsync(ModosEjec modo, CancelableProgressorSource cps, Action<TareaRes> ffin) public async void EjecutaAsync(ModosEjec modo, Action<TareaRes> ffin)
{ {
await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() => await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
{ {
cps.Status = "Procesando"; var res = Ejecuta(modo);
cps.Value = 0;
var res = Ejecuta(modo, cps);
ffin(res); ffin(res);
return res; return res;

View File

@ -5,6 +5,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using ArcGIS.Core.Geometry; using ArcGIS.Core.Geometry;
using ArcGIS.Desktop.Internal.Layouts.Utilities; using ArcGIS.Desktop.Internal.Layouts.Utilities;
using OliviaAddInPro.Helper;
namespace OliviaAddInPro.Model namespace OliviaAddInPro.Model
{ {
@ -61,6 +62,10 @@ namespace OliviaAddInPro.Model
* Coordenadas de la instalación * Coordenadas de la instalación
*/ */
public Coordinate2D CoordsInstal { get; set; } = new Coordinate2D(0, 0); public Coordinate2D CoordsInstal { get; set; } = new Coordinate2D(0, 0);
/**
* Coordenadas de la planta de descarga, solo hace falta para recogida
*/
public Coordinate2D CoordsPlanta { get; set; } = new Coordinate2D(0, 0);
/** /**
* Buffer para la exportación, en metros * Buffer para la exportación, en metros
*/ */
@ -121,5 +126,10 @@ namespace OliviaAddInPro.Model
set { err_str = value;} set { err_str = value;}
} }
/**
* Para la ventana de progreso
*/
public MyCancelableProgressorSource ProgrSrc;
} }
} }

9
Resource1.Designer.cs generated
View File

@ -60,6 +60,15 @@ namespace OliviaAddInPro {
} }
} }
/// <summary>
/// Busca una cadena traducida similar a Se ha cancelado la operación.
/// </summary>
internal static string String_cancel_progreso {
get {
return ResourceManager.GetString("String_cancel_progreso", resourceCulture);
}
}
/// <summary> /// <summary>
/// Busca una cadena traducida similar a General. /// Busca una cadena traducida similar a General.
/// </summary> /// </summary>

View File

@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="String_cancel_progreso" xml:space="preserve">
<value>Se ha cancelado la operación</value>
</data>
<data name="String_ConfigGeneralView" xml:space="preserve"> <data name="String_ConfigGeneralView" xml:space="preserve">
<value>General</value> <value>General</value>
</data> </data>

View File

@ -35,17 +35,18 @@ namespace OliviaAddInPro.Services
* Modo 0, sectorizar * Modo 0, sectorizar
* Modo 1, planificar * Modo 1, planificar
*/ */
public bool LanzaEjec(ModosEjec modo, CancelableProgressorSource cps, out string ErrStr) public bool LanzaEjec(ModosEjec modo, out string ErrStr)
{ {
ErrStr = string.Empty; ErrStr = string.Empty;
try try
{ {
com.ProgrSrc.Init("Exportando datos");
//Comprueba que tiene las columnas necesarias para planificar //Comprueba que tiene las columnas necesarias para planificar
if ((modo == ModosEjec.Planifica) && !CompruebaPlanif()) if ((modo == ModosEjec.Planifica) && !CompruebaPlanif())
{ {
ErrStr = "En la capa de ámbitos seleccionada no se encuentran columnas de SECTOR y/o SECUENCIA, necesarias para planificar"; ErrStr = "En la capa de ámbitos seleccionada no se encuentran columnas de SECTOR y/o SECUENCIA, necesarias para planificar";
return false; return false;
} }
//Cuenta las filas que cumplen la consulta //Cuenta las filas que cumplen la consulta
int nelems = HelperGdb.GetNumElems(com.CapaElems, com.ConsultaAmbs); int nelems = HelperGdb.GetNumElems(com.CapaElems, com.ConsultaAmbs);
@ -55,7 +56,7 @@ namespace OliviaAddInPro.Services
return false; return false;
} }
cps.Status = "Exportando geometria"; com.ProgrSrc.IncMessage(0, "Exportando geometria");
//Obtiene la geometría que envuelve a los ámbitos //Obtiene la geometría que envuelve a los ámbitos
Geometry geom_export = null; Geometry geom_export = null;
@ -80,23 +81,26 @@ namespace OliviaAddInPro.Services
//se consigue el tiempo en este instante para añadirlo a los nombres de los archivos de salida (shapefiles) //se consigue el tiempo en este instante para añadirlo a los nombres de los archivos de salida (shapefiles)
fechaHora = DateTime.Now.ToString("yyyyMMdd_Hmmss"); fechaHora = DateTime.Now.ToString("yyyyMMdd_Hmmss");
//Pone nombre al shape en función de los ámbitos, el tratamiento, y los polígonos + timestamp //Pone nombre al shape en función de los ámbitos, el tratamiento, y los polígonos + timestamp
com.NombreShpExport = prefNameExport + com.NombreShpExp_PrefTto +"_" + fechaHora + extShp; com.NombreShpExport = prefNameExport + com.NombreShpExp_PrefTto + "_" + fechaHora + extShp;
com.ProgrSrc.IncMessage(10, "Exportando ámbitos de trabajo");
//exporta los datos de entrada //exporta los datos de entrada
if (!HelperGdb.ExportShp2(com.CapaElems, filtroEspacial, com.NombreShpExport, OliviaGlob.Paths.DirData, cps)) if (!HelperGdb.ExportShp2(com.CapaElems, filtroEspacial, com.NombreShpExport, OliviaGlob.Paths.DirData, com.ProgrSrc._ProgrSrc, 40))
//if (!HelperGdb.ExportShp(com.CapaElems, filtroEspacial, com.NombreShpExport, OliviaGlob.Paths.DirData, cps, out ErrStr))
{ {
ErrStr = "Error al exportar los ámbitos: "+ HelperGdb.OutStr; ErrStr = "Error al exportar los ámbitos: " + HelperGdb.OutStr;
return false;
}
if (com.ProgrSrc._ProgrSrc.CancellationTokenSource.IsCancellationRequested)
{
ErrStr = Resource1.String_cancel_progreso;
return false; return false;
} }
//Guarda el nombre //Guarda el nombre
OliviaGlob.Paths.PathData = OliviaGlob.Paths.DirData + com.NombreShpExport; OliviaGlob.Paths.PathData = OliviaGlob.Paths.DirData + com.NombreShpExport;
if(cps.CancellationTokenSource.IsCancellationRequested)
{ com.ProgrSrc.IncMessage(50, "Preparando exportación de red navegable");
ErrStr = "Se ha cancelado la operación";
return false;
}
cps.Value = 80;
//hace intersecciones espaciales en caso de ámbitos lineales para quitar los que tienen más parte fuera de la zona que dentro //hace intersecciones espaciales en caso de ámbitos lineales para quitar los que tienen más parte fuera de la zona que dentro
//REVISAR //REVISAR
/*if (((com.GeomNiv != null) || (com.GeomZon != null)) && /*if (((com.GeomNiv != null) || (com.GeomZon != null)) &&
@ -111,76 +115,80 @@ namespace OliviaAddInPro.Services
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
//comprueba, si hay restricciones de circulación y hay instalación, que la instalación no está en ellas //comprueba, si hay restricciones de circulación y hay instalación, que la instalación no está en ellas
if (!com.CoordsInstal.IsEmpty && (com.CoordsInstal.X!=0) && (com.GeomRestr != null)) if (!com.CoordsInstal.IsEmpty && (com.CoordsInstal.X != 0) && (com.GeomRestr != null))
{ {
Respuesta<bool> resp = HelperGdb.IsPtoInGeom(com.CoordsInstal, com.GeomRestr); Respuesta<bool> resp = HelperGdb.IsPtoInGeom(com.CoordsInstal, com.GeomRestr);
if (!resp.Value && resp.HasError) if (!resp.Value && resp.HasError)
{ {
ErrStr = "Error al comprobar si la instalación está contenida en el polígono de restricciones: " + resp.Error.ElementAt(0); ErrStr = "Error al comprobar si la instalación está contenida en el polígono de restricciones: " + resp.Error.ElementAt(0);
return false; return false;
} }
else if(resp.Value) //sí está contenido en las restricciones else if (resp.Value) //sí está contenido en las restricciones
{ {
ErrStr = "Error, la instalación está en la zona restringida a la circulación "; ErrStr = "Error, la instalación está en la zona restringida a la circulación ";
return false; return false;
} }
}
if (cps.CancellationTokenSource.IsCancellationRequested)
{
ErrStr = "Se ha cancelado la operación";
return false;
} }
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
//exporta la red navegable (buffer, le quita las restr...) //exporta la red navegable (buffer, le quita las restr...)
//se obtiene la geometría a intersecar con la red, que será la que contiene //se obtiene la geometría a intersecar con la red, que será la que contiene
//a todos los ámbitos y la instalación, ampliada un buffer, mayor si hay //a todos los ámbitos y la instalación, ampliada un buffer, mayor si hay
//restricciones de circulación //restricciones de circulación
Geometry geom_aux = HelperGdb.BufferGeom(geom_export, com.BuffExport).Value; geom_export = HelperGdb.BufferGeom(geom_export, com.BuffExport).Value;
if(geom_aux==null) if (geom_export == null)
{ {
ErrStr = "Error al añadir buffer a la geometría"; ErrStr = "Error al añadir buffer a la geometría";
return false; return false;
} }
//quita las restricciones //quita las restricciones
geom_aux = HelperGdb.QuitaGeom(geom_aux, com.GeomRestr); if (com.GeomRestr != null)
if (geom_aux == null)
{ {
ErrStr = "Error al intersecar con las restricciones."; geom_export = HelperGdb.QuitaGeom(geom_export, com.GeomRestr);
return false; if (geom_export == null)
}
geom_export = geom_aux;
//////////////////////////////////////////////////////////////
//comprueba si la geometría de exportación contiene a la instalación
if (!com.CoordsInstal.IsEmpty && (com.CoordsInstal.X != 0))
{
Respuesta<bool> resp = HelperGdb.IsPtoInGeom(com.CoordsInstal, geom_export);
if (!resp.Value) //si no lo contiene
{ {
//ha ido mal ErrStr = "Error al intersecar con las restricciones.";
if (resp.HasError) return false;
}
}
//////////////////////////////////////////////////////////////
//comprueba si la geometría de exportación contiene a la instalación y a la planta de descarga
Coordinate2D[] coords = { com.CoordsInstal, com.CoordsPlanta };
for (int i = 0; i < coords.Length; i++)
{
if (!coords[i].IsEmpty && (coords[i].X != 0))
{
Respuesta<bool> resp = HelperGdb.IsPtoInGeom(coords[i], geom_export);
if (!resp.Value) //si no lo contiene
{ {
ErrStr = "Error al comprobar si la instalación está contenida en el polígono de exportación: " + resp.Error.ElementAt(0); //ha ido mal
return false; if (resp.HasError)
}
else
{
//amplía la geom
Respuesta<ArcGIS.Core.Geometry.Geometry> respGeom = HelperGdb.AddPtoInGeom(com.CoordsInstal, geom_export);
if (respGeom.Value == null)
{ {
//ha ido mal ErrStr = "Error al comprobar si la instalación está contenida en el polígono de exportación: " + resp.Error.ElementAt(0);
if (resp.HasError)
ErrStr = resp.Error.ElementAt(0);
else
ErrStr = "Error al incluir punto de instalación en polígono de exportación.";
return false; return false;
} }
//actualiza la geometría else
geom_export = respGeom.Value; {
//amplía la geom
Respuesta<ArcGIS.Core.Geometry.Geometry> respGeom = HelperGdb.AddPtoInGeom(coords[i], geom_export);
if (respGeom.Value == null)
{
//ha ido mal
if (resp.HasError)
ErrStr = resp.Error.ElementAt(0);
else
ErrStr = "Error al incluir punto de instalación en polígono de exportación.";
return false;
}
//actualiza la geometría
geom_export = respGeom.Value;
}
} }
} }
} }
//Hace el filtro con la geometría final //Hace el filtro con la geometría final
filtroEspacial = HelperGdb.CreateFiler(String.Empty, geom_export); filtroEspacial = HelperGdb.CreateFiler(String.Empty, geom_export);
if (filtroEspacial == null) if (filtroEspacial == null)
@ -189,22 +197,22 @@ namespace OliviaAddInPro.Services
return false; return false;
} }
//Prepara naombre de exportación com.ProgrSrc.IncMessage(60, "Exportando red navegable");
//Prepara nombre de exportación
com.NombreShpExportNw = prefNameExportNw + fechaHora + extShp; com.NombreShpExportNw = prefNameExportNw + fechaHora + extShp;
//exporta los datos de entrada //exporta los datos de entrada
string capaNw =System.IO.Path.Combine(OliviaGlob.Paths.PathGdbNw, OliviaGlob.Capas.ftclass_ejes); string capaNw =System.IO.Path.Combine(OliviaGlob.Paths.PathGdbNw, OliviaGlob.Capas.ftclass_ejes);
//if (!HelperGdb.ExportShp(capaNw, filtroEspacial, com.NombreShpExportNw, OliviaGlob.Paths.DirData, cps, out ErrStr)) if (!HelperGdb.ExportShp2(capaNw, filtroEspacial, com.NombreShpExportNw, OliviaGlob.Paths.DirData, com.ProgrSrc._ProgrSrc,40))
if (!HelperGdb.ExportShp2(capaNw, filtroEspacial, com.NombreShpExportNw, OliviaGlob.Paths.DirData, cps))
{ {
ErrStr = "Error al exportar la red navegable: " + HelperGdb.OutStr; ErrStr = "Error al exportar la red navegable: " + HelperGdb.OutStr;
return false; return false;
} }
//guarda los nombres del shape //guarda los nombres del shape
OliviaGlob.Paths.PathNW = OliviaGlob.Paths.DirData + com.NombreShpExportNw; OliviaGlob.Paths.PathNW = OliviaGlob.Paths.DirData + com.NombreShpExportNw;
if (com.ProgrSrc._ProgrSrc.CancellationTokenSource.IsCancellationRequested)
if (cps.CancellationTokenSource.IsCancellationRequested)
{ {
ErrStr = "Se ha cancelado la operación"; ErrStr = Resource1.String_cancel_progreso;
return false; return false;
} }
} }

View File

@ -27,7 +27,7 @@ namespace OliviaAddInPro.Services
* Modo 0, sectorizar * Modo 0, sectorizar
* Modo 1, planificar * Modo 1, planificar
*/ */
public TareaRes Ejecuta(ModosEjec modo, CancelableProgressorSource cps) public TareaRes Ejecuta(ModosEjec modo)
{ {
var res = new TareaRes() var res = new TareaRes()
{ {
@ -35,10 +35,10 @@ namespace OliviaAddInPro.Services
data = null, data = null,
msg = "" msg = ""
}; };
MyCancelableProgressorSource cps = limp.ProgrSrc;
com = (TratamientoComun)limp; com = (TratamientoComun)limp;
string nombFileAmbs = string.Empty; string nombFileAmbs = string.Empty;
cps.Status = "Preparando filtro para la exportacion";
//Prepara consulta //Prepara consulta
ErrStr = string.Empty; ErrStr = string.Empty;
if (!PreparaConsulta(out nombFileAmbs)) if (!PreparaConsulta(out nombFileAmbs))
@ -46,15 +46,14 @@ namespace OliviaAddInPro.Services
res.msg= "No se ha seleccionado una consulta válida" + limp.ConsultaAmbs; res.msg= "No se ha seleccionado una consulta válida" + limp.ConsultaAmbs;
res.Errores = true; res.Errores = true;
return res; return res;
} }
cps.Value = 5;
//Prepara nombre //Prepara nombre
limp.NombreShpExp_PrefTto = "T" + limp.TipoTto.ToString("00") + nombFileAmbs + DameStrPoligs(); limp.NombreShpExp_PrefTto = "T" + limp.TipoTto.ToString("00") + nombFileAmbs + DameStrPoligs();
string msg = ""; string msg = "";
//comienza ejecucion //comienza ejecucion
if(!LanzaEjec(ModosEjec.Sectoriza, cps, out msg)) if(!LanzaEjec(modo, out msg))
{ {
res.Errores = true; res.Errores = true;
res.msg = msg; res.msg = msg;

View File

@ -18,6 +18,7 @@ namespace OliviaAddInPro.Services
public RecogidaServ(Recogida _reco) public RecogidaServ(Recogida _reco)
{ {
reco = _reco; reco = _reco;
RellenaFiltrosReco();
} }
/* /*
@ -60,7 +61,7 @@ namespace OliviaAddInPro.Services
* Modo 0, sectorizar * Modo 0, sectorizar
* Modo 1, planificar * Modo 1, planificar
*/ */
public TareaRes Ejecuta(ModosEjec modo, CancelableProgressorSource cps) public TareaRes Ejecuta(ModosEjec modo)
{ {
var res = new TareaRes() var res = new TareaRes()
{ {
@ -71,7 +72,7 @@ namespace OliviaAddInPro.Services
com = (TratamientoComun)reco; com = (TratamientoComun)reco;
string nombFileAmbs = string.Empty; string nombFileAmbs = string.Empty;
cps.Status = "Preparando filtro para la exportacion";
//Prepara consulta //Prepara consulta
ErrStr = string.Empty; ErrStr = string.Empty;
@ -80,8 +81,7 @@ namespace OliviaAddInPro.Services
res.msg = "No se ha seleccionado una consulta válida" + reco.ConsultaAmbs; res.msg = "No se ha seleccionado una consulta válida" + reco.ConsultaAmbs;
res.Errores = true; res.Errores = true;
return res; return res;
} }
cps.Value = 10;
//Prepara nombre //Prepara nombre
//Pone nombre al shape en función de los ámbitos, el tratamiento, y los polígonos + timestamp //Pone nombre al shape en función de los ámbitos, el tratamiento, y los polígonos + timestamp
@ -89,7 +89,7 @@ namespace OliviaAddInPro.Services
string msg = ""; string msg = "";
//comienza ejecucion //comienza ejecucion
if (!LanzaEjec(ModosEjec.Sectoriza, cps, out msg)) if (!LanzaEjec(modo, out msg))
{ {
res.Errores = true; res.Errores = true;
res.msg = msg; res.msg = msg;

View File

@ -173,8 +173,7 @@ namespace OliviaAddInPro
string err = ""; string err = "";
OliviaGlob.progrDialog.Show(); OliviaGlob.progrDialog.Show();
var progSrc = new CancelableProgressorSource(OliviaGlob.progrDialog);
if (!Lee(out err)) if (!Lee(out err))
{ {
@ -183,7 +182,7 @@ namespace OliviaAddInPro
} }
Action<TareaRes> ac = finEjecuta; Action<TareaRes> ac = finEjecuta;
OliviaGlob.Limp.EjecutaAsync(modo, progSrc, ac); OliviaGlob.Limp.EjecutaAsync(modo, ac);
} }
public void finEjecuta(TareaRes res) public void finEjecuta(TareaRes res)
{ {

View File

@ -224,8 +224,7 @@ namespace OliviaAddInPro
public void Ejecuta(OliviaAddInPro.Services.ModosEjec modo) public void Ejecuta(OliviaAddInPro.Services.ModosEjec modo)
{ {
string err = ""; string err = "";
OliviaGlob.progrDialog.Show(); OliviaGlob.progrDialog.Show();
var progSrc = new CancelableProgressorSource(OliviaGlob.progrDialog);
if (!Lee(out err)) if (!Lee(out err))
{ {
HelperGlobal.ponMsg(err); HelperGlobal.ponMsg(err);
@ -233,7 +232,7 @@ namespace OliviaAddInPro
} }
Action<TareaRes> ac = finEjecuta; Action<TareaRes> ac = finEjecuta;
OliviaGlob.Reco.EjecutaAsync(modo, progSrc, ac); OliviaGlob.Reco.EjecutaAsync(modo, ac);
} }
public void finEjecuta(TareaRes res) public void finEjecuta(TareaRes res)