private bool VerificarCoordenada(Coordenada coordenada, string prefixo) { CoordenadaMsg msg = new CoordenadaMsg(prefixo); if (coordenada.LocalColeta.GetValueOrDefault() <= 0) { Validacao.Add(msg.LocalColetaObrigatorio); } if (coordenada.FormaColeta.GetValueOrDefault() <= 0) { Validacao.Add(msg.FormaColetaObrigatorio); } CoordenadaBus.Validar(coordenada, prefixo, true); if (!Validacao.EhValido) { return(false); } if (_da.PontoForaMBR(coordenada.EastingUtm.GetValueOrDefault(), coordenada.NorthingUtm.GetValueOrDefault())) { Validacao.Add(Mensagem.Sistema.CoordenadaForaMBR); return(false); } return(Validacao.EhValido); }
public static bool Validar(Coordenada coordenada, string prefixo, bool isObrigatorio = false) { CoordenadaMsg msg = new CoordenadaMsg(prefixo); if (isObrigatorio && (coordenada == null || coordenada.Tipo.Id <= 0)) { Validacao.Add(msg.CoordenadaObrigatoria); return(false); } if (coordenada.Tipo.Id > 0) { if (coordenada.Datum.Id <= 0) { Validacao.Add(msg.DatumObrigatorio); } if (coordenada.Tipo.Id == 1) // GMS { decimal?gdecLongitude = Gms2DGdec(coordenada.LongitudeGms); decimal?gdecLatitude = Gms2DGdec(coordenada.LatitudeGms); if (gdecLongitude == null || String.IsNullOrWhiteSpace(coordenada.LongitudeGms)) { Validacao.Add(msg.LongitudeGmsObrigatorio); } if (gdecLatitude == null || String.IsNullOrWhiteSpace(coordenada.LatitudeGms)) { Validacao.Add(msg.LatitudeGmsObrigatorio); } if (!Validacao.EhValido) { return(false); } if (!ValidarFormatoGMS(coordenada.LongitudeGms)) { Validacao.Add(msg.LongitudeGmsFormato); } else if (gdecLongitude == null || gdecLongitude < -180 || gdecLongitude > 180) { Validacao.Add(msg.LongitudeGmsInvalida); } if (!ValidarFormatoGMS(coordenada.LatitudeGms)) { Validacao.Add(msg.LatitudeGmsFormato); } else if (gdecLatitude == null || gdecLatitude < -90 || gdecLatitude > 90) { Validacao.Add(msg.LatitudeGmsInvalida); } } else if (coordenada.Tipo.Id == 2) // GDEC { if (coordenada.LongitudeGdec == null && String.IsNullOrEmpty(coordenada.LongitudeGdecTexto)) { Validacao.Add(msg.LongitudeGdecObrigatorio); } if (coordenada.LatitudeGdec == null && String.IsNullOrEmpty(coordenada.LatitudeGdecTexto)) { Validacao.Add(msg.LatitudeGdecObrigatorio); } if (!Validacao.EhValido) { return(false); } if (!ValidarDouble(coordenada.LongitudeGdecTexto)) { Validacao.Add(msg.LongitudeGdecInvalida); } if (!ValidarDouble(coordenada.LatitudeGdecTexto)) { Validacao.Add(msg.LatitudeGdecInvalida); } if (coordenada.LongitudeGdec < -180 || coordenada.LongitudeGdec > 180) { Validacao.Add(msg.LongitudeGdecForaDoEscopo); } if (coordenada.LatitudeGdec < -90 || coordenada.LatitudeGdec > 90) { Validacao.Add(msg.LatitudeGdecForaDoEscopo); } } else if (coordenada.Tipo.Id == 3) // UTM { if (coordenada.EastingUtm.GetValueOrDefault() <= 0 && String.IsNullOrEmpty(coordenada.EastingUtmTexto)) { Validacao.Add(msg.EastingUtmObrigatorio); } if (coordenada.NorthingUtm.GetValueOrDefault() <= 0 && String.IsNullOrEmpty(coordenada.NorthingUtmTexto)) { Validacao.Add(msg.NorthingUtmObrigatorio); } if (coordenada.FusoUtm == 0) { Validacao.Add(msg.FusoUtmObrigatorio); } if (coordenada.HemisferioUtm == 0) { Validacao.Add(msg.HemisferioUtmObrigatorio); } if (!Validacao.EhValido) { return(false); } if (!ValidarDouble(coordenada.EastingUtmTexto)) { Validacao.Add(msg.EastingUtmInvalido); } if (!ValidarDouble(coordenada.NorthingUtmTexto)) { Validacao.Add(msg.NorthingUtmInvalido); } if (coordenada.EastingUtm < 0.0001 || coordenada.EastingUtm > 9999999.99999) { Validacao.Add(msg.EastingUtmForaDoEscopo); } if (coordenada.NorthingUtm < 0.0001 || coordenada.NorthingUtm > 9999999.99999) { Validacao.Add(msg.NorthingUtmForaDoEscopo); } } } return(Validacao.EhValido); }
public static bool EstaNaAbrangencia(Coordenada coord, string prefixo) { using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia()) { CoordenadaMsg msg = new CoordenadaMsg(prefixo); #region validar se está na abrangência Comando comando; #region Geometria comando = bancoDeDados.CriarComando(@"declare" + " v_x number;" + " v_y number;" + " v_fuso number;" + " v_hemi number;" + " v_count number :=0;" + " geo mdsys.sdo_geometry;" + " begin" + " case :tipo" + " when 1 then /*Grau, minuto e Segundo : Geografico*/" + " {0}coordenada.gms2utm(:datum_sigla, {0}coordenada.formatagms(:x), {0}coordenada.formatagms(:y), v_x, v_y, v_fuso, v_hemi);" + " when 2 then /*Grau decimal: Geografico*/" + " {0}coordenada.gdec2utm(:datum_sigla, :x, :y, v_x, v_y, v_fuso, v_hemi);" + " when 3 then /*UTM: Projetado*/" + " v_x := :x;" + " v_y := :y;" + " end case;" + " v_count := {0}coordenada.EstaNaAbrangencia(v_x, v_y, :abrangencia);" + " :resultado := v_count;" + " end;", UsuarioGeo); comando.AdicionarParametroEntrada("tipo", coord.Tipo.Id, DbType.Int32); comando.AdicionarParametroEntrada("abrangencia", coord.Abrangencia ?? 1, DbType.Int32); comando.AdicionarParametroEntrada("datum_sigla", coord.Datum.Sigla, DbType.String); comando.AdicionarParametroSaida("resultado", DbType.Int32); if (coord.Tipo.Id == 1) { comando.AdicionarParametroEntrada("x", coord.LongitudeGms, DbType.String); comando.AdicionarParametroEntrada("y", coord.LatitudeGms, DbType.String); } else if (coord.Tipo.Id == 2) { comando.AdicionarParametroEntrada("x", coord.LongitudeGdec, DbType.Double); comando.AdicionarParametroEntrada("y", coord.LatitudeGdec, DbType.Double); } else { comando.AdicionarParametroEntrada("x", coord.EastingUtm, DbType.Double); comando.AdicionarParametroEntrada("y", coord.NorthingUtm, DbType.Double); } #endregion bancoDeDados.ExecutarNonQuery(comando); if (comando.ObterValorParametro("resultado").ToString() == "0") { Validacao.Add(msg.CoordenadaForaAbrangencia); } #endregion } return(Validacao.EhValido); }