public FrmPreparacionInformacion(SIGPIParametros parametros, SIGPICls sigpi, SIGPIDao sigpiDao) { _parametros = parametros; _sigpi = sigpi; _sigpiDao = sigpiDao; InitializeComponent(); }
private void FrmSIGPIPrincipal_Load(object sender, EventArgs e) { lblTitulo.Text = "SISTEMA DE INFORMACION GEOGRAFICA \nPARA LA PREVENCION DE INCENDIOS SIGPI"; string sPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); sPath = sPath + "\\" + "parameters"; logger.Info("FrmSIGPIPrincipal :: sPath :: {0}", sPath); //System.Console.WriteLine(sPath); //MessageBox.Show(sPath,"sPath"); sPath = sPath.Replace("file:\\", ""); //MessageBox.Show("parametros: " + sPath + "\\parametros.xml"); try { XmlSerializer serializer = new XmlSerializer(typeof(SIGPIParametros)); System.IO.StreamReader r = new System.IO.StreamReader(sPath + "\\parametros.xml"); parametros = (SIGPIParametros)serializer.Deserialize(r); r.Close(); serializer = null; r = null; } catch (Exception ex) { MessageBox.Show(ex.Message, "SIGPI"); return; } //string sCurrentDir = System.Reflection.Assembly.GetExecutingAssembly().Location; //string sPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); //try //{ // parametros = new SIGPIParametros(sPath + "\\parametros.xml"); //} //catch (Exception ex) //{ // MessageBox.Show(ex.Message, "SIGPI 2010"); // return; //} procesamiento = new SIGPIProcesamiento(parametros); sigpi = new SIGPICls(); sigpiDao = new SIGPIDao(); sigpiDao.ConnectLocalDB(parametros.RutaBD); sigpiDao.UltimaFechaIncorporacion(sigpi); sigpi.Parametros = parametros; // Revisar que coincida la fecha de procesamiento de datos con la fecha de procesamiento del modelo txtFechaUltimoModelo.Text = sigpi.FechaProcesamiento.ToLongDateString(); //if (!LicenseInitializer.InitializeApplication("arcview")) //{ // if (!LicenseInitializer.InitializeApplication("arcinfo")) // { // MessageBox.Show("No posee licencia de arcview o arcinfo"); // } //} }
/// <summary> /// Incorporar Lecturas /// </summary> /// <param name="sigpiDao"></param> /// <param name="Tabla"></param> /// <param name="FechaIncorporacion"></param> /// <param name="Lecturas"></param> /// <returns></returns> public bool IncorporarLecturas(SIGPIDao sigpiDao, string Tabla, DateTime FechaIncorporacion, List <Lectura> Lecturas) { string sSqlDelete = "DELETE FROM " + Tabla + " WHERE FECHA = ?"; OleDbCommand command = new OleDbCommand(sSqlDelete, sigpiDao.LocalDBConnection); OleDbParameter paramFecha = command.CreateParameter(); paramFecha.Value = FechaIncorporacion; command.Parameters.Add(paramFecha); try { command.ExecuteNonQuery(); } catch (Exception e) { System.Windows.Forms.MessageBox.Show(e.Message); return(false); } //command = sigpiDao.LocalDBConnection.CreateCommand(); command.Parameters.Clear(); command.CommandText = "INSERT INTO " + Tabla + " (codigo, lectura, fecha,x,y) VALUES (?,?,?,?,?)"; OleDbParameter paramCodigo = command.CreateParameter(); OleDbParameter paramValor = command.CreateParameter(); OleDbParameter paramX = command.CreateParameter(); OleDbParameter paramY = command.CreateParameter(); command.Parameters.Add(paramCodigo); command.Parameters.Add(paramValor); command.Parameters.Add(paramFecha); command.Parameters.Add(paramX); command.Parameters.Add(paramY); foreach (Lectura lectura in Lecturas) { //command.CommandText = "INSERT INTO " + Tabla + " (codigo, lectura, fecha) VALUES (" + lectura.Codigo // + "," + lectura.Valor.ToString().Replace(',','.') + ",'" + FechaIncorporacion + "')"; //System.Windows.Forms.MessageBox.Show(command.CommandText + "\n" + lectura.Codigo.ToString() + " :: " + lectura.Valor.ToString() + " :: " + FechaIncorporacion.ToShortDateString()); paramCodigo.Value = lectura.Codigo; paramValor.Value = lectura.Valor; paramFecha.Value = FechaIncorporacion; paramX.Value = lectura.X; paramY.Value = lectura.Y; try { command.ExecuteNonQuery(); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message + "\n" + command.CommandText + "\n" + lectura.Codigo.ToString() + " :: " + lectura.Valor.ToString() + " :: " + FechaIncorporacion.ToShortDateString(), "IncorporarLecturas"); return(false); } } return(true); }
/// <summary> /// Calcula promedio de temperatura /// </summary> /// <param name="SigpiDao"></param> /// <param name="sTablaConsolidados"></param> /// <param name="sTablaLecturas"></param> /// <param name="FechaCalculos"></param> /// <param name="sCampoPromedioTemp"></param> /// <param name="NumDias"></param> /// <returns></returns> public bool CalcularResultadosTemperatura(SIGPIDao SigpiDao, string sTablaConsolidados, string sTablaLecturas, DateTime FechaCalculos, string sCampoPromedioTemp, int NumDias) { string sSQL = "DROP TABLE " + sTablaConsolidados; try { SigpiDao.EjecutarSentenciaSinQuery(sSQL); } catch (Exception) { //throw new Exception(e.Message); } DateTime FechaCalculosInicial = FechaCalculos.AddDays(-1 * (NumDias - 1)); //sSQL = "SELECT CODIGO, Avg(LECTURA) AS T5, Max(LECTUS_TEMPE.FECHA) AS FECHA INTO " + // sTablaConsolidados + " From " + sTablaLecturas + // " WHERE FECHA <=#" + FechaCalculos.ToString("MM/dd/yyyy") + "#" + // " AND FECHA >=#" + FechaCalculosInicial.ToString("MM/dd/yyyy") + "#" + // " GROUP BY CODIGO"; sSQL = "SELECT CODIGO, Avg(LECTURA) AS " + sCampoPromedioTemp + ", Max(LECTUS_TEMPE.FECHA) AS FECHA, " + NumDias.ToString() + " AS NO_DIAS INTO " + sTablaConsolidados + " From " + sTablaLecturas + " WHERE FECHA <= ?" + " AND FECHA >= ?" + " GROUP BY CODIGO"; OleDbCommand command = SigpiDao.LocalDBConnection.CreateCommand(); command.CommandText = sSQL; OleDbParameter paramFechaCalculos = command.CreateParameter(); OleDbParameter paramFechaCalculosInicial = command.CreateParameter(); paramFechaCalculos.Value = FechaCalculos; paramFechaCalculosInicial.Value = FechaCalculosInicial; command.Parameters.Add(paramFechaCalculos); command.Parameters.Add(paramFechaCalculosInicial); try { command.ExecuteNonQuery(); } catch (Exception e) { throw new Exception(e.Message); } return(true); }
/// <summary> /// /// </summary> /// <param name="FechaIncorporacion"></param> /// <param name="SigpiDao"></param> /// <returns></returns> public bool ActualizarFechaIncorporacion(DateTime FechaIncorporacion, SIGPIDao SigpiDao) { string sSQL = "UPDATE FECHAS_PROCESO SET FEC_INCO = #" + FechaIncorporacion.ToString("MM/dd/yyyy") + "#"; OleDbCommand command = new OleDbCommand(sSQL, SigpiDao.LocalDBConnection); try { command.ExecuteNonQuery(); } catch (Exception e) { throw new Exception(e.Message); } return(true); }
/// <summary> /// Calcular Resultados Precipitacion /// </summary> /// <param name="SigpiDao"></param> /// <param name="sTablaConsolidados"></param> /// <param name="sTablaLecturas"></param> /// <param name="FechaCalculos"></param> /// <returns></returns> public bool CalcularResultadosPrecipitacion(SIGPIDao SigpiDao, string sTablaConsolidados, string sTablaLecturas, DateTime FechaCalculos, int numDias) { string sSQL = "DELETE FROM " + sTablaConsolidados; try { SigpiDao.EjecutarSentenciaSinQuery(sSQL); } catch (Exception e) { // throw new Exception(e.Message + sSQL); } DateTime FechaCalculosInicial = FechaCalculos.AddDays(-1 * (numDias - 1)); //sSQL = "SELECT CODIGO,LECTURA,FECHA From " + sTablaLecturas + // " WHERE FECHA <=#" + FechaCalculos.ToString("MM/dd/yyyy") + "#" + // " AND FECHA >=#" + FechaCalculosInicial.ToString("MM/dd/yyyy") + "#" + // " ORDER BY CODIGO,FECHA"; sSQL = "SELECT CODIGO,LECTURA,FECHA From " + sTablaLecturas + " WHERE FECHA <= ? AND FECHA >= ? ORDER BY CODIGO,FECHA"; OleDbCommand command = SigpiDao.LocalDBConnection.CreateCommand(); command.CommandText = sSQL; OleDbParameter paramFechaCalculos = command.CreateParameter(); OleDbParameter paramFechaCalculosInicial = command.CreateParameter(); command.Parameters.Add(paramFechaCalculos); command.Parameters.Add(paramFechaCalculosInicial); paramFechaCalculos.Value = FechaCalculos; paramFechaCalculosInicial.Value = FechaCalculosInicial; OleDbDataReader dataReader = null; try { dataReader = command.ExecuteReader(); } catch (Exception ex) { throw new Exception(ex.Message + " :: " + sSQL); } Lectura lectura; List <Lectura> lecturas = new List <Lectura>(); int dCodigo; int i = 0; PrecipitacionProcesada precipitacionProcesada = new PrecipitacionProcesada(); double dAcumuladoPrecipitacion; int iNumeroDiasSinLluvia, iNumeroLecturasConsecutivas, iAmenazaXDiaSinLluvia; dAcumuladoPrecipitacion = 0; iNumeroDiasSinLluvia = 0; dCodigo = -1; OleDbCommand command2 = SigpiDao.LocalDBConnection.CreateCommand(); sSQL = "INSERT INTO " + sTablaConsolidados + " VALUES (?,?,?,?,?,?,?)"; command2.CommandText = sSQL; OleDbParameter paramCodigo = command2.CreateParameter(); OleDbParameter paramP5 = command2.CreateParameter(); OleDbParameter paramDSLL5 = command2.CreateParameter(); OleDbParameter paramDSLLC5 = command2.CreateParameter(); OleDbParameter paramFecha = command2.CreateParameter(); OleDbParameter paramNoDias = command2.CreateParameter(); OleDbParameter paramAmenazaXDSL = command2.CreateParameter(); command2.Parameters.Add(paramCodigo); command2.Parameters.Add(paramP5); command2.Parameters.Add(paramDSLL5); command2.Parameters.Add(paramDSLLC5); command2.Parameters.Add(paramFecha); command2.Parameters.Add(paramNoDias); command2.Parameters.Add(paramAmenazaXDSL); paramFecha.Value = FechaCalculos; while (dataReader.Read()) { lectura = new Lectura(); if (i == 0) { dCodigo = dataReader.GetInt32(0); } else { if (dCodigo != dataReader.GetInt32(0)) { foreach (Lectura lect in lecturas) { if (lect.Valor <= 0.5) { iNumeroDiasSinLluvia++; } //if (lect.Valor < 2) //{ // iAmenazaXDiaSinLluvia = 5; //} } iNumeroLecturasConsecutivas = LecturasConsecutivas(lecturas); iAmenazaXDiaSinLluvia = AmenazasXLluvia(lecturas); precipitacionProcesada.Codigo = System.Convert.ToInt32(dCodigo); precipitacionProcesada.P5 = dAcumuladoPrecipitacion; precipitacionProcesada.DSLL5 = iNumeroDiasSinLluvia; precipitacionProcesada.DSLLC5 = iNumeroLecturasConsecutivas; precipitacionProcesada.FEC_UL_LECTU = lecturas[0].Fecha; paramCodigo.Value = precipitacionProcesada.Codigo; paramP5.Value = dAcumuladoPrecipitacion; paramDSLL5.Value = precipitacionProcesada.DSLL5; paramDSLLC5.Value = precipitacionProcesada.DSLLC5; paramNoDias.Value = numDias; paramAmenazaXDSL.Value = iAmenazaXDiaSinLluvia; try { command2.ExecuteNonQuery(); } catch (Exception e) { throw new Exception(e.Message + " :: " + command2.CommandText); } dCodigo = dataReader.GetInt32(0); dAcumuladoPrecipitacion = 0; iNumeroLecturasConsecutivas = 0; iNumeroDiasSinLluvia = 0; lecturas = new List <Lectura>(); i = 0; } } lectura = new Lectura(); lectura.Codigo = System.Convert.ToInt32(dataReader.GetInt32(0)); lectura.Valor = dataReader.GetDouble(1); dAcumuladoPrecipitacion += lectura.Valor; lectura.Fecha = dataReader.GetDateTime(2); lecturas.Add(lectura); i++; } return(true); }
/// <summary> /// Ejecuta el modelo de amenazas de incendios /// </summary> /// <param name="sTablaPrecipPromedio">Tabla Precipitacion Promedio</param> /// <param name="sConsultaTablaPrecipPromedio">SQL para la table precipitacion promedio</param> /// <param name="sPrefijo">Prefijo para los nombres de las capas</param> /// <param name="sTablaTempPromedio">Nombre de la tabla temporal de promedios</param> /// <param name="sConsultaTablaTempPromedio">SQL para la tabla temporal de promedios</param> /// <param name="bUsarSatelite">Indica si se han de utilizar las imagenes de satelita</param> /// <param name="bMostrarIntermedios">Indica si se mostraran los resultados intermedios en el mapa activo</param> private void GenerarModelo(string sTablaPrecipPromedio, string sConsultaTablaPrecipPromedio, string sPrefijo, string sTablaTempPromedio, string sConsultaTablaTempPromedio, bool bUsarSatelite, bool bMostrarIntermedios, String[] sRastersPrecipitacion) { String sPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); String tempDir = ""; sPath = sPath.Replace("file:\\", ""); SIGPIParametros parametros = new SIGPIParametros(); try { XmlSerializer serializer = new XmlSerializer(typeof(SIGPIParametros)); System.IO.StreamReader r = new System.IO.StreamReader(sPath + "\\parameters\\parametros.xml"); parametros = (SIGPIParametros)serializer.Deserialize(r); r.Close(); serializer = null; r = null; } catch (Exception ex) { MessageBox.Show(ex.Message, "SIGPI 2013"); return; } SIGPIProcesamiento procesamiento = new SIGPIProcesamiento(parametros); SIGPICls sigpi = new SIGPICls(); SIGPIDao sigpiDao = new SIGPIDao(); sigpiDao.ConnectLocalDB(parametros.RutaBD); sigpiDao.UltimaFechaIncorporacion(sigpi); sigpi.Parametros = parametros; OleDbCommand command = sigpiDao.LocalDBConnection.CreateCommand(); OleDbParameter param = command.CreateParameter(); OleDbParameter param1 = command.CreateParameter(); param.ParameterName = "fecProce"; param.Value = sigpi.FechaProcesamiento; command.CommandText = "UPDATE FECHAS_PROCESO SET FEC_PROCE = @fecProce"; command.Parameters.Add(param); string sSQL = ""; // "UPDATE FECHAS_PROCESO SET FEC_PROCE = #" + sigpi.FechaProcesamiento.ToString("MM/dd/yyyy") + "#"; try { sigpiDao.EjecutarSentenciaSinQuery(command); } catch (Exception ex) { MessageBox.Show("No se pudo actualizar la fecha de incorporacion.\n" + ex.Message); } IProgressDialogFactory pProDiaFac = new ProgressDialogFactoryClass(); IStepProgressor pStepPro = pProDiaFac.Create(null, 0); pStepPro.MinRange = 1; pStepPro.MaxRange = 5; pStepPro.StepValue = 1; IProgressDialog2 pProDia = (IProgressDialog2)pStepPro; pProDia.Animation = esriProgressAnimationTypes.esriProgressGlobe; pProDia.Title = "Generar Modelo Amenazas"; pProDia.ShowDialog(); pStepPro.Step(); pStepPro.Message = "Generando Grids Meteorologicos..."; IFeatureClass pFeatureClass; IWorkspaceFactory pShpWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IWorkspaceFactory pFileGDBWorkspaceFactory = new FileGDBWorkspaceFactoryClass(); string sFormatTmp = "gdb_" + sigpi.FechaProcesamiento.ToString("yyyyMMdd") + "_" + DateTime.Now.ToString("HHmmss"); tempDir = sigpi.Parametros.TempDir; if (tempDir == null || tempDir.Trim().Equals("")) { tempDir = System.IO.Path.GetTempPath(); } string sRutaFileGDB = System.IO.Path.GetTempPath() + sFormatTmp + ".gdb"; if (System.IO.Directory.Exists(sRutaFileGDB)) { try { System.IO.Directory.Delete(sRutaFileGDB); } catch (Exception ex) { MessageBox.Show("No se pudo borrar la File Geodatabase Temporal: " + sRutaFileGDB + " Intente Borrarla Manualmente. " + ex.Message); return; } } Geoprocessor gp = new Geoprocessor(); IWorkspaceName pWSName; string sCapaResultado = "Amenaza_" + sigpi.FechaProcesamiento.ToString("yyyy_MM_dd"); string sRutaGdbResultados = parametros.RutaSIGPI + parametros.Resultado + "\\" + sigpi.FechaProcesamiento.Year.ToString() + "-" + sigpi.FechaProcesamiento.ToString("MM") + "-Modelos.gdb"; if (System.IO.Directory.Exists(sRutaGdbResultados)) { GPUtilitiesClass gpUtilClass = new GPUtilitiesClass(); try { Delete del = new Delete(); del.in_data = sRutaGdbResultados + "\\" + sCapaResultado; gp.Execute(del, null); } catch (Exception) { } } else { try { pWSName = pFileGDBWorkspaceFactory.Create(parametros.RutaSIGPI + parametros.Resultado + "\\", sigpi.FechaProcesamiento.Year.ToString() + "-" + sigpi.FechaProcesamiento.ToString("MM") + "-Modelos.gdb", null, 0); } catch (Exception ex) { MessageBox.Show("No se pudo crear la Geodatabase de resultados: \n" + sRutaGdbResultados); pStepPro.Hide(); } } pWSName = pFileGDBWorkspaceFactory.Create(System.IO.Path.GetTempPath(), sFormatTmp, null, 0); ESRI.ArcGIS.esriSystem.IName name = (ESRI.ArcGIS.esriSystem.IName)pWSName; IFeatureWorkspace pWorkspaceTemp; try { pWorkspaceTemp = (IFeatureWorkspace)name.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); return; } IWorkspaceFactory pWF = new AccessWorkspaceFactoryClass(); IFeatureWorkspace pWSMask = (IFeatureWorkspace)pWF.OpenFromFile(parametros.RutaGBD, 0); IGeoDataset pFCMask = (IGeoDataset)pWSMask.OpenFeatureClass(parametros.Mascara); ISpatialReference pSpaRef = pFCMask.SpatialReference; IEnvelope pEnv = pFCMask.Extent; string sNombreTabla = "TMPPR_"; DateTime fechaProcesamiento = sigpi.FechaProcesamiento; fechaProcesamiento = fechaProcesamiento.Date; for (int i = 0; i < 10; i++) { try { sigpiDao.EjecutarSentenciaSinQuery("DROP TABLE " + sNombreTabla + i.ToString()); } catch (Exception ex) { System.Console.WriteLine(ex.Message); } // "IIf([LECTUS_PRECI]![LECTURA]<=2,5,IIf([LECTUS_PRECI]![LECTURA]<=8 And [LECTUS_PRECI]![LECTURA]>2,4,IIf([LECTUS_PRECI]![LECTURA]<=14 And [LECTUS_PRECI]![LECTURA]>8,3,IIf([LECTUS_PRECI]![LECTURA]<=24 And [LECTUS_PRECI]![LECTURA]>14,2,IIf([LECTUS_PRECI]![LECTURA]>24,1,0))))) AS LECTURAS " + //sSQL = "SELECT CODIGO, FECHA, X, Y, LECTURA AS RASTERVALU " + // "INTO " + sNombreTabla + i.ToString() + " " + // "FROM LECTUS_PRECI " + // "WHERE (((FECHA)=#" + sigpi.FechaProcesamiento.AddDays(-i).ToString("MM/dd/yyyy") + "#))"; command = sigpiDao.LocalDBConnection.CreateCommand(); command.CommandText = "SELECT CODIGO, FECHA, X, Y, LECTURA AS RASTERVALU " + "INTO " + sNombreTabla + i.ToString() + " " + "FROM LECTUS_PRECI " + "WHERE (((FECHA) >=@fecha) and ((FECHA) <@fecha1))"; param = command.CreateParameter(); param.ParameterName = "fecha"; param.Value = sigpi.FechaProcesamiento.AddDays(-i); command.Parameters.Add(param); param1 = command.CreateParameter(); param1.ParameterName = "fecha1"; param1.Value = sigpi.FechaProcesamiento.AddDays(-i + 1); command.Parameters.Add(param1); try { sigpiDao.EjecutarSentenciaSinQuery(command); } catch (Exception ex) { MessageBox.Show("Error generando las tablas temporales de precipitaciones. Descripcion: \n" + ex.Message); //pProDia.HideDialog(); return; } } try { sigpiDao.EjecutarSentenciaSinQuery("DROP TABLE TEMPERATURA_PROMEDIO"); } catch (Exception ex) { } //"IIf(Avg(LECTUS_TEMPE.LECTURA)<=6,1,IIf(Avg(LECTUS_TEMPE.LECTURA) <=12 And Avg(LECTUS_TEMPE.LECTURA)>6,2," + //"IIf(Avg(LECTUS_TEMPE.LECTURA)<=18 And Avg(LECTUS_TEMPE.LECTURA)>12,3,IIf(Avg(LECTUS_TEMPE.LECTURA)<=24 And " + //"Avg(LECTUS_TEMPE.LECTURA)>12,4,IIf(Avg(LECTUS_TEMPE.LECTURA)>24,5,0))))) AS LECTURAS, " + //sSQL = "SELECT CODIGO, Max(LECTUS_TEMPE.FECHA) AS FECHA, 10 AS Num_Dias, X, Y, AVG(LECTURA) AS RASTERVALU " + // "INTO TEMPERATURA_PROMEDIO " + // "FROM LECTUS_TEMPE " + // "WHERE (((FECHA)>=#" + sigpi.FechaProcesamiento.AddDays(-10).ToString("MM/dd/yyyy") + "# " + // "And (FECHA)<=#" + sigpi.FechaProcesamiento.ToString("MM/dd/yyyy") + "#)) " + // "GROUP BY CODIGO, X, Y"; command = sigpiDao.LocalDBConnection.CreateCommand(); command.CommandText = "SELECT CODIGO, Max(LECTUS_TEMPE.FECHA) AS FECHA, 10 AS Num_Dias, X, Y, AVG(LECTURA) AS RASTERVALU " + "INTO TEMPERATURA_PROMEDIO " + "FROM LECTUS_TEMPE " + "WHERE (((FECHA)>= @fecha1 " + "And (FECHA)<= @fecha)) " + "GROUP BY CODIGO, X, Y"; param = command.CreateParameter(); param.ParameterName = "fecha"; param.Value = sigpi.FechaProcesamiento; param1 = command.CreateParameter(); param1.ParameterName = "fecha1"; param1.Value = sigpi.FechaProcesamiento.AddDays(-10); command.Parameters.Add(param1); command.Parameters.Add(param); try { sigpiDao.EjecutarSentenciaSinQuery(command); } catch (Exception ex) { MessageBox.Show("Error Generando Tabla: TEMPERATURA_PROMEDIO " + ex.Message); pProDia.HideDialog(); return; } string sExpression = ""; string sOutGrid; double dPeso = 0; string sAmenazaXPrecipitacion = sRutaFileGDB + "\\amenaza_x_precipitacion"; string sTablaTemperaturaPromedio = "TEMPERATURA_PROMEDIO"; string sFCTempPromedio = "TEMP_PROMEDIO"; string sPrefijoIDW = "idw"; string sAmenazaXTemperatura = sRutaFileGDB + "\\" + "amenaza_x_temperatura"; string sAmenazasParciales = parametros.RutaGBD + "\\" + "amenazas_parciales_2"; string sAmenazaBruta = sRutaFileGDB + "\\amenaza_incendio_bruta"; string sAmenazaFinal = sRutaFileGDB + "\\amenaza_incendio_final"; string sTablaReclassIncendios = parametros.TablaReclasificacionIncendios; //"tbl_reclass_amenaza_incendios"; string sTablaReclassTemp = parametros.TablaReclasificacionTemperatura; //"tbl_reclass_temperatura"; string sTablaReclassPrecip = parametros.TablaReclasificacionPrecipitacion; //"tbl_reclass_precipitacion"; string sAmenazaXTemperaturaCombinada = sRutaFileGDB + "\\" + "amenaza_x_temperatura_combinada"; string sEstVirtualesPrecipitacion = sRutaFileGDB + "\\" + "estaciones_virtuales_precipitacion"; string sAmenazaXPrecipitacionCombinada = sRutaFileGDB + "\\" + "amenaza_x_precipitacion_combinada"; string sAmenazaFinalBrutaNVI = sRutaFileGDB + "\\" + "amenaza_incend_raw_nvi"; string sNVITempReclass = sRutaFileGDB + "\\" + "nvi_reclass_temp"; string sFromField = "FROM_"; string sToField = "TO_"; string sOutField = "OUT"; string sNoData = "NODATA"; string sFieldLecturas = "RASTERVALU"; //LECTURAS"; string sTipoEstadistico = parametros.TipoEstadistico; //"MAXIMUM"; string sAmenazaXPrecipReclass = sAmenazaXPrecipitacion + "_reclass"; string sAmenazaXTempReclass = sAmenazaXTemperatura + "_reclass"; string nvi = parametros.RutaSIGPI + "NVI" + "\\" + "tmpMosaic.500m_16_days_NDVI_GEO.tif"; double dPesoPrecipitacion = parametros.PesoPrecipitacion; //0.29; double dPesoTemperatura = parametros.PesoTemperatura; //0.24; double dPesoAmenazasParciales = parametros.PesoAmenazasParciales; //0.47; IDataset pDS; IDatasetName pDSName; IDatasetName pDSName2 = new FeatureClassNameClass(); IExportOperation pExportOp = new ExportOperationClass(); string sEstacionesVirtuales = sRutaFileGDB + "\\" + "EstacionesVirtuales.shp"; ExtractValuesToPoints extractValPoint = new ExtractValuesToPoints(); extractValPoint.in_point_features = sEstacionesVirtuales; extractValPoint.interpolate_values = "NONE"; extractValPoint.add_attributes = "VALUE_ONLY"; //'0.037037037; // 1" = 1/3600 double dCellSize = parametros.TamanoCelda / (3600 * 30); double[] iPesos = parametros.Pesos; //{ 30, 20, 10, 9, 8, 7, 6, 5, 4, 3 }; double iTotalPesos = 0; //102; foreach (double dP in iPesos) { iTotalPesos += dP; } gp.AddOutputsToMap = bMostrarIntermedios; gp.SetEnvironmentValue("Mask", parametros.RutaGBD + "\\" + parametros.Mascara); gp.SetEnvironmentValue("Extent", pEnv.XMin.ToString() + " " + pEnv.YMin.ToString() + " " + pEnv.XMax.ToString() + " " + pEnv.YMax.ToString()); ESRI.ArcGIS.SpatialAnalystTools.Idw idw = new Idw(); idw.z_field = sFieldLecturas; idw.cell_size = dCellSize; for (int i = 0; i < 10; i++) { pFeatureClass = procesamiento.FCPrecipitacion(sNombreTabla + i.ToString(), pSpaRef); pDS = (IDataset)pFeatureClass; pDSName = (IDatasetName)pDS.FullName; pDSName2.Name = sNombreTabla + i.ToString(); pDSName2.WorkspaceName = pWSName; try { pExportOp.ExportFeatureClass(pDSName, null, null, null, (IFeatureClassName)pDSName2, 0); } catch (Exception ex) { MessageBox.Show(ex.Message); pProDia.HideDialog(); return; } if (bUsarSatelite) { //Geoprocessor gp1 = new Geoprocessor(); //extractValPoint.in_raster = sRastersPrecipitacion[i]; // txtRutaPrecipitacion.Text; //extractValPoint.out_point_features = sEstVirtualesPrecipitacion + i.ToString(); //try //{ // gp1.Execute(extractValPoint, null); //} //catch (Exception ex) //{ // MessageBox.Show(ex.Message); //} //Merge merge = new Merge(); //string sInputMerge = sRutaFileGDB + "\\" + sNombreTabla + i.ToString() + ";" + sEstVirtualesPrecipitacion + i.ToString(); //merge.inputs = sInputMerge; ////"[" + sRutaFileGDB + "\\" + sNombreTabla + i.ToString() + ";" + sEstVirtualesPrecipitacion + i.ToString() + "]" ; //merge.output = sRutaFileGDB + "\\" + "est_precip_temporal" + i.ToString(); //try //{ // gp.Execute(merge, null); //} //catch (Exception ex) //{ // MessageBox.Show(ex.Message); //} //idw.in_point_features = sRutaFileGDB + "\\" + "est_precip_temporal" + i.ToString(); idw.in_point_features = sRutaFileGDB + "\\" + sNombreTabla + i.ToString(); } else { idw.in_point_features = sRutaFileGDB + "\\" + sNombreTabla + i.ToString(); } sOutGrid = sRutaFileGDB + "\\" + sPrefijoIDW + "_" + sNombreTabla + i.ToString(); idw.out_raster = sOutGrid; try { gp.Execute(idw, null); } catch (Exception ex) { MessageBox.Show(ex.Message); } dPeso = iPesos[i] / iTotalPesos; sExpression += "( Raster(r'" + sOutGrid + "') * " + dPeso.ToString().Replace(",", ".") + ")"; if (i < 9) { sExpression += " + "; } } pStepPro.Step(); ////for (int i = 0; i < 10; i++) ////{ //// //pStepPro.Message = "Generando Modelo Precipitacion: " + i.ToString(); //// sOutGrid = sRutaFileGDB + "\\" + sPrefijoIDW + "_" + sNombreTabla + i.ToString(); //// idw.in_point_features = sRutaFileGDB + "\\" + sNombreTabla + i.ToString(); //// idw.out_raster = sOutGrid; //// gp.Execute(idw, null); //// dPeso = iPesos[i] / iTotalPesos; //// sExpression += "(" + sOutGrid + " * " + dPeso.ToString() + ")"; //// if (i < 9) //// sExpression += " + "; ////} //gp.AddMessage("Expresion: " + sExpression); //SingleOutputMapAlgebra mapAlgebra = new SingleOutputMapAlgebra(); ESRI.ArcGIS.SpatialAnalystTools.RasterCalculator mapAlgebra = new RasterCalculator(); //mapAlgebra.expression_string = sExpression; // mapAlgebra.out_raster = sAmenazaXPrecipitacion; mapAlgebra.expression = sExpression; mapAlgebra.output_raster = sAmenazaXPrecipitacion; pStepPro.Message = "Generando Amenaza Precipitacion..."; try { gp.Execute(mapAlgebra, null); } catch (Exception ex) { MessageBox.Show("Error Generando Amenaza x Precipitacion. " + ex.Message); pProDia.HideDialog(); return; } //if (bUsarSatelite) // Para la combinacion de la precipitacion x estaciones y satelite //{ // //CellStatistics cellStatisticsP = new CellStatistics(); // //cellStatisticsP.in_rasters_or_constants = sAmenazaXPrecipitacion + ";" + txtRutaPrecipitacion.Text; // //cellStatisticsP.out_raster = sAmenazaXPrecipitacionCombinada; // //cellStatisticsP.statistics_type = sTipoEstadistico; // try // { // gp.Execute(extractValPoint, null); // //sAmenazaXPrecipitacion = sAmenazaXPrecipitacionCombinada; // } // catch (Exception ex) // { // MessageBox.Show("Error generando estaciones virtuales con precipitacion." + ex.Message); // return; // } // Merge merge = new Merge(); // merge.inputs = //} DateTime date = sigpi.FechaProcesamiento; string sMonth = date.ToString("MM"); pStepPro.Step(); pStepPro.Message = "Generando Amenaza x Temperatura"; pFeatureClass = procesamiento.FCPrecipitacion(sTablaTemperaturaPromedio, pSpaRef); pDS = (IDataset)pFeatureClass; pDSName = (IDatasetName)pDS.FullName; pDSName2.Name = sFCTempPromedio; pDSName2.WorkspaceName = pWSName; try { pExportOp.ExportFeatureClass(pDSName, null, null, null, (IFeatureClassName)pDSName2, 0); } catch (Exception ex) { throw new Exception(ex.Message); } idw.in_point_features = sRutaFileGDB + "\\" + sFCTempPromedio; idw.out_raster = sAmenazaXTemperatura; try { gp.Execute(idw, null); } catch (Exception ex) { Console.WriteLine(ex.Message); } //if (bUsarSatelite) //{ // Geoprocessor gp1 = new Geoprocessor(); // Con pContmp = new Con(); // pContmp.in_conditional_raster = txtRutaTemperatura.Text; // pContmp.in_true_raster_or_constant = txtRutaTemperatura.Text; // pContmp.in_false_raster_or_constant = -99; // string sRasterTTemp = sAmenazaXTemperaturaCombinada + "_ajs"; // pContmp.out_raster = sRasterTTemp; // pContmp.where_clause = "VALUE < 55"; // try // { // gp1.Execute(pContmp, null); // } // catch (Exception) // { // sRasterTTemp = txtRutaTemperatura.Text; ; // } // gp1 = null; // CellStatistics cellStatistics = new CellStatistics(); // cellStatistics.in_rasters_or_constants = sAmenazaXTemperatura + ";" + sRasterTTemp; // cellStatistics.out_raster = sAmenazaXTemperaturaCombinada; // cellStatistics.statistics_type = sTipoEstadistico; // try // { // gp.Execute(cellStatistics, null); // sAmenazaXTemperatura = sAmenazaXTemperaturaCombinada; // } // catch (Exception) // { // } //} ReclassByTable rbt = new ReclassByTable(); rbt.in_raster = sAmenazaXPrecipitacion; rbt.in_remap_table = sTablaReclassPrecip; // parametros.RutaGBD + "\\" + sTablaReclassPrecip; rbt.from_value_field = sFromField; rbt.to_value_field = sToField; rbt.output_value_field = sOutField; rbt.missing_values = sNoData; rbt.out_raster = sAmenazaXPrecipReclass; //pStepPro.Message = "Generando Amenaza X Precipitacion Reclasificada"; try { gp.Execute(rbt, null); } catch (Exception ex) { MessageBox.Show(ex.Message); pProDia.HideDialog(); return; } rbt.in_raster = sAmenazaXTemperatura; rbt.in_remap_table = sTablaReclassTemp; // parametros.RutaGBD + "\\" + sTablaReclassTemp; rbt.out_raster = sAmenazaXTempReclass; //pStepPro.Message = "Generando Amenaza X Temperatura Reclasificada"; try { gp.Execute(rbt, null); } catch (Exception ex) { MessageBox.Show(ex.Message); pProDia.HideDialog(); return; } sExpression = "( Raster(r'" + sAmenazaXPrecipReclass + "') * " + dPesoPrecipitacion.ToString().Replace(",", ".") + ") + " + "( Raster(r'" + sAmenazaXTempReclass + "') * " + dPesoTemperatura.ToString().Replace(",", ".") + ") + " + "( Raster(r'" + sAmenazasParciales + "') * " + dPesoAmenazasParciales.ToString().Replace(",", ".") + ")"; //mapAlgebra.expression_string = sExpression; //mapAlgebra.out_raster = sAmenazaBruta; sExpression = sExpression.Replace("\\\\", "/").Replace("\\", "/"); mapAlgebra.expression = sExpression; mapAlgebra.output_raster = sAmenazaBruta; pStepPro.Message = "Generando Amenaza Final Bruta"; try { gp.Execute(mapAlgebra, null); } catch (Exception ex) { MessageBox.Show(ex.Message); } //if (txtRutaNVI.Text.Trim() != "") //{ Geoprocessor gp2 = new Geoprocessor(); mapAlgebra = new RasterCalculator(); sExpression = "Con (Raster(r'" + nvi + "') < 0.75, Raster(r'" + sAmenazaBruta + "'), Raster(r'" + sAmenazaBruta + "') -1)"; sExpression = sExpression.Replace("\\\\", "/").Replace("\\", "/"); mapAlgebra.expression = sExpression; mapAlgebra.output_raster = sAmenazaFinalBrutaNVI; try { gp2.Execute(mapAlgebra, null); } catch (Exception ex) { MessageBox.Show(ex.Message); } //} rbt.in_raster = sAmenazaFinalBrutaNVI; // sAmenazaBruta; rbt.in_remap_table = sTablaReclassIncendios; // parametros.RutaGBD + "\\" + sTablaReclassIncendios; rbt.from_value_field = sFromField; rbt.to_value_field = sToField; rbt.output_value_field = sOutField; rbt.missing_values = sNoData; rbt.out_raster = sAmenazaFinal; pStepPro.Message = "Generando Amenaza Final Reclasificada"; gp.AddOutputsToMap = true; try { gp.Execute(rbt, null); } catch (Exception ex) { MessageBox.Show(ex.Message); } Copy copy = new Copy(); copy.in_data = sAmenazaFinal; copy.out_data = sRutaGdbResultados + "\\" + sCapaResultado; try { gp.Execute(copy, null); } catch (Exception ex) { MessageBox.Show("Error Copiando el resultado. \n " + ex.Message); } MessageBox.Show("Algoritmo completo ejecutado: " + sRutaGdbResultados + "\\" + sCapaResultado); if (m_pApp != null) { IRasterLayer pRLayer = new RasterLayerClass(); try { IWorkspaceFactory pWF2 = new FileGDBWorkspaceFactoryClass(); IRasterWorkspaceEx pRW = (IRasterWorkspaceEx)pWF2.OpenFromFile(sRutaGdbResultados, 0); IRasterDataset pRDataset = pRW.OpenRasterDataset(sCapaResultado); pRLayer.CreateFromDataset(pRDataset); pRLayer.Name = sCapaResultado; IMxDocument pMxDoc = m_pApp.Document as IMxDocument; IMap pMap = pMxDoc.FocusMap; AsignarSimbologiaProbabilidad(pRLayer); pMap.AddLayer(pRLayer); if (pMap.LayerCount > 0) { pMap.MoveLayer(pRLayer, pMap.LayerCount - 1); } pMxDoc.UpdateContents(); pMxDoc.ActiveView.Refresh(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error cargando Capa!!!"); } } pProDia.HideDialog(); }
/// <summary> /// /// </summary> /// <param name="sheet"></param> /// <param name="sigpiDao"></param> /// <param name="ColumnaCodigo"></param> /// <param name="ColumnaLectura"></param> /// <param name="min"></param> /// <param name="max"></param> /// <returns></returns> public List <Lectura> ObtenerLecturas(Worksheet sheet, SIGPIDao sigpiDao, string ColumnaCodigo, string ColumnaLectura, double min, double max) { int iLimite, i; iLimite = 0; List <Lectura> lista = new List <Lectura>(); Lectura lectura; // = new Lectura(); object objCodigo, objLectura; i = 1; OleDbConnection conn = sigpiDao.LocalDBConnection; //OleDbCommand command = new OleDbCommand(); //command.Connection = conn; int iNumRegistros; double dLectura; double dX, dY; OleDbDataReader reader = sigpiDao.EjecutarSentenciaLectura("SELECT codigo, longitud, latitud FROM ESTACIONES"); Dictionary <Int32, EstacionIdeam> dictEstaciones = new Dictionary <Int32, EstacionIdeam>(); while (reader.Read()) { EstacionIdeam estacion = new EstacionIdeam(reader.GetInt32(0), reader.GetDouble(1), reader.GetDouble(2)); if (!dictEstaciones.ContainsKey(estacion.Codigo)) { dictEstaciones.Add(estacion.Codigo, estacion); } } while (iLimite < 100) { objCodigo = sheet.get_Range(ColumnaCodigo + i.ToString(), ColumnaCodigo + i.ToString()).Value2; if (isNumeric(objCodigo)) { //command.CommandText = "select count(*) from estaciones where codigo = " + objCodigo.ToString(); //iNumRegistros = (Int32)command.ExecuteScalar(); //if (iNumRegistros != 0) //{ objLectura = sheet.get_Range(ColumnaLectura + i.ToString(), ColumnaLectura + i.ToString()).Value2; if (isNumeric(objLectura)) { dLectura = System.Double.Parse(objLectura.ToString(), System.Globalization.NumberStyles.Any); if (dLectura >= min && dLectura <= max) { lectura = new Lectura(); lectura.Codigo = System.Convert.ToInt32(objCodigo); lectura.Valor = dLectura; if (!ColumnaCodigo.Equals("A")) { try { lectura.X = Convert.ToDouble(sheet.get_Range("A" + i.ToString(), "A" + i.ToString()).Value2); lectura.Y = Convert.ToDouble(sheet.get_Range("B" + i.ToString(), "B" + i.ToString()).Value2); } catch (Exception) { } } else { if (dictEstaciones.ContainsKey(lectura.Codigo)) { lectura.X = dictEstaciones[lectura.Codigo].Longitud; lectura.Y = dictEstaciones[lectura.Codigo].Latitud; } } if (lectura.X != 0) { lista.Add(lectura); } } } //} iLimite = 0; } else { iLimite += 1; } i += 1; } return(lista); }