コード例 #1
0
        public List <Ulica> GetUlice(TerytModel.Teryt teryt)
        {
            var list = new List <Ulica>();

            foreach (var row in teryt.Ulic.Rows)
            {
                if (!_miejscowosciDictionary.ContainsKey(row.Sym))
                {
                    continue;
                }

                var miejscowosc = _miejscowosciDictionary[row.Sym];
                list.Add(new Ulica
                {
                    Cecha       = row.Cecha,
                    Nazwa1      = row.Nazwa1,
                    Nazwa2      = row.Nazwa2,
                    StanNa      = DateTime.Parse(row.StanNa),
                    Symbol      = row.SymUl,
                    Miejscowosc = miejscowosc
                });
            }

            return(list);
        }
コード例 #2
0
        public List <Gmina> GetGminy(TerytModel.Teryt teryt, List <Powiat> powiaty)
        {
            var list = new List <Gmina>();

            foreach (var row in teryt.Terc.Rows.Where(q => !string.IsNullOrWhiteSpace(q.Gmi)))
            {
                var county = powiaty.SingleOrDefault(r => r.Symbol == row.Pow && r.Wojewodztwo.Symbol == row.Woj);
                if (county == null)
                {
                    throw new TerytParserException($"Unable to find county {row.Pow} for commune {row.Gmi}");
                }
                list.Add(new Gmina
                {
                    Nazwa    = row.Nazwa,
                    Rodzaj   = row.NazDod,
                    RodzajId = row.Rodz,
                    StanNa   = DateTime.Parse(row.StanNa),
                    Symbol   = row.Gmi,
                    Powiat   = powiaty.Single(r => r.Symbol == row.Pow && r.Wojewodztwo.Symbol == row.Woj)
                });
            }

            // clean up
            var cityCommunes = list.Where(q => q.RodzajId == "3").ToList();

            foreach (var gm in cityCommunes)
            {
                list.RemoveAll(q => q.Symbol == gm.Symbol && q.Powiat.Symbol == gm.Powiat.Symbol && q.Powiat.Wojewodztwo.Symbol == gm.Powiat.Wojewodztwo.Symbol && q.RodzajId != "3");
            }

            return(list);
        }
コード例 #3
0
        public List <Wojewodztwo> GetWojewodztwa(TerytModel.Teryt teryt)
        {
            var list = new List <Wojewodztwo>();

            list.AddRange(teryt.Terc.Rows.Where(q => string.IsNullOrWhiteSpace(q.Pow)).Select(q => new Wojewodztwo
            {
                Nazwa  = q.Nazwa.ToLower(),
                StanNa = DateTime.Parse(q.StanNa),
                Symbol = q.Woj
            }));

            return(list);
        }
コード例 #4
0
        public List <Dzielnica> GetDzielnice(TerytModel.Teryt teryt)
        {
            var list = new List <Dzielnica>();

            list.AddRange(teryt.Simc.Rows.Where(q => q.Rm == "99").Select(q => new Dzielnica
            {
                Nazwa       = q.Nazwa,
                StanNa      = DateTime.Parse(q.StanNa),
                Symbol      = q.Sym,
                Miejscowosc = _miejscowosciDictionary[q.SymPod]
            }));

            return(list);
        }
コード例 #5
0
ファイル: TerytParser.cs プロジェクト: bpiec/teryt-parser
        public TerytModel.Teryt Parse(string path)
        {
            var teryt = new TerytModel.Teryt();

            var simcPath   = Path.Combine(path, "simc.xml");
            var tercPath   = Path.Combine(path, "terc.xml");
            var ulicPath   = Path.Combine(path, "ulic.xml");
            var wmRodzPath = Path.Combine(path, "wmrodz.xml");

            teryt.Simc   = ParseSimc(simcPath);
            teryt.Terc   = ParseTerc(tercPath);
            teryt.Ulic   = ParseUlic(ulicPath);
            teryt.WmRodz = ParseWmRodz(wmRodzPath);

            return(teryt);
        }
コード例 #6
0
        public List <Powiat> GetPowiaty(TerytModel.Teryt teryt, List <Wojewodztwo> wojewodztwa)
        {
            var list = new List <Powiat>();

            foreach (var row in teryt.Terc.Rows.Where(q => !string.IsNullOrWhiteSpace(q.Pow) && string.IsNullOrWhiteSpace(q.Gmi)))
            {
                var province = wojewodztwa.SingleOrDefault(r => r.Symbol == row.Woj);
                if (province == null)
                {
                    throw new TerytParserException($"Unable to find province {row.Woj} for county {row.Pow}");
                }
                list.Add(new Powiat
                {
                    Nazwa       = row.Nazwa,
                    Rodzaj      = row.NazDod,
                    StanNa      = DateTime.Parse(row.StanNa),
                    Symbol      = row.Pow,
                    Wojewodztwo = province
                });
            }

            return(list);
        }
