先附上实现的相交叠加分析的部分代码,然后请教个问题,希望能够得到解答。

/// <summary> 执行相交叠加分析 </summary>
private void ExecuteIntersection()
{
string path1 = @"xxxx.shp";
string path2 = @"xxx.shp"; SharpMap.Layers.VectorLayer layGeoms1 = new SharpMap.Layers.VectorLayer("Name1");
SharpMap.Layers.VectorLayer layGeoms2 = new SharpMap.Layers.VectorLayer("Name2");
//获得数据源
layGeoms1.DataSource = new ShapeFile(path1);
layGeoms2.DataSource = new ShapeFile(path2); NtsProvider nts1 = new NtsProvider(layGeoms1.DataSource);
NtsProvider nts2 = new NtsProvider(layGeoms2.DataSource); //将sharpMap数据转换为NTS数据,执行相交叠加
GisSharpBlog.NetTopologySuite.Geometries.Geometry g1;
GisSharpBlog.NetTopologySuite.Geometries.Geometry g2;
GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory = new GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory();
List<Geometry> sharpMapGeoms = new List<Geometry>();
for (uint i = ; i < nts1.GetFeatureCount(); i++)
{
Geometry sharpMapgeom1 = nts1.GetGeometryByID(i);
g1 = GeometryConverter.ToNTSGeometry(sharpMapgeom1, factory);
for (uint j = ; j < nts2.GetFeatureCount(); j++)
{
Geometry sharpMapgeom2 = nts2.GetGeometryByID(j);
g2 = GeometryConverter.ToNTSGeometry(sharpMapgeom2, factory);
if (g1.Intersects(g2))
{
GisSharpBlog.NetTopologySuite.Operation.Overlay.OverlayOp o = new GisSharpBlog.NetTopologySuite.Operation.Overlay.OverlayOp(g1, g2);
GisSharpBlog.NetTopologySuite.Geometries.Geometry g = o.GetResultGeometry(SpatialFunctions.Intersection);
sharpMapGeoms.Add(GeometryConverter.ToSharpMapGeometry(g));
}
}
}
}
//其中引用的GeometryConverter.cs和NtsProvider.cs文件在此省略。

由于本人想得到的是差异性叠加分析(标识叠加),但由于SharpMap和NTS中并未提供此方法,经询问,通过开源包中提供的方法间接得到差异性叠加分析结果,方法思路如下:

实现的步骤是通过获取图层,进行叠加分析,生成分析结果图层并导出。现在的问题是如图的简单多边形叠加(一个多边形与一个多边形)结果没错,但当叠加的两个图层中都是包汗多个多边形时就不正确了,比如多个多边形与多个多边形相交取反叠加,在叠加的过程中得到的多边形又会出现重复的部分。(开源包提供的方法是一个Geometry与另一个Geometry的叠加)如下图:

是不是这开源包只能实现在可视地图上框选两个Geometry,求这两Geometry的叠加?或者有没有其他开源(底层)方法可以实现差异性叠加分析。求助各位大侠,应该如何解决,不胜感激。

SharpMap和NetTopologySuite叠加分析问题的更多相关文章

  1. ARCGIS空间叠加分析(转)

    ARCGIS空间叠加分析 https://blog.csdn.net/gswwldp/article/details/66974465 (2)双击④处的Identity,打开Identity操作对话框 ...

  2. ArcGis下的叠加分析

     1矢量与矢量叠加的话就用ToolBox里有Overlay: 2如果是矢量和栅格叠加的话用Spatial analysis模块中的 zonal statistics: 3还有就是栅格与栅格的叠加S ...

  3. ArcGIS空间分析工具

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

  4. ArcGIS教程:加权叠加

    摘要 使用经常使用測量比例叠加多个栅格数据,并依据各栅格数据的重要性分配权重. 插图 插图中,两个输入栅格已又一次分类为 1 至 3 三种公共測量级别.为每一个栅格均分配了一个影响百分比.这些像元值与 ...

  5. ArcGIS案例学习笔记2_1_学校选址适宜性分析

    ArcGIS案例学习笔记2_1_学校选址适宜性分析 计划时间:第二天上午 目的:学校选址,适宜性分析 内容:栅格数据分析 教程:pdf page=323 数据:chapter8/ex1/教育,生活,土 ...

  6. 《gis空间分析及应用案例解析》培训总结

    <gis空间分析及应用案例解析>培训总结 来源:常德水情 作者:唐校准 发布日期:2014-01-02       2013年12月2630日由中国科学院计算技术研究所教育中心组织的< ...

  7. ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 G ...

  8. 基于GIS空间分析的多边形提取技术

    现有基于矢量图形的骨架线提取方法主要包括数据预处理.基于约束 Delauny 三角剖分的骨架线结点生成和骨架线的连接 3 个过程,上述过程都可利用现有 GIS 系统的数据处理.空间分析和建模功能实现. ...

  9. GIS基本概念,空间分析

    GIS基本概念,空间分析 一.GIS基本概念 1.1 要素模型(Feature) 1.2 矢量数据 1.3 空间分析 1.3.1 空间查询和空间量算 1.3.2 缓冲区分析 1.3.3 叠加分析 1. ...

随机推荐

  1. Spring boot 继承 阿里 autoconfig 配置环境参数

    前提:基于springboot 项目 1. 配置pom.xml 文件 <plugin> <groupId>com.alibaba.citrus.tool</groupId ...

  2. WebGL three.js学习笔记 纹理贴图模拟太阳系运转

    纹理贴图的应用以及实现一个太阳系的自转公转 点击查看demo演示 demo地址:https://nsytsqdtn.github.io/demo/solar/solar three.js中的纹理 纹理 ...

  3. 学习 JavaScript (八) 引用类型之 Object

    在JavaScript中,引用类型是一种数据结构.包括对象(Obejct).数组(Array).日期(Date).正则表达式(RegExp).函数(Function).基本包装类型(new Boole ...

  4. 解决Google Play审核中的WebViewClient.onReceivedSslError问题

    Google Play应用市场提交应用审核,出现因WebViewClient.onReceivedSslError问题导致拒绝通过. Google Paly给出的详情地址:support.google ...

  5. ASP.NET Core微服务实战系列

    希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. 前言 这里记录的是个人奋斗和成长的地方,该篇只是一个系列目录和构想 ...

  6. 【转载】C#工具类:实现文件操作File的工具类

    在应用程序的开发中,文件操作的使用基本上是必不可少的,FileStream类.StreamWriter类.Directory类.DirectoryInfo类等都是文件操作中时常涉及到的类,我们可以通过 ...

  7. Android之CircleImageView使用

    文章大纲 一.什么是CircleImageView二.代码实战三.项目源码下载 一.什么是CircleImageView   圆角 ImageView,在我们的 App 中这个想必是太常见了,也许我们 ...

  8. 一起学Android之Dialog

    概述 对话框(Dialog)是一个小窗口,在Android系统开发中经常会用到,它提示用户做决定或者输入一些东西,对话框并不填充屏幕,是一个模态(Modal)窗口.Dialog类是所有对话框的基类,应 ...

  9. sqlserver的over开窗函数(与排名函数或聚合函数一起使用)

    首先初始化表和数据 create table t_student(   Id INT,   Name varchar(),   Score int,   ClassId INT ); insert i ...

  10. jquery删除内容是动态修改序号

    如图,点击删除图标的时候要删除当前的一条记录,同时界面上的序号要动态的排列好 以下是html结构: jquery实现思路: 首先,需要获取到当前要删除盒子的序号$indexCur,然后遍历父盒子,取出 ...