Igualar proyecciones!!

Elena/develop
Gerardo 2022-03-30 23:38:06 +02:00
parent 32fd195c94
commit 7f824052a3
2 changed files with 28 additions and 11 deletions

View File

@ -843,7 +843,7 @@ namespace OliviaAddInPro.Helper
return res; return res;
} }
public static bool ExportShp2(string pathLayerIn, SpatialQueryFilter filter, string nameShp, string outpath, IprocessManager cps, int incmax=100) public static bool ExportShp2(string pathLayerIn, SpatialQueryFilter filter, string nameShp, string outpath, IprocessManager cps, ArcGIS.Core.Geometry.SpatialReference sr=null, 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);
@ -885,9 +885,15 @@ namespace OliviaAddInPro.Helper
///Exporta ///Exporta
string[] args = { pathLayerIn, outpath, nameShp, whereClause }; string[] args = { pathLayerIn, outpath, nameShp, whereClause };
// execute the tool // execute the tool
if(sr==null)
{
sr= fc.GetDefinition().GetSpatialReference();
}
var environments = Geoprocessing.MakeEnvironmentArray(outputCoordinateSystem: sr);
//SpatialReferenceBuilder.CreateSpatialReference(3857)
double valini = cps.GetProgress(); ; double valini = cps.GetProgress(); ;
IGPResult gpResult = Geoprocessing.ExecuteToolAsync("FeatureClassToFeatureClass_conversion", args, IGPResult gpResult = Geoprocessing.ExecuteToolAsync("FeatureClassToFeatureClass_conversion", args,
null, null, environments, null,
(event_name, o) => // implement delegate and handle events (event_name, o) => // implement delegate and handle events
{ {

View File

@ -31,6 +31,8 @@ namespace OliviaAddInPro.Services
public string ErrStr = ""; public string ErrStr = "";
SpatialQueryFilter filtroEspacial = null; SpatialQueryFilter filtroEspacial = null;
SpatialReference spatRef = null; SpatialReference spatRef = null;
SpatialReference spatRefData = null;
public TratamientoComun com; public TratamientoComun com;
/** /**
* Acciones para comenzar ejecución * Acciones para comenzar ejecución
@ -68,17 +70,17 @@ namespace OliviaAddInPro.Services
ErrStr = "No se ha podido generar geometría de los ámbitos" + com.ConsultaAmbs + ErrStr; ErrStr = "No se ha podido generar geometría de los ámbitos" + com.ConsultaAmbs + ErrStr;
return false; return false;
} }
//mira spatialreference de los datos de entrada //mira spatialreference de los datos de entrada
spatRef = geom_export.SpatialReference; spatRefData = geom_export.SpatialReference;
//AQUÍ COMPARAR SI ES IGUAL QUE SPATREFDEF Y SI NO, REPROYECTAR //AQUÍ COMPARAR SI ES IGUAL QUE SPATREFDEF Y SI NO, REPROYECTAR
if(spatRef.Wkid!=GeneralDef.SpatRefDef) /*if(spatRef.Wkid!=GeneralDef.SpatRefDef)
{ {
/* /*
* FALTA HACER * FALTA HACER
* dame_geom_coords en v2010 * dame_geom_coords en v2010
*/ */
} //}
//crea el filtro de exportación //crea el filtro de exportación
filtroEspacial = HelperGdb.CreateFiler(com.ConsultaAmbs, geom_export); filtroEspacial = HelperGdb.CreateFiler(com.ConsultaAmbs, geom_export);
@ -98,7 +100,7 @@ namespace OliviaAddInPro.Services
com.ProgrSrc.IncMessage(10, "Exportando ámbitos de trabajo"); 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, com.ProgrSrc._ProgrSrc, 40)) if (!HelperGdb.ExportShp2(com.CapaElems, filtroEspacial, com.NombreShpExport, OliviaGlob.Paths.DirData, com.ProgrSrc._ProgrSrc, null, 40))
{ {
ErrStr = "Error al exportar los ámbitos: " + HelperGdb.OutStr; ErrStr = "Error al exportar los ámbitos: " + HelperGdb.OutStr;
return false; return false;
@ -203,17 +205,26 @@ namespace OliviaAddInPro.Services
//mira spatialreference del nw //mira spatialreference del nw
FeatureClass fc = HelperGdb.GetFtClass(OliviaGlob.Paths.PathGdbNw); FeatureClass fc = HelperGdb.GetFtClass(OliviaGlob.Paths.PathGdbNw);
/*
if (fc != null) if (fc != null)
{ {
spatRef = fc.GetDefinition().GetSpatialReference(); spatRef = fc.GetDefinition().GetSpatialReference();
//AQUÍ COMPARAR SI ES IGUAL QUE SPATREFDEF Y SI NO, REPROYECTAR //AQUÍ COMPARAR SI ES IGUAL QUE SPATREFDEF Y SI NO, REPROYECTAR
if (spatRef.Wkid != GeneralDef.SpatRefDef) if (spatRef.Wkid != spatRefData.Wkid)
{ {
var sp_ref = SpatialReferenceBuilder.CreateSpatialReference(102629); // NAD83 SP AL E FIPS 0101 Feet
var envi = Geoprocessing.MakeEnvironmentArray(outputCoordinateSystem: sp_ref);
//https://pro.arcgis.com/es/pro-app/2.8/tool-reference/environment-settings/output-coordinate-system.htm
//ProjectionTransformation transf_forTarget = ProjectionTransformation.Create(spatRef, spatRefData);
//geom_export=GeometryEngine.Instance.ProjectEx(geom_export, transf_forTarget);
//transf_forTarget.Transformation
/* /*
* FALTA HACER * FALTA HACER
*/ * /
} }
} }*/
//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);
@ -228,7 +239,7 @@ namespace OliviaAddInPro.Services
//Prepara nombre de exportación //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
if (!HelperGdb.ExportShp2(OliviaGlob.Paths.PathGdbNw, filtroEspacial, com.NombreShpExportNw, OliviaGlob.Paths.DirData, com.ProgrSrc._ProgrSrc,100)) if (!HelperGdb.ExportShp2(OliviaGlob.Paths.PathGdbNw, filtroEspacial, com.NombreShpExportNw, OliviaGlob.Paths.DirData, com.ProgrSrc._ProgrSrc, spatRefData,100))
{ {
ErrStr = "Error al exportar la red navegable: " + HelperGdb.OutStr; ErrStr = "Error al exportar la red navegable: " + HelperGdb.OutStr;
return false; return false;