public static IdentyfikatorDzialki parseG5(string g5idd) { //D,G5IDD,D,142302_2.0001.296 //D,G5IDD,D,142302_2.0007.AR_2.656 //<teryt>.<obr>.[arkusz].<idd> char[] separator = new char[] { '.' }; string[] pola = g5idd.Split(separator); int maxFields = 4; int minFields = 3; Kontrakt.assert(pola.Length >= minFields && pola.Length <= maxFields); string numerTeryt = pola[0]; string numerObrebu = byte.Parse(pola[1]).ToString(); string numerDzialki = pola[pola.Length - 1]; string numerArkusza = string.Empty; if (pola.Length == 4) { numerArkusza = pola[2].Replace("AR_", ""); } if (!string.IsNullOrEmpty(numerArkusza)) { numerDzialki = numerArkusza + "." + numerDzialki; } return(new IdentyfikatorDzialki(numerObrebu, numerDzialki)); }
public void Wczytaj(string fileName) { //_klu.read(Path.Combine(Path.GetDirectoryName(fileName), "uzytkiG5.csv")); var lines = File.ReadAllLines(path: fileName, encoding: _kodowanie); var header = lines.First(); Kontrakt.assert( header.Equals("Rozliczenie konturów klasyfikacyjnych na działkach [m^2]"), "Nieprawidłowy nagłówek pliku z rozliczeniem konturów."); var wczytaneDziałki = 0; var rekordDziałki = new List <string>(); for (int i = 1; i < lines.Length; i++) { var trimmedLine = lines[i].Trim(); if (KoniecRekorduDziałki(rekordDziałki, trimmedLine)) { WczytajRekordDziałki(_rozliczenie, rekordDziałki); wczytaneDziałki++; } else { //Kumulacja rekordu działki wraz z użytkami. if (!String.IsNullOrEmpty(trimmedLine)) { rekordDziałki.Add(trimmedLine); } } } Kontrakt.ensures(rekordDziałki.Count == 0, "Nieprawidłowo zakończony rekord działki"); Kontrakt.ensures(_rozliczenie.Any()); Kontrakt.ensures(wczytaneDziałki == _rozliczenie.Count()); }
public static bool uległaZmianie(this Działka staraDzialka, Działka nowaDzialka) { if (!nowaDzialka.Powierzchnia.Equals(staraDzialka.Powierzchnia)) { return(true); //niezgodna powierzchnia działki } if (nowaDzialka.Count() != staraDzialka.Count()) { return(true); //niezgodna liczba użytków } var użytki = staraDzialka.UnionUżytki(nowaDzialka); foreach (var użytek in użytki) { Klasoużytek stary = staraDzialka.SzukajUżytku(użytek); Klasoużytek nowy = nowaDzialka.SzukajUżytku(użytek); if (stary == null || nowy == null) { return(true); //dodany/usunięty użytek } Powierzchnia stara = stary.powierzchnia(); Powierzchnia nowa = nowy.powierzchnia(); if (!nowa.Equals(stara)) { return(true); //inna powierzchnia użytków } //if (nowa.powyzejOdchylki(stara)) return true; //powyżej odchyłki Kontrakt.assert(stary.Equals(nowy), "Różne oznaczenie użytku: " + stary.ToString()); } return(false); }
public void read(string fileName) { //OZN,OFU,OZU,OZK,OPIS,OFUst,OZUst,OZKst, //"B","B",,,"Tereny mieszkaniowe",,"B",, string[] lines = File.ReadAllLines(fileName, Encoding.GetEncoding(1250)); string header = lines.First(); Kontrakt.assert(header.StartsWith("OZN,OFU,OZU,OZK,OPIS")); var query = from line in lines.Skip(1) let split = line.Replace("\"", "").Replace("\'", "").Split(',') select new { ozn = split[0], ofu = split[1], ozu = split[2], ozk = split[3] }; foreach (var tuple in query) { string[] ooo = new string[] { tuple.ofu, tuple.ozu, tuple.ozk }; _oznaczenia.Add(tuple.ozn, ooo); _klu.Add(join(ooo), tuple.ozn); } }
public IEnumerable <DzialkaEwidencyjna> działki() { var powierzchnia = new Powierzchnia(1); foreach (var dze in _dokument.GetObiektyKlasy("G5DZE")) { var g5idd = dze.GetAtrybut("G5IDD"); var id = IdentyfikatorDzialki.parseG5(g5idd); var działka = new DzialkaEwidencyjna(id, powierzchnia); //Nie dodawaj do działki punktów jeżeli choć jeden jest niegraniczny, aby wymusić status "nieznany" dla działki. if (dze.Geometria.countPunktyNiegraniczne() == 0) { Kontrakt.assert(działka.countPunkty() == 0, "Do działki były już importowane punkty."); ObiektSwde[] punktySwde = dze.Geometria.PunktyGraniczne; foreach (var punktSwde in punktySwde) { string g5zrd = punktSwde.GetAtrybut("G5ZRD"); string g5bpp = punktSwde.GetAtrybut("G5BPP"); var punkt = new PunktGraniczny(g5zrd, g5bpp); ObiektSwde operat = punktSwde.GetRelacja("G5RKRG"); string g5syg = operat.GetAtrybut("G5SYG"); punkt.operat(g5syg); działka.dodajPunkt(punkt); } } yield return(działka); } }
public IEnumerable <DzialkaEwidencyjna> dzialkiDotychczasowePodzielone() { Dictionary <string, DzialkaEwidencyjna> podzieloneDzialki = new Dictionary <string, DzialkaEwidencyjna>(); List <DzialkaEwidencyjna> posortowaneDzialki = new List <DzialkaEwidencyjna>(); foreach (var dzialka in this) { //Pomiń działki bez zdefiniowanej działki ewidencyjnej. if (!dzialka.przypisanaDotychczasowa()) { continue; } DzialkaEwidencyjna dzialkaDotychczasowa = dzialka.dzialkaDotychczasowa(); //Pomiń działki niepodzielone. if (dzialkaDotychczasowa.countPodzielone() == 0) { continue; } //Działka nowa powinna mieć inny identyfikator niż działka dotychczasowa! Kontrakt.assert(!dzialka.identyfikator().Equals(dzialkaDotychczasowa.identyfikator()), "Identyfikator nowej działki jest taki sam jak dotychczasowej."); string idPodzielona = dzialkaDotychczasowa.identyfikator().ToString(); if (!podzieloneDzialki.ContainsKey(idPodzielona)) { podzieloneDzialki.Add(idPodzielona, dzialkaDotychczasowa); posortowaneDzialki.Add(dzialkaDotychczasowa); } } return(posortowaneDzialki); }
void wczytajPlik(string fileName) { _fileName = fileName; _doc = DocX.Load(fileName); Kontrakt.assert(_doc.Tables.Any(), "Szablon wykazu zmian nie zawiera żadnych tabel."); _table = _doc.Tables.First(); _templateRow = _table.Rows.Last(); wczytajNagłówek(); }
private bool operatowePunkty(DzialkaEwidencyjna dzialka) { foreach (var punkt in dzialka.punkty()) { Kontrakt.assert(punkt.rodzaj().zPomiaru()); string operat = punkt.operat(); if (!operaty.Contains(operat)) { return(false); } } return(true); }
public void dodajKlasouzytek(Klasouzytek klasouzytek) { Kontrakt.requires(klasouzytek != null); int countPrzed = countKlasouzytki(); foreach (var uzytek in _klasouzytki) { Kontrakt.assert(!uzytek.Equals(klasouzytek), "W działce " + identyfikator().ToString() + " już jest klasoużytek " + klasouzytek); } _klasouzytki.Add(klasouzytek); int countPo = countKlasouzytki(); Kontrakt.ensures(countPrzed + 1 == countPo); }
/// <summary> /// D,G5IJR,D, /// 142307_2.0001.G00001 /// 281407_2.0005.B1 /// </summary> /// <param name="g5ijr"></param> /// <returns></returns> public static JednostkaRejestrowa ParseG5(string g5ijr) { char[] separator = new char[] { '.' }; string[] pola = g5ijr.Split(separator); int maxFields = 3; int minFields = 3; Kontrakt.assert(pola.Length >= minFields && pola.Length <= maxFields, "Nieprawidłowy format identyfikatora jednostki rejestrowej: " + g5ijr); string numerTeryt = pola[0]; string numerObrebu = pola[1]; string numerJednostki = pola[2]; //int numer = int.Parse(numerJednostki.Replace("G", String.Empty)); return(new JednostkaRejestrowa(numerTeryt, numerObrebu, numerJednostki)); }
protected bool?pomierzonePunkty(DzialkaEwidencyjna dzialka) { List <PunktGraniczny> nieznane = new List <PunktGraniczny>(); List <PunktGraniczny> operatowe = new List <PunktGraniczny>(); List <PunktGraniczny> wektoryzacja = new List <PunktGraniczny>(); int innePunkty = 0; foreach (var punkt in dzialka.punkty()) { RodzajPunktu rodzaj = punkt.rodzaj(); if (rodzaj.nieznany()) { nieznane.Add(punkt); } else if (rodzaj.zWektoryzacji()) { wektoryzacja.Add(punkt); } else if (rodzaj.zPomiaru()) { operatowe.Add(punkt); } else { innePunkty++; } } Kontrakt.assert(innePunkty == 0); if (nieznane.Count > 0) { return(null); } if (wektoryzacja.Count > 0) { return(false); } if (operatowe.Count > 0) { return(true); } return(null); }
public override Rozliczenie read(string fileName) { _klu = new FabrykaKlasouzytku(); _klu.read(Path.Combine(Path.GetDirectoryName(fileName), "uzytkiG5.csv")); Kontrakt.requires(File.Exists(fileName)); string[] lines = File.ReadAllLines(fileName, Encoding.GetEncoding(1250)); string headerLine = lines[0]; Kontrakt.assert( headerLine.Equals("Rozliczenie konturów klasyfikacyjnych na działkach [m^2]"), "Nieprawidłowy nagłówek pliku z rozliczeniem konturów."); Rozliczenie rozliczenie = new Rozliczenie(_rodzajDzialki, _klu); int wczytaneDzialki = 0; List <string> rekordDzialki = new List <string>(); for (int i = 1; i < lines.Length; i++) { string linia = lines[i].Trim(); if (koniecRekorduDzialki(rekordDzialki, linia)) { readRekordDzialki(rozliczenie, rekordDzialki); wczytaneDzialki++; } else { //Kumulacja rekordu działki wraz z użytkami. if (!String.IsNullOrEmpty(linia)) { rekordDzialki.Add(linia); } } } Kontrakt.ensures(rozliczenie != null); Kontrakt.ensures(rekordDzialki.Count == 0, "Nieprawidłowo zakończony rekord działki"); Kontrakt.ensures(rozliczenie.Count() > 0); Kontrakt.ensures(wczytaneDzialki == rozliczenie.Count()); return(rozliczenie); }
public void Wczytaj(string fileName) { var lines = File.ReadAllLines(fileName, Encoding.GetEncoding(1250)); var header = lines.First(); //OZN,OFU,OZU,OZK,OPIS,OFUst,OZUst,OZKst, Kontrakt.assert(header.StartsWith("OZN,OFU,OZU,OZK,OPIS")); var query = //"B","B",,,"Tereny mieszkaniowe",,"B",, from line in lines.Skip(1) let split = line.Replace("\"", "").Replace("\'", "").Split(',') select new { ozn = split[0], ofu = split[1], ozu = split[2], ozk = split[3] }; foreach (var tuple in query) { _słownik.Dodaj(tuple.ozn, tuple.ofu, tuple.ozu, tuple.ozk); } }
public string toAry() { Kontrakt.assert(hektary().ToString("F4").EndsWith("00")); return(hektary().ToString("F2")); }