Пример #1
0
        private object Run_FileExists(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 1);
            string path = Run <string>(list.items[1]);

            return(File.Exists(path));
        }
Пример #2
0
        private object Run_GetExtension(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 1);
            string path = Run <string>(list.items[1]);

            return(Path.GetExtension(path));
        }
Пример #3
0
        private object Run_SaveToFile(LispRuntimeCommand cmd, LispList list)
        {
            object objectToSave = Run <object>(list.items[1]);

            switch (objectToSave)
            {
            case Map m:
            {
                CheckParameterCount(cmd, list, 2);
                string path = Run <string>(list.items[2]);
                m.Save(path);
            }
            break;

            case Image im:
            {
                CheckParameterCount(cmd, list, 2);
                string path = Run <string>(list.items[2]);
                im.Save(path);
            }
            break;

            case int[] i:
            {
                CheckParameterCount(cmd, list, 2);
                string path = Run <string>(list.items[2]);
                i.Save(path);
            }
            break;
            }

            return(null);
        }
Пример #4
0
        private object Run_MakeImage(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 1);
            Map   map = Run <Map>(list.items[1]);
            Image img = new Image(map);

            return(img);
        }
Пример #5
0
        private object Run_CorrelationFilter(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 1);
            Map map         = Run <Map>(list.items[1]);
            Map filteredMap = HoleDetectFilters.CorrelationRun(this.Logger, map);

            return(filteredMap);
        }
Пример #6
0
        private object Run_LevelDetectFilter(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 1);
            Map map = Run <Map>(list.items[1]);

            double[] newMap = HoleDetectFilters.LevelDetect(this.Logger, map);
            return(newMap);
        }
Пример #7
0
        private object Run_MorphologicalFilter(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 1);
            Map map    = Run <Map>(list.items[1]);
            Map newMap = MorphologicalFilter.Filter(this.Logger, map);

            return(newMap);
        }
Пример #8
0
        private object Run_FindCavesByFlood(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 2);
            Map         map   = Run <Map>(list.items[1]);
            double      depth = Run <double>(list.items[2]);
            List <Cave> caves = CaveFinderAlgorithm.FindCaves(this.Logger, map, depth);

            return(caves);
        }
Пример #9
0
        private object Run_Echo(LispRuntimeCommand cmd, LispList list)
        {
            string output = string.Join(" ", list.items.Skip(1).Select(i => Run(i)).ToArray());

            lock (this)
                Console.WriteLine(output);

            return(null);
        }
Пример #10
0
        private object Run_MapDrainage(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 2);
            int c            = 1;
            Map map          = Run <Map>(list.items[c++]);
            int lookDistance = Run <int>(list.items[c++]);

            return(CaveFinderAlgorithm.MapDrainage(this.Logger, map, lookDistance));
        }
Пример #11
0
        private object Run_ChangeExtension(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 2);
            string path         = Run <string>(list.items[1]);
            string newExtension = Run <string>(list.items[2]);
            string newPath      = Path.ChangeExtension(path, newExtension);

            return(newPath);
        }
Пример #12
0
        private object Run_MapCalculateSlopeAngle(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 1);
            int           c   = 1;
            Map           map = Run <Map>(list.items[c++]);
            MapAlgorithms alg = new MapAlgorithms(Logger);

            return(alg.CalculateSlopeAngle(map));
        }
Пример #13
0
        private object Run_FillHoles(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 1);
            Map           map = Run <Map>(list.items[1]);
            MapAlgorithms alg = new MapAlgorithms(base.Logger);

            //alg.LinearFillMap(map);
            //alg.EdgeFillMapAlgorithm(map);
            return(alg.FillHole(map));
        }
Пример #14
0
        private object Run_DrawClassification(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 3);
            int c              = 1;
            var image          = Run <Image>(list.items[c++]);
            var map            = Run <Map>(list.items[c++]);
            var classification = Run <int>(list.items[c++]);

            image.DrawClassification(map, classification);
            return(null);
        }
Пример #15
0
        private object Run_GenerateMap(LispRuntimeCommand cmd, LispList list)
        {
            MapAlgorithms alg    = new MapAlgorithms(Logger);
            int           c      = 1;
            string        type   = Run <string>(list.items[c++]);
            int           width  = Run <int>(list.items[c++]);
            int           height = Run <int>(list.items[c++]);
            var           map    = alg.GenerateMap(type, width, height);

            return(map);
        }
Пример #16
0
        private object Run_EnumerateDirectory(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 3);

            int c = 1;

            string dir       = Run <string>(list.items[c++]);
            string pattern   = Run <string>(list.items[c++]);
            bool   recursive = Run <int>(list.items[c++]) == 1;

            return(Directory.EnumerateFiles(dir, pattern, recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly).ToArray());
        }
Пример #17
0
        private object Run_DrawCaves(LispRuntimeCommand cmd, LispList list)
        {
            int c = 1;

            CheckParameterCount(cmd, list, 2);
            Image       img   = Run <Image>(list.items[c++]);
            List <Cave> caves = Run <List <Cave> >(list.items[c++]);

            img.DrawCaves(caves, 1.0);

            return(null);
        }
