예제 #1
0
        public SimuladorGeoArquivoBus()
        {
            _config        = new ConfiguracaoSimuladorGeo();
            _configSistema = new ConfiguracaoSistema();

            _arquivoDa       = new ArquivoDa(_configSistema.Obter <string>(ConfiguracaoSistema.KeyUsuarioPublicoGeo));
            _gerenciador     = new GerenciadorArquivo(_config.DiretoriosArquivo, _configSistema.Obter <string>(ConfiguracaoSistema.KeyUsuarioPublicoGeo));
            _gerenciadorTemp = new GerenciadorArquivo(_config.DiretoriosArquivoTemp, _configSistema.Obter <string>(ConfiguracaoSistema.KeyUsuarioPublicoGeo));
        }
예제 #2
0
        public Sobreposicoes ObterGeoSobreposiacao(int id, eCaracterizacao tipo)
        {
            Sobreposicoes sobreposicoes = new Sobreposicoes();

            try
            {
                sobreposicoes.DataVerificacao = DateTime.Now.ToString("dd/MM/yyyy - HH:mm", CultureInfo.CurrentCulture.DateTimeFormat);
                #region Empreendimento
                Sobreposicao sobreposicaoEmp = _da.ObterGeoSobreposicaoIdaf(id, tipo);

                if (sobreposicaoEmp == null)
                {
                    sobreposicaoEmp = CriarObjSobreposicao(string.Empty);
                    sobreposicaoEmp.Identificacao = " - ";
                }
                else
                {
                    sobreposicaoEmp.TipoTexto = SobreposicaoTipo.Single(y => y.Id == (int)sobreposicaoEmp.Tipo).Texto;
                }

                sobreposicoes.Itens.Add(sobreposicaoEmp);
                #endregion

                #region Feicoes Geobases
                string ATPWkt = _da.ObterWktATP(id, tipo);
                string urlGeoBasesWebService = _config.Obter <string>(ConfiguracaoSistema.KeyUrlGeoBasesWebServices);
                urlGeoBasesWebService = urlGeoBasesWebService + "/Topologia/Relacao";

                if (String.IsNullOrEmpty(ATPWkt))
                {
                    Validacao.Add(Mensagem.ProjetoGeografico.ATPNaoEncontrada);
                    return(null);
                }

                //teste
                //urlGeoBasesWebService = "http://localhost:33716/Topologia/Relacao";

                List <string> feicoes = new List <string>()
                {
                    "HID_BACIA_HIDROGRAFICA", "LIM_TERRA_INDIGENA", "LIM_UNIDADE_PROTECAO_INTEGRAL", "LIM_UNIDADE_CONSERV_NAO_SNUC", "LIM_OUTRAS_UNID_PROTEGIDAS", "LIM_UNIDADE_USO_SUSTENTAVEL"
                };

                RequestJson request = new RequestJson();
                ResponseJsonData <List <FeicaoJson> > responseData = request.Executar <List <FeicaoJson> >(urlGeoBasesWebService, RequestJson.POST, new { feicoes = feicoes, wkt = ATPWkt });

                if (responseData.Erros != null && responseData.Erros.Count > 0)
                {
                    responseData.Erros.Insert(0, new Mensagem()
                    {
                        Tipo = eTipoMensagem.Erro, Texto = "Erro no WebService GeoBases"
                    });
                    Validacao.Erros.AddRange(responseData.Erros);
                    return(null);
                }

                Sobreposicao sobreposicao = null;

                foreach (var key in feicoes)
                {
                    sobreposicao = CriarObjSobreposicao(key);

                    if (!responseData.Data.Exists(x => x.Nome == key))
                    {
                        sobreposicao.Identificacao = " - ";
                        sobreposicoes.Itens.Add(sobreposicao);
                        continue;
                    }

                    FeicaoJson    feicaoJson = responseData.Data.First(x => x.Nome == key);
                    List <string> lst        = null;

                    if (!feicaoJson.Geometrias.SelectMany(x => x.Atributos).Any(x => x.Nome == "ADMINISTRACAO"))
                    {
                        sobreposicao.Identificacao = String.Join("; ", feicaoJson.Geometrias.SelectMany(x => x.Atributos).Select(x => x.Valor).ToArray());
                    }
                    else
                    {
                        lst = feicaoJson.Geometrias
                              .Select(x => String.Format("{0} - {1}",
                                                         x.Atributos.Single(y => y.Nome == "Nome").Valor,
                                                         x.Atributos.Single(y => y.Nome == "ADMINISTRACAO").Valor)).ToList();
                        sobreposicao.Identificacao = String.Join("; ", lst.ToArray());
                    }

                    sobreposicoes.Itens.Add(sobreposicao);
                }
                #endregion
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
            return(sobreposicoes);
        }