Exemplo n.º 1
0
        public List <FeicaoJson> ObterAtributosGeoRelacao(List <string> feicoes, string wkt)
        {
            Dictionary <string, List <Feicao> > feicoesBanco = _da.Relacao(feicoes, wkt);
            List <FeicaoJson> feicoesJson = new List <FeicaoJson>();


            foreach (string feicaoKey in feicoesBanco.Keys)
            {
                FeicaoJson feicaoItem = new FeicaoJson();
                feicaoItem.Nome       = feicaoKey;
                feicaoItem.Geometrias = new List <GeometriaJson>();

                foreach (Feicao feicao in feicoesBanco[feicaoKey])
                {
                    GeometriaJson geoItem = new GeometriaJson();
                    geoItem.Atributos = new List <AtributoJson>();

                    for (int i = 0; i < feicao.Atributos.Count; i++)
                    {
                        if (feicao.Atributos[i].Nome != "NOME" && feicao.Atributos[i].Nome != "ADMINISTRADOR")
                        {
                            continue;
                        }
                        geoItem.Atributos.Add(new AtributoJson()
                        {
                            Nome = feicao.Atributos[i].Nome, Valor = feicao.Atributos[i].Valor
                        });
                    }

                    feicaoItem.Geometrias.Add(geoItem);
                }

                feicoesJson.Add(feicaoItem);
            }

            return(feicoesJson);
        }
Exemplo n.º 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);
        }