public void ZacznijBudowacRekordObszarowy(string kod, string typ, string id, string idr, string st_obj) { var komponent = new RekordObszarowySwde(kod, typ, id, idr, st_obj); GetTop().DodajRekordObszarowy(komponent); _aktualneKomponenty.Push(komponent); }
/// <summary> /// Tworzy geometrię odpowiadającą rekordowi przestrzennemu, zwraca null jeżeli rekord jest nieprzestrzenny. /// </summary> internal static GeometriaSwde createGeometryOrNull(DokumentSwde dokument, RekordSwdeBase rekord) { GeometriaSwde geometria = null; if (rekord is RekordPunktowySwde) { RekordPunktowySwde rekordPunktowy = rekord as RekordPunktowySwde; geometria = new PunktSwde(rekordPunktowy, dokument.Geodezyjny); geometria._punktyGraniczne = GetPunktyGraniczne(dokument, rekordPunktowy, out geometria._punktyNiegraniczne); } else if (rekord is RekordLiniowySwde) //Liniowym elementem jest tylko granica. { RekordLiniowySwde rekordLiniowy = rekord as RekordLiniowySwde; geometria = new MultiLiniaSwde(rekordLiniowy, dokument.Geodezyjny); geometria._punktyGraniczne = GetPunktyGraniczne(dokument, rekordLiniowy, out geometria._punktyNiegraniczne); } else if (rekord is RekordObszarowySwde) { RekordObszarowySwde rekordObszarowy = rekord as RekordObszarowySwde; geometria = new MultiObszarSwde(rekordObszarowy, dokument.Geodezyjny); geometria._punktyGraniczne = GetPunktyGraniczne(dokument, rekordObszarowy, out geometria._punktyNiegraniczne); } return(geometria); }
private static ObiektSwde[] GetPunktyGraniczne(DokumentSwde dokument, RekordObszarowySwde rekordObszarowy, out int punktyNiegraniczne) { List <ObiektSwde> punktyGraniczne = new List <ObiektSwde>(); HashSet <RekordId> rekordyDodane = new HashSet <RekordId>(); punktyNiegraniczne = 0; foreach (var obszar in rekordObszarowy.Obszary) { foreach (var pozycja in obszar.Segmenty) { if (pozycja is PozycjaIdSwde || pozycja is PozycjaIdrSwde) { RekordSwdeBase rekord = pozycja.Rekord; if (rekordyDodane.Add(rekord.Identyfikator)) { punktyGraniczne.Add(dokument.createObiekt(rekord)); } } else { punktyNiegraniczne++; } } } return(punktyGraniczne.ToArray()); }
internal MultiObszarSwde(RekordObszarowySwde rekord, bool geod) { _obszary = new List <ObszarSwde>(); ObszarSwde aktualnyObszar = null; //Jeżeli komponent jest konturem zewnętrznym to tworzymy nowy obszar i dodajemy do listy obszarów. //Jeżeli komponent jest konturem wewnętrznym to dodajemy go do ostatniego obszaru. foreach (RekordObszarSwde obszar in rekord.Obszary) { if (obszar.KonturZewnetrzny) { _obszary.Add(aktualnyObszar = new ObszarSwde(obszar, geod)); } else { //aktualnyObszar is not null aktualnyObszar.DodajEnklawa(new LiniaSwde(obszar, geod)); } } }
public virtual void DodajRekordObszarowy(RekordObszarowySwde komponent) { KontrolerKontekstu.Zapewnij(false, GetPrzyczynaDla(komponent.GetType())); }
public override void DodajRekordObszarowy(RekordObszarowySwde komponent) { DodajRekord(komponent); }