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