ArcGIS Engine 通过线构造面
生成面之前的截图:
生成为面之后的截图:
从线生成面的方法代码:
/// 通过线创建面
/// </summary>
/// <param name="pPolyline"> 线 </param>
/// <returns> 面 </returns>
IPolygon ConstructPolygonFromPolyline(IPolyline pPolyline)
{
IGeometryCollection pPolygonGeoCol = new PolygonClass();
if ((pPolyline != null ) && ( ! pPolyline.IsEmpty))
{
IGeometryCollection pPolylineGeoCol = pPolyline as IGeometryCollection;
ISegmentCollection pSegCol = new RingClass();
ISegment pSegment = null ;
object missing = Type.Missing;
for ( int i = 0 ; i < pPolylineGeoCol.GeometryCount; i ++ )
{
ISegmentCollection pPolylineSegCol = pPolylineGeoCol.get_Geometry(i) as ISegmentCollection;
for ( int j = 0 ; j < pPolylineSegCol.SegmentCount; j ++ )
{
pSegment = pPolylineSegCol.get_Segment(j);
pSegCol.AddSegment(pSegment, ref missing, ref missing);
}
pPolygonGeoCol.AddGeometry(pSegCol as IGeometry, ref missing, ref missing);
}
}
return pPolygonGeoCol as IPolygon;
}
调用示例:
ILayer pLayer = axMapControl1.get_Layer( 1 );
IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
if (pFeatureClass.ShapeType == esriGeometryType.esriGeometryPolyline)
{
IFeatureCursor pFeatureCursor = pFeatureClass.Search( null , false );
IFeature pFeature = pFeatureCursor.NextFeature();
ILayer pTargetLayer = axMapControl1.get_Layer( 2 );
IFeatureLayer pTargetFeatureLayer = pTargetLayer as IFeatureLayer;
IFeatureClass pTargetFeatureClass = pTargetFeatureLayer.FeatureClass;
if (pTargetFeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon)
{
IPolygon pPolygon = null ;
while (pFeature != null )
{
IPolyline pPolyline = pFeature.Shape as IPolyline;
pPolygon = ConstructPolygonFromPolyline(pPolyline);
if ((pPolygon != null ) && ( ! pPolygon.IsEmpty))
{
if ( ! pPolygon.IsClosed)
{
pPolygon.Close();
}
IFeature pNewFeature = pTargetFeatureClass.CreateFeature();
pNewFeature.Shape = pPolygon;
pNewFeature.Store();
pFeature.Delete();
}
pFeature = pFeatureCursor.NextFeature();
}
}
}
axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null , null );
ArcGIS Engine 通过线构造面相关推荐
- ArcGIS Engine基础开发教程(转)
ArcGIS Engine基础开发教程(0)--目录 <ArcEngine9.3 基础开发教程>是面向初中级开发者的一份简单易用,功能全面的学习资料及参考文档.教程首先从如何来创建一个Ar ...
- ArcGIS Engine中的Symbols详解
转自原文 ArcGIS Engine中的Symbols详解 本文由本人翻译ESRI官方帮助文档.尊重劳动成果,转载请注明来源. Symbols ArcObjects用了三种类型的Symbol(符号样式 ...
- arcgis engine二次开发python-使用C#配合ArcGIS Engine进行地理信息系统开发
简单的地图读取.展示终于到暑假了...开始认真整理整理相关学习的心得体会咯~ 先把很久之前挖的关于C# 二次开发的坑给填上好了~ 这次先计划用一个月把C# ArcEngine 10.0相关开发的学习心 ...
- ArcGIS Engine 中的多线程使用
转自原文ArcGIS Engine 中的多线程使用 一直都想写写AE中多线程的使用,但一直苦于没有时间,终于在中秋假期闲了下来.呵呵,闲话不说了,进入正题! 大家都了解到ArcGIS中处理大数据量时速 ...
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
Dixon 原文 用ArcGIS Engine.VS .NET和Windows控件开发GIS应用 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方 ...
- 《ArcGIS Engine+C#实例开发教程》第七讲 图层符号选择器的实现2
<ArcGIS Engine+C#实例开发教程>第七讲 图层符号选择器的实现2 原文:<ArcGIS Engine+C#实例开发教程>第七讲 图层符号选择器的实现2 摘要:在第 ...
- 【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比
文章目录 2.1 使用VBA进行桌面软件开发 2.1.1 VBA开发方式 2.1.1 VBA代码的安全性 2.2 使用DLL进行桌面软件开发 2.2.1 DLL开发方式 2.2.2 DLL功能的应用部 ...
- ArcGIS Engine 编辑- ITask
转自原文ArcGIS Engine 编辑- ITask 下面的代码是我们定制的一个工作流-给等高线赋值 namespace EngineApplication { [Guid("5b0c06 ...
- ArcGIS Engine开发之旅02--ArcGIS Engine中的类库
原文 ArcGIS Engine开发之旅02--ArcGIS Engine中的类库 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他 ...
最新文章
- 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )
- ubuntu18.04安装mysql
- 开源版本_开源版本PowerShell Core 6.2 发布
- 配置docker静态IP地址
- (三)协同过滤算法之基于物品的推荐算法python实现
- MVC页面重定向'页面跳转
- 概要设计说明书模板_实验报告的书写案例word模板
- Pycharm 简单设置成官方中文版
- Windows安装Scala步骤详解
- re模块或正则表达式
- 头歌MySQL数据库
- 【Unity3D】粒子系统ParticleSystem
- 【MM VS价】移动平均价V标准价格S(一)
- 【微信】微信小程序前后端数据请求示例
- 甘肃300件文物现古丝路交通 穿越古今展视听新体验
- 现代信息技术的特点和趋势
- TCP 三次握手原理,你真的理解吗?
- 京东智能客服言犀意图体系搭建和意图识别技术介绍
- 阳光智博改嫁给万物云:终止独立IPO计划,阳光城获利25亿元
- 怎么让照片人物嘴巴动起来?这个好用方法你必须知道