Beispiel #1
0
        public void DoWork()
        {
            try
            {
                collaborations_byCity        = new CollaborationMatrix();
                collaborations_byCountry     = new CollaborationMatrix();
                collaborations_byInstitution = new CollaborationMatrix();

                FieldsExtractor extractor = new FieldsExtractor(publicationsFile.Type);

                foreach (Publication publication in publicationsFile.publications)
                {
                    AddCollaborations(collaborations_byCity, extractor.GetCities(publication));
                    AddCollaborations(collaborations_byCountry, extractor.GetCountries(publication));
                    AddCollaborations(collaborations_byInstitution, extractor.GetInstitutions(publication));
                }

                statistics = new Statistics();
                foreach (Publication publication in publicationsFile.publications)
                {
                    string country = extractor.GetCountry(publication);
                    string journal = extractor.GetJournal(publication);
                    if (country != null)
                    {
                        GeoCodedLocation geoCodedCountry = geoCoding.GeoCode_OrNull(country);

                        if (geoCodedCountry != null)
                        {
                            statistics.AddPublicationInCountry(geoCodedCountry);

                            if (journal != null)
                            {
                                statistics.AddJournalInCountry(geoCodedCountry, journal);
                            }
                        }
                    }
                }

                geoCoding.LogTotals();

                logger.Info("Done");
            }
            catch (Exception e)
            {
                logger.Error(e, "Error while doing work.");
                throw;
            }
        }
Beispiel #2
0
        private void AddCollaborations(CollaborationMatrix addTo, List <FieldsExtractor.ParsedLocation> extractedLocations)
        {
            List <GeoCodedLocation> publicationCitiesResolved = extractedLocations.Select(
                x =>
            {
                GeoCodedLocation loc = geoCoding.GeoCode_OrNull(x.NameForGeocoding);
                if (loc != null)
                {
                    loc = new GeoCodedLocation(loc.lat, loc.lon, x.AdditionalNamePrefix + loc.normalizedName);
                }
                return(loc);
            }
                ).Where(x => x != null).Distinct().ToList();

            for (int i = 0; i < publicationCitiesResolved.Count; ++i)
            {
                for (int j = i + 1; j < publicationCitiesResolved.Count; ++j)
                {
                    addTo.AddConnection(publicationCitiesResolved[i], publicationCitiesResolved[j]);
                }
            }
        }