Dotspatial 要素重叠部分去除

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);
}

原文地址:https://www.cnblogs.com/kogame/p/10017464.html

时间: 2024-10-10 17:24:23

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

DotSpatial 要素合并

private void toolStripButton45_Click(object sender, EventArgs e) { //存在Bug,合并丢失现象 if (mapMain.Layers.Count == 0) { return; } //查看与选中要素重叠的要素 PolygonLayer pLayer = Lzq_LayerManager.getLayerByName(layerNamePolygon, mapMain) as PolygonLayer; if (pLayer =

Dotspatial 空间要素选择

//通过遍历选择要素,获取选择要素相交的要素 private void toolStripButton43_Click(object sender, EventArgs e) { //查看与选中要素重叠的要素 if (map1.Layers.Count == 0) { return; } //重叠分析 //遍历要素,显示面积 PolygonLayer pLayer = map1.Layers[0] as PolygonLayer; FeatureSet fs = null; fs = (Feat

集算器如何优化SQL计算(3)序运算

跨行引用 早期SQL不直接支持跨行引用,要生成序号后再JOIN,极其繁琐困难.引入窗口函数后的SQL能够较方便地引用其它行数据,但写法仍不简洁,有多个跨行引用项时代码会很长.而且如前所述,窗口函数在其它运算结果集基础上再实施,对窗口函数计算值的再引用就要写成子查询的形式,仍然繁琐. MySQL不支持窗口函数,但支持在SQL中使用变量,可以引用到前面的行,但无法引用到后面的行. 集算器提供了方便自然的跨行引用语法. 各产品月销售表结构为:产品.月份.销量:现要找出销量比上月多10%的记录. A 1

ArcGIS空间分析工具

1. 3D分析 1.1. 3D Features toolset 工具 工具 描述 3D Features toolset (3D 要素工具集) Add Z Information 添加 Z 信息 添加关于具有 Z 值的要素类中的要素的高程属性的信息. Buffer 3D 3D 缓冲 围绕点或线创建三维缓冲区以生成球形或圆柱形的多面体要素. Difference 3D 3D 差异 消除目标要素类中部分与减法要素类中闭合的多面体要素体积重叠的多面体要素. Enclose Multipatch 封闭

选中FeatureLayer元素并高亮显示

点击FeatureLayer要素会弹出popup弹出框以显示要素的相关内容.这个例子实现点击要素,选中并高亮显示.例子使用ArcGIS API for JavaScript 4.8. 一.代码框架 1 <html> 2 <head> 3 <meta charset="utf-8"> 4 <!-- 移动端优化 --> 5 <meta name="viewport" content="initial-sca

ArcGIS之去除要素的Z值和M值

近期用python连接ArcGIS时,需要通过readshapefile函数读取shp文件,读取过程中经常出现 报错为 “ readshapefile can only handle 2D shape types ” 原因时shp文件在创建时包含了Z坐标及M坐标,如下图所示 于此,需要先将图层中的shape类型更改为平面: 方法为 打开toolbox的数据管理工具->要素->复制要素 修改环境设置,Disabled掉M值及Z值 运行完之后,得到新要素(不更改之前的要素,创建得到新图层) 原文地

将位图导入为ArcGIS面要素

本文根据笔者经验,介绍一种从位图图像导入ArcGIS称为要素的方法.这种方法适用于从现有出版物图片中获取地理信息的情况. 首先要说明的是,从位图导入要素是非常非常不精确的方式,如果有其它数据来源,那么就不应该采用此方法. 另外,如果位图包含的内容相对简单,区域结构紧凑不零散,则可以考虑ArcMap绘制地图,而不用此方法. 为让表述更直观,笔者从百度卫星地图截取了 辽宁省康平县 西泡子水库附近的区域,作为操作的说明. 00_orign 1. 制作灰度图 为便于在ArcMap中处理,将原始图像的色彩

【腾讯Bugly干货分享】彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/qOMO0LIdA47j3RjhbCWUEQ 作者:李志刚 导语 Http 缓存机制作为 web 性能优化的重要手段,对从事 Web 开发的小伙伴们来说是必须要掌握的知识,但最近我遇到了几个缓存头设置相关的题目,发现有好几道题答错了,有的甚至在知道了正确答案后依然不明白其原因,可谓相当的郁闷呢!!为了确认下是否只是自己理解不深,我特意请教了其他几位小伙

Dotspatial 创建面状图层

using DotSpatial.Controls;using DotSpatial.Data;using DotSpatial.Data.Forms;using DotSpatial.Plugins.Measure;using DotSpatial.Symbology;using DotSpatial.Topology;using DotSpatial.Topology.Algorithm;using Point = DotSpatial.Topology.Point;using PointS