89 lines
2.7 KiB
C#
89 lines
2.7 KiB
C#
using ArcGIS.Core.Data;
|
|
using ArcGIS.Core.Geometry;
|
|
using OliviaAddInPro.Helper;
|
|
using OliviaAddInPro.Model;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace OliviaAddInPro.Services
|
|
{
|
|
public class LimpiezaServ
|
|
{
|
|
private Limpieza limp;
|
|
public string ErrStr="";
|
|
|
|
public LimpiezaServ(Limpieza _limp)
|
|
{
|
|
limp = _limp;
|
|
}
|
|
|
|
/**
|
|
* Prepara la geometría para exportar
|
|
*/
|
|
public Geometry GetGeomAmbitsExport()
|
|
{
|
|
Geometry geomAux = null;
|
|
FeatureClass fc = HelperGdb.GetFtClass(limp.CapaElems);
|
|
QueryFilter filtro = new QueryFilter { WhereClause = limp.ConsultaAmbs };
|
|
if(fc==null)
|
|
{
|
|
ErrStr = "No se ha podido abrir la clase " + limp.CapaElems;
|
|
return null;
|
|
}
|
|
//comprueba que haya elementos que cumplen la consulta
|
|
int nElem = HelperGdb.GetNumElems(fc, limp.ConsultaAmbs).Result;
|
|
if(nElem<=0)
|
|
{
|
|
ErrStr = "No existen ámbitos que cumplan las condiciones dadas " + limp.ConsultaAmbs;
|
|
return null;
|
|
}
|
|
//Primero hace la geometría de los ámbitos que cumplen la consulta
|
|
geomAux = HelperGdb.GetGeomUnica(fc, filtro);
|
|
if(geomAux==null || geomAux.IsEmpty)
|
|
{
|
|
ErrStr = "No se ha podido generar geometría de los ámbitos" + limp.ConsultaAmbs;
|
|
return null;
|
|
}
|
|
//Hace la intersección de dicha geometría con las zonas
|
|
if (limp.GeomZon != null)
|
|
{
|
|
geomAux = HelperGdb.IntersectGeom(geomAux, limp.GeomZon);
|
|
if(geomAux==null)
|
|
{
|
|
ErrStr = "Error al intersecar con las zonas.";
|
|
return null;
|
|
}
|
|
}
|
|
|
|
//Hace la intersección de la geometría con los niveles
|
|
if (limp.GeomNiv != null)
|
|
{
|
|
geomAux = HelperGdb.IntersectGeom(geomAux, limp.GeomNiv);
|
|
if (geomAux == null)
|
|
{
|
|
ErrStr = "Error al intersecar con los niveles.";
|
|
return null;
|
|
}
|
|
}
|
|
|
|
//le quita las restricciones
|
|
if (limp.GeomRestr != null)
|
|
{
|
|
geomAux = HelperGdb.QuitaGeom(geomAux, limp.GeomRestr);
|
|
if (geomAux == null)
|
|
{
|
|
ErrStr = "Error al intersecar con las restricciones.";
|
|
return null;
|
|
}
|
|
}
|
|
|
|
return geomAux;
|
|
}
|
|
|
|
|
|
}
|
|
}
|