private void Window_Loaded(object sender, RoutedEventArgs e) { dbContext = new TravelPhotoDbContext(); dbContext.GeoObjects.Load(); geoObjectsDataGrid.ItemsSource = dbContext.GeoObjects.ToList(); geoObjectsDataGrid.AutoGenerateColumns = false; geoObjectsDataGrid.Columns.Add(new DataGridTextColumn() { Header = "Name", Binding = new Binding("Name"), }); geoObjectsDataGrid.Columns.Add(new DataGridTextColumn() { Header = "Synonyms", Binding = new Binding("Synonyms"), }); geoObjectsDataGrid.Columns.Add(new DataGridComboBoxColumn() { Header = "Country", SelectedValuePath = "ISOCode", DisplayMemberPath = "Name", SelectedValueBinding = new Binding("CountryCode"), ItemsSource = dbContext.Countries.OrderBy(country => country.Name).ToList() }); //geoObjectsDataGrid.Columns.Add(createDateTimeColumn("Arrived","WhenArrived")); //geoObjectsDataGrid.Columns.Add(createDateTimeColumn("Leaved", "WhenLeaved")); geoObjectsDataGrid.Columns.Add(new DataGridTextColumn() { Header = "Arrived", Binding = new Binding("WhenArrived"), }); geoObjectsDataGrid.Columns.Add(new DataGridTextColumn() { Header = "Leaved", Binding = new Binding("WhenLeaved"), }); }
public void Load() { ProgressText = "Openning KMZ file"; var kmz = KmzFile.Open(_kmzFilename); var kmlFile = kmz.GetDefaultKmlFile(); var kml = kmlFile.Root as Kml; if (kml != null) { ProgressText = "Parsing KML"; List<Placemark> placemarks = new List<Placemark>(); ExtractPlacemarks(kml.Feature, placemarks); var geoNamesLookup=new GeoNamesLookup(); var dbContext=new TravelPhotoDbContext(); Maximum = placemarks.Count; foreach (var placeMark in placemarks) { Increment(); var geoObject = new GeoObject(); if (string.IsNullOrEmpty(placeMark.Name)) { continue; } ProgressText = "Processing " + placeMark.Name; geoObject.Name = placeMark.Name; var boundingBox = placeMark.Geometry.CalculateBounds(); var found=new List<Toponym>(); if (boundingBox != null) { geoObject.Latitude = (float) placeMark.Geometry.CalculateBounds().Center.Latitude; geoObject.Longitude = (float) placeMark.Geometry.CalculateBounds().Center.Longitude; found = geoNamesLookup.FindByCoordinates(geoObject.Latitude, geoObject.Longitude); } if (!found.Any()) { found = geoNamesLookup.FindByName(geoObject.Name); if (found.Any()) { ProgressText = "Found by name"; } } else { ProgressText = "Found by coordinates"; } //if (found.Count > 1) //{ // ProgressText = "Multiple matches"; //} if (found.Any() ) { geoObject.GeoNameId = found.First().GeoNameId; geoObject.Synonyms = found.First().Name; if (found.First().AlternateNames!=null) { foreach (var name in found.First().AlternateNames) { geoObject.Synonyms += ", " + name; } } geoObject.CountryCode = found.First().CountryCode; dbContext.GeoObjects.Add(geoObject); dbContext.SaveChanges(); } } } }