Example #1
0
        /// <summary>
        /// .NET の GC に任せる。
        /// こんなコード、通常は構造体を使ってやるけども、そこをあえてクラスにするとどのくらいの負担か見てみる。
        ///
        /// <see cref="Struct(int)"/>の7倍くらいの遅さ。
        /// スタック(構造体利用)とヒープ(クラス利用)で1桁も差が付かないのは相当速い部類。
        /// 一般に、Mark and Sweep でGC管理されてるヒープは確保のコスト低い。
        /// </summary>
        public static (int x, int y) GarbageCollection(int loops)
        {
            var p = new ClassPoint(1, 2);

            for (int i = 0; i < loops; i++)
            {
                p = new ClassPoint(p.Y, p.X + p.Y);
            }
            return(p.X, p.Y);
        }
        public void AssignmentReferenceypeInstance()
        {
            ClassPoint p1 = new ClassPoint();

            p1.X = 7;
            ClassPoint p2 = p1;

            Console.WriteLine(p1.X);
            Console.WriteLine(p2.X);

            p1.X = 9;
            Assert.AreEqual(9 + 9, p2.X + p1.X);
        }
        public void ElementReferenceTypeExplicitlyInstantiate()
        {
            //arrange
            ClassPoint[] a = new ClassPoint[1000];

            //act
            for (int i = 0; i < a.Length; i++)
            {
                a[i] = new ClassPoint();
            }

            int x = a[500].X;

            //assert
            Assert.AreEqual(0, x);
        }
        public void ElementReferenceType()
        {
            //arrange
            ClassPoint[] a = new ClassPoint[1000];

            //act & assert
            try
            {
                int x = a[500].X;

                Assert.Fail("no exception thrown");
            }
            catch (Exception ex)
            {
                Assert.IsTrue(ex.Message == "Object reference not set to an instance of an object.");
            }
        }
 public static double GetMahalanobisDistance(Point pointOne, ClassPoint pointTwo)
 {
     return 1;
 }
Example #6
0
 public static double GetMahalanobisDistance(Point pointOne, ClassPoint pointTwo) // te cale jast napisane na 2 wymiarowe i KNearestNeighboursNColumsService trzeba sie bawic bo tam dla roznych
 {
     return(1);
 }
Example #7
0
 public static double GetInfinityDistance(Point pointOne, ClassPoint pointTwo) // chebyshev distance // odległość czebyszewa
 {
     return(Math.Max(Math.Abs(pointOne.X - pointTwo.columnX), Math.Abs(pointOne.Y - pointTwo.columnY)));
 }
Example #8
0
 public static double GetManhattanDistance(Point pointOne, ClassPoint pointTwo)
 {
     return((Math.Abs(pointOne.X - pointTwo.columnX)) + (Math.Abs(pointOne.Y - pointTwo.columnY)));
 }
Example #9
0
 public static double GetEuclideanDistance(Point pointOne, ClassPoint pointTwo)
 {
     return(Math.Sqrt((Math.Pow(pointOne.X - pointTwo.columnX, 2) + (Math.Pow(pointOne.Y - pointTwo.columnY, 2)))));
 }
Example #10
0
        private void InitDockLayout()
        {
            _mapForm      = new ControlMapForm();
            _mapForm.Text = "GIS地图";
            _mapForm.Show(dockPanel1, DockState.Document);
            _mapForm.CloseButton = false;
            _mapForm.UiInitAndInvoke();
            _mapForm.Activate();



            MouseMoveOperator mouseMoveOperate;
            MouseDownOperator mouseDownOperate;

            sfHandle = new ShapeFileHandle(_mapForm.Map);

            #region 加载gis地图
            string[] str = { @"D:\光纤传感监测系统\Monitor\Monitor\data\底图.shp", @"D:\光纤传感监测系统\Monitor\Monitor\data\省界WGS 84.shp", @"D:\光纤传感监测系统\Monitor\Monitor\data\海缆WGS 84.tif" };
            mapLayer        = new MapLayer();
            MainLayerHandle = mapLayer.AddLayer(_mapForm.Map, str, "底图");

            _mapForm.MainLayerHandle = MainLayerHandle;
            _mapForm.SetMainLayerHandle();
            #endregion


            //	_mapForm.Map.ZoomToMaxExtents();
            _mapForm.Map.ZoomToLayer(MainLayerHandle);



            #region  在地图上划线
            ClassLine line      = new ClassLine();
            ClassLine line_1    = new ClassLine();
            GisPoint  gisPoint  = new GisPoint();
            LineSet   lineSet   = new LineSet(tkMapColor.Yellow, 6.0f, tkDashStyle.dsSolid);
            LineSet   lineSet_1 = new LineSet(tkMapColor.Red, 5.0f, tkDashStyle.dsCustom);
            gisPoint.connectToDB("Data Source=" + new DirectoryInfo("../../../../").FullName + "Monitor\\Monitor\\data\\data.db");
            gisPoint.readData();
            gisPoint.InitLineData(line);
            line_1.startX = gisPoint.m_PointList[15].X;
            line_1.startY = gisPoint.m_PointList[15].Y;
            line_1.endX   = gisPoint.m_PointList[20].X;
            line_1.endY   = gisPoint.m_PointList[20].Y;

            drawLine = new classDrawLine(_mapForm.Map);
            drawLine.WriteLine(line, lineSet);
            drawLine.WriteLine(line_1, lineSet_1);
            #endregion

            #region   在gis地图中添加ais数据
            //1、获取数据库中数据
            SqliteData sqlite = new SqliteData("Data Source=" + new DirectoryInfo("../../../../").FullName +
                                               "Monitor\\Monitor\\data\\data.db");
            DataTable gisData = sqlite.readData("Point");

            //2、实例化AISData类
            ais           = new AISData(_mapForm.Map, gisData);
            drawPoint_Ais = new classDrawPoint(MapForm.Map);

            //3、在地图上加载ais数据
            pointSet = new PointSet("AisReal", tkDefaultPointSymbol.dpsTriangleUp, tkMapColor.Red, 16);
            drawPoint_Ais.CreatPoint(ais.point, pointSet);
            drawPoint_Ais.EditAttribute();
            sfHandle.AddMouseMoveShapeFile("Ais", drawPoint_Ais.LayerHandle);
            #endregion


            #region
            drawPoint = new classDrawPoint(_mapForm.Map);
            var pnt = new ClassPoint();
            pnt.x   = 121.907567728461;
            pnt.y   = 30.8729913928844;
            pnt.str = "图片详情";
            string path = new DirectoryInfo("../../../../").FullName + "Monitor\\Monitor\\data\\ship3.png";
            drawPoint.AddPicture(pnt, path);
            drawPoint.EditAttribute();
            sfHandle.AddMouseDownShapeFile("pic", drawPoint.LayerHandle);
            #endregion


            _mapForm.Sf_MouseMove = sfHandle.Sf_MouseMove;
            _mapForm.Sf_MouseDown = sfHandle.Sf_MouseDown;


            mouseMoveOperate = new MouseMoveOperator(Operation.AddLabel);
            mouseDownOperate = new MouseDownOperator(Operation.AddLabel);

            //传入委托
            MapForm.MouseMoveOperate = mouseMoveOperate;
            MapForm.mouseDownOperate = mouseDownOperate;

            //var point = new ClassPoint();
            //point.x = 121.907567728461;
            //point.y = 30.8739913928844;
            //addText = new classAddText(_mapForm.Map, MainLayerHandle);
            //addText.AddText(point.x, point.y);
        }