예제 #1
0
        private bool zaleznoscOFUiOZUiOZKdlaR()
        {
            if (!OZU.HasValue)
            {
                return(true);
            }
            if (!OZK.HasValue)
            {
                return(true);
            }
            EGB_OZU ozu = OZU.Value;
            EGB_OZK ozk = OZK.Value;

            //Przyjęcie przez OFU wartości:
            //('R' lub 'S' lub 'Br' lub 'Wsr' lub 'W' lub 'Lzr' lub 'E?' lub 'E-Lz' lub 'E-W')
            //i przez OZU wartości 'R' powoduje,
            //że OZK może przyjąć jedną z wartości ('I' lub 'II' lub 'IIIa' lub 'IIIb' lub 'IVa' lub 'IVb' lub 'V' lub 'VI' lub 'VIz').
            if (ofuDlaR(OFU))
            {
                if (ozu.Equals("R"))
                {
                    if (!ozkDlaR(ozk))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
예제 #2
0
        public bool zaleznoscOFUiOZUiOZKnieR()
        {
            if (!OZU.HasValue)
            {
                return(true);
            }
            if (!OZK.HasValue)
            {
                return(true);
            }
            EGB_OZU ozu = OZU.Value;
            EGB_OZK ozk = OZK.Value;

            //Przyjęcie przez OFU wartości:
            //('Ł' lub 'Ps' lub 'S' lub 'Br' lub 'Wsr' lub 'W' lub 'Lzr' lub 'E' lub 'E-Lz' lub 'E-W')
            //i przez OZU wartości: ('Ł' lub 'Ps') lub przyjęcie przez OFU wartości ('Ls' lub 'E-Ls')
            //i przez OZU wartości 'Ls' lub przyjęcie przez OFU wartości ('Lz' lub 'E-Lz')
            //i przez OZU wartości 'Lz' powoduje,
            //że OZK może przyjąć jedną z wartości ('I' lub 'II' lub 'III' lub 'IV' lub 'V' lub 'VI').

            /*inv:
             * if (OFU='Ł' or OFU='Ps' or OFU='S' or OFU='Br' or OFU='Wsr' or OFU='W' or OFU='Lzr' or OFU='E?' or OFU='E-Lz' or OFU='E-W')
             * and (OZU='Ł' or OZU='Ps') or ((OFU='Ls' or OFU='E-Ls') and (OZU='Ls')) or ((OFU='Lz' or OFU='E-Lz') and (OZU='Lz'))
             * implies (OZK='I' or OZK='II' or OZK='III' or OZK='IV' or OZK='V' or OZK='VI')*/
            if (ofuNieR(OFU))
            {
                if (ozu.Equals("Ł") || ozu.Equals("Ps"))
                {
                    if (!ozkNieR(ozk))
                    {
                        return(false);
                    }
                }
                if (ozu.Equals("Ls") && (OFU.Equals("Ls") || OFU.Equals("E-Ls")))
                {
                    if (!ozkNieR(ozk))
                    {
                        return(false);
                    }
                }
                if (ozu.Equals("Lz") && (OFU.Equals("Lz") || OFU.Equals("E-Lz")))
                {
                    if (!ozkNieR(ozk))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
예제 #3
0
        int readKontury(DokumentSwde swde)
        {
            List <IGeometry> geometrie = new List <IGeometry>();
            var kontury = swde.GetObiektyKlasy("G5KKL");

            foreach (var klu in kontury)
            {
                string       g5idk        = klu.GetAtrybut("G5IDK");
                string       g5ozu        = klu.GetAtrybut("G5OZU");
                string       g5ofu        = string.Empty;
                string       g5ozk        = klu.GetAtrybut("G5OZK");
                string       g5pew        = klu.GetAtrybut("G5PEW");
                Powierzchnia powierzchnia = Powierzchnia.parseMetry(g5pew);
                if (string.IsNullOrEmpty(g5ozk))
                {
                    //użytek
                    g5ofu = g5ozu;
                    g5ozu = string.Empty;
                }
                else
                {
                    //kontur klasyfikacyjny
                    g5ofu = g5ozu;
                    string[] split = g5ofu.Split(new char[] { '-' }, 3);
                    switch (split.Length)
                    {
                    case 2:
                        g5ofu = split[0];
                        g5ozu = split[1];
                        if (g5ofu.Equals("E"))     //nie dziel E
                        {
                            g5ofu = split[0] + '-' + split[1];
                            g5ozu = split[1];
                        }
                        break;

                    case 3:
                        g5ofu = split[0] + "-" + split[1];
                        g5ozu = split[2];
                        break;

                    default: break;
                    }
                }
                string oznString = string.Format("{4}\t{0}\t{1}\t{2}\t{3}", g5ofu, g5ozu, g5ozk, g5pew, g5idk);
                Logger.write(oznString);
                EGB_OFU ofu = new EGB_OFU(g5ofu);
                EGB_OZU?ozu = null;
                if (!string.IsNullOrEmpty(g5ozu))
                {
                    ozu = new EGB_OZU(g5ozu);
                }
                EGB_OZK?ozk = null;
                if (!string.IsNullOrEmpty(g5ozk))
                {
                    ozk = new EGB_OZK(g5ozk);
                }
                EGB_OznaczenieKlasouzytku ozn = new EGB_OznaczenieKlasouzytku(ofu, ozu, ozk);
                ozn.walidujOgraniczenia();
                //Console.WriteLine(g5idk);
                string           wkt       = klu.Geometria.NaWkt();
                GeometriaObiektu geometria = new GeometriaObiektu(wkt);
                try
                {
                    geometria.overlaps(geometrie);
                }
                catch (Exception ex)
                {
                    Logger.writeBłąd(ex.Message + ":" + wkt);
                }
                geometrie.Add(geometria.geometry());
            }
            return(kontury.Count());
        }