资源简介
Douglas一Peukcer算法是目前公认的线状要素化简经典算法。C#编写,使用很方便
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Drawing;
namespace MapControlApplication2
{
class Douglasclass
{
///
/// 使用“道格拉斯—普克”算法减少点的数量
///
/// 需要减少的点
/// 偏差
/// 得到减少过后的结果点
public List DouglasPeuckerReduction(List Points Double Tolerance)
{
//if (Tolerance == 0) return Points;
if (Points == null || Points.Count < 3)//如果点的数量小于3个则返回
return Points;
Int32 firstPoint = 0;
Int32 lastPoint = Points.Count - 1;
List pointIndexsToKeep = new List();
//把第一个点和最后一个点的序号加入要保存的序号?对于数据中第一个和最后一个点重合的情况不压缩
pointIndexsToKeep.Add(firstPoint);
pointIndexsToKeep.Add(lastPoint);
//第一个点和最后一个点不能为同一个点
while (Points[firstPoint].Equals(Points[lastPoint]))
{
lastPoint--;
}
DouglasPeuckerReduction(Points firstPoint lastPoint Tolerance ref pointIndexsToKeep);//道格拉斯-普克压缩
List returnPoints = new List();
pointIndexsToKeep.Sort();//对保留下来的序号进行排序
foreach (Int32 index in pointIndexsToKeep)
{
returnPoints.Add(Points[index]);//将对应序号的点加入
}
return returnPoints;//返回压缩后的点
}
///
/// 道格拉斯-普克压缩
///
/// 要处理的点
/// 第一个点
/// 最后一个点
/// 偏差
/// 要保留点的索引号
private static void DouglasPeuckerReduction(List points Int32 firstPoint Int32 lastPoint Double tolerance ref List pointIndexsToKeep)
{
Double maxDistance = 0;
Int32 indexFarthest = 0;
for (Int32 inde
- 上一篇:佳博打印机.net平台下的开发API
- 下一篇:Emgucv3.0(c#)简单入门
相关资源
- C#解析HL7消息的库135797
- C# OCR数字识别实例,采用TessnetOcr,对
- 考试管理系统 - C#源码
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
评论
共有 条评论