Sigo sin avanzar demasiado en importación
parent
e2ec0d2dc6
commit
a0164e6bb4
|
|
@ -23,6 +23,7 @@ using System.Diagnostics;
|
||||||
using OliviaAddInPro.View;
|
using OliviaAddInPro.View;
|
||||||
using OliviaAddInPro.Model.contract;
|
using OliviaAddInPro.Model.contract;
|
||||||
using ArcGIS.Core.Data.DDL;
|
using ArcGIS.Core.Data.DDL;
|
||||||
|
using ArcGIS.Core.CIM;
|
||||||
|
|
||||||
namespace OliviaAddInPro.Helper
|
namespace OliviaAddInPro.Helper
|
||||||
{
|
{
|
||||||
|
|
@ -113,6 +114,34 @@ namespace OliviaAddInPro.Helper
|
||||||
return geomsal;
|
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
|
* Devuelve el sistema de coordenadas de una capa
|
||||||
*/
|
*/
|
||||||
|
|
@ -1491,8 +1520,7 @@ namespace OliviaAddInPro.Helper
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var lyr = MapView.Active.Map.FindLayers(nombCapa).FirstOrDefault() as FeatureLayer;
|
var lyr = MapView.Active.Map.FindLayers(nombCapa).FirstOrDefault() as FeatureLayer;
|
||||||
if (lyr == null)
|
if (lyr!= null)
|
||||||
return false;
|
|
||||||
MapView.Active.Map.RemoveLayer(lyr);
|
MapView.Active.Map.RemoveLayer(lyr);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -1509,15 +1537,16 @@ namespace OliviaAddInPro.Helper
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var lyrs = MapView.Active.Map.Layers;
|
ReadOnlyObservableCollection<Layer> lyrs= MapView.Active.Map.Layers;
|
||||||
foreach (FeatureLayer fl in lyrs)
|
while(lyrs.Any())
|
||||||
{
|
{
|
||||||
|
var fl = lyrs.FirstOrDefault();
|
||||||
if (fl != null)
|
if (fl != null)
|
||||||
MapView.Active.Map.RemoveLayer(fl);
|
MapView.Active.Map.RemoveLayer(fl);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -1563,8 +1592,8 @@ namespace OliviaAddInPro.Helper
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
FeatureClass ftclss = gdb.OpenDataset<FeatureClass>(datasetName);
|
FeatureDataset ftdst = gdb.OpenDataset<FeatureDataset>(datasetName);
|
||||||
ftclss.Dispose();
|
ftdst.Dispose();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
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
|
* 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
|
* 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;
|
return res;
|
||||||
}
|
}
|
||||||
//comprueba si extiste ya el dataset
|
//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
|
//comprueba si tiene la misma referencia espacial
|
||||||
featureDatasetDefinition = gdb.GetDefinition<FeatureDatasetDefinition>(datasetName);
|
var r = CheckSpatRefDataset(gdb, datasetName, spatref).Result;
|
||||||
if (featureDatasetDefinition.GetSpatialReference().Equals(spatref))
|
if (r==0)
|
||||||
{
|
{
|
||||||
res.Value = 0; //no hay nada que crear, existe y coincide la spatial ref
|
res.Value = 0; //no hay nada que crear, existe y coincide la spatial ref
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
else
|
else if(r==2)
|
||||||
{
|
{
|
||||||
//crea un nuevo dataset y avisa
|
//crea un nuevo dataset y avisa
|
||||||
datasetName = datasetName + "_1";
|
datasetName = datasetName + "_1";
|
||||||
datasetNameOut = datasetName;
|
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
|
//no existe, lo crea
|
||||||
var task = ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run((Func<Respuesta<bool>>)(() =>
|
var task = ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run((Func<Respuesta<bool>>)(() =>
|
||||||
|
|
@ -1675,15 +1735,44 @@ namespace OliviaAddInPro.Helper
|
||||||
var res = new Respuesta<bool> { Value = false };
|
var res = new Respuesta<bool> { Value = false };
|
||||||
string[] args = { nom_shp, Gdb_dataset, namefc };
|
string[] args = { nom_shp, Gdb_dataset, namefc };
|
||||||
// execute the tool
|
// execute the tool
|
||||||
FeatureClass fc = GetFtClassFromShp(nom_shp).Result;
|
|
||||||
if (fc == null)
|
|
||||||
return res;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ArcGIS.Core.Geometry.SpatialReference spatref = GetSpatRef(fc);
|
ArcGIS.Core.Geometry.SpatialReference spatref = GetSpatRef(nom_shp);
|
||||||
var environments = Geoprocessing.MakeEnvironmentArray(outputCoordinateSystem: spatref);
|
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)
|
if (gpResult.IsCanceled)
|
||||||
{
|
{
|
||||||
return res;
|
return res;
|
||||||
|
|
@ -1708,10 +1797,6 @@ namespace OliviaAddInPro.Helper
|
||||||
res.Error.Add("Error: " + ex.Message);
|
res.Error.Add("Error: " + ex.Message);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
Free(fc);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1815,10 +1900,39 @@ namespace OliviaAddInPro.Helper
|
||||||
Layer layer = LayerFactory.Instance.CreateLayer(ftclass_uri, mapView.Map, indexNumber, ftclassname);
|
Layer layer = LayerFactory.Instance.CreateLayer(ftclass_uri, mapView.Map, indexNumber, ftclassname);
|
||||||
var selectedLayer = mapView.GetSelectedLayers()[0] as FeatureLayer;
|
var selectedLayer = mapView.GetSelectedLayers()[0] as FeatureLayer;
|
||||||
//Do something with selected layer
|
//Do something with selected layer
|
||||||
|
SetSimpleRendererPoint(selectedLayer);
|
||||||
|
|
||||||
selectedLayer.SetVisibility(visible);
|
selectedLayer.SetVisibility(visible);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return true;
|
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;
|
return res;
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
//abre las capas, pintando los sectores
|
//abre las capas, pintando los sectores
|
||||||
HelperGdb.CloseAllLayers();
|
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
@ -499,39 +499,39 @@ namespace OliviaAddInPro.Services
|
||||||
NIMPORT = 0;
|
NIMPORT = 0;
|
||||||
if (modo == 0) //sectoriza
|
if (modo == 0) //sectoriza
|
||||||
{
|
{
|
||||||
NIMPORT = 2;
|
NIMPORT = 1;
|
||||||
noms_shp = new string[NIMPORT];
|
noms_shp = new string[NIMPORT];
|
||||||
noms_gdb = new string[NIMPORT];
|
noms_gdb = new string[NIMPORT];
|
||||||
noms_shp[0] = shapefile;
|
noms_shp[0] = shapefile;
|
||||||
noms_gdb[0] = ambitos;
|
noms_gdb[0] = ambitos;
|
||||||
noms_shp[1] = shapefile + NAME_AUX;
|
/*noms_shp[1] = shapefile + NAME_AUX;
|
||||||
noms_gdb[1] = ambitos + NAME_SECT;
|
noms_gdb[1] = ambitos + NAME_SECT;*/
|
||||||
}
|
}
|
||||||
else if (modo == 1) //planifica
|
else if (modo == 1) //planifica
|
||||||
{
|
{
|
||||||
if (reco_o_limp_con_instala)
|
if (reco_o_limp_con_instala)
|
||||||
NIMPORT = 6;
|
|
||||||
else
|
|
||||||
NIMPORT = 5;
|
NIMPORT = 5;
|
||||||
|
else
|
||||||
|
NIMPORT = 4;
|
||||||
if (reco_tramos)
|
if (reco_tramos)
|
||||||
NIMPORT++;
|
NIMPORT++;
|
||||||
noms_shp = new string[NIMPORT];
|
noms_shp = new string[NIMPORT];
|
||||||
noms_gdb = new string[NIMPORT];
|
noms_gdb = new string[NIMPORT];
|
||||||
noms_shp[0] = shapefile;
|
noms_shp[0] = shapefile;
|
||||||
noms_gdb[0] = ambitos;
|
noms_gdb[0] = ambitos;
|
||||||
noms_shp[1] = shapefile + NAME_AUX;
|
/*noms_shp[1] = shapefile + NAME_AUX;
|
||||||
noms_gdb[1] = ambitos + NAME_SECT;
|
noms_gdb[1] = ambitos + NAME_SECT;*/
|
||||||
noms_shp[2] = shapefile + NAME_CONTROL;
|
noms_shp[1] = shapefile + NAME_CONTROL;
|
||||||
noms_gdb[2] = ambitos + NAME_CONTROL_OUT;
|
noms_gdb[1] = ambitos + NAME_CONTROL_OUT;
|
||||||
noms_shp[3] = shapefile + NAME_RUTA;
|
noms_shp[2] = shapefile + NAME_RUTA;
|
||||||
noms_gdb[3] = ambitos + NAME_RUTA_OUT;
|
noms_gdb[2] = ambitos + NAME_RUTA_OUT;
|
||||||
noms_shp[4] = shapefile + NAME_RUTA_AUX;
|
noms_shp[3] = shapefile + NAME_RUTA_AUX;
|
||||||
noms_gdb[4] = ambitos + NAME_RUTA_OUT + NAME_AUX;
|
noms_gdb[3] = ambitos + NAME_RUTA_OUT + NAME_AUX;
|
||||||
ii = 5;
|
ii = 4;
|
||||||
if (reco_o_limp_con_instala)
|
if (reco_o_limp_con_instala)
|
||||||
{
|
{
|
||||||
noms_shp[5] = shapefile + NAME_INSTAL;
|
noms_shp[4] = shapefile + NAME_INSTAL;
|
||||||
noms_gdb[5] = ambitos + NAME_INSTAL_OUT;
|
noms_gdb[4] = ambitos + NAME_INSTAL_OUT;
|
||||||
ii++;
|
ii++;
|
||||||
}
|
}
|
||||||
if (reco_tramos)
|
if (reco_tramos)
|
||||||
|
|
@ -620,5 +620,15 @@ namespace OliviaAddInPro.Services
|
||||||
return res;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -158,8 +158,6 @@ namespace OliviaAddInPro.Services
|
||||||
BorraFiles();
|
BorraFiles();
|
||||||
});
|
});
|
||||||
task.Wait();
|
task.Wait();
|
||||||
//borra los archivos que le toca borrar
|
|
||||||
//BorraFiles();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,10 @@ namespace OliviaAddInPro.Services
|
||||||
res.Error.Add(msg);
|
res.Error.Add(msg);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//cierra las capas que se han abierto durante la exportación
|
||||||
|
CierraCapas();
|
||||||
|
|
||||||
res.Value = true;
|
res.Value = true;
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,9 @@ namespace OliviaAddInPro.Services
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//cierra las capas que se han abierto durante la exportación
|
||||||
|
CierraCapas();
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue