DotSpatial 创建面状要素——含空洞
private void toolStripButton23_Click(object sender, EventArgs e)
{
//选择图层
FeatureSet fs = null;
fs = (FeatureSet) map1.Layers[0].DataSet;
//面层增加要素
//定义坐标List
List<Coordinate> polygonArray1 = new List<Coordinate>();
polygonArray1.Add(new Coordinate(625105, 5050458));
polygonArray1.Add(new Coordinate(627115, 5050486));
polygonArray1.Add(new Coordinate(627103, 5048421));
polygonArray1.Add(new Coordinate(625021, 5048466));
polygonArray1.Add(new Coordinate(625105, 5050458));
//创建外环
var outerRing = new LinearRing(polygonArray1);
//判断坐标数组是否为顺时针,否则数组反转
if (CgAlgorithms.IsCounterClockwise(outerRing.Coordinates))
{
outerRing = new LinearRing(outerRing.Reverse());
}
//定义内环1——空洞1
var hole1 = new LinearRing(new List<Coordinate>()
{
new Coordinate(626304, 5050188),
new Coordinate(626721, 5050188),
new Coordinate(626715, 5049777),
new Coordinate(626394, 5049625),
new Coordinate(626186, 5049743),
new Coordinate(626208, 5050014),
new Coordinate(626304, 5050188),
});
//是否为逆时针,否则反转,必须是逆时针的,否则创建的要素的图形异常
if (!CgAlgorithms.IsCounterClockwise(hole1.Coordinates))
{
hole1 = new LinearRing(hole1.Reverse());
}
//定义内环2
var hole2 = new LinearRing(new List<Coordinate>()
{
new Coordinate(625454, 5050228),
new Coordinate(625876, 5050250),
new Coordinate(625876, 5049710),
new Coordinate(625426, 5049743),
new Coordinate(625454, 5050228)
});
//是否为逆时针,否则反转,必须是逆时针的,否则创建的要素的图形异常
if (!CgAlgorithms.IsCounterClockwise(hole2.Coordinates))
{
hole2 = new LinearRing(hole2.Reverse());
}
//——将hole1、hole2 添加到数组中,进行坐标翻转
//LinearRing[] lr2 = { hole1,hole2 };
////make sure the holes are oriented counterclockwise
//for (int i = 0; i < lr2.Length; i++)
//{
// if (!CgAlgorithms.IsCounterClockwise(lr2[i].Coordinates))
// {
// lr2[i] = new LinearRing(lr2[i].Reverse());
// }
//}
//创建要素
Polygon pP = new Polygon(outerRing, new ILinearRing[] {hole1, hole2});
IFeature polygonFeature = fs.AddFeature(pP);
polygonID = polygonID + 1;
polygonFeature.DataRow["Text"] = polygonID;
fs.InitializeVertices();
fs.Save();
map1.ResetBuffer();
}

DotSpatial 创建面状要素——含空洞的更多相关文章
- Dotspatial 创建面状图层
using DotSpatial.Controls;using DotSpatial.Data;using DotSpatial.Data.Forms;using DotSpatial.Plugins ...
- oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)
0 前言 用过 SQLserver 和 MySQL 的自增列(auto_increment),然而 Oracle 在建表设置列时却没有自增列. 查阅资料后发现 Oracle 的自增列需要手动编写. ...
- 【Android】纯代码创建页面布局(含异步加载图片)
开发环境:macOS 10.12 + Android Studio 2.2,MinSDK Android 5.1 先看看总体效果 本示例是基于Fragment进行的,直接上代码: [界面结构] 在 F ...
- Yii 2.0: yii2-highcharts-widget创建饼状图
安装 The preferred way to install this extension is through composer. 项目根目录下执行: php composer.phar requ ...
- Java之文本文件的创建和读取(含IO流操作)
工具类:对文件的读取,创建.直接复制拿来用! package cn.zyzpp.util; import java.io.BufferedReader; import java.io.Buffered ...
- WCF尝试创建与发布IIS(含问题描述)
技术贴技术贴就直接讲技术来,客套的话我也不多说了,各位看官包涵包涵. 跟着园内高手一步一步发布成功,欣喜若狂之际,发个贴纪念纪念一下. 废话不多说,不正确之处,还望大家积极指出,共同进步.哈哈~~~ ...
- arcgis的arcpy写入几何怎么创建一个空心面要素并读取几何和属性信息,根本不够管
转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/83861447 这个我是没找到这 ...
- GDAL不支持创建PCIDSK的面状矢量格式
最近在使用GDAL创建PCIDSK格式的矢量数据,发现创建点和线的矢量数据都没问题,创建面状的只有属性表没有图形.在GDAL官网说明也写的是支持的,地址为:http://www.gdal.org/fr ...
- 如何创建一个要素数据类 IField,IFieldEdit,IFields,IFieldsEditI,GeometryDef,IGeometryDefEdit接口
如何创建一个要素数据类 创建要素类用到了IFeatureWorkspace.CreateFeatureClass方法,在这个方法中有众多的参数,为了满足这些参数,我们要学习和了解下面的接口. IFie ...
随机推荐
- 创建ajax异步对象方法
ajax的xmlhttp对象创建: function createXmlHttp(){ var xmlHttp; try{ // Firefox, Opera 8.0+, Safari xmlHttp ...
- Android 开发如何选择轮子(转)
一个项目的开发,我们不可能一切从0做起,如果真是这样,那同样要哭瞎.因此,善于借用已经做好的 "车轮" 非常重要,如: 网络访问框架:OKHttp.retrofit.android ...
- Leetcode--Swap Nodes in Pairs
最傻的方法: ListNode *swapPairs(ListNode *head) { if (head == NULL) return NULL; ListNode *temp = ); List ...
- linux head、tail、sed、cut、grep、find
head用法: head 参数 文件名 -cn:显示前n个字节 -n:显示前n行 例子:head -c20 1.txt 显示1.txt文件中前20个字符 ls | head -20:显示前20 ...
- 使用Autolayout对多行文本Label进行布局,高度不准确的解决办法!
BUG描述: 今天公司的项目中发现了一个BUG,大概给大家描述一下,tabbleView有一个tableFooterView,这个footView中有一个Label,是多行显示文本,程序用的是Auto ...
- YCSB-压测
安装 wget http://download.oracle.com/otn-pub/java/jdk/7u40-b43/jdk-7u40-linux-x64.rpm #注意此处到官网下载后上传,需要 ...
- EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(完)
前言 这一篇是本系列的最后一篇,虽然示例讲到这里就停止呢,但对于这些技术的学习远不能停止.虽然本示例讲的比较基础,但是正如我第一篇说到的,这个系列的目的不是说一些高端的架构设计,而是作为一个入门级,对 ...
- iOS 运行时runtime控制私有变量以及私有方法
OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法.利用runtime机制让我们可以在程序运行时动态修改类.对象中的所有属性.方法,就算是私有方法以及私有属性都是可以动 ...
- MySQL数据库的一些基本操作及注释
--Created by mac on 2017/1/4. -- MySQL数据库 -- ****************** 一. 连接数据库服务器的基础命令 ******************* ...
- SQL Server中的日期格式化
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 2004-09-12 11:06:08 ...