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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }