private static ObiektSwde[] GetPunktyGraniczne(DokumentSwde dokument, RekordLiniowySwde rekordLiniowy, out int punktyNiegraniczne) { List <ObiektSwde> punktyGraniczne = new List <ObiektSwde>(); HashSet <RekordId> rekordyDodane = new HashSet <RekordId>(); punktyNiegraniczne = 0; foreach (var linia in rekordLiniowy.Linie) { foreach (var pozycja in linia.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()); }
/// <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); }
internal ObiektSwde(DokumentSwde dokument, RekordSwdeBase rekord) { _dokument = dokument; _rekord = rekord; //_geometria = GeometriaSwde.createGeometryOrNull(dokument, rekord); _id = new ObiektId(_rekord.Identyfikator); }
private static ObiektSwde[] GetPunktyGraniczne(DokumentSwde dokument, RekordPunktowySwde rekordPunktowy, out int punktyNiegraniczne) { punktyNiegraniczne = 0; return(new ObiektSwde[0]); }