/// <summary>
        /// Enumerates through location code boundary features.
        /// </summary>
        /// <param name="quarterYear">A quarter year.</param>
        /// <param name="targetProjection">Optional. Provide to reproject from 2927.</param>
        /// <returns>Returns an <see cref="IEnumerable&lt;T&gt;"/> of <see cref="Feature"/> objects.</returns>
        public static IEnumerable<IFeature> EnumerateLocationCodeBoundaries(QuarterYear quarterYear, ProjectionInfo targetProjection = null)
        {
            var uri = new Uri(string.Format(_locCodeBoundariesShpUrlPattern, quarterYear.GetDateRange()[0], quarterYear.Quarter));
            // Get the path to the TEMP directory.
            string tempDirPath = Path.GetTempPath();
            string dir = Path.Combine(tempDirPath, Path.GetRandomFileName());
            DirectoryInfo dirInfo = Directory.CreateDirectory(dir);
            string shp_name = null;

            try
            {
                var client = new HttpClient();
                client.GetStreamAsync(uri).ContinueWith(st =>
                {
                    // Write the shapefile to a temporary location.
                    using (var zipArchive = new ZipArchive(st.Result, ZipArchiveMode.Read))
                    {
                        foreach (var entry in zipArchive.Entries)
                        {
                            using (var outfile = File.Create(Path.Combine(dir, entry.Name)))
                            using (var sourcefile = entry.Open())
                            {
                                sourcefile.CopyToAsync(outfile).Wait();
                            }
                            if (entry.Name.EndsWith(".shp", StringComparison.InvariantCultureIgnoreCase))
                            {
                                shp_name = Path.Combine(dir, entry.Name);
                            }
                        }
                    }
                }).Wait();

                foreach (var kvp in EnumerateLocationCodeBoundaries(shp_name, targetProjection))
                {
                    yield return kvp;
                }

            }
            finally
            {
                dirInfo.Delete(true);
            }
        }