Пример #1
0
 public FrmAnadeElemento(DireccionPuntoSOB listaObservada, IGeocodificador geocodificador)
 {
     InitializeComponent();
     _listaObservada = listaObservada;
     _dp             = new DireccionPunto();
     _geocodificador = geocodificador;
 }
Пример #2
0
 public FrmModificaElemento(DireccionPuntoSOB listaObservada, string key, IGeocodificador geocodificador)
 {
     InitializeComponent();
     _listaObservada = listaObservada;
     _dp             = listaObservada[key];
     _geocodificador = geocodificador;
 }
Пример #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void cboGeocodificador_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (typeof(ImplementacionGeocodificador) == cboGeocodificador.SelectedValue.GetType())
     {
         geocodificador =
             GeocodingFactory.GetGeodificadorInstancia(
                 (ImplementacionGeocodificador)cboGeocodificador.SelectedValue);
         geocodificador.MensajeEvent += OnMensajeFromGeoCodificador;
     }
 }
Пример #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            if (!runInmediately)
            {
                Thread.Sleep(2500);
            }
            _frmInicio.Cerrar();
            this.Show();
            this.Activate();

            ajustatamanio();

            covariables = new List <Covariable>();

            if (!String.IsNullOrEmpty(pathFile))
            {
                txtCarpetaSalida.Text = pathFile;
            }

            var dict = new Dictionary <ImplementacionGeocodificador, string>
            {
                { ImplementacionGeocodificador.GOOGLE_MAPS, "Google MAPS" },
                { ImplementacionGeocodificador.BING_MAPS, "Bing MAPS" },
                { ImplementacionGeocodificador.OPEN_STREET_NOMINATIM, "Open Street NOMINATIM" }
            };

            cboGeocodificador.DataSource    = new BindingSource(dict, null);
            cboGeocodificador.DisplayMember = "Value";
            cboGeocodificador.ValueMember   = "Key";
            cboGeocodificador.Select(1, 1);
            geocodificador =
                GeocodingFactory.GetGeodificadorInstancia((ImplementacionGeocodificador)cboGeocodificador.SelectedValue);
            geocodificador.MensajeEvent += OnMensajeFromGeoCodificador;
            if (this.runInmediately)
            {
                string file = String.Format("{0}\\{1}", pathFile, nameFile);
                if (File.Exists(file))
                {
                    abrirArchivo();
                }
                else
                {
                    BeginInvoke(new DlgMensaje(escribeConsolaRojo),
                                new object[]
                    {
                        String.Format("No existe el archivo {0}", file)
                    });
                    if (closeAfterRun)
                    {
                        Application.Exit();
                    }
                }
            }
        }
Пример #5
0
 /// <summary>
 /// Aunque List<RegistroModel> es una variable global, en el próximo incremento de geoToMap, el
 /// proceso de georreferenciación se desagregará.
 /// </summary>
 /// <param name="codificador"></param>
 /// <param name="direcciones"></param>
 private void ProcesoLoteGeoreferenciacion(IGeocodificador codificador, List <RegistroModel> direcciones)
 {
     try
     {
         BeginInvoke(new DlgMensaje(escribeConsolaNegro),
                     new object[]
         {
             String.Format("Se han leído {0} direcciones",
                           direcciones.Count.ToString(CultureInfo.InvariantCulture))
         });
         int i = 0;
         items.Clear();
         BeginInvoke(new DlgVoid(() => listView1.Items.Clear()));
         foreach (RegistroModel registro in direcciones)
         {
             if (!String.IsNullOrEmpty(registro.Direccion))
             {
                 int i1 = i;
                 BeginInvoke(
                     new DlgVoid(
                         () => progressBar1.Value = (int)(((double)(i1 + 1) / (double)direcciones.Count) * 100)));
                 i++;
                 DireccionPunto dp = codificador.GetCoordenadas(registro.Direccion);
                 if (dp != null)
                 {
                     dp.key = registro.Id;
                     Invoke(new DlgVoid(() => items.Add(dp.key, dp)));
                     //TO DO Posible efecto secundario EVITAR!!!
                     registro.Id = dp.key;
                 }
             }
         }
     }
     catch (Exception ex)
     {
     }
 }
