public void AddCities() { Towns = new WebClient().DownloadString( "https://raw.githubusercontent.com/Gibbs/UK-Postcodes/master/postcodes.csv") .Split('\r', '\n') .Skip(1) .Where(s => s != "") .Select(s => s.Split(',')) .Select(s => new Place(s[0].Trim('\"'), int.Parse(s[1].Trim('\"')), int.Parse(s[2].Trim('\"')), s[3].Trim('\"'), s[4].Trim('\"'), s[5].Trim('\"'), s[6].Trim('\"'), s[7].Trim('\"'), s[8].Trim('\"'))).GroupBy(x => x.town) .Select(grouping => grouping.First()) .ToArray() ; _index = new SpatialIndex <Place>(); _index.init(); foreach (var place in Towns) { var point = place.MakePoint(); _index.add(new Rectangle(point.x, point.y, point.x + 1, point.y + 1), place); } }