private void toolStripButton32_Click(object sender, EventArgs e)
{
  /重叠部分去除操作——测试成功
  if (mapMain.Layers.Count == 0)
  {
    return;
  }
  //重叠分析
  //遍历要素,显示面积
  FeatureSet fs = null;
  fs = Lzq_LayerManager.getFeatureSetByName(layerNamePolygon, mapMain);

  if (fs.FeatureType != FeatureType.Polygon)
  {
    return;
  }

  for (int i = 0; i < fs.Features.Count; i++)
  {
    var gm1 = (DotSpatial.Topology.Geometry) (fs.Features[i].BasicGeometry); // point
    //DotSpatial.Topology.CoordinateArrays.RemoveRepeatedPoints(gm1.Coordinates);
    for (int j = i + 1; j < fs.Features.Count ; j++)
    {
      var gm2 = (DotSpatial.Topology.Geometry) (fs.Features[j].BasicGeometry);

      if (gm1.IsSimple && gm2.IsSimple)
      {
        //try
        //{
          if (gm1.Overlaps(gm2))
          {
            IGeometry geo = (gm1.Difference(gm2));
            DotSpatial.Topology.CoordinateArrays.RemoveRepeatedPoints(geo.Coordinates);
            if (geo.IsSimple)
            {
              geo.Normalize();
              fs.Features[i].BasicGeometry = geo;
            }
          }
        //}
        //catch(Exception exc)
        //{
          // string msg = "林班号:" + fs.Features[i].DataRow["林班号"].ToString() +
          // " 小班号:" + fs.Features[i].DataRow["小班号"].ToString();
          // MessageBox.Show(exc + "\n" + msg);
        //}
      }
      else
      {
        MessageBox.Show("isSimple is false");
      }
    }

  }

  MessageBox.Show("图斑个数:"+fs.Features.Count.ToString()+"\n属性表个数:"+fs.DataTable.Rows.Count);
  fs.UpdateExtent();
  fs.InitializeVertices();
  fs.Save();

  mapMain.ResetBuffer();

  MessageBox.Show(@"重叠去除功能,执行完毕!", @"系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

Dotspatial 要素重叠部分去除的更多相关文章

  1. Dotspatial 要素重叠分析

    private void toolStripButton30_Click(object sender, EventArgs e) { //面状重叠分析 if (mapMain.Layers.Count ...

  2. Dotspatial 空间要素选择

    //通过遍历选择要素,获取选择要素相交的要素 private void toolStripButton43_Click(object sender, EventArgs e) { //查看与选中要素重 ...

  3. ArcGIS空间分析工具

    1. 3D分析 1.1. 3D Features toolset 工具 工具 描述 3D Features toolset (3D 要素工具集) Add Z Information 添加 Z 信息 添 ...

  4. Linux内存模型

    http://blog.csdn.net/sunyubo458/article/details/6090946 了解linux的内存模型,或许不能让你大幅度提高编程能力,但是作为一个基本知识点应该熟悉 ...

  5. 常用的 html 标签及注意事项

    <a> 标签 用法:用于定义超链接 清除浏览器默认样式: a { text-decoration: none;/* 去除下划线 */ color: #333;/* 改变链接颜色 */ } ...

  6. 选中FeatureLayer元素并高亮显示

    点击FeatureLayer要素会弹出popup弹出框以显示要素的相关内容.这个例子实现点击要素,选中并高亮显示.例子使用ArcGIS API for JavaScript 4.8. 一.代码框架 & ...

  7. AO中的空间关系

    名词解释: Boundary(边界): 只有线和面才有边界.面的边界是指组成面的框架线:线的边界是指线的二个端点(即起点和终点,不包括中间部分的节点):点没有边界. Interior(内部): 除去边 ...

  8. GIS地理工具案例教程——批量去除多边形的重叠部分

    GIS地理工具案例教程--批量去除多边形的重叠部分 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com 问题:几乎所有的手工生产的数据,都存在多边形 ...

  9. DotSpatial 创建面状要素——含空洞

    private void toolStripButton23_Click(object sender, EventArgs e) { //选择图层 FeatureSet fs = null; fs = ...

随机推荐

  1. .NET开发微信小程序-接收微信支付回调数据

    获取微信支付传回来的数据 1.MVC控制器 /// <summary> /// 付款返回的数据 /// </summary> /// <returns></r ...

  2. Python_方法演示

    class Root: __total=0 def __init__(self,v): #构造函数 self.__value=v Root.__total+=1 def show(self): #普通 ...

  3. 微信小程序-统一下单、微信支付(Java后台)

    1.首先分享 微信统一下单接口: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1   微信接口 签名 对比网址: https: ...

  4. ASCII、 Unicode 和 UTF8

    ASCII: 英文字母与数字编号的一一对应.每个英文字母对应一个编号.范围0~127 Unicode: 全世界所有语言中字符与数字编号的一一对应.也即为存在的每个字符指定一个唯一的编号.范围为0~0x ...

  5. Linux内核调试方法

    内核配置选项中要使能CONFIG_MAGIC_SYSRQ选项,这样系统启动之后,会生成/proc/sysrq-trigger节点用于调试. 其次,可以在/etc/sysctl.conf中设置kerne ...

  6. Centos7 下 tty2等文字窗口的中文乱码问题分析

    在使用 tty 的时候遇到了一个事情,那就是主文件夹下面的中文文件是乱码: [备注]tty 是 通过 CTRL + ALT +F2~F6  获得的,  这与桌面系统中的终端不是一个概念,  望看到这篇 ...

  7. Spring3.1 对Bean Validation规范的新支持(方法级别验证)

    上接Spring提供的BeanPostProcessor的扩展点-1继续学习. 一.Bean Validation框架简介 写道Bean Validation standardizes constra ...

  8. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A和B都习 ...

  9. 巩固java(四)----super和super()

    引言: 一个公司里有普通员工和经理,他们之间有很多共同点,但也有一些差异,比如薪水问题,普通员工只有普通工资,经理在完成绩效后有一定比例的奖金.这时我们可以定义两个类Employee和Manager, ...

  10. redis 中如何切换db

    一台服务器上都快开启200个redis实例了,看着就崩溃了.这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开. 那么,redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的 ...