Пример #18
0
        private object Run_DrawArray(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 4);
            int    c       = 1;
            Image  img     = Run <Image>(list.items[c++]);
            object arr     = Run(list.items[c++]);
            string color   = Run <string>(list.items[c++]);
            double opacity = Run <double>(list.items[c++]);

            img.DrawArray(img, arr, color, opacity);
            return(null);
        }
Пример #19
0
        private object Run_DrawHoles(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 5);
            int   c   = 1;
            Image img = Run <Image>(list.items[c++]);
            Map   map = Run <Map>(list.items[c++]);
            byte  r   = (byte)Run <int>(list.items[c++]);
            byte  g   = (byte)Run <int>(list.items[c++]);
            byte  b   = (byte)Run <int>(list.items[c++]);

            img.DrawHoles(map, r, g, b);
            return(null);
        }
Пример #20
0
        private object Run_SelectOne(LispRuntimeCommand cmd, LispList list)
        {
            if (list.items.Count < 2)
            {
                throw new LispParseException($"'{cmd.CommandName}' command expects more than 1 parameters. Line: {list.line}:{list.position}");
            }

            int index = Run <int>(list.items[1]);

            if (index >= list.items.Count - 2)
            {
                throw new LispParseException($"'{cmd.CommandName}' command index ({index}) parameter is a zero based and is out of range. Line: {list.line}:{list.position}");
            }

            return(Run(list.items[index - 2]));
        }
Пример #21
0
        private object Run_DrawElevationColor(LispRuntimeCommand cmd, LispList list)
        {
            int c = 1;

            CheckParameterCount(cmd, list, 4);
            Image img = Run <Image>(list.items[c++]);

            double[] map     = Run <double[]>(list.items[c++]);
            double   spacing = Run <double>(list.items[c++]);
            double   opacity = Run <double>(list.items[c++]);

            img.DrawElevationColor(img, map, spacing, opacity);


            return(null);
        }
Пример #22
0
        private object MapGeometricMeanFilter(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 2);
            int c   = 1;
            var map = Run <Map>(list.items[c++]);
            var N   = Run <int>(list.items[c++]);

            if (N % 2 != 1)
            {
                throw new ArgumentOutOfRangeException("N must be odd for GeometricMeanFilter");
            }

            var alg    = new MapAlgorithms(Logger);
            var newMap = alg.GeometricMeanFilter(map, N);

            return(newMap);
        }
Пример #23
0
        private object Run_DrawHillsideShade(LispRuntimeCommand cmd, LispList list)
        {
            int c = 1;

            CheckParameterCount(cmd, list, 6);
            Image img = Run <Image>(list.items[c++]);

            double[] map       = Run <double[]>(list.items[c++]);
            double   heading   = Run <double>(list.items[c++]);
            double   step      = Run <double>(list.items[c++]);
            double   intensity = Run <double>(list.items[c++]);
            double   opacity   = Run <double>(list.items[c++]);

            img.DrawHillshade(map, heading, step, intensity, opacity);

            return(null);
        }
Пример #24
0
        private object Run_MakeMap(LispRuntimeCommand cmd, LispList list)
        {
            if (list.items.Count < 3)
            {
                throw new LispParseException($"'{cmd.CommandName}' command must have at least 2 parameters. Line: {list.line}:{list.position}");
            }

            PointCloud pc       = Run <PointCloud>(list.items[1]);
            int        mapWidth = Run <int>(list.items[2]);

            HashSet <int> includedClassifications = new HashSet <int>();

            for (int i = 3; i < list.items.Count; i++)
            {
                includedClassifications.Add(Run <int>(list.items[i]));
            }

            MapAlgorithms alg = new MapAlgorithms(base.Logger);

            return(alg.ReadCloudIntoMap(mapWidth, pc, includedClassifications));
        }
Пример #25
0
        private object Run_ReadFile(LispRuntimeCommand cmd, LispList list)
        {
            CheckParameterCount(cmd, list, 1, 2);
            var path = Run <string>(list.items[1]);

            string ext = Path.GetExtension(path);

            switch (ext)
            {
            case ".las":
            {
                string defaultZone = Run <string>(list.items[2]);
                var    pointCloud  = new PointCloud(base.Logger);
                pointCloud.DefaultZone = defaultZone;
                pointCloud.LoadFromLas(path);
                return(pointCloud);
            }

            case ".cloud":
            {
                var pc = PointCloud.Load(path);
                return(pc);
            }

            case ".map":
            {
                var map = Map.Load(path, base.Logger);
                return(map);
            }

            case ".int":
            {
                var i = Extensions.LoadArray(path);
                return(i);
            }

            default:
                throw new InvalidOperationException("Can only support reading .las and .map files.");
            }
        }
Пример #26
0
 private object Run_DrawSlopeColor(LispRuntimeCommand cmd, LispList list)
 {
     return(null);
 }