Пример #6
0
        /// <summary>
        /// abre el archivo de texto que se va a georreferenciar
        /// </summary>
        private void abrirArchivo()
        {
            try
            {
                txtCarpetaSalida.Text = pathFile;
                string archivo = String.Format("{0}\\{1}", pathFile, nameFile);
                items.Clear();
                idRegistro      = 0;
                listadoRegistro = new List <RegistroModel>();
                var sr             = new StreamReader(archivo, true);
                int numLinea       = 0;
                int numCovariables = covariables.Count;
                //Modificaciones para SpainRDR
                while (!sr.EndOfStream)
                {
                    numLinea++;
                    var line = sr.ReadLine();
                    if (line == null)
                    {
                        continue;
                    }
                    if (checkCovariables.Checked)
                    {
                        int      lineCovariables = 0;
                        string[] campos          = line.Split(separador);
                        lineCovariables = campos.Length - 1;
                        RegistroModel registro = new RegistroModel();
                        registro.Direccion   = campos[0];
                        registro.Covariables = new object[numCovariables];
                        if (numCovariables == lineCovariables)
                        {
                            int  i         = 1;
                            bool okParseCo = true;
                            foreach (var covariable in covariables)
                            {
                                string errorParse = "";
                                try
                                {
                                    switch (covariable.Tipo)
                                    {
                                    case TiposDatos.CADENA:
                                        registro.Covariables[i - 1] = campos[i];
                                        break;

                                    case TiposDatos.DECIMAL:
                                        errorParse = "se esperaba un decimal";
                                        registro.Covariables[i - 1] = Double.Parse(campos[i],
                                                                                   CultureInfo.InvariantCulture);
                                        break;

                                    case TiposDatos.ENTERO:
                                        errorParse = "se esperaba un entero";
                                        registro.Covariables[i - 1] = Int32.Parse(campos[i]);
                                        break;

                                    case TiposDatos.FECHA:
                                        errorParse = "se esperaba una fecha";
                                        registro.Covariables[i - 1] = DateTime.Parse(campos[i],
                                                                                     CultureInfo.CurrentCulture);
                                        break;
                                    }
                                    i++;
                                }
                                catch (Exception ex)
                                {
                                    BeginInvoke(new DlgMensaje(escribeConsolaRojo),
                                                new object[]
                                    {
                                        String.Format("Error leyendo la línea {0}  {1} en la variable nº{2} : {3}",
                                                      numLinea, errorParse, i, line)
                                    });
                                    okParseCo = false;
                                }
                            }
                            if (!okParseCo)
                            {
                                continue;
                            }
                            registro.Id = idRegistro.ToString(CultureInfo.InvariantCulture);
                            listadoRegistro.Add(registro);
                            idRegistro++;
                        }
                        else
                        {
                            BeginInvoke(new DlgMensaje(escribeConsolaRojo),
                                        new object[]
                            {
                                String.Format(
                                    "Error leyendo la línea {0} se esperaban {1} variable en lugar {2}: {3}",
                                    numLinea,
                                    numCovariables, lineCovariables, line)
                            });
                        }
                    }
                    else
                    {
                        //Caso de no estar marcadas las covariables
                        //Ya está la dirección leída
                        string[]      campos   = line.Split(separador);
                        RegistroModel registro = new RegistroModel();
                        registro.Direccion = campos[0];
                        registro.Id        = idRegistro.ToString();
                        listadoRegistro.Add(registro);
                        idRegistro++;
                    }
                }
                IGeocodificador geodificadorInstancia =
                    GeocodingFactory.GetGeodificadorInstancia(
                        (GeoToMap.ImplementacionGeocodificador)cboGeocodificador.SelectedValue);
                var dlgProcesoGeoRreferenciacion = new DlgVoid(
                    () => ProcesoLoteGeoreferenciacion
                    (
                        geodificadorInstancia,
                        listadoRegistro
                    )
                    );
                dlgProcesoGeoRreferenciacion.BeginInvoke(finProcesoLoteGeoreferenciacion, null);
            }
            catch (Exception ex)
            {
                BeginInvoke(new DlgMensaje(escribeConsolaRojo),
                            new object[]
                {
                    ex.Message
                });
            }
        }