コード例 #7
0
        public List <Miejscowosc> GetMiejscowosci(TerytModel.Teryt teryt, List <Gmina> gminy)
        {
            _miejscowosciDictionary = new Dictionary <string, Miejscowosc>();
            var list = new List <Miejscowosc>();

            list.AddRange(teryt.Simc.Rows.Where(q => q.Sym == q.SymPod).Select(q =>
            {
                var m = new Miejscowosc
                {
                    Nazwa         = q.Nazwa,
                    RodzajId      = q.Rm,
                    Rodzaj        = teryt.WmRodz.Rows.Single(r => r.Rm == q.Rm).NazwaRm,
                    StanNa        = DateTime.Parse(q.StanNa),
                    Symbol        = q.Sym,
                    Gmina         = gminy.Single(r => r.Symbol == q.Gmi && r.Powiat.Symbol == q.Pow && r.Powiat.Wojewodztwo.Symbol == q.Woj),
                    NazwaDzielnic = "dzielnica"
                };
                _miejscowosciDictionary.Add(q.Sym, m);
                return(m);
            }));

            return(list);
        }
コード例 #8
0
        public Lokalizacje Create(TerytModel.Teryt teryt, bool useNaturalDistricts)
        {
            var loc = new Lokalizacje
            {
                Wojewodztwa = GetWojewodztwa(teryt)
            };

            loc.Powiaty      = GetPowiaty(teryt, loc.Wojewodztwa);
            loc.Gminy        = GetGminy(teryt, loc.Powiaty);
            loc.Miejscowosci = GetMiejscowosci(teryt, loc.Gminy);
            loc.Dzielnice    = GetDzielnice(teryt);
            loc.Rejony       = new List <Rejon>();
            loc.Ulice        = GetUlice(teryt);

            if (useNaturalDistricts)
            {
                var cracow = loc.Miejscowosci.Single(q => q.Nazwa == "Kraków" && q.RodzajId == "96");
                cracow.NazwaRejonow = "część dzielnicy";
                var cracowDistricts = loc.Miejscowosci.Where(q => q.Gmina.Powiat.Wojewodztwo.Symbol == cracow.Gmina.Powiat.Wojewodztwo.Symbol && q.Gmina.Powiat.Symbol == cracow.Gmina.Powiat.Symbol && q.Symbol != cracow.Symbol).ToList();
                PrepareNonStandardDistrict(cracowDistricts, loc, cracow);
                AddCracowDistricts(loc, cracow);

                var poznan = loc.Miejscowosci.Single(q => q.Nazwa == "Poznań" && q.RodzajId == "96");
                poznan.NazwaDzielnic = "osiedle";
                var poznanDistricts = loc.Miejscowosci.Where(q => q.Gmina.Powiat.Wojewodztwo.Symbol == poznan.Gmina.Powiat.Wojewodztwo.Symbol && q.Gmina.Powiat.Symbol == poznan.Gmina.Powiat.Symbol && q.Symbol != poznan.Symbol).ToList();
                PrepareNonStandardDistrict(poznanDistricts, loc, poznan);
                AddPoznanDistricts(loc, poznan);

                var lodz = loc.Miejscowosci.Single(q => q.Nazwa == "Łódź" && q.RodzajId == "96");
                lodz.NazwaRejonow = "osiedle";
                var lodzDistricts = loc.Miejscowosci.Where(q => q.Gmina.Powiat.Wojewodztwo.Symbol == lodz.Gmina.Powiat.Wojewodztwo.Symbol && q.Gmina.Powiat.Symbol == lodz.Gmina.Powiat.Symbol && q.Symbol != lodz.Symbol).ToList();
                SetStandardDistricts(lodzDistricts, loc, lodz);

                var wroclaw = loc.Miejscowosci.Single(q => q.Nazwa == "Wrocław" && q.RodzajId == "96");
                wroclaw.NazwaRejonow = "osiedle";
                var wroclawDistricts = loc.Miejscowosci.Where(q => q.Gmina.Powiat.Wojewodztwo.Symbol == wroclaw.Gmina.Powiat.Wojewodztwo.Symbol && q.Gmina.Powiat.Symbol == wroclaw.Gmina.Powiat.Symbol && q.Symbol != wroclaw.Symbol).ToList();
                SetStandardDistricts(wroclawDistricts, loc, wroclaw);

                var warsaw = loc.Miejscowosci.Single(q => q.Nazwa == "Warszawa" && q.RodzajId == "96");
                warsaw.NazwaRejonow = "rejon";
                var warsawDistricts = loc.Miejscowosci.Where(q => q.Gmina.Powiat.Wojewodztwo.Symbol == warsaw.Gmina.Powiat.Wojewodztwo.Symbol && q.Gmina.Powiat.Symbol == warsaw.Gmina.Powiat.Symbol && q.Symbol != warsaw.Symbol).ToList();
                SetStandardDistricts(warsawDistricts, loc, warsaw);
            }

            // adjust ids
            var i = 1;

            loc.Wojewodztwa.ForEach(q => q.Lp = i++);
            i = 1;
            loc.Powiaty.ForEach(q => q.Lp = i++);
            i = 1;
            loc.Gminy.ForEach(q => q.Lp = i++);
            i = 1;
            loc.Miejscowosci.ForEach(q => q.Lp = i++);
            i = 1;
            loc.Dzielnice.ForEach(q => q.Lp = i++);
            i = 1;
            loc.Rejony.ForEach(q => q.Lp = i++);
            i = 1;
            loc.Ulice.ForEach(q => q.Lp = i++);

            return(loc);
        }