public Direccion(DireccionVO direccion) { IdMapa = (short)direccion.IdMapaUrbano; IdPoligonal = direccion.IdPoligonal; IdEsquina = direccion.IdEsquina; Altura = direccion.Altura; }
protected static IList <DireccionVO> NomenclarByLatLon(double latitud, double longitud) { var vo = GeocoderHelper.Cleaning.GetDireccionMasCercana(latitud, longitud); var lst = new List <DireccionVO>(1); if (vo == null) { vo = new DireccionVO { Altura = -1, Calle = string.Empty, Direccion = string.Format("({0}, {1})", latitud, longitud), IdEsquina = -1, IdMapaUrbano = -1, IdPoligonal = -1, IdProvincia = -1, Partido = string.Empty, Provincia = string.Empty, Latitud = latitud, Longitud = longitud }; } lst.Add(vo); return(lst); }
/// <summary> /// Gets the neearests cross to the givenn position. /// </summary> /// <param name="latitud"></param> /// <param name="longitud"></param> /// <returns></returns> public static DireccionVO GetEsquinaMasCercana(double latitud, double longitud) { var direccion = Geocoder.GetEsquinaMasCercana(latitud, longitud); if (direccion != null) { return(direccion); } var googleDir = GoogleGeocoder.ReverseGeocoding(latitud, longitud); if (googleDir != null) { return(googleDir); } direccion = new DireccionVO { Altura = -1, Calle = string.Empty, Direccion = string.Format("({0}, {1})", latitud.ToString(CultureInfo.InvariantCulture), longitud.ToString(CultureInfo.InvariantCulture)), IdEsquina = -1, IdMapaUrbano = -1, IdPoligonal = -1, IdProvincia = -1, Latitud = latitud, Longitud = longitud, Partido = string.Empty, Provincia = string.Empty }; return(direccion); }
protected void OnDireccionSaved(DireccionVO direccion, int index, int idTipoReferenciaGeografica, string codigo) { if (DireccionSaved == null) { return; } DireccionSaved(this, new DireccionSavedEventArgs(direccion, index, idTipoReferenciaGeografica, codigo, chkPosicionar.Checked)); }
protected void OnDireccionSelected(DireccionVO direccion, int index) { if (DireccionAdded == null) { return; } DireccionSelected(this, new DireccionEventArgs(direccion, index, chkPosicionar.Checked)); }
public static DireccionVO ReverseGeocoding(double latitud, double longitud) { try { var fullUrl = string.Format(ReverseGeocodingUrl, latitud.ToString(CultureInfo.InvariantCulture), longitud.ToString(CultureInfo.InvariantCulture)); var xml = new XmlDocument(); xml.Load(fullUrl); var status = xml.GetElementsByTagName("status").Cast <XmlNode>().FirstOrDefault(); if (status == null || status.InnerText != "OK") { return(null); } var result = xml.GetElementsByTagName("result").Cast <XmlNode>().FirstOrDefault(); if (result == null) { return(null); } var addressComponent = result.ChildNodes.Cast <XmlNode>().FirstOrDefault(t => t.Name == "address_component"); var longName = addressComponent != null?addressComponent.ChildNodes.Cast <XmlNode>().FirstOrDefault(t => t.Name == "long_name").InnerText : string.Empty; var partidoNode = xml.GetElementsByTagName("result").Cast <XmlNode>().FirstOrDefault(t => t.ChildNodes.Cast <XmlNode>().FirstOrDefault(y => y.Name == "type").InnerText == "administrative_area_level_2"); var addressComponentPartido = partidoNode.ChildNodes.Cast <XmlNode>().FirstOrDefault(t => t.Name == "address_component"); var partido = addressComponentPartido != null?addressComponentPartido.ChildNodes.Cast <XmlNode>().FirstOrDefault(t => t.Name == "long_name").InnerText : string.Empty; var provinciaNode = xml.GetElementsByTagName("result").Cast <XmlNode>().FirstOrDefault(t => t.ChildNodes.Cast <XmlNode>().FirstOrDefault(y => y.Name == "type").InnerText == "administrative_area_level_1"); var addressComponentProvincia = provinciaNode.ChildNodes.Cast <XmlNode>().FirstOrDefault(t => t.Name == "address_component"); var provincia = addressComponentProvincia != null?addressComponentProvincia.ChildNodes.Cast <XmlNode>().FirstOrDefault(t => t.Name == "long_name").InnerText : string.Empty; var direccion = new DireccionVO { Direccion = result.ChildNodes.Cast <XmlNode>().First(t => t.Name == "formatted_address"). InnerText, Altura = -1, Calle = longName, IdEsquina = -1, IdMapaUrbano = -1, IdPoligonal = -1, IdProvincia = -1, Latitud = latitud, Longitud = longitud, Partido = partido, Provincia = provincia }; return(direccion); } catch { return(null); } }
public int AddSelected(DireccionVO direccion) { var id = LastId++; var sel = Selected; sel.Add(direccion); Selected = sel; var selId = SelectedId; selId.Add(id); SelectedId = selId; return(id); }
public void SetDireccion(DireccionVO direccion) { var id = AddSelected(direccion); SwitchView(0); var sel = Selected; if (sel == null) { return; } BindGrid(); txtCalle.Text = txtAltura.Text = txtEsquina.Text = txtPartido.Text = txtCodigo.Text = string.Empty; OnDireccionAdded(direccion, id); }
private static Direccion DireccionFromVo(DireccionVO direccion) { var dir = new Direccion { Altura = direccion.Altura, Calle = direccion.Calle, Descripcion = direccion.Direccion, IdCalle = direccion.IdPoligonal, IdEntrecalle = (-1), IdEsquina = direccion.IdEsquina, IdMapa = ((short)direccion.IdMapaUrbano), Latitud = direccion.Latitud, Longitud = direccion.Longitud, Pais = "Argentina", Partido = direccion.Partido, Provincia = direccion.Provincia, Vigencia = new Vigencia() }; return(dir); }
public DireccionVO GetDireccionMasCercana(double lat, double lon) { var direccionMasCercana = DAOFactory.AlturaDAO.GetDireccionMasCercana(lat, lon); DireccionVO result; if (direccionMasCercana == null) { result = null; } else { var num = lat - direccionMasCercana.LatitudInicio; var num2 = lon - direccionMasCercana.LongitudInicio; var num3 = num * num + num2 * num2; var num4 = lat - direccionMasCercana.LatitudFin; var num5 = lon - direccionMasCercana.LongitudFin; var num6 = num4 * num4 + num5 * num5; var num7 = num3 / (num3 + num6); var alturaExacta = Convert.ToInt32(Math.Round((direccionMasCercana.AlturaInicio + (direccionMasCercana.AlturaFin - direccionMasCercana.AlturaInicio) * num7) / 10.0) * 10.0); result = new DireccionVO(new Direccion(direccionMasCercana, alturaExacta)); } return(result); }
private void CreateReferencia(ImportDireccion datos, DireccionVO direccion) { var codigo = datos.Codigo.Trim(); var referencia = DAOFactory.ReferenciaGeograficaDAO.FindByCodigo(new [] { cbEmpresa.Selected }, new[] { cbLinea.Selected }, new[] { cbTipoGeoRef.Selected }, codigo); var linea = cbLinea.Selected > 0 ? DAOFactory.LineaDAO.FindById(cbLinea.Selected) : null; var empresa = linea != null ? linea.Empresa : cbEmpresa.Selected > 0 ? DAOFactory.EmpresaDAO.FindById(cbEmpresa.Selected) : null; int radio; if (!int.TryParse(txtRadio.Text, out radio)) { radio = 100; } var tipo = DAOFactory.TipoReferenciaGeograficaDAO.FindById(cbTipoGeoRef.Selected); if (referencia == null) { referencia = new ReferenciaGeografica { Codigo = codigo, Empresa = empresa, Linea = linea, EsFin = tipo.EsFin, EsInicio = tipo.EsInicio, EsIntermedio = tipo.EsIntermedio, Icono = tipo.Icono, InhibeAlarma = tipo.InhibeAlarma, TipoReferenciaGeografica = tipo, Color = tipo.Color }; foreach (TipoReferenciaVelocidad maxima in tipo.VelocidadesMaximas) { referencia.VelocidadesMaximas.Add(new ReferenciaVelocidad { ReferenciaGeografica = referencia, TipoVehiculo = maxima.TipoVehiculo, VelocidadMaxima = maxima.VelocidadMaxima }); } } referencia.Baja = false; referencia.Descripcion = datos.Descripcion.Trim(); referencia.Observaciones = string.Empty; UpdateVigencia(datos, referencia); var dir = new Direccion { Altura = direccion != null ? direccion.Altura : -1, Calle = direccion != null ? direccion.Calle : string.Empty, Descripcion = direccion != null ? direccion.Direccion : string.Empty, IdCalle = direccion != null ? direccion.IdPoligonal : -1, IdEntrecalle = -1, IdEsquina = direccion != null ? direccion.IdEsquina : -1, IdMapa = direccion != null ? (short)direccion.IdMapaUrbano : (short)-1, Latitud = direccion != null ? direccion.Latitud : Convert.ToDouble(datos.Latitud), Longitud = direccion != null ? direccion.Longitud : Convert.ToDouble(datos.Longitud), Pais = "Argentina", Partido = direccion != null ? direccion.Partido : string.Empty, Provincia = direccion != null ? direccion.Provincia : string.Empty, Vigencia = new Vigencia { Inicio = DateTime.Now } }; var pol = new Poligono { Radio = radio, Vigencia = new Vigencia { Inicio = DateTime.Now } }; pol.AddPoints(new[] { new PointF((float)dir.Longitud, (float)dir.Latitud) }); referencia.AddHistoria(dir, pol, DateTime.UtcNow); DAOFactory.ReferenciaGeograficaDAO.SingleSaveOrUpdate(referencia); STrace.Trace("QtreeReset", "DireccionImport 2"); }
public IList <ObjetoPuntuado <DireccionVO> > NomenclarDireccionSmart(ParsedDirection direccion) { List <ObjetoPuntuado <DireccionVO> > list = new List <ObjetoPuntuado <DireccionVO> >(); IList <ObjetoPuntuado <DireccionVO> > result; if (string.IsNullOrEmpty(direccion.Calle.Trim()) || (direccion.Altura <= 0 && string.IsNullOrEmpty(direccion.Esquina.Trim()))) { result = list; } else { double num = 0.0; double num2 = 0.0; double num3 = 0.0; double item = 0.0; IList <Provincia> list2 = null; IList <Partido> list3 = null; if (!string.IsNullOrEmpty(direccion.Provincia.Trim())) { Tokenizer tokenizer = Tokenizer.FromString(direccion.Provincia, 0); IList <Provincia> provincias = base.DAOFactory.ProvinciaDAO.GetProvincias(tokenizer.ToArray()); list2 = Cleaning.Nomenclar <Provincia>(tokenizer, provincias, out num); if (!string.IsNullOrEmpty(direccion.Localidad)) { Tokenizer tokenizer2 = Tokenizer.FromString(direccion.Localidad, 1); List <Partido> list4 = new List <Partido>(); foreach (Provincia current in provincias) { list4.AddRange(base.DAOFactory.PartidoDAO.GetEnProvincia(tokenizer2.ToArray(), current.MapId)); } List <int> list5 = new List <int>(); list3 = Cleaning.Nomenclar <Partido>(tokenizer2, list4, out num2); foreach (Partido current2 in list3) { list5.Add(current2.Id); } List <Localidad> list6 = new List <Localidad>(); list6.AddRange(base.DAOFactory.LocalidadDAO.GetByProvincia(tokenizer2.ToArray(), -1)); IList <Localidad> list7 = Cleaning.Nomenclar <Localidad>(tokenizer2, list6, out num3); foreach (Localidad current3 in list7) { if (!list5.Contains(current3.Partido.Id)) { list3.Add(current3.Partido); list5.Add(current3.Partido.Id); } } } } else { if (!string.IsNullOrEmpty(direccion.Localidad)) { Tokenizer tokenizer2 = Tokenizer.FromString(direccion.Localidad, 1); List <Partido> list4 = new List <Partido>(); list4.AddRange(base.DAOFactory.PartidoDAO.GetEnProvincia(tokenizer2.ToArray(), -1)); List <int> list5 = new List <int>(); list3 = Cleaning.Nomenclar <Partido>(tokenizer2, list4, out num2); foreach (Partido current2 in list3) { list5.Add(current2.Id); } List <Localidad> list6 = new List <Localidad>(); list6.AddRange(base.DAOFactory.LocalidadDAO.GetByProvincia(tokenizer2.ToArray(), -1)); IList <Localidad> list7 = Cleaning.Nomenclar <Localidad>(tokenizer2, list6, out num3); foreach (Localidad current3 in list7) { if (!list5.Contains(current3.Partido.Id)) { list3.Add(current3.Partido); list5.Add(current3.Partido.Id); } } } } Tokenizer tokenizer3 = Tokenizer.FromString(direccion.Calle, 3); List <Poligonal> list8 = new List <Poligonal>(); List <double> list9 = new List <double>(); if (list3 != null) { foreach (Partido current2 in list3) { IList <Poligonal> enPartidoYProvincia = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer3.ToArray(), current2.PolId, current2.Provincia.MapId); IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer3, enPartidoYProvincia, out item); list8.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list9.Add(item); } } } else { if (list2 != null) { foreach (Provincia current in list2) { IList <Poligonal> enPartidoYProvincia = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer3.ToArray(), -1, current.MapId); IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer3, enPartidoYProvincia, out item); list8.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list9.Add(item); } } } else { IList <Poligonal> enPartidoYProvincia = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer3.ToArray(), -1, -1); IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer3, enPartidoYProvincia, out item); list8.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list9.Add(item); } } } if (direccion.Altura > 0) { for (int i = 0; i < list8.Count; i++) { Poligonal poligonal = list8[i]; if (poligonal.AlturaMinima - 1 <= direccion.Altura && poligonal.AlturaMaxima >= direccion.Altura) { DireccionVO direccionVO = base.ValidarAltura(poligonal.PolId, direccion.Altura, poligonal.MapId); if (direccionVO != null) { list.Add(new ObjetoPuntuado <DireccionVO>(num + num2 + list9[i], direccionVO)); } } } } else { List <double> list11 = new List <double>(); List <Poligonal> list12 = new List <Poligonal>(); Tokenizer tokenizer4 = Tokenizer.FromString(direccion.Esquina, 3); if (list3 != null) { foreach (Partido current2 in list3) { IList <Poligonal> enPartidoYProvincia2 = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer4.ToArray(), current2.PolId, current2.Provincia.MapId); double item2; IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer4, enPartidoYProvincia2, out item2); list12.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list11.Add(item2); } } } else { if (list2 != null) { foreach (Provincia current in list2) { IList <Poligonal> enPartidoYProvincia2 = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer4.ToArray(), -1, current.MapId); double item2; IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer4, enPartidoYProvincia2, out item2); list12.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list11.Add(item2); } } } else { IList <Poligonal> enPartidoYProvincia2 = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer4.ToArray(), -1, -1); double item2; IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer4, enPartidoYProvincia2, out item2); list12.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list11.Add(item2); } } } for (int i = 0; i < list8.Count; i++) { Poligonal poligonal = list8[i]; for (int j = 0; j < list12.Count; j++) { Poligonal poligonal2 = list12[j]; if (poligonal.MapId == poligonal2.MapId) { DireccionVO direccionVO = base.ValidarCruce(poligonal.PolId, poligonal2.PolId, poligonal.MapId); if (direccionVO != null) { list.Add(new ObjetoPuntuado <DireccionVO>(num + num2 + (list9[i] + list11[j]) / 2.0, direccionVO)); } } } } } result = list; } return(result); }
public IList <DireccionVO> NomenclarDireccion(string calle, int altura, string esquina, string partido, string provincia) { List <DireccionVO> list = new List <DireccionVO>(); int provincia2 = -1; int partido2 = -1; Partido partido3 = null; IList <DireccionVO> result; if (string.IsNullOrEmpty(calle.Trim()) || (altura <= 0 && string.IsNullOrEmpty(esquina.Trim()))) { result = list; } else { if (!string.IsNullOrEmpty(provincia.Trim())) { IList <Provincia> list2 = this.NomenclarProvinciaI(provincia); if (list2.Count == 1) { Provincia provincia3 = list2[0]; provincia2 = provincia3.MapId; if (provincia3.MapId == 199) { partido3 = provincia3.Partidos[0]; partido2 = partido3.PolId; } } if (partido3 == null && !string.IsNullOrEmpty(partido)) { IList <Partido> list3 = this.NomenclarPartidoI(partido, provincia2); if (list3.Count == 1) { partido3 = list3[0]; partido2 = partido3.PolId; } } } else { if (!string.IsNullOrEmpty(partido)) { IList <Partido> list3 = this.NomenclarPartidoI(partido, -1); if (list3.Count == 1) { partido3 = list3[0]; partido2 = partido3.PolId; } } } IList <Poligonal> list4 = this.NomenclarPoligonalI(calle, partido2, provincia2); if (list4.Count == 0) { result = list; } else { if (altura > 0) { foreach (Poligonal current in list4) { if (current.AlturaMinima - 1 <= altura && current.AlturaMaxima >= altura) { DireccionVO direccionVO = base.ValidarAltura(current.PolId, altura, current.MapId); if (direccionVO != null) { list.Add(direccionVO); } } } } else { IList <Poligonal> list5 = this.NomenclarPoligonalI(esquina, partido2, provincia2); foreach (Poligonal current in list4) { foreach (Poligonal current2 in list5) { if (current.MapId == current2.MapId) { DireccionVO direccionVO = base.ValidarCruce(current.PolId, current2.PolId, current.MapId); if (direccionVO != null) { list.Add(direccionVO); } } } } } result = list; } } return(result); }
private ReferenciaGeografica CreateGeoRef(String codigo, String descripcion, DireccionVO dir, Linea lin, TipoReferenciaGeografica tipoGeoRef) { var posicion = new Direccion { Altura = dir.Altura, IdMapa = (short)dir.IdMapaUrbano, Provincia = dir.Provincia, IdCalle = -1, IdEsquina = dir.IdEsquina, IdEntrecalle = dir.IdEsquina, Latitud = dir.Latitud, Longitud = dir.Longitud, Partido = dir.Partido, Pais = string.Empty, Calle = dir.Calle, Descripcion = dir.Direccion, Vigencia = new Vigencia { Inicio = DateTime.UtcNow } }; var poligono = new Poligono { Radio = 50, Vigencia = new Vigencia { Inicio = DateTime.UtcNow } }; poligono.AddPoints(new [] { new PointF((float)posicion.Longitud, (float)posicion.Latitud) }); //Constructs the point. var puntoDeInteres = new ReferenciaGeografica { Codigo = codigo, Descripcion = Trunc(descripcion, 128), Empresa = lin.Empresa, Linea = lin, EsFin = tipoGeoRef.EsFin, EsInicio = tipoGeoRef.EsInicio, EsIntermedio = tipoGeoRef.EsIntermedio, InhibeAlarma = tipoGeoRef.InhibeAlarma, TipoReferenciaGeografica = tipoGeoRef, Vigencia = new Vigencia { Inicio = DateTime.UtcNow }, Icono = tipoGeoRef.Icono }; puntoDeInteres.Historia.Add(new HistoriaGeoRef { ReferenciaGeografica = puntoDeInteres, Direccion = posicion, Poligono = poligono, Vigencia = new Vigencia { Inicio = DateTime.UtcNow } }); DAOFactory.ReferenciaGeograficaDAO.SingleSaveOrUpdate(puntoDeInteres); STrace.Trace("QtreeReset", "TicketImport"); return(puntoDeInteres); }
public DireccionSavedEventArgs(DireccionVO direccion, int index, int idTipoReferenciaGeografica, string codigo, bool posicionar) : base(direccion, index, posicionar) { IdTipoReferenciaGeografica = idTipoReferenciaGeografica; Codigo = codigo; }
public DireccionEventArgs(DireccionVO direccion, int index, bool posicionar) { Direccion = direccion; Index = index; Posicionar = posicionar; }