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); }
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); }