SharpMap和NetTopologySuite叠加分析问题
先附上实现的相交叠加分析的部分代码,然后请教个问题,希望能够得到解答。
/// <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叠加分析问题的更多相关文章
- ARCGIS空间叠加分析(转)
ARCGIS空间叠加分析 https://blog.csdn.net/gswwldp/article/details/66974465 (2)双击④处的Identity,打开Identity操作对话框 ...
- ArcGis下的叠加分析
1矢量与矢量叠加的话就用ToolBox里有Overlay: 2如果是矢量和栅格叠加的话用Spatial analysis模块中的 zonal statistics: 3还有就是栅格与栅格的叠加S ...
- ArcGIS空间分析工具
1. 3D分析 1.1. 3D Features toolset 工具 工具 描述 3D Features toolset (3D 要素工具集) Add Z Information 添加 Z 信息 添 ...
- ArcGIS教程:加权叠加
摘要 使用经常使用測量比例叠加多个栅格数据,并依据各栅格数据的重要性分配权重. 插图 插图中,两个输入栅格已又一次分类为 1 至 3 三种公共測量级别.为每一个栅格均分配了一个影响百分比.这些像元值与 ...
- ArcGIS案例学习笔记2_1_学校选址适宜性分析
ArcGIS案例学习笔记2_1_学校选址适宜性分析 计划时间:第二天上午 目的:学校选址,适宜性分析 内容:栅格数据分析 教程:pdf page=323 数据:chapter8/ex1/教育,生活,土 ...
- 《gis空间分析及应用案例解析》培训总结
<gis空间分析及应用案例解析>培训总结 来源:常德水情 作者:唐校准 发布日期:2014-01-02 2013年12月2630日由中国科学院计算技术研究所教育中心组织的< ...
- ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 G ...
- 基于GIS空间分析的多边形提取技术
现有基于矢量图形的骨架线提取方法主要包括数据预处理.基于约束 Delauny 三角剖分的骨架线结点生成和骨架线的连接 3 个过程,上述过程都可利用现有 GIS 系统的数据处理.空间分析和建模功能实现. ...
- GIS基本概念,空间分析
GIS基本概念,空间分析 一.GIS基本概念 1.1 要素模型(Feature) 1.2 矢量数据 1.3 空间分析 1.3.1 空间查询和空间量算 1.3.2 缓冲区分析 1.3.3 叠加分析 1. ...
随机推荐
- MongoDB【快速入门】
1.MongDB 简介 MongoDB(来自于英文单词"Humongous",中文含义为"庞大")是可以应用于各种规模的企业.各个行业以及各类应用程序的开源数据 ...
- Asp.Net Core 轻松学-多线程之取消令牌
前言 取消令牌(CancellationToken) 是 .Net Core 中的一项重要功能,正确并合理的使用 CancellationToken 可以让业务达到简化代码.提升服务性能的效果 ...
- 浅谈MySQL架构体系
一 数据库和数据库实例 在MySQL的学习研究中,存在两个非常容易混淆的概念,即数据库和数据库实例.在MySQL中,数据库和数据库实例定义如下: 数据库:存储数据的集合: 数据库实例:操作数据库的集 ...
- Vim中设置括号自动补全
1.打开用户Vim配置文件:~/.vimrc vim ~/.vimrc 2.输入以下配置: set tabstop=4 inoremap " ""<ESC>i ...
- windows 无法启动网络发现
1.先启动三个服务,按顺序启动(有依存关系),都改为自启动 Function Discovery Resource Publication SSDP Discovery UPnP Device Hos ...
- pyspider 文档介绍
一 代码区结构 def on_start(self)是脚本的入口点.单击run仪表板上的按钮时将调用它. self.crawl(url, callback=self.index_page)*是这里最重 ...
- 多标签分类的结果评估---macro-average和micro-average介绍
一,多分类的混淆矩阵 多分类混淆矩阵是二分类混淆矩阵的扩展 祭出代码,画线的那两行就是关键啦: 二,查看多分类的评估报告 祭出代码,使用了classicfication_report() 三,宏平均与 ...
- 视频直播 object 标签属性详解
最近在做视频直播这一块的,html5的video不能实现此功能,在网上查找了资料,觉得很有用. 一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标签.也就是OB ...
- Linux运维老司机:CentOS6.9配置安装并配置Rsync
一.rsync简介 rsync全称remote sync,是一种更高效.可以本地或远程同步的命令,之所以高效是因为rsync会对需要同步的源和目的进度行对比,只同步有改变的部分,所以比scp命令更高效 ...
- ansible基础-安装与配置
一 安装 1.1 ansible架构 ansible是一个非常简单的自动化部署项目,由python编写并且开源.用于提供自动化云配置.配置文件管理.应用部署.服务编排和很多其他的IT自动化需求. an ...