• 大小: 49KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2022-09-19
  • 语言: 其他
  • 标签:

资源简介

利用道格拉斯普克法实现GIS压缩算法,处理效率高,考虑全面

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace 道格拉斯_普克法
{
    public partial class Form1 : Form
    {
        struct Point
        {
            internal double X;
            internal double Y;
            internal int index;
        };
        ArrayList myPoint = new ArrayList();   //矢量点集
        ArrayList newPoint = new ArrayList();  //压缩后点集
        ArrayList inferPOint = new ArrayList();  //特征点集
        public Form1()
        {
            InitializeComponent();
        }

        int i = 0;
        private void pictureBox1_MouseDown(object sender MouseEventArgs e)
        {
            Point temp = new Point();
            if (e.Button == MouseButtons.Left)
            {
                temp.X = e.X;
                temp.Y = e.Y;
                temp.index = i;
                myPoint.Add(temp);
            }
            Graphics g = pictureBox1.CreateGraphics();
            SolidBrush sb = new SolidBrush(Color.Black);
            Pen mypen = new Pen(sb 2f);
            g.DrawLine(mypen (int)temp.X (int)temp.Y (int)temp.X + 3 (int)temp.Y);
            mypen.Dispose();
            sb.Dispose();
            i++;
        }


        //压缩算法
        private void button1_Click(object sender EventArgs e)
        {
            //由起点和终点建立直线方程Ax+By+C=0
            //直线方程参数
            object o=myPoint[0];
            Point startPoint = (Point)o;
            o = myPoint[myPoint.Count - 1];
            Point endPoint = (Point)o;
            newPoint.Add(startPoint);
            double A = (startPoint.Y - endPoint.Y) / (Math.Pow((endPoint.Y - startPoint.Y) 2) + Math.Pow((endPoint.X - startPoint.X) 2));
            double B = (endPoint.X - startPoint.X) / (Math.Pow((endPoint.Y - startPoint.Y) 2) + Math.Pow((endPoint.X - startPoint.X) 2));
            double C = (startPoint.X * endPoint.Y - endPoint.X * startPoint.Y) / (Math.Pow((endPoint.Y - startPoint.Y) 2) + Math.Pow((endPoint.X - startPoint.X) 2));

            //求曲线上各点到弦线的距离
            double ε = 0.1;  //阀值
            bool Q;
            double maxdh = 0;
            Point maxPoint = new Point();  //记录距离最大点(中间特征点)
            Point maxPoint1 = new Point();  //临时距离最大点
            foreach (object o1 in myPoint)
            {
                double dh;
                Point temp = (Point)o1;
                dh = Math.Abs(A * temp.X + B * temp.Y + C);
                if (maxdh < dh)
                {
                    maxdh = dh;
                    maxPoint1 = temp;
                } 
            }
            if (maxdh <= ε)
            {
                Q = false;
            }
            else 
            { 
                Q = true;
                maxPoint = maxPoint1;
                endPoint = maxPoint;
            }

 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2010-10-29 23:59  道格拉斯—普克法\
     目录           0  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\
     文件         962  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法.sln
     文件       16384  2010-12-10 10:47  道格拉斯—普克法\道格拉斯—普克法.suo
     目录           0  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\bin\
     目录           0  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\bin\Debug\
     文件       12288  2010-11-01 12:15  道格拉斯—普克法\道格拉斯—普克法\bin\Debug\道格拉斯—普克法.exe
     文件       30208  2010-11-01 12:15  道格拉斯—普克法\道格拉斯—普克法\bin\Debug\道格拉斯—普克法.pdb
     文件       14328  2010-12-10 10:43  道格拉斯—普克法\道格拉斯—普克法\bin\Debug\道格拉斯—普克法.vshost.exe
     文件         490  2007-07-21 01:33  道格拉斯—普克法\道格拉斯—普克法\bin\Debug\道格拉斯—普克法.vshost.exe.manifest
     文件        7645  2010-10-30 19:35  道格拉斯—普克法\道格拉斯—普克法\Form1.cs
     文件        4974  2010-10-30 19:25  道格拉斯—普克法\道格拉斯—普克法\Form1.Designer.cs
     文件        5814  2010-10-30 19:25  道格拉斯—普克法\道格拉斯—普克法\Form1.resx
     目录           0  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\obj\
     目录           0  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\obj\Debug\
     目录           0  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\obj\Debug\TempPE\
     文件         180  2010-10-30 19:25  道格拉斯—普克法\道格拉斯—普克法\obj\Debug\道格拉斯_普克法.Form1.resources
     文件         180  2010-10-30 00:25  道格拉斯—普克法\道格拉斯—普克法\obj\Debug\道格拉斯_普克法.Properties.Resources.resources
     文件        1135  2010-12-10 10:45  道格拉斯—普克法\道格拉斯—普克法\obj\Debug\道格拉斯—普克法.csproj.FileListAbsolute.txt
     文件         847  2010-10-30 19:25  道格拉斯—普克法\道格拉斯—普克法\obj\Debug\道格拉斯—普克法.csproj.GenerateResource.Cache
     文件       12288  2010-11-01 12:15  道格拉斯—普克法\道格拉斯—普克法\obj\Debug\道格拉斯—普克法.exe
     文件       30208  2010-11-01 12:15  道格拉斯—普克法\道格拉斯—普克法\obj\Debug\道格拉斯—普克法.pdb
     文件         503  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\Program.cs
     目录           0  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\Properties\
     文件        1404  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\Properties\AssemblyInfo.cs
     文件        2894  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\Properties\Resources.Designer.cs
     文件        5612  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\Properties\Resources.resx
     文件        1107  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\Properties\Settings.Designer.cs
     文件         249  2010-10-29 23:59  道格拉斯—普克法\道格拉斯—普克法\Properties\Settings.settings
     文件        3757  2010-10-30 00:25  道格拉斯—普克法\道格拉斯—普克法\道格拉斯—普克法.csproj

评论

共有 条评论

相关资源