Ejemplo n.º 1
0
        private void gvDados_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
        {
            ds.dtMetadadosRow md = (ds.dtMetadadosRow)((DataRowView)gvMetadados.GetRow(gvMetadados.FocusedRowHandle)).Row;
            ds.dtMedicoesRow  me = (ds.dtMedicoesRow)((DataRowView)e.Row).Row;
            me.dtMetadadosRow = md;
            double UTMX = 0, UTMY = 0, dummyValue = 0; // Parâmetro não necessário aqui

            CalculaUTMArvore(md, me, ref UTMX, ref UTMY, ref dummyValue);

            /*
             * if ((md.ItemArray[gvMetadados.Columns["ParcelaDeclinacao"].AbsoluteIndex] != DBNull.Value) &&
             *  (me.ItemArray[gvDados.Columns["Azimute"].AbsoluteIndex] != DBNull.Value) &&
             *  (me.ItemArray[gvDados.Columns["X"].AbsoluteIndex] != DBNull.Value) &&
             *  (me.ItemArray[gvDados.Columns["Y"].AbsoluteIndex] != DBNull.Value) &&
             *  (me.ItemArray[gvDados.Columns["Lado"].AbsoluteIndex] != DBNull.Value))
             * {
             *  // Transforma o azimute em coordenada trigonométrica, corrige a declinação e transforma em radianos
             *  double azimuteParcelaTriginometrico = (((md.ParcelaAzimute > 90) ? 360 + (md.ParcelaAzimute * -1) + 90 : 360 + (md.ParcelaAzimute * -1) - 270) + (md.ParcelaDeclinacao * -1)) * Math.PI / 180;
             *  double azimuteArvoreTriginometrico = (((me.Azimute > 90) ? 360 + (me.Azimute * -1) + 90 : 360 + (me.Azimute * -1) - 270) + (md.ParcelaDeclinacao * -1)) * Math.PI / 180;
             *  // Calcula coordenada do ponto interseção entre o eixo da parcela e o alinhamento do TruPulse (azimute da árvore)
             *  double x1 = md.ParcelaUTMX + me.Y * Math.Cos(azimuteParcelaTriginometrico);
             *  double y1 = md.ParcelaUTMY + me.Y * Math.Sin(azimuteParcelaTriginometrico);
             */
            if ((e.Column.FieldName == "colUTMX") && (UTMX > 0))
            {
                e.Value = UTMX;
            }
            else
            if ((e.Column.FieldName == "colUTMY") && (UTMY > 0))
            {
                e.Value = UTMY;
            }
        }
Ejemplo n.º 2
0
        private void gridView1_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            ds.dtMetadadosRow md = (ds.dtMetadadosRow)((DataRowView)gvMetadados.GetRow(gvMetadados.FocusedRowHandle)).Row;
            ds.dtMedicoesRow  me = (ds.dtMedicoesRow)((DataRowView)e.Row).Row;
            if ((me.DAP < me.dtEspecieRow.DAPMin))
            {
                throw new Exception("DAP menor que o mínimo estabelecido para a espécie.");
            }
            if (me.DAP > me.dtEspecieRow.DAPMax)
            {
                throw new Exception("DAP maior que o máximo estabelecido para a espécie.");
            }
            if ((me.Lado == "D") && ((me.Arvore % 2) != 0))
            {
                throw new Exception("Árvores medidas do lado direito devem ser pares.");
            }
            if ((me.Lado == "E") && ((me.Arvore % 2) == 0))
            {
                throw new Exception("Árvores medidas do lado esquerdo devem ser ímpares.");
            }
            if (me.Azimute > 360)
            {
                throw new Exception("Ângulo maior que 360.");
            }
            double UTMX = 0, UTMY = 0, azimuteParcelaTriginometrico = 0; //

            CalculaUTMArvore(md, me, ref UTMX, ref UTMY, ref azimuteParcelaTriginometrico);
            double distanciaArvore = Math.Abs((Math.Tan(azimuteParcelaTriginometrico) * (UTMX - md.ParcelaUTMX)) - (UTMY - md.ParcelaUTMY))
                                     / Math.Sqrt(Math.Pow(Math.Tan(azimuteParcelaTriginometrico), 2) + 1);

            if (distanciaArvore > (md.ParcelaLargura / 2))
            {
                throw new Exception("Árvore fora da parcela.");
            }
            if (me.ItemArray[gvDados.Columns["GPS"].AbsoluteIndex] != DBNull.Value)
            {
                if ((GPS > 0) && (me.GPS > (GPS + 1)))
                {
                    System.Windows.Forms.MessageBox.Show("Pulou pelo menos um número de ponto GPS.");
                }
                GPS = me.GPS;
            }
            if (me.ItemArray[gvDados.Columns["SubParcela"].AbsoluteIndex] != DBNull.Value)
            {
                ultSubParcela = me.SubParcela;
            }
        }
Ejemplo n.º 3
0
 void CalculaUTMArvore(ds.dtMetadadosRow md, ds.dtMedicoesRow me, ref double UTMX, ref double UTMY, ref double azimuteParcelaTrigonometrico)
 {
     if ((md.ItemArray[gvMetadados.Columns["ParcelaDeclinacao"].AbsoluteIndex] != DBNull.Value) &&
         (me.ItemArray[gvDados.Columns["Azimute"].AbsoluteIndex] != DBNull.Value) &&
         (me.ItemArray[gvDados.Columns["X"].AbsoluteIndex] != DBNull.Value) &&
         (me.ItemArray[gvDados.Columns["Y"].AbsoluteIndex] != DBNull.Value))
     {
         // Transforma o azimute em coordenada trigonométrica, corrige a declinação e transforma em radianos
         azimuteParcelaTrigonometrico = (((md.ParcelaAzimute > 90) ? 360 + (md.ParcelaAzimute * -1) + 90 : 360 + (md.ParcelaAzimute * -1) - 270) + (md.ParcelaDeclinacao * -1)) * Math.PI / 180;
         double azimuteArvoreTriginometrico = (((me.Azimute > 90) ? 360 + (me.Azimute * -1) + 90 : 360 + (me.Azimute * -1) - 270) + (md.ParcelaDeclinacao * -1)) * Math.PI / 180;
         // Calcula coordenada do ponto interseção entre o eixo da parcela e o alinhamento do TruPulse (azimute da árvore)
         double x1 = md.ParcelaUTMX + me.Y * Math.Cos(azimuteParcelaTrigonometrico);
         double y1 = md.ParcelaUTMY + me.Y * Math.Sin(azimuteParcelaTrigonometrico);
         UTMX = x1 + me.X * Math.Cos(azimuteArvoreTriginometrico);
         UTMY = y1 + me.X * Math.Sin(azimuteArvoreTriginometrico);
     }
 }