Пример #1
0
        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());
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
 internal ObiektSwde(DokumentSwde dokument, RekordSwdeBase rekord)
 {
     _dokument = dokument;
     _rekord   = rekord;
     //_geometria = GeometriaSwde.createGeometryOrNull(dokument, rekord);
     _id = new ObiektId(_rekord.Identyfikator);
 }
Пример #4
0
 private static ObiektSwde[] GetPunktyGraniczne(DokumentSwde dokument, RekordPunktowySwde rekordPunktowy, out int punktyNiegraniczne)
 {
     punktyNiegraniczne = 0;
     return(new ObiektSwde[0]);
 }