Sigo sin avanzar demasiado en importación
parent
e2ec0d2dc6
commit
a0164e6bb4
|
|
@ -23,6 +23,7 @@ using System.Diagnostics;
|
|||
using OliviaAddInPro.View;
|
||||
using OliviaAddInPro.Model.contract;
|
||||
using ArcGIS.Core.Data.DDL;
|
||||
using ArcGIS.Core.CIM;
|
||||
|
||||
namespace OliviaAddInPro.Helper
|
||||
{
|
||||
|
|
@ -113,6 +114,34 @@ namespace OliviaAddInPro.Helper
|
|||
return geomsal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Devuelve el sistema de coordenadas de una capa
|
||||
*/
|
||||
public static ArcGIS.Core.Geometry.SpatialReference GetSpatRef(string ftclassName)
|
||||
{
|
||||
FeatureClass fc = GetFtClassFromShp(ftclassName).Result;
|
||||
if (fc == null)
|
||||
return null;
|
||||
ArcGIS.Core.Geometry.SpatialReference spatref = null;
|
||||
var task = ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
spatref = fc.GetDefinition().GetSpatialReference();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
finally
|
||||
{
|
||||
fc.Dispose();
|
||||
}
|
||||
});
|
||||
task.Wait();
|
||||
|
||||
return spatref;
|
||||
}
|
||||
|
||||
/**
|
||||
* Devuelve el sistema de coordenadas de una capa
|
||||
*/
|
||||
|
|
@ -1491,9 +1520,8 @@ namespace OliviaAddInPro.Helper
|
|||
try
|
||||
{
|
||||
var lyr = MapView.Active.Map.FindLayers(nombCapa).FirstOrDefault() as FeatureLayer;
|
||||
if (lyr == null)
|
||||
return false;
|
||||
MapView.Active.Map.RemoveLayer(lyr);
|
||||
if (lyr!= null)
|
||||
MapView.Active.Map.RemoveLayer(lyr);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
@ -1509,15 +1537,16 @@ namespace OliviaAddInPro.Helper
|
|||
{
|
||||
try
|
||||
{
|
||||
var lyrs = MapView.Active.Map.Layers;
|
||||
foreach (FeatureLayer fl in lyrs)
|
||||
ReadOnlyObservableCollection<Layer> lyrs= MapView.Active.Map.Layers;
|
||||
while(lyrs.Any())
|
||||
{
|
||||
var fl = lyrs.FirstOrDefault();
|
||||
if (fl != null)
|
||||
MapView.Active.Map.RemoveLayer(fl);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1563,8 +1592,8 @@ namespace OliviaAddInPro.Helper
|
|||
{
|
||||
try
|
||||
{
|
||||
FeatureClass ftclss = gdb.OpenDataset<FeatureClass>(datasetName);
|
||||
ftclss.Dispose();
|
||||
FeatureDataset ftdst = gdb.OpenDataset<FeatureDataset>(datasetName);
|
||||
ftdst.Dispose();
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
|
|
@ -1574,6 +1603,28 @@ namespace OliviaAddInPro.Helper
|
|||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* Comprueba si el dataset dado tiene la referencia espacial dada
|
||||
* Devuelve 0 si es la misma, 2 si no es la misma, 1 si ha dado error
|
||||
*/
|
||||
public static Task<int> CheckSpatRefDataset(Geodatabase gdb, string datasetName, ArcGIS.Core.Geometry.SpatialReference spatref)
|
||||
{
|
||||
return ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run((Func<int>)(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
FeatureDatasetDefinition featureDatasetDefinition = gdb.GetDefinition<FeatureDatasetDefinition>(datasetName);
|
||||
if(featureDatasetDefinition.GetSpatialReference().Equals(spatref))
|
||||
return 0;
|
||||
return 2;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un FeatureDataset con el nombre dado y la spatialrefernece dada en la gdb dada
|
||||
* Devuelve 0 si no hay que crear nada o si lo ha creado bien, 2 si existe el dataset pero con otra referencia espacial, 1 si da error
|
||||
|
|
@ -1594,21 +1645,30 @@ namespace OliviaAddInPro.Helper
|
|||
return res;
|
||||
}
|
||||
//comprueba si extiste ya el dataset
|
||||
if (CheckDataset(gdb, datasetName).Result)
|
||||
var task1 = CheckDataset(gdb, datasetName);
|
||||
task1.Wait();
|
||||
if (task1.Result)
|
||||
{
|
||||
//comprueba si tiene la misma referencia espacial
|
||||
featureDatasetDefinition = gdb.GetDefinition<FeatureDatasetDefinition>(datasetName);
|
||||
if (featureDatasetDefinition.GetSpatialReference().Equals(spatref))
|
||||
//comprueba si tiene la misma referencia espacial
|
||||
var r = CheckSpatRefDataset(gdb, datasetName, spatref).Result;
|
||||
if (r==0)
|
||||
{
|
||||
res.Value = 0; //no hay nada que crear, existe y coincide la spatial ref
|
||||
return res;
|
||||
}
|
||||
else
|
||||
else if(r==2)
|
||||
{
|
||||
//crea un nuevo dataset y avisa
|
||||
datasetName = datasetName + "_1";
|
||||
datasetNameOut = datasetName;
|
||||
}
|
||||
else
|
||||
{
|
||||
//ha dado error al comprobar
|
||||
res.Value = 1;
|
||||
res.Error.Add("Errores al crear el Dataset " + datasetName);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
//no existe, lo crea
|
||||
var task = ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run((Func<Respuesta<bool>>)(() =>
|
||||
|
|
@ -1674,16 +1734,45 @@ namespace OliviaAddInPro.Helper
|
|||
{
|
||||
var res = new Respuesta<bool> { Value = false };
|
||||
string[] args = { nom_shp, Gdb_dataset, namefc };
|
||||
// execute the tool
|
||||
FeatureClass fc = GetFtClassFromShp(nom_shp).Result;
|
||||
if (fc == null)
|
||||
return res;
|
||||
// execute the tool
|
||||
|
||||
try
|
||||
{
|
||||
ArcGIS.Core.Geometry.SpatialReference spatref = GetSpatRef(fc);
|
||||
ArcGIS.Core.Geometry.SpatialReference spatref = GetSpatRef(nom_shp);
|
||||
var environments = Geoprocessing.MakeEnvironmentArray(outputCoordinateSystem: spatref);
|
||||
IGPResult gpResult = Geoprocessing.ExecuteToolAsync("FeatureClassToFeatureClass_conversion", args, environments).Result;
|
||||
CancelableProgressorSource cps = new CancelableProgressorSource();
|
||||
IGPResult gpResult = Geoprocessing.ExecuteToolAsync("FeatureClassToFeatureClass_conversion", Geoprocessing.MakeValueArray(args), environments,cps.CancellationTokenSource.Token,
|
||||
(event_name, o) => // implement delegate and handle events
|
||||
{
|
||||
switch (event_name)
|
||||
{
|
||||
case "OnValidate": // stop execute if any warnings
|
||||
//if ((o as IGPMessage[]).Any(it => it.Type == GPMessageType.Warning))
|
||||
//_cts.Cancel();
|
||||
break;
|
||||
|
||||
case "OnProgressMessage":
|
||||
{
|
||||
string msg = string.Format("{0}: {1}", new object[] { event_name, (string)o });
|
||||
Debug.WriteLine(msg); ;
|
||||
}
|
||||
break;
|
||||
|
||||
case "OnProgressPos":
|
||||
{
|
||||
string msg2 = string.Format("{0}: {1} %", new object[] { event_name, (int)o });
|
||||
Debug.WriteLine(msg2);
|
||||
var av = (int)o;
|
||||
if ((int)o < 0)
|
||||
{
|
||||
//System.Windows.MessageBox.Show(msg2);
|
||||
//cps.CancellationTokenSource.Cancel();
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}).Result;
|
||||
if (gpResult.IsCanceled)
|
||||
{
|
||||
return res;
|
||||
|
|
@ -1708,10 +1797,6 @@ namespace OliviaAddInPro.Helper
|
|||
res.Error.Add("Error: " + ex.Message);
|
||||
return res;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Free(fc);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1815,10 +1900,39 @@ namespace OliviaAddInPro.Helper
|
|||
Layer layer = LayerFactory.Instance.CreateLayer(ftclass_uri, mapView.Map, indexNumber, ftclassname);
|
||||
var selectedLayer = mapView.GetSelectedLayers()[0] as FeatureLayer;
|
||||
//Do something with selected layer
|
||||
SetSimpleRendererPoint(selectedLayer);
|
||||
|
||||
selectedLayer.SetVisibility(visible);
|
||||
});
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/*
|
||||
* Crea el renderer para la capa, dado un campo en el que fijarse y una simbología
|
||||
*/
|
||||
internal static void SetSimpleRendererPoint(FeatureLayer featureLayer)
|
||||
{
|
||||
CIMSimpleRenderer renderer=null;
|
||||
QueuedTask.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
//Create a circle marker
|
||||
var pointSymbol = SymbolFactory.Instance.ConstructPointSymbol(ColorFactory.Instance.RedRGB, 8, SimpleMarkerStyle.Circle);
|
||||
|
||||
//Get the layer's current renderer
|
||||
renderer = featureLayer.GetRenderer() as CIMSimpleRenderer;
|
||||
|
||||
//Update the symbol of the current simple renderer
|
||||
renderer.Symbol = pointSymbol.MakeSymbolReference();
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
//Update the feature layer renderer
|
||||
featureLayer.SetRenderer(renderer);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -383,7 +383,7 @@ namespace OliviaAddInPro.Services
|
|||
return res;
|
||||
//////////////////////////////////////////////////
|
||||
//abre las capas, pintando los sectores
|
||||
HelperGdb.CloseAllLayers();
|
||||
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
@ -433,7 +433,7 @@ namespace OliviaAddInPro.Services
|
|||
string err_spatref = "Atención, no coincide la proyección de las FeatureClass del Dataset ya creado con la del FeatureClass a importar";
|
||||
if (resp.Value == 1)
|
||||
{
|
||||
res.Error.Add("Error al crear el Dataset para importar" + tratamiento);
|
||||
res.Error.Add("Error al crear el Dataset para importar " + tratamiento);
|
||||
return res;
|
||||
}
|
||||
else if (resp.Value == 2)
|
||||
|
|
@ -499,39 +499,39 @@ namespace OliviaAddInPro.Services
|
|||
NIMPORT = 0;
|
||||
if (modo == 0) //sectoriza
|
||||
{
|
||||
NIMPORT = 2;
|
||||
NIMPORT = 1;
|
||||
noms_shp = new string[NIMPORT];
|
||||
noms_gdb = new string[NIMPORT];
|
||||
noms_shp[0] = shapefile;
|
||||
noms_gdb[0] = ambitos;
|
||||
noms_shp[1] = shapefile + NAME_AUX;
|
||||
noms_gdb[1] = ambitos + NAME_SECT;
|
||||
/*noms_shp[1] = shapefile + NAME_AUX;
|
||||
noms_gdb[1] = ambitos + NAME_SECT;*/
|
||||
}
|
||||
else if (modo == 1) //planifica
|
||||
{
|
||||
if (reco_o_limp_con_instala)
|
||||
NIMPORT = 6;
|
||||
else
|
||||
NIMPORT = 5;
|
||||
else
|
||||
NIMPORT = 4;
|
||||
if (reco_tramos)
|
||||
NIMPORT++;
|
||||
noms_shp = new string[NIMPORT];
|
||||
noms_gdb = new string[NIMPORT];
|
||||
noms_shp[0] = shapefile;
|
||||
noms_gdb[0] = ambitos;
|
||||
noms_shp[1] = shapefile + NAME_AUX;
|
||||
noms_gdb[1] = ambitos + NAME_SECT;
|
||||
noms_shp[2] = shapefile + NAME_CONTROL;
|
||||
noms_gdb[2] = ambitos + NAME_CONTROL_OUT;
|
||||
noms_shp[3] = shapefile + NAME_RUTA;
|
||||
noms_gdb[3] = ambitos + NAME_RUTA_OUT;
|
||||
noms_shp[4] = shapefile + NAME_RUTA_AUX;
|
||||
noms_gdb[4] = ambitos + NAME_RUTA_OUT + NAME_AUX;
|
||||
ii = 5;
|
||||
/*noms_shp[1] = shapefile + NAME_AUX;
|
||||
noms_gdb[1] = ambitos + NAME_SECT;*/
|
||||
noms_shp[1] = shapefile + NAME_CONTROL;
|
||||
noms_gdb[1] = ambitos + NAME_CONTROL_OUT;
|
||||
noms_shp[2] = shapefile + NAME_RUTA;
|
||||
noms_gdb[2] = ambitos + NAME_RUTA_OUT;
|
||||
noms_shp[3] = shapefile + NAME_RUTA_AUX;
|
||||
noms_gdb[3] = ambitos + NAME_RUTA_OUT + NAME_AUX;
|
||||
ii = 4;
|
||||
if (reco_o_limp_con_instala)
|
||||
{
|
||||
noms_shp[5] = shapefile + NAME_INSTAL;
|
||||
noms_gdb[5] = ambitos + NAME_INSTAL_OUT;
|
||||
noms_shp[4] = shapefile + NAME_INSTAL;
|
||||
noms_gdb[4] = ambitos + NAME_INSTAL_OUT;
|
||||
ii++;
|
||||
}
|
||||
if (reco_tramos)
|
||||
|
|
@ -620,5 +620,15 @@ namespace OliviaAddInPro.Services
|
|||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cierra del mapa las capas de trabajo después de la exportación
|
||||
*/
|
||||
public void CierraCapas()
|
||||
{
|
||||
string capa_principal = System.IO.Path.GetFileNameWithoutExtension(OliviaGlob.Paths.PathData);
|
||||
string capa_principal_nw = System.IO.Path.GetFileNameWithoutExtension(OliviaGlob.Paths.PathNW);
|
||||
HelperGdb.CloseLayer(capa_principal);
|
||||
HelperGdb.CloseLayer(capa_principal_nw);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,9 +157,7 @@ namespace OliviaAddInPro.Services
|
|||
//borra los archivos que le toca borrar
|
||||
BorraFiles();
|
||||
});
|
||||
task.Wait();
|
||||
//borra los archivos que le toca borrar
|
||||
//BorraFiles();
|
||||
task.Wait();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -55,6 +55,10 @@ namespace OliviaAddInPro.Services
|
|||
res.Error.Add(msg);
|
||||
return res;
|
||||
}
|
||||
|
||||
//cierra las capas que se han abierto durante la exportación
|
||||
CierraCapas();
|
||||
|
||||
res.Value = true;
|
||||
|
||||
return res;
|
||||
|
|
|
|||
|
|
@ -93,6 +93,9 @@ namespace OliviaAddInPro.Services
|
|||
return res;
|
||||
}
|
||||
|
||||
//cierra las capas que se han abierto durante la exportación
|
||||
CierraCapas();
|
||||
|
||||
return res;
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue