Esempio n. 1
0
        /// <summary>
        /// Gets the geo places from the file embedded into assembly
        /// </summary>
        /// <returns>List of geo places</returns>
        internal static List <GeoPlace> GetGeoPlacesFromEmbeddedFile()
        {
            List <GeoPlace>  cities            = new List <GeoPlace>();
            HashSet <string> insertedCityIds   = new HashSet <string>();
            HashSet <string> unsupportedStates = new HashSet <string>(new string[] { "ak", "hi" });

            using (var stream = typeof(PlacesLoader).Assembly.GetManifestResourceStream("Yojowa.StopByStop.Places.cities1000.csv"))
            {
                using (var streamReader = new StreamReader(stream))
                {
                    string line = null;
                    while ((line = streamReader.ReadLine()) != null)
                    {
                        string[] parts = line.Split(',');
                        if (parts[3] == "US")
                        {
                            string state = parts[4];
                            if (!unsupportedStates.Contains(state))
                            {
                                string name        = parts[0];
                                string description = string.Format("{0}, {1}, United States", parts[0], parts[4]);
                                string cityId      = string.Format("{0}-{1}-United-States", parts[0], parts[4]).Replace(" ", "-").ToLowerInvariant();
                                double lat         = double.Parse(parts[1]);
                                double lon         = double.Parse(parts[2]);
                                long   population  = long.Parse(parts[5]);

                                if (!insertedCityIds.Contains(cityId))
                                {
                                    GeoPlace city = new GeoPlace()
                                    {
                                        ID         = cityId,
                                        ShortName  = name,
                                        Name       = description,
                                        Location   = new Location(lat, lon),
                                        Population = population
                                    };

                                    cities.Add(city);
                                    insertedCityIds.Add(cityId);
                                }
                            }
                        }
                    }
                }
            }

            return(cities);
        }
Esempio n. 2
0
        public void VerifyCitiesTableRecords()
        {
            var places = PlacesLoader.GetGeoPlacesFromEmbeddedFile();

            List <GeoPlace> allGeo = new List <GeoPlace>();

            using (var conn = new NpgsqlConnection(PlacesLoader.PGConnection))
            {
                conn.Open();

                string selectQuery = "SELECT id,shortname,name,lat,lng,population FROM cities order by name asc";

                using (NpgsqlCommand command = new NpgsqlCommand(selectQuery, conn))
                {
                    var dr = command.ExecuteReader();

                    while (dr.Read())
                    {
                        GeoPlace place = new GeoPlace();
                        place.ID        = dr.GetString(0);
                        place.ShortName = dr.GetString(1);
                        place.Name      = dr.GetString(2);

                        place.Location     = new Location();
                        place.Location.Lat = dr.GetDouble(3);
                        place.Location.Lon = dr.GetDouble(4);
                        place.Population   = dr.GetInt64(5);

                        allGeo.Add(place);
                    }
                }
            }

            foreach (var place in places)
            {
                var exists = allGeo.Where(x => x.ID == place.ID).Any();

                Assert.AreEqual <bool>(true, exists);
            }
        }
Esempio n. 3
0
        private Address ConvertToAddress(GeoPlace place)
        {
            var address = new Address
            {
                Id           = Guid.NewGuid(),
                PlaceId      = place.Id,
                FriendlyName = place.Name,
                FullAddress  = place.Address.FullAddress,
                Latitude     = place.Address.Latitude,
                Longitude    = place.Address.Longitude,
                AddressType  = "place",
                City         = place.Address.City,
                State        = place.Address.State,
                ZipCode      = place.Address.ZipCode
            };

            if (address.FullAddress.HasValue() &&
                address.FullAddress.Contains("-"))
            {
                var firstWordStreetNumber = address.FullAddress.Split(' ')[0];
                if (firstWordStreetNumber.Contains("-"))
                {
                    int notImportant;
                    var isNumber = int.TryParse(firstWordStreetNumber.Split('-')[0].Trim(), out notImportant);

                    if (isNumber)
                    {
                        var newStreetNUmber = firstWordStreetNumber.Split('-')[0].Trim();
                        address.FullAddress = address.FullAddress.Replace(firstWordStreetNumber, newStreetNUmber);
                    }
                }
            }

            address.FullAddress = AddExtraFieldsToFullAddress(address);

            return(address);
        }